RDF (TDB/Jena): Anlegen neuer Ressourcen mit eindeutiger URI.

RDF ist darauf ausgelegt, bestehende Ressourcen eines Modells einfach zu erweitern. Mit der RDF API TDB für Java lassen sich neue Ressourcen einfach über die Methoden getResource(String URI) und createResource(String URI) der Klasse Model (com.hp.hpl.jena.rdf.model.Model) anlegen. Die erste Methode ist laut JavaDoc nur noch Altlast, da beide Methoden bei Bedarf eine neue Ressource im Modell anlegen. In einem aktuellen Projekt muss ich allerdings sicher stellen, dass garantiert keine bestehende Ressource des Modells versehentlich erweitert wird. Das heißt, ich benötige eine URI, die garantiert eindeutig ist und nicht im selben Moment ebenfalls von einem anderen Teilnehmer zum Erzeugen einer Ressource verwendet wird. Ich habe deshalb zuerst eine s.g. anonyme Ressource angelegt und von dieser dann mit getId() die anonyme ID aufgerufen. (Die Methode getId() der Klasse Resource liefert null wenn sie von einer nicht anonymen Ressource aufgerufen wird.) Für anonyme IDs gibt es in Jena eine extra Klasse: AnonId. Diese liefert mit hashCode() einen Hash in Form einer Integer zurück.

Model m = TDBFactory.createModel("RDFDB");
Resource rNew = m.createResource();

System.out.println("New anonymous resource:"+rNew.getId().hashCode());

Den so erhaltenen Hashcode verwende ich dann als Substring für die URI einer neuen (nicht anonymen) Ressource.

Resource myRes = m.createResource("my"+rNew.getId());
myRes.addProperty(m.createProperty(
m.getNsPrefixURI("mydb"),"key"), "1323");

Auf diese Weise soll sichergestellt werden, dass kein Benutzer in der selben Zeit eine Ressource mit der gleichen URI im Modell einträgt.

Hinweis:Eine Ressource definiert sich in RDF über die Menge ihrer Prädikat-Objekt-Paare. Werden einer Ressource also keine Prädikate hinzugefügt, dann existiert sie nicht im Modell und kann später auch nicht mit SPARQL Ausdrücken abgefragt werden.

Dieser Beitrag wurde unter Allgemein abgelegt und mit , , , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.

Eine Antwort auf RDF (TDB/Jena): Anlegen neuer Ressourcen mit eindeutiger URI.

  1. Pingback: Alexander7