Optimierte Datenhaltung von RDF-Tripeln in einem RDBMS

Optimierte Datenhaltung von RDF-Tripeln in einem RDBMS

Etablierte Tripelstores wie Sesame, Jena etc. verwenden klassische RDBMS als Backend. Kernfrage: Wie kann man einen RDF Graphen in einem klassischen RDBMS modellieren?

Kernfrage: Optimierung der Speicherung von RDF-Tripeln im Relationen-Modell

Darstellung und Bsp. im Folgenden nach Daniel J. Abadi Adam Marcus Samuel R. Madden Kate Hollenbach: "Scalable Semantic Web Data Management Using Vertical Partitioning", VLDB ‘07, September 2328, 2007, Vienna, Austria. http://cs-www.cs.yale.edu/homes/dna/papers/abadirdf.pdf

Naiver Ansatz: Subjekt Prädikat Objekt Tabelle

Tripel-Tabelle
RDF Graph Triples
Subj. Prop. Obj.
ID1 type BookType
ID1 title “XYZ”
ID1 author “Fox, Joe”
ID1 copyright “2001”
ID2 type CDType
ID2 title “ABC”
ID2 artist “Orr, Tim”
ID2 copyright “1985”
ID2 language “French”
ID3 type BookType
ID3 title “MNO”
ID3 language “English”
ID4 type DVDType
ID4 title “DEF”
ID5 type CDType
ID5 title “GHI”
ID5 copyright “1995”
ID6 type BookType
ID6 copyright “2004”

Diskussion

  • Eine simple Anfrage wie "Alle Bücher von Joe Fox im Jahr 2001" erfordert wiederholte Zugriffe auf die selbe Tabelle - teuer!
  • RDBMS hat keine Struktur über Tabellen zur Verfügung, die zur Optimierung genutzt werden können
    • keine statistische Auswertung
    • kein paralleler Zugriff

Tripel-Store, extremer Ansatz: Zum Teil wird mit dezidierten Triple-DB Implementierungen experimentiert

Unsere Frage: Wie können wir Tripel optimiert in klassischen RDBMS speichern?