2013-05-03 169 views
2

我想要獲取dbpedia中存在的所有電影的數據(電影標題,導演名稱,演員姓名和維基百科鏈接)。使用SPARQL查詢電影dbpedia

我在http://dbpedia.org/snorql/上試過這個查詢。

SELECT ?film_title ?star_name ?nameDirector ?link WHERE { 
    { 
    SELECT DISTINCT ?movies ?film_title 
    WHERE { 
     ?movies rdf:type <http://dbpedia.org/ontology/Film>; 
     rdfs:label ?film_title. 
    } 
    }. 
    ?movies dbpedia-owl:starring ?star; 
    foaf:isPrimaryTopicOf ?link; 
    dbpedia-owl:director ?director. 
    ?director foaf:name ?nameDirector. 
    ?star foaf:name ?star_name. 
    FILTER LANGMATCHES(LANG(?film_title), 'en') 
} LIMIT 100 

迴應似乎是正確的,但響應時間很慢,所以我想知道如果我可以改進我的查詢以獲得更快的響應。

+0

所以你想出了一個更好的查詢?你可以和我們分享嗎? – 2014-12-07 16:23:32

回答

0

您可以在查詢中更改一些可能使其更快的事情。

首先,您的SELECT DISTINCT子查詢的要點是什麼?那只是試圖消除重複的電影標題?如果你可以住幾個重複的東西,刪除它可能會讓事情變得更快。

其次,FILTER子句要求數據庫掃描所有可能的匹配項,並評估每個可能匹配項上的表達式,以確定是保留還是丟棄它。再次,如果您可以忍受獲取一些重複數據,並且不介意非英語語言標記,那麼刪除FILTER可能會使查詢運行得更快。