【发布时间】:2020-06-20 22:56:54
【问题描述】:
我正在尝试从 Wikidata 的 API 获取一些公司的 Wikipedia infoxbox 数据。例如,Deliveroo:
https://www.wikidata.org/w/api.php?action=wbgetentities&format=jsonfm&sites=enwiki&titles=Deliveroo&props=info%7Clabels%7Cdescriptions%7Cclaims&languages=en
API 返回的 JSON(在这种情况下实际上是嵌入在 HTML 中的 JSON - 对纯 JSON 使用 format=jsonfm)缺少来自 Wikipedia 页面的一些数据,例如“行业:在线食品订购、食品配送”。有没有办法用维基数据找到这些数据?此外,返回的数据使用代码代替属性名称,例如,对于 Wikipedia 信息框中的“Founded”属性,Wikidata 具有:
mainsnak": {
"snaktype": "value",
"property": "P571",
"hash": "7f617d23c9e1f8b6ce23c06baf4d3bdad9b4fbb9",
"datavalue": {
"value": {
"time": "+2013-00-00T00:00:00Z",
"timezone": 0,
"before": 0,
"after": 0,
"precision": 9,
"calendarmodel": "http://www.wikidata.org/entity/Q1985727"
},
"type": "time"
},
"datatype": "time"
},
我猜"property": "P571", 指的是founded 属性,但我不确定如何将这些代码映射到实际的文本名称。任何帮助将不胜感激。
【问题讨论】:
-
我不确定,但认为 API 解决方案会很痛苦(您可能不得不再次询问 API 以将编码属性翻译成人类语言)。对于这些任务,使用SPARQL 构建查询要容易得多。例如,访问this query 并打开右侧的“编辑 SPARQL”...它会简单地获取食品行业的所有公司并打印它们的位置和运营项目(如果有)。您可以获取 JSON 和其他格式的结果。
-
好吧,也许...您需要获得哪些公司?这只是一些公司的列表,还是您想要所有具有某些特征的公司(例如 GB 的食品行业)?
-
不一定是同一个数据。有关更多详细信息/其他选项,请参阅this answer。
-
我不知道任何可以从信息框中提取所有字段的解决方案。 Wikipedia 中的一些信息框是从 Wikidata 填充的,但是有些是手动维护的并且具有不同的结构(这就是 @Tgr 所说的)。要深入了解可用的内容,您可以查看Deliveroo Wikidata item。如您所见,没有关于英国或“科技”的信息。一般来说,您可以过滤项目并获取某些属性的值。但不幸的是,要获得所有公司的所有价值是不可能的(或非常困难的)。
-
@Max888 DBPedia 数据提取自维基百科信息框(以及其他一些来源)。 Wikidata 通常不是,尽管有时人们确实将信息从 Wikipedia infobox 复制到 Wikidata,并且一些 Wikipedia infobox 确实从 Wikidata 中提取信息。因此,如果您特别想要信息框中的数据,您应该使用 DBPedia。 Wikidata 的信息有些不同 - 可能更好或更糟,取决于您的用例。
标签: mediawiki wikipedia wikidata