2012-04-08 16 views
5

Tengo un archivo de base de datos Prolog (test_inserts.p) que utilicé para insertar todos mis datos.Problema PROLOG simple: ¿cómo se prueban múltiples consultas en su base de datos Prolog?

También tengo un archivo de consulta Prolog (test_queries.pl) que tiene todas las consultas de Prolog que escribí para recibir información específica de mi base de datos.

Me preguntaba cómo utilizar realmente las consultas test_queries.pl contra mi archivo de base de datos test_inserts.p al usar gprolog? Esperaba que hubiera una forma de cargar ambos al mismo tiempo, y de alguna manera poder ordenar qué consulta ejecutar, en lugar de tener que volver a escribir cada consulta que quería ejecutar ...

Respuesta

5

Utilicé la directiva ISO initialization/1 en test_queries.pl para obtener el efecto que se ve en la parte inferior.

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]). 

luego llamar a gprolog con --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. Por cierto, hay [GNU Prolog 1.4.1] (http://gprolog.univ-paris1.fr/unstable/?C=M;O=D) – false

+0

@false: Acabo de instalar desde la fuente esta mañana. Qué tan rápido se está moviendo ... – CapelliC