Experiment zur Identifikation von doppelten Orten in der GND
Bei unserer Arbeit mit Orten in der Gemeinsamen Normdatei (GND) stolperten wir hin und wieder über Dubletten. Also Orte, die in der GND mehrfach vorhanden waren. Dieser Beitrag beschreibt, wie wir in einem praktischen Experiment versuchten diese Dubletten innerhalb des Bundeslandes Baden-Württemberg zu identifizieren.
Bildnachweis1
Hintergrund
In der GND sind nicht nur aktuelle Orte mit einer eindeutigen GND-Nummer verzeichnet, sondern auch historische Orte. Beispielsweise wurde Cannstatt mit Stuttgart vereinigt und ist seit dem 1. April 1905 als Stuttgart-Cannstatt und später Bad Cannstatt ein Stadtteil von Stuttgart.
Auch wurden Gemeinden und Städte im Zuge von Kreis- und Gemeindereformen eingemeindet oder neu gebildet. Beispielsweise wurden Bissingen und Bietigheim im Jahre 1975 zu Bietigheim-Bissingen zusammengelegt.
Diese Form von Mehrfachnennung meinen wir nicht. Wir sind darüber gestolpert, dass es speziell zu historischen Orten in Baden-Württemberg mehrere Einträge gab.
Idee
Wir wollen basierend auf der Ortsnamensdatenbank Baden-Württemberg (ONDB) mögliche Dubletten von Orten in Baden-Württemberg in der GND identifizieren. Die ONDB wurde in einem anderen Projekt in Form einer Datenspende in die GND eingespielt, so dass wir davon ausgehen, dass wir sie als “Referenz” verwenden können. Dafür identifizieren wir alle mit Baden-Württemberg verknüpften Orte in der GND, markieren die Orte, die in der ONDB vorliegen und betrachten anschließend die Restmenge.
Vorgehen
1. ONDB Aufbereitung
Ein Abzug der ONDB wurde im Kontext eines anderen Projektes mit OpenRefine aufgearbeitet, so dass ein Mapping von GND-ID auf ONDB-ID möglich ist. Wie so ein Mapping funktioniert, ist unter Daten zwischen Projekten in OpenRefine abgleichen beschrieben.
2. GND in Triple-Store laden
Wie unter Erste Experimente mit der GND beschrieben, wurde die GND in ihrer LOD-Form in einen Apache Jena Docker Container geladen. 2
3. Daten aus Triple-Store laden
Mit SPARQL-Abfragen werden die Daten aus dem Apache Jena Triple-Store extrahiert.
4. Dubletten identifizieren
Mit Hilfe der ODNB, Clustering Methoden in OpenRefine und externen Skripten mögliche Dubletten identifizieren und manuell prüfen.
SPARQL Abfrage(n)
wir haben verschiedene Methoden getestet, verworfen und kombiniert, um die für uns relevanten Orte in der GND zu identifizieren und via SPARQL aus dem Apache Jena Triple-Store laden zu können.
Angaben zur Quelle
In der GND ist auch die Quelle einer Dateninformation erfasst, also zum Beispiel die ONDB oder das Landesarchiv Baden-Württemberg als Datenquelle genannt. Diese Information ist in der LOD-Form der GND leider nicht enthalten. Daher konnten wir diese Information nicht als zusätzliche Informationsquelle für unsere Filter nutzen.
Verknüpfung über Hierarchie
Theoretisch sollten wir über den Property-Path Hierarchical superior of place or geographic name alle untergeordneten Orte von Baden-Württemberg finden können.
PREFIX gnd: <https://d-nb.info/gnd/>
PREFIX gndo: <https://d-nb.info/standards/elementset/gnd#>
SELECT DISTINCT ?place
WHERE {
?place gndo:hierarchicalSuperiorOfPlaceOrGeographicName+ gnd:4004176-1 .
}
Diese Eigenschaft ist jedoch nicht konsequent und speziell für historische Orte gar nicht erfasst. Daher haben wir diesen Ansatz verworfen.
Verknüpfung über Ländercode
Theoretisch sollten wir über die Verknüpfung mit dem Ländercode (Geographic Area Code) alle mit Baden-Württemberg (XA-DE-BW) verknüpften Orte erfassen können.
PREFIX gnd: <https://d-nb.info/gnd/>
PREFIX gndo: <https://d-nb.info/standards/elementset/gnd#>
PREFIX gnd-area-code: <https://d-nb.info/standards/vocab/gnd/geographic-area-code#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT DISTINCT ?place
WHERE {
?place gndo:geographicAreaCode gnd-area-code:XA-DE-BW ;
rdf:type ?type .
?type rdfs:subClassOf* gndo:PlaceOrGeographicName .
}
Hier sind uns zwei Probleme aufgefallen:
- die Property-Path-Extension
rdfs:subclassOf*
funktioniert nicht, wir konnten jedoch nicht klären ob das ein Problem mit Apache Jena oder mit den GND-Daten ist. - Nicht alle Orte in Baden-Württemberg sind mit dem Ländercode
XA-DE-BW
angelegt, sondern einige auch ausschließlich mit dem Ländercode für DeutschlandXA-DE
.
Verknüpfung über Ländercode mit Aufzählung aller (Sub-)Klassen
Da die Property-Path Extension auf rdfs:subClassOf
nicht funktioniert hat, listen wir die für uns relevanten (Sub-)Klassen alle einzeln auf.
PREFIX gnd: <https://d-nb.info/gnd/>
PREFIX gndo: <https://d-nb.info/standards/elementset/gnd#>
PREFIX gnd-area-code: <https://d-nb.info/standards/vocab/gnd/geographic-area-code#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
SELECT DISTINCT ?place
WHERE {
VALUES ?geographicType
{
gndo:PlaceOrGeographicName
gndo:AdministrativeUnit
gndo:BuildingOrMemorial
gndo:NameOfSmallGeographicUnitLyingWithinAnotherGeographicUnit
gndo:NaturalGeographicUnit
gndo:ReligiousTerritory
gndo:TerritorialCorporateBodyOrAdministrativeUnit
}
?place gndo:geographicAreaCode gnd-area-code:XA-DE-BW ;
rdf:type ?geographicType .
}
Anzahl pro (Sub-)Klasse
Die folgende Abfrage zählt, wie häufig die entsprechenden Typen für Orte in Baden-Württemberg in der GND vorkommen.
PREFIX gnd: <https://d-nb.info/gnd/>
PREFIX gndo: <https://d-nb.info/standards/elementset/gnd#>
PREFIX gnd-area-code: <https://d-nb.info/standards/vocab/gnd/geographic-area-code#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
SELECT DISTINCT ?geographicType (count(?geographicType) as ?count)
WHERE {
VALUES ?geographicType
{
gndo:PlaceOrGeographicName
gndo:AdministrativeUnit
gndo:BuildingOrMemorial
gndo:NameOfSmallGeographicUnitLyingWithinAnotherGeographicUnit
gndo:NaturalGeographicUnit
gndo:ReligiousTerritory
gndo:TerritorialCorporateBodyOrAdministrativeUnit
}
?place gndo:geographicAreaCode gnd-area-code:XA-DE-BW ;
rdf:type ?geographicType .
} GROUP BY ?geographicType
In der folgenden Tabelle ist das Ergebnis für die obige SPARQL-Abfrage dargestellt:
DE-Ländercode mit Nachfolger (oder Vorgänger) in BW
Bei den Orten, die mit dem Ländercode XA-DE
für Deutschland angelegt wurden, ergab sich ein Muster.
Diese hatten häufig einen Vorgänger oder Nachfolger, der mit dem Ländercode XA-DE-BW
für Baden-Württemberg verknüpft war.
Die folgende SPARQL-Abfrage zeigt, wie diese Orte abgefragt werden können.
PREFIX gnd: <https://d-nb.info/gnd/>
PREFIX gndo: <https://d-nb.info/standards/elementset/gnd#>
PREFIX gnd-area-code: <https://d-nb.info/standards/vocab/gnd/geographic-area-code#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT DISTINCT ?place
WHERE {
VALUES ?geographicType
{
gndo:PlaceOrGeographicName
gndo:AdministrativeUnit
gndo:BuildingOrMemorial
gndo:NameOfSmallGeographicUnitLyingWithinAnotherGeographicUnit
gndo:NaturalGeographicUnit
gndo:ReligiousTerritory
gndo:TerritorialCorporateBodyOrAdministrativeUnit
}
?place gndo:geographicAreaCode gnd-area-code:XA-DE ;
rdf:type ?geographicType ;
(gndo:precedingPlaceOrGeographicName+ | gndo:succeedingPlaceOrGeographicName+) ?relatedPlace .
?relatedPlace gndo:geographicAreaCode gnd-area-code:XA-DE-BW .
}
Finale SPARQL-Abfrage
Die folgende SPARQL-Abfrage kombiniert die Orte, die mit dem XA-DE-BW
für Baden-Württemberg angelegt wurden mit denen, die einen mit dem Ländercode XA-DE-BW
für Baden-Württemberg verknüpften Vorgänger oder Nachfolger haben.
Zusätzlich werden noch die Eigenschaften Bevorzugter Name des Geographikums und die Definition abgefragt.
Da diese nicht zuverlässig gesetzt wurden, sind sie als OPTIONAL
gekennzeichnet.
Da wir die GND-ID eindeutig halten wollen, diese aber gegebenenfalls mit mehreren geographischen Typen verknüpft sein kann, nutzen wir eine Gruppierung via GROUP BY
um doppelte GND-IDs zu filtern.
PREFIX gnd: <https://d-nb.info/gnd/>
PREFIX gndo: <https://d-nb.info/standards/elementset/gnd#>
PREFIX gnd-area-code: <https://d-nb.info/standards/vocab/gnd/geographic-area-code#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
SELECT ?place (SAMPLE(?geographicType) as ?GeographicType) (SAMPLE(?preferredName) as ?PreferredName) (SAMPLE(?definition) as ?Definition)
WHERE {
VALUES ?geographicType
{
gndo:PlaceOrGeographicName
gndo:AdministrativeUnit
gndo:BuildingOrMemorial
gndo:NameOfSmallGeographicUnitLyingWithinAnotherGeographicUnit
gndo:NaturalGeographicUnit
gndo:ReligiousTerritory
gndo:TerritorialCorporateBodyOrAdministrativeUnit
}
{
?place gndo:geographicAreaCode gnd-area-code:XA-DE-BW ;
rdf:type ?geographicType .
OPTIONAL {
?place gndo:preferredNameForThePlaceOrGeographicName ?preferredName
}.
OPTIONAL {
?place gndo:definition ?definition
}.
}
UNION
{
?place gndo:geographicAreaCode gnd-area-code:XA-DE ;
rdf:type ?geographicType ;
(gndo:precedingPlaceOrGeographicName+ | gndo:succeedingPlaceOrGeographicName+) ?relatedPlace .
?relatedPlace gndo:geographicAreaCode gnd-area-code:XA-DE-BW .
OPTIONAL {
?place gndo:preferredNameForThePlaceOrGeographicName ?preferredName
}.
OPTIONAL {
?place gndo:definition ?definition
}.
}
} GROUP BY ?place
Ergebnisse
Mit der oben beschriebenen SPARQL-Abfrage konnten etwa 33.000 zu Baden-Württemberg zuordenbare Orte aus der GND in unserem Apache Jena Triple-Store extrahiert werden.
Innerhalb dieser Daten konnten etwa 600 eindeutige Dubletten und deren Ursprung identifiziert und der GND Fachstelle zur Korrektur vorgelegt werden. Das entspricht etwa zwei Prozent der gefunden Daten.
Bei der Analyse der Dubletten ist aufgefallen, dass nach wie vor die historische Vorbelastung der GND durch die Verschmelzung der Gemeinsamen Körperschaftsdatei (GKD) mit der Schlagwortnormdatei (SWD) für einen Großteil der Dubletten verantwortlich war. Zusätzlich gab es einzelne Datenlieferungen, die ebenfalls für Dubletten geführt haben.
Beim Identifikationsprozess für Dubletten ist aufgefallen, dass besonders das unterschiedliche Vorgehen bei der “Vorzugsbenennung” eines Ortes zu den vielen nicht offensichtlichen Dubletten geführt hat. Beispielsweise lässt sich Bad Cannstatt auch als Stuttgart-Cannstatt benennen, was weder bei einer alphabetischen Sortierung, noch bei den meisten Standardverfahren zum algorithmischen Abgleich von Dubletten auffällt.
Insgesamt haben wir vermutlich auch nur einen Teil der Dubletten für Orte in Baden-Württemberg in der GND identifiziert. Unter anderem fallen alle Orte durch unsere Suchfilter, die Baden-Württemberg nicht als Geographic Area Code definiert haben und auch keine mit Baden-Württemberg verknüpften Vorgänger oder Nachfolger haben.
Das Bild “Doppelte Orte in der GND identifizieren” wurde erstellt mit Bildern von Peggy und Marco Lachmann-Anke und Gerd Altmann auf Pixabay und dem “Logo Gemeinsame Normdatei (GND)” von Deutsche Nationalbibliothek (DNB), welches lizenziert ist unter einer CC BY-SA 4.0 Lizenz. Das Bild “Doppelte Orte in der GND identifizieren” ist ebenfalls lizenziert unter einer CC BY-SA 4.0 Lizenz. ↩︎
Der für dieses Experiment verwendete Abzug ist authorities_lds_20211013.nt.gz. ↩︎