假设您认识的某人意外地将一些三元组插入到数据类型为xsd:datetime的RDF数据库中,而不是正确的xsd:dateTime。解决这个问题最简单的方法是什么?
我知道我可以做这样的事情来找到不好的数据:
select * where {
?s ?p ?o.
filter (datatype(?o)=xsd:datetime)
}
我可以拿出那些结果,在文本编辑器中修复它们,删除不好的结果并插入好的结果......但我必须相信/希望有一种更简单的方法。
答案 0 :(得分:4)
使用SPARQL 1.1,您可以使用SPARQL Update命令执行此操作,如下所示:
DELETE { ?s ?p ?o }
INSERT { ?s ?p ?o2 }
WHERE
{
?s ?p ?o .
FILTER(datatype(?o) = xsd:datetime)
BIND(STRDT(STR(?o), xsd:dateTime) AS ?o2)
}
更新命令适用于特定图表,因此您可能必须发出此多次,在命令的开头为您需要更正的每个命名图表添加WITH <graph>
。