Как использовать строковые (атомные) термины в Gnu Prolog для java

Я новичок в прологе и хотел написать Wampus AI с прологом + java, пытаясь сделать логику в прологе и графический интерфейс в java, но я застрял и очень базовый уровень.

в общем у меня есть что-то подобное в моей базе знаний

parent(john, sarah).

и я хочу знать, кто является родителем Сары (родитель (X, Сара)) и я просто не могу, потому что я не могу определить термин Сара! я могу определить такие термины, как

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

но для sara -string/atom- Term просто нет (на самом деле есть и атом, но он защищен). Я упал, как будто я пропустил что-то очень важное в своем онлайн-самообучении. Я несколько раз просматривал документы gnu для пролога, но не могу найти ответ

P.S.: Работа над IntelliJ Idea IDE

ОБНОВЛЕНИЕ 1:

Я перешел на swi-prolog (jpl), поэтому я могу выполнять свою работу там, но я даже не могу запустить код после добавления библиотеки в мой проект Java, исправленный как 2 из его ошибок, но это всего лишь 1 ошибка за другой ( В настоящее время застрял на java: пакет org.jpl7 не существует), и решения google/stackoverflow не будут работать


person Mansour Mir Behbahani    schedule 06.02.2018    source источник


Ответы (1)


Что вы хотите, так это спросить, кто родитель Сары, сказав parent(sarah, X), который объединяет переменную X с известным родителем Сары, которым является Джон. Затем вы можете связать еще одну цель за той, которая спрашивает, кто является родителем X в форме parent(sarah,X),parent(X,Y). Объединение пытается сделать два термина одинаковыми или возвращает false. X = Джон, поэтому запрос становится parent(sarah,john),parent(john,Y)..

Ознакомьтесь с этим ресурсом о том, как работает объединение: Изучите Prolog сейчас!: Объединение< /а>

person G_V    schedule 06.02.2018