Yes, this is my execution function
```
public ResultSet execSelect(String queryStr) {
ds.begin(ReadWrite.READ);
try {
Query query = QueryFactory.create(queryStr);
QueryExecution qexec;
if (modelUri != null) {
qexec = QueryExecutionFactory.create(query, ds.getNamedModel(modelUri));
} else {
qexec = QueryExecutionFactory.create(query, ds);
}
return qexec.execSelect();
} catch (Exception e) {
logger.error(e.getMessage(), e);
} finally {
ds.end();
}
return null;
}
```
------------------
Wang Tonghe
------------------ Original ------------------
From: "Marc Agate";<[email protected]>;
Date: Wed, Dec 27, 2017 10:35 AM
To: "users"<[email protected]>;
Subject: Re: RDF namespace is not compatible with OPTIONAL in ARQ
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