MJ *_*ark 3 inference owl protege reasoning object-property
假设我们有两个名为People和 的类Disease。这些类通过对象属性相关has。
:People :has :Disease
Run Code Online (Sandbox Code Playgroud)
People有子类(或个体)John,并且Disease有子类(或个体)Cancer。
:John a :People
:Cancer a :Disease
Run Code Online (Sandbox Code Playgroud)
如何通过推理得到这些子类之间的关系呢?
:John :has :Cancer
Run Code Online (Sandbox Code Playgroud)
在获得答案之前,您需要解决许多误解。
首先,子类和个体是非常不同的概念。个人(实例)是类的成员。子类表示一个类是另一个类的子集,这意味着(通过推理)暗示子类的所有成员都是(超)类的成员。(仅供参考:OWL 中没有继承的概念。)
第二类属性,例如:People :has :Disease对于类个体来说没有任何意义。定义属性与类的关系的方法是设置属性的域和范围。(仅仅用作:has属性名称就表明了一系列广泛的误解,可能来自其他类型的语言。)所以我建议使用名称:hasDisease和断言:
:hasDisease rdfs:domain :People .
:hasDisease rdfs:range :Disease .
Run Code Online (Sandbox Code Playgroud)
第三,您可以断言:John :hasDisease :Cancer并推断约翰患有疾病,因为它:Cancer是 的子类:Disease。这需要一个标准的 RDFS 推理器。此外,给定上面的域和范围定义以及断言:Joy :hasDisease :Gout,RDFS 推理器将推断出:Joy a :Person和:Gout a :Disease。
您可以通过 Google 找到一些 OWL 入门书。我建议仔细阅读其中一些内容,以基本了解 OWL 和推理概要文件的工作原理。