2016-04-05 13 views
1

Ich habe dieses Axiom in meiner Ontologiezuweisen Sequenz in OWL Protege mit

:drug :givenAs (({dose1}) or ({dose2}) or ({dose3})) 
and (not ({dose4})) 

Die Syntax als pro-Schildkröte nicht korrekt ist, aber ich hoffe, Sie erhalten den Punkt.

Ich möchte behaupten, dass Dosis1 gefolgt von Dosis2 gefolgt von Dosis3 folgt.

Ich ausgecheckt Modelling sequence order in OWL-DL ontology, aber es löst nicht genau meinen Fall. Das liegt daran, dass ich es nur mit Einzelpersonen zu tun habe, nicht mit Klassen.

Was ist eine elegante Art, die Sequenz zu bestätigen?

Das Axiom dient zur Fehlererkennung in Datensätzen. Zum Beispiel würde ich die Ontologie gerne einen Fehler hinweisen, wenn es :drug :givenAs :dose2 . ist ohne :drug :givenAs :dose1 .

UPDATE 1

Ich versuchte, die hasNext Eigenschaft als vorgeschlagen. Ich kann die Personen verbinden, die die Eigenschaft verwenden. Allerdings bin ich nicht sicher, ob dies meinen Zusammenhang gilt:

Class: SequenceItem 
    EquivalentTo: 
     hasNext only SequenceItem 

Ich habe keine Klasse und will es zu vermeiden, wenn angemessen. Wie ordne ich noch eine Sequenz zu?

UPDATE 2

Ich habe die Klasse Axiom, wie erwähnt. Die Begründer finden keinen Fehler. Sie identifizieren jedoch auch keine fehlerhaften Datensätze, bei denen Dosis2 der Dosis1 vorausgeht. Ich behauptete, dass die Klasse Dose äquivalent ist:

Dose 
and hasNext only Dose 

Die Frage, glaube ich, werde ich behaupte nicht überall, dass kein Dosis2 vor Dose1 möglich ist und kein Dosis3 ist möglich, vor Dosis2 und so weiter.

Antwort

1

Die Zugabe von hasNext Eigenschaft ala Modelling sequence order in OWL-DL ontology würde genauso gut funktionieren. Setzen Sie einfach die hasNext auf die Personen (siehe letzten Absatz).

Eine andere Möglichkeit, die Reihenfolge anzugeben, ist eine RDF-Liste, d. H. (:dose1 ;dose2 :dose3). Die Liste ist eine geordnete Aufzählungsliste und Sie können rdf: first/rdf: rest verwenden, um Elemente in der Reihenfolge abzufragen.

Die letzte Idee besteht darin, eine Sortiereigenschaft anzugeben. Ähnlich wie bei der hasList Lösung, eine sequenceNum Eigenschaft könnte ein an den Dosis Objekte hinzugefügt werden, z.B .:

:dose1 :sequenceNum 1 . 
:dose1 :sequenceNum 2 . 
:dose1 :sequenceNum 3 . 

dann die Nummerierung verwenden, um festzulegen, welche vor dem anderen auftritt.