2014-10-01 38 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

相关问题