scieee AI-readable full text Open interactive document viewer

From Zero to SPARQL. Eine Einführung in die Abfrage von Wissensgraphen (Schwerpunkt Wikidata)

Winkler, Alexander

Abstract

Folien zum digiS-Workshop zu SPARQL.

Full text

From Zero to SPARQL DOI: 10.5281/zenodo.17368769 Alexander Winkler (digiS) ✉ [email protected] 0000-0002-9145-7238 @[email protected] 4. November 2025 Eine Einführung in die Abfrage von Wissensgraphen (Schwerpunkt Wikidata) Was uns erwartet ● Was ist SPARQL? ● Was heißt RDF? Was ist ein Knowledge Graph? ● TTL-Serialisierung von RDF ● SPARQL-Syntax ● Wikidata Query Service (WDQS) ● Wikidata-Datenmodell ● SPARQL-Ausdrücke und -Funktionen ● Weitere SPARQL-Endpunkte ● Qlever als oft performantere Alternative zu WDQS/Blazegraph ● Föderierte Queries Organisatorisches und Methodisches ● zahlreiche Praxisbeispiele im WDQS (https://query.wikidata.org/), alternativ auch im Qlever (https://qlever.dev/wikidata) ● Fragen jederzeit im Chat oder mündlich ● es werden keine Vorkenntnisse vorausgesetzt ● inhaltlicher Schwerpunkt ist der Kulturerbebereich und Wikidata Was ist SPARQL? Unknown author, 1168 Graeser Karl b, marked as public domain, more details on Wikimedia Commons Was ist SPARQL? ● SPARQL Protocol And RDF Query Language (rekursives Akronym) ● seit 2008 W3C-Recommendation, seit 2013 in Version 1.1 (Version 1.2 in Arbeit) ● Analog zu SQL für relationale Datenbanken wird SPARQL für die Abfrage von RDF-Graphen verwendet ● deklarative Abfragesprache: beschreibt gewünschte Ergebnismenge, nicht den Prozess, um diese zu ermitteln Unknown author, 1168 Graeser Karl b, marked as public domain, more details on Wikimedia Commons Was ist ein (Wissens-)Graph? CmplstofB, WTFPL, via Wikimedia Commons Was ist ein (Wissens-)Graph? RDF – Resource Description Framework Datenmodellierung in Tripeln, bestehend aus Subjekt, Prädikat und Objekt. CmplstofB, WTFPL, via Wikimedia Commons Was ist ein (Wissens-)Graph? CmplstofB, WTFPL, via Wikimedia Commons, Christian Wolf (www.c-w-design.de), Berliner Fernsehturm, Sicht vom Neptunbrunnen - Berlin Mitte, CC BY-SA 3.0 DE, N3MO (Bär von Jwnabd), Wappen Berlin Nur Schild, marked as public domain, more details on Wikimedia Commons steht in Was ist ein (Wissens-)Graph? Christian Wolf (www.c-w-design.de), Berliner Fernsehturm, Sicht vom Neptunbrunnen - Berlin Mitte, CC BY-SA 3.0 DE, N3MO (Bär von Jwnabd), Wappen Berlin Nur Schild, marked as public domain, more details on Wikimedia Commons, User:Mmxx, Flag of Germany (3-2), marked as public domain, more details on Wikimedia Commons steht in ist Hauptstadt von RDF-Tripelstruktur ist auch Basis für Wikidata Subjekt Subjekt Prädikat Objekt Was ist Wikidata? ● ein Schwesterprojekt der Wikipedia aus der Wikimedia-Familie ● ein offener Wissensgraph ● Datenbank für maschinenlesbare, strukturierte Daten ● communitygetragen ● frei nutzbar ● frei editierbar ● sprachagnostisch/multilingual ● ein Normdatenhub TTL (Turtle) – eine Serialisierungsmöglichkeit für RDF <http://www.wikidata.org/entity/Q151356> <http://purl.org/dc/terms/Location> <https://d-nb.info/gnd/4005728-8> . Subjekt Prädikat Objekt http://www.wikidata.org /entity/Q151356 http://purl.org/dc/terms/ Location https://d-nb.info/gnd/40 05728-8 TTL (Turtle) – eine Serialisierungsmöglichkeit für RDF <http://www.wikidata.org/entity/Q151356> <http://purl.org/dc/terms/Location> <https://d-nb.info/gnd/4005728-8> . Oder übersichtlicher (mit Namespaces): @prefix wd: <http://www.wikidata.org/entity/> . @prefix dc: <http://purl.org/dc/terms/>. @prefix gnd: <https://d-nb.info/gnd/>. wd:Q151356 dc:Location gnd:4005728-8 . Subjekt Prädikat Objekt http://www.wikidata.org /entity/Q151356 http://purl.org/dc/terms/ Location https://d-nb.info/gnd/40 05728-8 Auszug aus der TTL zu Q151356 (Fernsehturm Berlin) @prefix wd: <http://www.wikidata.org/entity/> . @prefix wdt: <http://www.wikidata.org/prop/direct/> . wd:Q151356 wdt:P31 wd:Q11166728 ; wdt:P571 "1968-10-03T00:00:00Z"^^xsd:dateTime ; wdt:P131 wd:Q64 . Exkurs: Wo finde ich die TTL-Repräsentation? Im Seitenquelltext nach “.ttl” suchen und URL verwenden. URLs folgen diesem Muster: https://www.wikidata.org/wiki/Speci al:EntityData/Qxxx.ttl Exkurs: Wo finde ich die TTL-Repräsentation? Kleines Helferscript installieren. 1. Voraussetzung: Man muss in seinen Wikidata-Account eingeloggt sein 2. https://www.wikidata.org/w/index.php? title=User:<USERNAME>/common.js &action=edit aufrufen (<USERNAME> durch eigenen Usernamen ersetzen) 3. folgende Zeile einfügen: importScript( 'User:Awinkler3/scripts/ShowTTL.js' ); 4. “Änderungen veröffentlichen” klicken Auszug aus der TTL zu Q151356 @prefix wd: <http://www.wikidata.org/entity/> . @prefix wdt: <http://www.wikidata.org/prop/direct/> . wd:Q151356 wdt:P31 wd:Q11166728 ; wdt:P571 "1968-10-03T00:00:00Z"^^xsd:dateTime ; wdt:P131 wd:Q64 . Sätze mit demselben Subjekt können durch Semikola verbunden werden. Einzelsätze mit Punkt am Ende sind auch möglich. Semikola-Kurzschreibweise bei selbem Subjekt wd:Q151356 wdt:P31 wd:Q11166728 ; wdt:P571 "1968-10-03T00:00:00Z"^^xsd:dateTime ; wdt:P131 wd:Q64 . Exakt identisch: wd:Q151356 wdt:P31 wd:Q11166728 . wd:Q151356 wdt:P571 "1968-10-03T00:00:00Z"^^xsd:dateTime . wd:Q151356 wdt:P131 wd:Q64 . Komma-Kurzschreibweise bei selbem Subjekt und Prädikat wd:Q151356 wdt:P31 wd:Q11166728, wd:Q1440300, wd:Q1081138, wd:Q570116 . Exakt identisch: wd:Q151356 wdt:P31 wd:Q11166728 . wd:Q151356 wdt:P31 wd:Q1440300 . wd:Q151356 wdt:P31 wd:Q1081138 . wd:Q151356 wdt:P31 wd:Q570116 . … und SPARQL? Dukesy68, Man-scratching-head, CC BY-SA 4.0 SPARQL ist “TTL mit x” PREFIX wd: <http://www.wikidata.org/entity/> . PREFIX wdt: <http://www.wikidata.org/prop/direct/> . wd:Q151356?x wdt:P31 wd:Q11166728 ; wdt:P571 "1968-10-03T00:00:00Z"^^xsd:dateTime ; wdt:P131 wd:Q64 . SPARQL ist “TTL mit x” PREFIX wd: <http://www.wikidata.org/entity/> . PREFIX wdt: <http://www.wikidata.org/prop/direct/> . wd:Q151356?x wdt:P31 wd:Q11166728 ; wdt:P571 "1968-10-03T00:00:00Z"^^xsd:dateTime ; wdt:P131 wd:Q64 . Gibt alle ?x im Graphen zurück, für die die Aussagen zutreffen (Abfrage). SPARQL ist “TTL mit x” PREFIX wd: <http://www.wikidata.org/entity/> . PREFIX wdt: <http://www.wikidata.org/prop/direct/> . ?x wdt:P31 wd:Q11166728 ; wdt:P571 ?y ; wdt:P131 ?z . Gibt alle Fernsehtürme (?x) im Graphen zurück, die irgendwann gebaut wurden (?y) und irgendwo (?z) stehen. SPARQL-Abfragen Daten (~ RDF-Triples) werden in einem sog. ‘Triplestore’ (Datenbank für RDF-Triples) gespeichert und mit einer Query Engine abfragbar gemacht: ● über einen SPARQL-Endpunkt (Schnittstelle für programmatischen Zugriff) ● über ein User-Interface, z.B. der WDQS oder Qlever. SPARQL-Syntax SELECT ?x ?y ?z WHERE { [[ABFRAGE]] } SPARQL-Syntax SELECT ?x ?y ?z WHERE { [[ABFRAGE]] } Variablen, die zurückgegeben werden sollen SPARQL-Syntax SELECT ?x ?y ?z WHERE { [[ABFRAGE]] } Variablen, die zurückgegeben werden sollen Variablennamen können frei gewählt werden und beginnen mit ‘?’ oder ‘$’ SPARQL-Syntax SELECT ?x ?y ?z WHERE { [[ABFRAGE]] }Abfrage (“Turtle mit ?x ?y ?z”) SPARQL-Syntax PREFIX wd: <http://www.wikidata.org/entity/> . PREFIX wdt: <http://www.wikidata.org/prop/direct/> . SELECT ?x ?y ?z WHERE { ?x wdt:P31 wd:Q11166728 ; wdt:P571 ?y ; wdt:P131 ?z . } Wikidata Query Service (WDQS) – Label leicht gemacht in WDQS können labels mit dem Variablensuffix “Label” und dem Aufruf “SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],mul,en".” (auch hier: Autocomplete!) ausgegeben werden. Nochmals VÖBB-Bibliotheken https://w.wiki/FumZ Hands-on! ● WDQS öffnen (https://query.wikidata.org/) ● Query eingeben (mit Autocompletion Strg + Leertaste) ● Query starten Kurt Schwarz, Bauarbeiter, Bild 2: Mann bei Schweißarbeiten. SW-Foto, 1960er Jahre (CC BY-NC-SA), https://nat.museum-digital.de/object/1144856 Übungen Wichtig: ● Abfragesyntax: SELECT ?x ?y ?z WHERE { ?a ?b ?c . } ● Namespaces angeben (‘wd:’ für Q-IDs = Items, ‘wdt:’ für P-IDs = Properties) ● Autocomplete verwenden (Strg + Leertaste) NPS Graphics, converted by User:ZyMOS, Pictograms-nps-land-exercise-fitness-2, marked as public domain, more details on Wikimedia Commons Übungen ● Objekte (?x) in der Sammlung (P195) der Gemäldegalerie Berlin (Q165631), https://w.wiki/FskJ ● Gemälde (Objekte ?x der Klasse – P31 – Gemälde – Q3305213) in der Gemäldegalerie, https://w.wiki/FskS ● Gemälde ?x mit Jan Vermeer (Q41264) als Urheber (P170) https://w.wiki/FpJ7 ● Sammlungen mit Gemälden Jan Vermeers (https://w.wiki/FpJ8) ● Online-Kataloge von Museen in Berlin (https://w.wiki/FpTy)* * eigentlich sind es viel mehr … dazu später! NPS Graphics, converted by User:ZyMOS, Pictograms-nps-land-exercise-fitness-2, marked as public domain, more details on Wikimedia Commons Das jeweilige Datenmodell kennenlernen ● RDF-Daten haben in der Theorie vollkommen freies, in der Praxis ein immerhin sehr flexibles Schema ● Beispiel Wikidata: ○ Items können beliebig angelegt werden (https://www.wikidata.org/wiki/Special:NewItem) ○ Properties werden vorgeschlagen und dann nach Konsens angelegt (https://www.wikidata.org/wiki/Wikidata:Property_proposal) ○ die entstehende Ontologie (~ System des Aussagbaren) ist organisch gewachsen, nicht streng logisch konstruiert. Es kann mehrere Möglichkeiten geben, einen Sachverhalt auszudrücken. ○ einige Wikidata-Projekte bemühen sich um Vereinheitlichung, vgl. Sum of all paintings ● Für gute Abfragen muss man das jeweilige Datenmodell möglichst gut kennen(lernen) Das jeweilige Datenmodell kennenlernen ● Dokumentation lesen, wenn vorhanden (z.B. https://www.wikidata.org/wiki/Wikidata:Data_model) ● RDF-Datei (am einfachsten in der ttl-Serialisierung, z.B. https://www.wikidata.org/wiki/Special:EntityData/Q151356.ttl) lesen ● SPARQL-Probebohrungen, z.B.: ○ “SELECT * WHERE { ?s ?p ?o . } LIMIT 10” → alle Triples, auf 10 Treffer beschränkt ○ “SELECT * WHERE { bsp:123 ?p ?o . }” → alle Aussagen mit ‘bsp:123’ als Subjekt ○ “DESCRIBE bsp:123” → alle Aussagen, in denen ‘bsp:123’ irgendwo eine Rolle spielt, bsp. Büste der Nofretete (https://w.wiki/Fsky) Epìdosis, Rdf mapping-vector - statement-centered (partial), CC BY-SA 4.0 Meist genügt auch ein Blick auf ein WD-Item Meist genügt auch ein Blick auf ein WD-Item Bilder sind “instance of” (P31) “painting” (Q3305213) Ergebnisvisualisierung im WDQS Graphen bei numerischen Werten https://w.wiki/FtFN Graphen bei numerischen Werten https://w.wiki/FtFN Karten bei Angabe von Geokoordinaten https://w.wiki/FtFU https://w.wiki/FkHF Timeline bei Datumsangaben https://w.wiki/FunV Timeline bei Datumsangaben https://w.wiki/FunV defaultView im Query kodieren Mehr SPARQL Neujahrsgrüße mit Hund, Kulturstiftung Sachsen-Anhalt (CC BY-NC-SA), https://nat.museum-digital.de/object/1247751 Übungen ● Alle Objekte (?x) in den Sammlungen (P195) der Staatlichen Museen zu Berlin (Q700216). ● Alle Museen/Bibliotheken/Archive in Berlin/Deutschland (dieser Query läuft in WDQS schnell ins Timeout, besser Qlever benutzen, https://qlever.dev/wikidata/Tk112V) NPS Graphics, converted by User:ZyMOS, Pictograms-nps-land-exercise-fitness-2, marked as public domain, more details on Wikimedia Commons Der SPARQL-Werkzeugkoffer Daren, Toolbox (226362564), CC BY 2.0 https://qlever.dev/wikidata/ (Backend information) OPTIONAL https://w.wiki/FsmN (414 Treffer) OPTIONAL – kann muss aber nicht https://w.wiki/FsmV (3813 Treffer) https://w.wiki/FsmN (414 Treffer) MINUS – Treffermenge von der Ergebnismenge abziehen Beispiel: Alle Werke der Gemäldegalerie ohne die Gemälde https://w.wiki/FqPr MINUS ● Alle Werke der Gemäldegalerie (Q165631) ohne Inventarnummer (P217), https://w.wiki/FqPy ● Alle Museen in Berlin (P131*, Q64) ohne Onlinekatalog (P8768), https://qlever.dev/wikidata/tV9O4N NPS Graphics, converted by User:ZyMOS, Pictograms-nps-land-exercise-fitness-2, marked as public domain, more details on Wikimedia Commons FILTER ● FILTER ( <Ausdruck, der entweder wahr oder falsch ist> ) ● innerhalb von ‘WHERE {}’ ● Ausdrücke: ○ Vergleiche mit ‘<’ oder ‘>’ ○ Funktionen wie REGEX(?variable, “pattern”) oder EXISTS { } bzw. NOT EXISTS { } ● Beispiele: ○https://w.wiki/F6k8 (Objekte in Berlin von mehr als 100 Metern (?) Höhe) ○https://w.wiki/F6kA (Objekte in Berlin mit "Berlin" im Titel) ○https://w.wiki/FpxS (Items der Berlinischen Galerie, die seit 1. Oktober modifiziert wurden) Wikidata-Labels außerhalb des WDQS Der “SERVICE”-Trick funktioniert nur im WDQS. In reinem SPARQL werden Labels (z.B. rdfs:label) ausgelesen und nötigenfalls z.B. mit FILTER(LANG(?labelvariable) = “de”) gefiltert. https://qlever.dev/wikidata/dvoHuc Wikidata-Labels außerhalb des WDQS https://qlever.dev/wikidata/dvoHuc (NOT) EXISTS Überprüft, ob Ausdruck { ?s ?p ?o } Werte zurückliefert, gibt True oder False zurück. Oft als Bedingung von FILTER() verwendet und dann oft äquivalent mit MINUS {}. https://w.wiki/FpRb GROUP BY ?zahl, COUNT(?karte) AS ?n en:User:Cburnett, Playing card spade 7, CC BY-SA 3.0 en:User:Cburnett, Playing card heart 7, CC BY-SA 3.0 en:User:Cburnett, Playing card diamond 10, CC BY-SA 3.0 en:User:Cburnett, Playing card heart 10, CC BY-SA 3.0 ?zahl = 7 ?zahl = 10 ?n = 3 ?n = 2 GROUP BY ?farbe en:User:Cburnett, Playing card spade 7, CC BY-SA 3.0 en:User:Cburnett, Playing card heart 7, CC BY-SA 3.0 en:User:Cburnett, Playing card diamond 10, CC BY-SA 3.0 en:User:Cburnett, Playing card heart 10, CC BY-SA 3.0 ?farbe= Pik ?farbe = Karo ?farbe = Herz GROUP BY ?farbe, COUNT(?karte) AS ?n en:User:Cburnett, Playing card spade 7, CC BY-SA 3.0 en:User:Cburnett, Playing card heart 7, CC BY-SA 3.0 en:User:Cburnett, Playing card diamond 10, CC BY-SA 3.0 en:User:Cburnett, Playing card heart 10, CC BY-SA 3.0 ?farbe= Pik ?farbe = Karo ?farbe = Herz ?n = 1 ?n = 1 ?n = 3 GROUP BY ?farbe, ?zahl, COUNT(?karte) AS ?n en:User:Cburnett, Playing card spade 7, CC BY-SA 3.0 en:User:Cburnett, Playing card heart 7, CC BY-SA 3.0 en:User:Cburnett, Playing card diamond 10, CC BY-SA 3.0 en:User:Cburnett, Playing card heart 10, CC BY-SA 3.0 ?farbe= Pik ?zahl = 7 ?farbe = Karo ?zahl = 10 ?farbe = Herz ?zahl = 10 ?n = 1 ?n = 1 ?n = 1 ?n = 2 ?farbe = Herz ?zahl = 7 Gruppieren https://w.wiki/Fv9E Gruppieren https://w.wiki/Fv9E Gruppieren https://w.wiki/Fv9E Gruppieren https://w.wiki/Fv9E Gruppieren https://w.wiki/Fv9E Hans Baluschek Émile Gallé Gruppieren: GROUP BY Gruppiert Ergebniszeilen mit gleichen Werten in definierten Spalten https://w.wiki/Fqi3 UNION – Mengen vereinigen https://qlever.dev/wikidata/xdvyL7 VALUES Definiert für Variable ?x mehrere Werte ?v1 ?v2 …: VALUES ?x { ?v ?v } https://qlever.dev/wikidata/wRjBJd BIND BIND weist einer Variablen ?value einen Wert wert zu: BIND(“wert” AS ?value) Gemälde der Gemäldegalerie Berlin nach Fläche sortiert, https://w.wiki/F6$S Häufige Stolperfallen Einheiten bei Maßangaben SELECT ?hoehe WHERE { wd:Q21453215 wdt:P2048 ?hoehe . } (https://w.wiki/F6$X) 2 Treffer: 63 627 Blick in die TTL (gekürzter Ausschnitt) wd:Q21453215 wdt:P2048 "+63"^^xsd:decimal . wd:Q21453215 p:P2048 wds:Q21453215-4B0267AA-D1A9-447E-9F0A-160EDD41E1D6 . wds:Q21453215-4B0267AA-D1A9-447E-9F0A-160EDD41E1D6 a wikibase:Statement, ps:P2048 "+63"^^xsd:decimal ; psv:P2048 wdv:42e6fcdc4eb1aebec8a723f50c3558b3 . wdv:42e6fcdc4eb1aebec8a723f50c3558b3 a wikibase:QuantityValue ; wikibase:quantityAmount "+63"^^xsd:decimal ; wikibase:quantityUnit <http://www.wikidata.org/entity/Q174728> . Blick in die TTL (gekürzter Ausschnitt) wd:Q21453215 wdt:P2048 "+63"^^xsd:decimal . wd:Q21453215 p:P2048 wds:Q21453215-4B0267AA-D1A9-447E-9F0A-160EDD41E1D6 . wds:Q21453215-4B0267AA-D1A9-447E-9F0A-160EDD41E1D6 a wikibase:Statement, ps:P2048 "+63"^^xsd:decimal ; psv:P2048 wdv:42e6fcdc4eb1aebec8a723f50c3558b3 . wdv:42e6fcdc4eb1aebec8a723f50c3558b3 a wikibase:QuantityValue ; wikibase:quantityAmount "+63"^^xsd:decimal ; wikibase:quantityUnit <http://www.wikidata.org/entity/Q174728> . Statement-Knoten (p:P2048) Blick in die TTL (gekürzter Ausschnitt) wd:Q21453215 wdt:P2048 "+63"^^xsd:decimal . wd:Q21453215 p:P2048 wds:Q21453215-4B0267AA-D1A9-447E-9F0A-160EDD41E1D6 . wds:Q21453215-4B0267AA-D1A9-447E-9F0A-160EDD41E1D6 a wikibase:Statement, ps:P2048 "+63"^^xsd:decimal ; psv:P2048 wdv:42e6fcdc4eb1aebec8a723f50c3558b3 . wdv:42e6fcdc4eb1aebec8a723f50c3558b3 a wikibase:QuantityValue ; wikibase:quantityAmount "+63"^^xsd:decimal ; wikibase:quantityUnit <http://www.wikidata.org/entity/Q174728> . Value-Knoten (psv:P2048) Blick in die TTL (gekürzter Ausschnitt) wd:Q21453215 wdt:P2048 "+63"^^xsd:decimal . wd:Q21453215 p:P2048 wds:Q21453215-4B0267AA-D1A9-447E-9F0A-160EDD41E1D6 . wds:Q21453215-4B0267AA-D1A9-447E-9F0A-160EDD41E1D6 a wikibase:Statement, ps:P2048 "+63"^^xsd:decimal ; psv:P2048 wdv:42e6fcdc4eb1aebec8a723f50c3558b3 . wdv:42e6fcdc4eb1aebec8a723f50c3558b3 a wikibase:QuantityValue ; wikibase:quantityAmount "+63"^^xsd:decimal ; wikibase:quantityUnit <http://www.wikidata.org/entity/Q174728> . Einheit-Statement (wikibase:quantityUnit) # Ausgabe von Werteinheiten SELECT ?wert ?einheit ?einheitLabel WHERE { wd:Q21453215 p:P2048 ?statement . ?statement psv:P2048 ?valueknoten . ?valueknoten wikibase:quantityAmount ?wert ; wikibase:quantityUnit ?einheit . SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],mul,en". } } Statement-Knoten (p:P2048) Value-Knoten (psv:P2048) Value-Knoten (psv:P2048) Andere SPARQL-Endpunkte aus dem Kulturbereich Katalog der Deutschen Nationalbibliothek (DNB) und GND ●https://sparql.dnb.de/dnbgnd bzw. https://sparql.dnb.de/gnd ● Basiert auf Qlever ● Datenmodell anhand von TTL-Beispielen aus dem DNB-Portal, z.B. https://d-nb.info/gnd/119232022 (TTL: https://d-nb.info/gnd/119232022/about/lds) Geschlecht und Lebensdaten in der GND Geschlecht und Lebensdaten in der GND die 10 jüngsten Frauen in der GND? OpenMoji, OpenMoji-black 1F914, CC BY-SA 4.0 Geschlecht und Lebensdaten in der GND die 10 jüngsten Frauen in der GND? OpenMoji, OpenMoji-black 1F914, CC BY-SA 4.0 https://sparql.dnb.de/gnd/k3TUPe Ressourcen ● SPARQL 1.1 Overview. W3C Recommendation 21 March 2013, https://www.w3.org/TR/sparql11-overview/ ● Wikidata SPARQL Tutorial, https://www.wikidata.org/wiki/Wikidata:SPARQL_tutorial ● Wikidata-Beispielqueries, https://www.wikidata.org/wiki/Wikidata:SPARQL_query_service/queries/examples ● SPARQL By Example: The Cheat Sheet, https://www.iro.umontreal.ca/~lapalme/ift6281/sparql-1_1-cheat-sheet.pdf ● Wikibooks SPARQL, https://en.wikibooks.org/wiki/SPARQL ● Jena Apache Tutorial, https://jena.apache.org/tutorials/sparql.html ● DuCharme, Bob. 2013. Learning SPARQL: Querying and Updating with SPARQL 1.1. Second edition. O’Reilly Media. DOI: 10.5281/zenodo.17368769 Alexander Winkler (digiS) ✉ [email protected] 0000-0002-9145-7238 @[email protected] 4. November 2025 Bundesarchiv, Bild 183-62162-0009 / CC-BY-SA 3.0, Bundesarchiv Bild 183-62162-0009, Feier in einem Kulturhaus (cropped), CC BY-SA 3.0 DE From Zero to SPARQL