如何正确使用Jena属性

时间:2013-08-07 21:05:02

标签: jena

我了解我可以使用model.getProperty从我的模型中检索现有属性,例如:

Model model;
Property description_property = model.getProperty(NS.dcterms + "description");

但是说我没有可用的模型但想要创建一个我不得不使用的本地模型:

Property descriptionProperty= 
               ResourceFactory.createProperty(NS.dcterms + "description");

有人可以很好地解释何时以及为何使用model.getProperty vs ResourceFactory.createProperty及其含义。

1 个答案:

答案 0 :(得分:2)

这两种形式实际上几乎相同。主要区别在于,当您执行model.getXXX获取属性或资源对象时,该对象随后会包含一个指向模型的指针,该模型就是针对该模型创建的。这可能会有所帮助,因为在Jena中它实际上只是保持状态的模型对象。诸如ResourceProperty之类的Java类表示资源和属性标识,但真实内容是模型中的三元组(即Statement s)。

要做到具体,如果你做了类似的事情:

Resource s = ... ;
Property p = ... ;
RDFNode o = ... ;
p.getModel().addStatement( s, p, o );

在第一种情况下会成功(即使用Model.getProperty)并在第二种情况下失败(即ResourceFactory),因为在第二种情况下getModel()会返回null 。但是,您的应用程序中是否存在实际问题只是您可以说的。老实说,我并不觉得我的代码中存在很大问题。

顺便提一下,您可能想知道Jena有一个名为schemagen的实用程序,它可以自动生成包含与本体中的类,属性和个体对应的常量的Java源代码。它比在代码中手动创建这样的常量更清晰,更易于维护。