2016-07-31 63 views
1

Gegeben:Klassenbeziehungen in OWL

Drei Eulen Klassen: emptyTask, task und userTask.

Die Beziehung zwischen den Klassen sind wie folgt: userTask ist equivalentTotask - die alle Menschen impliziert, dass in userTask sind, sind auch in task. emptyTask ist ein subclassOftask.

Aber was ich mit einer solchen Beziehung erreichen möchte ist, dass alle Individuen von userTask auch in task (getan, Reasoner Logik) sind. Alle Individuen von emptyTask sind in task, aber emptyTask und userTask haben keine Beziehung zueinander. Sie sind in meiner Ontologie in keiner Weise verwandt.

Mit 3-mal äquivalentTo ist nicht das, was ich tun möchte. Ich hoffe, ihr könnt verstehen, was ich erreichen möchte.

Wie würde solch eine Beziehung in Protege zum Beispiel aussehen. Eine Antwort in DL könnte hilfreich sein, aber ich würde eine praktische Antwort bevorzugen. Dieses Bild könnte helfen, zu verstehen, will ich mit allen indiviudals sagen will. Screenshot von Protege mit Eremit reasoner:

runningReasoner from class Task

Dieses Bild zeigt eine equivalentTo Beziehung zwischen task und userTask. Alle Personen aus userTask sind auch in task (reasoner Logik)

Als ich task mit dem reasoner ich möchte öffnen wollen alle Personen aus userTask und emptyTask

sehen Wenn ich userTask mit dem reasoner öffnen möchten Ich möchte nur Einzelpersonen von task sehen.

Wenn ich emptyTask mit der Reasoner öffnen möchte ich keine Einzelpersonen aus userTask oder Task.

Die Frage ist, wie sollte ich die Beziehungen zueinander einstellen, um dies zu erreichen?

edit: screen 1 Screen 2

Wie Sie selbst mit 3 Klassen sehen es nicht funktioniert. Die Schaltfläche ist immer grau. Ich habe 2 verschiedene Versionen von Protege ausprobiert!

+0

Ok, also wenn ich Sie richtig verstehe, haben Sie derzeit ': UserTask owl: equivalentTo: Aufgabe' und': EmptyTask rdfs: subClassOf: Aufgabe'. Was mir unklar ist, ist wo genau das Problem liegt. Welcher Teil funktioniert nicht richtig? Bitte [bearbeiten], um Ihre Frage lesbarer zu machen. Versuchen Sie, Ihr Beispiel auf den Kern zu reduzieren. Ich sage das übrigens nicht, um Sie aufzugreifen: Es ist eine wirklich wichtige Fähigkeit, sich zu entwickeln und Ihnen zu helfen, das Problem auch selbst zu analysieren. –

+0

Zur Klarstellung: Soweit ich das aktuelle Setup (die beiden Relationen, die Sie bereits haben) sagen kann, ist genug, um alles zu tun, was Sie wollen. Was läuft also nach dir? –

+0

Bei Verwendung von Subclass befinden sich alle Instanzen von owl: class emptyTask nicht in Task. Ich möchte, dass alle Instanzen von userTask und emptyTask in Task sind. Aber emptyTask und userTask sollten keine Instanzen miteinander teilen. – Richy

Antwort

1

Es ist nicht möglich, dass emptyTask eine Unterklasse von task ist und keine Beziehung zu userTask hat, wenn userTask äquivalent zu task ist.

Betrachten Sie eine Instanz der Aufgabe, t.

t ist eine Instanz der Aufgabe über Ihre Unterklasse Axiom. Alle Instanzen der Aufgabe sind Instanzen von userTask, durch Ihre Äquivalenz. Wenn t keine Instanz von userTask ist, haben Sie nach Ihrer Äquivalenz auch keine Instanz von Task.

Dies führt zu einem Konflikt: t ist und ist keine Instanz der Aufgabe. Dies würde die Ontologie inkonsistent machen.

Wollen Sie userTask als separate Unterklasse der Aufgabe haben?

In Manchester Syntax eine disjunkte Vereinigung wie folgt aussieht:

Class: <http://iri/#b> 
Class: <http://iri/#c> 
Class: <http://iri/#d> 

Class: <http://iri/#a> 
    DisjointUnionOf: 
     <http://iri/#b>, <http://iri/#c>, <http://iri/#d> 

disjunkte Vereinigung entspricht erklärt die Hauptklasse als gleichwertig mit der Vereinigung aller Klassen erwähnt und erklärt diese Klassen disjunkt. So können Sie das gleiche Ergebnis erzielen, ohne explizit ein unzusammenhängendes Vereinigungsaxiom zu verwenden.

Protege sollte Ihnen erlauben, diese Axiome auch in seiner GUI zu erstellen.

Protege interface for creating disjoint union axioms

+0

kann eine Klasse eine Instanz einer anderen Klasse sein? Dachte das funktioniert nur für Einzelpersonen? – Richy

+1

Das ist punning - es ist möglich, aber es folgt anderen Regeln. – Ignazio

+0

Disjoint Union Idee klingt viel besser !! – Richy

0
Class: <http://www.yawlfoundation.org/yawlschema#emptyTask>, 
Class: <http://dkm.fbk.eu/index.php/BPMN2_Ontology#userTask> 
Class: <http://www.yawlfoundation.org/yawlschema#ExternalTaskFactsType> 

DisjointUnionOf: 
    <http://www.yawlfoundation.org/yawlschema#emptyTask>, 
    <http://dkm.fbk.eu/index.php/BPMN2_Ontology#userTask> 

Relation: Usertask ist owl: EquivalentTo ExternalTaskFactstype

nicht funktioniert, wenn ich dies in meiner Ontology aus meinem Notizbuch kopieren. Ich habe versucht, dich zu nähern. Ich habe den DisjointUnionOf-Teil kopiert.