2012-04-08 5 views
5

Ich habe eine Prolog-Datenbankdatei (test_inserts.p), die ich verwendet habe, um alle meine Daten einzufügen.Einfaches PROLOG-Problem: Wie testen Sie mehrere Abfragen für Ihre Prolog-Datenbank?

Ich habe auch eine Prolog-Abfragedatei (test_queries.pl), die alle Prolog-Abfragen enthält, die ich geschrieben habe, um spezifische Informationen aus meiner Datenbank zu erhalten.

Ich frage mich, wie man die Abfragen von test_queries.pl gegen meine Datenbank test_inserts.p bei Verwendung von gprolog verwenden? Ich hatte gehofft, dass es eine Möglichkeit gibt, beide gleichzeitig zu laden, und irgendwie in der Lage sein zu befehlen, welche Abfrage ausgeführt werden soll, anstatt jede Abfrage neu eingeben zu müssen, die ich ausführen wollte ...

Antwort

5

Ich habe initialization/1 ISO-Richtlinie in test_queries.pl verwendet, um den Effekt zu erhalten, den Sie unten sehen.

test_queries.pl

test :- 
     findall(_, (a(X,Y), format('~w ~w~n', [X,Y])), _). 

:- initialization([test_inserts]). 
:- initialization(test). 

test_inserts.pl

a(X,Y) :- append(X,Y,[1,2,3]). 

dann rufen gprolog mit --consult-file

gprolog --consult-file test_queries.pl 
GNU Prolog 1.4.0 
By Daniel Diaz 
Copyright (C) 1999-2011 Daniel Diaz 
compiling /home/carlo/test_queries.pl for byte code... 
/home/carlo/test_queries.pl compiled, 5 lines read - 659 bytes written, 28 ms 
compiling /home/carlo/test_inserts.pl for byte code... 
/home/carlo/test_inserts.pl compiled, 2 lines read - 379 bytes written, 30 ms 
[] [1,2,3] 
[1] [2,3] 
[1,2] [3] 
[1,2,3] [] 
| ?- 
+0

+1. BTW gibt es [GNU Prolog 1.4.1] (http://gprolog.univ-paris1.fr/unstable/?C=M;O=D) – false

+0

@false: Ich habe gerade von der Quelle heute morgen installiert. Wie schnell es sich bewegt ... – CapelliC