0

我想问是否可以在SWRL中表达规则的else分支?我知道它可以表达 p->q 但我希望能够断言 r 如果 non(p)

例如 HeavyPrecipitation(?x) -> hasObservationTag(?x,FalsePositiveOutlier)

现在我想说别的 hasObservationTag(?x,TruePositiveOutlier)

如何才能做到这一点?

谢谢

4

1 回答 1

2

在一个规则像(p->q)没有办法说(not(p) -> ...); 在 OWL-DL+SWRL 中永远不可能。

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

  1. OWL : ComplementOf(ClassExpression): 像对 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”)可以同时为真(主要取决于你的类是如何定义的)。有时您的任何规则都不会适用:这完全取决于您如何在个人身上声明课程。

于 2017-03-29T13:25:59.070 回答