我有一个简单的 OWL 本体,我已经加载到 GraphDB repo 中(为清晰起见省略了标准前缀):

@prefix s: <urn:sample:> .

s:Fruit a owl:Class;
  owl:oneOf (s:Apple s:Banana s:Pear) .

[a owl:AllDifferent;
 owl:distinctMembers (s:Apple s:Banana s:Pear)] .

s:eats a owl:ObjectProperty .

s:Fruitivore owl:equivalentClass 
    [a owl:Restriction;
     owl:onProperty s:eats;
     owl:allValuesFrom s:Fruit].

s:Henry a s:Fruitivore .

s:LimitedDiet owl:equivalentClass 
    [a owl:Restriction;
     owl:onProperty s:eats;
     owl:maxCardinality 3].

我断言只有 3 种水果,亨利是只吃水果的人。

最后,我定义了一个类(限制饮食),这些人吃不超过 3 种不同的东西。

如果我加载这个,我会看到所有 6 个预期 owl:differentFrom 推论(fruitA owl:differentFrom fruitB),只要我选择 owl-max 作为我的规则集。

但是,无论我为我的存储库选择哪种预先设置的规则集类型,我都不会看到 Henry 是属于 LimitedDiet 类的个体的推断。

鉴于可用的规则集,这是预期的吗?如果我想定义我自己的规则集可以支持这种类型的推理,那么任何人都可以指示我的指针可以帮助吗?

另外 - 我是否应该期望在 OWL-RL 和 OWL-QL 以及 OWL-MAX 中推断出 all:differentFrom 断言?我认为它们都是后者的延伸。

非常感谢!