SPARQL、dbpedia:检索链接为 属性 的资源值,类型为 person

SPARQL, dbpedia : Retrieve values of resource linked as property, type person

我需要检索一个人的母亲的姓名,但我不知道该怎么做。

这是我目前正在处理的查询:

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 包含指向此人 parents 的链接,我似乎不知道如何:

  1. 只取回母亲和
  2. 如何得到她name/label,因为这只有returns url.

例如: 对于:http://dbpedia.org/page/Charlotte_of_Mecklenburg-Strelitz

?parent是:

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

正如@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)