What people on the list receive is:
https://lists.apache.org/api/source.lua/8d17e5299cbbe585e7d45ff8ce156021162a9e16fe77818d8f7cff6c@%3Cusers.jena.apache.org%3E
Looks like HTML to text conversion.
On 27/02/17 23:58, George News wrote:
But the funny thing is that in both cases (with and without UNION) the code is
the same. I know I close the transaction, but I don’t understand why in one
case it works and in the other no.
Probably you close the transaction before the resultset is all consumed.
Some work is done on execSelect so internally, the use of the dataset
can finish early.
UNION has two branches calculated separately.
It depends on the real query.
Andy
I would like to ask another thing: In a @requestscope is the reading
transaction automatically close when finished the REST processing or is it
mandatory to call dataset.end()?
I don't knw why example code is unreadable. I have perfectly seen the code.
Thanks a lot
Jorge
Sent from jlanza_lumia820
From: Andy Seaborne
Sent: martes, 28 de febrero de 2017 0:12
To: [email protected]
Subject: Re: SPARQL with UNION returning TDBTransactionException
Unreadable.
-------------------------
Probably you are passing the result stream out of the transaction.
Reading a ResultSet requires reading the dataset and must be inside a
transaction when the calls to hasNext/next are happening.
Andy
On 27/02/17 18:18, George News wrote:
|public SparqlResult executeSparql(String sparql) throws
SparqlExecutionException { String queryString = sparql; Query query =
QueryFactory.create(queryString); dataset.begin(ReadWrite.READ); try {
QueryExecution qExec = QueryExecutionFactory.create(query, getModel());
// System.out.println(qExec.getQuery().serialize()); //
System.out.println(qExec.getQuery().toString()); SparqlResult result; if
(query.isSelectType()) { result = new SparqlResult(qExec.execSelect(),
qExec); } else if (query.isDescribeType()) { result = new
SparqlResult(qExec.execDescribe(), qExec); } else if (query.isAskType())
{ result = new SparqlResult(qExec.execAsk(), qExec); } else if
(query.isConstructType()) { result = new
SparqlResult(qExec.execConstruct(), qExec); } else { throw new
SparqlExecutionException("Unsupported query type: " +
query.getQueryType()); } return result; } finally { dataset.end(); }
private Map<String, Integer> getSummaryStatistics() { String queryString
= "THE_ONE"; Map<String, Integer> statistics = new HashMap<>();
GlobalTripleStore gts = new GlobalTripleStore(); try (SparqlResult
result = gts.executeSparql(queryString)) { ResultSet resultSet =
(ResultSet) result.getResult(); while (resultSet.hasNext()) {
QuerySolution sol = resultSet.next(); int devices =
sol.get("count_devices").asLiteral().getInt(); int observations
=sol.get("count_o").asLiteral().getInt(); statistics.put("devices",
resources); statistics.put("o", observations); } } catch
(SparqlExecutionException e) { // TODO Auto-generated catch block
e.printStackTrace(); } return statistics; } |