1

約 9M のトリプルを持つ RDF4j ディスク ベースのネイティブ ストアがあります。現在、約 20 秒かかる約 4K トリプルの削除のパフォーマンスを改善しようとしています。私はもう試した:

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

3 つの方法はすべて、同様のタイミングを示しています。4K トリプルを削除するより簡単な方法があると思います。私が間違っていることについて何か考えがあれば教えてください。詳細をお知らせいたします。

4

1 に答える 1

2

これは、Rdf4j のバグが原因であることが判明しました ( https://github.com/eclipse/rdf4j/issues/1425を参照)。リリース 2.5.2 で修正されました。

于 2019-05-25T05:03:05.987 に答える