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 中永远不可能。

但是,您可以做一些事情,这些事情可能是您特定用途的解决方法:

  1. OWL : ComplementOf(ClassExpression) : 像否定一样工作 类表达式

  2. 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。