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