jena - OWL API、Jena API、Protege API,用哪一个

标签 jena owl protege owl-api

关闭。这个问题是opinion-based .它目前不接受答案。












想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题.

8年前关闭。




Improve this question




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

因为我只有基本的编程技能,所以我现在有点不知所措,关于如何设计应用程序......
1. 问题:使用哪些 API?我找到了 OWL API 和 Jena API。在其中一个帖子 (Is there any library that could easily change and update OWL files?) 中,Michael 表示“在 Jena 上的 OWLAPI。Jena 支持 OWL,但它不是为 OWL 设计的,这使得使用起来有点麻烦。”你怎么看?
2. 此外,还有Protégé API。乍一看,它似乎更适合我,因为它已经提供了一些 GUI 实用程序等。但我有点困惑:在尝试查找更多信息时,我发现了这个 http://protegewiki.stanford.edu/wiki/P4APIOverview .那里写着“正在进行中”,但该页面最后一次更改是在 2009 年。如何理解这一点?有没有人使用 Protégé API 并可以分享他/她的经验?

非常感谢!

最佳答案

虽然这个问题对于 StackOverflow 来说可能是题外话,但总的来说它仍然是一个重要的问题,所以这里有一些关于 Jena API 和 OWL API 之间区别的一般想法,即使它们不会让你更喜欢一个其他,可能会让您更好地了解在任何一种情况下都会遇到什么。我将它标记为社区维基,以便其他人也可以更新它。

OWL和RDF的关系

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

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

Jena API 以 RDF 为中心

Jena API 深深 Root 于 RDF。基本概念是Model (它比 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 的 Jena 基于规则的推理器在逻辑上是不完整的(即,它们无法推断出 OWL 规范所说的应该推断的所有内容)。不过,他们在日常工作中仍然做得很好。 Jena 确实提供了一个 Reasoner 接口(interface),它允许其他(可能是非基于规则的)推理器,例如 Pellet要使用的。

OWL API 以 OWL 为中心

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

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

来自 The Protégé-OWL API Programmer's Guide :

The Protege-OWL API is an open-source Java library for the Web Ontology Language (OWL) and RDF(S). The API provides classes and methods to load and save OWL files, to query and manipulate OWL data models, and to perform reasoning based on Description Logic engines. Furthermore, the API is optimized for the implementation of graphical user interfaces.



主页为Protégé-OWL API也有它提供的类的一些很好的图表。 fullest one其中显示了 RDF(S) 和 OWL 实体都有类。

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

关于jena - OWL API、Jena API、Protege API,用哪一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17567771/

相关文章:

java - Jena model.读取时间和内存问题

Sparql 查询具有特定标签的每个个体

ontology - 如何将个体与个体组合联系起来?

rdf - 使用 Jena 解析 schema.org ttl/owl 文件

java - 转义 SPARQL 查询中的特殊字符

java - Jena SDB 将文件读入模型

rdf - 什么时候应该使用语义网技术?

java - 为什么当 OntClass 创建一个个体时行为不正常?

ontology - OWL Ontology(赋予属性限制)

semantic-web - Stardog和Protege推理结果不同