修改 D2RQ 返回的 Jena 模型

Modify Jena model returned by D2RQ

D2RQ 使用 Jena 模型创建数据库的 RDF 表示。

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

我知道返回的模型是 "read-only" 模型。

因此,如果我尝试向模型添加资源,我会收到 "jena.shared.AddDeniedException" 异常。

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

如何将模型 m 与数据库解耦,以便我可以对其进行修改?我不想写回模型,我只是使用 D2RQ 获取我想进一步处理的基于 RDF 的 DB 转储(我知道像 D2RQ 更新这样的扩展可以通过修改 RDF 图来修改数据库,但我不想修改数据库)

谢谢

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

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) ;
...