In der Beschreibungslogik gibt es ein Konzept namens "rolification" ( OWL und Regeln, Sec 3.2 ). Es konvertiert ein Konzept (Klasse) in eine Rolle (Eigenschaft). Wenn wir zum Beispiel R(x)
rolifizieren, erhalten wir r(x,x)
. Diese Technik ist nützlich, um einige Regeln in DL auszudrücken.
Wie machen wir das in OWL 2? Es scheint, dass es in der OWL 2-Spezifikation keine direkte Unterstützung für die Rolifizierung gibt.
In Abschnitt 3.2 des Artikels, den Sie verlinkt haben, heißt es:
Es ist tatsächlich möglich, diese Regel in OWL 2 zu übersetzen - dies beinhaltet jedoch eine Transformation, die wir Rolifikation nennen: Die Rolifizierung eines Konzepts A ist eine (neue) Rolle R A definiert durch das Axiom A ≡ ∃R A .Self . Bewaffnet mit der Rolifikation können wir nun Regel (1) mit dem Axiom ausdrücken ...
OWL2 unterstützt nicht das Ausdrücken eines Axioms wie Elephant (x) & amp; keil; Maus (y) → biggerThan (x, y) direkt. Wie ich es verstehe, verwenden Sie manuell den Prozess der Rolifizierung, den das Papier beschreibt, um ein neues Axiom zu erzeugen, das direkt in OWL2 ausgedrückt werden kann.
Was den spezifischen Prozess betrifft, wenn Sie etwas wie Elephant (x) & keil; Maus (y) → biggerThan (x, y) , erst rolifierst du die Klassen Elephant und Mouse . Das bedeutet, dass Sie neue Rollen (Eigenschaften) R Elefant und R Maus einführen (aber Sie löschen nicht die Klassen Elefant und Maus ). Diese neuen Rollen sind so, dass R Elefant (x, x) wenn und nur wenn Elefant (x) . Dies wird durch Hinzufügen der Axiome
erzwungenElefant ≡ ∃R Elefant .Self
Maus ≡ ∃ R Maus .Self
, von denen jeder in OWL2 ausdrückbar ist. Mit diesen zwei Axiomen in der Hand fügen Sie schließlich das Untereigenschaftskettenaxiom hinzu
R Elefant & amp; bullet; topObjectProperty & amp; bullet; R Maus & amp; sqsubseteq; biggerThan
was auch in OWL2 ausdrückbar ist. Für jeden Elefanten e und jede Maus m haben wir das
R Elefant (e, e)
topObjectProperty (e, m)
R Maus (m, m)
dann durch das Axiom der Untereigenschaftskette, haben wir das
biggerThan (e, m)
was genau wir ausdrücken wollten.
In der von Protege akzeptierten Eingabesyntax werden diese Axiome wie folgt geschrieben:
Elefant EquivalentTo R_Elephant some Self
Maus EquivalentTo R_Mouse irgendein Self
R_Elephant o topObjectProperty o R_mouse SubPropertyOf biggerThan
In Protege erscheinen sie wie folgt.
In N3:
%Vor%In RDF / XML:
%Vor%Tags und Links owl swrl description-logic