这是我的sparql查询,用于获取该国家/地区的某些属性的所有国家/地区名称。
SELECT distinct ?country ?capital ?currency ?lat ?long
WHERE {
?country rdf:type dbo:Country .
?country dbo:capital ?capital .
?country dbo:currency ?currency .
?country geo:lat ?lat.
?country geo:long ?long.
}
ORDER BY ?country
但问题是,有些国家失踪了,比如“瑞士”。您转到http://dbpedia.org/page/Switzerland此页面,您会看到它的类型是国家/地区。你也不会找到“奥地利”而不是“奥地利帝国”。为什么?有一个名为“奥地利”的实体,它是dbo:国家类型。
答案 0 :(得分:2)
瑞士似乎没有dbo:capital
,这就是为什么它不包含在您的查询结果中。
如果您想获得没有某些属性的结果,请使用OPTIONAL
:
SELECT distinct ?country ?capital ?currency ?lat ?long
WHERE {
?country rdf:type dbo:Country .
OPTIONAL
{
?country dbo:capital ?capital .
?country dbo:currency ?currency .
?country geo:lat ?lat.
?country geo:long ?long.
}
}
ORDER BY ?country
虽然此查询甚至返回非国家/地区的实体(但出于某种原因dbo:Country
),例如Cinema of Switzerland。