Was*_*amo 5 rdf semantic-web owl rdfs protege
我想做出如下推论,比如图中灰色虚线代表的属性:
我断言了一个普遍的公理:
(hasTaste some Bitter) SubClassOf: goesWellWith some (hasTaste some Sweet)
Run Code Online (Sandbox Code Playgroud)
其中“bitter”是“Bitter”类型,“sweet”是“Sweet”类型。
我认为 owl:someValuesFrom (或曼彻斯特的“some”)意味着至少必须存在一个这样的关系。然而,在做出大胆的图表断言和一般公理之后,这种情况并没有发生。
我怎样才能做到这一点?
编辑(编辑2,我明白了)
我只是想到了一个可以用的超级房产链!我只是指定
hasTaste o complements o isTasteOf
Run Code Online (Sandbox Code Playgroud)
作为gosWellWith的超级地产链。事实上,通过制作 hasTaste、hasTexture 等...通用 hasTrait 的所有子属性,然后我可以分别用 hasTaste 和 isTraitOf 替换 hasTaste 和 isTasteOf :
hasTrait o complements o isTraitOf
Run Code Online (Sandbox Code Playgroud)
结果捕捉到了彼此互补的食品特性的每一种排列。
在回答您的问题时,我将(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
Run Code Online (Sandbox Code Playgroud)
该本体将将该PearKaleDelight类分类为 的子类BitterSweetCombination。