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

Compound の代わりに、Term を使用する必要があります

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 に答える