在JPL7中等同于“断言”

时间:2019-10-29 07:31:20

标签: java prolog swi-prolog jpl

我当前正在创建Java Swing GUI,用户可以在其中选择自己喜欢的水果类型。根据他们的选择,将仅显示某些水果产品。例如,如果用户选择“葡萄”,则仅显示葡萄果酱或葡萄汁之类的葡萄产品。

问题在于如何在Prolog中断言某些事实。例如,我试图断言用户选择了“ grape”。 TLDR;我正在尝试找到与SWI-Prolog命令相对应的JPL:

assert(selected_fruit(grape)).

以下是我尝试过的2次尝试。

Query q2=new Query("assert selected_fruit(grape)");
System.out.println(q2.hasSolution());

另外一个我尝试过的是:

Query q2 = new Query("selected_fruit", new Term[] {new Atom("grape")});
System.out.println(q2.hasSolution());

第一次尝试抛出了语法错误,而第二次尝试则在运行时抛出了exist_error。如果有人可以说出一些话,那将不胜感激。

1 个答案:

答案 0 :(得分:2)

没关系,经过大量实验,我找到了答案。在我的情况下,正确的断言如下:

Query q2 = new Query("assert(selected_fruit(grape))");
System.out.println(q2.hasSolution());

然后控制台应打印出“ true”。