从RDF4j Native Store删除三元组似乎很慢

时间:2019-05-22 15:51:14

标签: sparql rdf4j

我有一个基于RDF4j磁盘的Native Store,大约有9M的三元组。我正在尝试提高删除大约4K三元组的性能,现在大约需要20秒。我尝试过:

1

    Repository rep = new SailRepository(new NativeStore(new File(DATA_DIR + "/db"), "spoc, posc, opsc"));
    diskRep.initialize();
    RepositoryConnection conn = rep.getConnection();
    conn.remove(statements); // first find statements, then pass them into remove method

2

    // Execute with conn.prepareUpdate(QueryLanguage.SPARQL, query)
    DELETE DATA 
    {
      <#book2> <http://purl.org/dc/elements/1.1/title>   "David Copperfield" ; 
             <http://purl.org/dc/elements/1.1/creator> "Edmund Wells"      .
      // all triples explicitly here
    }

3

    // Execute with conn.prepareUpdate(QueryLanguage.SPARQL, query)
    DELETE { ?person ?property ?value } 
    WHERE 
      { ?person ?property ?value ; <http://xmlns.com/foaf/0.1/givenName> "Fred" }
      // query pattern

这三种方法都显示相似的时间。我相信有一种删除4K三元组的更快方法。拜托,如果您对我做错了什么有任何想法,请告诉我。我很乐意提供其他详细信息。

1 个答案:

答案 0 :(得分:2)

事实证明,这是由Rdf4j中的错误引起的(请参见https://github.com/eclipse/rdf4j/issues/1425)。它已在版本2.5.2中修复。