我想问是否可以在SWRL中表达规则的else分支?我知道它可以表达 p->q 但我希望能够断言 r 如果 non(p)
例如 HeavyPrecipitation(?x) -> hasObservationTag(?x,FalsePositiveOutlier)
现在我想说别的 hasObservationTag(?x,TruePositiveOutlier)
如何才能做到这一点?
谢谢
在一个规则像(p->q)
没有办法说(not(p) -> ...)
; 在 OWL-DL+SWRL 中永远不可能。
但是,您可以做一些可能是您特定用途的解决方法:
OWL : ComplementOf(ClassExpression)
: 像对 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”)可以同时为真(主要取决于你的类是如何定义的)。有时您的任何规则都不会适用:这完全取决于您如何在个人身上声明课程。