AW: [Lds] Personensuche in der GND unter Einbezug von Hintergrundinformationen

Klee, Carsten Carsten.Klee at sbb.spk-berlin.de
Mon Aug 15 08:13:47 CEST 2016


Hallo Philipp,

wir haben einen Abgleich von Personen zwischen Kalliope und der GND gemacht. Dabei haben wir erst einmal die GND als RDF in einen LDF-Server geladen und dann mit einem LDF-Client abgefragt (SPARQL siehe unten).

In eurem Fall müsstet ihr neben der GND-ID noch den Beruf extrahieren, um ihn später abzugleichen. Außerdem müsstet ihr das Geburtsdatum mit "<" und ">" vergleichen.

Schwierig wird es bei den Namen. Wenn ihr nur abgekürzte Vornamen habt, dann müsstet ihr die Namen in Vor- und Nachnamen splitten. Dann alle Ressourcen suchen, die 

?name http://d-nb.info/standards/elementset/gnd#surname "Zimmermann"^^<http://www.w3.org/2001/XMLSchema#string> .

haben und ein Regex auf den Vornamen (ohne Punkt) anwenden.

?name http://d-nb.info/standards/elementset/gnd#forename ?forename .
FILTER regex(?forename, 'H') .

Und dann die eigentliche GND-ID extrahieren:

?id http://d-nb.info/standards/elementset/gnd#preferredName $name .

Das kann bei einer großen Datenmenge ganz schön dauern. Für uns war das zu aufwendig und wir haben die normale Namensform genommen:

SELECT DISTINCT ?id WHERE {
        { 
            ?id <http://d-nb.info/standards/elementset/gnd#preferredNameForThePerson> \"$name\"^^<http://www.w3.org/2001/XMLSchema#string> ;
                a <http://d-nb.info/standards/elementset/gnd#DifferentiatedPerson> .
            ?id  <http://d-nb.info/standards/elementset/gnd#dateOfBirth> ?bdate .
            FILTER regex(?bdate, '$dateOfBirth') .
            ?id  <http://d-nb.info/standards/elementset/gnd#dateOfDeath> ?ddate .
            FILTER regex(?ddate, '$dateOfDeath') .
        }
        UNION
        { 
            ?id <http://d-nb.info/standards/elementset/gnd#variantNameForThePerson>  \"$name\"^^<http://www.w3.org/2001/XMLSchema#string> ;
                a <http://d-nb.info/standards/elementset/gnd#DifferentiatedPerson> .
            ?id  <http://d-nb.info/standards/elementset/gnd#dateOfBirth> ?bdate .
            FILTER regex(?bdate, '$dateOfBirth') .
            ?id  <http://d-nb.info/standards/elementset/gnd#dateOfDeath> ?ddate .
            FILTER regex(?ddate, '$dateOfDeath') .
        }
        UNION
        { 
            ?id <http://d-nb.info/standards/elementset/gnd#preferredNameForThePerson> \"$name\"^^<http://www.w3.org/2001/XMLSchema#string> ;
                a <http://d-nb.info/standards/elementset/gnd#RoyalOrMemberOfARoyalHouse> .
            ?id  <http://d-nb.info/standards/elementset/gnd#dateOfBirth> ?bdate .
            FILTER regex(?bdate, '$dateOfBirth') .
            ?id  <http://d-nb.info/standards/elementset/gnd#dateOfDeath> ?ddate .
            FILTER regex(?ddate, '$dateOfDeath') .
        }
        UNION
        { 
            ?id <http://d-nb.info/standards/elementset/gnd#variantNameForThePerson>  \"$name\"^^<http://www.w3.org/2001/XMLSchema#string> ;
                a <http://d-nb.info/standards/elementset/gnd#RoyalOrMemberOfARoyalHouse> .
            ?id  <http://d-nb.info/standards/elementset/gnd#dateOfBirth> ?bdate .
            FILTER regex(?bdate, '$dateOfBirth') .
            ?id  <http://d-nb.info/standards/elementset/gnd#dateOfDeath> ?ddate .
            FILTER regex(?ddate, '$dateOfDeath') .
        }
        UNION
        { 
            ?id <http://d-nb.info/standards/elementset/gnd#preferredNameForThePerson> \"$name\"^^<http://www.w3.org/2001/XMLSchema#string> ;
                a <http://d-nb.info/standards/elementset/gnd#Pseudonym> .
            ?id  <http://d-nb.info/standards/elementset/gnd#dateOfBirth> ?bdate .
            FILTER regex(?bdate, '$dateOfBirth') .
            ?id  <http://d-nb.info/standards/elementset/gnd#dateOfDeath> ?ddate .
            FILTER regex(?ddate, '$dateOfDeath') .
        }
        UNION
        { 
            ?id <http://d-nb.info/standards/elementset/gnd#variantNameForThePerson>  \"$name\"^^<http://www.w3.org/2001/XMLSchema#string> ;
                a <http://d-nb.info/standards/elementset/gnd#Pseudonym> .
            ?id  <http://d-nb.info/standards/elementset/gnd#dateOfBirth> ?bdate .
            FILTER regex(?bdate, '$dateOfBirth') .
            ?id  <http://d-nb.info/standards/elementset/gnd#dateOfDeath> ?ddate .
            FILTER regex(?ddate, '$dateOfDeath') .
        }
    }

Gruß,

Carsten


_______________________________________________
Carsten Klee
Abt. Überregionale Bibliographische Dienste IIE
Staatsbibliothek zu Berlin – Preußischer Kulturbesitz
Potsdamer Straße 33
10785 Berlin

Fon:  +49 30 266-43 44 02
Fax:   +49 30 266-33 40 01
carsten.klee at sbb.spk-berlin.de
www.zeitschriftendatenbank.de

> -----Ursprüngliche Nachricht-----
> Von: lds-bounces at lists.dnb.de [mailto:lds-bounces at lists.dnb.de] Im
> Auftrag von Philipp Zumstein
> Gesendet: Freitag, 12. August 2016 08:12
> An: lds at lists.dnb.de
> Betreff: [Lds] Personensuche in der GND unter Einbezug von
> Hintergrundinformationen
> 
> Liebe Kolleginnen und Kollegen,
> 
> momentan überlegen wir gerade, ob und wie man eine Suche nach
> Personen
> in der GND machen kann unter Einbezug von Hintergrundinformationen.
> 
> Zum Beispiel: Ich suche in den Normdaten nach einer Person "Zimmermann,
> H.", welche einen aktuellen Zeitschriftenartikel im Bereich der
> Theologie auf Deutsch veröffentlicht hat (und somit jetzt gerade in
> einem publikationsfähigen Alter ist, wahrscheinlich einen Beruf in dem
> Bereich hat und aus dem deutschsprachigen Raum kommt). Das Ergebnis
> kann
> dann auch eine kleinere Liste mit möglichen Kandidaten sein, welche dann
> von eineR BearbeiterIn durchgesehen werden können.
> 
> Kennt jemand hierzu Ansätze oder Lösungen? Mit oder ohne Linked Data?
> Unser aktueller Versuch [1] ist nur begrenzt praktikabel und nicht ohne
> Weiteres erweiterbar.
> 
> Vielen Dank und mit besten Grüßen,
> Philipp Zumstein
> 
> 
> [1]
> http://swb.bsz-
> bw.de/DB=2.104/SET=3/TTL=1//CMD?SGE=&ACT=SRCHM&MATCFILTER=Y&
> MATCSET=Y&NOSCAN=Y&PARSE_MNEMONICS=N&PARSE_OPWORDS=N&P
> ARSE_OLDSETS=N&IMPLAND=Y&NOABS=Y&ACT0=SRCHA&SHRTST=50&IKT0
> =2073&TRM0=zimmermann,%20h*&ACT1=*&IKT1=2057&TRM1=3.*&ACT2=
> *&IKT2=8991&TRM2=19**&ACT3=%2B&IKT3=2072&TRM3=tpv*&SRT=RLV&
> COOKIE=U998,Pbszgast,I17,B0728+,SY,NRecherche-DB,D2.104,E220f51ba-
> 620,A,H,R193.197.31.15,FY