# SPARQL Endpunkt der Deutschen Nationalbibliothek

**URL:** <https://metadaten.community/t/sparql-endpunkt-der-deutschen-nationalbibliothek/906>\
**Category:** Software & Tools\
**Tags:** rdf, gnd, dnb, sparql\
**Created:** [24. September 2025 um 12:16 UTC](https://metadaten.community/t/sparql-endpunkt-der-deutschen-nationalbibliothek/906 "2025-09-24T12:16:20Z")\
**Posts on this page:** 14\
**Page:** 1

<div class="post-metadata">

**Author:** ![Tracy\_Arndt](https://metadaten.community/letter_avatar_proxy/v4/letter/t/b5ac83/32.png) [@Tracy\_Arndt](https://metadaten.community/u/Tracy_Arndt)\
**Post date:** [24. September 2025 um 12:16 UTC](https://metadaten.community/t/sparql-endpunkt-der-deutschen-nationalbibliothek/906/1 "2025-09-24T12:16:20Z")

</div>

🎉 Seit heute ist der SPARQL Endpunkt der DNB [https://sparql.dnb.de](https://sparql.dnb.de) öffentlich zugänglich. 🎉

Der DNB SPARQL Service ist eine Retrievalschnittstelle des Linked-Data-Service der Deutschen Nationalbibliothek ermöglicht, DNB-Titeldaten ([Deutsche Nationalbibliografie](https://www.dnb.de/nationalbibliografie)) und GND-Normdaten ([Gemeinsame Normdatei](https://www.dnb.de/gnd)) im Format [RDF](https://www.dnb.de/rdf) zu recherchieren. Wir möchten damit eine Möglichkeit bieten, diese Daten auf eine semantische Art zu erkunden, die mit einer einfachen, textbasierten Suche nicht möglich ist.

Der Service besteht aus einer Weboberfläche und aktuell zwei APIs (maschinelle Endpunkte).

Der DNB SPARQL Service wird betrieben mit der Open-Source-Software [Qlever SPARQL Engine](https://github.com/ad-freiburg/qlever), die am Fachbereich Informatik an der Albert-Ludwigs-Universität Freiburg (im Breisgau) entwickelt wird. Die Engine verfügt über eine QLever-Benutzeroberfläche, die das Schreiben von SPARQL-Abfragen vereinfacht.

Hinweis: Der Dienst befindet sich zurzeit in einer öffentlichen BETA-Phase, in der es noch zu Unterbrechungen und Ausfällen kommen kann. 🚧

Beispielabfrage „[Titel von Philosoph\*innen über „KI“ seit 2010](https://sparql.dnb.de/dnbgnd/sqo76O)“ (weitere Beispielabfragen befinden sich auf der Weboberfläche unter „Examples“)

---

<div class="post-metadata">

**Author:** ![acka47](https://metadaten.community/user_avatar/metadaten.community/acka47/32/18_2.png) [@acka47](https://metadaten.community/u/acka47)\
**Post date:** [24. September 2025 um 13:05 UTC](https://metadaten.community/t/sparql-endpunkt-der-deutschen-nationalbibliothek/906/2 "2025-09-24T13:05:03Z")

</div>

Herzlichen Glückwunsch zum Launch, @Tracy_Arndt ! Die Beispiel-Query hat direkt mein Interesse geweckt. Habe sie mal etwas angepasst, damit direkt der Autor:innenname erkennbar ist, und es hat funktioniert, yay: [DNB SPARQL Service - BETA](https://sparql.dnb.de/dnbgnd/sqo76O)

Ich habe direkt mal diesen alten Reclam-Band aus meinem Studium rausgekramt, weil die Bücherkiste hier gerade rumsteht:

 ![Foto von https://d-nb.info/940429101 auf dem Schreibtisch neben Tastatur und Kaffeetasse](https://metadaten.community/uploads/default/original/1X/208d964b7310dfe2d784aea68c495069bdaa3840.jpeg)

Sehr seltsam allerdings, dass Richard David Precht in der Ergebnisliste so häufig vertreten ist, wobei doch eigentlich nur Titel von Philosoph:innen abgefragt werden…

---

<div class="post-metadata">

**Author:** ![Tracy\_Arndt](https://metadaten.community/letter_avatar_proxy/v4/letter/t/b5ac83/32.png) [@Tracy\_Arndt](https://metadaten.community/u/Tracy_Arndt)\
**Post date:** [24. September 2025 um 13:09 UTC](https://metadaten.community/t/sparql-endpunkt-der-deutschen-nationalbibliothek/906/3 "2025-09-24T13:09:08Z")

</div>

Sehr gut. Falls dir/euch etwas auffällt oder unklar erscheint lasst es mich wissen.

(Wie die Berufszuordnungen in der GND Zustande kommen entzieht sich meiner Kenntnis 😉 )

---

<div class="post-metadata">

**Author:** ![acka47](https://metadaten.community/user_avatar/metadaten.community/acka47/32/18_2.png) [@acka47](https://metadaten.community/u/acka47)\
**Post date:** [10. Oktober 2025 um 06:45 UTC](https://metadaten.community/t/sparql-endpunkt-der-deutschen-nationalbibliothek/906/4 "2025-10-10T06:45:28Z")

</div>

@awinkler hat ein paar gute Abfragen im Fediverse gepostet, die durch den SPARQL Endpoint deutlich erleichtert werden.

> [@](#):
>
> Die jetzt prominentere Position des [#DNB](https://openbiblio.social/tags/DNB) [#sparql](https://openbiblio.social/tags/sparql)-Endpoints gibt Gelegenheit für kleinere Probebohrungen, die ohne SPARQL sehr mühsam wären, z.B.:
> 
> - die fleißigsten Personennormdatenerzeuger: [sparql.dnb.de/MlQzcH](https://sparql.dnb.de/MlQzcH)
> - idem für Schlagwörter: [sparql.dnb.de/LMv6yA](https://sparql.dnb.de/LMv6yA) (mit auffallender Leistung der UB Augsburg)
> - Gebietskörperschaften: [sparql.dnb.de/onVmXX](https://sparql.dnb.de/onVmXX)
> - wie sehr ist das Werk einer Person speziell Aufgabe einer Institution? [sparql.dnb.de/dnbgnd/0jszDE](https://sparql.dnb.de/dnbgnd/0jszDE)

Quelle: [https://openbiblio.social/@awinkler/115340812915945141](https://openbiblio.social/@awinkler/115340812915945141)

und:

> Wie viele Expressionen (?) sind je einem Werk zugeordnet? Aktuell haben etwas über 36.000 Werke (bibo:Document) Expressionen verknüpft.
> 
> [sparql.dnb.de/dnbgnd/BP7ces](https://sparql.dnb.de/dnbgnd/BP7ces)  
> [Quelle](https://openbiblio.social/@awinkler/115342940508256368)

---

<div class="post-metadata">

**Author:** ![acka47](https://metadaten.community/user_avatar/metadaten.community/acka47/32/18_2.png) [@acka47](https://metadaten.community/u/acka47)\
**Post date:** [10. Oktober 2025 um 07:28 UTC](https://metadaten.community/t/sparql-endpunkt-der-deutschen-nationalbibliothek/906/5 "2025-10-10T07:28:54Z")

</div>

Ergänzend die Übersicht der erstellenden Institutionen in Bezug auf sämtliche GND-Einträge:

```sparql
PREFIX gndo: <https://d-nb.info/standards/elementset/gnd#>
PREFIX dcterms: <http://purl.org/dc/terms/>
PREFIX wdrs: <http://www.w3.org/2007/05/powder-s#>

SELECT ?record_creator (COUNT(DISTINCT ?record) as ?count_record) WHERE {
?entry wdrs:describedby ?record .
?record dcterms:creator ?record_creator .
  
} GROUP BY ?record_creator ORDER BY DESC(?count_record)

```

[https://sparql.dnb.de/BPkNMF](https://sparql.dnb.de/BPkNMF)

---

<div class="post-metadata">

**Author:** ![Tracy\_Arndt](https://metadaten.community/letter_avatar_proxy/v4/letter/t/b5ac83/32.png) [@Tracy\_Arndt](https://metadaten.community/u/Tracy_Arndt)\
**Post date:** [17. Oktober 2025 um 07:20 UTC](https://metadaten.community/t/sparql-endpunkt-der-deutschen-nationalbibliothek/906/6 "2025-10-17T07:20:48Z")

</div>

Blogbeitrag zum SPARQL Endpunkt: [Maschinelles Ernten - Cherry Picking in der GND](https://wiki.dnb.de/pages/viewpage.action?pageId=458035389)

---

<div class="post-metadata">

**Author:** ![acka47](https://metadaten.community/user_avatar/metadaten.community/acka47/32/18_2.png) [@acka47](https://metadaten.community/u/acka47)\
**Post date:** [2. Dezember 2025 um 13:08 UTC](https://metadaten.community/t/sparql-endpunkt-der-deutschen-nationalbibliothek/906/7 "2025-12-02T13:08:31Z")

</div>

Danke nochmal für den SPARQL-Endpunkt, den @petra_maier und ich direkt gerne anstatt des Wikidata-SPARQL-Endpoints nutzen, um Verwendungsbeispiele von SPARQL im MALIS-Studiengang an der TH Köln vorzustellen. Ich habe deshalb mal ein bisschen mehr mit Queries herumgespielt.

Ich würde z.B. gerne eine Query nach Instanzen des Entitätentyp `gndo:PlaceOrGeographicName` oder einer seiner Unterklassen mache. Es scheint aber, dass dies momentan nicht möglich ist, weil die GND-Ontologie offenbar selbst nicht Teil des abfragbaren Graphen ist.

Diese zwei Queries würden dann ja eigentlich etwas zurückgeben:

```sparql
PREFIX gndo: <https://d-nb.info/standards/elementset/gnd#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>

SELECT ?label WHERE {
  ?class a rdfs:Class ;
  rdfs:label ?label .
}

LIMIT 10

```

oder

```sparql
PREFIX gndo: <https://d-nb.info/standards/elementset/gnd#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>

SELECT ?class WHERE {
  ?class rdfs:subClassOf gndo:PlaceOrGeographicName .
}

LIMIT 10

```

Könnt ihr die GNDO noch mit indexieren, @Tracy_Arndt ?

---

<div class="post-metadata">

**Author:** ![Tracy\_Arndt](https://metadaten.community/letter_avatar_proxy/v4/letter/t/b5ac83/32.png) [@Tracy\_Arndt](https://metadaten.community/u/Tracy_Arndt)\
**Post date:** [2. Dezember 2025 um 13:13 UTC](https://metadaten.community/t/sparql-endpunkt-der-deutschen-nationalbibliothek/906/8 "2025-12-02T13:13:47Z")

</div>

Hi Adrian,  
das ist witzig, weil ich genau darauf auch am Freitag gestoßen bin 😁  
Ja, klar mach ich das noch. Vielleicht schaffe ich es morgen…

---

<div class="post-metadata">

**Author:** ![Tracy\_Arndt](https://metadaten.community/letter_avatar_proxy/v4/letter/t/b5ac83/32.png) [@Tracy\_Arndt](https://metadaten.community/u/Tracy_Arndt)\
**Post date:** [2. Dezember 2025 um 13:30 UTC](https://metadaten.community/t/sparql-endpunkt-der-deutschen-nationalbibliothek/906/9 "2025-12-02T13:30:04Z")

</div>

Ach ich habe die Anpassung direkt vorgenommen 😉  
Ist jetzt drin und die Queries funktionieren jetzt in beiden Endpunkten.

---

<div class="post-metadata">

**Author:** ![acka47](https://metadaten.community/user_avatar/metadaten.community/acka47/32/18_2.png) [@acka47](https://metadaten.community/u/acka47)\
**Post date:** [2. Dezember 2025 um 13:48 UTC](https://metadaten.community/t/sparql-endpunkt-der-deutschen-nationalbibliothek/906/10 "2025-12-02T13:48:45Z")

</div>

Kann man auch so elegant wie bei Wikidata nach Instanzen einer Klasse inklusive Unterklassen abfragen? Ich hab das jetzt erstmal eher umständlich gemacht:

```sparql
# Die meistverschlagworteten GND-Einträge vom Typ
# gndo:PlaceOrGeographicName oder einer seiner Unterklassen.

PREFIX gndo: <https://d-nb.info/standards/elementset/gnd#>
PREFIX dct: <http://purl.org/dc/terms/>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>

SELECT DISTINCT ?subject ?subjectLabel (COUNT(?work) AS ?Anzahl) WHERE {
  VALUES ?type { gndo:PlaceOrGeographicName } 
  ?subType rdfs:subClassOf ?type .
 { ?subject a ?type . }
 UNION
 { ?subject a ?subType . }
  ?work dct:subject ?subject .
  ?subject gndo:preferredNameForThePlaceOrGeographicName ?subjectLabel .
}
GROUP BY ?subject ?subjectLabel
ORDER BY DESC(?Anzahl)

```

[Try it!](https://sparql.dnb.de/dnbgnd/w6guar)

---

<div class="post-metadata">

**Author:** ![Tracy\_Arndt](https://metadaten.community/letter_avatar_proxy/v4/letter/t/b5ac83/32.png) [@Tracy\_Arndt](https://metadaten.community/u/Tracy_Arndt)\
**Post date:** [2. Dezember 2025 um 14:07 UTC](https://metadaten.community/t/sparql-endpunkt-der-deutschen-nationalbibliothek/906/11 "2025-12-02T14:07:00Z")

</div>

Hier sieht man die Klassen gut:

```auto
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX gndo: <https://d-nb.info/standards/elementset/gnd#>
PREFIX dcterms: <http://purl.org/dc/terms/>

SELECT ?subject ?type ?subjectLabel
WHERE {
  ?work dcterms:subject ?subject .
  ?type rdfs:subClassOf* gndo:PlaceOrGeographicName .
  ?subject a ?type ;
            gndo:preferredNameForThePlaceOrGeographicName ?subjectLabel .
} 

```

und hier deine Query umgebaut

```auto
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX gndo: <https://d-nb.info/standards/elementset/gnd#>
PREFIX dcterms: <http://purl.org/dc/terms/>

SELECT ?subject ?subjectLabel (COUNT(?work) AS ?Anzahl)
WHERE {
  ?work dcterms:subject ?subject .
  ?type rdfs:subClassOf* gndo:PlaceOrGeographicName .
  ?subject a ?type ;
            gndo:preferredNameForThePlaceOrGeographicName ?subjectLabel .
} 
GROUP BY ?subject ?subjectLabel
ORDER BY DESC(?Anzahl)

```

---

<div class="post-metadata">

**Author:** ![acka47](https://metadaten.community/user_avatar/metadaten.community/acka47/32/18_2.png) [@acka47](https://metadaten.community/u/acka47)\
**Post date:** [2. Dezember 2025 um 14:20 UTC](https://metadaten.community/t/sparql-endpunkt-der-deutschen-nationalbibliothek/906/12 "2025-12-02T14:20:49Z")

</div>

Cool, danke! Mit der indexierten GND-Ontologie lässt sich ja nun auch das Problem der vielen verschiedenen `preferredName`-Properties leicht angehen.

Hier ein paar Abfragen, die ich zusammengebastelt habe:

- Die meistverschlagworteten GND-Einträge eines bestimmten Entitätstypen oder eines seiner Unterklassen:
  - [`Person`](https://sparql.dnb.de/dnbgnd/H5UWqm) (da so wenige Frauen dabei sind, hier noch [eingeschränkt auf Personen, denen das weibliche Geschlecht zugeordnet wurde](https://sparql.dnb.de/dnbgnd/46n1Dt))
  - [`PlaceOrGeographicName`](https://sparql.dnb.de/dnbgnd/ytGeT6)
  - [`CorporateBody`](https://sparql.dnb.de/dnbgnd/KQFu3E)
  - [`SubjectHeading`](https://sparql.dnb.de/dnbgnd/Z1EVo8)
  - [`Work`](https://sparql.dnb.de/dnbgnd/SRMG7g)
  - [`ConferenceOrEvent`](https://sparql.dnb.de/dnbgnd/wgsOnt)

- [Ko-Okkurenzen von Schlagwörtern zu einem vorgegebenen Schlagwort](https://sparql.dnb.de/dnbgnd/zGjYQO) (eine Anpassung der vorgegeben Beispiel-Query „Welche Schlagworte werden am häufigsten als Schlagwörter in Dokumenten über Antisemitismus verwendet“)
- [Welches waren in den letzten 50 Jahren die häufigsten Schlagwörter für Publikationen von Autor:innen mit Wirkungsort Köln?](https://sparql.dnb.de/dnbgnd/pDe0Qq)

Ich habe versucht, die Queries möglichst leicht anpassbar zu machen durch einen Austausch der `VALUES`-Angaben am Anfang des `SELECT`-Statements. Falls ich irgendwo einen Denkfehler gemacht habe, freue ich mich über Hinweise.

---

<div class="post-metadata">

**Author:** ![Tracy\_Arndt](https://metadaten.community/letter_avatar_proxy/v4/letter/t/b5ac83/32.png) [@Tracy\_Arndt](https://metadaten.community/u/Tracy_Arndt)\
**Post date:** [29. Januar 2026 um 12:54 UTC](https://metadaten.community/t/sparql-endpunkt-der-deutschen-nationalbibliothek/906/13 "2026-01-29T12:54:38Z")

</div>

Für den GND Endpunkt sind jetzt die Suggestions/Vorschläge beim Tippen eingerichtet. Ich hoffe, das erleichtert zukünftig einige Abfragen, auch wenn man das Datenmodell nicht kennt. Tippt mal los 😉

(Für den Endpunkt mit den Titeldaten + GND richte ich das auch noch ein)

---

<div class="post-metadata">

**Author:** ![acka47](https://metadaten.community/user_avatar/metadaten.community/acka47/32/18_2.png) [@acka47](https://metadaten.community/u/acka47)\
**Post date:** [21. Mai 2026 um 12:16 UTC](https://metadaten.community/t/sparql-endpunkt-der-deutschen-nationalbibliothek/906/14 "2026-05-21T12:16:57Z")

</div>

Seit Kurzem gibt es auch einen SPARQL Endpunkt für die ZDB (Zeitschriftendatenbank) inklusive der ISIL Adressdatei. Auswählbar im Dropdown unter [https://sparql.dnb.de/](https://sparql.dnb.de/)
