0

我想知道如何从使用 Jena 框架的本体加载一个模型,在该模型中我将检索到本体中定义的完全相同的语义。我发现Jean 本体 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 是否提出了这种代表任何本体的专用(生成?)框架?

谢谢

4

1 回答 1

0

做你所要求的有一个概念问题,即 RDF 的优势在于数据模型是可延展的。这有时被表达为“任何人都可以对任何事情说任何话”。换句话说,您的应用程序状态完全由图表中的任何时间定义。假设资源r当前具有rdf:type foaf:Person,则该图完全有可能且合法地更改r,例如,rdf:type skos:Concept改为具有。或者,事实上,两者兼而有之。因此,使用某种 ORM 将资源表示为不变的 Java 类Person,否则Concept就有变得不完整或陈旧的风险。这(部分)是 Jena 不这样做的原因:Jena 中的状态完全基于 RDF 图中的内容。

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

于 2011-02-14T10:48:32.647 回答