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

时间:2018-11-29 12:46:44

标签: database sparql dbpedia

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

这是我当前正在使用的查询:

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. 如何获取她的名字/标签,因为这只会返回网址。

例如: 对于: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

1 个答案:

答案 0 :(得分:1)

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