Запрос Sparql для GND-RDF

Каков правильный запрос SPARQL для извлечения имени, фамилии, даты рождения и места рождения всех "DifferentiatedPerson" в данных GND RDF / XML? (Домашняя страница данных: http://www.dnb.de/DE/Service/DigitaleDienste/Datendienst/datendienst_node.html)

Пример отрывка данных:

<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:geo="http://www.opengis.net/ont/geosparql#" xmlns:foaf="http://xmlns.com/foaf/0.1/" xmlns:sf="http://www.opengis.net/ont/sf#" xmlns:isbd="http://iflastandards.info/ns/isbd/elements/" xmlns:gndo="http://d-nb.info/standards/elementset/gnd#" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:marcRole="http://id.loc.gov/vocabulary/relators/" xmlns:lib="http://purl.org/library/" xmlns:umbel="http://umbel.org/umbel#" xmlns:rdau="http://rdaregistry.info/Elements/u/" xmlns:bibo="http://purl.org/ontology/bibo/" xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:skos="http://www.w3.org/2004/02/skos/core#">
...
  <rdf:Description rdf:about="http://d-nb.info/gnd/1070954047">
            <rdf:type rdf:resource="http://d-nb.info/standards/elementset/gnd#DifferentiatedPerson" />
            <gndo:gndIdentifier>1070954047</gndo:gndIdentifier>
            <gndo:preferredNameForThePerson>Kunz, Hans Jürgen</gndo:preferredNameForThePerson>
            <gndo:preferredNameEntityForThePerson rdf:parseType="Resource">
                    <gndo:forename>Hans Jürgen</gndo:forename>
                    <gndo:surname>Kunz</gndo:surname>
            </gndo:preferredNameEntityForThePerson>
            <gndo:affiliation rdf:resource="http://d-nb.info/gnd/2010684-1" />
            <gndo:affiliation rdf:resource="http://d-nb.info/gnd/2063435-3" />
            <gndo:professionOrOccupation rdf:resource="http://d-nb.info/gnd/4141636-3" />
            <gndo:professionOrOccupationAsLiteral>Zootechniker</gndo:professionOrOccupationAsLiteral>
            <gndo:geographicAreaCode rdf:resource="http://d-nb.info/standards/vocab/gnd/geographic-area-code#XA-DE" />
            <gndo:publication>Abgangsursachen bei Ferkeln und Sauen. - 1986 (Diss., Kiel)</gndo:publication>
            <gndo:placeOfBirth rdf:resource="http://d-nb.info/gnd/4050610-1" />
            <gndo:gender rdf:resource="http://d-nb.info/standards/vocab/gnd/Gender#male" />
            <gndo:dateOfBirth rdf:datatype="http://www.w3.org/2001/XMLSchema#gYear">1953</gndo:dateOfBirth>
  </rdf:Description>

Я пробовал следующий SPARQL (данные хранятся в Apache Jena TDB):

PREFIX gndo: <http://d-nb.info/standards/elementset/gnd#>
SELECT ?forename ?surname ?dateOfBirth ?placeOfBirth
WHERE {
  ?person a gndo:DifferentiatedPerson .
  ?person gndo:forename ?forename .
  ?person gndo:surname ?surname .
  ?person gndo:dateOfBirth ?dateOfBirth .
  ?person gndo:placeOfBirth ?placeOfBirth
}

не возвращает результатов. (Поскольку это мой первый запрос SPARQL, он может быть совершенно неправильным ...)


person Ralf Eichinger    schedule 17.06.2015    source источник
comment
Чтобы отлаживать запросы SPARQL, удаляйте части, пока что-нибудь не произойдет. так работает PREFIX ... SELECT * {? person a gndo: DifferentiatedPerson} LIMIT 10? Если да, добавьте следующий тройной узор. и т. д. и т. д.   -  person AndyS    schedule 17.06.2015


Ответы (1)


Имя и имя связаны с людьми через свойство gndo: preferredNameEntityForThePerson и blanknode, т.е. запрос должен иметь вид

PREFIX gndo: <http://d-nb.info/standards/elementset/gnd#>
SELECT ?forename ?surname ?dateOfBirth ?placeOfBirth
WHERE {
  ?person a gndo:DifferentiatedPerson ;
          gndo:dateOfBirth ?dateOfBirth ;
          gndo:placeOfBirth ?placeOfBirth ;
          gndo:preferredNameEntityForThePerson [
                                                gndo:forename ?forename ;
                                                gndo:surname ?surname 
                                               ]
}
person UninformedUser    schedule 18.06.2015