通过JPL查询Prolog模块

时间:2016-12-09 05:56:50

标签: java prolog swi-prolog jpl

我正在尝试使用JPL查询prolog文件的动态模块。感谢这个问题( how to consult file as a module in jpl)  我能够使用声明为这样的Query对象来咨询,断言和撤回模块:

assertFact = new Query("assert(mod1:"+fact.toString()+")");

retractFact = new Query("retract(mod1:"+fact.toString()+")");

consultQuery = new Query("mod1:consult('"+rulesPath+"')");

但是,我无法使用类似的调用查询文件中的谓词,例如

legalMovesQuery = new Query("mod1:legal("+playerName+",Move)");

nextQuery = new Query("mod1:next(Role,Action)");

它总是从我同时运行的prolog的非模块实例返回结果。我觉得这很奇怪,因为我能够成功运行这个查询:

dynamicQuery = new Query("mod1:predicate_property(X,dynamic),\\+predicate_property(X,built_in),\\+predicate_property(X,number_of_clauses(0))");

也许是因为所有不起作用的查询都在文件中,所以语法不能以相同的方式工作?我不知道,我只是喋喋不休。

那么,关于我如何能够查询我创建的模块的任何想法?

0 个答案:

没有答案