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

ron*_*ron 4 rdf sparql

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

我知道我可以做这样的事情来查找错误的数据:

select * where {
  ?s ?p ?o.
  filter (datatype(?o)=xsd:datetime)
}
Run Code Online (Sandbox Code Playgroud)

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

Rob*_*obV 5

使用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)
}
Run Code Online (Sandbox Code Playgroud)

更新命令适用于特定图形,因此您可能必须发出多个时间,WITH <graph>才能为需要更正的每个命名图形在命令开头添加a 。

  • 您也可以执行 DELETE { GRAPH ?g { ?s ?p ?o } } 等来处理命名图。 (2认同)