如何推断出否定对象属性断言? [英] How do I get a Negative Object Property Assertion inferred?
问题描述
我在一个本体中工作,我有以下 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)
但是你需要说?u
与any ?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)
其中 unverifiedAssociation
与 verifiedAssociation
不相交.
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
对VerifiedAssociation
和NotVerifiedAssociation
执行类似操作.然后你以肯定的形式定义你的规则:
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屋!