我有一个序言查询,它需要一个数组作为原子:

searchEventsOnCategory(类别,事件)
类别是字符串列表。

输入示例:
searchEventsOnCategory(['Bar','Disco'],事件)

输出:
事件= [listOfEvents]

searchEventsOnCategory(Categories,Events):-
    findall([X,V], event(X,_,_,V), List),
    compareCategories(List,Categories,Events1),
    Events = Events1.

我的Java代码是:
public ArrayList<String> getEventsByPrologWithCategories(ArrayList<String> Categories){
    ArrayList<String> events = new ArrayList<String>();

    //(Persons,Budget,Categories,Events)
    Variable X = new Variable("X");
    Compound V = new Compound("[Bar]");

    Query q4 =
            new Query(
                "searchEventsOnCategory",
                new Term[] {V,X}
            );

    ...

    return events;

}

我该如何看待V,该序言将V作为字符串列表?

最佳答案

您应使用Term而不是Compound

Variable X = new Variable("X");

Term t = Util.textToTerm("[Bar]");

Query q4 =
    new Query(
        "searchEventsOnCategory",
        new Term[] {t,X}
        );

07-24 09:39
查看更多