SPARQL交易

问题描述 投票:0回答:2

我想多个对象插入到像耶拿定式或演奏家一个triplestore。

在我的情况下,受等于主键。这是一个类似关系数据库。我怎样才能确保拍摄只出现一次或已在使用?可以在ASK与SPARQL中插入结合起来呢?或者,可以一键生成?

只要你使用的后端的实例可以确保对象只存在一次,但更多的情况下查询和插入必须同时进行以节省交易。

transactions sparql rdf triplestore shacl
2个回答
0
投票

该SPARQL标准本身并不提供交易的任何支持。然而,炫技和许多其他RDF数据库支持Eclipse RDF4J API,它们有充分的事务支持(披露:我对RDF4J开发团队)。使用RDF4J交易在Java中的一个例子是这样的:

 Repository rep = ... ; // the Repository object is your database

 // open a connection to the database
 try(RepositoryConnection conn = rep.getConnection) {
     conn.begin(); // start a new transaction
     ... 
     // do a query
     boolean success = conn.prepareBooleanQuery("ASK ...").evaluate(); 
     if (!success) { 
        conn.rollback();
     }
     else {
        // add some data
        conn.add(...);
        conn.commit();
     }
 }

有关交易如何与RDF4J工作的详细信息,请参阅documentation

如果你没有在Java中工作,你也可以用交易通过RDF4J REST API,这是SPARQL协议的扩展工作。

顺便说一句:以上就是真正回答你的问题的“我怎么做交易”的一部分。有可能比做着你正在寻找的那种约束验证的ASK查询其他可用的,更好的机制。 SHACL,形状约束语言,可能是你所需要的。各种工具和平台,有SHACL验证(部分或全部)的支持。你可以阅读更多关于RDF4J SHACL support这里。


0
投票

的更新的形式可以是INSERT .. WHEREWHERE部分可以包括是否要更新或不是测试。

的SPARQL协议更新需要的动作是原子的。

© www.soinside.com 2019 - 2024. All rights reserved.