0

我是 prolog 的新手,想用 prolog + java 编写 wampus AI,尝试在 java 中的 prolog 和 GUI 中执行逻辑,但我卡住了,而且水平非常基础。

基本上我的知识库中有这样的东西

parent(john, sarah).

我想知道谁是莎拉的父母(父母(X,莎拉)),但我不能,因为我无法定义莎拉这个词!我可以定义诸如

VariableTerm("X"); // for variable
IntegerTerm // for integer
FloatTerm // for float

但是 sara -string/atom- Term 没有一个(实际上有和 atom 但它是受保护的)。我觉得我在网上自学中错过了一些非常基本的东西。我已经多次浏览 gnu 的 prolog 文档,但我找不到我的答案

PS:在 IntelliJ Idea IDE 上工作

更新 1:

我搬到了 swi-prolog (jpl),所以我可以在那里完成我的工作,但在将 lib 添加到我的 java 项目后,我什至无法运行代码,修复了 2 个错误,但它只是一个接一个的错误(目前卡在 java:包 org.jpl7 不存在)和 google/stackoverflow 解决方案将不起作用

4

1 回答 1

0

您想要通过说出parent(sarah, X)哪个将变量 X 与 sarah 的已知父级(即 john)统一来询问 sarah 的父级是谁。然后,您可以将另一个目标链接到那个以 Unification 的形式询问谁是 X 的父项的目标后面,parent(sarah,X),parent(X,Y).尝试使两个术语相同,否则它返回 false。X = john,因此查询变为parent(sarah,john),parent(john,Y).

查看有关统一工作原理的资源:立即学习 Prolog!:统一

于 2018-02-06T09:37:49.933 回答