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; } |


Reply via email to