首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >耶拿UpdateFactory

耶拿UpdateFactory
EN

Stack Overflow用户
提问于 2012-04-02 16:16:24
回答 2查看 753关注 0票数 1

我想知道是否可以使用ARQ对象在Jena中创建SPARQL UpdateRequest。我有兴趣以编程方式创建这样的更新:

代码语言:javascript
复制
DELETE {?s :predicate <http://example.org#old> }    
INSERT {?s :predicate <http://example.org#toAdd>} 
WHERE  {?s :predicate <http://example.org#old> } 

通过从API中创建DELETE、INSERT和WHERE子句中的模式。到目前为止,我找到的创建SPARQL请求的唯一方法需要解析SPARQL字符串或创建com.hp.hpl.jena.update.Update对象(它使用的是我无法找到使用示例的QuadAcc对象)。

我担心SPARQL更新请求的管理和SPARQL SELECT查询的管理是分开的,并且ARQ不能用于动态地“组装”查询。

提前感谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-03 05:48:11

我自己还没有尝试过这种方法,但是看起来创建Update对象并将它们组装成一个UpdateRequest确实是可行的。

简单地看一下,QuadAcc似乎并不特别困难,只需在包含变量的三元组中使用addTriple()

UpdateModify子类Update看起来特别有趣,它对应于示例中的DELETE … INSERT … WHERE模式。不幸的是,WHERE子句被初始化为Element (查询部分的语法表示),而不是Op (代数表示)。

票数 0
EN

Stack Overflow用户

发布于 2015-05-21 10:03:27

这个问题也让我心烦。我想从UpdateRequest对象和ElementTriplesBlock对象组成一个ElementTriplesBlock。这是用于构造查询的两个主要类。例如:

代码语言:javascript
复制
ElementGroup queryPattern = ...
ElementTriplesBlock constructTriples = ...

Query query = new Query();
query.setQueryConstructType();

// set CONSTRUCT clause
query.setConstructTemplate(new Template(constructTriples.getPattern()));

// set WHERE clause
query.setQueryPattern(queryPattern);

我试了一下耶拿邮件列表,得到了这样的答案:

update用于处理流、任意大、无限制的插入和删除数据,因此使用了

,而不是用于更新的插入/删除部分的元素。

最后,我使用ParametrizedSparqlString实现了这一点。

代码语言:javascript
复制
ElementGroup queryPattern = ...
ElementTriplesBlock deleteTriples = ...
ElementTriplesBlock insertTriples = ...

ParameterizedSparqlString qstring = new ParameterizedSparqlString();

// Set DELETE clause
qstring.append("DELETE {");
qstring.append(deleteTriples.toString());
qstring.append("}");

// Set INSERT clause
qstring.append("INSERT {");
qstring.append(insertTriples.toString());
qstring.append("}");

// Set WHERE clause
qstring.append("WHERE {");
qstring.append(queryPattern.toString());
qstring.append("}");

// Construct an update query
UpdateRequest request = qstring.asUpdate();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9979931

复制
相关文章

相似问题

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