AD Research Wiki:

Triple Stores

We tested the performance of two triple stores: Virtuoso and RDF-3X. We compare them to our own triple store on a couple of benchmarks.

Software Installation

Installation von Virtuoso Open-Source Edition:

  1. Herunterladen

  2. Anweisungen in der README-Datei folgen.

Installation von rdf3x:

  1. Herunterladen

  2. Kompilieren

Installation von SparqlEngineDraft:

  1. Klonen

  2. Anweisungen befolgen.

Data Import

Um den Datensatz in die Triple-Stores laden zu können, muss dieser Satz in ein für die RDF-Speicherung gängiges Format umgewandelt werden. Ausgewählt wurde das NT-Format. Der ursprüngliche Datensatz enthält Values und Entities. Values waren schon nt-konform, die Entities mussten umgewandelt werden. Dafür wurden die Entities in eckige Klammern gesetzt und unzulässige Zeichen durch die entsprechenden Prozent-Kodierungen oder durch von uns definierte Ersatzzeichen ersetzt (siehe Ersetzungtabelle unten).

Ersetzungstabelle:

%

<

>

\

^

`

space

%25

%3C

%3E

%5C

%5E

%60

_

Z.B.: Michael Jackson --> <Michael_Jackson>

Data Import Virtuoso:

Das Importieren der Daten in den Virtuoso Store wurde mit dem Bulk loading process durchgeführt. Bei diesem Prozess muss der Name des RDF-Graphen als graph_iri eingegeben werden. Unter diesem Namen ist der RDF-Satz bei Virtuoso erreichbar: Wenn man eine Sparql-Anfrage an den Store erstellt, muss man die graph_iri als prefix für jede Entity benutzen.

Z.B.: Michael Jackson --> '<http://foo/Michael_Jackson>'

* Für bessere Ladeperformance empfiehlt sich die Variablen NumberOfBuffers und MaxDirtyBuffers in der virtuoso.ini-Datei auf einen höheren Wert zu setzen (genaueres ist in virtuoso.ini beschrieben). Die Datei liegt unter <Installationsordner von virtuoso>/var/lib/virtuoso/db/virtuoso.ini

Data Import Rdf3x:

Das Importieren der Daten in den Rdf3x-Store erfolgt durch ein Skript in <Installationsordner von Rdf3x>/bin/rdf3xload <DB-Name> <RDF-Satz-Pfad>. Bei der Anfragegenerierung ist kein zusätzlicher Präfix erforderlich.

Z.B.: Michael Jackson --> '<Michael_Jackson>'

Data Import SparqlEngineDraft:

Anweisungen befolgen. Bei der Anfragegenerierung ist kein zusätzlicher Präfix erforderlich.

Z.B.: Michael Jackson --> '<Michael_Jackson>'

Indexerstellung:

Die Größe des Input-RDF-Sets im NT-Format beträgt 17 GB.

RDF-Store

Ladezeit

Indexgröße auf der Festplatte

Indexgröße im Arbeitspeicher (unmittelbar nach dem Serverstart)

Virtuoso

23 min

7.9 GB

5.8 GB

Rdf3x

76 min

12 GB

?

SparqlEngineDraft

26 min

14.2 GB

3.5 GB

Tests

Zeilenformat: <time> (number of lines in result)

Query \ RDF Store

rdf3x

SparqlEngineDraft

Virtuoso

Query 1

0.730ms(1)

36.819ms(1)

2433.000ms(1)

Query 2

16.472ms(5162)

4.587ms(5162)

121.000ms(5164)

Query 3

98.460ms(1579)

57.766ms(1579)

530.000ms(1579)

Query 4

24.536ms(9767)

6.898ms(9767)

38.000ms(9767)

Query 5

5.164ms(4)

109.617ms(4)

1229.000ms(4)

Query 6

75.784ms(0)

41.713ms(0)

138.000ms(0)

Query 7

31.728ms(3697)

17.634ms(3697)

101.000ms(3697)

Query 8

9.443ms(164)

19.144ms(164)

163.000ms(164)

Query 9

0.513ms(128)

2.586ms(128)

883.000ms(128)

Query 10

466.715ms(1528)

208.694ms(1528)

801.000ms(1528)

Queries

Query 1

SELECT ?x WHERE {
  ?x <is-a> <Book> .
  ?x <Author> <Anthony_Newman_(Author)>
}

Query 2

SELECT ?x WHERE {
  ?x <Genre> <Comedy> .
  ?x <is-a> <Award-Nominated_Work> .
  ?x <is-a> <Film> .
}

Query 3

SELECT ?x WHERE {
  ?x <is-a> <Politician> .
  ?x <Film_performance> ?y .
  ?y <Genre> <Comedy> .
}

Query 4

SELECT ?x WHERE {
  ?x <is-a> <Olympic_athlete> .
  ?x  <is-a> <Deceased_Person>
}

Query 5

SELECT ?x WHERE {
  ?x <Release> <Technodrome,_Volume_2_(Consumer_product)> .
  ?x <is-a> <Canonical_Version> .
  ?x <is-a> <Musical_Recording> .
}

Query 6

SELECT ?x ?y WHERE {
  ?x <is-a> <Person> .
  ?x <Country_of_nationality> <Germany> .
  ?x <Author> ?y .
  ?y <is-a> <Award-Nominated_Work>
}

Query 7

SELECT ?x WHERE {
  ?x <is-a> <Politician> .
  ?x <Parent> ?y .
  ?x <Parent> ?z .
  ?y <is-a> <Politician> .
  ?z <is-a> <Politician>
}

Query 8

SELECT ?x ?y WHERE{
  ?x <is-a> <Monarch> .
  ?x <is-a> <Deceased_Person> .
  ?x <Cause_of_death> <Assassination> .
  ?x <Place_of_birth> ?y
}

Query 9

SELECT ?x WHERE{
  ?x <is-a> <Lake> .
  ?x <Contained_by> <Russia>
}

Query 10

SELECT ?x ?y ?z WHERE{
  ?x <is-a> <Musical_Recording> .
  ?x <Recorded_by> ?y .
  ?y <Award_Won> <Bollywood_Movie_Humanitarian_Award> .
  ?y <Celebrity_friend> ?z .
  ?z <Profession> <Prophet>
}

AD Research Wiki: TripleStores (last edited 2018-04-27 10:45:38 by 141)