Java-序言:如何将参数传递给 arity 2 查询?
Java-Prolog: How to pass arguments to arity 2 query?
我在 Prolog 和 Java 上都是初级水平。我正在尝试 link 我的 Prolog 程序 Java。我找到了如何这样做 here。但是我不知道如何将参数传递给 arity 2 的 Prolog 查询。这是我的 prolog 程序的一部分:
male(Jack).
male(John).
female(Jill).
couple(Jack,Jill).
parent(Jack,John).
parent(Jill,John).
这是我的 Java:
Query q1 = new Query("female", new Term[] {new Atom("Jill")});
System.out.println("Is Jill female? " + q1.hasSolution());
结果:"Is Jill female? true"
Query q2 = new Query(new Compound("male", new Term[] {new Variable("X")}));
int i=0;
while(q2.hasMoreSolutions()){
i++;
System.out.print(i + ") " +q2.nextSolution().get("X"));
}
结果:“1) Jack 2) John”
但我不知道如何运行 arity 2 的查询
怎么样:
new Query("parent", new Term[] {new Atom("Jill"),new Atom("John")});
new Term[]
表示你初始化了一个数组,显然你可以用多个原子来调用它。
请参阅查询数据库部分下的this documentation。
我在 Prolog 和 Java 上都是初级水平。我正在尝试 link 我的 Prolog 程序 Java。我找到了如何这样做 here。但是我不知道如何将参数传递给 arity 2 的 Prolog 查询。这是我的 prolog 程序的一部分:
male(Jack).
male(John).
female(Jill).
couple(Jack,Jill).
parent(Jack,John).
parent(Jill,John).
这是我的 Java:
Query q1 = new Query("female", new Term[] {new Atom("Jill")});
System.out.println("Is Jill female? " + q1.hasSolution());
结果:"Is Jill female? true"
Query q2 = new Query(new Compound("male", new Term[] {new Variable("X")}));
int i=0;
while(q2.hasMoreSolutions()){
i++;
System.out.print(i + ") " +q2.nextSolution().get("X"));
}
结果:“1) Jack 2) John”
但我不知道如何运行 arity 2 的查询
怎么样:
new Query("parent", new Term[] {new Atom("Jill"),new Atom("John")});
new Term[]
表示你初始化了一个数组,显然你可以用多个原子来调用它。
请参阅查询数据库部分下的this documentation。