我了解我可以使用model.getProperty
从我的模型中检索现有属性,例如:
Model model;
Property description_property = model.getProperty(NS.dcterms + "description");
但是说我没有可用的模型但想要创建一个我不得不使用的本地模型:
Property descriptionProperty=
ResourceFactory.createProperty(NS.dcterms + "description");
有人可以很好地解释何时以及为何使用model.getProperty
vs ResourceFactory.createProperty
及其含义。
答案 0 :(得分:2)
这两种形式实际上几乎相同。主要区别在于,当您执行model.getXXX
获取属性或资源对象时,该对象随后会包含一个指向模型的指针,该模型就是针对该模型创建的。这可能会有所帮助,因为在Jena中它实际上只是保持状态的模型对象。诸如Resource
和Property
之类的Java类表示资源和属性标识,但真实内容是模型中的三元组(即Statement
s)。
要做到具体,如果你做了类似的事情:
Resource s = ... ;
Property p = ... ;
RDFNode o = ... ;
p.getModel().addStatement( s, p, o );
在第一种情况下会成功(即使用Model.getProperty
)并在第二种情况下失败(即ResourceFactory
),因为在第二种情况下getModel()
会返回null
。但是,您的应用程序中是否存在实际问题只是您可以说的。老实说,我并不觉得我的代码中存在很大问题。
顺便提一下,您可能想知道Jena有一个名为schemagen的实用程序,它可以自动生成包含与本体中的类,属性和个体对应的常量的Java源代码。它比在代码中手动创建这样的常量更清晰,更易于维护。