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