PrologBeans - формат, в котором возвращаются списки - PullRequest
1 голос
/ 21 декабря 2009

Я получил это в файле Пролога:

:- module(test,[main/0, api_trial/2]
:- use_module(library(prologbeans)).

main:-
  register_query(assert_trial(Age,Res), api_trial(Age,Res)),
  start.

person('John',10,'London').
person('Adam',10,'Manchester').

api_trial(Age,Res) :-
    findall((P,Age,Add),person(P,Age,Add),Res).

В Java я делаю следующий запрос (после импорта правильных классов и т. Д.):

  public void trial() {
    try{
      Bindings bindings = new Bindings().bind("Age",10);
      QueryAnswer answer = session.executeQuery("assert_trial(Age,Res)", bindings);
      Term result = answer.getValue("Res");
      System.out.println("Answer returned " + result);
    } catch (IOException e) {
      e.printStackTrace();
    } catch (IllegalCharacterSetException e) {
      e.printStackTrace();
   }
}

В основномМоя проблема в том, что формат возвращает запрос в Java.В Прологе это нормально:

Res = [('John',10,'London'),('Adam',10,'Manchester')] ? 

В Java я получаю:

Answer returned [,(John,,(10,London)),,(Adam,,(10,Manchester))]

Форматирование испорчено.Как я могу преодолеть эту проблему?Любая помощь приветствуется.

Спасибо.

1 Ответ

0 голосов
/ 09 ноября 2010

Использовали ли вы toString () для создания вывода Java? Скорее всего, toString () реализует запись между записью и записью.

Из write_canonical сообщалось бы, что операторы f не соблюдаются. Вместо они обычно записываются как f (a1, a2) соответственно f (a1).

Одним операторным определением, которое имеет каждый пролог, является запятая, поэтому мы можем вход (A, B), но write_canonical запишет его как ',' (A, B):

  ?- X = (A,B), write_canonical(X).
  ','(_,_)
  X = (A,B)

Что я сейчас вижу в вашем выводе, так это то, что он также был удален в кавычках. Это нормальное поведение записи:

  ?- X = 'hello world!', write(X).
  hello world!
  X = 'hello world!'

Операция записи, которая будет уважать операторы и помещать кавычки, где это необходимо было бы writeq.

С наилучшими пожеланиями

(с) 2010, Ян Бурс, 8004 Цюрих

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...