Rdf 如何更改一组三元组中的数据类型(或某些值)?

Rdf 如何更改一组三元组中的数据类型(或某些值)?,rdf,sparql,Rdf,Sparql,假设您认识的某个人不小心在RDF数据库中插入了一些数据类型为xsd:datetime而不是正确的xsd:datetime的三元组。最简单的纠正方法是什么 我知道我可以这样做来找到坏数据: select * where { ?s ?p ?o. filter (datatype(?o)=xsd:datetime) } 我可以把这些结果,在文本编辑器中修复,删除坏的,插入好的。。。但是我必须相信/希望有一种更简单的方法。使用SPARQL 1.1,您可以使用如下SPARQL更新命令来实现这一点

假设您认识的某个人不小心在RDF数据库中插入了一些数据类型为xsd:datetime而不是正确的xsd:datetime的三元组。最简单的纠正方法是什么

我知道我可以这样做来找到坏数据:

select * where {
  ?s ?p ?o.
  filter (datatype(?o)=xsd:datetime)
}

我可以把这些结果,在文本编辑器中修复,删除坏的,插入好的。。。但是我必须相信/希望有一种更简单的方法。

使用SPARQL 1.1,您可以使用如下SPARQL更新命令来实现这一点:

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)
}

Update命令适用于特定的图形,因此您可能需要多次发出此命令,为每个需要更正的命名图形在命令开头添加一个带的

您可以删除{graph?g{s?p?o}等来处理命名图形。@Steve Harris Yes,刚才提到了带有
表单的
,因为它是对这个用例的更新的一个更简单的修改