在Jena中创建一个命名模型

时间:2016-04-24 19:25:55

标签: jena

鉴于this introduction表明使用命名模型比使用默认模型更好,我试图将命名模型添加到数据集中:

Dataset dataset = TDBFactory.createDataset("MyDataset");
System.out.println(dataset.containsNamedModel("MyNewModel"));
Model MyNewModel = ModelFactory.createDefaultModel();
dataset.begin(ReadWrite.WRITE);
dataset.addNamedModel("MyNewModel", MyNewModel);
dataset.commit();
System.out.println(dataset.containsNamedModel("MyNewModel"));

但是会返回

false
false

(所以显然没有添加模型!)。我查看了the docs,并且有一个createMethod(String name) method。我尝试过使用它,但因为它在接口中,当我尝试实例化ModelMakerCannot instantiate the type ModelMaker)时,java会抱怨 - 并且文档没有显示哪个类实现了哪个接口。

这导致了几个问题:

  1. 在数据集中使用命名模型而不是默认模型实际最佳做法是什么?
  2. 如何调用createModel方法?在更多verbose documentation中,它表示ModelFactory包含方法createFileModelMaker(String) - 但java docs没有提及此方法,并且尝试调用它可预测导致{{1 }} <!/ LI>

1 个答案:

答案 0 :(得分:1)

MyNewModel为空,因此无需添加任何内容。 addNamedModel表示将一个图的内容复制到数据集中的命名为。

在TDB中,命名图被保存为四边形(图形,主题,谓词,对象)。没有单独的图表管理。如果命名图没有四边形,则它不在数据集中。