我想知道如何从使用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是否提出了这种代表任何本体的专用(生成?)框架?
由于
答案 0 :(得分:0)
有一个概念性的问题正在做你要求的,这就是RDF的优势在于数据模型具有可塑性。这有时表达为“任何人都可以说什么”。换句话说,您的应用程序状态完全由图中任何时候的内容定义。假设资源r
目前有rdf:type foaf:Person
,那么该图表更改是完全可能且合法的,以便r
代替rdf:type skos:Concept
。或者,确实是两者兼而有之。因此,使用某种ORM将资源表示为不变的Java类Person
或Concept
可能会变得不完整或过时。这是(部分)耶拿不这样做的原因:耶拿的状态完全基于RDF图中的内容。
也就是说,如果您愿意接受这种风险,或者您知道在您的应用程序中,从资源URI到Java对象类的映射很少或根本没有机会发生根本改变,有一些Jena扩展可以帮助您。我建议以JenaBean为例。