假设我们有两个名为People和的类Disease。这些类由 Object Property 关联has。
:People :has :Disease
People有子类(或个体)John,Disease有子类(或个体)Cancer。
:John a :People
:Cancer a :Disease
我们如何通过推理得到这些子类之间的关系?
:John :has :Cancer
假设我们有两个名为People和的类Disease。这些类由 Object Property 关联has。
:People :has :Disease
People有子类(或个体)John,Disease有子类(或个体)Cancer。
:John a :People
:Cancer a :Disease
我们如何通过推理得到这些子类之间的关系?
:John :has :Cancer
在您得到答案之前,您需要解决许多误解。
首先,子类和个体是非常不同的概念。个人(实例)是类的成员。子类表示一个类是另一个类的子集,这意味着(通过推理)暗示子类的所有成员都是(超)类的成员。(仅供参考:OWL 中没有继承的概念。)
第二类级别的属性,例如:People :has :Disease对类个人没有意义。定义属性与类的关系的方法是设置属性的域和范围。(仅用:has作属性名称表示存在多种误解,可能来自其他类型的语言。)所以我建议使用名称:hasDisease和断言:
:hasDisease rdfs:domain :People .
:hasDisease rdfs:range :Disease .
第三,您可以断言:John :hasDisease :Cancer并推断 John 患有疾病,因为它:Cancer是 的子类:Disease。这需要一个标准的 RDFS 推理器。此外,给定上述域和范围定义以及断言:Joy :hasDisease :Gout,RDFS 推理器将推断出:Joy a :Person和:Gout a :Disease。
您可以通过 Google 找到一些 OWL 入门书。我建议仔细阅读其中的一些内容,以基本了解 OWL 和推理配置文件的工作原理。