SPARQL, dbpedia: получить значения ресурса, связанного как свойство, тип person - PullRequest
0 голосов
/ 29 ноября 2018

Мне нужно узнать имя матери человека, и я понятия не имею, как это сделать.

Это запрос, с которым я сейчас работаю:

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> 
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
PREFIX foaf: <http://xmlns.com/foaf/0.1/> 
PREFIX : <http://dbpedia.org/resource/> 


SELECT DISTINCT 
    ?resource ?depiction ?label ?parent ?bd 
WHERE { 
    ?resource a dbo:Royalty ; foaf:depiction ?depiction ; rdfs:label ?label;
    dbo:parent ?parent; dbo:birthDate ?bd; 
    dbo:birthPlace ?bp . ?bp dbo:isPartOf :England . 
    FILTER(
        LANGMATCHES(LANG(?label), 'en') && ?bd < '1900-01-01'^^xsd:date)
} 
ORDER BY DESC(?bd)

Некоторые из них были заданы, некоторые из них были добавлены мной.

Как вы видите, я хочу получить всех королевских особ (с меткой и изображением), которые родились в Англии до 1900 года. Но я также хочу получить имя матери человека.

?parent содержит ссылки на родителей этого человека, и я не могу понять, как:

  1. получить только мать и
  2. Как получитьее имя / метка, поскольку при этом возвращается только URL.

Например: Для: http://dbpedia.org/page/Charlotte_of_Mecklenburg-Strelitz

?parent s:

http://dbpedia.org/page/Princess_Elisabeth_Albertine_of_Saxe-Hildburghausen

и

http://dbpedia.org/page/Duke_Charles_Louis_Frederick_of_Mecklenburg

Но мне бы понадобилось:

Princess Elisabeth Albertine of Saxe-Hildburghausen

1 Ответ

0 голосов
/ 29 ноября 2018

Как прокомментировал @AKSW, возможно неполный запрос (отформатированный здесь для большей ясности) -

PREFIX  rdfs:  <http://www.w3.org/2000/01/rdf-schema#> 
PREFIX   rdf:  <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
PREFIX  foaf:  <http://xmlns.com/foaf/0.1/> 
PREFIX  yago:  <http://dbpedia.org/class/yago/>
PREFIX      :  <http://dbpedia.org/resource/> 

SELECT DISTINCT 
  ?resource
  ?label
  ?bd
  ?depiction
  ?parent
  ?parentLabel 
WHERE
  { ?resource  a                                          dbo:Royalty ; 
               foaf:depiction                             ?depiction ; 
               rdfs:label                                 ?label ; 
               dbo:parent                                 ?parent ; 
               dbo:birthDate                              ?bd ; 
               dbo:birthPlace/dbo:location?/dbo:isPartOf  :England . 
    ?parent    rdfs:label                                 ?parentLabel . 
    FILTER     (  LANGMATCHES ( LANG ( ?parentLabel ), 'en' )
               && LANGMATCHES ( LANG ( ?label ), 'en' )
               && ?bd < '1900-01-01'^^xsd:date
               )
    { ?parent  foaf:gender                                "female"@en } 
    UNION 
    { ?parent  a                                          yago:Female109619168 } 
  } 
ORDER BY DESC(?bd)
...