0

D2RQ 使用 Jena 模型创建 DB 的 RDF 表示。

Model m = new ModelD2RQ("file:outfile2.ttl");

我知道返回的模型是“只读”模型。

因此,如果我尝试将资源添加到模型中,则会收到“jena.shared.AddDeniedException”异常。

    Resource r1=m.createResource("http://www.stackoverflow.com#34");
    r1.addProperty(RDF.type, ...); <-throws the exception

如何将模型 m 从数据库中分离出来以便我可以修改它?我不想写回模型,我只是使用 D2RQ 来获取一个基于 RDF 的 DB-dump,我想进一步处理它(我知道像 D2RQ 更新这样的扩展可以通过修改 RDF 图来修改数据库,但我不想修改数据库)

谢谢

4

1 回答 1

1

复制一份以断开模型与数据库的连接:

Model m = new ModelD2RQ("file:outfile2.ttl");
Model mCopy = ModelFactory.createDefaultModel() ;
mCopy.add(m) ;
mCopy.addProperty(...)

另一种方法是有一个联合模型,其中内存部分是联合的第一个且可更新的部分。

Model m = new ModelD2RQ("file:outfile2.ttl");
Model extra = ModelFactory.createDefaultModel() ;
Model m2 = ModelFactory.createUnion(exrta, m2) ;
...
于 2016-09-05T11:08:06.523 回答