2

Jena ARQ API を使用して、OPTIONAL 句を SPARQL クエリにプログラムで追加することは可能ですか? プログラムでこのクエリを実行したいと思います:

select ?concept ?p ?o where {?s ?p ?o . } limit 10

これに:

SELECT  ?concept ?p ?o ?test WHERE
{ 
 ?s ?p ?o
 OPTIONAL { ?concept <http://www.test.com/test> ?test }
}
LIMIT   10

ARQ を使用すると、追加の結果変数を簡単に追加できます?test

Query q = QueryFactory.create(query)    
query.addResultVar(var);

しかし、API ドキュメントで見つけたものと、ネット全体をトロールすることから、OPTIONAL 句を追加することはできません。別のライブラリを使用する必要がありますか?

4

1 に答える 1

2

はい、できます。apache jena サイトのこのトピックの概要を参照してください。

あなたの出発点は、クエリパターンを取得することです:

Element pattern = q.getQueryPattern();

ElementGroup私の記憶が正しければそうなるでしょう。そこにオプションを追加します:

((ElementGroup) pattern).addElement(new ElementOptional(...));

...ビットは ElementTriplesBlock になりますが、これは非常に簡単です。

しかし、エレガントではありません。一般的には、ビジターと代数表現を使用することをお勧めしますが、この直接的な方法でうまくいくはずです。

于 2013-07-11T13:47:15.303 に答える