Try using a service like Github Gist. Is it possible that only one of the legs 
of the query has results in it? Have you confirmed that _neither_ of the legs 
executed separately shows the problem?

ajs6f 

> On Feb 28, 2017, at 4:51 AM, Andy Seaborne <a...@apache.org> wrote:
> 
> 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: users@jena.apache.org
>> 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