当前位置: 首页 > 知识库问答 >
问题:

SWRL-依赖于其他规则断言的规则

王渊
2023-03-14

用户和首选项由objectPropertyHasMediaVolumeLevelPreference链接。

objectProperty断言需要通过SWRL规则从其他用户方面推断。例如,如果用户有听力困难,则需要将MediaVolumElevel设置为VolumeLevel_4。,因此:

User(?u), hasDifficulty(?u,Hearing) -> hasMediaVolumeLevelPreference(?u,VolumeLevel_4)

这很好用。但是,由于我有其他SWRL规则,这些规则也为相同的用户推断mediaVolumElevel,例如:

User(?u), hasContext(?u,NoisyRoom) -> hasMediaVolumeLevelPreference(?u, VolumeLevel_3)

我需要的是一个规则,不知怎么的,只有在没有更高的级别已经断言的情况下才会断言偏好。在给定的示例中,即使hasContext(?u,NoisyRoom)为true,唯一断言的级别也应该是volumeLevel_4,因为是其他规则断言的。

对此有什么建议吗?使用SWRL我想要的是可能的吗?我用的是Protege4.3和Pellet Reasoner

谢谢,MFV。

共有1个答案

林劲
2023-03-14

这是可能的,但只有在某些情况下。请允许我解释一下。


1)您的HasMediaVolumeLevelPreference是与个人VolumeLevel_1、VolumeLevel_2、VolumeLevel_3和VolumeLevel_4相关的对象属性。这些个体在本体论中没有相对的排序。作为人类设计师,您知道volumelevel_4大于volumelevel_3,但对于推理者来说,不存在这样的相对排序。如果您要将HasMediaVolumeLevelPreference更改为一个范围为int(或long或其他任何类型)的数据属性,那么您就在个人后面提供了一个具体的数据值。因此,您可以使用swrl比较内建(即swrl:greaterthan等)编写规则。2)您现在可以在规则中写入子句,在先行项中进行比较,以便仅断言最高值,但是swrl只支持单调推断。因此,SWRL规则不能用于修改本体中的现有信息。SWRL规则不能从本体中收回或删除信息。因此,如果较低的卷Volume_3volume_4之前被断言,则不能从本体中删除HasMediaVolumeLevelPreference(Volume_3)关系。3)不过,Apache Jena有一个规则引擎,可用于在rdf三层操作本体。您可能必须编写自己的内置,但您可以从rdf子图中删除属性和类描述。请访问此处获取更多关于Jena规则的信息。

希望这能帮上忙。

 类似资料:
  • 我创建了这个本体,它包含两个类:血糖和服务。血糖有两个数据属性:范围为xsd:int的hasValu和范围为xsd:string的hasStatut。对象属性triggerService将血糖作为域,将服务作为范围。 我想用以下规则推断数据属性断言: Blood_Sugar(?x)hasValue(?X,?y)/swlb:比(?Y,126)的大小:小于(?y,500)→hasStatut(?X,高

  • 假设OWL本体论包含以下SWRL规则: 和以下对象属性断言: 当我运行的隐士推理器中的蛋白质,我得到以下推断对象属性断言: 然而,当我用owlready2加载同一个本体并运行它的hermitreasoner时,我没有得到任何推断的对象属性断言。例如: 不返回任何属性。 我确实以RDFXML格式保存了本体,并且可以使用owlready2检索SWRL规则。 owlready2推理器不支持这种推论吗?

  • 1、前言 前端的开发规范不仅仅是上边三章提到的内容,更多的JavaScript规范学习推荐阅读airbnb/javascript,下面补充其他方面的规范要求 2、数据库相关 2.1 【强制】数据库命名规则 根据实际情况而定 表(或者视图)名命名请统一按照系统和功能模块命名,要求看表和视图能快速知道这是哪个模块下的表;业务表和后台表请明确放置位置,为了便于维护。(如果项目没有规定规则的话采用) 请项

  • 我对drools和KIE服务器是新手。我遇到了一个问题,即如何通过触发规则RHS(then action)在工作记忆中插入新的事实,然后通过这些动态插入的事实激活其他规则。 我所期望的是,当BaseFeature从外部插入工作内存并激活RuleOne时,在RuleOne内部“然后”它将插入新的事实RuleResult,并希望激活RuleTwo,但它没有激活RuleTwo,只是RuleOne被激活了

  • 我正在从事这个项目,我的角色是开发使用标准健康保险xml的服务。服务必须在不同的xml字段上进行验证,这涉及将xml数据与数据库表中的数据进行比较。目前,我们假设所有保险公司的验证保持不变。但我怀疑它会保持不变,并且每家公司可能有不同的验证要求。在这种情况下,使用Drools规则引擎并为每家公司开发drl文件并使用规则引擎进行xml验证是个好主意吗