8

私がいくつかのイエナクエリオブジェクトを持っていると仮定します:

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>]

つまり、クエリ内のすべてのサブジェクトのリストが必要です。変数であるサブジェクトやリテラル/URIであるサブジェクトだけでも便利ですが、クエリ内のすべてのサブジェクトのリストを見つけたいと思います。

Query.getResultVars結果変数( )やその他の情報を返すメソッドがあることは知っていますが( http://jena.apache.org/documentation/javadoc/arq/com/hp/hpl/jena/query/Query.htmlを参照)。クエリのサブジェクトを具体的に取得するものが見つからないようです(すべての結果変数のリストは、述語とオブジェクトも返します)。

助けていただければ幸いです。

4

2 に答える 2