2011-12-18 51 views
3

HI運行一個查詢時,有哪些是工作,直到昨天查詢:超時事務上DBpedia中

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> 
    PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> 
    PREFIX foaf: <http://xmlns.com/foaf/0.1/> 
    SELECT DISTINCT(?film_link) ?film_abstract ?film_name ?wikipage 
    WHERE { 
    ?film_link rdf:type <http://dbpedia.org/ontology/Film> . 
    ?film_link rdfs:comment ?film_abstract 
    FILTER (langMatches(lang(?film_abstract), "EN")) . 
    ?film_link foaf:name ?film_name . 
    ?film_title foaf:page ?wikipage . 

    } 

但今天它顯示:炫技42000錯誤的估計執行時間99232592(秒)超過極限1500(秒)。 我以前也看過這個錯誤,但是當我運行這樣的查詢後,它再次運行一段時間.. 任何人都可以解釋錯誤的含義?

+0

你爲什麼不接受你的問題的答案?這種行爲不鼓勵人們幫助你... – glglgl 2011-12-21 08:55:48

回答

3

這意味着Virtuoso的查詢計劃器(Virtuoso是DBPedia運行的三重數據庫)估計了評估您的查詢需要多長時間,並且它認爲它需要很長的時間,因此它拒絕運行查詢。

我懷疑問題出在你查詢的最後三重模式:

?film_title foaf:page ?wikipage 

你從來沒有這一點你問有啥炫技做之前,請使用這些變量是跨產品每一個可能有三倍foaf:page的謂詞位置與其餘查詢中的結果。

如果你改變了這個以下,應該很好地工作:

?film_link foaf:page ?wikipage 

我懷疑這是你的意思反正寫這個工程雖然它仍然是相當緩慢的,因爲你的查詢是相當廣泛,條款往往相當遲鈍評估。

+0

爲了解決這個問題,我使用了我將上述查詢拆分爲兩個查詢第一個頁面名稱和鏈接,另一個與抽象。 PREFIX rdfs: SELECT DISTINCT(?film_link)?film_abstract WHERE { ?film_link rdf:type 。 ?film_link rdfs:comment?film_abstract FILTER(langMatches(lang(?film_abstract),「EN」)) }仍然存在相同的問題。當我刪除過濾器時它會得到解決。 Thi過濾器很重要,因爲我只需要英語,在這方面可以有人幫助我? – 2012-01-22 15:34:51

+0

有沒有其他的「過濾器」? – 2012-01-22 15:37:50

+0

否「FILTER」是過濾語言的唯一方法。如果DBPedia拒絕你的查詢,你可能想調查從他們的數據庫轉儲中創建DBPedia的本地副本 – RobV 2012-01-22 19:38:12