首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Jena ARQ向SPARQL查询添加可选子句

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

Stack Overflow用户
提问于 2013-07-11 21:10:40
回答 1查看 513关注 0票数 2

是否可以使用Jena ARQ API以编程方式向SPARQL查询添加可选子句?我想以编程方式接受这个查询:

代码语言:javascript
复制
select ?concept ?p ?o where {?s ?p ?o . } limit 10

要这样做:

代码语言:javascript
复制
SELECT  ?concept ?p ?o ?test WHERE
{ 
 ?s ?p ?o
 OPTIONAL { ?concept <http://www.test.com/test> ?test }
}
LIMIT   10

通过ARQ,很容易添加额外的结果变量?test

代码语言:javascript
复制
Query q = QueryFactory.create(query)    
query.addResultVar(var);

但从我在API文档中找到的内容和网上搜索来看,添加一个可选的子句是不可能的。我需要使用不同的库吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-11 21:47:15

是的你可以。请参阅apache jena站点上的this introduction to the topic

您的出发点是获得query pattern

代码语言:javascript
复制
Element pattern = q.getQueryPattern();

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

代码语言:javascript
复制
((ElementGroup) pattern).addElement(new ElementOptional(...));

...位将是一个ElementTriplesBlock,这非常简单。

然而,这并不优雅。一般来说,我会推荐使用访问者和代数表示,但这种直接的方法应该是可行的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17594304

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档