Удаление троек из RDF4j Native Store кажется довольно медленным - PullRequest
1 голос
/ 22 мая 2019

У меня есть Native Store на основе диска RDF4j с примерно 9М троек. Я пытаюсь улучшить производительность удаления около 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 Ответ

2 голосов
/ 25 мая 2019

Это, как оказалось, было вызвано ошибкой в ​​Rdf4j (см. https://github.com/eclipse/rdf4j/issues/1425). Это было исправлено в выпуске 2.5.2.

...