简单的PROLOG问题:如何针对Prolog数据库测试多个查询?

Mr *_*log 6 database prolog gnu-prolog

我有一个Prolog数据库文件(test_inserts.p),我用它来插入我的所有数据.

我还有一个Prolog查询文件(test_queries.pl),它包含我编写的所有Prolog查询,用于从我的数据库接收特定信息.

我想知道如何在使用gprolog时对我的test_inserts.p数据库文件实际使用test_queries.pl查询我希望有一种方法可以同时加载两者,并以某种方式能够命令运行哪个查询,而不必重新键入我想运行的每个查询....

Cap*_*liC 5

我已经使用initialization/1ISO指令test_queries.pl来获得你在底部看到的效果.

test_queries.pl

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

:- initialization([test_inserts]).
:- initialization(test).
Run Code Online (Sandbox Code Playgroud)

test_inserts.pl

a(X,Y) :- append(X,Y,[1,2,3]).
Run Code Online (Sandbox Code Playgroud)

然后用gprolog调用 --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] []
| ?- 
Run Code Online (Sandbox Code Playgroud)