我想实现Optimistic vs. Pessimistic locking
中提到的“乐观锁定”之类的东西我有以下数据
:foo
:hasProp 'bar';
:hasVersion '3'^^xsd:nonNegativeInteger
.
会话查询此数据并将信息保存在内存中。 然后它想发布更新。
当传递的版本为“3”时,我只希望更新成功,这意味着自会话读取:foo
以来没有发生更新。
当传递的版本为!= 3
但其他方式成功并将:hasVersion
更新为'4'^^xsd:nonNegativeInteger
并且例如:hasProp
更新为{时,是否有办法使更新查询失败{1}}?
答案 0 :(得分:2)
“失败”意味着没有数据匹配,即您可以使用FILTER
。剩下的只有INSERT
和DELETE
相应的数据:
PREFIX : <YOUR_NAMESPACE_HERE>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
INSERT {
?s :hasProp "baz" .
?s :hasVersion "4"^^xsd:nonNegativeInteger
}
DELETE {
?s :hasProp "bar" .
?s :hasVersion ?v
}
WHERE{
?s :hasVersion ?v
FILTER(?v = "3"^^xsd:nonNegativeInteger)
}