swrl 规则的 else 分支
else branch of a swrl rule
请问是否可以在SWRL中表达规则的else分支?
我知道它可以表达 p->q 但我希望能够断言 r if non(p)
例子
HeavyPrecipitation(?x) -> hasObservationTag(?x,FalsePositiveOutlier)
现在我想说 else hasObservationTag(?x,TruePositiveOutlier)
如何做到这一点?
谢谢
在像 (p->q)
这样的规则中,没有办法说 (not(p) -> ...)
;在 OWL-DL+SWRL 中永远不可能。
但是,您可以做一些事情,这些事情可能是您特定用途的解决方法:
OWL : ComplementOf(ClassExpression)
: 像否定一样工作
类表达式
SWRL : DifferentIndividualsAtom(Arg1,Arg2)
: 排除有用
一个值或一个范围
它们是表达类似否定的东西的唯一方式。
以你的例子为例:
then-rule ClassAtom(HeavyPrecipitation,?x) -> propertyAtom(hasObservationTag,?x,FalsePositiveOutlier)
else-rule ClassAtom(ComplementOf(HeavyPrecipitation),?x) -> propertyAtom(hasObservationTag,?x,TruePositiveOutlier)
注意:对于开放世界假设和深度学习,否定是棘手的;有时两个规则('then' 和 'else')可以同时为真(主要取决于您的 class 是如何定义的)。有时 none 您的规则将适用:这完全取决于您如何向您的个人声明 classes。
请问是否可以在SWRL中表达规则的else分支? 我知道它可以表达 p->q 但我希望能够断言 r if non(p)
例子 HeavyPrecipitation(?x) -> hasObservationTag(?x,FalsePositiveOutlier)
现在我想说 else hasObservationTag(?x,TruePositiveOutlier)
如何做到这一点?
谢谢
在像 (p->q)
这样的规则中,没有办法说 (not(p) -> ...)
;在 OWL-DL+SWRL 中永远不可能。
但是,您可以做一些事情,这些事情可能是您特定用途的解决方法:
OWL :
ComplementOf(ClassExpression)
: 像否定一样工作 类表达式SWRL :
DifferentIndividualsAtom(Arg1,Arg2)
: 排除有用 一个值或一个范围
它们是表达类似否定的东西的唯一方式。
以你的例子为例:
then-rule ClassAtom(HeavyPrecipitation,?x) -> propertyAtom(hasObservationTag,?x,FalsePositiveOutlier)
else-rule ClassAtom(ComplementOf(HeavyPrecipitation),?x) -> propertyAtom(hasObservationTag,?x,TruePositiveOutlier)
注意:对于开放世界假设和深度学习,否定是棘手的;有时两个规则('then' 和 'else')可以同时为真(主要取决于您的 class 是如何定义的)。有时 none 您的规则将适用:这完全取决于您如何向您的个人声明 classes。