Datenbankstrukturen

In Mikrowelle 51 wurde fälschlicherweise behauptet “unter Wikidata liegt RDF” – was folgenden Tweet meinerseits auslöste:

@thomersch Ich glaube du hast das mit dem Semantic Web noch nicht so ganz [richtig] verstanden… Podcast-Idee: Wir unterhalten uns über das Thema.

Auf der FOSSGIS 2017 haben wir das Thema wieder aufgegriffen: Dabei wir zum Schluss gekommen sind, dass wir eigentlich noch ein paar Stufen vorher anfangen müssen, bevor sich erklären lässt was an dieser Aussage genau falsch ist.

TL;DR: Wikidata ist eine Sammlung aus versionierten JSON-Dokumenten, aus denen dann Graphen (RDF) in verschiedenen Geschmacksrichtungen generiert werden. Die JSON Dokumente liegen in Maria DB, die Graphen liegen als RDF in blazegraph und können dort mit der standardisierten Abfragesprache SparQL abgerufen werden.

Wer jetzt nur Bahnhof versteht, dem hilft unser Gespräch vielleicht weiter. Wir haben uns implizit dafür entschieden das Thema wie folgt anzugehen:

  • Relationale Datenbanken [00:07:45]
    • Tabellen: SQLite, MySQL bzw. MariaDB, Postgres
  • NoSQL [00:13:41]
    • Dokumente: Mongo DB, Couch DB
    • Spalten: Cassandra, DynamoDB
  • Mischformen bei Postgres: hstore, jsonb [00:25:02]
  • Graphen-Datenbanken: Neo4J, blazegraph [00:27:22]
  • Wikidata-Datenmodell [00:34:03]
  • RDF, SPARQL [00:40:04]
avatar Andi
avatar Thomas

Beispiele aus der Folge:

Abfragesprachen

  • SQL: SELECT m.*, h.* FROM modelle m, hersteller h WHERE m.sitzhoehe > 90
  • SPARQL (bei Wikidata): SELECT * WHERE { ?item wdt:P31 wd:Q146 . }

Mit RDF lassen sich Graphen aus Knoten und gerichteten Kanten abbilden. Eine solche Verbindung zwischen Start-Knoten, Kante und Ziel-Knoten wird als Triple bezeichnet. Oft bezeichnet man den Start-Knoten auch Subjekt, die Kante als Prädikat und den Ziel-Knoten als Objekt. RDF selbst definiert dabei noch nicht wie diese Informationen als Datei gespeichert werden – Das ist ein bisschen so wie das Verhältnis zwischen Unicode und UTF8 oder UTF16: Ersteres definiert einfach nur das Konzept und weißt jedem Zeichen eine Zahl zu, UTF8 definiert dann eine Darstellung dieser Zahl mit Standard-Länge 8bit, UTF16 eine Darstellung mit Standard-Länge 16bit. So gibt es bei RDF eine Darstellung in Text, XML, JSON oder welches Format sonst grade in Mode ist.

 

https://commons.wikimedia.org/wiki/File:Datamodel_in_Wikidata.svg

 

https://de.wikipedia.org/wiki/Datei:Ontschichten.gif

 

Links

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.