使用Jena ARQ向SPARQL查询添加可选子句

使用Jena ARQ向SPARQL查询添加可选子句,sparql,semantic-web,jena,Sparql,Semantic Web,Jena,是否可以使用Jena ARQ API以编程方式向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 但是从我在API文档中发现的情

是否可以使用Jena ARQ API以编程方式向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
但是从我在API文档中发现的情况来看,在网络上拖网是不可能添加可选条款的。我需要使用其他库吗?

可以。请参阅ApacheJena站点上的

您的出发点是获得:

如果我没记错的话,那将是一个
ElementGroup
。在此处添加可选选项:

((ElementGroup) pattern).addElement(new ElementOptional(...));
位将是一个非常简单的参数

然而,这并不雅观。总的来说,我建议使用访问者和代数表示法,但这种直接的方法应该有效

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