简体   繁体   中英

How to use String (atom) terms in Gnu Prolog for java

I'm a newbie in prolog and wanted to write wampus AI with prolog + java , trying to do the logic in prolog and GUI in java but im stuck and a very basic level.

basically I have something like this in my knowledge base

parent(john, sarah).

and i want to know who is sarah's parent (parent(X,sarah)) and i just can't because i cant denfine the term sara! i can define terms like

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

but there is just not one for sara -string/atom- Term (actually there is and atom but its protected). I fell like i missed something very basic in my online self tutoring. I've gone through gnu for prolog docs several times but i cant find my answer

PS: Working on IntelliJ Idea IDE

UPDATE 1:

I moved to swi-prolog (jpl) so i can do my job there but i can't even get the code to run after adding the lib to my java project, fixed like 2 of its errors but it's just 1 error after another (Currently stuck on java: package org.jpl7 does not exist) and google/stackoverflow solutions won't work

What you want is to ask who sarah's parent is by saying parent(sarah, X) which unifies variable X with the known parent of sarah, which is john. Then you can chain another goal behind that one that asks who is the parent of X in the form of parent(sarah,X),parent(X,Y). Unification tries to make two terms the same, or it returns false. X = john, so the query becomes parent(sarah,john),parent(john,Y). .

Check out this resource on how Unification works: Learn Prolog Now!: Unification

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM