2

给定一个特定类别(即https://commons.wikimedia.org/wiki/Category:Motorcycles),我想在 SPARQL 中递归地获取所有子类别的名称:

SELECT ?category ?entityLabel WHERE {
  SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
  #get sub categories of category wd:Q7025402
}
LIMIT 10000

或使用 MediaWiki API:

https://commons.wikimedia.org/w/api.php?{get all subcategories of Category:Motorcycles}

有没有办法做到这一点?

4

2 回答 2

2

接口:

https://commons.wikimedia.org/w/api.php?action=query&list=categorymembers&cmtitle=Category:Motorcycles&cmtype=subcat&utf8=1&format=json

SQL:

https://quarry.wmflabs.org/query/28793

(通过采石工具或直接如果您在 Toolforge 上有帐户)

但只能通过 PetScan 或通过 API/SQL 通过查询链手动递归(查询每个类别,其中subcats不为 0):

https://commons.wikimedia.org/w/api.php?action=query&generator=categorymembers&gcmtitle=Category:Motorcycles&gcmtype=subcat&prop=categoryinfo&utf8=1&format=json

https://quarry.wmflabs.org/query/28794
于 2018-08-06T13:53:58.443 回答
0

SPARQL

截至 2018 年 7 月,维基共享资源类别的结构并未包含在维基数据中:

例外是 Commons,它拥有迄今为止最大的类别集,因此我们决定暂时不涵盖它,直到我们确保一切都按计划使用较小的数据集。

媒体维基 API

不可能,请参阅T37402

备择方案

使用 PetScan 工具:

于 2018-07-21T07:00:02.620 回答