swrl 规则推断 dataProperty 值

2024-01-03

我正在尝试测试一个简单的 SWRL 规则。我的本体中有三个类:LivingPlace,它有两个子类 RuralArea 和 City。 LivingPlace 是 dataProperty hasHospital 的域,其范围为布尔值。

当我使用 Pellet Reasoner 测试以下规则时,我创建为 LivingPlace 成员的个人也被推断为 RuralArea 成员。

LivingPlace(?lp), hasHospital(?lp, false) → RuralArea(?lp)

然而,我真正想做的是与这个推理相反。

RuralArea(?lp) → hasHospital(?lp, false)

每当我创建 RuralArea 类型的个体时,我希望 Pellet 推断出 hasHospital 为 false。我怎样才能做到这一点?


这是一个最小的本体,其中包含您所描述的类,即 LivingPlace 类有两个直接子类:City 和 RuralArea。有一个个体,ruralArea1,类型为 RuralArea,本体包含 SWRL 规则

RuralArea(?x) → hasHospital(?x,false)

<rdf:RDF
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns="http://example.org/places#"
    xmlns:owl="http://www.w3.org/2002/07/owl#"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
    xmlns:swrl="http://www.w3.org/2003/11/swrl#"
    xmlns:swrlb="http://www.w3.org/2003/11/swrlb#"
    xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#">
  <owl:Ontology rdf:about="http://example.org/places"/>
  <owl:Class rdf:about="http://example.org/places#LivingPlace"/>
  <owl:Class rdf:about="http://example.org/places#City">
    <rdfs:subClassOf rdf:resource="http://example.org/places#LivingPlace"/>
  </owl:Class>
  <owl:Class rdf:about="http://example.org/places#RuralArea">
    <rdfs:subClassOf rdf:resource="http://example.org/places#LivingPlace"/>
  </owl:Class>
  <owl:DatatypeProperty rdf:about="http://example.org/places#hasHospital">
    <rdfs:domain rdf:resource="http://example.org/places#LivingPlace"/>
    <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#boolean"/>
  </owl:DatatypeProperty>
  <swrl:Imp>
    <swrl:body>
      <swrl:AtomList>
        <rdf:rest rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#nil"/>
        <rdf:first>
          <swrl:ClassAtom>
            <swrl:classPredicate rdf:resource="http://example.org/places#RuralArea"/>
            <swrl:argument1>
              <swrl:Variable rdf:about="urn:swrl#x"/>
            </swrl:argument1>
          </swrl:ClassAtom>
        </rdf:first>
      </swrl:AtomList>
    </swrl:body>
    <swrl:head>
      <swrl:AtomList>
        <rdf:rest rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#nil"/>
        <rdf:first>
          <swrl:DatavaluedPropertyAtom>
            <swrl:argument2 rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean"
            >false</swrl:argument2>
            <swrl:propertyPredicate rdf:resource="http://example.org/places#hasHospital"/>
            <swrl:argument1 rdf:resource="urn:swrl#x"/>
          </swrl:DatavaluedPropertyAtom>
        </rdf:first>
      </swrl:AtomList>
    </swrl:head>
  </swrl:Imp>
  <owl:NamedIndividual rdf:about="http://example.org/places#ruralArea1">
    <rdf:type rdf:resource="http://example.org/places#RuralArea"/>
  </owl:NamedIndividual>
</rdf:RDF>

当我在 Protégé 4.x 中加载此本体并使用 Pellet 作为推理器时,并确保有关数据类型属性的推论显示在 UI 中(如中所述)Protégé OWL 邮件列表中的此消息 https://mailman.stanford.edu/pipermail/protege-owl/2013-August/019672.html),推论

ruralArea1 hasHospital false

显示如下图所示。

查看 Pellet 得出此推论的另一种方法是使用 SPARQL 进行询问。例如,使用保存在query.sparql

prefix : <http://example.org/places#>

select ?s ?o where { 
  ?s :hasHospital ?o 
}

and the pellet命令行工具,我们得到以下结果:

$ pellet query -q query.sparql ./places.owl 
Query Results (1 answers): 
s          | o                                              
============================================================
ruralArea1 | false^^http://www.w3.org/2001/XMLSchema#boolean

值得指出的是,您实际上并不需要 SWRL 来执行此特定推理。你可以简单地说

RuralArea subClassOf(hasHospital 值为 false)

并得到相同的结果。在 Protégé 中,这将类似于以下屏幕截图。这样做的优点是,如果您使用不支持 SWRL 的 OWL 推理器,它会给您相同的结果。

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

swrl 规则推断 dataProperty 值 的相关文章

  • 如何在oracle中显示用户的所有权限?

    有人可以告诉我如何在 sql 控制台中显示特定用户的所有权限 规则吗 您可以尝试以下这些视图 SELECT FROM USER SYS PRIVS SELECT FROM USER TAB PRIVS SELECT FROM USER RO
  • 如何在Protege 4.3.0中启用Pellet?

    已经过去快一年了无法下载 Protege 4 3 的 Pellet 插件建议该版本不可用 有什么改变吗 应该可以从他们的 github 下载它并将其放入 Prog g 的插件文件夹中 https github com Complexible
  • OWL-LIST 和 RDF-LIST 之间的区别

    我无法理解 OWL LIST 和 RDF LIST 之间的区别 其次 为什么OWL DL由于OWL序列化而不支持RDF LIST 以及如何在 OWL DL 中创建 OWL LIST 正如评论中提到的 我不认为有任何称为 OWL LIST 的
  • Protégé 中枚举的数据范围表达式

    我想将数据类型属性的范围定义为字符串的详尽枚举 这样个人只能将枚举中的一个字符串作为该属性的值 例如 名为 颜色 的数据类型属性只能采用 3 个值 红色 绿色 和 蓝色 我正在使用 OWL 2 和 Prot g 5 0 使用 Prot g
  • 对齐规则

    我在家庭作业问题上遇到了一些麻烦 我想知道是否有人可以为我指出正确的方向 假设我们正在为一台机器编译 1字节字符 2字节 短整型 4 字节整数和 8 字节 实数 并具有对齐规则 需要每个原语的地址 数据元素为偶数倍 元素的大小 进一步假设
  • 浏览器 cookie 域如何工作?

    由于我遇到了奇怪的域 子域 cookie 问题 我想知道浏览器如何处理 cookie 如果他们以不同的方式做事 那么了解其中的差异也很好 换句话说 当浏览器收到 cookie 时 该 cookie 可能附加一个域和一个路径 或者不是 在这种
  • 无法使用 Jena 写入大型 owl 文件

    我正在尝试将数据库表中包含的数据转换为一组三元组 因此我正在使用 Jena java 库编写一个 owl 文件 我已经成功地使用少量表记录 100 完成了此操作 这些记录对应于 owl 文件中的近 20 000 行 我对此感到满意 为了编写
  • phpcs:如何修改 PSR2 以检查大括号与方法在同一行?

    我现在花了 2 个多小时试图弄清楚如何要求 与方法声明在同一行 而不是默认要求在下一行 我怎样才能完成这件事 我已将 PSR2 标准复制到名为 PSR2 的新文件夹中 以便能够根据自己的喜好对其进行修改 所以我正在研究的基础基本上是我想要修
  • 类上的对象属性实例?

    举例来说 Food class Bread instance of Food Species class Animal class Horse class Unicorn instance 现在我需要能够设置 Bread gt eatabl
  • Nanoc布局编译规则

    我正在使用nanoc 我希望我的index html指向特定的布局 所以我创建了该布局 它被称为nosidebar html 我的规则如下 compile index html do layout nosidebar end 这似乎不起作用
  • 在这种情况下我应该使用 Drools 吗?

    我将使用大学的图书馆系统来解释我的用例 学生在图书馆系统中注册并提供个人资料 性别 年龄 院系 以前完成的课程 当前注册的课程 已借阅的书籍等 图书馆系统中的每本书都会根据学生的资料定义一些借阅规则 例如 计算机算法课本只能由当前注册该班级
  • 从 Sonarqube 导出编码规则列表

    我正在尝试找到一种方法来获取所有 Sonarqube Java 或其他 规则 带有键 描述等 的列表 并将其导出为 Excel csv 或 xml 我可以 动态 地列出它们 例如this http nemo sonarqube org co
  • OWL 和 DL 推理:为什么爱欲不美丽?

    我创建了一个基于以下内容的本体 Every person is beautiful if one of his her parents is beautiful Aphrodite is a parent of Eros Aphrodite
  • 如何使用对齐 API 创建对齐对象

    我有一个本地的alignment rdf文件并使用对齐 API 库here http alignapi gforge inria fr 我想创建Alignment对象并将其转换为 owl 文件 我的代码在这里 AlignmentParser
  • OWL/XML 读取问题

    我在使用 Jena 从 Java 读取 OWL XML 文件时遇到问题 我读取 RDF XML 文件没有问题 但每当我从 Protege 创建 OWL XML 文件并尝试读取它时 Java 都会给出以下错误 警告 主要 RDFDefault
  • 如何使用存储在表中的 SQL 语句作为另一个语句的一部分?

    在我们的 Oracle 数据库中 我们有一个名为 RULES 的表 其中有一个名为 SQLQUERY 的字段 该字段是一个 varchar 存储了 SQL 语句 PK 是 DM PROJECT 存储的典型语句可以是 select ACCOU
  • FireBase 规则不适用于 auth.uid

    我正在尝试设置一条 Firebase 规则 如果 uid 等于 auth uid 则该规则将授予对 R W 的访问权限 这是我的数据库结构的示例 我尝试的第一个规则配置 rules uid read uid auth uid write u
  • OWL 中表达式前面的列表?

    OWL 中表达式前面是否可以有一个列表 就像是 Dairy Egg Nut rdfs subClassOf FoodGroup or Dairy Egg Nut rdfs subClassOf FoodGroup 或者一般来说 是否存在针对
  • 防止“删除和更新”firebase中的子项

    我发现没有办法设置安全规则来防止孩子的 删除和更新 write data exists newData exists newData exists 那没有道理 为了便于将来参考 Firebase 控制台允许您测试数据库安全规则 以便您可以在
  • 使用逻辑运算符进行 Laravel 表单验证

    当用户填写消息 文本区域 时 他 她无法填写日期 时间 地点值 仅当 Message 为空且所有这三个字段均已填充时 才会考虑这三个字段 如何使用 Laravel 表单验证来做到这一点 是否可以在Request的规则方法中定义这些逻辑 我是

随机推荐