查询DBpedia时重复503的消息

时间:2011-09-16 15:33:05

标签: dbpedia http-status-code-503

我正在对DBpedia SPARQL端点进行一系列查询(来自循环内部)。代码看起来或多或少像这样:

for (String citySplit : citiesSplit) {
  RepositoryConnection conn = dbpediaEndpoint.getConnection();
  String sparqlQueryLat = " SELECT ?lat ?lon WHERE { "
                        + "<http://dbpedia.org/resource/" + citySplit.trim().replaceAll(" ", "_") + "> <http://www.w3.org/2003/01/geo/wgs84_pos#lat> ?lat . "
                        + "<http://dbpedia.org/resource/" + citySplit.trim().replaceAll(" ", "_") + "> <http://www.w3.org/2003/01/geo/wgs84_pos#long> ?lon ."
                        + "}";
  TupleQuery queryLat = conn.prepareTupleQuery(QueryLanguage.SPARQL, sparqlQueryLat);
  TupleQueryResult resultLat = queryLat.evaluate();
}    

问题是,经过几次迭代后,我收到了503消息:

httpclient.wire.header - << "HTTP/1.1 503 Service Temporarily Unavailable[\r][\n]"
(...)
org.openrdf.query.QueryInterruptedException
    at org.openrdf.http.client.HTTPClient.getTupleQueryResult(HTTPClient.java:1041)
    at org.openrdf.http.client.HTTPClient.sendTupleQuery(HTTPClient.java:438)
    at org.openrdf.http.client.HTTPClient.sendTupleQuery(HTTPClient.java:413)
    at org.openrdf.repository.http.HTTPTupleQuery.evaluate(HTTPTupleQuery.java:41)

如果我理解正确,此503消息来自DBpedia。我对吗? 成功的连续查询数是可变的。有时它在收到消息之前运行13秒,有时15分钟。 无论如何,我认为这不正常。 可能会发生什么?

1 个答案:

答案 0 :(得分:1)

DBpedia wiki的Accessing the DBpedia Data Set over the Web页面在1.1. Public SPARQL Endpoint部分中说:

  

合理使用政策:有关公共DBpedia端点限制的信息,请阅读this post。这些也可能有用[原文如此]:12

链接帖子说公共DBpedia SPARQL端点实现了速率限制。

  

根据以下设置,http://dbpedia.org/sparql端点既可以对连接数/秒进行速率限制,也可以对结果集和查询时间进行限制:

[SPARQL]
ResultSetMaxRows           = 2000
MaxQueryExecutionTime      = 120
MaxQueryCostEstimationTime = 1500
     

这些都是为了确保每个人都有平等的机会从dbpedia.org中取消引用数据,以及防止写得不好的查询/机器人。

我认为你可能会遇到这个限制。