将 SWRL 与 Jena 和 Pellet 结合使用

2024-05-14

我无法找到一些使用 SWRL 和 Jena 的简单代码示例 佩莱,或者至少使用 SWRL?我研究了 Pellet 文档中的一些示例,但没有关于使用 SWRL 的示例。网络上的大多数示例都不完整且令人困惑。

我找到的唯一解决方案是使用 Jess 规则引擎,但它不是免费的,并且需要商业许可。我发现 Pellet 支持 SWRL 规则,但找不到运行示例。

我发现的唯一例子是这个,但我不明白:

OWLOntologyManager m = create();
OWLOntology o = m.createOntology(example_iri);
// Get hold of references to class A and class B.
OWLClass clsA = df.getOWLClass( IRI.create(example_iri +    "#A" ));
OWLClass clsB = df.getOWLClass(IRI.create(example_iri +    "#B"    ));
SWRLVariable var = df.getSWRLVariable(IRI.create(example_iri + "#x" ));
SWRLClassAtom body = df.getSWRLClassAtom(clsA, var);
SWRLClassAtom head = df.getSWRLClassAtom(clsB, var);
SWRLRule rule = df.getSWRLRule(Collections.singleton(body),
Collections.singleton(head));
m.applyChange(new AddAxiom(o, rule));

颗粒规则和耶拿规则非常不同™

简而言之,Pellet 支持 SWRL 规则。如果你有一个包含 SWRL 规则的本体并要求 Pellet 对其进行推理,它会考虑它们。

耶拿有自己的规则语言,在文档页面中有描述,推理器和规则引擎:Jena 推理支持 http://jena.apache.org/documentation/inference/。它支持前向和后向链接规则。

然而,尽管 Pellet 和 Jena 都支持规则概念,但 SWRL 规则和 Jena 规则的预期领域却截然不同。 SWRL 规则是 OWL 级别的构造; SWRL 规则中的一元谓词是类表达式,二元谓词是对象和数据属性。此外,SWRL 规则仅匹配指定的个人;它们与仅推断存在的个体不匹配。另一方面,Jena 规则是 RDF 级别的,并且设计用于在 RDF 图上工作。虽然 RDF 和 OWL 经常一起使用(例如,OWL 数据在 RDF 中序列化),但两者在概念上是不同的。可以实现不使用 RDF 的 OWL 推理器,并且可以构建不使用 RDF 图的 SWRL 引擎。

耶拿还是 OWL API?

您所显示的代码,基于是否存在OWL本体管理器 http://owlapi.sourceforge.net/javadoc/org/semanticweb/owlapi/model/OWLOntologyManager.html,基于 OWL API,而不是 Jena 的 API。 OWL API 将具有更直接的功能来处理 OWL 和 SWRL 规则,而 Jena 则不会。 (Jena 的 OntModels 与 OWL1 配合良好,但对 OWL2 的支持并不完整(并且仍然“向贡献者开放”)。

您可能会发现使用 Protégé 等编辑器创建规则比使用 OWL API 或尝试使用 Jena 的 API 更容易。马丁·库巴 (Martin Kuba) 写了一篇非常好的文章OWL2 和 SWRL 教程 http://dior.ics.muni.cz/~makub/owl/这可以帮助你。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 SWRL 与 Jena 和 Pellet 结合使用 的相关文章

  • 仅提取邮政编码和 lsoa 代码 - Sparkql

    我正在尝试编写一些 Sparkql 来提取邮政编码数据并行进 lsoa 代码 到目前为止 当我只想要最后一个单元时 我提取了邮政编码和 lsoa 代码的所有 url 请问我怎样才能得到最后的元素 query lt PREFIX pc
  • RDB2RDF 工具的优缺点是什么? [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我需要知道 RDB2RDF 工具之间的区别 谁能告诉我 RDB2RDF 工具的优点和缺点是什么 特别是对于以下 Virtuoso Ultrawrap Ontop Morph Xs
  • 将空白节点添加到 Jena 模型

    我正在尝试使用一组现有的三元组填充耶拿本体模型 其中一些包含空白节点 我想忠实地维护这个新模型中的这些空白节点 但我无法找到将它们添加到耶拿模型中的方法 我一直在使用 Statement s ResourceFactory createSt
  • 无法使用 Jena 写入大型 owl 文件

    我正在尝试将数据库表中包含的数据转换为一组三元组 因此我正在使用 Jena java 库编写一个 owl 文件 我已经成功地使用少量表记录 100 完成了此操作 这些记录对应于 owl 文件中的近 20 000 行 我对此感到满意 为了编写
  • 类的对象属性

    如何确定 Jena 中类的对象属性 我可以获取所有对象属性 但我想获取特定类的对象属性 获取所有objectProperties的代码 ExtendedIterator objects m listObjectProperties whil
  • 处理 RDFa 中“rel”的非语义使用

    我使用 RDFa 将链接数据添加到我的网页 我也偶尔使用rel用于非语义目的的各种标签中的属性 例如触发 javascript 工具提示 我想知道我可以做些什么来区分用途 例如 我的社交网络图标周围有 RDFa 如下所示 a alt twi
  • OWL 和 DL 推理:为什么爱欲不美丽?

    我创建了一个基于以下内容的本体 Every person is beautiful if one of his her parents is beautiful Aphrodite is a parent of Eros Aphrodite
  • 具有大量 UNION 的 SPARQL 查询的替代方案

    我在 Virtuoso 中存储了一些命名图表 我想从提供的列表中找到与最多术语匹配的图表 我的查询是以编程方式构建的 如下所示 SELECT DISTINCT graph count DISTINCT match as matches WH
  • Jena Fuseki 服务器命令未找到

    我是 Jena Fuseki 服务器的新手 根据链接http jena apache org documentation serving data index html http jena apache org documentation
  • 如何使用现有本体从 XML 文件中提取 RDF 三元组?

    我正在尝试使用现有本体从 XML 文件中提取 RDF 三元组 我正在使用Java 并且可以使用XPath从XML和Jena中提取数据来读写RDF文档和本体 如何根据已有的本体从XML中提取相关的三元组 忘记使用 XPath 来提取三元组吧
  • SPARQL 查询的优化。 [预计执行时间超过1500(秒)的限制]

    我正在尝试运行此查询http dbpedia org sparql http dbpedia org sparql但我收到一个错误 指出我的查询成本太高 当我运行查询槽时http dbpedia org snorql http dbpedi
  • 从 dbpedia 获取改编成电影的书籍列表

    我正在尝试获取改编自 dbpedia 书籍的美国电影列表 这是我到目前为止所拥有的 PREFIX onto
  • 如何在 TDB TripleStore 中加载模型

    我有一个问题问你 我想在我的 Jena TDB TripleStore 上加载一个文件 我的文件很大 大约80Mb 大约700000个三倍RDF 当我尝试加载它时 执行停止工作或需要很长时间 我正在使用在 Web 服务上运行的代码 Stri
  • 如何使用 SPARQL 查询生成适合特定节点类型或/和边类型的所有三元组?

    这是一个后续问题 如何使用SPARQL查询列出并统计图数据中不同类型的节点和边实体 https stackoverflow com questions 24187351 how to list and count the different
  • 从耶拿的文件中删除无效的 N-Quads

    我有一个包含 N Quads 的文件 使用 schema org 词汇表 我想使用 Apache Jena 的命令行工具将其加载到 TDB RDF 存储中 我正在使用的命令是 tdbloader loc
  • 本体验证的耶拿规则

    我想验证本体并在有任何不正确的情况下抛出错误 我要做的最多的验证如下所示 我有一堂这样的课
  • Jena 桌面 SPARQL 客户端 (TDB)?

    我正在开发一个使用 Jena 进行存储 带有 TDB 后端 的应用程序 我正在寻找类似 Squirrel 的东西 它可以让我看到正在存储的内容 运行查询等 这似乎是一个明显需要的东西 但我的 可能措辞不好 谷歌查询没有出现任何有希望的东西
  • 如何使用SPARQL计算有向图的最大度?

    我在两个单独的查询中计算了有向图中每个节点的入度和出度 SELECT s COUNT AS outdegree s p o GROUP BY s ORDER BY DESC outdegree SELECT o COUNT AS indeg
  • 如何建立rdfa lite节点之间的关系

    尝试在语义上标记有关特定地址的报告页面 该页面提供有关地址能源消耗的报告 并提供与能源消耗相关的服务优惠 我想在语义上表示该地点的地址 与该地址相关的能源报告以及该地址可用的优惠 现在 我的标记有一个用于地点的 RDFa lite 节点和另
  • 将 SWRL 与 Jena 和 Pellet 结合使用

    我无法找到一些使用 SWRL 和 Jena 的简单代码示例 佩莱 或者至少使用 SWRL 我研究了 Pellet 文档中的一些示例 但没有关于使用 SWRL 的示例 网络上的大多数示例都不完整且令人困惑 我找到的唯一解决方案是使用 Jess

随机推荐

  • Spring Boot 模板未解决

    我正在尝试使用 Spring Boot 和 Thymeleaf 构建一个独立的 Web 应用程序 该应用程序在 IntelliJ IDEA 中运行良好 但我无法单独运行该 jar 显然模板不包括在内 我的项目结构如下 src main ja
  • Inotify linux 监视子目录

    是否可以以这种模式监视目录 storage data usernames Download gt storage data Download 我需要监视每个用户的下载文件夹中是否进行了更改 也许我需要创建所有路径的列表 将其放入数组中 并在
  • 为什么 javac 为最终字段插入 Objects.requireNonNull(this) ?

    考虑下面的类 class Temp private final int field 5 int sum return 1 this field 然后我编译和反编译该类 gt javac version javac 11 0 5 gt jav
  • 新创建的Python虚拟环境中的默认库

    我使用 python 创建了一个新的虚拟环境virtualenv tool virtualenv venv 然后我激活了虚拟环境 source venv bin activate 然后我做了一个pip freeze这就是我得到的 venv
  • 如何不断刷新屏幕并实时更新[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想在linux上写一个C程序 不断刷新屏幕并实时更新 例如类似于top终端中的命令 谁能指出我正确的方向 为了保持它跨终端类型的可移
  • 将属性应用于返回值 - 在 F# 中

    在 C 中 可以将属性应用于方法的返回 return DynamicAttribute public object Xyz return new ExpandoObject 这在 F 中可能吗 背景 我想要一个用 F 编写的库的方法 该方法
  • Netbeans 中的 Java 应用程序与 Java 桌面应用程序 [重复]

    这个问题在这里已经有答案了 可能的重复 Netbeans GUI 编辑器生成自己难以理解的代码 https stackoverflow com questions 2561480 netbeans gui editor generating
  • 如何为有效号码指定 DCG?

    我正在尝试为有效数字指定 DCG 如下所示 value Number gt valid number Number 基本上检查指定的值是否是数字 它也可能是变量 因此有必要检查 我不知道如何构建这个valid number不过 DCG 谓词
  • Windows 事件日志权限

    我需要授予用户哪些权限才能写入 Windows 事件日志 我有一个 ASP NET 应用程序需要模拟用户 并且模拟的用户必须能够写入事件日志 要创建事件日志源 您需要成为管理员 否则您应该能够在没有提升权限的情况下写入它 也许看一下本文 h
  • 从 ADF Faces JSF 1.2 中的托管 bean 构造函数导航

    是否可以从托管 bean 的构造函数导航到另一个页面 视图 如果发生任何异常 我希望进行此重定向 我尝试了很多方法 Try 1 getFacesContext responseComplete getFacesContext getAppl
  • 如何在 RxJS 订阅方法中等待

    在 RxJS 主题的订阅回调内部 我想要await on an async功能 下面是打字稿转译器抱怨的代码示例 错误 131 21 TS2304 找不到名称 await async ngOnInit this subscriber dat
  • 类型“never”上不存在属性“click”。 TS2339

    根据有关 TypeScript 此类错误的其他类似问题 关于问题 44147937 https stackoverflow com questions 44147937 property does not exist on type nev
  • ngrx 存储是否持久?

    ngrx 存储是否持久 换句话说 我们可以关闭浏览器重新打开它 并检索添加到ngrx 商店 https github com ngrx platform 目前 ngrx store 不支持此类功能 但是您可以通过使用类似的库来维护状态ngr
  • 使用 Cassandra 进行单元版本控制

    我的应用程序使用 AbstractFactory 作为 DAO 层 因此一旦实现了 HBase DAO 系列 创建 Cassandra DAO 系列并从多个角度查看差异对我来说将是非常好的 不管怎样 试图做到这一点 我看到 Cassandr
  • 用于集成测试的 Spring-boot 默认配置文件

    Spring boot利用弹簧型材 http docs spring io spring boot docs current reference html boot features profiles html它允许针对不同的环境进行单独的
  • 如何在不包含 MicrosoftAjax.js 的情况下使用 MicrosoftMvcValidation.js?

    如果您想使用 jQuery Validate 但不想使用主要的 Microsoft AJAX 那么 MVC 2 RC1 中似乎存在问题 即使压缩后 它也有 25kb 根据 Phil Haack 的说法 你应该能够只需包含这些脚本 http
  • 如何为已编译的 MATLAB 创建安装程序并要求用户接受我们的许可条款?

    我正在 MATLAB 中编写程序分发给 Windows 用户 我使用 MATLAB 编译器和 MATLAB r2014a 版本来创建程序 我可以使用 MATLAB 应用程序编译器创建 Windows 安装程序 并且它的工作效果可以接受 但是
  • 显示在 Angular 5 中作为 Blob 对象接收的图像

    我正在开发一个 MEAN Stack 应用程序 我想做的是显示存储在数据库中的图像 这样后端就可以工作 但我真正的问题是在前端Angular所以我这样做了 首先从后端接收图像 我做了一个服务来做到这一点 Function to get us
  • 被拒绝:将映像推送到 gitlab 注册表时,请求的资源访问被拒绝

    我正在尝试将图像推送到 gitlab 注册表 我已经做过很多次了 所以我想知道为什么会出现这个错误 我使用最新标签构建图像 Successfully tagged registry gitlab com mycompany rgpd api
  • 将 SWRL 与 Jena 和 Pellet 结合使用

    我无法找到一些使用 SWRL 和 Jena 的简单代码示例 佩莱 或者至少使用 SWRL 我研究了 Pellet 文档中的一些示例 但没有关于使用 SWRL 的示例 网络上的大多数示例都不完整且令人困惑 我找到的唯一解决方案是使用 Jess