如何使用Jena框架加载基于本体的内存模型?

时间:2011-02-10 14:41:13

标签: model ontology jena in-memory

我想知道如何从使用Jena框架的本体中加载一个模型,在该模型中我将检索本体中定义的完全相同的语义。我发现了Jean ontology API 有可能在本体模型,课程等方面工作。

然后给出以下示例:

<owl:Class rdf:ID="DigitalCamera">
  <rdf:type owl:ObjectProperty />
</owl:Class>

可以这样做:

Resource r = myModel.getResource( myNS + "DigitalCamera" );
OntClass cls = (OntClass) r.as( OntClass.class );

然而,我正在寻找直接在DigitalCamera类/实例上获取手,而不是通过OntClass或Resource,如下所示:

DigitalCamera camera = new DigitalCamera();

然后,当搜索该摄像机的某个属性时,我可以直接访问它并像DSL一样专注于数据的语义。 Jena是否提出了这种代表任何本体的专用(生成?)框架?

由于

1 个答案:

答案 0 :(得分:0)

有一个概念性的问题正在做你要求的,这就是RDF的优势在于数据模型具有可塑性。这有时表达为“任何人都可以说什么”。换句话说,您的应用程序状态完全由图中任何时候的内容定义。假设资源r目前有rdf:type foaf:Person,那么该图表更改是完全可能且合法的,以便r代替rdf:type skos:Concept。或者,确实是两者兼而有之。因此,使用某种ORM将资源表示为不变的Java类PersonConcept可能会变得不完整或过时。这是(部分)耶拿不这样做的原因:耶拿的状态完全基于RDF图中的内容。

也就是说,如果您愿意接受这种风险,或者您知道在您的应用程序中,从资源URI到Java对象类的映射很少或根本没有机会发生根本改变,有一些Jena扩展可以帮助您。我建议以JenaBean为例。