本文介绍了清除命名图表的最有效方式是什么?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用Ontotext GraphDB的一个实例,并且经常希望清除具有大量三元组的命名图。

目前,我的技术涉及向图形服务器发出SPARQL命令,该命令搜索并匹配命名图中每个三元组的三元组模式:

DELETE { GRAPH example:exampleGraph { ?s ?p ?o }} WHERE {?s ?p ?o .}

当有很多三元组时,此方法通常需要相当长的时间才能清除命名图。

我想知道是否有更有效的方法来做这件事。即使是针对三元组的解决方案,我也可以接受。

我还应该注意到,我正在使用RDF4J库与图形通信。我知道某些解决方案可能适用于Ontotext Web界面,但我只对我可以编程实现的解决方案感兴趣。

推荐答案

您可以使用sparqlCLEAR命令执行此操作:

CLEAR GRAPH example:exampleGraph

或者DROP

DROP GRAPH example:exampleGraph
两者的区别在于,CLEAR允许三元组保留一个空的命名图,而DROP则完全删除该命名图。但在GraphDB的情况下没有实际区别,因为GraphDB从不保留对空命名图的引用。

如果您不想使用SPARQL,可以使用RDF4J API以编程方式调用clear()操作:

IRI graph = graphdb.getValueFactory().createIRI("http://example.org/exampleGraph");
try(RepositoryConnection conn = graphdb.getConnection()) {
   conn.clear(graph);
}

或更简洁:

IRI graph = graphdb.getValueFactory().createIRI("http://example.org/exampleGraph");
Repositories.consume(graphdb, conn -> conn.clear(graph));

这篇关于清除命名图表的最有效方式是什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

05-31 01:42