我有一个简单的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)。
如果我加载它,我会看到所有6个预期的owl:differentFrom推论(fruitA owl:differentFrom fruitB),只要我选择 owl-max 作为我的规则集。
但是,无论我为我的存储库选择哪种预先设置的规则集类型,我都不会看到Henry是属于类LimitedDiet的个人的推断。
考虑到可用的规则集,这是预期的吗?如果我想定义我自己的规则集可以支持这种类型的推理,那么任何人都可以指示我的指针可以帮助吗?
另外 - 我应该期望看到所有:在OWL-RL和OWL-QL以及OWL-MAX中推断出的不同断言?我以为它们都是后者的延伸。
非常感谢!