【发布时间】:2017-11-03 16:10:29
【问题描述】:
在查看官方示例查询“大陆、国家、地区和首都”的结果(https://query.wikidata.org/,为方便起见这里仅限于德国:link)时,我注意到德国联邦州的一些首都是失踪。例如作为黑森州首府的威斯巴登。我注意到威斯巴登是big city 的一个实例,但不是city 的实例(参见https://www.wikidata.org/wiki/Q1721),这与其他一些城市不同。我还可以通过将第 17 行更改为 ?city wdt:P31/wdt:P279? wd:Q515 来包括作为 city 子类的城市来缓解这个问题。
仍然失踪的四个城市之一是萨克森-安哈尔特州首府马格德堡。
诊断查询
SELECT ?cityLabel ?props
WHERE {
?city wdt:P31 ?props.
FILTER(?city = wd:Q1733 || ?city = wd:Q1726).
SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
}
表明马格德堡甚至不是city 的一个实例,尽管它显然是根据其维基数据页面https://www.wikidata.org/wiki/Q1733。
我是 Wikidata 和 SPARQL 的新手。但是,这对我来说似乎是错误的。我该怎么做才能获得德国联邦州的所有首都?这种行为的原因是什么?
【问题讨论】:
-
说实话,我不认为你做错了什么。查询
SELECT * WHERE { wd:Q1733 wdt:P31 ?o }应该返回所有类型,但似乎出了点问题。 -
好吧,看起来对于没有引用的语句只返回一个。例如,获取国家
SELECT * WHERE { wd:Q1733 wdt:P17 ?o }的查询也只返回一个值。另一方面,如果你用SELECT * WHERE { wd:Q1733 wdt:P1376 ?o }查看capital of的语句,它会返回多个值。
标签: sparql wikidata-query-service