我有一个简单的 OWL 本体,已加载到 GraphDB 存储库中(为清楚起见,省略了标准前缀):
@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 种不同食物的人定义了一个类别 (LimitedDiet)。
如果我加载这个,只要我选择owl-max作为我的规则集,我就会看到所有 6 个预期的 owl:differentFrom 推断 (fruitA owl:differentFromfruitB)。
然而,无论我为我的存储库选择哪种预先确定的规则集类型,我都没有看到亨利是属于 LimitedDiet 类的个人的推论。
鉴于可用的规则集,这是预期的吗?如果我想定义自己的规则集来支持这种类型的推理,是否有任何人可以指导我的指针可以提供帮助?
另外 - 我是否应该期望看到 all:differentFrom 断言在 OWL-RL 和 OWL-QL 以及 OWL-MAX 中推断出来的?我认为它们都是后者的扩展。
非常感谢!