本文介绍了获取超过10种语言的所有维基数据项目?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试通过SPARQL从维基数据获取世界上最著名的电影。
我有以下问题:
SELECT ?item WHERE {
?item wdt:P31 wd:Q11424.
SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
}
它返回所有电影(大约214143)。
我基本上只需要在维基百科上有10个以上语言条目的电影,因为我猜这些会是最著名的。
有没有一种方法可以在查询本身内完成此操作,而无需检查所有条目?
推荐答案
对您的问题的简单回答是:
SELECT ?movie (count(?wikipage) AS ?count) WHERE {
hint:Query hint:optimizer "None" .
?movie wdt:P31 wd:Q11424 .
?wikipage schema:about ?movie .
?wikipage schema:isPartOf/wikibase:wikiGroup "wikipedia"
} GROUP BY ?movie HAVING (?count > 10) ORDER BY DESC(?count)
或者,您可以考虑站点链接的总数。站点链接包括到维基百科的链接,也包括到维基百科、维基旅行等的链接。优点是站点链接的总数是预先计算的。
SELECT ?movie ?sitelinks WHERE {
?movie wdt:P31 wd:Q11424 .
?movie wikibase:sitelinks ?sitelinks .
FILTER (?sitelinks > 10)
} ORDER BY DESC(?sitelinks)
另请参阅以下问题:
- Get Wikipedia URLs (sitelinks) in Wikidata SPARQL query
- Wikidata results sorted by something similar to a PageRank
正如@TallTed和@AKSW指出的那样,不同语言的标签数量可能与不同语言的维基百科文章数量不同。下面是比较。
维基百科文章排名前5的电影
| title | articles | sitelinks | labels |
|---------------------|----------|-----------|--------|
| Avatar | 92 | 103 | 99 |
| Titanic | 86 | 100 | 101 |
| The Godfather | 79 | 103 | 82 |
| Slumdog Millionaire | 72 | 75 | 80 |
| Forrest Gump | 71 | 101 | 84 |
按网站链接排名前5的电影
| title | articles | sitelinks | labels |
|---------------|----------|-----------|--------|
| Avatar | 92 | 103 | 99 |
| The Godfather | 79 | 103 | 82 |
| Forrest Gump | 71 | 101 | 84 |
| Titanic | 86 | 100 | 101 |
| The Matrix | 67 | 94 | 77 |
排名前5的电影
| title | articles | sitelinks | labels |
|------------------------------|----------|-----------|--------|
| The 25th Reich | 2 | 2 | 227 |
| Time Is But Brief | 0 | 0 | 224 |
| Michael Moore in TrumpLand | 6 | 6 | 222 |
| Magnus - The Mozart of Chess | 1 | 1 | 221 |
| Lee Chong Wei | 1 | 1 | 196 |
这篇关于获取超过10种语言的所有维基数据项目?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!