gpt4 book ai didi

sparql - 清除命名图的最有效方法?

转载 作者:行者123 更新时间:2023-12-01 23:04:37 24 4
gpt4 key购买 nike

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

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

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

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

我想知道是否有更有效的方法来做到这一点。即使是特定于三重存储的解决方案对我来说也是可以接受的。

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

最佳答案

您可以使用 SPARQL CLEAR为此命令:

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

关于sparql - 清除命名图的最有效方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50280986/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com