首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Jena TDB:嵌套事务

Jena TDB:嵌套事务
EN

Stack Overflow用户
提问于 2012-04-16 03:01:48
回答 1查看 681关注 0票数 4

为了使用事务,我想重写我当前的代码。但是,根据Jena文档(http://incubator.apache.org/jena/documentation/tdb/tdb_transactions.html),不支持嵌套事务。

比方说,我想从数据库中查询一些数据,并为找到的每个资源添加一个rdfs:label。我是否必须像下面的代码那样严格分离读取和编写代码,或者是否有更有效的方法来实现此示例?

代码语言:javascript
复制
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上发布了这个问题,但还没有收到任何答案,所以我希望这里的人能帮助我。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-17 15:26:26

TDB确实不支持嵌套事务,但是您可以在一个写事务中执行任意多的读取操作。因此,启动一个ReadWrite.WRITE事务并在那里执行所有处理。不需要嵌套事务来完成您想要做的事情。

有关TDB事务支持的更多信息,请查看官方文档:

  • http://incubator.apache.org/jena/documentation/tdb/tdb_transactions.html
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10165096

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档