【问题标题】:Some cities aren't instances of city or big city? Odd behaviour of Wikidata有些城市不是城市或大城市的实例?维基数据的奇怪行为
【发布时间】: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


【解决方案1】:

这些缺失的语句不是truthy

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". }
}

Try it!

它们是正常等级的陈述,但有一个首选等级的陈述。

真实的陈述代表着最好的陈述 给定属性的非弃用等级。也就是说,如果有一个 属性 P2 的首选语句,然后只有首选语句 因为 P2 将被认为是真实的。否则,所有正常等级 P2 的陈述被认为是真实的。

更新

我有decreased 首选语句just now 的等级。请再次测试您的查询。

【讨论】:

  • 有趣。我不知道这也适用于instance of 语句。老实说,我不明白为什么这些陈述不被认为是真实的。我的意思是,慕尼黑是一座城市?
  • @AKSW,我已经更新了我的答案。简而言之,所有未弃用的陈述都是真实的,但首选的陈述更​​加真实..
  • 事实上,这是一种(偶尔的)破坏行为:wikidata.org/w/…
  • +1,接受,它有效,谢谢。虽然我不知道等级,但这是一种理论上的可能性,我思考了一下。但是,在这种情况下没有多大意义。 “马格德堡是一座城市”这句话在知识库中应该是正确的。但是,它仅在 wikidata 页面上是正确的,而在 SPARQL 查询中则不然。哦,男孩,这可能会带来很多麻烦。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-12
  • 2019-08-04
  • 1970-01-01
  • 2023-03-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多