我想问一下是否有可能在SWRL中表达规则的else分支? 我知道它可以表达p-> q但我希望能够断言r如果非(p)
示例 HeavyPrecipitation(?x) - > hasObservationTag(ΔX,FalsePositiveOutlier)
现在我想说 else hasObservationTag(?x,TruePositiveOutlier)
如何做到这一点?
感谢
答案 0 :(得分:2)
在像(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的否定是棘手的;有时两个规则('然后'和其他')可以同时为真(主要取决于你的类的定义方式)。有时你的规则都不适用:它完全取决于你如何向你的个人申报课程。