恢复“原始”订单

问题描述:

我试图从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 
+0

是的,这可以让我按字母顺序排列的演员 - 但我想他们的重要性顺序 - 这大概是它们出现在原来的顺序数据。 –

+0

如何知道结果按“重要性”排序?这是什么样的措施? – AKSW

+0

查看我的更新回答 – AKSW