- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
关闭。这个问题是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.
关于jena - OWL API、Jena API、Protege API,用哪一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17567771/
我想用前缀来表示这个nt文件: . "a" . "b" . "c" . 我写入一个新的nt文件是: @prefix sp: . . "a" . "b" . "c"
我有一个名为 Modelling.owl 的 OWL 文件,它是使用 Protege 4.2 创建的。但是后来我必须通过使用 Jena 注册一些新的 Individual 和它的属性来修改它。例如我有
我正在尝试使用 Jena 写入本地免费的独立 GraphDB(版本 8.5.0)存储库。 我尝试过的 (1) 耶拿直接使用 我使用了这个 Jena 3.7.0 代码片段: String strInse
我无法在我的 Ontology 中表达以下情况: 假设我有四个人投票,投了四票(所以 vote 和 voter 之间存在一对一的映射)。人们可以投票赞成或反对。如果我知道三个人的投票结果,我应该能够推
我在我的项目中使用 Dbpedia,我想创建一个本地 sparql 端点,因为在线端点不可靠。我下载了数据转储(大型 NT 文件)并决定使用 Jena TDB。使用 NetBeans IDE,我使用输
我用这个java代码在jena中创建了一个模型 Model m = ModelFactory.createDefaultModel(); Resource a1 = m.createR
我有一个猫头鹰本体,我将它读入 Jena OntModel。然后我在运行时更新它。现在我想把它写回一个OWL 本体。我正在使用下面的代码: RDFWriter writer = model.getWr
我将 Jena 和 Fuseki 安装为服务使用 一个可靠的角色 gremid.fuseki . 而且我想自定义监听主机和监听端口。但是,我不知道。 也许我应该编辑$FUSEKI_BASE/confi
我正在对基于本体的上下文管理和基于流程的上下文管理进行性能分析。然而,为了创建与 PCM 案例研究类似的场景,我需要在推理过程中直接从 Jena SWRL 规则触发 Java 方法。我做了很多研究,但
我正在使用 SPARQL 查询查询整数结果: String qString = "SELECT (COUNT(?S) AS ?C) "+ "WHERE
关闭。这个问题是opinion-based .它目前不接受答案。 想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题. 8年前关闭。 Improve t
我无法找到一些使用 SWRL 和 Jena 的简单代码示例佩莱,或者至少使用 SWRL?我研究了 Pellet 文档中的一些示例,但没有关于使用 SWRL 的示例。网络上的大多数示例都不完整且令人困惑
我对 RDF 和 Jena 很陌生。我想将一个 .nt (N-TRIPLE) 文件加载到模型中。我试过 read(inputStream, "N-TRIPLE") 但没有帮助。 它抛出 org.apa
我成功地使用 Jena API 和 Eclipse 创建、修改、合并本体。我还在 Eclipse 中成功启动了 OWL 推理器和 Pellet 推理器。 现在我想了解如何使用 Jena API 在 E
我正在尝试使用 Jena 框架来编辑使用 Protoge 4.2 构建的现有本体。即更改属性值或添加个人或类别,然后进行推理。假设在本体中我们有这样的规则:hasAge(?p,?age)^swrlb:
我了解到您可以使用以下代码提取 rdf 文件并初始化为 jena 中的模型: DatasetAccessor accessor = DatasetAccessorFactory.createHTTP(
我目前正在开发一个项目,初始值为 .owl包含我们本体的基本模式的文件。我们使用 Jena API 加载此文件并对其执行不同的操作,例如添加本体类和个体。 我们寻求将系统迁移到三重存储,这意味着,而不
这是我的代码: public class FunctionalityCheckTest1 { InfModel infModel; Model model = ModelFactory
我使用Jena和TDB来存储RDF,我想对其进行一些推断。但是RDF数据很大,Jena的owl reasoner必须将所有数据加载到内存中。 所以我想找到一个可以推理而不将所有数据加载到内存中的推理器
我建立了一个使用SWRL规则进行推理的本体。当我在Protege中执行SQWRL查询时,它工作正常。问题是,当我想将Pellet与Jena一起使用时,Pellet似乎在查询中不包括SWRL规则。我像这
我是一名优秀的程序员,十分优秀!