我正在尝试使用本体来实现基于eclipse的应用程序。 (我的主题是语义标注)。我需要向用户显示本体(作为树)并在本体类和某些模式之间建立链接。
由于我只有基本的编程技能,我现在有点不知所措,关于如何设计应用程序...... 1.问题:使用哪些API?我找到了OWL API和Jena API。其中一篇文章(Is there any library that could easily change and update OWL files?)迈克尔表示“OWLAPI超过耶拿。耶拿有OWL支持,但它不是为 OWL设计的,这使得使用它有点麻烦。”你看到了吗? 2.此外,还有ProtégéAPI。乍一看,它似乎更适合我,因为它已经提供了一些GUI实用程序等。但我有点困惑:当我试图找到更多信息时,我发现了http://protegewiki.stanford.edu/wiki/P4APIOverview。在那里它说“正在进行中”,但该页面最后一次在2009年更改。如何理解这一点?有没有人与ProtégéAPI合作并可以分享他/她的经历?
提前多多感谢!
答案 0 :(得分:30)
虽然这个问题可能是StackOverflow的主题,但它仍然是一个重要的问题,所以这里有一些关于Jena API和OWL API之间差异的一般想法,即使它们不是你喜欢的一个在另一个,可能会让你更好地了解你在任何一种情况下进入的内容。我将它标记为社区维基,以便其他人也可以更新它。
RDF是一种基于图表的表示格式。 RDF图是一个有向图,其节点是资源(可以是匿名的,或由IRI识别)和文字,其边是由IRI识别的有向链接。这非常简单,但因为标识符是IRI并且通常可以被引用,所以也非常有用。关于RDF真的没什么好说的,因为这就是它的全部内容。它非常灵活,您可以代表任何事物。
OWL虽然设计用于语义Web,因此用于RDF数据,但实际上是一种逻辑语言,只是偶然与RDF相关。 OWL本体由一组OWL公理组成,其中一些公理声称某些标识符指的是个体,其中一些标识个体之间的关系(和非个体数据,如文字),其中一些表示类的结构,等等。 OWL的实用性源于这样的事实:与RDF一样,它使用IRI作为标识符,但逻辑结构可以完全与RDF分开存在。实际上,虽然OWL本体可以使用RDF进行序列化,实际上,这可能是最常用的序列化,OWL也可以用OWL / XML,OWL功能语法,曼彻斯特OWL语法进行序列化。 ,以及某人发明的任何其他序列化格式。这些格式倾向于关注OWL级别的结构,更明确的是本体是一组公理。
Jena API非常扎根于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规则的reasoners在逻辑上是不完整的(即,他们无法推断出应该推断出OWL规范所说的所有)。不过,他们在日常工作中表现还算不错。 Jena确实提供了一个Reasoner接口,允许使用其他(可能是非基于规则的)reasoners,例如Pellet。
OWL-API是以OWL为中心的,你几乎不用担心RDF(除了通过IRI识别事物并根据需要创建文字)。使用OWL API,您实际上将本体视为一组公理,而不是将一组三元组视为编码某些公理。如果您已经熟悉OWL规范,并且很自在地谈论ObjectPropertyAssertions之类的东西,那么您可能会发现OWL API更自然。
来自The Protégé-OWL API Programmer's Guide:
Protege-OWL API是一个用于Web Ontology Language(OWL)和RDF(S)的开源Java库。 API提供了用于加载和保存OWL文件,查询和操作OWL数据模型以及基于描述逻辑引擎执行推理的类和方法。此外,API还针对图形用户界面的实现进行了优化。
Protégé-OWL API的主页面也提供了一些很好的类图表。这些fullest one表明RDF(S)和 OWL实体都有类。
Protégé-OWL(该工具,而不是API)是一个基于Protégé-OWL API顶层的图形本体编辑器。您可以develop插件,这可能是您的最佳选择。