java – Jena TDB:嵌套事务
发布时间:2020-12-15 02:33:17 所属栏目:Java 来源:网络整理
导读:我想重写当前使用事务的代码.但是,根据Jena文档( http://incubator.apache.org/jena/documentation/tdb/tdb_transactions.html),不支持嵌套事务. 比方说,我想从数据库中查询一些数据,并为找到的每个资源添加一个rdfs:标签.我是否必须严格地按照以下代码分别
我想重写当前使用事务的代码.但是,根据Jena文档(
http://incubator.apache.org/jena/documentation/tdb/tdb_transactions.html),不支持嵌套事务.
比方说,我想从数据库中查询一些数据,并为找到的每个资源添加一个rdfs:标签.我是否必须严格地按照以下代码分别阅读和编写代码,或者是否有更有效的方法来实现此示例? Dataset dataset = ...; dataset.begin(ReadWrite.READ); ArrayList<Resource> res = new ArrayList<Resource>(); try{ QueryExecution qe = QueryExecutionFactory.create("SELECT ?x WHERE { ?x a <Whatever> . }",dataset); ResultSet rs = qe.execSelect(); try { while(rs.hasNext()) { QuerySolution s = rs.nextSolution(); RDFNode node = s.get("x"); if(node.isResource) res.add(node.asResource()); } }finally{ qe.close(); } }finally{ dataset.end(); } dataset.begin(ReadWrite.WRITE); try{ Property label = model.getProperty("http://www.w3.org/2000/01/rdf-schema#label"); for(Resource r : res) { r.addProperty(label,"text"); } dataset.commit(); }finally{ dataset.end(); } 我已经在semanticweb.com发布了这个问题,但没有收到任何答案,所以我希望有人可以帮助我. 解决方法
确实,TDB不支持嵌套事务,但是您可以在WRITE事务中执行任意数量的读取操作.因此,启动ReadWrite.WRITE事务并执行所有处理.不需要嵌套的事务来做你想做的事情.
有关TDB交易支持的更多信息,请查看此处的官方文档: > http://incubator.apache.org/jena/documentation/tdb/tdb_transactions.html (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |