恢复“原始”订单
问题描述:
我试图从wikidata中恢复电影的演员表。 我对诺博士SPARQL查询如下:恢复“原始”订单
SELECT ?actor ?actorLabel WHERE {
?movie wdt:P161 ?actor .
SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
FILTER(?movie = wd:Q102754)
}
LIMIT 1000
我可以试一下在query.wikidata.org但结果不是我想要的顺序。它给了“肖恩康纳利”,“泽娜马歇尔”,“厄休拉安德斯”。
该数据库具有所需顺序的数据,因为您可以从https://www.wikidata.org/wiki/Q102754中看到包含演员名单(Sean Connery,Ursula Andress,Joseph Wiseman)。一般来说,演员名单是按帐单顺序给出的,而且我想要恢复。
答
SPARQL使用ORDER BY
提供结果的排序,看here
在你的榜样的排序是基于声明的引用数。这里是一个非优化的版本,你想要做什么:
SELECT ?actor ?actorLabel WHERE {
?movie p:P161 ?statement .
?statement ps:P161 ?actor .
OPTIONAL {?statement prov:wasDerivedFrom ?ref . }
SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
FILTER(?movie = wd:Q102754)
}
group by ?movie ?actor ?actorLabel
ORDER BY DESC(count(?ref)) ASC(?actorLabel)
LIMIT 1000
是的,这可以让我按字母顺序排列的演员 - 但我想他们的重要性顺序 - 这大概是它们出现在原来的顺序数据。 –
如何知道结果按“重要性”排序?这是什么样的措施? – AKSW
查看我的更新回答 – AKSW