3

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

searchEventsOnCategory(Categories,Events) 类别是字符串列表。

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

输出:事件 = [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 作为字符串列表?

4

1 回答 1

2

您应该使用 Term 而不是 Compound

Variable X = new Variable("X");

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

Query q4 =
    new Query(
        "searchEventsOnCategory",
        new Term[] {t,X}
        );
于 2016-11-13T22:35:56.013 回答