Rdf Protege中复杂类的推理
我想做出一些推论,比如图中灰色虚线表示的属性: 我提出了一条普遍的公理:Rdf Protege中复杂类的推理,rdf,owl,semantic-web,protege,rdfs,Rdf,Owl,Semantic Web,Protege,Rdfs,我想做出一些推论,比如图中灰色虚线表示的属性: 我提出了一条普遍的公理: (hasTaste some Bitter) SubClassOf: goesWellWith some (hasTaste some Sweet) 其中“苦”是苦的类型,“甜”是甜的类型 我认为owl:someValuesFrom(或曼彻斯特的“some”)意味着至少存在一种这样的关系。然而,在做出大胆的图表断言和一般公理之后,这并没有发生 我怎样才能做到这一点 编辑(编辑2,我算出来了) 我刚刚想到了一个超级财产链
(hasTaste some Bitter) SubClassOf: goesWellWith some (hasTaste some Sweet)
其中“苦”是苦的类型,“甜”是甜的类型
我认为owl:someValuesFrom(或曼彻斯特的“some”)意味着至少存在一种这样的关系。然而,在做出大胆的图表断言和一般公理之后,这并没有发生
我怎样才能做到这一点
编辑(编辑2,我算出来了)
我刚刚想到了一个超级财产链的工作!我只是具体说明一下
hasTaste o complements o isTasteOf
作为Goeswelwith的超级产业链。事实上,通过制作hasTaste、hasTexture等…一个通用的hasTrait的所有子属性,我可以分别用hasTrait和isTraitOf替换hasTaste和isTasteOf:
hasTrait o complements o isTraitOf
这一结果捕捉到了食物特性的每一种排列,它们相互补充
在回答您的问题时,我将(1)解释您的方法失败的原因,并(2)提供可能的解决方案 您的方法失败的原因 General中的推理器仅对基于命名类的推理提供反馈,而不是匿名类。在您的示例中,
(hasTaste some XXX)
和goeswellwhith 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
类归类为苦乐参半组合的子类
OWL非常适合对本体本身进行推断:类、子类、属性、对称性、自反性。。。在描述领域知识时(例如示例中的食品关联),最好使用自定义推断
我建议你看一看,学习如何编写这样的推理规则
TL;博士 让你的本体尽可能简单。本体(几乎)只描述领域知识的结构。 不影响知识结构本身的推论应作为单独的规则存储
,你会发现我写了一篇关于声名学的文章来回答你的例子 本体包含两类:
成分
Taste
:将口味
链接到其成分
李>口味
:对称,将两种互补
连接在一起李>口味
:对称,链接到goeswelwith
成分
和甜的
:两种苦的
互补的李>味道
:一种梨
,味道成分
李>甜
:一种羽衣甘蓝
,味道配料
苦
tastes(?ingredient1, ?taste1) ^ tastes(?ingredient2, ?taste2) ^ complements(?taste1, ?taste2) -> goesWellWith(?ingredient1, ?ingredient2)
那么,这意味着什么
如果存在以下条件:
ingredient1口味1
ingredient2口味2
taste1补充了taste2
ingredient1与ingredient2一起运行
pear
并启动推理机
如您所见,推理者已成功地推断出
梨含有羽衣甘蓝
(反之亦然)。您可以单击语句旁边的问号图标,查看推理机是如何推断语句的。我的全部查询:使用该公理,您无法推断您想要什么。它只会让“羽衣甘蓝”与有味道的东西和甜味的东西搭配得很好。在我看来,这只适用于SWRL,因为i)OWL类表达式只有一个树状结构,ii)OWL中没有变量。有没有一种方法可以从本质上“序列化”SWRL中的一般公理,以便产生所需的推论?我不希望我的用户必须编辑一长串SWRL规则。我宁愿他们在本体中指定他们想要的所有好的组合。你说匿名类“通常不会构成推理者报告的推论的一部分。”你能再解释一下吗?在进行推断时必须使用I子类的限制,是吗?令人失望的是,个人羽衣甘蓝
不会被推断为有hasTaste苦
或hasTaste苦
(其中苦
)--尽管这些是成为甘蓝的必要条件,推理者之所以不报告匿名类,是因为匿名类的数量太多了。也就是说,如果你有推论“A subassof B”,那么“A和X subassof B和X”,其中“X”是一个任意的概念描述,也是推论。我认为你对类太过努力了。我知道Protégé的界面不是与个人一起工作的最佳界面,但当你转向现实世界编程时,你将处理的都是个人,而不是类。@Richard Degenne这是一个可行的解决方案,我通过升级来确认,尽管OP更喜欢使用类而不是个人