SPARQL-Abfragedienst/Eine kleine Einführung in den Wikidata-Abfragedienst

This page is a translated version of the page Wikidata:SPARQL query service/A gentle introduction to the Wikidata Query Service and the translation is 100% complete.

Eine kleine Einführung in den Wikidata-Abfragedienst

Hast du dir jemals solche Fragen gestellt, wie:

  • Was sind die größten Städte der Welt, die eine weibliche Bürgermeisterin haben?
  • Welche Flughäfen sind im Umkreis von 100 Kilometer von Berlin?
  • Wer sind alle bekannten Nachfahren von Dschingis Kahn?

Wikidata kennt die Antworten!

Was ist Wikidata?

Wikidata ist ein ganzes Archiv an Wissen. Eine kleine Einführung in die Gedanken und Konzepte hinter Wikidata findest du auf der Wikidata-Einführung.

Wie stelle ich eine Frage?

Die Anfragesprache, die verwendet wird, um Wikidata Fragen zu stellen, heißt „SPARQL“. Keine Sorge, falls das zu technisch oder kompliziert ist für deinen Geschmack: Für diese kurze Einführung brauchst du nicht SPARQL zu lernen. Wir schauen uns stattdessen Beispielfragen an, und wie man diese bearbeiten kann.

Was ist eine Abfrage?

Eine Abfrage ist eine spezielle Form, eine Frage so zu formulieren, dass ein Computersystem sie verstehen und beantworten kann. Sofern du nicht einer künstlichen Intelligenz gegenübersitzt, ist es wichtig, zu wissen, wie man seine Fragen entsprechend formulieren kann.

Kann ich diese Daten frei verwenden?

Natürlich! Wikidata kann von jedem für alles verwendet werden, denn alle Informationen stehen in der Public Domain (CC0).

Was nun?

Wir werden mit einem einfachen Beispiel anfangen, um zu zeigen, wie Wikidata genutzt werden kann. Wenn wir uns später komplexere Beispiele anschauen, wirst du die Antwort auf diese Frage erhalten. Versprochen!

Wikidata für eine einfache Abfrage verwenden

Wir schauen uns ein einfaches Beispiel an, welches uns eine Liste aller bekannten Katzenarten der Welt anzeigt.

Liste aller Katzen weltweit

Besuche die Anfragenschnittstelle: https://query.wikidata.org Dann:

  1. Klicke auf „Beispiele“
  2. Wähle das Beispiel „Cats“ (bzw. „Katzen“) aus der Liste aus
  3. Klicke auf den Play-Knopf unter dem Eingabefeld, um die Anfrage auszuführen.

Wenn du möchtest, kannst du mit der Schaltfläche oben rechts die Sprache der Bedienelemente auf Deutsch stellen.  

So haben wir jetzt eine Liste aller bekannten und weniger bekannten Katzen der Welt erhalten - oder zumindest die, von denen Wikidata weiß. Das ist schon super, wenn man ein Katzenliebhaber ist. Aber was ist mit Hunden?

Und was ist mit Hunden?

Falls du die Hunde, statt Katzen, auflisten möchtest (oder was auch immer), gibt es zwei Möglichkeiten deine Abfrage abzuändern:

  1. Benutze den Query Helper ("Abfragehelfer") um das Item von "Katze" in "Zoo" zu änderen:  
  2. Die Abfrage manuell anpassen Jeder Wissensgegenstand hat in der Wikidata einen eindeutigen Zahlencode. Der Code „Q146“ steht beispielsweise für „Katze“. Um den richtigen Code für „Hund“ herauszufinden, kannst du ihn einfach in der Wikidata nachschlagen:
  1. Nutze die Autovervollständigung (wird am Ende der Seite erklärt)
  2. Starte mit dem Beispiel "Cats" bzw. "Katzen", entferne "Q146"
  3. Platziere den Cursor hinter "wd:"
  4. Schreibe "Haushund" hinter "wd:"
  5. Drücke Ctrl+Space
  6. Nutze die Aufwärts- und Abwärts-Tasten; wenn du die Entertaste drückst, wird "Haushund" durch "Q144" ersetzt.
    Achtung: Die Ergebnisse hängen von der eingestellten Sprache ab.
  1. Besuche https://www.wikidata.org
  2. Gib „Dog“ in das Suchfeld ein
  3. Klicke auf das erste erste Suchergebnis im Drop-down Menü
  4. Merke dir die Codenummer für „Dog“ auf der Wikidata-Seite, die erscheint (in diesem Fall „Q144“)

 

Jetzt kannst du einfach im SPARQL-Anfrageninterface den Code „Q146“ durch den Code „Q144“ ersetzen, und schon fragst du nach Hunden, statt nach Katzen!

Jetzt brauchst du die Anfrage nur noch auszuführen, und schon siehst du eine Liste mit allen bekannten (und weniger bekannten) Hundearten des Internets!

 

Die Anfrage unter der Lupe

Lass uns gemeinsam den Code untersuchen, um zu verstehen, wie wir ihn verallgemeinern können, um auch nach anderen Dingen zu suchen (zum Beispiel Hunde, Planeten, Länder, Musiktitel, …):

#Cats
SELECT ?item ?itemLabel
WHERE
{
	?item wdt:P31 wd:Q146 . 
	SERVICE wikibase:label { bd:serviceParam wikibase:language "en" }
}
  • SELECT Die Abfrage wählt etwas aus. Was genau Du auswählen und anzeigen willst, wird später beschrieben, aber vorerst geben wir nur die Platzhalter (oder Variablen) an. Hier nennen wir sie ?item and ?itemLabel. Du kannst erkennen, dass etwas eine Variable ist, wenn es mit einem Fragezeichen beginnt.
  • ?item Dies ist eine Liste der Einträge, die wir suchen. In diesem Fall ist es die Liste bekannter Katzen. Einträge auf Wikidata funktionieren in vielen verschiedenen Sprachen, fast 300 an der Zahl. Da wir nicht davon ausgehen, dass alles auf der Welt Englisch ist und alle anderen Sprachen nur Spezialfälle des Englischen sind, werden die Artikel auf eine Weise gespeichert, die sprachübergreifend funktioniert. Jedes Konzept bekommt eine Nummer. Q146 ist das Konzept einer Katze, Q64 ist Berlin in Deutschland, Q42 ist der Autor Douglas Adams und so weiter. Hinweis: ?item ist nur einen Variablen- oder Platzhaltername, den wir für diese Abfrage genutzt haben. Es könnte auch eine beliebige andere Benennung sein, etwa: ?animal.
  • ?itemLabel Menschen können Namen in einer menschlichen Sprache viel besser verarbeiten als Zahlen. Ein Label ist der Name eines Objekts in einer menschlichen Sprache, z. B. Englisch (oder Esperanto, oder Japanisch, oder Zulu...). Wir möchten, dass die Bezeichnungen in unserer Abfrage so angezeigt werden, dass Q1371145 als "Socks" angezeigt wird (die Katze, die Bill Clinton und seiner Familie gehört). Genaue Angaben zum Label gibt es im Benutzerhandbuch.
  • WHERE { Dies ist die WHERE-Klausel der Abfrage. Hier legen wir fest, was in die Platzhalter kommt. Eine WHERE-Klausel beginnt mit einer öffnenden geschweiften Klammer { und endet mit einer schließenden geschweiften Klammer }.
  • wdt:P31 Dies ist das Prädikat der Abfrage. Wenn Du mit dem Mauszeiger darüber fährst, siehst du, dass es für "instance of" steht.

 

  • wd:Q146 . Dies ist das Objekt. Wenn Du mit dem Mauszeiger darüber fährst, siehst du, dass es für "Katze" steht.

 

Manchmal ist das alles etwas viel am Anfang. Dann hilft es oft, die Frage erstmal in normaler Sprache zu formulieren:

„Zeig mir eine Liste von allen Wissensgegenständen und ihren Namen, die eine Instanz von „Katze“ sind. Dann zeig mir die Namen dazu auf Englisch.“

Mit dem Beispielcode haben wir uns eine Liste aller bekannten Katzenarten erzeugen lassen. Diese Anfrage kann man natürlich ganz einfach anpassen, um sich eine ähnliche Liste für Hunde anzuzeigen.

SPARQL walkthrough

Die folgenden Animationen zeigen, wie man Triplets in natürlicher Sprache schreibt und in SPARQL-Abfragen umwandelt.

Der Schlüssel dazu ist, Variablen mit ?, Elementen mit wd: und Eigenschaften mit wdt: voranzustellen, und dann mit der Tastenkombination Strg+Leertaste (oder Strg+Alt+Leertaste oder Alt+Eingabe) die Autovervollständigung zu aktivieren, die die beiden letztgenannten durch die tatsächlichen Wikidata-Bezeichner ersetzt.

 

 

Die Benutzeroberfläche

Die Anzeigesprache der Ergebnisse ändern

Mit der Anfrageschnittstelle von Wikidata kannst du nicht nur einfache oder komplizierte Anfragen stellen, du kannst sogar in jeder beliebigen Sprache suchen, und dir auch die Ergebnisse in jeder beliebigen Sprache anzeigen lassen!

  • Du kannst dazu den Standard-Sprachcodes von „en“ für Englisch in jede beliebige andere Sprache ändern, zum Beispiel „ja“ für Japanisch.
#Cats  
SELECT ?item ?itemLabel WHERE
{
     ?item wdt:P31 wd:Q146 .
     SERVICE wikibase:label { bd:serviceParam wikibase:language "ja" }
}

Die Sortierreihenfolge der Ergebnisse beeinflussen

Die Sortierreihenfolge der angezeigten Elemente kann ebenfalls einfach geändert werden. Es genügt, einfach auf die entsprechende Spalte zu klicken, um die Sortierreihenfolge anzupassen.

 

Die Sprache der Benutzeroberfläche ändern

Du kannst die Sprache der Benutzeroberfläche ändern, indem du einfach auf das Wort „Englisch“ klickst und die entsprechende Sprache auswählst.

 

Anschließend werden die Bedienelemente in der ausgewählten Sprache angezeigt.

 

Ich will Fotos sehen! Kann man auch nach Bildern suchen?

Bisher haben wir uns die Ergebnisse nur als Tabelle anzeigen lassen. Aber Bilder sind genauso möglich:

Klicke erneut auf die Schaltfläche „Beispiele“, und wähle diesmal den Eintrag „Even more cats, with pictures“. Du kannst das Beispiel anschließend einfach ausführen, und solltest nun im unteren Bildschirmbereich Katzenfotos angezeigt bekommen.#

 

So wird die Ausgabe in Form von Bildern anstelle einer Tabelle angefordert. Du kannst mit dem Menü „Display“ in der unteren rechten Ecke selber einstellen, wie du deine Ergebnisse sehen willst. Probiere doch mal, die Ausgabe zurück auf „Tabelle“ zu stellen, um dasselbe Ergebnis in einer Tabelle zu sehen!

Schauen wir uns einmal an, was in der Abfrage neu ist, verglichen mit der Abfrage im vorherigen Kapitel. In einfachem Englisch geschrieben, würde die Abfrage lauten: "Gib mir alle Artikel, die etwas mit Katzen zu tun haben. Gib mir mir auch das Bild für jeden Artikel. Und zusätzlich gib das Ergebnis als ein Raster von Bildern aus, nicht als Tabelle."

  • #defaultView:ImageGrid Was wie ein Kommentar aussieht, ist in Wirklichkeit eine Anweisung, das Abfrageergebnis als Bilder statt als Tabelle anzuzeigen.
  • ?x1 Das bedeutet, dass wir nach jedem Prädikat abfragen, nicht nur nach "ist eine Instanz von". Denk an Prädikate wie "stellt dar" (P180) oder "ist benannt nach" (P138). Wir verwenden ?x1 nirgendwo sonst in der Abfrage, d. h. der Platzhalter steht für "Es ist mir egal, was das Prädikat ist, gib mir alle Ergebnisse, die irgendwie eine Katze als Subjekt haben"
  • OPTIONAL Innerhalb der geschweiften Klammern siehst du eine weitere Anweisung, die dem Ergebnis optionale Daten hinzufügt. Der Platzhalter ?item wird wiederverwendet und mit dem Prädikat P18 ("hat ein Bild") und einem neuen Platzhalter ?pic gekoppelt. Die Umhüllung der Anweisung mit OPTIONAL bedeutet, dass Elemente nicht unbedingt ein P18-Prädikat haben müssen, um in der Liste aufzutauchen, und dass der Platzhalter ?pic leer sein kann.

Versuche, die Abfrage zu ändern:

  • Suche nach Hunden anstelle von Katzen. Tipp: Ändere den Objektteil der ersten Anweisung in WHERE.
  • Zeige nur Elemente an, die Katzen "abbilden" (Sie erhalten Bilder). Tipp: Ersetze ?x1 durch etwas anderes.
  • Entferne das OPTIONAL

Es gibt noch andere Möglichkeiten, die Daten anzuzeigen, aber nicht alle davon sind immer anwendbar, weshalb einige im Menü ausgegraut sind. "Image map" ist nur wählbar, wenn die Ergebnisdaten tatsächlich Bild-URLs enthalten. In einem der folgenden Kapitel erfährst du, wie du Elemente als Punkte auf einer Karte darstellen kannst.

Wie kann ich eine Anfrage mit anderen teilen?

Wenn du deine Anfrage und das Ergebnjs an jemanden weiterleiten möchtest, zum Beispiel über E-Mail oder ein soziales Netzwerk, kannst du ganz einfach einen kurzen Link für deine Anfrage erzeugen:

  • Schließe zunächst deine Anfrage ab, und mache alle gewünschten Änderungen
  • Dann verwende das Symbol für „Link“:
 
  • Die angezeigte URL kannst du einfach kopieren, sie führt den Nutzer auf genau deine Anfrage.

Wie kann ich mir Orte auf einer Karte anzeigen lassen?

Natürlich gibt es noch weitere Wege, sich die Ergebnisse einer Anfrage anzeigen zu lassen. Wenn du zum Beispiel nach Geokoordinaten suchst, kannst du dir die Antwort auf deine Frage ganz einfach auf einer Karte anzeigen lassen:

Sieh dir dieses Beispiel von Leuchttürme in Norwegen an. Wenn du die Abfrage ausführst, siehst du rote Punkte, die den Standort von Leuchttürmen an der norwegischen Küste markieren.


Verwenden des Explorer-Dialogs

Sobald die Ergebnisse einer Abfrage geladen sind, siehst du ein Lupensymbol auf jedem Ergebnis. Wenn du auf dieses Symbol klickst, wird der Explorer-Dialog geöffnet.

 

Im Explorer-Dialogfeld wird standardmäßig ein einzelner Knoten angezeigt, der dieses bestimmte Ergebnis darstellt. Unter dem Knoten siehst du ein Umschaltfeld, das standardmäßig auf 'Ausgehend' eingestellt ist. Das bedeutet, dass ein Klick auf einen beliebigen Knoten alle Eigenschaften dieses Knotens aus der gesamten Wikidata-Wissensbasis aufklappen wird. Wenn Du dies auf 'Eingehend' umschaltest, kannst du alle eingehenden Links oder Eigenschaften sehen, die auf den Knoten zeigen. Dies ist eine Möglichkeit, alle Beziehungen zwischen den verschiedenen Elementen und ihren Eigenschaften mit Hilfe von Wikidata zu erkunden.

 

Du kannst mehrere Explorer-Dialoge gleichzeitig öffnen, so dass du die Ergebnisse mehrerer Abfragen auf einmal vergleichen kannst. Der Explorer-Dialog hat auch eine Symbolleiste in der rechten unteren Ecke, mit der du zwischen verschiedenen Ansichten wie Graph, Baum, Karte, Tabelle usw. umschalten kannst.

Und das ist noch nicht alles!

Es gibt noch andere Visualisierungen zu entdecken:

Schau dir die Query-Beispiele an und probiere sie selbst aus!

Auto-Vervollständigen

Im Editor kannst du die Auto-Vervollständigung benutzen: Dazu drücke einfach die Tasten Strg+Leerzeichen auf deiner Tastatur irgendwo in deiner Anfrage, und du bekommst Vorschläge, welcher Code passend sein könnte. Den gewünschten Vorschlag kannst du mit den Pfeiltasten auswählen und mit Enter direkt einfügen.

Anstatt zum Beispiel SERVICE wikibase:label { bd:serviceParam wikibase:language "en". } zu schreiben, kannst du einfach SERV eintippen und dann Strg+Leertaste drücken, und der erste Vorschlag wird die komplette Label-Service-Beschwörungsformel sein, bereit zur Verwendung! Drücke einfach Eingabe, um ihn zu übernehmen. (Die Formatierung wird ein wenig anders sein, aber das macht nichts.)

Und die Autovervollständigung kann auch für dich suchen. Wenn du eines der Wikidata-Präfixe eingibst, wie wd: oder wdt:, und danach einfach Text schreibst, sucht Strg+Leertaste nach diesem Text auf Wikidata und schlägt Ergebnisse vor. wd: sucht nach Elementen, wdt: nach Eigenschaften. Anstatt zum Beispiel die Einträge für Johann Sebastian Bach (Q1339) und father (P22) nachzuschlagen, kannst du einfach wd:Bach und wdt:fath eingeben und dann den richtigen Eintrag aus der Autovervollständigung auswählen. (Das funktioniert sogar mit Leerzeichen im Text, z. B. wd:Johann Sebastian Bach.)

Hinweis: Für ChromeOS- und MacOS-Benutzer: Die Tastenkombinationen Strg+Alt+Leertaste und Alt+Eingabe sollten ebenfalls funktionieren.

Wie geht es weiter?

Jetzt hast du das Handwerkszeug gelernt, um deinen Weg durch die Anfrageschnittstelle selbst zu finden. Einfach Sachen auszuprobieren, zum Beispiel Werte in der Anfrage zu ändern und zu sehen was passiert, hilft meistens am besten, zu lernen, wie du mit Wikidata Antworten auf deine Fragen findest.