Object-ID

Jedes Topic-Map-Element innerhalb einer Topic-Map hat einen eindeutigen Identifier, also eine eindeutige Bezeichnung welche einen direkten Zugriff erlaubt. Diese sogenannte Object-Id kann wie folgt ermittelt werden. Anstelle des TopicMapObject in diesem Beispiel stehen in den späteren Anwendungen entsprechende Instanzen, also Topics, Associations usw.

// Ermitteln einer Object-Id
String objId = TopicMapObject.getObjectId();

// Ausgabe der Id
System.out.println("Object-Id:" + objId);

Unter Verwendung dieser Object-Id kann man direkt auf die Objekte einer Topic-Map zugreifen. Das ist dann sehr hilfreich, wenn man häufig innerhalb einer Anwendung bestimmte Objekte, z.B. für Vergleiche, benötigt. Einmal am Anfang die nötigen Object-Ids geladen, kann innerhalb der Anwendung immer schnell auf das entsprechende Objekt zurückgegriffen werden. Das Beispiel zeigt diese Vorgehensweise anhand eines Topics.

// Ermitteln einer Topic anhand einer Object-Id
Topic t = (Topic) tm.getObjectById(objId);

// Ist Topic wirklich vorhanden?
if (t == null) {
  System.err.println("Topic nicht vorhanden");
}

Im Beispiel wird die Object-Id aus dem o.g. Beispiel verwendet. Die Funktion getObjectById der Topic-Map liefert das Objekt mit der entsprechenden Id zurück. Sollte kein Objekt mit der Id vorhanden sein, ist das Ergebnis der Funktion null. Bevor mit dem Objekt weitergearbeitet wird, sollte also zunächst getestet werden, ob das Objekt wirklich vorhanden ist.

Die Bedeutung der Object-Id variiert je nach Topic-Map-Engine. Daraus ergibt sich, dass die verwendete Object-Id innerhalb der Topic-Map nicht erhalten bleiben muss. Sie korrespondiert auch nicht zwangsläufig mit der Id des XML-Elements bei XTM-Dateien. Wenn eine Topic-Map bzw. ein Topic-Map-System nicht mehr im Hauptspeicher verfügbar ist und neu geladen wird, verändern sich unter Umständen alle Object-IDs.

Leave a Reply