Dieses Dokument ist eine deutsche Übersetzung eines W3C -Textes. Sie enthält möglicherweise Fehler. Sie hat keinerlei durch das W3C legitimierte normative Wirkung. Das maßgebende Dokument ist das englische Original.
Anmerkungen des Übersetzers werden eingeleitet mit "A.d.Ü.:".
Der Übersetzer freut sich über Hinweise auf Fehler der deutschen Fassung, und ist als Neuling auf diesem Gebiet auch für Übersetzungstips dankbar.
Da wir nun N3 schreiben und lesen sowie in RDF kommunizieren,
benötigen wir eine gemeinsame Vorstellungen davon,
was einzelne URIs bedeuten. Wir stoßen oft auf URIs,
die Hinweise auf ihre Bedeutung geben, wie zum Beispiel
http://www.w3.org/2000/10/swap/test/demo1/biology#Dog
,
nur, dass der Text eben nur einen Hinweis gibt. Wird im Beispiel
auch der Wolf von der Bedeutung erfasst? Und was ist mit dem Dingo?
Allein vom Namen her wissen wir das nicht. Möglicherweise
führt der URI-Text sogar in die Irre und gemeint ist etwas,
das gar nichts mit Hunden zu tun hat.
Eine gute Methode, dieses Problem zu handhaben ist, ein Dokument zu veröffentlichen, das, mit Sorgfalt erstellt, die intendierte Bedeutung jedes Ausdrucks genau beschreibt. Ist diese Beschreibung sorgsam und präzise strukturiert, so kann uns Software helfen, Ausdrücke zu verstehen, nach Fehlern zu suchen, ja sogar dynamisch URIs zu aktualisieren, das heiß:t: neue URIs zu erkennen und zu benutzen.
W3C-Arbeitsgruppen haben ein Vokabular von circa fünfzig Ausdrücken (URIs) entwickelt, um solche präzisen Dokumentationen zu unterstützen. Etwa ein Dutzend davon sind Teil der RDF Vocabulary Description Language 1.0: RDF Schema, für die wir den Namensraum mit "rdfs:" abkürzen, die restlichen gehören zur OWL Web Ontology Language. Alle fünfzig sind aufgelistet und indiziert im OWL Guide Appendix.
Für unstrukturierte Dokumentation ist rdfs:comment vorgesehen, rdfs:label gibt eine Bezeichnung an, die einfacher zu lesen ist, während rdfs:seeAlso einen informellen Link angibt - ein guter Start für eine unstrukturierte Dokumentation.
:CanisFamiliaris rdfs:comment """The class of animals designated Canis familiaris (domestic dog). This includes all the dog breeds, but not wolves."""; rdfs:label "Canis familiaris"; rdfs:seeAlso <http://www.agrobiologicals.com/glossary/G3089.htm> .
Unsere einfachste maschinenlesbare Deklaration macht die Aussage, dass zwei URIs dasgleiche bedeuten:
:Pat owl:sameIndividualAs :Patrick.
Mit dieser Aussage wird ein System, das
owl:sameIndividualAs
versteht, wissen, dass alles,
was whar für :Pat ebenfalls wahr für :Patrick ist,
und umgekehrt. :Pat und :Patrick sind dann synonym, zwei Namen
für dieselbe Sache. Genau das ist in N3 mit "=" gemeint.
(Beachten Sie, dass das cwm zunächst einmal nicht versteht;
man kann es aber mit Regeln dazu anweisen.)
Weiterhin können wir sagen:
:Dog owl:equivalentClass :CanisFamiliaris. # or :Dog owl:sameIndividualAs :CanisFamiliaris.
Diese beiden Aussagen unterscheiden sich leicht: äquivalente Klassen haben genau dieselben Instanzen, können sich aber in der intendierten Bedeutung unterschieden. Nutzen wir owl:sameIndividualAs (A.d.Ü.: gemeint ist wohl owl:sameAs), so gilt das Etikett "Canis familiaris" auch für :Dog.
Manchmal kann man auf Äquivalenz oder Identität schließen. OWL hat Begriffe, die "Kardinalität" von Eigenschaften bezeichnen, wo mitgeteilt wird, ob es sich um 1:1-Beziehungen, 1:n-Beziehungen, n:1-Beziehungen oder andere handelt. Sagen wir, wir deklarieren für die Eigenschaft :mother, dass es eine n:1-, eine Funktionsbeziehung ist, was bedeuten soll, dass Personen maximal eine biologische Mutter haben:
:mother a owl:FunctionalProperty.
Das vorausgesetzt können wir auf Gleichheit schließen. Wenn wir beispielsweise sagen:
:sam :mother :jackie. :sam :mother :jacqueline.
dann kann ein menschlicher oder ein maschineller Leser herausfinden, dass :jackie und :jacqueline dasselbe Individuum beschreiben müssen.
Natürlich ist es möglich, dass :jackie und :jacqueline nicht dieselbe Person sind, dass also eine der Aussagen über :sam ein Versehen war. Dass Dinge nicht identisch sind, kann man in OWL auf verschiedene Arten aussagen, am einfachsten so:
:jackie owl:differentFrom :jacqueline.
Die drei Aussagen zusammen beschreiben eine unmögliche Situation, und OWL-Software sollte in der Lage sein, das zu erkennen, und es melden.
:Man rdfs:subclassOf :Human . :YoungMan rdfs:subclassOf :Man .
:CanisFamiliarisDingo rdfs:subClassOf :CanisFamiliaris; # Dingos are Dogs! rdfs:seeAlso <http://www.naturalworlds.org/ wolf/canis/Canis_familiaris_dingo.htm>. :CanisRufus a owl:Class; rdfs:subClassOf :Canis; owl:disjointFrom :CanisFamiliaris; # Wolves are not Dogs! rdfs:label "Red Wolf"; rdfs:comment """As of 1999 there were about 300 individuals of this endangered species"""; rdfs:seeAlso <http://druidry.org/obod/endangered/redwolf.html>.
:father rdfs:domain :Human; rdfs:range :Man. :Sara :father :Alan. ______________________________________ :Sara a :Human. :Alan a :Man. :father owl:cardinality "1". :Sara :father :Alan. :Sara :father :MrFoster. ___________________________________ :Alan = :MrFoster.
:Joe a :YoungMan --> :Joe a :Man. Joe a :Human. Joe is a YoungMMMan --> [okay]
"Lint" Processing
Joe is a YoungMan --> [okay] Joe is a YoungMMMan --> Warning: "YoungMMMan" used as a Class but not mentioned in schema.