2

假设我有一些耶拿查询对象:

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();)。

我的一些线索是使用 Jena API 提供的 AlgebraGenerator 和 Op 类,但我似乎无法在这样的上下文中找到任何合理的用例。

谢谢!

4

1 回答 1

2

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

  1. 构造代数表达式并转换为查询 (OpAsQuery)
  2. Query 对象,它是清理后的解析结构,可以被操纵 ( Query.getQueryPattern)
  3. 在解析之前通过字符串操作来做到这一点。
于 2013-03-02T10:57:35.837 回答