2012-02-07 70 views
1

對於以下簡單查詢,我在dbpedia sparql端點上得到「SR171:事務超時」:爲什麼會出現此錯誤?我沒有設置任何超時 - 這是在0簡單的sparql查詢不起作用,日期比較

PREFIX owl: <http://www.w3.org/2002/07/owl#> 
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> 
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> 
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
PREFIX foaf: <http://xmlns.com/foaf/0.1/> 
PREFIX dc: <http://purl.org/dc/elements/1.1/> 
PREFIX : <http://dbpedia.org/resource/> 
PREFIX dbpedia2: <http://dbpedia.org/property/> 
PREFIX dbpedia: <http://dbpedia.org/> 

PREFIX ont: <http://dbpedia.org/ontology/> 
PREFIX foaf: <http://xmlns.com/foaf/0.1/> 
SELECT ?name ?date (bif:substring(STR(?date), 1, 4) AS ?year) WHERE { 
    ?person ont:birthDate ?date . 
    ?person foaf:name ?name 

    . FILTER ((fn:string-length(STR(?date)) = 10) && (bif:substring(STR(?date), 9, 2) = '05') && (bif:substring(STR(?date), 6, 2) = '02') && (?date > "1868-01-01"^^xsd:date) && (?date < "2005-01-01"^^xsd:date)) 

回答

7

這是因爲你的查詢是太硬了DBpedia的端點沒有服務的其他用戶造成不利影響回答。

由於DBpedia中是一個衆所周知的公共SPARQL端點它會非常頻繁使用所以誰託管它的人擁有它配置強加多久查詢可以這麼跑了嚴格的限制就是流氓用戶不使服務不可用爲他人。

在你的情況下,你的查詢將花費很長時間,因爲你問了一些有很多初始結果(592299是精確的),然後在其上應用FILTERFILTER在SPARQL中相當昂貴,特別是在執行字符串操作和日期比較時。 AFAIK DBPedia超時時間相當短,幾秒鐘內,端點根本無法在該時間內完成查詢,因爲應用FILTER需要很長的時間。

- 這是我見慣了多少結果查詢的第一部分是返回查詢:

PREFIX ont: <http://dbpedia.org/ontology/> 
PREFIX foaf: <http://xmlns.com/foaf/0.1/> 

SELECT COUNT(*) 
WHERE 
{ 
    ?person ont:birthDate ?date . 
    ?person foaf:name ?name 
} 
+0

因此,有什麼我可以做。它在清晨和深夜工作。有趣的是,查詢執行幾乎不需要1-2秒,我看到了錯誤。所以,它在平時應該不會工作。平時在系統中工作嗎? – 2012-02-09 14:07:41

+0

這可能取決於您所在的時區,因此當峯值使用率與您的時區相關時。我在美國西海岸(PST),試圖在我的時間早上9點運行查詢,並且超時 – RobV 2012-02-09 17:02:43

+0

我在東歐,正如我上面所說的那樣。這對於Web應用程序來說是不可接受的。我想最終在PHP腳本中使用帶有參數的查詢。我知道這是數據庫Pedia.DB是否有一個選項與數據庫Pedia申請開發人員「關鍵」像其他API或某種形式的協議(甚至支付),這將增加查詢的時間? – 2012-02-11 11:09:41