Bevor Sie zu einer Antwort gelangen, gibt es eine Reihe von Missverständnissen, die Sie lösen müssen.
Erstens, Unterklasse und Individuum sind sehr unterschiedliche Konzepte. Einzelpersonen (Instanzen) sind Mitglieder von Klassen. Subklasse bezeichnet eine Klasse ist eine Teilmenge einer anderen Klasse, was bedeutet, dass eine Implikation (über Inferenz) bedeutet, dass alle Mitglieder einer Unterklasse Mitglieder der (Super-) Klasse sind. (Nur als Referenz: Es gibt kein Konzept der Vererbung in OWL.)
Zweite Eigenschaften auf Klassenebene, wie :People :has :Disease
, haben keine Bedeutung für Einzelpersonen der Klasse. Um die Beziehungen einer Eigenschaft zu Klassen zu definieren, legen Sie die Domäne und den Bereich der Eigenschaft fest. (Nur mit :has
als Eigenschaftsnamen ein breites Spektrum von Missverständnisse geben, möglicherweise von anderen Arten von Sprachen.) Also ich würde den Namen :hasDisease
und die Behauptungen vorschlagen:
:hasDisease rdfs:domain :People .
:hasDisease rdfs:range :Disease .
Drittens können Sie behaupten, dass :John :hasDisease :Cancer
und folgern, dass John eine Krankheit hat, vorausgesetzt, dass :Cancer
eine Unterklasse von :Disease
ist. Dies erfordert einen Standard-RDFS-Reasoner. Angesichts der obigen Domänen- und Bereichsdefinitionen und einer Assertion :Joy :hasDisease :Gout
wird ein RDFS-Reasoner außerdem folgern, dass :Joy a :Person
und :Gout a :Disease
.
Es gibt ein paar OWL-Primer, die Sie über Google finden können. Ich würde vorschlagen, einige davon zu überdenken, um ein grundlegendes Verständnis dafür zu bekommen, wie OWL- und Argumentationsprofile funktionieren.
Willst du damit sagen, dass John Krebs hat, weil John ein Volk und Menschen Krankheiten hat? Das macht keinen Sinn, daher ist es vielleicht eine gute Idee, ein wenig klarer zu sein, welche Fakten Sie haben und was Sie daraus ableiten wollen. (Und Singular Nomen sind besser für Klassennamen - dh ': Person' anstelle von ': People'. – scotthenninger