【发布时间】:2013-03-04 14:28:41
【问题描述】:
假设我有一些耶拿查询对象:
String query = "SELECT * WHERE{ ?s <some_uri> ?o ...etc. }";
Query q = QueryFactory.create(query, Syntax.syntaxARQ);
在查询中获取三元组的所有主题的最佳方法是什么?最好不必手动进行任何字符串解析/操作。
例如,给定一个查询
SELECT * WHERE {
?s ?p ?o;
?p2 ?o2.
?s2 ?p3 ?o3.
?s3 ?p4 ?o4.
<http://example.com> ?p5 ?o5.
}
我希望返回一些看起来像的列表
[?s, ?s2, ?s3, <http://example.com>]
换句话说,我想要查询中所有主题的列表。即使只有那些是变量的主题或那些是文字/uris的主题也会很有用,但我想在查询中找到所有主题的列表。
我知道有一些方法可以返回结果变量 (Query.getResultVars) 和一些其他信息(请参阅 http://jena.apache.org/documentation/javadoc/arq/com/hp/hpl/jena/query/Query.html),但我似乎找不到任何可以专门获取查询主题的内容(列表的所有结果变量也将返回谓词和对象)。
任何帮助表示赞赏。
【问题讨论】:
-
查询字符串是给定的还是可以更改?因为您的问题可以通过更改查询很容易地解决。
-
我想我终于明白你的意思了。您不需要结果中的所有主题,而是查询中主题的所有绑定变量,对吗?如果是这样,请在问题中更明显。
-
为什么不迭代结果变量?你想用结果变量创建一个表吗?如果不是,请举个例子。
-
另外,我认为您的示例中存在错误。你的预期结果不应该是
[s, s2, s3]吗? -
为清晰起见进行了编辑。查询字符串是给定的,不能更改。除了在查询中充当主题的任何文字/uris之外,我希望获得查询中主题的所有绑定变量。
标签: java sparql semantic-web jena