2011-09-16 1 views
2

DBpedia SPARQL 엔드 포인트에 대한 일련의 쿼리를 루프 내부에서 수행합니다. 코드는 더 많거나 적은 같은 같습니다DBpedia를 쿼리 할 때 503의 메시지를 반복합니다.

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

DBpedia 위키의 Accessing the DBpedia Data Set over the Web 페이지 섹션 1.1. Public SPARQL Endpoint 말한다 말한다 :

공정 이용 정책 : 공공 DBpedia 엔드 포인트에 대한 제한에 대한 자세한 내용은 this post를 읽어 보시기 바랍니다. 이것들은 유용 할 수도 있습니다 : 1, 2.

링크 된 게시물은 공용 DBpedia SPARQL 엔드 포인트가 속도 제한을 구현한다고 말합니다.

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

이가에 있습니다

http://dbpedia.org/sparql 엔드 포인트는 다음과 같은 설정에 따라 결과 집합 및 쿼리 시간에/초 당신이 할 수있는 연결뿐만 아니라 제한의 수에 제한을 모두 속도를 가지고 모든 사람들이 dbpedia.org에서 데이터를 역 참조 할 수있는 동등한 기회가 있는지 확인하고 잘못 작성된 쿼리/로봇을 방지해야합니다.

한계를 넘기고있는 것 같습니다.

관련 문제