Linked Data und Knowledge Graphen

Diese Woche (21.-25. August) habe ich an der 3. Keystone Training School teilgenommen und das Thema war Keyword search in Big Linked Data: Es gab spannende Vorträge, interessante Teilnehmer und unser Team hat den Hackathon am Freitag überragend gewonnen 🙂 . Linked Data war für mich bisher ein obskurer Begriff der etwas mit dem semantischen Web zu tun hat, aber genau konnte ich es nicht einordnen. Das hat sich diese Woche grundlegend geändert und ich glaube auch für OwnYourData ergeben sich daraus wichtige Möglichkeiten zur Weiterentwicklung.

Die Anfänge des semantischen Webs

Das erste Mal beschäftigte ich mich mit dem semantischen Web 2006-07. Ziel des semantischen Webs war es, Informationen im Internet für Maschinen lesbar zu machen. Ein Beispiel: Wenn wir die Wikipedia-Seite von Wien lesen, finden wir schnell heraus dass Wien derzeit knapp 1,9 Mio Einwohner hat. Diese Information aber für Maschinen zugänglich zu machen und Vergleiche anzustellen (z.B. hat Oslo oder Wien mehr Einwohner?) war dagegen sehr schwierig. Das semantische Web sollte nun alle Informationen kategorisieren und verarbeitbar machen.

In dem Forschungsprojekt an dem ich damals teilnahm ging es um die Beschreibung von Zusammenhängen in der Flugdomäne und wir entwickelten Ontologien, „pferchten“ die vorhanden Daten in dieses semantische Korsett und erhofften uns neue Erkenntnisse. Nichts davon traf aber ein und ich glaube alle waren damals froh, als das Projekt vorüber war: außer ein paar vielversprechender akademischer Papers war für mich kein praktischer Nutzen erkennbar.

In den letzten 10 Jahren gab es aber in diesem Bereich wichtige Weiterentwicklungen: SPARQL als universelle Abfrage- und Manipulations-Sprache wurde vom W3C etabliert und es ist nun möglich unterschiedlichste semantisch beschriebene Datenquellen einheitlich abzufragen und ggf. auch zu bearbeiten (vergleichbar mit SQL bei Datenbanken). Der Vergleich ob Wien mehr Einwohner als Oslo hat, lässt sich in SPARQL so formulieren:

ASK {
  <http://dbpedia.org/resource/Vienna\> dbo:populationTotal ?x .
  <http://dbpedia.org/resource/Oslo\> dbo:populationTotal ?y .
  FILTER(?x > ?y) . 
}

Das Statement kann man hier eingeben und erhält dann dieses Ergebnis .

Außerdem lockerte man auch die Anforderungen zur semantischen Beschreibung von Daten: Anstatt komplizierte Ontologien zu entwerfen denen alle erfassten Daten streng entsprechen mussten, verfolgt Link Data „nur mehr“ das Ziel maschinenlesbare Attribute zu verwenden, die auch selbst definiert werden können – eine genauere Definition gibt’s hier. Tim Berners-Lee, Vater des semantischen Webs, beschrieb diesen pragmatischen Ansatz mit den Worten:

Linked Data is the Semantic Web done right.

Linked Data für OwnYourData

Was bedeutet das nun für OwnYourData? Bisher ist der Datentresor als persönliches Archiv der eigenen Daten dafür ausgelegt, dass Apps via OAuth2 darauf zugreifen. D.h. es gibt ein vordefiniertes Datenformat (beschrieben auf Github bei den einzelnen Apps) und jegliche Datenquellen oder Visualisierungen, müssen sich daran halten. Zur Speicherung von Temperaturwerten in einem Raum sieht ein Datensatz als Beispiel so aus:

{"id":106920,"value":23.91,"timestamp":1502019600}

Diese Speicherung ist sehr effizient, hat aber auch einige Nachteile – insbesondere der fehlende Kontext:

  • worum geht es in diesem Datensatz? – es ist der Messwert eines Sensors in einem Raum, das ist aber nur erkennbar durch die Interpretation der Beschreibung der zugrundeliegenden Liste (die aber oft fehlt)
  • welche Bedeutung hat der Wert im Feld value? – auch hier muss ein Entwickler in der Dokumentation nachlesen, um das herauszufinden
  • in welcher Einheit ist die Temperatur gespeichert? – in diesem Fall Grad Celsius, aber andere Einheiten sind denkbar

Linked Data würde den Datensatz so beschreiben (als Format wird hier JSON-LD verwendet, es gibt aber zahlreiche andere Alternativen):

{
  "@context": "http://schema.org",
  "@type": "MeasureAction",
  "sensor": "https://chris.datentresor.org/sensor/library_temperature",
  "location": "Bibliothek",
  "dateCreated": "2017-08-25T19:30",
  "measurement": {
    "@type": "temperature",
    "value": "23.5",
    "unit": "Celsius"
  }
}

Knowledge Graphen

Diese semantische Annotation erlaubt nun eine eindeutige Beschreibung der gesammelten Daten, die auch von Software interpretierbar ist. Möchte man Daten mit anderen teilen, kann leicht (= automatisiert) herausgefunden werden, ob relevante Informationen verfügbar sind und wenn ja, können sie auch zwischen verschiedenen Formaten konvertiert werden. Unter Zuhilfenahme der Linking Open Data Community sind völlig neue Anwendungsfelder denkbar und eine inzwischen weit verbreitete Anwendung sind sogenannte Knowledge Graphen.

Diese beschreiben meist Instanzen (zB Stadt Wien) samt Verlinkungen von Attributen (zB Einwohnerzahl) und stellen diese übersichtlich in Infoboxen dar. Bekannt sind diese Knowledge Graphen vor allem von den Suchergebnissen bei Google, wo sie Informationen zu berühmten Persönlichkeiten, Sehenswürdigkeiten oder Unternehmen in einer Box neben den Suchergebnissen anzeigen. Oder auch in Wikipedia wo beispielsweise Informationen zu Städtenrechts am Beginn eines Artikels dargestellt sind – diese Information ist dann übrigens als Linked Data via DBpedia verfügbar.

Als Ausblick für OwnYourData: ein solcher Knowledge Graph könnte mit den selbst gesammelten Daten dargestellt werden – siehe Kasten daneben. Falls du das spannend findest oder auch eigene Ideen für die Auswertung eigener Daten mit semantischer Annotation hast, schreib uns ein Email oder hinterlasse einen Kommentar unter diesem Artikel!