1

我为 OWL 数据库编写后端,需要检查三元组的擦除或插入是否成功。

到目前为止,我所拥有的看起来是这样的:

String queryUpdate =
/*Update String*/
        UpdateRequest request = UpdateFactory.create(queryUpdate);
        UpdateProcessor proc = UpdateExecutionFactory.create(request, graphStore);
        proc.execute();

所以我需要的是来自 proc.execute() 方法的布尔值。

有类似的东西存在吗?

4

2 回答 2

0

好吧,我不确定你是否可以那样做。但是,我可以建议您使用Jena TDB Transactions,因为您可以在那里找到 ACID 事务支持。因此,您可以检查您的操作是成功还是失败。

于 2016-04-12T09:59:52.223 回答
0

如果有多个线程访问数据,事务将是一个好主意。如果这都是单线程的,那么一致性就不是问题了。

“成功”是什么意思?SPARQL 更新是否合法并已执行,或者数据是否以某种预期方式更改?

对于前者,你会得到一个例外。

如果是后者,则不是 proc.execute 的工作(它怎么知道?)。一个有用的方法是有条件地将三元组插入到数据中以记录那里的状态。这是更新的一部分。

... operation1 ... 
;
... operation2 ... 
;
INSERT { [] :succeded true }
WHERE {
    ... test condition ...
}
于 2016-04-12T12:30:07.280 回答