我有 3 个类:和Reptile
, with是 的子类。Mammal
Cat
Cat
Mammal
我有一个“或”类表达式:
Reptile or Mammal or Cat
对于任何给定的“或”类表达式,我如何用推理器推断出最具代表性的类?就像在这种情况下,它们是Reptile
和Mammal
。
另一种方法:给定一个析取,生成比原始元素少一个的所有析取,并检查它们是否等价。如果为真,则被删除的元素是“冗余的”——要么是析取中另一个类的子类,要么包含在两个或多个元素的析取中(因此被其他元素覆盖)。
这同样适用于连词。
您可以重复该过程 - 当无法删除任何元素而不使新表达式不等于旧表达式时,它将终止。
It seems that getDirectSubclasses(yourOrExpression)
gives you the answers you are looking for.