SPARQL 和 [属性] 的查询
SPARQL and [property] of query
我正在尝试使用 DBpedia 中的 SPARQL 从 <http://dbpedia.org/ontology/Person>
查询数据。但是,我尝试匹配的 属性 列为 dbp:children of
(此处示例:http://dbpedia.org/page/Angelina_Jolie
)。
但是,在进行查询时,dbp:childrenOf
、dbo:children_of
和类似的其他方法不起作用。我应该如何要求 属性?
谢谢!
这是我的示例查询:
PREFIX dbo: <http://dbpedia.org/ontology/>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX type: <http://dbpedia.org/class/yago/>
PREFIX dbp: <http://dbpedia.org/property/>
SELECT DISTINCT ?person ?birthDate ?birthPlace ?parents
WHERE {
?person a dbo:Person .
{ ?person rdfs:label "Angelina Jolie"@en }
UNION { ?person dbp:name "Angelina Jolie"@en } .
?person dbo:birthDate ?birthDate.
?person dbo:birthPlace ?bp.
?bp rdfs:label ?birthPlace.
OPTIONAL { ?person dbp:childrenOf ?parents}
FILTER (LANG(?birthPlace)='en')
}
我要修复的行是 OPTIONAL
子句。
不幸的是,我认为 Angelina children 的任何一个都没有 Wikipedia 页面(因此没有 DBpedia 页面),因此您很难用这个特定示例解决任何答案。
这是一个略有不同的查询版本,用于检索不同人的 parents -
PREFIX dbo: <http://dbpedia.org/ontology/>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX type: <http://dbpedia.org/class/yago/>
PREFIX dbp: <http://dbpedia.org/property/>
SELECT DISTINCT ?person ?birthDate ?birthPlace ?parents
WHERE {
?person a dbo:Person .
{?person rdfs:label "Ras Barker"@en}
UNION
{?person dbp:name "Ras Barker"@en}
UNION
{?person dbo:birthName "Ras Barker"@en}
OPTIONAL { ?person dbo:birthDate ?birthDate. }
OPTIONAL { ?person dbo:birthPlace ?bp . ?bp rdfs:label ?birthPlace. }
#OPTIONAL { ?person dbo:parent ?parents }
OPTIONAL { ?parents dbo:child ?person }
FILTER (LANG(?birthPlace)='en')
}
我选择使用 dbo
谓词 child
而不是 childrenOf
(不确定是否正在使用此谓词)。并将 birth-related 内容包装到 OPTIONAL
子句中,因为您不能 100% 依赖于具有这些谓词的实例数据。
我正在尝试使用 DBpedia 中的 SPARQL 从 <http://dbpedia.org/ontology/Person>
查询数据。但是,我尝试匹配的 属性 列为 dbp:children of
(此处示例:http://dbpedia.org/page/Angelina_Jolie
)。
但是,在进行查询时,dbp:childrenOf
、dbo:children_of
和类似的其他方法不起作用。我应该如何要求 属性?
谢谢!
这是我的示例查询:
PREFIX dbo: <http://dbpedia.org/ontology/>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX type: <http://dbpedia.org/class/yago/>
PREFIX dbp: <http://dbpedia.org/property/>
SELECT DISTINCT ?person ?birthDate ?birthPlace ?parents
WHERE {
?person a dbo:Person .
{ ?person rdfs:label "Angelina Jolie"@en }
UNION { ?person dbp:name "Angelina Jolie"@en } .
?person dbo:birthDate ?birthDate.
?person dbo:birthPlace ?bp.
?bp rdfs:label ?birthPlace.
OPTIONAL { ?person dbp:childrenOf ?parents}
FILTER (LANG(?birthPlace)='en')
}
我要修复的行是 OPTIONAL
子句。
不幸的是,我认为 Angelina children 的任何一个都没有 Wikipedia 页面(因此没有 DBpedia 页面),因此您很难用这个特定示例解决任何答案。
这是一个略有不同的查询版本,用于检索不同人的 parents -
PREFIX dbo: <http://dbpedia.org/ontology/>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX type: <http://dbpedia.org/class/yago/>
PREFIX dbp: <http://dbpedia.org/property/>
SELECT DISTINCT ?person ?birthDate ?birthPlace ?parents
WHERE {
?person a dbo:Person .
{?person rdfs:label "Ras Barker"@en}
UNION
{?person dbp:name "Ras Barker"@en}
UNION
{?person dbo:birthName "Ras Barker"@en}
OPTIONAL { ?person dbo:birthDate ?birthDate. }
OPTIONAL { ?person dbo:birthPlace ?bp . ?bp rdfs:label ?birthPlace. }
#OPTIONAL { ?person dbo:parent ?parents }
OPTIONAL { ?parents dbo:child ?person }
FILTER (LANG(?birthPlace)='en')
}
我选择使用 dbo
谓词 child
而不是 childrenOf
(不确定是否正在使用此谓词)。并将 birth-related 内容包装到 OPTIONAL
子句中,因为您不能 100% 依赖于具有这些谓词的实例数据。