我正在尝试获取给定Wikidata项的所有超名的列表。例如,我想遍历";"的子类;的元素https://www.wikidata.org/wiki/Q4421.
的SPARQL命令https://query.wikidata.org看起来像
您可以使用属性路径(*)语法。
在这种情况下,wdt:P279*提到0或更多时间wdt:P279,它是Wikidata模型中等价项的子类。
我在这里添加了一些变化,包括深度,这样你就可以订购
SELECT ?entity ?entityLabel (count(?mid) as ?depth) WHERE {
wd:Q4421 wdt:P279* ?mid.
?mid wdt:P279* ?entity
SERVICE wikibase:label { bd:serviceParam wikibase:language "en" }
} group by ?entity ?entityLabel
order by ?depth
https://query.wikidata.org/#SELECT%20%3Fentity%20%3FentityLabel%20%28count%28%3Fmid%29%20as%20%3Fdepth%29%20WHERE%20%7B%0A%20%20wd%3AQ4421%20wdt%3AP279%2a%20%3Fmid.%0A%20%20%3Fmid%20wdt%3AP279%2a%20%3Fentity%0A%20%20SERVICE%20wikibase%3Alabel%20%7B%0A%20%20%20%20bd%3AserviceParam%20wikibase%3Alanguage%20%22en%22%20.%0A%20%20%20%7D%0A%7D%20group%20by%20%3Fentity%20%3FentityLabel%0Aorder%20by%20%3Fdepth
刚刚找到一个工具,它正好解决了我的问题。https://angryloki.github.io/wikidata-graph-builder/?property=P279&item=Q4421
您可以使用SPARQL递归语法*
:
SELECT ?entity WHERE {
wd:Q4421 wdt:P279* ?entity.
}
请参阅query.wikidata.org