Hi! Did you first start the transaction with yourdataset.begin(ReadWrite.READ) ?
Marc Le mercredi 27 décembre 2017 à 10:24 +0800, hetong583 a écrit : > 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/199 > 9/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(DatasetGr > aphTransaction.java:117) > at > org.apache.jena.tdb.transaction.DatasetGraphTransaction.getDatasetGra > phToQuery(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(StageGener > atorDirectTDB.java:56) > at > org.apache.jena.tdb2.solver.StageGeneratorDirectTDB.execute(StageGene > ratorDirectTDB.java:53) > at > org.apache.jena.sparql.engine.main.OpExecutor.execute(OpExecutor.java > :128) > at > org.apache.jena.sparql.engine.main.ExecutionDispatch.visit(ExecutionD > ispatch.java:58) > at org.apache.jena.sparql.algebra.op.OpBGP.visit(OpBGP.java:49) > at > org.apache.jena.sparql.engine.main.ExecutionDispatch.exec(ExecutionDi > spatch.java:46) > at > org.apache.jena.sparql.engine.main.OpExecutor.exec(OpExecutor.java:11 > 7) > 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.ne > xtStage(QueryIterOptionalIndex.java:51) > at > org.apache.jena.sparql.engine.iterator.QueryIterRepeatApply.makeNextS > tage(QueryIterRepeatApply.java:108) > at > org.apache.jena.sparql.engine.iterator.QueryIterRepeatApply.hasNextBi > nding(QueryIterRepeatApply.java:65) > at > org.apache.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(Quer > yIteratorBase.java:114) > at > org.apache.jena.sparql.engine.iterator.QueryIterConvert.hasNextBindin > g(QueryIterConvert.java:58) > at > org.apache.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(Quer > yIteratorBase.java:114) > at > org.apache.jena.sparql.engine.iterator.QueryIteratorWrapper.hasNextBi > nding(QueryIteratorWrapper.java:39) > at > org.apache.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(Quer > yIteratorBase.java:114) > at > org.apache.jena.sparql.engine.iterator.QueryIteratorWrapper.hasNextBi > nding(QueryIteratorWrapper.java:39) > at > org.apache.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(Quer > yIteratorBase.java:114) > at > org.apache.jena.sparql.engine.ResultSetStream.hasNext(ResultSetStream > .java:74) > at > org.apache.jena.sparql.engine.ResultSetCheckCondition.hasNext(ResultS > etCheckCondition.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
