我正试图通过SPARQL从维基数据中获取世界上最着名的电影。
我有以下查询:
SELECT ?item WHERE {
?item wdt:P31 wd:Q11424.
SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
}
返回所有电影(约214143)。
我基本上只需要在维基百科上有超过10种语言条目的电影,因为我猜这些将是最着名的。
有没有办法在查询本身内执行此操作,而不检查所有条目?
答案 0 :(得分:2)
你问题的一个天真的答案是:
SELECT ?movie ?sitelinks WHERE {
?movie wdt:P31 wd:Q11424 .
?movie wikibase:sitelinks ?sitelinks .
FILTER (?sitelinks > 10)
} ORDER BY DESC(?sitelinks)
或者,您可以考虑附加链接的总数。附加链接包括指向维基百科的链接以及Wikiquote,Wikivoyage等链接。优点是附加链接的总数是预先计算的。
| 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 |
Get Wikipedia URLs (sitelinks) in Wikidata SPARQL query
另见这些问题:
正如@TallTed和@AKSW指出的那样,不同语言的标签数量可能与不同语言的维基百科文章数量不同。以下是比较。
维基百科文章排名前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 |
按标签排名前5位的电影
public function track(Request $request) {
// increase stored number here
header('Content-Type: image/gif');
return base64_decode('R0lGODlhAQABAJAAAP8AAAAAACH5BAUQAAAALAAAAAABAAEAAAICBAEAOw==');
}