【发布时间】:2018-01-27 16:48:18
【问题描述】:
我正在尝试使用 SPARQL 从 Wikidata 获取世界上最著名的电影。
我有以下疑问:
SELECT ?item WHERE {
?item wdt:P31 wd:Q11424.
SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
}
返回所有电影(大约 214143)。
我基本上只需要维基百科上有超过 10 种语言条目的电影,因为我猜这些将是最著名的。
有没有办法在查询本身内部执行此操作,而不检查所有条目?
【问题讨论】:
-
“着名”的有趣定义...请注意,维基数据内容与维基百科内容不同,因此维基数据上使用的语言数量可能多于或少于使用的语言数量在维基百科上。
-
我意识到这一点,但我认为语言(标签)的数量对于确定其受欢迎程度仍然非常有用。
-
可以检索所谓的附加链接,然后计算每部电影的数量。幸运的是,附加链接的数量是一个预先计算好的值:stackoverflow.com/a/46797845/7879193。
-
我也会对电影使用其他一些衡量标准,但如果您对此感到满意:
SELECT ?item (count(distinct ?lang) as ?langCnt) WHERE { ?item wdt:P31 wd:Q11424. ?item rdfs:label ?label . bind(lang(?label) as ?lang) } group by ?item having (count(distinct ?lang) > 10)