我正在尝试使用 SPARQL 查询来检索有关 DBpedia 资源(人)的信息。我想使用相同的查询通过参数化资源 URI 来检索有关任何 Person 的数据。由于特定资源可能不存在某些属性,因此我正在使用该OPTIONAL
语句。这是我的查询:
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX dbo: <http://dbpedia.org/ontology/>
PREFIX dbpprop: <http://dbpedia.org/property/>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT DISTINCT ?label ?abstract ?placeOfBirth
?birthPlace ?birthDate ?deathDate ?page ?thumbnail
WHERE {
<http://dbpedia.org/resource/Neil_Simon> rdfs:label ?label ;
dbo:abstract ?abstract ;
foaf:page ?page .
OPTIONAL {
<http://dbpedia.org/resource/Neil_Simon> dbpprop:placeOfBirth ?placeOfBirth ;
dbpprop:birthPlace ?birthPlace ;
dbo:birthDate ?birthDate ;
dbo:deathdate ?deathDate ;
dbo:thumbnail ?thumbnail .
}
FILTER (LANG(?label) = 'en')
FILTER (LANG(?abstract) = 'en')
}
LIMIT 1
除了 label、abstract 和 page in 之外,我已经保留了所有内容OPTIONAL
,因为如果我对另一个人使用相同的查询,他们可能没有这些属性。问题是,这些可选属性都没有出现在结果中。birthDate
在 Neil Simon 的案例中,您可以看到birthPlace
和的值:http thumbnail
: //dbpedia.org/resource/Neil_Simon。但是,当我运行查询时,这些值不会显示:DBpedia SPARQL query。我做错了什么,我怎样才能有选择地检索这些属性?