Hinzufügen von Subjekt-Identitäten
Spricht man von adressierbaren Subjekt-Identitäten trifft man eine Aussage über die Informationsressource die sich bei der Adresse findet. So kann man z.B. eine Aussage über eine Datei im Dateisystem, eine Website oder einen Datensatz in einem Datenbank-Management-System treffen. Jede Topic-Instanz bietet dazu die Funktion addSubjectLocator an. Als Argument wird dieser Funktion ein Locator, der bereits bei der Topic-Map-Instanz registriert ist, übergeben.
Im folgenden Beispiel soll eine Aussage über die Website http://www.ilmenau-guide.com getroffen werden:
Locator subjLoc = tm.createLocator("http://www.tu-ilmenau.de");
Topic t1 = tm.createTopic();
try {
t1.addSubjectLocator(subjLoc);
}
catch (MergeException me) {
System.err.println("Merge failed");
}
catch (ModelConstraintException mce) {
System.err.println("Model does not support more than one subject");
}
Dazu wird zunächst ein neuer Locator innerhalb der Topic-Map-Instanz mit der Adresse der Website erzeugt. Dieser wird im Anschluss mit der Funktion addSubjectLocator dem Topic zugewiesen.
Da laut Merging-Regeln Topics mit demselben Subjekt zusammengefasst werden sollen, muss eine Fehlerbehandlung beim Zuweisen des Subject-Locators erfolgen. Dieser Fehler wird dann ausgelöst, wenn das Merging nicht stattfinden kann. Dies kann z.B. dann passieren, wenn das Topic-Map-System nicht automatisch ein Merging ausführt.
Ein weiterer Fehler der auftreten kann, ist die ModelConstraintException. Diese tritt dann auf, wenn das Topic-Map-System lediglich XTM 1.0 unterstützt und man mehr als einen Subject-Locator zuweisen möchte. In XTM 1.0 war lediglich ein Subject-Locator pro Topic erlaubt.
Subject-Identifier
Mit Topics können jedoch auch Aussagen über nicht-adressierbare Subjekte getroffen werden. Bei nicht-adressierbaren Subjekten ist nicht die Ressource hinter der Adresse, sondern deren Inhalt bzw. Information gemeint. Eine Aussage über das Thema „Information-Retrieval“ kann eindeutig identifiziert werden, indem man einen Subject-Identifier auf die entsprechende Webseite von WikiPedia setzt.
Das folgende Beispiel zeigt diese Vorgehensweise:
Locator subjInd = tm.createLocator("http://de.wikipedia.org/IR");
Topic t2 = tm.createTopic();
try {
t2.addSubjectIdentifier(subjInd);
}
catch (MergeException me) {
System.err.println("Merge Failed");
}
Zunächst wird ein neuer Locator innerhalb der Topic-Map-Instanz erzeugt. Dieser wird im Anschluss mit Hilfe der Funktion addSubjectIdentifier als Subject-Identifier des Topics zugewiesen.
Ähnlich wie beim Subject-Locator kann auch hier ein Fehler beim Merging auftreten. Mit einer entsprechenden Fehlerbehandlung können unerwartete Systemzustände vermieden werden.
In den nächsten Unterkapiteln wird nun das Entfernen von Subjekt-Identitäten besprochen.