繁体   English   中英

如何在protege中正确设置“仅”限制?

[英]How can i set “only” restriction properly in protege?

我想在Protégé中代表一个球容器。 我有一个RedBallContainer类是一个容器,一个RedBall是一个球,如下图所示:

类层次

我创建了一个包含域的容器和范围球的属性Contains。

现在我想说“如果一个容器仅包含红球,则它是RedBallContainer”。 为此,我添加了以下规则:

规则

现在,当我运行推理机时,它告诉我Container类等于Thing,但我认为我要表示的内容是错误的! 这是推理机推断的图片:

推理结果

我究竟做错了什么?

好吧,您的限制规则不正确。 它说

“ RedballContainer等效于包含RedBallContainers的类”

它应该是:

“ RedballContainer等效于包含RedBalls的类”

如发现上述修复程序一样进行编辑 ,不会删除奇怪的推断对等关系。 出现此问题的原因有些令人费解,但大致是这样的:

  1. 我们知道contains的域是Container ,因此根据定义,任何使用contains属性的Container
  2. 我们知道RedBallContainer等同于仅包含RedBall的任何内容,因此仅包含红球的任何项目都是红球容器。
  3. 我们也知道RedBallContainerContainer的子类。

现在想象一些不是Container 可能有两个选择:它要么包含某些内容,要么不包含任何内容。 如果确实包含某些内容,那么根据定义1,它毕竟仍然是一个Container

但是,如果它包含任何东西,这意味着它包含的所有球其实都是红球(因为没有它包含了零个球不是红球)! 根据我们的第二个定义,这个东西就是RedBallContainer 根据我们的第三个定义,因此它毕竟必须是一个Container

简而言之,在这套规则下,某些东西不可能不是Container 一切都是Container ,因此ContainerThing是等效的。

啊,逻辑。

要解决此问题,您可以更改限制,使RedBallContainer等同于仅包含红球的任何Container

   EquivalentTo Container and contains only RedBall

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM