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.

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?

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 zu 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#

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.

Literatur

[IK24]

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