2016-11-13 4 views
2

я есть пролог-запрос, который нуждается в массив как атом:JPL7, список строк в прологе-запросе

searchEventsOnCategory (Категории, События) Категории список строк.

Пример ввода: searchEventsOnCategory ([ 'Bar', 'Дискотека'], События)

Выход: Событие = [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 как список строк?

ответ

1

Вместо соединения, вы должны использовать Term

Variable X = new Variable("X"); 

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

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

То полезно и работает в моем случае :) – DraGott

Смежные вопросы