как остановить запрос sparql jena через раз, даже если я не получил ответ - PullRequest
0 голосов
/ 20 февраля 2020

Мне нужно выполнить этот запрос несколько раз, если ничего не возвращается или не отвечает.

Конечная точка:

http://opendata.comune.arezzo.it/services/lod/sparql

Запрос:

SELECT DISTINCT ?p
WHERE
  { ?s a <https://ldp.ldpgis.it/ontologies/1/ldpgisOntology/LdPOntology.rdf#clAccessoEsterno>.
    ?s    ?p  ?o
  }

Если я запускаю этот запрос на их сайте возвращает это сообщение:

Не удалось разобрать ответ сервера (неполный результат из-за тайм-аута?)

Это мой код:

Boolean success = false;
ResultSet results = null;


success = false;
int maxRepNumber = 2;
ParameterizedSparqlString qs = new ParameterizedSparqlString(Query above);
QueryEngineHTTP exec = QueryExecutionFactory.createServiceRequest(endpoint.getEndpointUri(), qs.asQuery());

while (success == false && maxRepNumber > 0) {
    try { exec.setTimeout(120000, TimeUnit.MILLISECONDS, 120000, TimeUnit.MILLISECONDS);
          results = exec.execSelect();
          success = true;
    } catch (Exception e) {
        maxRepNumber--;
    }                   
}
if(success == true){//do things}

, когда я запускаю этот код, он работает в течение первых нескольких циклов времени и, наконец, он застревает во время выполнения results = exec.execSelect();.

Что бы я хотел остановить выполнение запроса через определенное время , , даже если я не получил ответ . Возможно ли это?

Спасибо

EDIT => Решено в комментариях ниже!

...