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

时间:2012-07-08 23:44:20

标签: rdf sparql

假设您认识的某人意外地将一些三元组插入到数据类型为xsd:datetime的RDF数据库中,而不是正确的xsd:dateTime。解决这个问题最简单的方法是什么?

我知道我可以做这样的事情来找到不好的数据:

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

我可以拿出那些结果,在文本编辑器中修复它们,删除不好的结果并插入好的结果......但我必须相信/希望有一种更简单的方法。

1 个答案:

答案 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>