Как добавить тройки в запрос jena

Предположим, у меня есть объект запроса jena:

String query = "SELECT * WHERE{ ?s <some_uri> ?o ...etc. }";
Query q = QueryFactory.create(query, Syntax.syntaxARQ);

Как можно получить информацию об объекте запроса jena и эффективно итеративно добавить к нему триплеты? Например, предположим, что я хочу добавить тройки

?o dcterms:title "TheBestTitle".
?o dcterms:date ?date.

к запросу и, возможно, больше.
Есть ли способ добавить эти триплеты в запрос или сделать какое-то волшебство, чтобы создать новый объект запроса, который выглядит как оригинал с добавленными этими триплетами? Предположим, что мне также может понадобиться получить информацию из исходной версии запроса (например, List resultVars = q.getResultVars();).

Некоторые выводы, которые у меня есть, заключаются в использовании классов AlgebraGenerator и Op, предоставляемых Jena API, но я не могу найти разумных вариантов использования в таком контексте, как этот.

Спасибо!


person Nick Bartlett    schedule 01.03.2013    source источник


Ответы (1)


http://jena.apache.org/documentation/query/manipulating_sparql_using_arq.html

  1. Создание алгебраического выражения и преобразование в запрос (OpAsQuery)
  2. Объектом Query, представляющим собой очищенную проанализированную структуру, можно манипулировать (Query.getQueryPattern)
  3. Сделайте это с помощью манипуляций со строками перед синтаксическим анализом.
person AndyS    schedule 02.03.2013