0

我有 3 个类:和Reptile, with是 的子类。MammalCatCatMammal

我有一个“或”类表达式:

Reptile or Mammal or Cat

对于任何给定的“或”类表达式,我如何用推理器推断出最具代表性的类?就像在这种情况下,它们是ReptileMammal

4

2 回答 2

1

另一种方法:给定一个析取,生成比原始元素少一个的所有析取,并检查它们是否等价。如果为真,则被删除的元素是“冗余的”——要么是析取中另一个类的子类,要么包含在两个或多个元素的析取中(因此被其他元素覆盖)。

这同样适用于连词。

您可以重复该过程 - 当无法删除任何元素而不使新表达式不等于旧表达式时,它将终止。

于 2017-03-07T20:26:21.627 回答
1

It seems that getDirectSubclasses(yourOrExpression) gives you the answers you are looking for.

于 2017-03-07T11:59:51.517 回答