我想问是否可以在SWRL中表达规则的Else分支?我知道它可以表达p-> q,但我希望能够断言如果不(p)
示例重沉淀(?x) -> hasobservationtag(?x,falseSitiveOutlier)
现在我想说 else asobservationTag(?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)
注意:对于开放世界的假设和DL,否定是棘手的;有时,这两个规则("然后"one_answers"否则")可以同时正确(主要取决于您的课程的定义方式)。有时您的规则都不适用:这完全取决于您如何在个人声明课程中。