如何判断SPARQL INSERT DATA语句是否成功插入数据?
SPARQL条件插入后的执行状态判断问题
我使用的SPARQL更新语句如下:
INSERT DATA { # ... 待插入的数据 } WHERE { FILTER EXISTS { # ... 判断条件 } }
这条语句是否执行插入操作,完全取决于FILTER EXISTS中的条件是否成立。但根据SPARQL 1.1更新标准的规定,引擎执行成功后并没有统一的返回内容,所以无法直接判断数据是否被插入。
如果后续通过SELECT查询来验证,又存在一个问题:查询和INSERT操作不在同一个事务中,可能会因为并发等情况导致误判。
除了各厂商提供的特定方案外,有没有通用的方法能判断过滤条件是否匹配?这看起来是SPARQL更新标准的一个明显局限。目前我想到的唯一临时解决办法是:每次执行插入时生成一个带唯一UUID的三元组,当FILTER条件成立时,同时插入这个UUID三元组,之后通过SELECT查询该UUID是否存在,来判断INSERT是否实际执行了。
内容的提问来源于stack exchange,提问作者pseudosudo
相关产品推荐
相关产品推荐

