Re: Executing prolog queries from shell

Daniel Diaz <[email protected]>
Newsgroups gmane.comp.gnu.prolog.general
Message-ID <[email protected]>
Hi,

there several ways to do what you want. Basically, you have to: 1) 
launch prolog, 2) consult your file, 3) execute your query, 4) save your 
results (on a file).

Since it is not clear what you want to do exactly I give you some (a lot 
of) pointers:

You can launch gprolog with special argument(s) to execute goal(s) (more 
or less immediately). See:
http://gprolog.org/manual/html_node/gprolog007.html
In that case you execute gprolog with the args from your python code.

You can write a PrologScript (shebang) basically start your source file 
with #!/usr/bin/gprolog --consult-file. See:
http://gprolog.org/manual/html_node/gprolog007.html#sec11
In that case you execute the script from your python code (don't forget 
the chmod u+x).

Use the :- initialization(....) directive to execute an initial goal. See:
http://gprolog.org/manual/html_node/gprolog022.html#initialization%2F1

To get the command-line arguments you can use for instanceargument_list(L)
http://gprolog.org/manual/html_node/gprolog051.html#argument-counter%2F1

To save the result of your query you can use streams and term I/O.
Streams: http://gprolog.org/manual/html_node/gprolog034.html
Term output: 
http://gprolog.org/manual/html_node/gprolog038.html#write-term%2F3

To quit gprolog execute the goal: halt.
http://gprolog.org/manual/html_node/gprolog042.html#abort%2F0

Finally, note that you can also compile your source file to native code 
with:
gplc my_app.pl--no-top-level--no-debugger

you can add options like
gplc my_app.pl--no-top-level--no-debugger

or even
gplc my_app.pl--min-size

See: http://gprolog.org/manual/html_node/gprolog009.html

Then execute it (from your python code) simply with:
./my_app

NB: use :- intialization(YOUR INIT GOAL) and halt to control the start 
and the end of your Prolog application.

Daniel

Le 10/12/2013 18:05, Antonios Antoniadis a écrit :
>
> Hello everyone.
>
> I started building the left hemisphere of my robot's brain with gprolog and I'm stuck on probably a very basic thing as I haven't touched prolog since uni. I want to execute/pass/pipe/whatever queries/code into prolog from the GNU/Linux shell and save/use the results. Like friends(bob,alice) to see if they are friends or whatever. I can run any shell command via python or the shell itself of course but what/how should I run (sysntax) to e.g. have gprolog use a specific file with my stored rules or whatever (complied I guess) and pass the query like an argument or input? Actually, is this possible at all?
>
> I hope I didn't confuse you!
>
>
> Thank you,
>
> Antonios A.
>
>
> _______________________________________________
> Users-prolog mailing list
> [email protected]
> https://lists.gnu.org/mailman/listinfo/users-prolog
>


-- 
Ce message a ete verifie par MailScanner
pour des virus ou des polluriels et rien de
suspect n'a ete trouve.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.