Hello,
I tried to access TDB via SPARQL. However following query always throws a 
TDBTransactionException: Not in a transaction.
```
PREFIX kg:<%s>
PREFIX rdf:<http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
SELECT ?entityUri ?name ?unit 
WHERE
{ ?entityUri      rdf:type         kg:AtomicMetric. 
  ?entityUri       kg:Name            ?name. 
  OPTIONAL { ?entityUri      kg:Unit     ?unit } }

```
After several tries, I found that rdf namespace and `OPTIONAL` cannot appear 
simultaneously. And any modification on 
"http://www.w3.org/1999/02/22-rdf-syntax-ns#"; will solve the problem. I use 
Jena 3.5 and I found 3.6 also has this problom.


Following is the stacktrace.
```
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.getDatasetGraphToQuery(DatasetGraphTransaction.java:80)
        at 
org.apache.jena.tdb.store.GraphTxnTDB.getDatasetGraphTDB(GraphTxnTDB.java:49)
        at 
org.apache.jena.tdb.store.GraphTDB.getNodeTupleTable(GraphTDB.java:74)
        at org.apache.jena.tdb.solver.SolverLib.execute(SolverLib.java:66)
        at 
org.apache.jena.tdb.solver.StageGeneratorDirectTDB.execute(StageGeneratorDirectTDB.java:56)
        at 
org.apache.jena.tdb2.solver.StageGeneratorDirectTDB.execute(StageGeneratorDirectTDB.java:53)
        at 
org.apache.jena.sparql.engine.main.OpExecutor.execute(OpExecutor.java:128)
        at 
org.apache.jena.sparql.engine.main.ExecutionDispatch.visit(ExecutionDispatch.java:58)
        at org.apache.jena.sparql.algebra.op.OpBGP.visit(OpBGP.java:49)
        at 
org.apache.jena.sparql.engine.main.ExecutionDispatch.exec(ExecutionDispatch.java:46)
        at 
org.apache.jena.sparql.engine.main.OpExecutor.exec(OpExecutor.java:117)
        at 
org.apache.jena.sparql.engine.main.OpExecutor.execute(OpExecutor.java:88)
        at org.apache.jena.sparql.engine.main.QC.execute(QC.java:52)
        at 
org.apache.jena.sparql.engine.main.iterator.QueryIterOptionalIndex.nextStage(QueryIterOptionalIndex.java:51)
        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.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.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)
        at com.quantchi.intelquery.etl.LtpDict.getEntityFromTdb(LtpDict.java:87)

```


Thanks for your help.  Let me know if you need any other infomation.
Best regards.




------------------
Wang Tonghe

Reply via email to