2014-10-01 112 views
3

我使用live-dbpedia來檢索人員列表。我在live-dbpedia endpoints上執行sparql查詢以獲得結果。我已經在查詢中修復了偏移量和限制值,並且在每次10000次嘗試後獲取記錄。但是當我試圖執行在580000偏移值,504網關超時錯誤發生。使用SPARQL獲取人員列表dbpedia

不工作 SPARQL查詢:

SELECT DISTINCT ?dbpedia_link str(?name) as ?label str(?label1) as ?label1 ?freebase_link WHERE { 
     ?dbpedia_link rdfs:label ?label1 . 
     ?dbpedia_link foaf:name ?name . 
     { 
     { ?dbpedia_link rdf:type dbpedia-owl:Person }        
     }       
     OPTIONAL {?dbpedia_link owl:sameAs ?freebase_link . 
     FILTER regex(?freebase_link, "^http://rdf.freebase.com") .} 
     FILTER (lang(?label1) = 'en'). 
     ?dbpedia_link dcterms:subject ?sub 
     }Limit 1000 
     OFFSET 580000 

工作 SPARQL查詢:

SELECT DISTINCT ?dbpedia_link str(?name) as ?label str(?label1) as ?label1 ?freebase_link WHERE { 
      ?dbpedia_link rdfs:label ?label1 . 
      ?dbpedia_link foaf:name ?name . 
      { 
      { ?dbpedia_link rdf:type dbpedia-owl:Person }        
      }       
      OPTIONAL {?dbpedia_link owl:sameAs ?freebase_link . 
      FILTER regex(?freebase_link, "^http://rdf.freebase.com") .} 
      FILTER (lang(?label1) = 'en'). 
      ?dbpedia_link dcterms:subject ?sub 
      }Limit 1000 
      OFFSET 50000 

如何克服這個問題。

+0

除了[jimkont的答案](http://stackoverflow.com/a/26136741/1281433),注意**極限ñ**和* *偏移量m **需要按**排序纔能有用。如果沒有指定的順序,那麼端點可以一遍又一遍地返回相同的** n **結果。例如,請參閱[我的答案](http://stackoverflow.com/a/25147648/1281433)至[如何解決Linkedmdb中的執行限制](http://stackoverflow.com/q/25141247/1281433)。 – 2014-10-01 13:48:57

回答

4

在您的請求之間加上延遲。實時端點有一個速率限制,這是您超過它時得到的錯誤。還有一個短暫的暫停,以使服務更加可用。

(聲明:我是負責服務)

+0

感謝您的回覆..我怎麼能'延遲sparql'?如果我正在執行'只查詢一次'。試着從上面執行'Non-working SPARQL query',然後你會得到網關的錯誤。 – iNikkz 2014-10-01 09:35:49

+2

您可以嘗試由OpenLink http://dbpedia-live.openlinksw.com/sparql託管的實時克隆。該服務器擁有更多資源並回答查詢。 – jimkont 2014-10-01 09:53:40

+0

'@ jimkont:'我只需要來自http://live.dbpedia.org/sparql端點的記錄。我們在http://dbpedia-live.openlinksw.com/sparql端點上做了一些「研發」。它沒有給出適當的輸出。它在這種情況下顯示異常Ex'' ' – iNikkz 2014-10-01 12:02:56