给定一个特定的类别(即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}
有没有办法做到这一点?
答案 0 :(得分:1)
API:
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
(通过Quarry工具或直接通过on Toolforge帐户)
但是仅通过PetScan递归,或者通过查询链(对于每个类别,其中 subcats 不为0的查询)通过API / SQL手动递归:
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
答案 1 :(得分:0)
SPARQL
截至2018年7月,Wikidata的Wikimedia Commons 类别is not covered的结构:
Exceptions是Commons,它具有迄今为止最大的类别集,因此我们决定暂时不对其进行介绍,直到我们确保所有内容都按计划使用较小的数据集即可正常工作。
MediaWiki API
不可能,请参见T37402。
替代
使用PetScan工具: