Rework:KomponentenAnnotationsdienst

From Wiki

Jump to: navigation, search
« Annotationsdienst Übersicht Packages und Klassen »

Contents

Komponenten des Annotationsdienstes

Die Annotationskomponente besteht aus drei Teilen:

Zugriff auf den Annotationsdienst bekommt man über eine Klasse der Frontend-Komponente.


Übersicht

Image:KompAnnoService.JPG

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

Image:KompAnnoServiceDetail.JPG

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 »
Personal tools