Rework:KomponentenAnnotationsdienst
From Wiki
| « Annotationsdienst | Übersicht | Packages und Klassen » |
Contents |
Komponenten des Annotationsdienstes
Die Annotationskomponente besteht aus drei Teilen:
- Frontend-Komponente des Annotationsdienstes
- Backend-Komponente des Annotationsdienstes
- Kommunikationskomponente für den Datenaustausch zwischen Frontend und Backend
Zugriff auf den Annotationsdienst bekommt man über eine Klasse der Frontend-Komponente.
Übersicht
Frontend-Komponente
Über die Frontend-Komponente kann man im Daffodil-Frontend auf den Annotationsdienst zugreifen. Sie stellt dafür eine Klasse mit Methoden bereit, um Annotationen zu erzeugen, zu bearbeiten oder zu suchen. Dazu werden bestimmte Service-Objekte (wie z.B. ein Annotationsobjekt) an den Annotationsdienst übergeben und ggf. zurückgegeben. Die Suche und Speicherung der Annotationen geschieht auf dem Backend. Die Frontend-Komponente sendet die Daten zu diesem Zweck an das Backend.
Kommunikations-Komponente
Als Austauschsformat zwischen der Frontend- und der Backend-Komponente wird OWL verwendet. Die Frontend-Komponente übergibt dazu der Kommunikations-Komponente alle Daten als OWL-Serialisierung. Die Kommunikations-Komponente verpackt diese zusammen mit der aufzurufenden Backend-Methode und den Argumenten in eine XML-Nachricht, die dann über das Daffodil-Framework an die Backend-Komponente verschickt wird. Antworten der Backend-Komponente werden analog an das Frontend zurückgesendet.
Backend-Komponente
Die Backend-Komponente stellt eine Schnittstelle für das Speichern, Modifizieren und Suchen von Annotationen zur Verfügung. Ein Daffodil-Service benutzt diese Schnittstelle, um die gewünschten Aktionen durchzuführen und die Ergebnisse an das Frontend zurückzusenden. Die Annotationen werden persistent in einer Datenbank abgelegt.
Aufbau und Zusammenhänge
Die Grafik zeigt die wichtigsten Teile und wie sie miteinander in Verbindung stehen.
Backend-Komponente
Persistentes Jena-Modell
Die Backend-Komponente nutzt ein persistentes Jena-Modell, um die Annotationen zu verwalten und dauerhaft zu speichern. Realisiert wird die Persistenz durch eine Datenbank. Die Klasse JenaModel liest die Verbindungsdaten zur Datenbank aus und erstellt ein persistentes Jena-Modell mit der dazugehörigen Datenbankverbindung. Mithilfe der Klassen des Packages OntologyObjects, die die einzelnen Konzepte der Annotations-Ontologie repräsentieren, greift die Klasse auf das Jena-Modell zu und stellt grundlegende Funktionen für den Umgang mit dem Modell zur Verfügung.
Jena-Annotationsdienst
Die Klasse JenaAnnotationService ist eine Implementierung des Interfaces BackendAnnotationService und stellt Methoden zur Verwaltung und Suche von Annotationen zur Verfügung. Sie verwendet die Klasse JenaModel, um die im Interface spezifizierten Operationen durchzuführen. Als Argumente und Rückgabewerte werden OWL-Serialisierungen und URIs verwendet.
Annotationsdienst-Agent
Die Backend-Komponente des Annotationsdienstes ist als Daffodil-Service annotation realisiert. Der Daffodil-Agent AnnotationAgent nimmt Anfragen mithilfe der Klasse AnnotationRequest im XML-Format entgegen. Zum Extrahieren der aufzurufenden Methode und der Argumente wird die Klasse AnnotationRequestMessage verwendet.
Frontend-Komponente
Backend-Proxy
Da auf Frontend-Seite die Klasse BackendAnnotationServiceProxy für die Kommunikation mit dem Backend zuständig ist und diese Klasse das Interface BackendAnnotationService implementiert, ist die Kommunikation mit dem Backend über das Daffodil-Framework für die Frontend-Annotationskomponente transparent. Auch diese Klasse verwendet die Klasse AnnotationRequestMessage zum Verpacken der Daten und Methodeninformationen in die XML-Nachricht. Nachdem die Nachricht erzeugt wurde, wird sie an den Backend-Agenten gesendet und die Antwort wieder an die aufrufende Klasse zurückgegeben.
Annotationsdienst
Die Frontend-Annotationskomponente nutzt die Proxy-Klasse, um auf den Datenbestand der Backend-Komponente zuzugreifen. Zugriff auf den Annotationsdienst im Daffodil-Frontend bekommt man über die Klasse AnnotationService und die Klassen des Packages ServiceObjects. Zum Parsen der OWL-Daten und zum Erstellen der Objekte wird ein Memory-Modell der Klasse JenaModel verwendet, das dem persistenten Jena-Modell ähnlich ist. Beispiele für den Zugriff gibt es hier.
Hinweis
Im Moment werden für die Suche Jena (RDQL) und PIRE verwendet. In folgender Diplomarbeit wird ein Ansatz verfolgt, um bei der Suche mit einer Datenbank auszukommen.
| « Annotationsdienst | Übersicht | Packages und Klassen » |
