如何推断出否定对象属性断言? [英] How do I get a Negative Object Property Assertion inferred?

查看:69
本文介绍了如何推断出否定对象属性断言?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在一个本体中工作,我有以下 swrl 规则:

I am working in an ontology, and I have the following swrl rule:

User(?u) ^ Project(?p) ^ isRelatedTo(?u, ?p) ^ isMemberOf(?u, ?p) -> verifiedAssociation(?u, ?p)

我想知道负对象属性断言何时发生(当 VerifiedAssociation 不正确时).

And I would like to know when a Negative Object Property Assertion happens (when verifiedAssociation is not true).

我在 Protégé 上找到了属性断言选项卡,但我希望(由推理者)推断出这一点.而且我不知道如何创建规则来实现这一点.

I found on Protégé the tab Property Assertions, but I would like this to be inferred (by the reasoner). And I don't know how to create a rule to make this happen.

有人可以帮我吗?

推荐答案

没有办法通过规则来实现这种推断.原因是你需要的是能够说

There is no way to achieve that inference through a rule. Reason being that what you need sort of is to be able to say that

User(?u) ^ Project(?p) ^ isNotRelatedTo(?u, ?p) ^ isNotMemberOf(?u, ?p) 
  -> unverifiedAssociation(?u, ?p)

但是你需要说?uany ?p没有关系,不仅仅是具体的?p.这不属于规则范围,也不属于 OWL/DL 的范围,因为它需要一种形式的封闭世界推理而不是开放世界推理.

but you need to say that ?u is not related to any ?p, not only as specific ?p. This falls outside to scope of rules and outside the scope of OWL/DLs because it requires a form of closed world reasoning rather open world reasoning.

为了达到你想要的结果,你需要以某种方式关闭你的世界.因此,您的用户要么已分配给项目,要么尚未分配.让我们介绍与 Project 不相交的 NoProject 类.然后添加规则

To achieve your desired result you need to close your world in some way. So you have users that are either assigned to a project or they are not assigned as yet. Let us introduce NoProject class which is disjoint with Project. You then add a rule

User(?u) ^ NoProject(?p)
  -> unverifiedAssociation(?u, ?p)

其中 unverifiedAssociationverifiedAssociation 不相交.

where unverifiedAssociation is disjoint with verifiedAssociation.

您可能还想查看具有空"对象属性的个人 堆栈溢出问题.

You may also want to look at the Individual with "null" object property Stack Overflow question.

更新

根据SWRL FAQ,SWRL 不支持否定.唯一的方法是定义不相交的对象属性的对偶.即,

SWRL does not support negation according to the SWRL FAQ. The only way is to define duals of your object properties that are disjoint. I.e.,

ObjectProperty: isMemberOf
ObjectProperty: isNotMemberOf
    DisjointWith: isMemberOf

VerifiedAssociationNotVerifiedAssociation 执行类似操作.然后你以肯定的形式定义你的规则:

Do similar for VerifiedAssociation and NotVerifiedAssociation. Then you define your rule in a positive form:

User(?u) ^ Project(?p) ^ isRelatedTo(?u, ?p) ^ isNotMemberOf(?u, ?p) 
  -> NotVerifiedAssociation(?u, ?p)

这篇关于如何推断出否定对象属性断言?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆