Wikimedia Commons:获取子类别的名称(使用SPARQL或MediaWiki API)

时间:2018-07-20 14:28:34

标签: sparql mediawiki mediawiki-api wikidata wikimedia-commons

给定一个特定的类别(即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}

有没有办法做到这一点?

2 个答案:

答案 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工具: