Sparql 有些城市不是';城市还是大城市?维基数据的奇怪行为

Sparql 有些城市不是';城市还是大城市?维基数据的奇怪行为,sparql,wikidata,Sparql,Wikidata,在检查“大陆、国家、地区和首都”官方示例查询的结果时(在上,为方便起见,此处仅限于德国:),我注意到德国联邦州的一些首都缺失。例如,威斯巴登作为黑森州的首府。我注意到威斯巴登是大城市的一个例子,但与其他一些城市相比,它不是城市的一个例子。通过将第17行更改为?city wdt:P31/wdt:P279,我还可以将属于city子类的城市包括在内,从而缓解了这个问题?wd:Q515 四个仍然失踪的城市之一是萨克森州安哈尔特的首府马格德堡。 诊断查询 选择cityLabel道具 在哪里{ ?城市wdt

在检查“大陆、国家、地区和首都”官方示例查询的结果时(在上,为方便起见,此处仅限于德国:),我注意到德国联邦州的一些首都缺失。例如,威斯巴登作为黑森州的首府。我注意到威斯巴登是大城市的一个例子,但与其他一些城市相比,它不是城市的一个例子。通过将第17行更改为
?city wdt:P31/wdt:P279,我还可以将属于
city
子类的城市包括在内,从而缓解了这个问题?wd:Q515

四个仍然失踪的城市之一是萨克森州安哈尔特的首府马格德堡。
诊断查询

选择cityLabel道具
在哪里{
?城市wdt:P31?道具。
过滤器(?city=wd:Q1733 | |?city=wd:Q1726)。
服务wikibase:label{bd:serviceParam wikibase:language“[AUTO_language],en.”
}
显示马格德堡甚至不是
城市的一个实例,尽管它显然是根据其Wikidata页面


我对Wikidata和SPARQL不熟悉。然而,在我看来,这似乎是错误的。我该怎么做才能得到德国联邦各州的所有首都?这种行为的原因是什么?

这些缺失的语句不是:

它们是普通的秩语句,但有一个首选的秩语句

真实的陈述代表最好的陈述 给定属性的未弃用列组。也就是说,如果有 属性P2的首选语句,然后仅首选语句 因为P2将被认为是真实的。否则,所有正常秩 P2的语句被认为是真实的

更新


我拥有首选语句的排名。请再次测试您的查询。

老实说,我不认为您做错了什么。查询
SELECT*WHERE{wd:Q1733 wdt:P31?o}
应该返回所有类型,但看起来好像出了问题。对于没有引用的语句,似乎只返回一个。例如,获取country
SELECT*WHERE{wd:Q1733 wdt:P17?o}
的查询也只返回一个值。另一方面,如果使用
SELECT*WHERE{wd:Q1733 wdt:P1376?o}
查看
capital of
的语句,它将返回多个值。有趣。我不知道这也适用于
语句的
实例。老实说,我不明白为什么这些说法不被认为是真的。我是说,慕尼黑是一座城市?@AKSW,我已经更新了我的答案。简言之,所有未被否决的语句都是真实的,但首选语句更真实。事实上,这是(偶尔)故意破坏行为:+1,接受,有效,谢谢。虽然我不知道等级,但我思考,这是一种理论上的可能性。然而,在这种情况下,它没有多大意义。“马格德堡是一座城市”这句话在知识库中应该是正确的。但是,这仅在wikidata页面上是正确的,而在SPARQL查询中不是正确的。哦,天哪,这是一个潜在的麻烦来源。
SELECT ?statement ?valueLabel ?rank ?best
WHERE {
  wd:Q1733 p:P31 ?statement.
  ?statement ps:P31 ?value .
  ?statement wikibase:rank ?rank .
  OPTIONAL { ?statement a ?best . }
  SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
}