More information... I have also noticed that if I don't close the
transaction (dataset.end()) it works. But, are the transactions garbage
collected?

What is the different between using UNION and not using it internally
for Jena? the other option is using RewindableResultSet, which somehow I
want to avoid. But if this is the solution, I will go though all my
ResultSets twice, one for retrieval (Rewindable creation) and another
for analysing the data.

On 27/02/2017 19:23, George News wrote:
> Sorry I forgot to include the full exception
> 
> Caused by: org.apache.jena.tdb.transaction.TDBTransactionException: Not in a 
> transaction
>       at 
> org.apache.jena.tdb.transaction.DatasetGraphTransaction.get(DatasetGraphTransaction.java:117)
>       at 
> org.apache.jena.tdb.transaction.DatasetGraphTransaction.get(DatasetGraphTransaction.java:50)
>       at 
> org.apache.jena.sparql.core.DatasetGraphWrapper.getR(DatasetGraphWrapper.java:61)
>       at 
> org.apache.jena.sparql.core.DatasetGraphWrapper.find(DatasetGraphWrapper.java:146)
>       at 
> org.apache.jena.sparql.core.GraphView.graphBaseFind(GraphView.java:121)
>       at org.apache.jena.graph.impl.GraphBase.find(GraphBase.java:255)
>       at 
> org.apache.jena.sparql.path.eval.PathEngine.graphFind2(PathEngine.java:205)
>       at 
> org.apache.jena.sparql.path.eval.PathEngine.graphFind(PathEngine.java:189)
>       at 
> org.apache.jena.sparql.path.eval.PathEngine.graphFind(PathEngine.java:171)
>       at org.apache.jena.sparql.path.eval.PathEngine.doOne(PathEngine.java:92)
>       at 
> org.apache.jena.sparql.path.eval.PathEvaluator.visit(PathEvaluator.java:57)
>       at org.apache.jena.sparql.path.P_Link.visit(P_Link.java:37)
>       at org.apache.jena.sparql.path.eval.PathEval.eval$(PathEval.java:68)
>       at org.apache.jena.sparql.path.eval.PathEval.eval$(PathEval.java:74)
>       at org.apache.jena.sparql.path.eval.PathEngine.eval(PathEngine.java:75)
>       at 
> org.apache.jena.sparql.path.eval.PathEngineSPARQL.ALP_1(PathEngineSPARQL.java:119)
>       at 
> org.apache.jena.sparql.path.eval.PathEngineSPARQL.doZeroOrMore(PathEngineSPARQL.java:92)
>       at 
> org.apache.jena.sparql.path.eval.PathEvaluator.visit(PathEvaluator.java:115)
>       at 
> org.apache.jena.sparql.path.P_ZeroOrMore1.visit(P_ZeroOrMore1.java:43)
>       at org.apache.jena.sparql.path.eval.PathEval.eval$(PathEval.java:68)
>       at org.apache.jena.sparql.path.eval.PathEval.eval$(PathEval.java:74)
>       at org.apache.jena.sparql.path.eval.PathEval.eval(PathEval.java:37)
>       at 
> org.apache.jena.sparql.path.PathLib.evalGroundedPath(PathLib.java:166)
>       at org.apache.jena.sparql.path.PathLib.execTriplePath(PathLib.java:133)
>       at org.apache.jena.sparql.path.PathLib.execTriplePath(PathLib.java:108)
>       at 
> org.apache.jena.sparql.engine.iterator.QueryIterPath.nextStage(QueryIterPath.java:47)
>       at 
> org.apache.jena.sparql.engine.iterator.QueryIterRepeatApply.makeNextStage(QueryIterRepeatApply.java:108)
>       at 
> org.apache.jena.sparql.engine.iterator.QueryIterRepeatApply.hasNextBinding(QueryIterRepeatApply.java:65)
>       at 
> org.apache.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:114)
>       at org.apache.jena.atlas.iterator.Iter$2.hasNext(Iter.java:265)
>       at 
> org.apache.jena.atlas.iterator.RepeatApplyIterator.hasNext(RepeatApplyIterator.java:45)
>       at 
> org.apache.jena.tdb.solver.SolverLib$IterAbortable.hasNext(SolverLib.java:195)
>       at org.apache.jena.atlas.iterator.Iter$2.hasNext(Iter.java:265)
>       at 
> org.apache.jena.sparql.engine.iterator.QueryIterPlainWrapper.hasNextBinding(QueryIterPlainWrapper.java:53)
>       at 
> org.apache.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:114)
>       at 
> org.apache.jena.sparql.engine.iterator.QueryIterRepeatApply.makeNextStage(QueryIterRepeatApply.java:101)
>       at 
> org.apache.jena.sparql.engine.iterator.QueryIterRepeatApply.hasNextBinding(QueryIterRepeatApply.java:65)
>       at 
> org.apache.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:114)
>       at 
> org.apache.jena.sparql.engine.iterator.QueryIterRepeatApply.makeNextStage(QueryIterRepeatApply.java:101)
>       at 
> org.apache.jena.sparql.engine.iterator.QueryIterRepeatApply.hasNextBinding(QueryIterRepeatApply.java:65)
>       at 
> org.apache.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:114)
>       at 
> org.apache.jena.sparql.engine.iterator.QueryIterGroup$1.initializeIterator(QueryIterGroup.java:86)
>       at 
> org.apache.jena.atlas.iterator.IteratorDelayedInitialization.init(IteratorDelayedInitialization.java:40)
>       at 
> org.apache.jena.atlas.iterator.IteratorDelayedInitialization.hasNext(IteratorDelayedInitialization.java:50)
>       at 
> org.apache.jena.sparql.engine.iterator.QueryIterPlainWrapper.hasNextBinding(QueryIterPlainWrapper.java:53)
>       at 
> org.apache.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:114)
>       at 
> org.apache.jena.sparql.engine.iterator.QueryIterProcessBinding.hasNextBinding(QueryIterProcessBinding.java:66)
>       at 
> org.apache.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:114)
>       at 
> org.apache.jena.sparql.engine.iterator.QueryIterConvert.hasNextBinding(QueryIterConvert.java:58)
>       at 
> org.apache.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:114)
>       at 
> org.apache.jena.sparql.engine.iterator.QueryIterDistinct.getInputNextUnseen(QueryIterDistinct.java:104)
>       at 
> org.apache.jena.sparql.engine.iterator.QueryIterDistinct.hasNextBinding(QueryIterDistinct.java:70)
>       at 
> org.apache.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:114)
>       at java.util.Iterator.forEachRemaining(Iterator.java:115)
>       at org.apache.jena.atlas.data.DataBag.addAll(DataBag.java:94)
>       at 
> org.apache.jena.sparql.engine.iterator.QueryIterSort$SortedBindingIterator.initializeIterator(QueryIterSort.java:84)
>       at 
> org.apache.jena.atlas.iterator.IteratorDelayedInitialization.init(IteratorDelayedInitialization.java:40)
>       at 
> org.apache.jena.atlas.iterator.IteratorDelayedInitialization.hasNext(IteratorDelayedInitialization.java:50)
>       at 
> org.apache.jena.sparql.engine.iterator.QueryIterPlainWrapper.hasNextBinding(QueryIterPlainWrapper.java:53)
>       at 
> org.apache.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:114)
>       at 
> org.apache.jena.sparql.engine.iterator.QueryIteratorWrapper.hasNextBinding(QueryIteratorWrapper.java:39)
>       at 
> org.apache.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:114)
>       at 
> org.apache.jena.sparql.engine.iterator.QueryIteratorWrapper.hasNextBinding(QueryIteratorWrapper.java:39)
>       at 
> org.apache.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:114)
>       at 
> org.apache.jena.sparql.engine.ResultSetStream.hasNext(ResultSetStream.java:74)
>       at 
> org.apache.jena.sparql.engine.ResultSetCheckCondition.hasNext(ResultSetCheckCondition.java:55)
> 
> 
> 
> 
> On 27/02/2017 19:18, George News wrote:
>> Hi,
>>
>> I have a SELECT SPARQL query similar to the one below:
>>
>> |PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX rdfs:
>> <http://www.w3.org/2000/01/rdf-schema#> SELECT (count(distinct ?o) as
>> ?count_o) (count(distinct ?device) as ?count_devices) WHERE { {?o
>> rdf:type/rdfs:subClassOf CLASS1 .} UNION {?device
>> rdf:type/rdfs:subClassOf CLASS2 .} } |
>>
>> If I execute it as it is, I get
>>
>> |org.apache.jena.tdb.transaction.TDBTransactionException: Not in a
>> transaction |
>>
>> However if I execute it like
>>
>> |PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX rdfs:
>> <http://www.w3.org/2000/01/rdf-schema#> SELECT (count(distinct ?o) as
>> ?count_observations) WHERE { {?o rdf:type/rdfs:subClassOf CLASS1 .} } |
>>
>> everything is working ok. It doesn’t matter if I use one or the other
>> part of the union, as it works ok independently but not together.
>>
>> Any idea? Any help is more than welcome.
>>
>> Find below part of the code:
>>
>> |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