Ontologien in XHTML/RDFa
Für's Erste stehen hier nur meine Notizen und Anmerkungen zu diesem Thema. Noch bin ich dabei, eine vernünftige Notation zu entwickeln. Der Inhalt dieser Seite wird sich also in nächster Zeit sehr ändern.
Verteilte Schnipsel
Im OWL-Beispiel ist es bereits angeklungen, ohne dass ich bislang darauf eingegangen wäre: Eine Definition kann auch an mehreren Stellen verteilt vorkommen. Hier noch einmal das Beispiel aus der vorigen Seite:
owl:Thing rdf:ID="Harry_Potter_und_der_Stein_der_Weisen"/
owl:Thing rdf:about="#Harry_Potter_und_der_Stein_der_Weisen"
rdf:type rdf:resource="#Buch"/
/owl:Thing
Zwischen der ersten Zeile und der zweiten Zeile könnte noch jede Menge
anderer Text stehen, der für die Definition irrelevant sei. In der Tat
haben wir hier eine Definition, die auf zwei voneinander völlig unabhängige
Stellen verteilt ist. Die erste Zeile definiert einfach ein Ding. Die
zweite Zeile definiert, dass ein Ding, dessen Definition woanders steht,
der Klasse Buch angehört. Dieses "dessen Definition woanders steht", das
wird durch das about
Attribut angegeben.
Merke:
Dort, wo rdf:ID
verwendet wird, dort steht die eigentliche
Definition. Dort, wo about
verwendet wird, dort wird auf
eine Definition an anderer Stelle verwiesen. Der Inhalt des about
Attributes ist eine URL, die auf die Stelle verweist, wo die Definition
steht. Wenn es sich um eine Referenz in der gleichen Datei handelt, dann
reicht der fragment identifier. Dieser ist gleich
der rdf:ID
der Definition plus einem vorangestellten
#
.
HTML
In HTML geht das prinzipiell genauso. Allerdings muss hier eventuell
ein Attribut verwendet werden, das es erst ab XHTML 2.0 gibt. Oder eben
auch für XHTML+RDFa. Praktischerweise heisst dieses Attribut genauso wie
unter rdf: about
.
dfn class="owl:Thing" id="Harry_Potter_und_der_Stein_der_Weisen"
Harry Potter und der Stein der Weisen/dfn
Dies entspricht der ersten Zeile des rdf-Beispiels. Hier wird definiert, dass es sich bei dem hier definierten Ding um ein "Ding" im Sinne einer Ontologie handelt. Nichts weiter. Keine Aussage darüber, um was für eine Art Ding. Nach dieser Definition könnte beispielsweise ein inhaltlicher Auszug stehen. Irgendwann später, oder auch am Anfang, oder auch in einer ganz anderen Datei, könnte dann diese Definition ergänzt werden um die Aussage, dass es sich bei diesem "Ding" um ein "Buch" handelt (dass dieses Ding der Klasse Buch angehört):
[...] a href="#Buch" about="#Harry_Potter_und_der_Stein_der_Weisen" rev="owl:Thing"
dieses Werk/a
[...]
Dieses erstellt einen klickbaren Link und setzt das Ziel des Links (die Definition
der Klasse "Buch") in Verbindung mit dem Ding an der Adresse
#Harry_Potter_und_der_Stein_der_Weisen
. Damit wird die Definition
oben, die besagt, dass es sich um ein "Ding" im Sinne einer Ontologie handelt,
ergänzt um die Aussage, dass eben dieses Ding der Klasse "Buch" angehört. So ganz
nebenbei werden auch noch die Worte "dieses Werk" mit dem Ding namens
"Harry_Potter_und_der_Stein_der_Weisen" in Verbindung gebracht, was aber für die
Definition nicht relevant ist.
Möchte man statt eines klickbaren Links lieber eine unsichtbare und nicht klickbare
Referenz einbauen, benötigt man statt des href
Attributes ein anderes,
das resource
Attribut. Ebenso benötigt man dann ein anderes Element,
zum Beispiel ein span
:
[...] span resource="#Buch" about="#Harry_Potter_und_der_Stein_der_Weisen" rev="owl:Thing"
dieses Werk/span
[...]
Und sonst?
So ganz nebenbei kann man diese Notation auch für weitere Angaben verwenden, die nicht direkt Etwas mit einer Ontologie zu tun haben. Nehmen wir einmal an, irgendwo auf der Seite stünde noch der Satz "Joanne K. Rowlings wurde durch dieses Buch reich". Wir wissen, dass diese Joanne K. Rowlings die Autorin dieses Buches ist. Das steht in dem Satz nicht drin. Der Computer kann das also nicht wissen. Man kann es ihm aber explizit sagen:
span about="#Harry_Potter_und_der_Stein_der_Weisen" rev="dc:creator"
Joanne K. Rowlings/span
wurde
durch dieses Buch reich.
Ein dc:creator
ist nach Dublin Core ein Author
von Etwas. Das rev
Attribut wird verwendet, um auszusagen, dass dies
hier der Author (die Authorin) von dem dort ist,
auf das das about
verweist. Diese Konstruktion sagt also aus, dass
Etwas, von dem wir hier keine weiteren Aussagen haben, das die
Bezeichnung (label)Joanne K. Rowlings hat,
ein dc:creator
von dem Ding ist, das an der Adresse (URL)
#Harry_Potter_und_der_Stein_der_Weisen
definiert ist.