Experiment zur Identifikation von doppelten Orten in der GND

Doppelte Orte in der GND identifizieren [1]. Doppelte Orte in der GND identifizieren [1].

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:

  1. 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.
  2. 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 Deutschland XA-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:

geographicTypecount
AdministrativeUnit423
NaturalGeographicUnit537
PlaceOrGeographicName4205
ReligiousTerritory68
TerritorialCorporateBodyOrAdministrativeUnit23685
BuildingOrMemorial3711
NameOfSmallGeographicUnitLyingWithinAnotherGeographicUnit99

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.


  1. 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. ↩︎

  2. Der für dieses Experiment verwendete Abzug ist authorities_lds_20211013.nt.gz↩︎

Benjamin Rosemann
Benjamin Rosemann
Data Scientist

Ich evaluiere KI- und Software-Lösungen und integriere sie in den Archivalltag.

Verena Mack
Verena Mack
Projektbearbeiterin

Ich kultiviere Normdaten bei der GND-Agentur LEO-BW-Regional.

Ähnliches