5.1. Grundlagen#

In diesem Abschnitt widmen wir uns einer praktischen SPARQL-Übung, die die Grundlagen dieser Abfragesprache vermittelt und aufzeigt, wie Datensätze mit SPARQL abgefragt werden können. Thematisch nähern wir uns damit bereits dem Untersuchungsauftrag des Experten Amir Weber an, der in der Einleitung vorgestellt wurde. Der Auftrag besteht darin, zu prüfen, welche offen verfügbaren Daten existieren, die dazu beitragen können, den Baumbestand in einer bestimmten Region zu ermitteln.

Wir arbeiten mit Jupyter Notebook - einem Dateiformat, welches ermöglicht, Erklärtext und Code in verschiedenen Programmiersprachen gleichberechtigt nebeneinander darzustellen. Dadurch wird die visuelle Darstellung von echtem Code für Abfragen und deren Ergebnisse ermöglicht. Zusätzlich können Erläuterungen zu den aufgerufenen Befehlen sowie weitere Kommentare dargestellt werden.

Am besten lässt sich das Gelernte direkt ausprobieren. Für eigene SPARQL-Abfragen empfehlen wir den interaktiven SPARQL-Editor von data.europa.eu. Dieser bietet eine intuitive Benutzeroberfläche, mit der sich SPARQL-Queries unkompliziert testen und ausführen lassen – ideal, um erste praktische Erfahrungen zu sammeln oder die im Jupyter Notebook gezeigten Beispiele nachzuvollziehen.

5.1.1. Endpunkt definieren#

Zuerst muss ein sogenannter endpoint bzw. Endpunkt definiert werden. Der Endpunkt ist die maschinenlesbare Schnittstelle zum Repositorium, in dem jene Metadaten gespeichert sind, die wir abfragen wollen.

Bei der Verwendung eines Online-Tools zur Generierung von SPARQL-Abfragen ist die Definition eines Endpunkts häufig nicht nötig, da dieser schon automatisch definiert ist.

Der SPARQl Endpunkt des deutschen Open Data Portals GovData ist beispielsweise “https://www.govdata.de/sparql” [IT-Kooperation, 2024].

Beispielhaft wollen wir nun das europäische Datenportal durchsuchen, welches wir auf der Webseite https://data.europa.eu/de finden. Dazu verwenden wir einen “Magic”, d. h. einen Befehl, der Teil vom SPARQL-Python-Paket ist, der es uns erlaubt, alle künftigen Abfragen mit dem europäischen Datenportal als unserem Endpunkt zu verknüpfen.

Dieser lautet %endpoint https://data.europa.eu/sparql und wird der SPARQL-Abfrage vorangestellt.

%endpoint https://data.europa.eu/sparql
Endpoint set to: https://data.europa.eu/sparql

5.1.2. SPAQRL-Syntax#

Widmen wir uns nun der SPARQL-Syntax, indem wir uns die Struktur unserer ersten Abfrage ansehen.

Zur Erinnerung: Der im Kapitel DCAT-AP erklärte Metatenstandard DCAT-AP ist zentral für die Untersuchung der Metadateneigenschaften und definiert die Struktur und den Inhalt der Metadatenfelder (DCAT-AP Handbuch).

Code

Hide code cell content
SELECT ?contributorid
WHERE {
    ?uri <http://dcat-ap.de/def/dcatde/contributorID> ?contributorid .
}

Output

Erklärung des Ergebnisses

Nun haben wir das europäische Datenportal data.europa.eu als Endpunkt festgelegt und können mit der Erstellung von SPARQL-Abfragen beginnen. Allerdings fragen wir nur jene Metadaten ab, welche zu den Datensätzen im Portal gespeichert sind. Siehe hierzu Kapitel … .

5.1.3. Erweiterung der Abfrage#

Unsere erste Abfrage ist nicht besonders präzise oder aussagekräftig. Daher wollen wir nun weitere Befehle hinzufügen, um Ergebnisse zu erhalten, mit denen wir weiterarbeiten können.

Code

Hide code cell content
PREFIX dct: <http://purl.org/dc/terms/>
PREFIX dcatde: <http://dcat-ap.de/def/dcatde/>
PREFIX pg: <https://www.dcat-ap.de/def/politicalGeocoding/>

SELECT ?uri ?title ?contributorid ?stateKey
WHERE {
    ?uri dct:title ?title .
    ?uri dcatde:contributorID ?contributorid .
  OPTIONAL {?uri pg:stateKey ?stateKey} .
}

Output

Hide code cell outputs
uri title contributorid stateKey
http://data.europa.eu/88u/dataset/b7cad163-8d99-4d97-b781-e4f5a11078d3 Digitale Topographische Karte 1 : 10 000 - 3952-NO Friedland - Groß Muckrow http://dcat-ap.de/def/contributors/openDataBrandenburg
http://data.europa.eu/88u/dataset/b7cad163-8d99-4d97-b781-e4f5a11078d3 Léarscáil thopagrafach dhigiteach 1 : 10 000 - 3952-NO Friedland - Groß Muckrow http://dcat-ap.de/def/contributors/openDataBrandenburg
http://data.europa.eu/88u/dataset/b7cad163-8d99-4d97-b781-e4f5a11078d3 Ψηφιακός τοπογραφικός χάρτης 1: 10000 — 3952-NO Friedland — Groß Muckrow http://dcat-ap.de/def/contributors/openDataBrandenburg
http://data.europa.eu/88u/dataset/b7cad163-8d99-4d97-b781-e4f5a11078d3 Digitalna topografska karta 1.: 10 000 - 3952-NO Friedland - Groß Muckrow http://dcat-ap.de/def/contributors/openDataBrandenburg
http://data.europa.eu/88u/dataset/b7cad163-8d99-4d97-b781-e4f5a11078d3 Digitālā topogrāfiskā karte Nr. 1 : 10 000 - 3952-NO Friedland - Groß Muckrow http://dcat-ap.de/def/contributors/openDataBrandenburg
http://data.europa.eu/88u/dataset/b7cad163-8d99-4d97-b781-e4f5a11078d3 Digitaalinen topografinen kartta 1 : 10 000 - 3952-NO Friedland - Groß Muckrow http://dcat-ap.de/def/contributors/openDataBrandenburg
http://data.europa.eu/88u/dataset/b7cad163-8d99-4d97-b781-e4f5a11078d3 Mapa topográfico digital 1 : 10 000 - 3952-NO Frísia - Groß Muckrow http://dcat-ap.de/def/contributors/openDataBrandenburg
http://data.europa.eu/88u/dataset/b7cad163-8d99-4d97-b781-e4f5a11078d3 Carta topografica digitale 1 : 10 000 - 3952-NO Friedland - Groß Muckrow http://dcat-ap.de/def/contributors/openDataBrandenburg
http://data.europa.eu/88u/dataset/b7cad163-8d99-4d97-b781-e4f5a11078d3 Digitálna topografická mapa 1 : 10 000 - 3952-NO Friedland - Groß Muckrow http://dcat-ap.de/def/contributors/openDataBrandenburg
http://data.europa.eu/88u/dataset/b7cad163-8d99-4d97-b781-e4f5a11078d3 Digitale topografische kaart 1 : 10 000 - 3952-NO Friedland - Groß Muckrow http://dcat-ap.de/def/contributors/openDataBrandenburg
http://data.europa.eu/88u/dataset/b7cad163-8d99-4d97-b781-e4f5a11078d3 Harta topografică digitală 1 : 10 000 - 3952-NO Friedland - Groß Muckrow http://dcat-ap.de/def/contributors/openDataBrandenburg
http://data.europa.eu/88u/dataset/b7cad163-8d99-4d97-b781-e4f5a11078d3 Цифрова топографска карта 1: 10000—3952-NO Friedland — Groß Muckrow http://dcat-ap.de/def/contributors/openDataBrandenburg
http://data.europa.eu/88u/dataset/b7cad163-8d99-4d97-b781-e4f5a11078d3 Цифрова топографічна карта 1: 10000 — 3952-NO Фрідленд — Groß Muckrow http://dcat-ap.de/def/contributors/openDataBrandenburg
http://data.europa.eu/88u/dataset/b7cad163-8d99-4d97-b781-e4f5a11078d3 Digital topografisk karta 1 : 10 000 – 3952-NO Friedland – Groß Muckrow http://dcat-ap.de/def/contributors/openDataBrandenburg
http://data.europa.eu/88u/dataset/b7cad163-8d99-4d97-b781-e4f5a11078d3 Digitalt topografisk kort 1 : 10 000 - 3952-NO Friedland - Groß Muckrow http://dcat-ap.de/def/contributors/openDataBrandenburg
http://data.europa.eu/88u/dataset/b7cad163-8d99-4d97-b781-e4f5a11078d3 Digitalna topografska karta 1 : Besedilo pesmi Groß Muckrow - 10 000 - 3952-NO Friedland http://dcat-ap.de/def/contributors/openDataBrandenburg
http://data.europa.eu/88u/dataset/b7cad163-8d99-4d97-b781-e4f5a11078d3 Carte topographique numérique 1 : 10 000 - 3952-NO Friedland - Grand Muckrow http://dcat-ap.de/def/contributors/openDataBrandenburg
http://data.europa.eu/88u/dataset/b7cad163-8d99-4d97-b781-e4f5a11078d3 Mappa topografika diġitali 1 : 10 000 - 3952-NO Friedland - Groß Muckrow http://dcat-ap.de/def/contributors/openDataBrandenburg
http://data.europa.eu/88u/dataset/b7cad163-8d99-4d97-b781-e4f5a11078d3 Digitální topografická mapa 1 : 10 000 - 3952-NO Friedland - Velká Muckrow http://dcat-ap.de/def/contributors/openDataBrandenburg
http://data.europa.eu/88u/dataset/b7cad163-8d99-4d97-b781-e4f5a11078d3 Digitaalne topograafiline kaart 1 : 10 000 - 3952-NO Friedland - Groß Muckrow http://dcat-ap.de/def/contributors/openDataBrandenburg
Total: 100000, Shown: 20

Erklärung des Ergebnisses

Wie befürchtet, ist die Spalte für das Bundesland(-Kürzel) (stateKey) leer. Das liegt daran, dass stateKey nicht definiert worden ist, wodurch diese Felder leer bleiben. Möglicherweise müssen diese Felder nicht verpflichtend ausgefüllt werden. Dies ist ein klares Beispiel für lückenhaftes Metadatenmanagement. In der Praxis kommt es oft zu Fällen, in denen SPARQL-Abfragen nicht erfolgreich sind, weil die Metadatenbeschreibung unvollständig ist. Mit dem OPTIONAL-Befehl kann man dieses Problem teilweise umgehen.

Darüber hinaus konnten wir durch das fehlende stateKey-Element die offenen Daten nicht den einzelnen Bundesländern zuordnen.

Wir erhalten stattdessen eine Liste, die uns die URI des europäischen Datenportals, den Titel und den Bereitsteller der Daten angibt. Als Bereitsteller lässt sich openDataBrandenburg ermitteln. Wie sich aus dem Titel entnehmen lässt, handelt es sich bei dem ausgegebenen Datensatz um eine digitale topografische Karte im Maßstab 1 : 10.000 von Groß Muckrow, einem Ortsteil der Stadt Friedland in Brandenburg. Dieser Datensatz wird auf verschiedenen Sprachen ausgegeben.

Vielleicht ist Ihnen aufgefallen, dass uns nur 20 von 100.000 Ergebnissen angezeigt werden und wir uns die weiteren Daten nicht ansehen können. Das liegt daran, dass SPARQL keine Paginierungsfunktion, also das Durchblättern von Ergebnissen wie auf einer Weboberfläche, unterstützt. Stattdessen muss die Paginierung manuell durch die Verwendung von Befehlen wie LIMIT und OFFSET in der Abfrage implementiert werden. Um die aktuelle Ausgabe vollständig zu sehen, müsste man diese Befehle zusätzlich einfügen.

5.1.4. Zusammenfassung#

In diesem Abschnitt haben wir einen Einblick in die Funktionsweise der Abfragesprache SPAQRL vermittelt, indem wir einen Endpunkt gesetzt und erste Abfragen mit den Befehlen SELECT und WHERE sowie PREFIX und OPTIONAL getätigt haben.

Um unsere Abfrage zu verfeinern, benötigen wir weitere Befehle, die im nächsten Abschnitt vermittelt werden.