Baumstruktur in RDF
Tom2 (der authentifizierte)
- xml-derivat
Hallo Leute
Ich experimentiere ein wenig mit XML herum und bin nun auf RDF gestossen, was mir zum Speichern meiner Navigations-Struktur geeignet scheint. Das Beschreiben der Resourcen klappt auch schon ganz gut, jedoch weiss ich nicht, wie ich die Baumstruktur des Menüs beschreiben muss.
<rdf:Description rdf:about="projekte.html">
dc:TitleProjekte</dc:Title>
</rdf:Description>
<rdf:Description rdf:about="projekte/p01.html">
dc:TitleProjekt 01</dc:Title>
</rdf:Description>
Projekt 01 soll ein Untereintrag unter Projekte sein. Ich glaube, mann könnte das Projekt 01 als Kind-Element von Projekte notieren, ich möchte die Navigations-Struktur jedoch ausserhalb der Resourcen-Beschreibungen halten, so dass diese auch an mehreren Stellen im Menü auftreten können. Wie macht man das genau? Bisher habe ich im Internet nichts gefunden, was mich weiter gebracht hätte.
Mein Ziel ist es, aus der RDF-Datei den relevanten Teil für das aktuelle anzuzeigende Menü zu extrahieren, sowie eine Sitemap zu erzeugen. Auch alle Meta-Daten sollen über die RDF-Datei gepflegt werden.
Ich wäre froh, wenn mir jemand ein paar weiterführende Links in die mich interessierende Richtung geben könnte.
Gruss & Dank
Tom2
Hello out there!
<rdf:Description rdf:about="projekte.html">
dc:TitleProjekte</dc:Title>
"dc" steht für "http://purl.org/dc/elements/1.1/"? Dann ist "Title" falsch, es muss "title" heißen, damit daraus "http://purl.org/dc/elements/1.1/title" wird. [DCMI]
Projekt 01 soll ein Untereintrag unter Projekte sein. Ich glaube, mann könnte das Projekt 01 als Kind-Element von Projekte notieren, ich möchte die Navigations-Struktur jedoch ausserhalb der Resourcen-Beschreibungen halten, so dass diese auch an mehreren Stellen im Menü auftreten können. Wie macht man das genau?
So in der Art?
<rdf:RDF
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:dcterms="http://purl.org/dc/terms/"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
>
<rdf:Description rdf:about="projekte.html">
<dc:identifier rdf:resource="projekte/p01.html"/>
<dc:title>Projekte</dc:title>
<dcterms:hasPart>
<rdf:Seq>
<rdf:li rdf:nodeID="p01"/>
</rdf:Seq>
</dcterms:hasPart>
</rdf:Description>
<rdf:Description rdf:nodeID="p01">
<dc:identifier rdf:resource="projekte/p01.html"/>
<dc:title>Projekt 01</dc:title>
</rdf:Description>
</rdf:RDF>
See ya up the road,
Gunnar
Hallo Gunnar™!
<rdf:Description rdf:about="projekte.html">
<dc:identifier rdf:resource="projekte/p01.html"/>
Copy’n paste error: sollte natürlich heißen:
<dc:identifier rdf:resource="projekte.html"/>
Das dient auch nur zur Vereinheitlichung mit
<rdf:Description rdf:nodeID="p01">
<dc:identifier rdf:resource="projekte/p01.html"/>
Nicht erlaubt wäre nämlich
<rdf:Description rdf:nodeID="p01" rdf:resource="projekte/p01.html">
Dem RDF-Validator gefällt die Zusammentreffen der Attribute rdf:nodeID und rdf:resource für dasselbe Element nicht.
Wenn die Reihenfolge nicht hervorgehoben werden soll, ist
<rdf:Bag>
angebracht.
See ya up the road,
Gunnar
Hi Gunnar
[...] "Title" falsch, es muss "title" heißen[...]
Danke für den Hinweis, da war ich wohl etwas voreilig.
So in der Art?
Naja... nicht ganz. Bzw ich blick einfach noch nicht durch. Die rdf:Description darf ich ja mehrmals auffürhen um den Menübaum von den anderen Meta-Daten zu trennen. Ich möchte die URI nur einmal pro Resource angeben. Im RDF-Namespace wäre ja about dafür da, jedoch darf ich das nicht in Kombination mit ID verwenden. Darum verwende ich den dc:identifier für die URI und rdf:ID zum identifizieren der Resourcen. Nun habe ich noch das Problem, dass im Menübaum die IDs nicht angezogen, sondern neu definiert werden - was zu Konflikten mit dem Validator führt ;-). Hier mein letzter Versuch:
<?xml version="1.0"?>
<rdf:RDF
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:dcterms="http://purl.org/dc/terms/"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<!-- Ressource List -->
<rdf:Description rdf:ID="Homepage">
<dc:identifier rdf:resource="index.html"/>
dc:titleHauptseite</dc:title>
dc:descriptionMeine Homepage</dc:description>
</rdf:Description>
<rdf:Description rdf:ID="Projekte">
<dc:identifier rdf:resource="projekte.html"/>
dc:titleProjekte</dc:title>
dc:descriptionMeine Projekte</dc:description>
</rdf:Description>
<rdf:Description rdf:ID="P01">
<dc:identifier rdf:resource="projekte/p01.html"/>
dc:titleProjekte 01</dc:title>
dc:descriptionMein erstes Projekt</dc:description>
</rdf:Description>
<rdf:Description rdf:ID="P02">
<dc:identifier rdf:resource="projekte/p01.html"/>
dc:titleProjekte 02</dc:title>
dc:descriptionMein zweites Projekt</dc:description>
</rdf:Description>
<!-- Menu Tree -->
<rdf:Description rdf:ID="Homepage">
<rdf:Description rdf:ID="Projekte">
<rdf:Description rdf:ID="P01" />
<rdf:Description rdf:ID="P02" />
</rdf:Description>
</rdf:Description>
</rdf:RDF>
Weisst du, wie ich das hinkriege? Ich hab neulich hier im Forum einen interessanten Thread gelesen, bei dem ein solches Beispiel behandelt wurde. Leider kann ich das Teil nicht mehr finden.
Gruss & Dank
Tom2
Hello out there!
Ich möchte die URI nur einmal pro Resource angeben.
BTW, _der_ URI ist genauso männlich wie _der_ URL.
Darum verwende ich […] rdf:ID zum identifizieren der Resourcen.
Das ist nicht das, was du möchtest. IMHO möchtest du nicht rdf:ID, sondern rdf:nodeID verwenden. [RDF-SYNTAX §2.10]
<!-- Menu Tree -->
<rdf:Description rdf:ID="Homepage">
<rdf:Description rdf:ID="Projekte">
<rdf:Description rdf:ID="P01" />
<rdf:Description rdf:ID="P02" />
</rdf:Description>
</rdf:Description>
</rdf:RDF>
Nö, in RDF kannst du nicht schachteln wie du lustig bist. Es müssen schon immer Tripel Subjekt-Prädikat-Objekt rauskommen. rdf:Description ist kein Prädikat.
<rdf:Description rdf:nodeID="Homepage">
<dcterms:hasPart rdf:nodeID="Projekte"/>
</rdf:Description>
<rdf:Description rdf:nodeID="Projekte">
<dcterms:hasPart rdf:nodeID="P01"/>
<dcterms:hasPart rdf:nodeID="P02"/>
</rdf:Description>
oder
<rdf:Description rdf:nodeID="Homepage">
<dcterms:hasPart>
<rdf:Description rdf:nodeID="Projekte">
<dcterms:hasPart rdf:nodeID="P01"/>
<dcterms:hasPart rdf:nodeID="P02"/>
</rdf:Description>
</dcterms:hasPart>
</rdf:Description>
oder wie gesagt mit der Seq-/Bag-Collection.
See ya up the road,
Gunnar
Hallo Gunnar.
Ich möchte die URI nur einmal pro Resource angeben.
BTW, _der_ URI ist genauso männlich wie _der_ URL.
Du weißt doch, dass man sich darüber streiten kann und es keine eindeutige Antwort gibt.
Zwar sind sowohl der Lokator als auch der Platz maskulin, aber dennoch hat sich „die Location“ einbürgert; vermutlich wegen der nahen Beziehung zur „Adresse“.
Und im allgemeinen Sprachgebrauch sind es einfach „die URI“ und „die URL“.
Einen schönen Montag noch.
Gruß, Ashura
Hello out there!
Und im allgemeinen Sprachgebrauch sind es einfach „die URI“ und „die URL“.
Wehret den Anfängen ...
See ya up the road,
Gunnar
Hallo.
Und im allgemeinen Sprachgebrauch sind es einfach „die URI“ und „die URL“.
Wehret den Anfängen ...
"Live an let die"
MfG, at
Hi Leute
Das ist nicht das, was du möchtest. IMHO möchtest du nicht rdf:ID, sondern rdf:nodeID verwenden. [RDF-SYNTAX §2.10]
Ich dachte, nodeID sei für blank Nodes. Ich muss wohl bei resource oder about bleiben.
Hier der URI zu dem Thread, den ich so lange gesucht hatte: http://forum.de.selfhtml.org/archiv/2006/4/t128345/#m829085.
Es ging bei der Baumstruktur also um XLink und nicht um RDF, wie ich es in Erinnerung hatte. Beides scheint meine Bedürfnisse jedoch nicht von Haus aus erfüllen zu können. Schade, dann muss ich mir mein RDF/XLink-Süppchen wohl noch mit eigenem XML 'versalzen'. Ich würde schon lieber auf (möglichst einfache) Standards setzen. Das Ganze soll dann in etwa so aussehen:
<!-- Zuerst die RDF-Resourcen -->
<!-- Und hier die Menü-Struktur -->
<item rfd:nodeID="Homepage">
<item rfd:nodeID="Projekte">
<item rfd:nodeID="P01" />
<item rfd:nodeID="P01" />
</item>
</item>
Der folgende Code wird vom RDF-Validator geschluckt, jedoch ist mir die Baumstruktur zu flach:
<?xml version="1.0"?>
<rdf:RDF
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:dcterms="http://purl.org/dc/terms/"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<!-- Ressource List -->
<rdf:Description rdf:about="index.html">
dc:titleHauptseite</dc:title>
dc:descriptionMeine Homepage</dc:description>
</rdf:Description>
<rdf:Description rdf:about="projekte.html">
dc:titleProjekte</dc:title>
dc:descriptionMeine Projekte</dc:description>
</rdf:Description>
<rdf:Description rdf:about="projekte/p01.html">
dc:titleProjekte 01</dc:title>
dc:descriptionMein erstes Projekt</dc:description>
</rdf:Description>
<rdf:Description rdf:about="projekte/p01.html">
dc:titleProjekte 02</dc:title>
dc:descriptionMein zweites Projekt</dc:description>
</rdf:Description>
<!-- Menu Tree -->
<rdf:Description rdf:about="test.rdf">
dcterms:hasPart
rdf:Seq
<rdf:li rdf:resource="projekte.html" />
</rdf:Seq>
</dcterms:hasPart>
</rdf:Description>
<rdf:Description rdf:about="projekte.html">
dcterms:hasPart
rdf:Seq
<rdf:li rdf:resource="projekte/p01.html" />
<rdf:li rdf:resource="projekte/p02.html" />
</rdf:Seq>
</dcterms:hasPart>
</rdf:Description>
</rdf:RDF>
Gruss & Dank
Tom2
Hello out there!
Ich dachte, nodeID sei für blank Nodes.
Ich denke, rdf:nodeID dient dazu auszudrücken, dass im XML-Elementbaum veschiedene RDF/XML-Elemente im RDF-Graphen denselben Knoten repräsentieren.
Ich muss wohl bei resource oder about bleiben.
Was hast du gegen meinen Vorschlag einzuwenden: rdf:nodeID für rdf:Description, rdf:resource bei dc:identifier?
jedoch ist mir die Baumstruktur zu flach:
Was meinst du mit „zu flach“?
<rdf:Description rdf:about="test.rdf">
dcterms:hasPart
rdf:Seq
<rdf:li rdf:resource="projekte.html" /> «««
</rdf:Seq>
</dcterms:hasPart>
</rdf:Description><rdf:Description rdf:about="projekte.html"/> «««
Ich bin mir nicht sicher, ob du damit ausdrückst, dass die markierten Elemente denselben Knoten darstellen. So würdest du das tun:
<rdf:Description rdf:about="test.rdf">
dcterms:hasPart
rdf:Seq
<rdf:li rdf:nodeID="projekte" /> «««
</rdf:Seq>
</dcterms:hasPart>
</rdf:Description>
<rdf:Description rdf:nodeID="projekte"/> «««
See ya up the road,
Gunnar
Hi Gunnar
Ich denke, rdf:nodeID dient dazu auszudrücken, dass im XML-Elementbaum veschiedene RDF/XML-Elemente im RDF-Graphen denselben Knoten repräsentieren.
Was hast du gegen meinen Vorschlag einzuwenden: rdf:nodeID für rdf:Description, rdf:resource bei dc:identifier?
Wenn ich nodeID für das rdf:Description-Element verwende, dann darf ich kein about-Attribut mehr festlegen und muss den URI in einem Kind-Element (dc:identifier) angeben. Mich stört dabei - rein vom Gefühl her - dass ich dafür einen Tag aus einem anderen Namensraum gebrauchen muss. Aber ich habe praktisch keine Erfahrung mit XML und mehreren Namensräumen (bis auf XSL). Ist das so üblich und meine Bedenken unnötig?
Was meinst du mit „zu flach“?
Wenn ich für die Menü-Struktur rdf:Description, dcterms:hasPart und rdf:Seq verwende, dann muss ich sehr viele Tags verwenden und trotzdem alle Äste des Menübaums untereinander (-> flach) notieren. Ich möchte diese jedoch lieber direkt wie im Menü ineinander verschachtelt halten, so dass man gleich auf den ersten Blick den Aufbau erkennen kann. RDF bietet dafür anscheinend keine Möglichkeit. Wie würdest du vorgehen um dies zu erreichen?
Gruss und Dank für deine Geduld
Tom2
Hello out there!
Mich stört dabei - rein vom Gefühl her - dass ich dafür einen Tag aus einem anderen Namensraum gebrauchen muss. […] Ist das so üblich und meine Bedenken unnötig?
Ja, das ist durchaus üblich, in RDF Sachen aus anderen Vokabularien (also anderen XML-Namensräumen) zu verwenden. Es ist ja nicht sinnvoll, das Rad neu erfinden zu wollen. Wenn es schon ein Vokabular gibt, um das Entsprechende auszudrücken, benutzt man dieses. Oder mehrere verschiedene. In meiner FOAF-Datei verwende ich etliche.
Ich möchte diese jedoch lieber direkt wie im Menü ineinander verschachtelt halten, so dass man gleich auf den ersten Blick den Aufbau erkennen kann.
Hatte ich „ich möchte die Navigations-Struktur jedoch ausserhalb der Resourcen-Beschreibungen halten“ [OP] da falsch verstanden?
<rdf:Description rdf:nodeID="Homepage">
<dc:identifier rdf:resource="index.html"/>
<dc:title>Hauptseite</dc:title>
<dc:description>Meine Homepage</dc:description>
<dcterms:hasPart>
<rdf:Description rdf:nodeID="Projekte">
<dc:identifier rdf:resource="projekte.html"/>
<dc:title>Projekte</dc:title>
<dc:description>Meine Projekte</dc:description>
<dcterms:hasPart>
<rdf:Description rdf:nodeID="P01">
<dc:identifier rdf:resource="projekte/p01.html"/>
<dc:title>Projekte 01</dc:title>
<dc:description>Mein erstes Projekt</dc:description>
</rdf:Description>
</dcterms:hasPart>
<dcterms:hasPart>
<rdf:Description rdf:nodeID="P02">
<dc:identifier rdf:resource="projekte/p01.html"/>
<dc:title>Projekte 02</dc:title>
<dc:description>Mein zweites Projekt</dc:description>
</rdf:Description>
</dcterms:hasPart>
</rdf:Description>
</dcterms:hasPart>
</rdf:Description>
In dem Falle bräuchtest du keine 'rdf:nodeID'-Attribute und könntest in den Tags auch 'rdf:about' verwenden.
See ya up the road,
Gunnar
Hallo
In meiner FOAF-Datei verwende ich etliche.
Coole Sache, das werde ich mir mal genauer ansehen.
Hatte ich „ich möchte die Navigations-Struktur jedoch ausserhalb der Resourcen-Beschreibungen halten“ [OP] da falsch verstanden?
Anscheinend schon ein bisschen. Die Dublin-Core-Geschichte soll etwas ausführlicher werden, was den Menü-Baum auch sehr unübersichtlich machen würde. Diese Struktur ist sehr nahe an dem, was ich suche:
<?xml version="1.0"?>
<rdf:RDF
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:dcterms="http://purl.org/dc/terms/"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:nodeID="Homepage">
<dc:identifier rdf:resource="index.html" />
<dc:title>Hauptseite</dc:title>
<dc:description>Meine Homepage</dc:description>
</rdf:Description>
<rdf:Description rdf:nodeID="Projekte">
<dc:identifier rdf:resource="projekte.html" />
<dc:title>Projekte</dc:title>
<dc:description>Meine Projekte</dc:description>
</rdf:Description>
<rdf:Description rdf:nodeID="P01">
<dc:identifier rdf:resource="projekte/p01.html" />
<dc:title>Projekte 01</dc:title>
<dc:description>Mein erstes Projekt</dc:description>
</rdf:Description>
<rdf:Description rdf:nodeID="P02">
<dc:identifier rdf:resource="projekte/p02.html" />
<dc:title>Projekte 02</dc:title>
<dc:description>Mein zweites Projekt</dc:description>
</rdf:Description>
<rdf:Description rdf:nodeID="Menu">
<dcterms:hasPart rdf:nodeID="Homepage">
<dcterms:hasPart rdf:nodeID="Projekte">
<dc:identifier rdf:nodeID="P01" />
<dc:identifier rdf:nodeID="P02" />
</dcterms:hasPart>
</dcterms:hasPart>
</rdf:Description>
</rdf:RDF>
Nur kann ich mit der Fehlermeldung vom Validator nichts anfangen:
Error: {E201} Syntax error when processing " ". Encountered " " Was expecting one of: XML comment processing instruction end element tag attribute rdf:bagID property attributes attribute rdf:type [Line = 32, Column = 42]
Wohlgeformt sollte dieses Dokument ja sein. Linie 32 ist das folgende:
32: <dcterms:hasPart rdf:nodeID="Homepage">
Ich glaube, so werde ich's hin bekommen.
Gruss & Dank
Tom2
Hello out there!
<rdf:Description rdf:nodeID="Menu">
<dcterms:hasPart rdf:nodeID="Homepage">
<dcterms:hasPart rdf:nodeID="Projekte">
<dc:identifier rdf:nodeID="P01" />
<dc:identifier rdf:nodeID="P02" />
</dcterms:hasPart>
</dcterms:hasPart>
</rdf:Description>
Nein, so geht das nicht. In RDF musst du immer Tripel Subjekt-Prädikat-Objekt notieren. dcterms:hasPart soll aber nicht Subjekt eines Tripels sein, sondern immer nur Prädikat.
Das Tripel
genid:Menu dc:hasPart genid:Homepage .
in RDF/XML:
<rdf:Description rdf:nodeID="Menu">
<dc:hasPart rdf:nodeID="Homepage"/>
</rdf:Description>
oder alternativ:
<rdf:Description rdf:nodeID="Menu">
<dc:hasPart>
<rdf:Description rdf:nodeID="Homepage"/>
</dc:hasPart>
</rdf:Description>
Soll das Objekt des Tripels nicht Subjekt eines anderen Tripels sein, sind beide Schreibweisen möglich.
Du willst aber über genid:Homepage noch Aussagen machen, das also als Subjekt verwenden:
genid:Menu dc:hasPart genid:Homepage .
genid:Homepage dc:hasPart genid:Projekte .
<rdf:Description rdf:nodeID="Menu">
<dc:hasPart>
<rdf:Description rdf:nodeID="Homepage">
<dc:hasPart rdf:nodeID="Projekte">
</rdf:Description>
</dc:hasPart>
</rdf:Description>
oder
<rdf:Description rdf:nodeID="Menu">
<dc:hasPart>
<rdf:Description rdf:nodeID="Homepage">
<dc:hasPart>
<rdf:Description rdf:nodeID="Projekte"/>
</dc:hasPart>
</rdf:Description>
</dc:hasPart>
</rdf:Description>
Mit dem rdf:nodeID lag ich wohl nicht ganz richtig. Wenn derselbe Wert des rdf:about-Attributs mehrmals auftritt, sollte auch klar sein, dass es sich um denselben Knoten im RDF-Graphen handelt.
Du solltest also schreiben können:
<rdf:RDF
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:dcterms="http://purl.org/dc/terms/"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
>
<rdf:Description rdf:about="http://example.net/index.html">
<dc:title>Hauptseite</dc:title>
<dc:description>Meine Homepage</dc:description>
</rdf:Description>
<rdf:Description rdf:about="http://example.net/projekte.html">
<dc:title>Projekte</dc:title>
<dc:description>Meine Projekte</dc:description>
</rdf:Description>
<rdf:Description rdf:about="http://example.net/projekte/p01.html">
<dc:title>Projekte 01</dc:title>
<dc:description>Mein erstes Projekt</dc:description>
</rdf:Description>
<rdf:Description rdf:about="http://example.net/projekte/p02.html">
<dc:title>Projekte 02</dc:title>
<dc:description>Mein zweites Projekt</dc:description>
</rdf:Description>
<rdf:Description rdf:about="http://example.net/index.html">
<dcterms:hasPart>
<rdf:Description rdf:about="http://example.net/projekte.html">
<dcterms:hasPart>
<rdf:Description rdf:about="http://example.net/projekte/p01.html"/>
</dcterms:hasPart>
<dcterms:hasPart>
<rdf:Description rdf:about="http://example.net/projekte/p02.html"/>
</dcterms:hasPart>
</rdf:Description>
</dcterms:hasPart>
</rdf:Description>
</rdf:RDF>
Dummerweise zeigt der RDF-Validator gerade keine Graphen an. Vorhin ging’s noch.
See ya up the road,
Gunnar
Hallo
Nein, so geht das nicht. In RDF musst du immer Tripel Subjekt-Prädikat-Objekt notieren.
Oh man... Logisch, es ist ja ein RDF-Dokument. Wenn ich meinen eigenen Dokument-Typen hätte, dann könnte ich das aber so machen, oder? Also die Meta-Daten in RDF und die Baumstruktur in meiner eigenen Suppe. Ich werde die Meta-Daten und die Navigations-Struktur warscheinlich eh trennen. Welches Format könnte ich dafür verwenden? Hier eine an HTML angelehnte Vorstellung:
<menu>
<a text="Homepage" href="index.html">
<a text="Projekte" href="projekte.html">
<a text="Projekt 01" href=projekte/P01.html" />
<a text="Projekt 02" href=projekte/P02.html" />
</a>
<a text="Kontakt" href="mailto:name@server.tld" />
</a>
</menu>
Gibt es einen geeigneten Standard für sowas? An RDF passt mir der Verschachtlungs-Overhead nicht. XLink klingt interessant, aber das sind ja nur eine Hand voll Attribute und ich brauche wieder meine eigenen Tags.
Ich möchte mich nochmals für deine Geduld bedanken, ich konnte wirklich viel lernen!
Gruss
Tom2
Hello out there!
Also die Meta-Daten in RDF und die Baumstruktur in meiner eigenen Suppe.
Klar kannst du dein eigenes Süppchen kochen. Aber warum?
An RDF passt mir der Verschachtlungs-Overhead nicht.
Hm, das ist so, als würden dich in HTML bei
<ul>
<li>Homepage
<ul>
<li>Projekte
<ul>
<li>Projekt 01</li>
<li>Projekt 02</li>
</ul>
</li>
<li>Kontakt</li>
</ul>
</li>
</ul>
die ul-Elemente stören.
See ya up the road,
Gunnar
Hallo,
Gibt es einen geeigneten Standard für sowas?
Schon, aber ... hast du viel Zeit? ;-)
(alle verlinkten Texte auf englisch)
Du kannst es mit XML Topic Maps 1.0 (XTM 1.0) versuchen:
http://www.topicmaps.org/xtm/1.0/
oder mit XTM 2.0 (noch kein Standard):
http://www.isotopicmaps.org/sam/sam-xtm/
Für einen Überblick eignet sich gut:
http://www.xml.com/pub/a/2002/09/11/topicmaps.html
Interessant dazu: "Metadata on the Web - On the integration of RDF and Topic Maps"
http://www.idealliance.org/papers/extreme03/html/2003/Presutti01/EML2003Presutti01.html
Und der Vergleich: "Topic maps, RDF, DAML, OIL - A comparison"
http://www.ontopia.net/topicmaps/materials/tmrdfoildaml.html
Grüße
Thomas