我试着用下面的SPARQL查询。通过sparql获取城市信息
SELECT distinct ?city ?cityName ?country ?population ?knownfor WHERE {
?city rdf:type dbo:City .
?city rdfs:label ?cityName.
?city dbo:country ?country.
OPTIONAL{
?city dbp:population ?population.
?city dbo:knownFor ?knownfor.
}
FILTER (lang(?cityName) = 'en')
} ORDER BY ?city
但是,问题是 -
不是每个城市都有
dbp:population
断言,但一些城市有dbp:populationTotal
。因此,对于一些城市,我们可以得到这个人群,但是当我在查询的可选部分写 -OPTIONAL{ ?city dbp:population ?population . ?city dbp:populationTotal ?populationTotal }
两个部分变成空白。同样为dbo:knownFor
谓词(不是每个城市都有knownFor
谓词)。
- 如何在查询中指定我只想要欧洲城市?我找不到它指定城市
感谢您的回答。雅,欧洲的所有城市都没有yago:EuropeanCountries谓词,这就是为什么这些城市失踪。但我的问题是,为什么这个谓词不见了? –
DBpedia中缺少谓词,因为维基百科中没有进行分类。 DBpedia数据中的大多数错误必须通过更正DBpedia数据从中提取的维基百科内容来纠正。去编辑维基百科,等几个小时或几天,然后用DBpedia-live(来自Wikipedia firehose的更新)运行你的查询;或者等待3到9个月进行下一次批量提取,然后针对DBpedia运行您的查询。 – TallTed