我想进行推断,例如此图中灰色虚线表示的属性:
我已经断言了一个普遍的公理:
(hasTaste some Bitter) SubClassOf: goesWellWith some (hasTaste some Sweet)
其中 'bitter' 属于 Bitter 类型,'sweet' 属于 Sweet 类型。
我认为 owl:someValuesFrom (或曼彻斯特的“some”)意味着至少必须存在一种这样的关系。然而,在做出大胆的图表断言和一般公理之后,这不会发生。
我怎样才能使这项工作?
编辑(编辑 2,我想通了)
刚刚想到了一个 super 有效的属性(property)链!我只是指定
hasTaste o complements o isTasteOf
作为gosWellWith的 super 属性(property)链。实际上,通过使 hasTaste、hasTexture 等...通用 hasTrait 的所有子属性,然后我可以分别用 hasTrait 和 isTraitOf 替换 hasTaste 和 isTasteOf:
hasTrait o complements o isTraitOf
结果捕获了相互补充的食物特性的每一种排列。
最佳答案
在回答您的问题时,我将 (1) 解释您的方法失败的原因和 (2) 提供可能的解决方案。
为什么你的方法失败了
推理者一般只对基于命名类的推理提供反馈, 而不是匿名类 。在您的示例中 (hasTaste some XXX)
和 goesWellWith some (hasTaste some YYY)
是匿名类,因此它们通常不会构成推理器报告的推理的一部分。
一个可能的解决方案
ObjectProperty: hasIngredient
Characteristics: Transitive
Domain:
FoodCombination
Range:
Food
ObjectProperty: hasTaste
SubPropertyChain:
hasIngredient o hasTaste
Characteristics:
Transitive
Domain:
Food
Range:
Taste
Class: Bitter
SubClassOf:
Taste
Class: BitterSweetCombination
EquivalentTo:
(hasTaste some Bitter)
and (hasTaste some Sweet)
SubClassOf:
TastyCombination
Class: CulinaryDish
SubClassOf:
FoodCombination
Class: DespicableCombination
SubClassOf:
FoodCombination
Class: Food
DisjointWith:
Taste
Class: FoodCombination
SubClassOf:
Food
DisjointUnionOf:
DespicableCombination, TastyCombination
Class: Kale
SubClassOf:
Food,
hasTaste some Bitter
DisjointWith:
Pear
Class: Pear
SubClassOf:
Food,
hasTaste some Sweet
DisjointWith:
Kale
Class: PearKaleDelight
SubClassOf:
CulinaryDish,
hasIngredient some Kale,
hasIngredient some Pear
Class: Sweet
SubClassOf:
Taste
Class: Taste
DisjointUnionOf:
Bitter, Sweet
DisjointWith:
Food
Class: TastyCombination
SubClassOf:
FoodCombination
该本体将
PearKaleDelight
类分类为 BitterSweetCombination
的子类。关于rdf - Protege 中复杂类的推理,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51690474/