Я использую конечную точку Virtuoso SPARQL для выполнения запроса. но пока я выполняю запрос, мое выполнение зависло.
QueryExecution qexec = null;
try {
System.out.println("now inside");
String queryString = "PREFIX ns: <http://example.org/ns#>" +
"PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>\r\n" +
"SELECT ?title ?price" +
" {" +
" ?x ns:price ?p ." +
" ?x ns:discount ?discount ." +
" ?x <http://purl.org/dc/elements/1.1/title> ?title . " +
" BIND ('12'^^xsd:integer AS ?price)" +
" FILTER( ?price < 20 )" +
" }";
System.out.println(queryString);
System.out.println("inside the sparql just before call");
qexec = QueryExecutionFactory.sparqlService("http://192.168.99.100:8890/sparql", queryString);
ResultSet results = qexec.execSelect();
System.out.println("inside the sparql just after call");
// write to a ByteArrayOutputStream
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
ResultSetFormatter.outputAsJSON(outputStream, results);
String json = outputStream.toString();
System.out.println(json);
return json;
} catch (Exception e) {
e.printStackTrace();
}finally {
qexec.close();
}
return "Error";
образец данных
@prefix dc: <http://purl.org/dc/elements/1.1/> .
@prefix : <http://example.org/book/> .
@prefix ns: <http://example.org/ns#> .
:book1 dc:title "SPARQL Tutorial" .
:book1 ns:price 42 .
:book1 ns:discount 0.2 .
:book2 dc:title "The Semantic Web" .
:book2 ns:price 23 .
:book2 ns:discount 0.25 .
При выполнении qexec.execSelect()
он не должен давать ни ошибки, ни результата вывода. Но это случается иногда.
Как при трассировке он распечатает все детали вплоть до следующего утверждения
System.out.println("inside the sparql just before call");
но не после этого.
Как мне отследить это? Как мне выяснить, что вызывает проблему?
Примечание. Мой запрос очень маленький, поэтому времени не возникает.
Также я замечаю, что после обновления новой обновленной версии Jena 3.7.0 я получаю эту проблему