针对Prolog中的知识库进行自动查询测试

时间:2017-12-08 02:53:54

标签: prolog swi-prolog

我有一个包含一些事实的数据库和一个包含我定义的谓词的文件。

 /* facts.pl */
 person(dan).
 dog_person(dan).
 dog(spot).


 /* predicates.pl with facts imported */
 :- [facts].

 has_dog(X,Y) :- (person(X),dog_person(X),dog(Y)).
 whatever(X,Y) :- (something(X),something_else(Y)).
 ... many more

为了测试我定义的谓词,我需要针对我的db运行一个查询列表。我想知道是否有另一种方法可以做到这一点,我不必逐个输入每个查询。

 /* Query */
 ?- hasdog(X,dan).         %(click)

 /* Out would be something like */
 X = dog.                  %(click)
 ... many more

例如,有没有办法将查询抽象到自己的文件/函数中,以便我可以不停止地循环它们?

 > swipl predicates.pl queries.pl

 /* Query */
 ?- hasdog(X,dan).
 X = dog.

 /* Query */
 ?- hasdog(X,dan).
 X = dog.
 ...

 Done.

0 个答案:

没有答案