27

我正在尝试实现一个使用本体的基于 Eclipse 的应用程序。(我的主题是语义注释)。我将需要向用户显示本体(作为树)并在本体类和某些模式之间建立链接。

由于我只有基本的编程技能,我现在有点不知所措,至于如何设计应用程序... 1. 问题:使用哪些 API?我找到了 OWL API 和 Jena API。在其中一篇文章中(是否有任何库可以轻松更改和更新 OWL 文件?)Michael 表示“OWLAPI over Jena。Jena 支持 OWL,但它不是OWL 设计的,这使得使用起来有点麻烦。”你怎么看这个?2. 此外,还有Protégé API。乍一看,它似乎更适合我,因为它已经提供了一些 GUI 实用程序等。但我有点困惑:在尝试查找更多信息时,我发现了这个http://protegewiki.stanford.edu/wiki /P4API概述. 那里显示“正在进行中”,但该页面最后一次更改是在 2009 年。如何理解这一点?有没有人使用 Protégé API 并可以分享他/她的经验?

提前非常感谢!

4

1 回答 1

39

尽管这个问题对于 StackOverflow 来说可能是题外话,但总的来说它仍然是一个重要的问题,所以这里有一些关于 Jena API 和 OWL API 之间区别的一般想法,即使它们不会让你更喜欢其中一个。其他,可能会让您更好地了解在这两种情况下您要进入的内容。我将其标记为社区 wiki,以便其他人也可以对其进行更新。

OWL和RDF的关系

RDF 是一种基于图的表示格式。RDF 图是一个有向图,其节点是资源(可以是匿名的,或由 IRI 标识)和文字,其边是由 IRI 标识的有向链接。这非常简单,但是因为标识符是 IRI 并且通常可以被尊重,所以也非常有用。关于 RDF 真的没什么好说的了,因为这就是它的全部内容。它非常灵活,您几乎可以代表任何东西。

OWL,虽然设计用于语义网,因此与 RDF 数据一起使用,但实际上是一种逻辑语言,只是偶然碰巧与 RDF 相关。OWL 本体由一组 OWL 公理组成,其中一些声明某些标识符指代个体,其中一些断言个体之间的关系(以及非个体数据,如文字),其中一些表达类的结构,等等。OWL 的实用性源于这样一个事实,即与 RDF 一样,它使用 IRI 作为标识符,但逻辑结构可以完全独立于 RDF 存在。事实上,虽然OWL本体可以序列化使用 RDF,事实上,这可能是最常用的序列化,OWL 也可以用 OWL/XML、OWL 功能语法、曼彻斯特 OWL 语法和任何其他人发明的序列化格式进行序列化。这些格式倾向于关注 OWL 级别的构造,并且更清楚的是,本体是一组公理。

Jena API 以 RDF 为中心

Jena API 非常牢固地植根于 RDF。基本概念是模型(它比OntModel更原始,用于完成更复杂的 OWL 相关工作),它为构建 RDF 图提供了方便的 API。使用模型,您将创建资源、添加属性等。Jena 还包括一个基于规则的推理器,对于处理 RDF 图非常方便。

现在,OWL 可以使用 RDF 进行序列化,因此可以在 RDF 图上创建一个包装层,这样您就可以说“为我创建作为 A 和 B 的交集的类”并取回标识该类的资源和透明地将 OWL 序列化中需要的任何 RDF 三元组添加到类中,以断言新类是(等价于)A 和 B 的交集。这就是 Jena OntModel API 所做的。它以一种通用的方式进行,这意味着 Jena 也可以处理其他可以在 RDF 中序列化的本体语言。Jena OntModels 在撰写本文时仅支持 OWL1;还不支持 OWL2 中引入的新结构。

Jena 中的 OWL 级构造只是 RDF 序列化的包装器这一事实意味着基于规则的推理在其所能实现的方面受到限制。特别是,OWL 的基于耶拿规则的推理器在逻辑上是不完整的(即,它们无法推断出OWL 规范所说的应该推断的所有内容)。不过,他们在日常工作中仍然做得很好。Jena 确实提供了一个 Reasoner 接口,它允许使用其他(可能是非基于规则的)推理器,例如Pellet

OWL API 以 OWL 为中心

OWL-API 以 OWL 为中心,您几乎不必担心 RDF(除了通过 IRI 识别事物并根据需要创建文字)。使用 OWL API,您实际上会将本体视为一组公理,而不是一组恰好编码某些公理的三元组。如果您已经熟悉 OWL 规范,并且很乐意谈论 ObjectPropertyAssertions 之类的内容,那么您可能会发现 OWL API 更自然一些。

Protégé-OWL API 也是以 OWL 和 RDF(S) 为中心的

来自Protégé-OWL API 程序员指南

Protege-OWL API 是用于 Web 本体语言 (OWL) 和 RDF(S) 的开源 Java 库。API 提供类和方法来加载和保存 OWL 文件,查询和操作 OWL 数据模型,以及执行基于描述逻辑引擎的推理。此外,API 针对图形用户界面的实现进行了优化。

Protégé-OWL API的主页也有一些它提供的类的漂亮图表。其中最完整的一个表明 RDF(S)OWL 实体 都有类。

Protégé-OWL(工具,而不是 API)是建立在 Protégé-OWL API 之上的图形本体编辑器。您可以为其开发插件,这可能是您的最佳选择。

于 2013-07-10T11:11:38.310 回答