我正在使用 Ontotext GraphDB 的一个实例,并且经常想要清除具有大量三元组的命名图。
目前,我的技术涉及向图形服务器发出 SPARQL 命令,该命令搜索并匹配命名图形中每个三元组的三重模式:
DELETE { GRAPH example:exampleGraph { ?s ?p ?o }} WHERE {?s ?p ?o .}
当存在大量三元组时,这种方法通常需要相当长的时间来清除命名图。
我想知道是否有更有效的方法来做到这一点。即使是 triplestore-specific 解决方案也是我可以接受的。
我还应该注意到我正在使用 RDF4J 库与图表进行通信。我知道某些解决方案可能适用于 Ontotext Web 界面,但我只对我可以以编程方式实现的解决方案感兴趣。
1 回答
您可以使用 SPARQL 明确命令:
或者,下降:
两者之间的区别在于
CLEAR
允许三重存储保留空的命名图,而DROP
完全删除命名图。但是在 GraphDB 的情况下,没有实际的区别,因为 GraphDB 从不保持对空命名图的引用。如果您不想使用 SPARQL,可以使用RDF4J API以编程方式调用
clear()
操作:或者更简洁: