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.

Weitere Informationen

Der Open Data Support der Europäischen Kommission hat ein Trainingsmodul als Präsentation (pdf) zu RDF und SPARQL veröffentlicht. Wenn Sie möchten, schauen Sie auch in diese Einführung, um Ihr Wissen zu rekapitulieren oder das, was Sie hier lesen zu begleiten und zu vertiefen.

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.

Die eingangs erwähnte Forschungsfrage lautet:

Welche offenen Daten gibt es, die dazu beitragen, den Bewässerungsbedarf von Bäumen in einer bestimmten Region zu ermitteln?

Um diese Frage zu beantworten, werden verschiedene Aspekte aus Datenportalen erfragt werden müssen.

  • Wie viele Datensätze beinhalten das Wort „Baumkataster“ im Titel?

  • Wer stellt die meisten Daten bereit?

  • Wie unterscheiden sich die Bereitsteller in ihrer Anzahl an Formaten?

Story

Diese Fragen sind der Ausgangspunkt für eine tiefere Untersuchung der verfügbaren offenen Daten. An der Seite von Dr. Weber werden wir die Datensätze nach Bundesländern und Bereitstellern filtern, um ein besseres Verständnis darüber zu gewinnen, welche Regionen besonders viele und vielfältige Baumkataster-Daten zur Verfügung stellen. Recherchieren Sie mit ihm zusammen, wie die entsprechende Datengrundlage ist.

5.1.1. Endpunkt definieren#

In der Regel muss zuerst 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. Die Seite für SPARQL-Queries finden wir auf der Webseite https://data.europa.eu/data/sparql.

Wenn Sie unserer Empfehlung folgen und die SPARQL-Abfragen über das Portal von data.europa.eu eingeben, brauchen Sie die folgende Übung, die Angabe des Endpunktes, nicht zu absolvieren.


Der folgende Befehl, der Teil vom SPARQL-Python-Paket ist, erlaubt uns, alle künftigen Abfragen mit dem europäischen Datenportal als unserem Endpunkt zu verknüpfen.

Er 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

Wir haben eine erste SPARQL-Abfrage erstellt. Diese enthält nur eine Spalte, die uns Datenbereitsteller ausgibt und daher nur wenig aussagekräftig ist. Außerdem dürfen wir nicht aus dem Blick verlieren, dass wir nur jene Metadaten abfragen (können), die im Portal data.europa.eu überhaupt verzeichnet sind.

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. Schauen Sie sich dazu den Code und die Erklärung an.

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.

Was Sie mitnehmen sollten

  • Das Vokabular „dcat-ap.de“ bietet spezifische Eigenschaften wie „contributorID“, um Datenbereitsteller eindeutig zu identifizieren.

  • Die Erweiterung „politicalGeocoding“ ermöglicht die Einbindung geografischer Identifikatoren wie „stateKey“. Diese sind für die Suche aber nur sinnvoll, wenn sie in den Metadaten von Datensätzen enthalten sind.

5.1.4. Zusammenfassung#

In diesem Abschnitt haben wir einen ersten 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 ausgeführt haben.

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

Literatur

[IK24]

Föderale IT-Kooperation. Schnittstellen. 2024. Accessed: 2025-04-08. URL: https://www.govdata.de/sparql-assistent/.