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 的链接,我似乎不知道如何:
- 只取回母亲和
- 如何得到她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)
我需要检索一个人的母亲的姓名,但我不知道该怎么做。
这是我目前正在处理的查询:
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 的链接,我似乎不知道如何:
- 只取回母亲和
- 如何得到她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)