Abschlussdokumentation

Größe: px
Ab Seite anzeigen:

Download "Abschlussdokumentation"

Transkript

1 Carl-von-Ossietzky-Universität Oldenburg Fakultät II Informatik, Wirtschafts- und Rechtswissenschaften Department für Informatik Abteilung Wirtschaftsinformatik Projektgruppe Inf-O-Mat Abschlussdokumentation Version: Datum: Herausgeber: September 2005 Frank Slotta Florian Salihovic Betreuer: Prof. Dr.-Ing. Axel Hahn Dipl.-Inform. Sven Abels Dipl.-Oec. Liane Haak Teilnehmer: Abu Hussein, Nidal Bantelmann, Mareen Cao,Yeyi Carlson, Peer Måns Grewatsch, Simone Häusler, Stefan Kasim, Kasim Kemmer, Alex Maron, Angelo Riedel, Christian Rieken, Björn Salihovic, Florian Sieverding, Sven Slotta, Frank 1

2 Inhaltsverzeichnis 1 Einleitung Anforderungsdefinition Ausgangssituation und Zielsetzung Systemeinsatz und Systemumgebung Funktionale Anforderungen Beschreibung der Anforderungen Stichwortartige Auflistung der Anforderungen Muss-Anforderungen Kann-Anforderungen ( Nice to have... ) Anwendungsfälle UML Use Cases Nichtfunktionale Anforderungen Benutzerschnittstellen Fehlerverhalten Dokumentationsanforderungen Zeitliche Aspekte und Auslieferung Abnahmekriterien Glossar Entwurf Systemziele Systemarchitektur und Systemkomponenten Systemeinsatz und Systemumgebung Statische Modulbeschreibungen für Fach-, Steuerungs- und GUI- Klassen Fachklassen Datenextraktion Semantische Analyse Semantische Suche Ontologie D Darstellung der Ontologie Steuerungsklassen GUI-Klassen Dynamische Modulbeschreibungen für Fach-, Steuerungs- und GUI-Klassen Fachklassen Datenextraktion Sequenzdiagramme: Aktivitätsdiagramme Semantische Analyse Sequenzdiagramme Aktivitätsdiagramme Semantische Suche Sequenzdiagramme Ontologie Sequenzdiagramme Aktivitätsdiagramme Steuerungsklassen EventManager Sequenzdiagramme

3 Aktivitätsdiagramme GUI-Klassen Aktivitätsdiagramme Datenhaltung Testumgebung Verschiedene Testmöglichkeiten Separates Testen Black-Box Testen Belastungstests Plattformtest Testdurchführung Anhang Verwendete Technologien: Evaluation Einleitung Verfahren Evaluation KeywordClassification Vorgehen Ergebnisse Bewertung Evaluation BayesClassification Vorgehen Ergebnisse Bewertung Weitere Eckdaten Installationsanleitung Installationsumfang Inf-O-Mat Basis Inf-O-Mat plattformspezifische Dateien (Windows Base oder Unix Base) Datenbanksupport für die laufende Datenbank Datenbanksupport für MySql Datenbanksupport für Hsql Datenbanksupport für lokalen MySql-Server Schnittstellen und Wartungsfreundlichkeit Benutzerhandbuch Das Hauptmenu Datei Bearbeiten Dokument Klassifikation Ontologie Suche Hilfe Hinzufügen von Dokumenten Dokumente Auswählen und Einsortieren: Export in das Dateisystem Suche nach Dokumenten Einfache Suche Metadatensuche Der Ontologie-Editor Dokumenteninformations- und Metadaten-Editor Einstellungen

4 5.10 Tastaturkürzel Mausbedienung Statistik Ausblick

5 1 Einleitung Der Inf-O-Mat ist eine plattformunabhängige Applikation zur automatischen Analyse von Dokumenten. Vielfältige Arten von Dokumenttypen (z.b. PDF, HTML, TXT) können analysiert und in definierte Klassen einer Ontologie einsortiert werden. Die Ontologie kann beliebig erweitert und an persönliche Fachgebiete angepasst werden. Die automatische Analyse erfolgt nach Schlüsselwörtern oder dem Bayes-Erkennungsverfahren, wobei automatisch die geeignetere Methode angewandt wird. Der Benutzer ist nach der Klassifikation in der Lage, durch die Ontologie zu navigieren und in die Klassen einsortierte Dokumente zu betrachten. Ebenso können die Metadaten der Dokumente angezeigt und bearbeitet werden. Die Dokumente können sowohl in deutscher als auch in englischer Sprache analysiert werden. Beide Sprachen werden ebenso von der Ontologie als auch der grafischen Benutzeroberfläche unterstützt. Die Ontologie modelliert die enthaltenen Schlagwörter der einzusortierenden Dokumente und die Beziehungen zwischen diesen Begriffen. Der Inf-O-Mat ist als Einzelplatzlösung konzipiert. Durch den modularen Aufbau kann die Datenbank jedoch auf entfernten Systemen installiert werden. Der Inf-O-Mat wurde im Rahmen der Projektgruppe Inf-O-Mat im Department für Informatik der Universität Oldenburg entwickelt. Die Entwicklung fand im Wintersemester 2004/2005 und im Sommersemester 2005 an der Universität Oldenburg statt. Die Software wurde von 14 Studenten entwickelt und von Prof. Dr.-Ing. Axel Hahn, Sven Abels und Liane Haak betreut. 5

6 2 Anforderungsdefinition Das folgende Kapitel beschreibt die Anforderungsdefinition für den Inf-O-Mat. 2.1 Ausgangssituation und Zielsetzung Im Rahmen der Projektgruppe Inf-O-Mat im Department für Informatik der Universität Oldenburg soll im Zeitraum von Anfang des Wintersemesters 2004/2005 bis zum Ende des Sommersemesters 2005 eine Software zur Klassifikation von Textdokumenten verschiedener Art entwickelt und implementiert werden. Zu der Projektgruppe gehören 14 Studenten; betreut wird sie von Juniorprofessor Dr. Axel Hahn, Sven Abels und Liane Haak aus der Abteilung Wirtschaftsinformatik. Zweck der Software ist die vollautomatische Zuordnung ausgewählter Text-Quelldateien zu Themenklassen (Kategorien), die der Benutzer vorgibt. Diese Klassifikation erfolgt auf Basis des Inhalts der ausgewählten Dateien sowie darin evtl. vorhandener Meta-Informationen. Der Benutzer ist nach abgeschlossener Klassifikation in der Lage, mit Hilfe eines Dateibrowsers durch den nach Themenklassen organisierten, strukturierten Datenbestand zu navigieren. Darüber hinaus werden die klassifizierten Dateien visuell in Form farbiger Graphen miteinander in Verbindung gebracht, damit der Benutzer eine thematische Verwandtschaft zwischen Dateien auch optisch erkennen kann. Diese Software wird als Einzelplatz-Lösung erstellt. Sie kann ggf. auf eine lokale Datenbank zur Ablage von Meta- und Zwischendaten zugreifen. Wichtig ist ein weitgehend modularer Aufbau, um Teile des Programms später leicht erweitern oder ersetzen zu können. Das fertiggestellte Programm wird ebenso wie die Projektgruppe selbst den Namen Inf-O-Mat tragen. 2.2 Systemeinsatz und Systemumgebung Das Programm Inf-O-Mat soll primär im universitären und im privaten Umfeld zu Einsatz kommen. Eine Weiterentwicklung für den geschäftlichen Bereich kann nicht ausgeschlossen werden. Inf-O-Mat muss daher auf Windows-, Linux- und Unix-Plattformen gleichermaßen lauffähig sein. Für die Implementierung bietet sich Java 2 als plattformunabhängige Programmiersprache an. 2.3 Funktionale Anforderungen Zu den funktionalen Anforderungen gehören sämtliche Anforderungen an die Software, die die Funktion und die Verwendung der Software im Wesentlichen charakterisieren. 2.4 Beschreibung der Anforderungen Die Kernaufgabe von Inf-O-Mat ist die automatische Klassifikation von Textdateien basierend auf deren Inhalt und ggf. vorhandener Metainformationen, d.h. die Zuordnung dieser Dateien zu intern vorgegebenen Themenklassen (Kategorien) auf einem Einzelplatz-Rechner. Das Programm ordnet durch die Klassifikation jede Textdatei einer Themenklasse (oder ggf. auch mehreren Themenklassen) zu und zeigt diese Zuordnung auf geeignete Weise an. Der Speicherort der von Inf6

7 O-Mat erfassten Dokumente bleibt auf dem lokalen System unangetastet. Die Klassifikation soll dem Anwender helfen, einen Überblick über alle Textdateien und deren Ähnlichkeit zu anderen Textdateien zu erlangen, die sich auf seinem Rechner befinden. Beispielsweise möchte ein Seminarteilnehmer über 500 PDF- und Word-Dokumente, die er während eines mehrtägigen Seminars auf seinen Laptop kopiert hat, nach Abschluss des Seminars automatisch den Themenklassen Wissensmanagement, Logistik, Informationssysteme und Simulation zuordnen. Außerdem beabsichtigt er, ausgehend von einem bestimmten Dokument, thematisch ähnliche Dokumente zu finden, um sich damit für das nächste Seminar vorzubereiten. Bei genau diesen Aufgaben kann ihm Inf-O-Mat weiterhelfen. Der Benutzer legt für die Klassifikation nach eigenen Vorstellungen eine sog. Ontologie im Programm an, die aus hierarchisch in einem Baum angeordneten Themenklassen ( Sport, Medizin, Kunst,...) besteht. Jede Klasse wird beim Erstellen durch einige Stichworte kurz beschrieben. Außerdem hat der Benutzer die Möglichkeit, Querbezüge zwischen Themenklassen durch Verknüpfungen über die Struktur des Ontologiebaumes hinaus herzustellen. Eine Verknüpfung wäre beispielsweise zwischen den Themenklassen Sport und Medizin möglich, die sich zwar im Ontologiebaum an ganz unterschiedlichen Stellen befänden, aber über die Brücke Sportmedizin in Verbindung gebracht werden könnten. Alle Textdateien werden basierend auf ihrem Inhalt (und evtl. vorhandenen Meta-informationen) in Verbindung mit den benutzerspezifischen Angaben in der Ontologie klassifiziert. Intern werden darüber hinaus Thesauri (kontrollierte Vokabularien) zur Unterstützung der Ontologie eingesetzt. Da sich der Klassifikationsvorgang immer nach der Ontologie richtet, kommt ihrem sinnvollen Aufbau eine hohe Bedeutung zu. Die Anzahl zu klassifizierenden Textdateien ist nach oben nicht begrenzt. Inf-O-Mat kann einzelne Dateien, mehrere Dateien in einem Verzeichnis oder ganze Verzeichnis-strukturen klassifizieren. Das Programm berücksichtig dabei auch Dateiänderungen oder das Löschen von Dateien und hält den internen Datenbestand konform zum lokalen Dateisystem. Hat der Benutzer die Themen seiner Wahl also einmal in der Ontologie organisiert, beschränkt sich jeder weitere Klassifikationsvorgang im Idealfall auf das Drücken eines einzigen Knopfes zum Starten der Klassifikation. Inf-O-Mat erlaubt das Navigieren durch die klassifizierten Textdateien, die entsprechend der vorgegebenen Ontologie in einem Baum nach Themenklassen geordnet sind, mit einem Dateibrowser ähnlich dem Windows-Explorer. Der Benutzer kann jede Datei mit einem externen Programm öffnen und sich zugehörige Metainformationen anzeigen lassen. Er kann die Zusammenhänge zwischen verschiedenen Textdateien durch einen farbigen Graphen visualisieren lassen, durch den thematische Verwandtschaft auch optisch dargestellt wird. Außerdem bietet InfO-Mat ein vielseitiges Suchsystem: Es erlaubt, sowohl nach Dateien selbst, aber auch nach Inhalten, Stichworten oder thematisch verwandten Dateien zu suchen. Wichtig ist an dieser Stelle festzuhalten, dass sowohl die Navigation als auch die Klassifikation dateiorientiert erfolgt und nicht dokumentenorientiert. Jedoch liegt in den meisten Fällen eine Einszu-Eins-Beziehung von einer Datei zu dem in ihr vorhandenen Dokument vor. Die Begriffe Datei und Dokument werden in dieser Anforderungsdefinition synonym verwendet. Die Zwischen- und Metadaten sowie die Ergebnisse der Klassifikation werden in einer lokalen Datenbank abgelegt. Diese Datenbank wird bei Projektende Bestandteil des Inf-O-MatProgrammpaketes sein. Nach Abschluss des Projekts wird dieses Inf-O-Mat-Programmpaket bestehend aus Inf-O-Mat und zugehöriger Datenbank zzgl. der unter Punkt 7 aufgeführten Dokumente ausgeliefert. Alle Anforderungen werden im nachfolgenden Abschnitt aufgelistet. 7

8 2.5 Stichwortartige Auflistung der Anforderungen Muss-Anforderungen Allgemeine Programmanforderungen Implementierung als Einzelplatzlösung. Die Programmsprache ist deutsch. Die Interaktion mit dem Benutzer findet über eine fensterorientierte grafische Benutzungsoberfläche mit Menü, Symbolleiste, Inhaltsbereich und Statusleiste statt. Die Daten der Ontologie und der Klassifikationen werden in einer externen, lokal installierten Datenbank abgelegt. Diese Datenbank wird Bestandteil des Inf-O-Mat-Programmpaketes. Eine interne Hilfefunktion ist vorhanden. Anforderungen an die Klassifikation Die Klassifikation kann automatisch oder manuell vonstatten gehen. Die automatische Klassifikation auf Knopfdruck richtet sich nach den Angaben in der Ontologie (Themenklassen, Stichworte, Synonyme,...) und/oder nach bereits klassifizierten anderen Textdateien. Für die automatische Klassifikation wählt der Anwender eine einzelne Textdatei, mehrere Dateien oder eine Verzeichnisstruktur vom lokalen Dateisystem aus. Eine Update-Funktion sorgt dafür, dass veränderte Dateien neu klassifiziert und gelöschte Dateien aus Inf-O-Mat entfernt werden. Bei der manuellen Klassifikation sortiert der Anwender eine Textdatei in eine Themenklasse seiner Wahl ein. Durch das manuelle Einsortieren lernt das Programm hinzu, zukünftig andere Dateien, die der einsortierten Datei ähnlich sind, derselben Klasse zuzuordnen. Dokumente können manuell aus Inf-O-Mat entfernt werden und gelten dann nicht mehr als klassifiziert. Sie werden danach auch nicht mehr von der Update-Funktion berücksichtigt. Inf-O-Mat klassifiziert die folgenden Dateitypen: Nur-Text (.txt), Microsoft Word (.doc), StarOffice-Textdokument (.sxw), Adobe PDF (.pdf), HTML (.htm;.html) und XML (.xml). Um die Anzahl der zu klassifizierenden Dateien zu begrenzen, existiert ein anpassbarer Dateitypfilter mit Verzeichnistiefenbegrenzung. Die zu klassifizierenden Dokumente müssen in englischer Sprache verfasst sein. Inf-O-Mat bietet Erweiterungsmöglichkeiten für die Klassifikation von Textdateien anderer Sprachen durch Sprach-PlugIns. Anforderungen an die Darstellung klassifizierter Dateien Klassifizierte Dateien werden im Inhaltsbereich des Hauptfensters in einem baumartigen Dateibrowser (ähnlich dem Windows-Explorer) angezeigt. Die Struktur dieses Baumes entspricht der Stuktur des Ontologiebaumes. Dateien können mit einem externen Programm zum Zweck des Betrachtens oder des Bearbeitens geöffnet werden (z.b. StarOffice für StarOffice-Textdokumente). Nach einem Bearbeiten besteht die Möglichkeit einer neuen Klassifikation der Datei. 8

9 Zu jeder Datei lassen sich diejenigen Metainformationen anzeigen, anhand derer die Klassifikation dieser Datei stattgefunden hat. Die verwandtschaftlichen Beziehungen zwischen Dokumenten werden (in einem separaten Fensterbereich oder Dialogfeld) durch einen farbigen Graphen visualisiert. Anforderungen an die Suche Die Suche nach einem Dokument erfolgt nach einem gegebenen Stichwort oder Synonym. Es gibt die Möglichkeit der Volltextsuche; Begriffe können mit den Operatoren AND, NOT, OR oder XOR verbunden/ausgeschlossen werden. Der Anwender wählt ein vorhandenes, klassifiziertes Dokument aus und lässt nach thematisch ähnlichen Dokumenten suchen. Anforderungen an die Ontologie In der Ontologie können neue Themenklassen in einer baumartigen, hierarchischen Struktur angelegt werden. Der Anwender ist in der Lage, jede Themenklasse mit Attributen und Gewichtungen (für die Relevanz der Attribute) zu beschreiben. Anhand der Attribute und/oder anhand von Dokumenten, die in dieser Klasse zugeordnet sind, erfolgt die Klassifikation. Themenklassen erben Attribute übergeordneter Klassen (Vererbungshierarchie). Zwischen unterschiedlichen Themenklassen können Querbezüge/Verknüpfungen er-stellt werden, sofern der Anwender diese für thematisch verwandt hält. Damit erhält die Ontologie über die einschränkende Baumstruktur hinaus ein Netz von Subjekt-Prädikat-ObjektBeziehungen auf semantischer Ebene. Die Baumstruktur selbst bleibt hierbei vollständig unangetastet; die optionalen Verknüpfungen bieten nur eine zusätzliche Möglichkeit, inhaltliche Zusammenhänge aufzuzeigen. Themenklassen können verändert oder im Baum anders angeordnet werden. Themenklassen können entfernt werden. Durch das Verändern oder Entfernen von Themenklassen müssen die Dateien, die diesen Klassen zugeordnet sind, neu klassifiziert werden. Es gibt diverse Möglichkeiten des Exports der Ontologie oder der Dateien einer Themenklasse in das lokale Dateisystem (vollständiger Baum oder Teilbaum) Kann-Anforderungen ( Nice to have... ) Während des Klassifikationsvorgangs zeigt ein modales Dialogfenster den Fortschritt der Klassifikation mit einer Prozentangabe oder einem animierten Fortschrittsbalken an. Der klassifizierte Datenbestand kann durch Statistiken (in Balken- oder Tortenform dargestellt) ausgewertet und beurteilt werden. Eine interne Programmfunktion gestattet den Export sämtlicher Daten in der Datenbank (z. B. für eine Neuinstallation des Programms). Inf-O-Mat bietet Erweiterungsmöglichkeiten für andere Dokumententypen durch Dokumententyp-PlugIns. Die Ontologie kann über ein Referenzdokument erweitert werden. Eine neu angelegte Themenklasse wird dabei nicht (manuell durch den Anwender) mit Attributen beschrieben, 9

10 sondern (automatisch) durch das ausgewählte Dokument. Dieses Dokument gilt damit als Referenz, als typisch für die neue Themenklasse. Dateien können im lokalen Dateibrowser mit Drag-N-Drop-Methoden verschoben werden. Für gängige Webbrowser ist ein PlugIn vorhanden, um Dateien direkt aus dem Web in das Inf-OMat-Programm zu importieren. 2.6 Anwendungsfälle Nachfolgend einige Anwendungsfälle zur Beschreibung ausgewählter Anforderungen. Anwendungsfall-Nummer 1 Name Programm starten Beschreibung Der Benutzer startet das Programm. Auslöser Benutzer Vorbedingungen Das Programm muss installiert sein. Nachbedingungen Das Programm ist gestartet. Ausnahmen Das Programm ist nicht installiert. Nichtfunktionale Anforderungen Szenario 1. Datenbankverbindung aufbauen. 2. GUI-Hauptfenster starten. Anwendungsfall-Nummer 2 Name Hilfe aufrufen Beschreibung Der Benutzer möchte die Hilfefunktion nutzen. Auslöser Benutzer Vorbedingungen Das Programm ist gestartet. Nachbedingungen Der Benutzer kann die Programmhilfe lesen. Ausnahmen Nichtfunktionale Anforderungen Szenario 1. Auswahl der Hilfefunktion. 2. Programmhilfe lesen. Anwendungsfall-Nummer 3 Name 10 Datei mit externem Betrachter öffnen.

11 Beschreibung Der Benutzer möchte ein Dokument mit einem externen Betrachter-Programm öffnen. Auslöser Benutzer Vorbedingungen a) Inf-O-Mat ist gestartet. b) Das Dokument ist einsortiert c) Das externe Betrachter-Programm muss auf dem Rechner installiert sein. Nachbedingungen Der Benutzer hat ein externes Betrachter-Programm gestartet und das gewünschte Dokument darin geöffnet. Ausnahmen a) Keine Anbindung zur Datenbank vorhanden. b) Das gewünschte Betrachter-Programm ist nicht installiert. c) Das Dokument ist nicht von Inf-O-Mat einsortiert worden. Nichtfunktionale Anforderungen Szenario 1. Das Dokument auswählen. 2. Die Betrachtungsfunktion auswählen. 3. Öffnen des Dokuments im externen Programm. Anwendungsfall-Nummer 4 Name Ontologieklasse (Themenklasse) hinzufügen Beschreibung Dieser Anwendungsfall beschreibt die Verwaltung der Ontologie durch das Anlegen einer Klasse. Der Benutzer erstellt damit eine (Unter-)Klasse, in der die ausgewählten Dateien klassifiziert werden können. Einer Klasse können Attribute, Synonyme und Fachbegriffe hinzugefügt werden, um eine möglichst präzise Beschreibung und Zuordnung der Dokumente vornehmen zu können. Auslöser Der Benutzer kann durch die Navigation in der Ontologie an nahezu beliebiger Stelle eine Klasse einfügen. Vorbedingungen Die Ontologie muss in einer Grundform existieren. Die Wurzel der Ontologie wird vorgegeben. Damit ist immer eine Oberklasse vorhanden. Die Klasse darf auf gleicher Hierarchieebene noch nicht vorhanden sein. Nachbedingungen Die Änderung der Ontologie muss weitergeleitet werden. Ausnahmen Die neu einzufügende Klasse ist schon vorhanden. Nichtfunktionale Anforderungen Die Gültigkeit und damit die Wohlgeformtheit der Ontologie muss beibehalten werde. Die Größe der Ontologie darf die Bearbeitungszeit nicht drastisch verlangsamen. 11

12 Szenario 1. Gewünschter Knoten in Ontologie wird angewählt. 2. Hinzufügen an gewünschter Stelle ist möglich. 3. Ontologie wird verändert. Anwendungsfall-Nummer 5 Name Ontologieklasse bearbeiten Beschreibung Dieser Anwendungsfall beschreibt die Bearbeitung von Klassen. Der Benutzer kann damit bestehende Klassen und ihre Attribute editieren. Auslöser Der Nutzer kann durch die Navigation in der Ontologie eine Klasse auswählen, deren Attribute editiert werden sollen. Vorbedingungen Es muss eine Klasse außer der Wurzel vorhanden sein. Nachbedingungen Die Änderung der Ontologie muss propagiert werden, Dokumente, die durch diese Änderung nicht mehr in der richtigen Klasse einsortiert sind, können in die Oberklasse verschoben werden. Ausnahmen Nichtfunktionale Anforderungen a) Die Gültigkeit und damit die Wohlgeformtheit der Ontologie muss beibehalten werden. b) Die Größe der Ontologie darf die Bearbeitungszeit nicht drastisch verlangsamen. c) Dokumente, die nach der Bearbeitung nicht mehr in der richtigen Klasse eingeordnet sind, müssen in die Oberklasse verschoben werden können. Szenario 1. Gewünschter Knoten in Ontologie wird angewählt. 2. Ontologie wird verändert. 3. Überprüfung, ob vorher zugewiesene Dokumente umsortiert werden sollen. Anwendungsfall-Nummer 6 Name Ontologieklasse löschen Beschreibung Dieser Anwendungsfall beschreibt die Verwaltung der Ontologie durch das Löschen von Klassen. Der Benutzer entfernt damit eine Klasse, in der ausgewählte Dokumente klassifiziert sein können. Attribute, Synonyme und Fachbegriffe einer Klasse werden ebenfalls entfernt. Auslöser Der Benutzer kann nach der Navigation in der Ontologie ausgewählte Klassen löschen. Vorbedingungen a) Die Ontologie muss in einer Grundform existieren. Die Wurzel der Ontologie wird vorgegeben. b) Eine zu löschende Klasse muss existieren. Nachbedingungen Die Änderung der Ontologie muss propagiert werden, Dokumente, die durch diese Löschung nicht mehr einsortiert sind, müssen in die Oberklasse verschoben werden. Ausnahmen 12

13 Nichtfunktionale Anforderungen a) Die Gültigkeit und damit die Wohlgeformtheit der Ontologie muss beibehalten werde. b) Dokumente. die in der zu löschenden Klasse einsortiert sind, müssen in die Oberklasse verschoben werden. Szenario 1. Gewünschter Knoten in Ontologie wird angewählt. 2. Löschen an gewünschter Stelle ist möglich. 3. Enthaltene Dokumente werden in die Oberklasse verschoben. 4. Klasse wird aus der Ontologie entfernt. Anwendungsfall-Nummer 7 Name Mehrere Dateien klassifizieren. Beschreibung Eine Anzahl ausgewählter Dateien sollen gemäß einer vorhandenen Ontologie klassifiziert werden. Auslöser Benutzer startet Klassifikationsvorgang. Vorbedingungen a) Ontologie ist vorhanden. b) Dokumente sind ausgewählt. Nachbedingungen Dokumente sind klassifiziert. Ausnahmen a) Dokument kann nicht gelesen werden (Lesefehler; Datei beschädigt,...) b) Benutzer bricht Klassifikationsvorgang ab. Nichtfunktionale Anforderungen Die Klassifikation muss in einem entsprechenden Zeitrahmen stattfinden. Für die Klassifikation von Dateien auf einem durchschnittlich schnellen Rechner darf nicht mehr als 10 Minuten aufgewendet werden. Szenario 1. Benutzer wählt Dateien aus. 2. Benutzer startet Klassifikation über die GUI. 3. Der interne Algorithmus klassifiziert die Dateien. 4. Die Dateien werden in klassifizierter Form angezeigt. Anwendungsfall-Nummer 8 Name Suchen nach einem Stichwort Beschreibung Der Anwender möchte alle Dokumente nach einem gegebenen Stichwort durchsuchen, aber auch nach verwandten Stichwörtern. Auslöser Wird ausgelöst durch den Anwender. Vorbedingungen Klassifizierte Dokumente in der Datenbank, Stichwort, Methoden zur Erzeugung von verwandten Suchbegriffen Nachbedingungen Suche ist ausgeführt. Ausnahmen Datenbankverbindung nicht hergestellt. Nichtfunktionale Anforderungen Möglichst geringer Verbrauch von Kapazitäten. 13

14 Szenario 1. Suchen nach allen Dokumenten innerhalb der Datenbank, in denen der Suchbegriff auftaucht. 2. Suchen nach allen Dokumenten innerhalb der Datenbank, in denen eine andere (Wort-) Form des Suchbegriffes auftaucht. 3. Suchen nach allen Dokumenten innerhalb der Datenbank, in denen ein Synonymer Begriff des Suchbegriffes auftaucht. 4. Sortieren (Ranking) der Ergebnisse und deren Rückgabe. Anwendungsfall-Nummer 9 Name Suchen nach einem Metadatum Beschreibung Der Anwender möchte alle Dokumente nach einem Metadatum, also etwa nach einem Autor oder Erstellungsdatum, aber auch nach einer Kategorie, durchsuchen. Auslöser Wird ausgelöst durch den Anwender. Vorbedingungen Klassifizierte Dokumente in der Datenbank, Metadatum Nachbedingungen Ausnahmen Datenbankverbindung nicht hergestellt. Nichtfunktionale Anforderungen Möglichst geringer Verbrauch von Kapazitäten. Szenario (Direkter) Zugriff auf die Datenbank, Rückgabe der Ergebnisse. Anwendungsfall-Nummer 10 Name Suchen nach verwandten ( ähnlichen ) Dokumenten Beschreibung Der Anwender möchte alle Dokumente mit einem anderen Dokument vergleichen, und die ähnlichsten zurückgeben. Auslöser Wird ausgelöst durch den Anwender. Vorbedingungen a) Klassifizierte Dokumente befinden sich in der Datenbank. b) Vergleichsdokument ist gegeben. Nachbedingungen Ausnahmen Datenbankverbindung nicht hergestellt. Nichtfunktionale Anforderungen Möglichst geringer Verbrauch von Kapazitäten. 14

15 Szenario 1. Syntaktische Analyse des Vergleichsdokumentes (Wortstammzerlegung, Stoppwortentfernung usw). 2. Semantische Analyse des Vergleichsdokumentes (Einordnung in eine Klasse). 3. Gewinnung einer Menge von Indextermen aus dem Vergleichsdokument. 4. Ermittlung der Ähnlichkeit aller Dokumente der Vergleichsklasse mit dem Vergleichsdokument bezüglich der Menge der Indextermen. 5. Rückgabe der Ähnlichsten Dokumente der Vergleichsklasse. 2.7 UML Use Cases Nun drei UML Use Cases zur Veranschaulichung der Anwendungsfälle 4 bis 6 und 10: Abbildung 1 - Anwendungsfall 4: Ontologieklasse hinzufügen Abbildung 2 - Anwendungsfall 5: Ontologieklasse bearbeiten 15

16 Abbildung 3 - Anwendungsfall 6: Ontologieklasse löschen Abbildung 4 - Anwendungsfall 10: Suche nach ähnlichem Dokument 2.8 Nichtfunktionale Anforderungen Zu den nichtfunktionalen Anforderungen zählen jene Programmeigenschaften, die sich nicht auf die Kernfunktionen beziehen, jedoch für eine reibungslose, zuverlässige und angenehme Programmbenutzung wichtig sind. Inf-O-Mat klassifiziert die ausgewählten Dateien in akzeptabler Geschwindigkeit und geht sparsam mit den Systemressourcen (insbesondere dem Hauptspeicher) um. Die Darstellung des strukturierten Datenbestandes ist systematisch und übersichtlich, die Bedienung des gesamten Programms einfach und intuitiv. Außerdem bietet Inf-O-Mat eine interne Hilfefunktion an. Fehlermeldungen sind aussagekräftig, und das Programm befindet sich auch nach einem (internen) Programmfehler nicht in einem instabilen Zustand. Auch nach unerwartetem Ausfall des Inf-O-Mat oder der Systemplattform (Absturz, Stromausfall,...) läßt sich das Programm einfach neu starten und ist keiner Daten verlustig gegangen. 16

17 Darüber hinaus läßt sich das gesamte Inf-O-Mat-Programmpaket (samt Datenbank) leicht installieren und bei Bedarf wieder deinstallieren. Es ist wartungsfreundlich und erlaubt durch die Modularisierung auch noch später Änderungen am Programmcode. 2.9 Benutzerschnittstellen Die Bedienung des Systems erfolgt über eine fensterorientierte Oberfläche. Diese wird einem allgemeingültigen Look-and-Feel angepasst, um so dem Benutzer einen leichten und intuitiven Umgang mit dem System zu ermöglichen. Begonnen wird nach Programmstart zunächst mit einem Hauptfenster, aus dem alle weiteren Funktionen des Programms zu erreichen sind. Wichtig ist hier die Darstellung der Ontologie sowie die Anzeige der Dokumente und den zugehörigen Informationen, wie z.b. Metainformationen zu einzelnen Dateien oder eine kurze Beschreibung des Dokuments. Das Fenster könnte etwa wie in Abbildung 5 dargestellt aussehen. Abbildung 5 - Hauptfenster des Inf-O-Mat 2.10 Fehlerverhalten Bezüglich des Fehlerverhalten kann unterschieden werden zwischen Benutzerfehlern und Programmfehlern. Benutzerfehler sind Fehleingaben des Anwenders. Diese werden weitestgehend von der Benutzeroberfläche abgefangen. Inf-O-Mat ist robust und gestattet keine Fehleingaben durch den Benutzer. Programmfehler, die auf falscher Programmierung beruhen, lassen sich bei einem komplexen Programm nie vollständig ausschließen. Folgende Punkte müssen jedoch möglichst immer gewährleistet sein: Das Programm gibt bei jeder Art von Fehler eine aussagekräftige und beschreibende 17

18 Fehlermeldung aus. Das Programm gerät in keinen instabilen Zustand und kann ohne Unterbrechungen weiter genutzt werden. Programmkonsistenz und Datenintegrität werden zu jedem Zeitpunkt gewahrt. Falls ein Programmabsturz eintritt, soll dieser keine negativen Folgen für Programm, Daten und Systemplattform nach sich ziehen Dokumentationsanforderungen Zusammen mit dem Programm werden folgende Dokumente ausgeliefert: Anforderungsdefinition (dieses Dokument) Entwurfsdokument Programmquellcode inkl. Javadoc-HTML-Dateien Testdokumentation Installationsbeschreibung Benutzerhandbuch Wartungsunterlagen Diese Dokumente werden je nach späterem Bedarf in elektronischer Form (PDF) oder in ausgedruckter Form bereitgestellt Zeitliche Aspekte und Auslieferung Das Inf-O-Mat-Programmpaket und die unter Punkt 7 aufgeführten Dokumente müssen bis zum Ende des Sommersemesters 2005 fertiggestellt und ausgeliefert sein. Programmpaket und Dokumente gelten dann als ausgeliefert, wenn eine formelle Abnahme durch alle Betreuer der Projektgruppe stattgefunden hat Abnahmekriterien Das Inf-O-Mat-Programmpaket wird von den Betreuern der Projektgruppe abgenommen, wenn es alle funktional wichtigen Anforderungen bis zum Ende des Sommersemesters 2005 auf zufriedenstellende Weise erfüllt und darüber hinaus alle unter Punkt 7 aufgeführten Dokumente vorliegen Glossar Entität Ding, Gegenstand, Objekt oder Konzept in einer Ontologie, das in Relation zu anderen Entitäten steht. Eine Entität ist eindeutig identifizierbar. GUI (Abk. für engl. Graphical User Interface ) deutsch: grafische Benutzungsoberfläche. 18

19 HTML (Abk. für engl. Hypertext Markup Language ) Vom W3C spezifizierte Seitenbeschreibungssprache und Dokumentenformat für Hypertext-Dokumente im World Wide Web. Java 2 Version/Plattform 2 der C++-ähnlichen objektorientierten Programmiersprache Java. In Java geschriebene Programme sind aufgrund der Java-spezifischen Architektur plattformunabhängig und somit leicht auf andere Systeme zu portieren. Javadoc Durch ein zu Java 2 gehöriges Dienstprogramm halbautomatisch erstellte Dokumentation des Java-Programmcodes. Javadoc-Dokumente liegen im HTML-Format vor. Kategorie siehe Themenklasse. Kategorisierung siehe Klassifikation. Klasse siehe Themenklasse. Klassifikation Zuordnung von Objekten (hier: Dateien) zu definierten Klassen (hier: Themenklassen bzw. Entitäten in einer Ontologie). Ontologie Ein in Bereich der Wissensrepräsentation formal definiertes System (Begriffssystem) von Entitäten (Dingen, Gegenständen, Objekten) und deren Relationen (Beziehungen) zueinander. Zusätzlich existieren in einer Ontologie Regeln, die explizit ausformuliert oder nur implizit vorhanden sein können. PDF (Abk. für engl. Portable Document Format ) Ein von der Firma Adobe entwickelter Dateiund Dokumentenstandard zur Anzeige und zum Ausdruck von Text-/GrafikDokumenten auf unterschiedlichsten Systemumgebungen. Das PDF-Format ist mit dem PostScript-Format verwandt. PlugIn Programmmodul, das zu einem anderen Programm über fest definierte Schnitt-stellen hinzugefügt wird, um den Funktionsumfang dieses Programms zu erweitern. PostScript Imperative Programmiersprache, vorwiegend für die geräteunabhängige Beschreibung von Druckseiten vorgesehen (Seitenbeschreibungssprache). Relation Beziehung zwischen Entitäten in einer Ontologie. Themenklasse Entität in einer Ontologie für ein bestimmtes Thema im Rahmen der Klassifikation. Thesaurus Vokabular (Wortschatz-Sammlung), dessen Begriffe bestimmte Beziehungen zueinander haben (Ober-/Unterbegriffe, Synonyme,...). UML (Abk. für engl. Unified Modeling Language ) Modellierungssprache zur Unterstützung der objektorientierten Analyse, des objektorientierten Entwurfs und der objektorientierten Programmierung. In UML werden grafische Notationen verwendet, um Stukturen, Abläufe und Zusammenhänge darzustellen. 19

20 3 Entwurf Das folgende Kapitel enthält den Entwurf für den Inf-O-Mat. 3.1 Systemziele In diesem Dokument wird die Anforderungsdefinition der Projektgruppe Inf-O-Mat verfeinert und auf formaler Basis umgesetzt. Ziel dieses Entwurfes ist es, für eine Software, die vollautomatisch vom Benutzer vorgegebene Text-Quelldateien Themenklassen zuordnet, die zu Grunde liegenden Teilmodule und deren Zusammenwirken zu spezifizieren. Zum Erstellen der vorzugebenden Themenklassen wird dem Benutzer ein Ontologie-Editor zur Verfügung gestellt, in dem er sowohl die Klassen als auch deren Eigenschaften anlegen kann. Daraus entsteht dann eine Art Netz, welches dann für die Klassifikation genutzt wird. Anhand der Eigenschaften einer Klasse werden die Quelldateien klassifiziert, wobei ein Dokument durchaus auch zu mehreren Klassen gehören kann. Diese Einordnung wird für den Benutzer visualisiert und er kann sich anhand eines Baumes sowohl durch sein Netz als auch durch die darin eingeordneten Dokumente arbeiten. Diese Software wird als Einzelplatz-Lösung erstellt. Sie greift auf eine lokale Datenbank zur Ablage von Meta- und Zwischendaten zu. Zudem wird auf einen weitgehend modularen Aufbau des Systems geachtet, um später eine leichtere Erweiterbarkeit zu gewährleisten. 3.2 Systemarchitektur und Systemkomponenten Übersicht der Systemmodule und deren Schnittstellen: 20

21 Abbildung 6: Kernmodule des Inf-O-Mat Beschreibung: Das System besteht aus sechs Hauptmodulen. Neben der GUI und der Datenbank gibt es vier weitere Module, die die Logik des Systems implementieren: - Datenextraktion - Semantische Analyse - Semantisches Suchen - Ontologie Die Kommunikation zwischen den Modulen wird durch die Steuerungsschicht - den Steuerungsklassen - realisiert. Diesen werden Benutzereingaben von der GUI übergeben, rufen einzelne Module auf und übergeben Zwischenergebnisse an weitere Module, sofern sie in einem spezifischen Anwendungsfall benötigt werden. Zugriffe auf die Datenbank werden ebenfalls von den Steuerungsklassen durchgeführt. Hier wird die Hibernate API als Persistenzschicht verwendet. 3.3 Systemeinsatz und Systemumgebung Inf-O-Mat wird für die Java-2-Plattform entwickelt. Voraussetzung für die Installation und Nutzung des Programms ist ein Rechner mit grafischer Bedienungsoberfläche und installierter JavaLaufzeitumgebung (J2SE Java Runtime Environment, JRE), Version oder höher. Das JRE steht unter für die folgenden Rechnerplattformen zum Herunterladen zur Verfügung: Microsoft Windows 2000, XP und 2003 Server, x86 Linux, x86 (RPM) Solaris, SPARC 21

22 Solaris, x86 Eine JRE für Apple-Rechner kann von bezogen werden. 3.4 Statische Modulbeschreibungen für Fach-, Steuerungs- und GUIKlassen Fachklassen Datenextraktion Das Datenextraktionsmodul extrahiert und bearbeitet Daten, die die Grundlage für alle weiteren Module des Inf-O-Mats bilden. Hauptfunktion der Datenextraktion ist das Extrahieren von Texten und Metadaten aus verschiedenen Dokumentenformaten (z.b. PDF, Doc, TxT). Das Modul ist hierbei prinzipiell für beliebige Datenformate erweiterbar. Jeder extrahierte Text wird innerhalb des Datenextraktionsmoduls außerdem syntaktisch analysiert. Hierzu gehört das Löschen von Stoppwörtern, Bilden des Wortstamms und das Ersetzen von Sonderzeichen. Alle extrahierten und analysierten Daten werden in einem Dokumentenobjekt gesammelt (gespeichert). 22

23 a) Klassendiagramm: Extraktionsklassen Abbildung 7: Klassendiagramm: Klassendiagramm Extraktionsklassen Die Klassen wurden so modelliert, dass immer ein Dokument zur Zeit übergeben wird, die Iteration muss also auf einer höheren Ebene erfolgen. Zwingend notwendig festzustellende Daten: alle Attribute des Documentobjekts Sprache: ein aus zwei lowercase Buchstaben bestehender Ländercode (nach ISO 639), wie er in java.util.locale definiert ist, zur Angabe der Sprache des Dokuments. Dieser Code und daraus resultierende Objekte des Typs java.util.locale werden von anderen Programm Modulen 23

24 (Ontologie und Analyse) genutzt, um die Sprache eindeutig zu identifizieren. Klasse: ExtractionManager Paket: de.wiol.infomat.extraction Beschreibung: Schnittstellenklasse des Extraction Packages, verknüpft Extraktion und syntaktische Analyse, setzt die Informationen zu einem Dokumenten Objekt zusammen und regelt somit den internen Ablauf der Datenextraktion. Somit wird über diese Klasse eine Schnittstelle für die Steuerungsschicht angeboten. Oberklasse: keine Unterklasse: keine Interface: keins Assoziationen: Importiert : Document, AbstractExtraction Attribute: document:zu analysierendes Dokument mit allen Daten extractor: Objekt zur Extraktion von verschiedenen Dokumententypen location: Der Pfad des Dokuments theapp: Referenz auf die Infomat Hauptklasse ExtractionManager(Infomat): Konstruktor zum Initialisieren des Extractionsmanagers. builddocument(): erzeugt für ein Dokument ein Document - Objekt. updatedocument(): aktualisiert die Daten über ein Dokument im Objekt. analyselocationstring(): Bestimmt mittels des übergebenen Location Strings den Pfad, Namen und Datentyp des Dokumentes. extract(): Setzt die Extraktion für entsprechenden Dokumententyp in Gang. analysetext(): Setzt die Analyse für entsprechende Sprache in Bewegung. setsizeanddate(): Methode zum Setzen der Größe und letztes Aktualisierungsdatum. Getter/Setter für Attribute. setdatatypes(): Lädt den aktuellen Datensatz für unterstütze Datentypen aus der Datenbank. setmetadatatypes(): Lädt den aktuellen Datensatz für unterstützte Metadatentypen aus der Datenbank. Klasse: AbstractExtraction Paket: de.wiol.infomat.extraction Beschreibung: Abstrakte Klasse für die Extraction eines Dokumentenobjekt. Hier wird die Struktur 24

25 vorgegeben und für entsprechende und entsprechende Unterklassen für die verschiedenen Dateitypen abgeleitet. Oberklasse: keine Unterklassen: WordExtraction, XMLExtraction, PDFExtraction, HtmlExtraction, SXWExtraction Interface: keins Assoziationen: keine Attribute: path: Pfad des zu extrahierenden Dokuments AbstractExtraction(Document): Initialisieren einer dokumentenspezifischen Extraktion abstract extracttext(): Methode zum extrahieren des puren Textes des Dokumentes abstract extractmetadata(): Methode zum extrahieren der Metadaten des Dokumentes Getter/Setter für Attribute Klasse: XMLExtraction Paket: de.wiol.infomat.extraction Beschreibung: Abgeleitete Klasse zur Extraktion eines XML-Dokumentes. Oberklasse: AbstractExtraction Unterklasse(n): keine Interface: keins Assoziationen: siehe AbstractExtraction Attribute: siehe AbstractExtraction Besitzt die gleichen Attribute wie die abstrakte Oberklasse, nur hat sie noch eine sprachspezifische Erweiterung. siehe AbstractExtraction (implementiert aber nicht getmetadata()), implementiert aber auch: getnodesfromnodelistasstring(): rekursive Funktion zur Konkatenation der Textknoten Klasse: SXWExtraction Paket: de.wiol.infomat.extraction Beschreibung: Klasse zur Extraktion von SXW Dokumenten Oberklasse: AbstractClassification Unterklasse(n): keine Interface: keine 25

26 Assoziationen: siehe AbstractExtraction Attribute: Besitzt die gleichen Attribute wie Oberklasse plus einige spezifische Erweiterungen content: Der extrahierte Text file_dir: Infomat Arbeitsverzeichnis work_dir: Temporäres Arbeitsverzeichnis file_vector: Liste, in der die extrahierten Dateien gespeichert werden static BUFFER: Buffer für die Dateiextraktion extracttext(): siehe AbstractExtraction setdirectories(string): Setzt die verschiedenen Verzeichnisse zum arbeiten extractcontent(string): Extrahiert die content.xml aus dem sxw file extractmetadata: Extrahiert die Metadaten eines sxw files extractutils(): Extrahiert die notwendigen Dateien für die Text- und Metadatenextraktion des SXW files Klasse: PDFExtraction Paket: de.wiol.infomat.extraction Beschreibung: Abgeleitete Klasse zur Extraktion von PDF-Dokumenten Oberklasse: AbstractExtraction Unterklasse(n): keine Interface: keins Assoziationen: siehe AbstractExtraction Attribute: siehe AbstractExtraction, implementiert ausserdem: pdf: eine,,in memory Repräsentation der PDF-Datei siehe AbstractExtraction Klasse: HtmlExtraction Paket: de.wiol.infomat.extraction Beschreibung: Abgeleitete Klasse zur Extraktion von HTML-Dokumenten Oberklasse: AbstractExtraction Unterklasse(n): keine Interface: keins Assoziationen: siehe AbstractExtraction Attribute: siehe AbstractExtraction 26

27 siehe AbstractExtraction Klasse: TXTExtraction Paket: de.wiol.infomat.extraction Beschreibung: Abgeleitete Klasse zur Extraktion eines Word-Dokumentes Oberklasse: AbstractExtraction Unterklasse(n): keine Interface: keins Assoziationen: siehe AbstractExtraction Attribute: siehe AbstractExtraction siehe AbstractExtraction Klasse: WordExtraction Paket: de.wiol.infomat.extraction Beschreibung: Abgeleitete Klasse zur Extraktion eines Word-Dokumentes Oberklasse: AbstractExtraction Unterklasse(n): keine Interface: keins Assoziationen: siehe AbstractExtraction Attribute: siehe AbstractExtraction siehe AbstractExtraction 27

28 b) Klassendiagramm: Analyseklassen Abbildung 8: Klassendiagramm: syntaktische Analyse Klassen Klasse: Analyser Paket: de.wiol.infomat.extraction Beschreibung: Abstrakte Klasse für die syntaktische Analyse von Texten, von der jeweils sprachspezifische Ableitungen erzeugt werden, so dass für jede Sprache ein spezifischer Ablauf stattfindet. 28

29 Oberklasse: keine Unterklasse(n): GermanAnalyser, EnglishAnalyser Interface: keins Assoziationen: keine Attribute: text: der analysierte Text (besteht dann nur noch aus Wortstämmen). textarray: der analysierte Text als Array von Wörtern. language: Sprache für die die Klasse zuständig ist. specialcharacterwordshashmap: dient zum cachen von Sonderzeichentabelle. fillwordshashmap: dient zum cachen von Füllwörtertabelle. Analyser(String): Konstruktor zum Initialisieren eines Analysevorgangs für einen Text analyse(): Einzige vom Extractionmanager aufzurufende Methode, regelt den internen Ablauf abstract getlanguage(): Liefert die Sprache als String abstract deletefillwords(): Methode zum Löschen der Füllwörter abstract replacespecialcharacters(): Methode zum Ersetzen bestimmter Spezialzeichen abstract stemmwords(): Methode zur Reduzierung des Textes auf seine Wortstämme islanguageinpercent(): Gibt die Wahrscheinlichkeit zurück, dass der Analyser zu der Sprache passt markendofsentence(): Markiert das Satzende mit dem Zeichen replaceunnecessarycharacters(): Entfernt alle unwichtigen Zeichen buildtext(): Methode zum Zerlegen von Text in Array von Wörtern buildtext(): Methode zum rekonstruieren des Textes aus dem Array Klasse: GermanAnalyser Paket: de.wiol.infomat.extraction Beschreibung: Klasse für die syntaktische Analyse von deutschen Texten Oberklasse: Analyser Unterklasse(n): keine Interface: keins Assoziationen: keine Attribute: siehe Analyser Besitzt die gleichen Methoden wie die abstrakte Oberklasse, nur hat sie noch eine sprachspezifische Erweiterung. 29

30 samplewords(): Methode zur Wortzerlegung von deutschen zusammengesetzten Wörtern Klasse: EnglishAnalyser Paket: de.wiol.infomat.extraction Beschreibung: Klasse für die syntaktische Analyse von englischen Texten Oberklasse: Analyser Unterklasse(n): keine Interface: keins Assoziationen: keine Attribute: siehe Analyser siehe Analyser Klasse: PorterStemmerEn Paket: de.wiol.infomat.extraction Beschreibung: Klasse zur Durchführung des Porter-Stemmer-Algorithmus auf der englischensprache. Gibt bei Eingabe eines Wortes das gestemmte Wort zurück. Besteht aus nur internen Methoden, die den Algorithmus in mehrere Schritte aufteilen und bietet nur nach aussen die Schnittstelle zur Durchführung an einem Wort und gibt mit dieser auch das Ergebnis zurück. Oberklasse: keine Unterklasse(n): keine Interface: keins Assoziationen: keine Attribute: keine Besitzt viele interne Methoden, die den Algorithmus in entsprechende Schritte zerlegt, so dass nach aussen nur eine Schnittstelle angeboten wird: stem(string) Hier wird das übergebene Wort einmal durch den Algorithmus geschickt und als gestemmtes Wort zurückgegeben. Klasse: GermanSampleWords Paket: de.wiol.infomat.extraction Beschreibung: Die Klasse dient zum Zerlegen von zusammengesetzten Wörtern für deutsche Sprache. Oberklasse: keine 30

31 Unterklasse(n): keine Interfaces: keine Assoziationen: keine Attribute: table: Tabelle mit allen Wörtern deutscher Sprache. stemmer: deutscher Stemmer. GermanSampleWords(Hashtable): Konstruktor zum Initialisieren des deutschen Samplers. split(string): Dient zum Zerlegen eines Wortes. split(string[]): Dient zum Zerlegen von mehreren Wörtern. Klasse: GermanStemmer Paket: de.wiol.infomat.extraction Beschreibung: Die Klasse dient zum stemmen von Wörtern für deutsche Sprache. Oberklasse: keine Unterklasse(n): keine Interfaces: keine Assoziationen: keine Attribute: keine Besitzt viele interne Methoden, die den Algorithmus in entsprechende Schritte zerlegt, so dass nach aussen nur eine Schnittstelle angeboten wird. stem(string) Hier wird das übergebene Wort einmal durch den Algorithmus geschickt und als gestemmtes Wort zurückgegeben. 31

32 c) Klassendiagramm:Datenhalterobjekte Abbildung 9: Klassendiagramm: Datenhalterobjekte Klassendiagramm für das Package Data, in dem sich alle Klassen befinden, die Daten aus der Datenbank halten. Klasse: Document Paket: de.wiol.infomat.data Beschreibung: Objekt, dass ein analysiertes Dokumentes repräsentiert. So enthält es alle Daten über ein Dokument. Oberklasse(n): keine 32

33 Unterklasse: keine Assoziationen: Importiert DataType Interface: Persistable Attribute: id: Eine eindeutige ID name: Der Name des Dokument path : Der Pfad des Dokumentes extractiontext: Der extrahierte, reine Text(nicht analysiert,ohne jegliche Metadaten) analysedtext: Der sprachspezifische analysierte Text. extractiondate: Das letzte Extrationsdatum extractionsize: Die extrahierte Größe metadata: Eine List von Metadaten (daher keine Begrenzung vorhanden) classassignments: Eine List von Klassifizierungsdaten terms: Eine List von Schlüsselwortzuordnungen, die das Dokument spezifizieren Document(): leerer Konstruktor Document(DataType): Konstruktor zur Initialisieren eines Dokumentes entsprechenden Typs. Getter/Setter für Attribute ismodified(): Boolescher Wert, der darstellt, ob das Dokument verändert wurde. isanalysed(): Boolescher Wert, der darstellt, ob Dokument analysiert ist und demzufolge nicht mehr analysiert werden muss. exists(): Boolescher Wert, der darstellt, ob das zugehörige File zu einem Dokument noch vorhanden ist setmetadatabytype(string, String): Setzt ein Metadatum mit dem übergebenen Wert, bzw. wenn noch keines dafür vorhanden ist, wird ein neues erzeugt. getmetadatabytype(string):gibt den Wert eines übergebenen Metadatum zurück, sofern verfügbat changeclassassignment(string, String): Ändert den übergebenen alten Namen einer Klassenzuordnung in einen neuen übergebenen Namen. save(): Methode zum Speichern des Objektes Klasse: DataType Paket: de.wiol.infomat.data Beschreibung: Datenhalter für Dokumentdatentypen, speichert ausserdem Pfad des externen Programms zum Öffnen eines Dokuments diesen Typs. Aufgrund der Datenbankspeicherung via Hibernate ist es nötig, allen zu speichernden Typen eine eindeutige ID zuzuweisen. Oberklasse: keine 33

34 Unterklasse(n): keine Assoziationen: keine Interface: Persistable Attribute: id: Eine eindeutige ID name: Name des Datentyps programpath: Pfad des Programms zum Betrachten des Dokuments documents: Liste von Dokumenten DataType(): Konstruktor eines Datentyps Getter/Setter für Attribute Klasse: MetaData Paket: de.wiol.infomat.data Beschreibung: Datenhalter für Metadatenwertzuordnung. Ein Objekt stellt ein Metadatum dar. Oberklasse: keine Unterklasse(n): keine Assoziationen: Importiert: MetaDataType Interface: Persistable Attribute: id: Eine eindeutige ID type: Der Typ des Metadatum value: Der Wert des Metadatum MetaData(): leerer Konstruktor MetaData(MetaDataType, String): Konstruktor mit allen nötigen Variablen Getter/Setter für Attribute equals(): Klassenspezifische Überschreibung von equals() um Objekte aus unterschiedichen Hibernate Sessions auf Gleichheit zu überprüfen hashcode():klassenspezifische Überschreibung von hashcode() um Objekte aus unterschiedichen Hibernate Sessions auf Gleichheit zu überprüfen Klasse: MetaDataType Paket: de.wiol.infomat.data Beschreibung: Datenhalter für Metadatentypen. Hier werden die Typen der vorkommenden 34

35 Metadaten referenziert. Oberklasse: keine Unterklasse(n): keine Assoziationen: keine Interface: Persistable Attribute: id: Eine eindeutige ID name: Der Name des Metadatums metadatas: Das Set von Metadaten, dass alle Metadaten enthält. MetaDataType(): Konstruktor Getter/Setter für Attribute equals(): Klassenspezifische Überschreibung von equals() um Objekte aus unterschiedichen Hibernate Sessions auf Gleichheit zu überprüfen. hashcode():klassenspezifische Ãœberschreibung von hashcode() um Objekte aus unterschiedichen Hibernate Sessions auf Gleichheit zu überprüfen. Klasse: Term Paket: de.wiol.infomat.data Beschreibung: Hier werden gespeicherte Schlüsselwörter mit ihrer vorkommenden Anzahl entsprechend den Dokumenten zugeordnet. Oberklasse: keine Unterklasse: keine Assoziationen: keine Interface: Persistable Attribute: id: Eine eindeutige ID count: Die Zahl der Vorkommnisse in einem Dokument document: Das Dokument zu dem diese Zuordnung gehört keyword: Das zugeordnete Keyword Term():Konstruktor Term(Document, String, long): Konstruktor, der mit dem zugehörigem Dokument, Keyword und vorkommende Anzahl aufgerufen wird Getter/Setter für Attribute equals(): Klassenspezifische Ãœberschreibung von equals() um Objekte aus unterschiedichen 35

36 Hibernate Sessions auf Gleichheit zu überprüfen hashcode():klassenspezifische Ãœberschreibung von hashcode() um Objekte aus unterschiedichen Hibernate Sessions auf Gleichheit zu überprüfen Klasse: ClassAssignment Paket: de.wiol.infomat.data Beschreibung: Mit dieser Klasse wird eine Klassenzuordnung mit zugehörige Daten für ein Dokument gespeichert. Wird einem Dokument eindeutig zugeordnet, indem es in die classassignments Liste des Document Objektes eingefügt wird. Oberklasse: keine Unterklasse(n): keine Assoziationen: keine Interface: Persistable Attribute: id: Eine eindeutige ID ontologyclass: Klasse, in die das Dokument eingeordnet werden soll probability : Die Wahrscheinlichkeit mit der das Dokument in die zugeordnete Klasse passt. ClassAssignment(): Leerer Konstruktor. ClassAssignment(Document, String, float): Konstruktor, der mit dem Dokument, der Klasse und der Wahrscheinlichkeit initialisiert wird Getter/Setter für Attribute Klasse: FileType Paket: de.wiol.infomat.data Beschreibung: Objekte dieser Klasse repräsentieren Dateitypen, wie z.b. HTML. Jeder Dateityp hat mehrere Dateiendungen (.htm,.html, usw.), eine Beschreibung und einen Viewer. Oberklasse: keine Unterklasse(n): keine Assoziationen: keine Interface: Serializable Attribute: description: Beschreibung des Dateityps extensions: Set mit allen Dateiendungen viewername: Name des Viewers 36

37 viewerfile: File Objekt des Viewers FileType(String, Set, String, String, File): Konstruktor, der ein FileType Objekt mit allen notwendigen Informationen erstellt. Getter/Setter für Attribute 37

38 d) Klassendiagramm: Verschiedene Wörtertabellen und Oberklassen Abbildung 10: Klassendiagramm: Datenhaltung Wörterbücher, etc. Klassendiagramme für das Package Dictionaries und dessen Unterpackages, indem sich Klassen befinden, die Daten wie Wörterbücher, Stoppwortlisten oder Sonderzeichenersetzungen aus der Datenbank halten. Klasse: SynSet Paket: de.wiol.infomat.dictionaries Beschreibung: Abstrakte Klasse, welche alle SynSet Objekte der verschiedenen unterstützten Sprachen implementieren müssen. Oberklasse: keine Unterklasse(n): EnglishSynSet, GermanSynSet Assoziationen: keine Interface: Persistable Attribute: id: Eine eindeutige ID words : Liste von Wörtern innerhalb des SynSets. 38 SynSet(): Leerer Konstruktur

39 Getter/Setter für Attribute Klasse: Word Paket: de.wiol.infomat.dictionaries Beschreibung: Abstrakte Klasse, welche alle Word Objekte der verschiedenen unterstützten Sprachen implementieren müssen. Oberklasse: keine Unterklasse: EnglishWord, GermanWord Assoziationen: keine Interface: Persistable Attribute: id: Eine eindeutige ID synonymsets: Liste von SynonymSets, in denen das Wort enthalten ist. Word(): Leerer Konstruktur Getter/Setter für Attribute Klasse: Language Paket: de.wiol.infomat.dictionaries Beschreibung: Objekt für die vom Programm unterstützten Sprachen und deren ISO-Codes Oberklasse: keine Unterklasse(n): keine Assoziationen: keine Interface: Persistable Attribute: id: Eine eindeutige ID name: Name der Sprache iso: ISO Code der Sprache. Language(): Leerer Konstruktor Getter/Setter für Attribute 39

40 Klasse: Fillword Paket: de.wiol.infomat.dictionaries Beschreibung: Objekt um Stoppwörter aus der Datenbank zu halten. Oberklasse: keine Unterklasse: keine Assoziationen: Importiert Language Interface: Persistable Attribute: id: Eine eindeutige ID word: Stoppwort language: Referenz auf die Sprache, zu dem das Stoppwort gehört. Fillword(): Leerer Konstruktur Fillword(Language): Konstruktor der mit einem Sprachobjekt aufgerufen wird Getter/Setter für Attribute Klasse: SpecialCharacter Paket: de.wiol.infomat.dictionaries Beschreibung: Objekt um Sonderzeichen und deren sprachspezifischen ausgeschriebenen Wörter aus der Datenbank zu halten. Oberklasse: keine Unterklasse(n): keine Assoziationen: Importiert Language Interface: Persistable Attribute: id: Eine eindeutige ID character: Symbol des Sonderzeichens word: Ausgeschriebenes Wort. language: Sprache SpecialCharacter(): Leerer Konstruktor Getter/Setter für Attribute 40

41 e) Klassendiagramm: Deutsches Wörterbuch Abbildung 11: Klassendiagramm: Deutsches Wörterbuch Klasse: GermanSynSet Paket: de.wiol.infomat.dictionaries.german Beschreibung: Objekt für die im deutschen Thesaurus enthaltenen SynonymGruppen aus der Datenbank Oberklasse: SynSet Unterklasse(n): keine Assoziationen: Importiert Subject Interface: Persistable Attribute: distinction: Bezeichnung hidden: checkcount: Getter/Setter für Attribute 41

42 Klasse: GermanWord Paket: de.wiol.infomat.dictionaries.german Beschreibung: Objekt für die im deutschen Thesaurus enthaltenen Wörter aus der Datenbank Oberklasse: Word Unterklasse(n): keine Assoziationen: keine Interface: Persistable Attribute: lookup Getter/Setter für Attribute f) Klassendiagramm: Englisches Wörterbuch Abbildung 12: Klassendiagramm: Englisches Wörterbuch Klasse: EnglishSynSet Paket: de.wiol.infomat.dictionaries.english Beschreibung: Objekt für die im englischen Wörterbuch (WordNet) enthaltenen Synonymgruppen 42

43 Weiterhin sind in dieser Synonymgruppe alle zugejörigen Wörter enthalten. Oberklasse: SynSet Unterklasse(n): keine Assoziationen: keine Interface: Persistable Attribute: gloss: Beschreibung zu dieser Synonymgruppe type: Art der Synonymgruppe (Nomen, Verben, Adjektive, Adverben) Getter/Setter für Attribute Klasse: EnglishWord Paket: de.wiol.infomat.dictionaries.english Beschreibung: Objekt für die im englischen Wörterbuch(WordNet) enthaltenen Wörter. Extra Klasse existiert aus Hibernate Mapping Gründen. Oberklasse: Word Unterklasse(n): keine Assoziationen: keine Interface: Persistable Attribute: siehe Oberklasse siehe Oberklasse Klasse: EnglishWord Paket: de.wiol.infomat.dictionaries.english Beschreibung: Objekt für die im englischen Wörterbuch (WordNet) enthaltenen Wörter. Oberklasse: keine Unterklasse(n): keine Assoziationen: keine Interface: Persistable Attribute: 43

44 Long id: Eine eindeutige ID String word: Wort List synonymsets: Liste der Synonymgruppen, die dieses Wort enthalten Getter/Setter für Attribute 44

45 4.1.2 Semantische Analyse Die semantische Analyse umfasst die drei Teile Fassade, Analyseteil und Klassifikationsteil. Die Klasse SemanticAnalysis bildet die Fassade. Die Dienste der semantischen Analyse werden nur über Methoden dieser Klasse in Anspruch genommen. Der Analyseteil besteht aus der Klasse Analysis. Objekte dieser Klasse analysieren Dokumente, indem sie die Häufigkeiten von Wörtern feststellen, Synonyme finden und letztendlich eine Wortstatistik erstellen. Im Klassifikationsteil stehen mehrere Klassifikationsalgorithmen zur Verfügung. Jeder Algorithmus befindet sich in einer eigenen Klasse, die von der Klasse AbstractClassification erbt. Diese abstrakte Klasse erzeugt dynamisch mittels Java Reflection eine konkrete Algorithmusklasse (Klassifikations-Klasse) mit der Methode getinstance(). Die Verwaltung über den Klassifikationsteil übernimmt die Klasse ClassificationManager. Es sind mehrere Klassifikationsalgorithmen implementiert: die einfache-klassifikation, Schlagwörter-Klassifikation und die Bayes-Klassifikation. Bei der Schlagwort-Klassifikation werden häufige Begriffe eines Dokuments als charakterisierende Schlagwörter gewählt und mit Begriffen in der Ontologie verglichen, um das Dokument schließlich Klassen der Ontologie zuordnen zu können. Die Bayes-Klassifikation verfolgt einen wahrscheinlichkeitsbasierten Ansatz, bei dem Ähnlichkeiten zu bereits klassifizierten Dokumenten ermittelt werden und neue Klassifikationen anhand dieser Ähnlichkeiten erfolgen. Für Testzwecke gibt es zusätzlich noch die SimpleClassification, welche jedoch nicht vom letztendlich Benutzer des Programmes anwählbar ist. 45

46 Klassendiagramm: de.wiol.infomat.analysis Abbildung 13: Klassendiagramm: Package analysis 46

47 Abb. Klassendiagramm: Klassendiagramm Extraktionsklassen auf Seite 23 zeigt die Klassen der semantischen Analyse. In dieses Klassendiagramm wurden außerdem die drei für dieses Programmmodul wichtigen Klassen Document, ClassAssignment und OntologyManager zur Verdeutlichung der Beziehungen eingefügt. Das für die Bayes-Klassifikation typische Lernen ( Training ) geschieht über die Zuordnung von Dokumenten zu Ontologieklassen über die Klasse ClassAssignment. In dieser Klasse wird auch ein Wahrscheinlichkeitswert für die jeweilige Zuordnung abgelegt. Darüber hinaus verfügt jedes Dokument über ein entsprechende Wort-/Begriffsliste. Weitere Details werden während der Implementierung festgelegt. Die Bayes-Klassifikation wird in einer naiven, einfachen Variante selbst implementiert. Klasse: SemanticAnalyis Paket: de.wiol.infomat.analysis Beschreibung: Fassade/Manager der Semantischen Analyse. Oberklasse: keine Unterklasse(n): keine Interfaces: keine Assoziationen: Referenz auf die Hauptklasse sowie auf den ClassificationManager. Attribute: theapp: Referenz auf die Hauptklasse. classificationmanager: Referenz auf den ClassificationManager. abort: Wenn der Benutzer die Klassifikationsprozesse abgebrochen hat, dann wird true eingesetzt. germandata: Deutsche Trainingsdaten steht für BayesClassification. englishdata: Englische Trainingsdaten steht für BayesClassification. germanupdate: Wird benötigt, wenn die deutschen Trainingsdaten aktualisiert werden sollen. englishgupdate: Wird benötigt, wenn die englischen Trainingsdaten aktualisiert werden sollen. SemanticAnalysis(): Der Konstruktor. init(): Initialisiert die semantische Analyse. Überprüft ob die MetaClassification von Dokumenten eingesetzt werden soll, wenn die Antwort true ist, dann wird die MetaClassfication initialisiert. Initialisierung von TrainingDataBuilder. gettrainingdata(string): Liefert die zugehörigen Trainingsdaten einer gegebenen Sprache zurück. settrainingdata(string,corpus): Setzt die Trainingsdaten einer gegebenen Sprache. isabort(): Liefert true zurück, wenn ein Klassifikation abgebrochen werden soll. setabort(boolean): Setzt true, wenn eine Klassifikation abgebrochen werden soll. 47

48 isenglishupdate(): :Liefert ein boolean zurück, wenn die englische Trainingsdaten aktualisiert werden sollen. setenglishupdate(): Setzt true, wenn die englische Trainingsdaten aktualisiert werden sollen. isgermanupdate(): Liefert ein boolean zurück, wenn die deutsche Trainingsdaten aktualisiert werden sollen. setgermanupdate(): Setzt true, wenn die deutsche Trainingsdaten aktualisiert werden sollen. startclassification(document): Startet die Klassifikation eines übergebenen Dokuments. Diese Methode benötigt keinen Rückgabewert, da auf einer Referenz des Dokuments gearbeitet wird.. Klasse: ClassificationManager Paket: de.wiol.infomat.analysis Beschreibung: Der ClassificationManager überprüft bei einem übergebenen Dokument zunächst, ob dieses bereits analysiert worden ist. Falls nein, erzeugt er ein neues Analysis-Objekt, um es von diesem analysierten zu lassen. Danach besorgt er sich über die Klasse AbstractClassification eine Instanz einer konkreten Klassifizierungsklasse (Algorithmusklasse; z. B. KeywordClassification), um das Dokument von ihr klassifizieren zu lassen. Oberklasse: keine Unterklasse(n): keine Interfaces: keine Assoziationen: Referenz auf ein Analysis-Objekt und auf eine konkretes AbstractClassification-Objekt. Außerdem Referenz auf die Hauptklasse Infomat. Attribute: theapp: Referenz auf die Hauptklasse. analysis: Referenz auf ein Analysis-Objekt, wenn das übergebene Dokument analysiert werden muss. classification: Referenz auf eine konkrete Klassifikationsklasse (Algorithmusklasse) vom Typ AbstractClassification. Diese konkrete Klassifikationsklasse beinhaltet den Klassifikationsalgorithmus. metaclassification: Steht für die Auswahl einer Klassifikationsmethode (KeywordClassification oder BayesKlassification). classificationmanager(): Der Konstruktor. startclassification(document): Startet die Klassifikation eines übergebenen Dokuments. Diese Methode benötigt keinen Rückgabewert, da auf einer Referenz des Dokuments gearbeitet wird.. Klasse: Analysis 48

49 Paket: de.wiol.infomat.analysis Beschreibung: Ein Objekt dieser Klasse analysiert ein Dokument, indem es eine Statistik über die darin vorkommenden Wörter erstellt und diese Statistik in Tabellenform im Dokument ablegt. Oberklasse: keine Unterklasse(n): keine Interfaces: keine Assoziationen: Referenz auf das zu analysierende Dokument. Referenz auf die Hauptklasse. Attribute: theapp: Referenz auf die Hauptklasse. document: Das zu analysierende Objekt. Analysis(): Der Konstruktor. setdocument(document): Úbergibt das zu analysierende Dokument. Analyse(): Startet die Analyse. Diese Methode benötigt keinen Rückgabewert, da auf einer Referenz des Dokuments gearbeitet wird. In dieser Methode wird auf dem Text eines Dokument gearbeitet, dabei werden alle Wörter eines Dokumentes gezählt und in einem List gespeichert. isfound(string,hashtable): Liefert ein Wert von Type boolean zurück. Es wird überprüft, ob das gesuchte Wort in Hashtable existiert ist. getmaximalquantity (Hashtable): Liefert den maximalen Wert innerhalb von Hashtable zurück.. Klasse: AbstractClassification (abstrakt) Paket: de.wiol.infomat.analysis Beschreibung: Abstrakte Klasse, von der die konkreten Algorithmusklassen (Klassifikationsklassen) erben. Darüber hinaus bietet sie eine Factory-Methode zur Erzeugung einer konkreten Algorithmusklasse (Klassifikationkasse) an. Oberklasse: keine Unterklasse(n): SimpleClassification, KeywordClassification, BayesClassification Interfaces: keine Assoziationen: Referenzen auf das zu klassifizierende Dokument, auf die konkrete Algorithmusklasse, auf den OntologyManager und auf die Hauptklasse. Attribute: theapp: Referenz auf die Hauptklasse. classification: Referenz auf die konkrete Algorithmusklasse. ontologymanager: Referenz auf den OntologyManager. 49

50 document: Referenz auf die Document Klasse. classificationclassidentifier: Steht um die Klassifikationsmethode zu identifizieren wie z.b. KeywordClassification oder BayesClassification. getinstance(string): Erzeugt eine konkrete Algorithmusklasse (Klassifikationsklasse) und gibt diese zurück. Welche Algorithmusklasse erzeugt wird, hängt von den Einstellungen im Objekt der Klasse InfomatPreferences ab. Der bevorzugte Klassenname kann von diesem Objekt mit getclassificationclasspath() abgefragt werden. Die Algorithmusklasse wird dynamisch mit Java Reflection erzeugt. setontologymanager(owlontologymanager) : Setzt den OntologyManager setdocument(document): Setzt das zu klassifizierende Dokument ein. classify(): Startet die Klassifizierung. Diese Methode benötigt keine Rückgabewerte, da auf einer Referenz des Dokuments gearbeitet wird Auf die Beschreibung der Unterklassen wird hier verzichtet, da ihr Verhalten und die Schnittstellen nach außen in der Oberklasse AbstractClassification festgelegt sind. Die Unterklassen unterscheiden sich nur intern in der Art des Klassifikationsvorgangs. Klasse: SimpleClassification Paket: package de.wiol.infomat.analysis; Beschreibung: Dieser Klasse wird nur für Testzwecke hergestellt. In dieser Klasse werden die Schlüsselwörter eines Dokuments mit den Ontologieklassen verglichen, dadurch werden einfache Statistiken Methoden durchgeführt, um die zugehörigen Ontologieklassen jedes Dokumentes rauszufinden. Oberklasse: AbstractClassification Unterklasse(n): keine Interfaces: keine Assoziationen: keine classify(): Hier werden die Dokumente und die zugehörigen Ontlogieklassen und ihre Häufigkeiten zusammengefasst. Danach wird die Ergebnisse mit dem Hilfe der Klasse ClassAssignment, die Klassenzuordnung und ihre zugehörige Daten in die Datenbank gespeichert. getontologyclass(string): Liefert den zugehörigen Ontologieklassname zurück. isfound(string, Hashtable): Liefert boolean zurück. In dieser Methode wird überprüft, ob die Ontologieklassname in der Hashtable existiert getmaximalquantity(hashtable): Liefert den maximalen Wert innerhalb von Hashtable zurück. gettotalquantity(): Liefert die gesamte Anzahl der vorhandenen Ontologieklassen zurück. Es wird aufgerufen, um die Häufigkeiten einer Ontologieklasse zuberechnen.. 50

51 Klasse: KeywordClassification Paket: package de.wiol.infomat.analysis; Beschreibung: In dieser Klasse werden die häufigsten Begriffe eines Dokuments als charakterisierende Schlagwörter gewählt und mit den Begriffen in der Ontologie verglichen, um das Dokument schließlich Klassen der Ontologie zuordnen zu können. Außerdem werden die Synonyme jedes Schlagwortes betrachtet. Oberklasse: AbstractClassification Unterklasse(n): keine Interfaces: keine Assoziationen: keine Attribute: classassignments: Repräsentiert die Liste von ClassAssignment. keywords : Schlüsselwörter liste. classtableobjects: Enthält Ontologie Klassen und ihre zugehörige Anzahl maxcount: Ist ein Zähler, zählt die Vorhanden Wörter in einer Liste. termcount: Repräsentiert die nötigen Terms für die Klassifikation. LOWESTPROBABILITY: Repräsentiert die niedrigste Wahrscheinlichkeit, die für die Klassifikation nötig ist. WEIGHTFORSUPERCLASS:Rrepräsentiert die Gewichtung für die Oberklasse. local: Die Sprache eines Dokument keywordclassification(): Der Konstroktur. createkeywordlist(): In dieser Methode werden die Synonyme aller Schlüsselwörter aufgerufen, einschließlich werden neue Statistiken durchgeführt, und die Anzahl der Schlüsselwörter werden unter Umstände erhöht. getsynonyms(string): In dieser Methode werden die Synonyme (set) jedes Schlüsselworts aufgerufen. createclasstable(): In dieser Methode werden die zugehörigen Ontologieklassen von Schlüsselwörter durchsucht, anschließlich wird in eine Liste mit der (Ontolgieklasse,Anzahl) bzw. ClassTableObejcts-list eingetragen. searchforontologyclasses(string, Term ): Diese Methode sucht nach Ontologieklassen, ruft die updateclasstableobjects und searchforconnectedobjectsmethode Methoden, um die ClassTableObjectsliste zu aktualisieren. searchforconnectedobjects(owlontologyclass, Term): Diese Methode sucht nach verbundenen Objekte für eine Ontologieklasse und ruft die Update-Methode für die ClassTableObjectsliste. updateclasstableobjects(owlontologyclass, Term, double): Diese Methode aktualisiert die ClassTableObjectsliste mit der Ontologie Klassen, dabei werden die Quantität der Terms und die Gewichtung aktualisiert. 51

52 getontologyclasslist(string): Diese Methode holt die Ontologyklassenliste für ein spezifisches Schlüsselwort. purgeclasstableobjects(): Diese Methode ruft die updatehierarchy Methode, um nach sub- und superclasses zu suchen. Klassen werden entfernt, deren Wahrscheinlichkeit unterhalb der niedrigsten Wahrscheinlichkeit ist. updatehierarchy(owlontologyclass): Diese Methode sucht nach Oberklassen und Unterklassen in der ClassTableObjectsliste. Wenn eine Unterklasse gefunden ist, werden die Oberklassen gelöscht und die Quantität der Unterklasse aktualisiert. getontologyclass(string): Liefert den zugehörigen Ontologieklassennamen. createclassassignments(): Diese Methode aktualisiert die alten Einträge in der Classassignments Klasse und fügt neue Klassen ein. classify(): Die Hauptmethode der KeywordClassification, geerbt von AbstractClassification. Hier wird der Ablauf der Klassifikation gesteuert, in dem die Methoden createkeywordlist(), createclasstable(), purgeclasstableobjects() und createclassassignments() in dieser Reihenfolge aufgerufen werden.. Klasse: BayesClassification Paket: package de.wiol.infomat.analysis; Beschreibung: Die Bayes-Klassifikation verfolgt einen wahrscheinlichkeitsbasierten Ansatz, bei dem Ähnlichkeiten zu bereits klassifizierten Dokumenten ermittelt werden. Die Dokumente werden am Anfang mit Hilfe von Keyword-Klassifikation klassifiziert, die als Trainingsdaten für die BayesKlassifikation gelten. Für die Implementierung der Bayes-Klassifikation wird die judge-api verwendet. Oberklasse: AbstractClassification Unterklasse(n): keine Interfaces: keine Assoziationen: keine Attribute: corpus: Steht für die Speicherung von Trainingsdaten. wird in der Klasse SemantikAnalysis initialisiert. BayesClassification(): Der Konstruktur classify(): Die Hauptmethode des BayesClassfication. Sie klassifiziert die neuen Dokumente anhand von der Trainingsdaten im Corpus. classifydocument(): Diese Methode klassifiziert das neuen-/existierenden Dokumente anhand der Trainingsdaten im Corpus. 52

53 Klasse: MetaClassification Paket: package de.wiol.infomat.analysis; Beschreibung: Die MetaClassification Klasse steht für die Auswahl einer geeigneten Klassifikationsmethode. Mit Hilfe von MetaClassification Klasse werden die bestehende ClassAssignments analysiert und mit der Ontologie Klassen verglichen und die Klassifikationsmethode ausgewählt. Oberklasse: keine Unterklasse(n): keine Interfaces: keine Assoziationen: keine Attribute: ca: Speichert die ClassAssignment Objekte, steht für das Vergleichen mit den Ontologieklassen. cahelp: Steht für das Vergleichen mit den Ontologieklassen. owloc: Steht für das Vergleichen zwischen Ontologieklassen mit den ClassAssignments. classassignmentsfound: Speichert eine Liste mit den gefundenen ClassAssignments. Nachdem vergleichen mit der Ontologie Klassen. language: steht für die Sprache eines Dokument. MetaClassification(): der Konstruktor. perform(string): Entscheidet, mit welcher Klassifikationsmethode ein Dokument Klassifiziert werden soll. anlyseclassassignment(): Liefert ein boolean zurück. Alle benutzte Klassen werden überprüft, ob sie mindestens drei klassifizierte Dokumente mit über 50% Wahrscheinlichkeit enthalten. compareontologyclasseswithclassassignment(): Liefert ein boolean zurück. Es wird hier geprüft, ob alle Ontologieklassen benutzt bzw. ob alle Ontologieklassen mindesten ein klassifizierte Dokument enthalten sind. setkeywordclassification(string): Setzt die Keyword Klassifikation als Klassifikationsidentität in InfomatPreferences, dabei wird die Sprache eines Dokumentes berücksichtigt. setbyesclassification(string): Setzt die Bayes Klassifikation als Klassifikationsidentität in InfomatPreferences, dabei word die Sprache eines Dokumentes berücksichtigt. 53

54 3.4.3 Semantische Suche Grundkonzepte (Dokumenten, Vektoren und Wahrscheinlichkeiten) Zuerst soll hier geklärt werden, wie im Folgenden die Begriffe Dokument und Vektor zusammenhängen. Ein Dokument besteht aus einem Text sowie einer Menge von Metadaten zu diesem Text. Ein Metadatum könnte etwa der Autor dieses Textes sein oder sein Entstehungsjahr, aber auch sein Dateiformat oder Ähnliches. Insbesondere zählen zu diesen Metadaten auch die Daten, die aussagen, zu wieviel Prozent dieses Dokument in eine bestimmte Klasse gehört. So könnte ein Dokument zum Beispiel zu 60% in einer Klasse Sport sein, aber nur zu 10% in einer Klasse Wissenschaft. Wenn man nun alle diese Zugehörigkeitswerte als Zahlen zwischen 1 und 0 auffasst, wobei 100% einer 1 und 0% einer 0 entspricht, und diese Zahlen ordnet, so erhält man einen Vektor, welcher dieses Dokument im Groben beschreibt. Ein zu diesem Dokument ähnliches anderes Dokument stimmt mit diesem in möglichst vielen Zugehörigkeitswerten überein, ein verschiedenes in möglichst wenigen. Da sich zwischen zwei Vektoren eine Distanz berechnen lässt, ist auch die Ähnlichkeit zwischen zwei Vektoren eindeutig bestimmbar. Diese Distanz wird im Folgenden auf einen Wert zwischen 0 und 1 normiert und dann deren reziproker Wert berechnet, so dass die 1 eine absolute Übereinstimmung der beiden Vektoren darstellen soll und die 0 eine maximale Unterscheidung. Dieser neue Wert soll im Folgenden die Wahrscheinlichkeit dieses Dokumentes genannt werden. Somit ist jedes Dokument mit einer Wahrscheinlichkeit zwischen 0 und 1 mit jedem anderen identisch bzw. ist mit einer Wahrscheinlichkeit zwischen 0 und 1 das gewünschte Suchergebnis. Klassendiagramm: de.wiol.infomat.search Hauptklassen: Abbildung 14: Klassendiagramm(Beziehungen): Semantische Suche 54

55 Klasse: SemanticSearch Paket: de.wiol.infomat.search Beschreibung: Diese Klasse stellt die Hauptklasse des Suchmoduls dar. Wenn auf Suchfunktionen Zugriff genommen wird, wird diese Klasse benutzt. Oberklasse: keine Unterklasse: keine Interfaces: keine Attribute: analyser: Ein QueryAnalyser Objekt, es wird benutzt um übergebene Strings zu analysieren (Worstammzerlegung usw.) parser: Ein Parser Objekt um übergebene Kommandos in Queries umzuwandeln. running: Ein Wahrheitswert, der Wahr ist, wenn dieser Thread ausgeführt wird. search(query): Durchsucht die Datenbank nach der Spezifikation durch die Query und gibt die Ergebnisse als eine Liste von Hits zurück. search(string): Wandelt den übergebenen String in eine Query um und sucht nach ihr. performsearch(string): Wandelt den übergebenen String in eine Query um (genau wie search (String)) und sucht nach ihr. Die Ergebnisse werden hierbei als Event zurückgesendet. Es werden ebenfalls die geschätzte Zeit für diese Query errechnet und als Event gesendet. addanalyser(de.wiol.infomat.extraction.analyser): Fügt einen Analyser zu diesem Modul hinzu. Die Methoden des Analysers werden im Folgenden zur Analyse von Suchanfragen benutzt. run(): startet diese Klasse als Thread isrunning(): liefert True zurück, falls die Instanz dieser Klasse ein laufender Thread ist stoprunning(): beendet den Thread Ergänzende Beschreibungen: Nachdem diese Klasse instanziiert wurde, stehen dem Benutzer, oder den auf dieses Modul zugreifenden Klassen, im wesentlichen drei öffentliche Methoden zur Verfügung. Zwei Methoden tragen den Namen search und unterscheiden sich in den Parametern, mit denen sie aufgerufen werden. Im einen Fall benötigt die Methode einen Parameter vom Typ String, im anderen einen vom Typ Query. Abgesehen davon bewirken beide Methoden das gleiche. Sie suchen nämlich entsprechend der Suchdefinition durch die Parameter eine Menge von Dokumenten aus der Datenbank und geben sie in Form einer Liste von Hit -Objekten zurück. Die dritte Methode mit dem Namen PerformSearch verhält sich tendenziell gleich, sie gibt nur die Suchergebnisse nicht direkt zurück, sondern sendet sie als ein Event an den EventManager. Sie errechnet auch die geschätzte Zeit für die Abarbeitung der Query und sendet diese ebenfalls als Event. Des weiteren stellt diese Klasse die zentralen Methoden zum Zugriff auf die Persistenzschicht für die anderen Klassen dieses Moduls zur Verfügung. Die Methoden getdocument(), searchkeyword() und fieldsearch() sollten einfache Datenbankzugriffe sein, die Methoden zum Vektor suchen sollten entweder den übergebenen Vektor mit allen anderen Vektoren in der Datenbank vergleichen und die Distanz bestimmen oder auf (gegebenenfalls) in der Datenbank implementierten Methoden für diesen Zweck zurückgreifen. Des weiteren stellt dieses Modul auch noch Methoden zum Suchen 55

56 nach Klassen, Dateinamen, Dateipfaden und Extraktionsdaten zur Verfügung. Klasse: Hit Paket: de.wiol.infomat.search Beschreibung: Diese Klasse stellt einen Treffer nach einer Suchanfrage dar. Ein Treffer besteht aus einem Dokument und einer Wahrscheinlichkeit, mit der dieses Dokument der Suchanfrage entspricht. Oberklasse: keine Unterklasse: keine Interfaces: keine Attribute: document: Das gefundene Dokument probability: Die Wahrscheinlichkeit für dieses Dokument. cause: Der Grund, warum dieses Dokument ein Treffer ist. extractiondate: Das Extraktionsdatum des Dokumentes. name: Der Dateiname des Dokumentes path: Der Pfad, aus dem das Dokument extrahiert wurde. categories: Die Namen der Klassen, in die dieses Dokument eingeordnet wurde getdocument(): liefert das Dokument zurück. getprobability(): liefert die Wahrscheinlichkeit für dieses Dokument zurück. getcause(): liefert den Grund für diesen Treffer zurück. getextractiondate(): liefert das Extraktionsdatum dieses Dokumentes zurück. getname(): liefert den Dateinamen dieses Dokumentes zurück. getpath(): liefert den Pfad zurück, aus dem dieses Dokument extrahiert wurde. getcategories(): liefert alle Namen der Klassen zurück, in die dieses Dokument eingeordnet wurde. getcategory(): liefert die wahrscheinlichste Klasse zurück, in die dieses Dokument eingeordnet wurde. Ergänzende Beschreibungen: Die Klasse Hit besteht also aus einem Dokument und einer Wahrscheinlichkeit für dieses Dokument. Demnach könnte man diese Klasse als eine Fuzzy-Variable ansehen. So eine Variable ist ein geordnetes Paar bestehend aus einer Variable, die Element einer festen Menge ist (ein Dokument aus der Menge aller gespeicherten Dokumente) und einer Wahrscheinlichkeit zwischen 1 und 0. Eine Menge von Fuzzy-Variablen ist eine Fuzzy-Menge und die Wahrscheinlichkeit jedes Elementes dieser Menge gibt an, zu welchem Grad dieses Element zu dieser Menge gehört. So ist also eine Liste von Hit-Objekten eine Fuzzy-Menge. Daher lassen sich Fuzzy-Mengen Operationen wie Vereinigung, Durchschnitt und Komplement auf diesen Listen anwenden. Diese 56

57 Eigenschaft wird später bei den booleschen Queries eingesetzt. Klasse: HitList Paket: de.wiol.infomat.search Beschreibung: Diese Klasse stellt eine Liste von Hits dar. Sie erweitert eine LinkedList um einige Methoden wie etwa das Sortieren ihrer Elemente nach bestimmten Attributen. Oberklasse: java.util.linkedlist Unterklasse: keine Interfaces: java.util.list Attribute: reference: Die Referenz dieser HitList (Das Kommando, welches an das Suchmodul gegeben wurde und dann dieser HitList erschaffen hat) gethit(int i): Liefert den i-ten Hit zurück sethit(int i,hit hit): Setzt den i-ten Hit auf hit getprobability(): Liefert die Wahrscheinlichkeit des i-ten Hits zurück. setprobabilityforall(double): Setzt die Wahrscheinlichkeit aller Hits dieser Liste auf den Wert von probability setcauseforall(string): setzt den Grund für alle Hits auf den Wert von cause. issortedby(int): Liefert TRUE zurück, falls diese Liste nach dem angegebenen Sortpattern sortiert ist. Einsetzbare Werte hierfür sind HitList.UNSORTED für unsortiert, HitList.BY_NAME für nach Namen sortiert, HitList.BY_ID für nach ID sortiert und HitList.BY_PROBABILITY für nach Wahrscheinlichkeit der einzelnen Hit-Objekte sortiert. sortbyid(): Sortiert diese Liste nach den Ids der Dokumente in den Hit-Objekten (kleinste ID zuerst) sortbyname(): Sortiert diese Liste nach den Namen der Documents in den Hit-Objekten sortbyprobability(): Sortiert diese Liste nach den Wahrscheinlichkeiten der Hits. translatecategories(locale): Übersetzt die Namen der einzelnen Kategorien in die entsprechende Sprache 57

58 Query Klassen: Abbildung 15: Klassendiagramm: Queries Klasse: Query Paket: de.wiol.infomat.search Beschreibung: Diese abstrakte Klasse ist die Klasse, aus der sich alle anderen Queries ableiten. Eine Query ist eine einzelne Suchanfrage an die SemanticSearch.search() Methode. Oberklasse: keine Unterklassen: alle eigentlichen Query Objekte Interfaces: keine Attribute: type: Der Typ der Methode (Konstante aus Query.Type) keyword: Ein String in dem der zu suchende Begriff gespeichert wird selected: Ein Wahrheitswert, um festzulegen, ob diese Query selektiert ist. perform(semanticsearch): Führt die Query aus. getqueryname(): Liefert den Namen dieser Query zurück. getruntime(): Gibt die geschätzte Laufzeit dieser Query zurück. newquery(int, String, String): Instanziiert eine neue Query des übergebenen Typs. select(): selektiert diese Query. deselect(): deselektiert diese Query; deselectallqueries(): deselektiert diese Query und alle an diese Query übergebenen Queries (siehe UnaryQuery und BooleanQuery) isselected: liefert Wahr zurück, wenn diese Query selektiert ist. iscommand(): liefert Wahr zurück, Falls diese Query ein Kommando ist, und keine unäre oder binäre Anfrage isunary(): liefert wahr zurück, wenn die Query von UnaryQuery abgeleitet ist. 58

59 isbinary(): liefert wahr zurück, wenn die Query von BooleanQuery abgeleitet ist. isroot(): liefert wahr zurück, wenn diese Query vom Typ NullQuery ist. (und damit die Wurzel eines Baumes darstellt) getparameterstring(commanddisplaydata): liefert eine Beschreibung diese Query und ihrer Parameter zurück. draw(commanddisplaydata, GraphicsContent, x, y): (CommandEditor) zeichnet diese Query auf den GraphicsContent an der Position (x, y), benutzt dazu das entsprechende Image aus CommandDisplayData. getswtxsize(commanddisplaydata): (CommandEditor) gibt die Größe in X-Richtung zurück, die das gezeichnete Abbild dieser Query braucht. getswtysize(commanddisplaydata): (CommandEditor) gibt die Größe in Y-Richtung zurück, die das gezeichnete Abbild dieser Query braucht. amiatposition(commanddisplaydata,x,y): (CommandEditor) liefert wahr zurück, wenn diese Query auf die Position (x,y) gezeichnet wurde. getqueryatposition(commanddisplaydata,x,y): (CommandEditor) liefert diese Query oder eine der übergebenen Queries zurück, falls sie an der Position (x,y) gezeichnet wurde, sonst null. setselectedqueryto(query): (CommandEditor) Versucht innerhalb eines Query-Baumes die selektierte Query durch die übergebene zu ersetzen. deleteselectedquery(): (CommandEditor) Versucht innerhalb eines QueryBaumes die selektierte Query zu löschen. Erhält die Integrität des Baumes. insertbeforeselectedquery(query): (CommandEditor) Versucht innerhalb eines QueryBaumes vor der selektierten Query die Übergebene Query einzufügen. (Nur möglich, wenn diese Query unären oder binären Typs ist) Klasse: UnaryQuery Paket: de.wiol.infomat.search Beschreibung: Diese abstrakte Klasse ist die Klasse, aus der sich alle Queries ableiten, die als Parameter eine andere Query haben, also die Ergebnisse einer anderen Query manipulieren. Oberklasse: Query Unterklassen: alle UnaryQueries (NotQuery, LikeQuery, FilterQuery, NullQuery) Interfaces: keine Attribute: query: Die zu manipulierende Query getquery(): liefert die Query zurück. setquery(query): setzt die Query. 59

60 Klasse: BooleanQuery Paket: de.wiol.infomat.search Beschreibung: Diese abstrakte Klasse ist die Klasse, aus der sich alle Queries ableiten, die als Parameter zwei andere Queries haben, also die Ergebnisse zweier Queries miteinander vereinen. Oberklasse: Query Unterklassen: alle Binary Queries (AndQuery, OrQuery) Interfaces: keine Attribute: query1: Die erste Query query2: Die zweite Query getquery1(): liefert die erste Query zurück. setquery1(query): setzt die erste Query. getquery2(): liefert die zweite Query zurück. setquery2(query): setzt die zweite Query. 60

61 Kommandos: Abbildung 16: Klassendiagramm (Vererbung): Kommandos Klasse: FilterQuery Paket: de.wiol.infomat.search Beschreibung: Diese Query kann als Filter für Ergebnisse anderer Queries dienen. Durch Angabe einer oberen und/oder unteren Schranke für Wahrscheinlichkeiten können ungewünschte Ergebnisse entfernt werden. Beispielsweise ist es so möglich, aus einem Ergebnis alle Treffer herauszufiltern, deren Wahrscheinlichkeiten zwischen 40% und 90% liegen. Oberklasse: UnaryQuery Unterklasse: keine Interfaces: keine Attribute lower: Untere Schranke der zu akzeptierenden Ergebnisse (Wert zwischen 0 und 100) upper: Obere Schranke der zu akzeptierenden Ergebnisse (Wert zwischen 0 und 100) getupper(): Liefert die obere Schranke zurück setupper(double): Setzt die obere Schranke getlower(): Liefert die untere Schranke zurück 61

62 setlower(double): Setzt die untere Schranke Klasse: DistanceQuery Paket: de.wiol.infomat.search Beschreibung: Mit dieser Query lassen sich alle Dokumente finden, in denen genau zwei Stichwörter vorkommen. Je dichter sich diese Stichwörter sind (je weniger andere Wörter im Textfluss zwischen ihnen liegen), desto höher ist die Wahrscheinlichkeit dieses Treffers. Oberklasse: Query Unterklasse: keine Interfaces: keine Attribute: word1: Das erste zu suchende Wort word2: Das zweite zu suchende Wort getword1(): Liefert das erste zu suchende Wort zurück. setword1(string): Setzt das erste zu suchende Wort. getword2(): Liefert das zweite zu suchende Wort zurück. setword2(string): Setzt das zweite zu suchende Wort. Klasse: KeywordQuery Paket: de.wiol.infomat.search Beschreibung: Mit dieser Query wird nur nach dem Vorkommen eines einzelnen Stichwortes gesucht. Dieses Stichwort muss über den Konstruktor übergeben werden. Es wird mit den Analyser-Methoden des Semantic-Search Objektes analysiert und modifiziert. Oberklasse: Query Unterklassen: keine Interfaces: keine Attribute und Wie aus Query geerbt. Implementiert Query.perform(). 62

63 Klasse: PhraseQuery Paket: de.wiol.infomat.search Beschreibung: Mit dieser Query wird nur nach dem Vorkommen einer exakten Phrase im Text gesucht. Oberklasse: Query Unterklassen: keine Interfaces: keine Attribute und Wie aus Query geerbt. Implementiert Query.perform(). Klasse: FuzzyQuery Paket: de.wiol.infomat.search Beschreibung: Diese Query ist der KeywordQuery recht ähnlich. Auch hier wird nach dem Vorkommen bestimmter Keywörter gesucht. Nur wird hier zu einem gegebenen Keyword eine Liste von ähnlichen Keywords berechnet, die im Sinne der Levensthein-Distanz dicht an dem gegebenen Wort liegen und nach diesen Wörtern gesucht. Das bedeutet, dass einige Buchstabenersetzungen, -verdrehungen, -additionen und -subtraktionen durchgeführt werden, so dass neue Wörter entstehen, die sich in möglichst wenigen Buchstaben von dem ursprünglichen Keyword unterscheiden. So entsteht eine Art von Rechtschreibkorrektur. Zum Beispiel würde hiermit Lampe gefunden werden, obwohl man nach Lapme gesucht hat, aber es würde ebenfalls noch Lapme, Lempe oder Ähnliches gefunden werden. Oberklasse: Query Unterklasse: keine Interfaces: keine Attribute und Wie aus Query geerbt. Implementiert Query.perform(). Klasse: ClassificationQuery Paket: de.wiol.infomat.search 63

64 Beschreibung: Diese Query sucht nach allen Dokumenten, welche mit einer bestimmten Klassifikationsart klassifiziert wurden (KEYWORD, BAYES oder MANUAL). Oberklasse: Query Unterklasse: keine Interfaces: keine Attribute und Wie aus Query geerbt. Implementiert Query.perform(). Klasse: SimilarQuery Paket: de.wiol.infomat.search Beschreibung: Diese Query sucht nach ähnlichen Dokumenten zu einem gegebenen (Dokumenten)Vektor, einem Dokument, einer HitList oder einer Query. Die Ergebnisse einer HitList oder einer Query werden mittels statistischer Methoden zu einem für diese Ergebnisse zentralen Vektor zusammengefasst. (über Mittelwerte und Varianzen) Oberklasse: Query Unterklassen: keine Interfaces: keine Attribute: id: Die Id eines Dokumentes vector: Der DokumentenVektor eines Dokumentes hitlist: Eine Menge von Dokumenten query: Eine Anfrage, die eine Hitlist erzeugt. getid(): Liefert die ID zurück setid(): Setzt die ID. getvector(): Liefert den Vector zurück. setvector(documentvector): Setzt den Vector gethitlist(): Liefert die HitList zurück. sethitlist(hitlist): Setzt die Hitlist. getquery(): Liefert die Query zurück. setquery(query): Setzt die Query. 64

65 Klasse: ComplexQuery Paket: de.wiol.infomat.search Beschreibung: Diese Query vereint die Ergebnisse einer SimilarKeywordQuery und einer FuzzyQuery, sowie die einer Suche im Titel- und Autor-Feld mittels eines OR Operators, um eine möglichst große Anzahl von verschiedenen Suchmethoden zu vereinen. Falls in Zukunft noch weitere Suchmethoden implementiert werden, so sollen diese ebenfalls in diese Query integriert werden. Oberklasse: Query Unterklasse: keine Interfaces: keine Attribute und Wie aus Query geerbt. Implementiert Query.perform(). Klasse: FieldQuery Paket: de.wiol.infomat.search Beschreibung: Um auch auf den Metadaten der Dokumente suchen zu können, ist diese Query benutzbar. Ein Metadatum ist ein Feld in der Datenbank. Über diese Query lässt sich ein Feld auswählen und dann nach einem Stichwort in diesem Feld suchen. Feld und Stichwort werden durch ein Field-Objekt spezifiziert, welches dieser Query über einen Konstruktor übergeben werden muss. Oberklasse: Query Unterklasse: ClassQuery Interfaces: keine Attribute field: Ein Field Objekt. In ihm werden die Informationen darüber gespeichert, auf welchem Metadatum gesucht werden soll und wonach. getfield(): liefert das Feld zurück. setfield(field): setzt das Feld. 65

66 Klasse: ClassQuery Paket: de.wiol.infomat.search Beschreibung: Da die häufigste Suchanfrage auf Feldern wahrscheinlich eine Suche nach allen Dokumenten einer bestimmten Klasse ist, kann dieses mit dieser Klasse ausgeführt werden. Sie benutzt im wesentlichen die FieldQuery. Der Unterschied zu ihr ist, dass der übergebene Parameter im Konstruktor die ID einer Klasse ist, und kein Field-Objekt. Des weiteren befindet sich in Konstruktor ein Feld um einzustellen, dass der übergebene Klassenname aus einer natürlichen Sprache erst in die interne Repräsentation übersetzt werden muss. (boolean translateclassnames) Oberklasse: FieldQuery Unterklasse: keine Interfaces: keine Attribute und Wie aus FieldQuery geerbt. Implementiert Query.perform(). Klasse: NameQuery Paket: de.wiol.infomat.search Beschreibung: Mit dieser Query lässt sich nach dem Dateinamen von Dokumenten suchen. So lassen sich hiermit etwa alle Dokumente finden, deren Dateiname test.pdf lautet. Es wird hierbei nach allen Dokumenten gesucht, deren Dateiname mit dem übergebenen String endet. Damit findet die Suche nach test.pdf sowohl test.pdf als auch langer_test.pdf oder 2test.pdf. Zusätzlich würde eine Suche nach.pdf alle PDF-Dokumente finden. Oberklasse: Query Unterklasse: keine Interfaces: keine Attribute und Wie aus Query geerbt. Implementiert Query.perform(). Klasse: PathQuery Paket: de.wiol.infomat.search Beschreibung: Hiermit lassen sich alle Dokumente finden, die aus dem übergebenen Pfad extrahiert wurden. So würde eine Suche nach /home/testuser alle Dokumente aus dem Homeverzeichnis von testuser finden, eine Suche nach /home/ alle Dokumente aus allen Homeverzeichnissen. Es ist aber auch möglich, nach /home/te zu suchen, welches dann alle Dokumente aus allen Homeverzeichnissen 66

67 der User beginnend mit te zurückliefert, also zum Beispiel von testuster, aber auch von teo. Oberklasse: Query Unterklasse: keine Interfaces: keine Attribute und Wie aus Query geerbt. Implementiert Query.perform(). Klasse: TimeQuery Paket: de.wiol.infomat.search Beschreibung: Mit dieser Query lassen sich alle Dokumente finden, die während eines bestimmten Zeitraumes extrahiert wurden. Oberklasse: Query Unterklasse: keine Interfaces: keine Attribute starttime: Die Startzeit des Zeitraums. stoptime: Die Endzeit des Zeitraumes. TODAY: Im Konstruktor benutzbarer Schalter um den Zeitraum auf die letzten 24 Stunden zu legen. YESTERDAY: Im Konstruktor benutzbarer Schalter um den Zeitraum auf gestern zu legen. LASTWEEK: Im Konstruktor benutzbarer Schalter um den Zeitraum auf die letzte Woche zu legen. LASTHOUR: Im Konstruktor benutzbarer Schalter um den Zeitraum auf die letzte Stunde zu legen. getstarttime(): Liefert die Startzeit zurück. setstarttime(timestamp): Setzt die Startzeit. getstoptime(): Liefert die Endzeit zurück. setstoptime(timestamp): Setzt die Endzeit. Binäre Anfragen: 67

68 Abbildung 17: Klassendiagramm(Vererbung) :Binäre Anfragen Klasse: AndQuery Paket: de.wiol.infomat.search Beschreibung: Diese Query führt eine Art von booleschem und auf zwei Queries aus. Mit ihr lassen sich die Ergebnisse zweier Queries verbinden. Oberklasse: BooleanQuery Unterklasse: keine Interfaces: keine Attribute und Wie aus BooleanQuery geerbt. Implementiert Query.perform(). Ergänzende Beschreibungen: Die AndQuery leitet sich direkt aus der BooleanQuery ab. Sie verknüpft die Ergebnisse der beiden übergebenen Queries mittels eines Und-Operators. Da sich eine Liste von Ergebnissen hier als eine Fuzzy-Menge auffassen lässt, lassen sich auch Fuzzy-Operationen auf ihnen verwirklichen. Nach [ZADEH,1965] ist eine Und-Verknüpfung auf einer Fuzzy-Menge über den MinimumOperator und den Durchschnitt durchführbar. Dieses bedeutet, dass, falls in beiden Mengen die gleiche Variable mit unterschiedlichem Wahrscheinlichkeitswerten vorkommt, die Variable in der resultierenden Menge den kleineren Wahrscheinlichkeitswert erhält. Falls die Variable nicht in beiden Ursprungsmengen vorkommt, kommt sie nicht in der resultierenden Menge vor. Klasse: OrQuery Paket: de.wiol.infomat.search Beschreibung: Diese Query führt eine Art von booleschen Oder auf zwei Queries aus. Mit ihr lassen sich die Ergebnisse zweier Queries verbinden. Oberklasse: BooleanQuery Unterklasse: keine Interfaces: keine Attribute und Wie aus BooleanQuery geerbt. Implementiert Query.perform(). 68

69 Ergänzende Beschreibungen: Die OrQuery verhält sich fast äquivalent zur oben erwähnten AndQuery. Der Unterschied liegt darin, dass hier nicht der Minimum-Operator verwendet wird, sondern der Maximum-Operator. Falls in beiden Ursprungsmengen die gleiche Variable mit unterschiedlichen Wahrheitswerten vorkommt, so erhält diese Variable in der resultierenden Menge den größeren Wahrheitswert. In dem Fall, dass die Variable nicht in beiden Mengen vorkommt, wird sie einfach in die resultierende Menge übernommen. 69

70 Unäre Anfragen: Abbildung 18: Klassendiagramm(Vererbung) : Unäre Anfragen Klasse: NotQuery Paket: de.wiol.infomat.search Beschreibung: Diese Query führt eine Art von booleschem Nicht auf eine Query aus. Mit ihr lassen sich die Ergebnisse einer Query negieren. Oberklasse: UnaryQuery Unterklasse: keine Interfaces: keine Attribute und Wie aus UnaryQuery geerbt. Implementiert Query.perform(). Ergänzende Beschreibungen: Mit der NotQuery soll genau das gegenteilige Ergebnis einer übergebenen Query erzielt werden. Daher hat diese Query nicht wie die anderen BooleanQuerys einen Konstruktor mit zwei Queries als Parametern, sondern nur mit einer. Das Negieren geschieht hier durch das Berechnen des reziproken Wahrscheinlichkeitswertes. new Probability=(1- old Probability) für alle Dokumente (auch für die, die ursprünglich nicht zu den Treffern zählten. Bei denen war die Wahrscheinlichkeit 0, daher ist die neue Wahrscheinlichkeit 1). Klasse: LikeQuery Paket: de.wiol.infomat.search Beschreibung: Diese Query sucht nach ähnlichen Dokumenten zu den Ergebnissen einer anderen Query. Hierzu wird die Query ausgeführt und zu den Ergebnissen über Mittelwerte und Varianzen eine Art von 70

71 zentralem Dokument berechnet, welches die Ergebnisse am Besten beschreibt. Dann werden hierzu ähnliche Dokumente gesucht. Dieses wäre auch mit der SimilarQuery möglich, aber da die SimilarQuery ein Kommando und die LikeQuery ein unärer Ausdruck sein soll, wird diese Funktionalität hier ein zweites Mal in anderer Form angeboten. Oberklasse: UnaryQuery Unterklasse: keine Interfaces: keine Attribute und Wie aus UnaryQuery geerbt. Implementiert Query.perform(). Klasse: ProbabilityChangerQuery Paket: de.wiol.infomat.search Beschreibung: Mit dieser Query soll es möglich sein, die Wahrscheinlichkeitswerte anderer Queries zu verändern. Zum einen sollte man hiermit die Wahrscheinlichkeiten aller durch eine andere Suchanfrage erzielten Treffer nachträglich auf einen bestimmten Wert festlegen können, zum anderen sollte man die Wahrscheinlichkeiten normalisieren können. Normalisieren bedeutet hier, dass dass Intervall der erzielten Wahrscheinlichkeiten auf das Intervall [0...1] abgebildet wird. Oberklasse: UnaryQuery Unterklasse: keine Interfaces: keine Attribute und Wie aus UnaryQuery geerbt. Implementiert Query.perform(). Klasse: TrueQuery Paket: de.wiol.infomat.search Beschreibung: Diese Query liefert alle(!) Dokumente mit der Wahrscheinlichkeit 1 zurück. Oberklasse: Query Unterklasse: keine Interfaces: keine Attribute und Wie aus Query geerbt. Implementiert Query.perform(). 71

72 Klasse: FalseQuery Paket: de.wiol.infomat.search Beschreibung: Diese Query liefert eine leere Hitliste zurück. Oberklasse: Query Unterklasse: keine Interfaces: keine Attribute und Wie aus Query geerbt. Implementiert Query.perform(). Hilfsklassen: Klasse: Field Paket: de.wiol.infomat.search Beschreibung: Diese Klasse repräsentiert einen Parameter für eine Fieldquery. Sie hat zwei Attribute sowie Getter und Setter Methoden für diese. Oberklasse: keine Unterklasse: keine Interfaces: keine Attribute: type: der Typ des Metadatums auf dem zu suchen ist (etwa Autor oder Titel) value: der Wert nach dem zu suchen ist gettype(): Liefert den Typ dieses Feldes zurück. settype(string): setzt den Typ dieses Feldes. getvalue(): Liefert den Wert dieses Feldes zurück. setvalue(string): setzt den Wert dieses Feldes. 72

73 Klasse: QueryAnalyser Paket: de.wiol.infomat.search Beschreibung: Diese Klasse kann mehrere de.wiol.infomat.extraction.analyser aufnehmen und sie nacheinander abarbeiten. Sie wird von der Analyse() Methode der Klasse SemanticSearch verwendet, um eine Eingabe in dieselben Stichwörter zu zerlegen. Diese Klasse soll an einem übergebenen String dieselben syntaktischen und semantischen Veränderungen durchführen, wie vom Datenextraktions- und Semantische Analyse-Modul an allen analysierten Dokumenten durchgeführt werden. Diese Veränderungen umfassen unter anderem die Entfernung von Stoppwörtern, die Wortstammzerlegung und so weiter. Auch eine Rechtschreibkorrektur sollte zu diesen Veränderungen zählen. Oberklasse: keine Unterklasse: keine Interfaces: keine Attribute: analysers: Liste von de.wiol.infomat.extraction.analyser Objekten analyse(string): analysiert einen String addanalyser(analyser): fügt einen Analyser zu dieser Klasse hinzu. size(): liefert die Anzahl der Analyser zurück, die dieser Klasse hinzugefügt sind. Klasse: QueryLine Paket: de.wiol.infomat.search Beschreibung: Diese Klasse repräsentiert eine Menge von Wörtern. Dieses Objekt kann als Suchanfrage an verschiedene Methoden übergeben werden. Es werden hier Wörter gespeichert, die in einem zu findenden Dokumente vorkommen können (OR), vorkommen müssen (AND) oder nicht vorkommen dürfen (NOT). Diese Klasse kann mit einem String konstruiert werden. Hierbei wird der String in einzelne Wörter zerlegt. Wenn ein Wort mit einem + beginnt, wird es den ANDs zugeordnet, wenn es mit einem - beginnt, den NOTs und ansonsten den ORs. Oberklasse: keine Unterklasse: keine Interfaces: keine Attribute: ands: Liste von Wörtern, die im Dokument vorkommen müssen ors: Liste von Wörtern, die im Dokument vorkommen können nots: Liste von Wörtern, die nicht im Dokument vorkommen dürfen 73

74 analyse(queryanalyser): Analysiert die einzelnen Wörter dieses Objektes mit Hilfe eines QueryAnalysers. addand(string): fügt ein And hinzu. addor(string): fügt ein Or hinzu. addnot(string): fügt ein Not hinzu. getands(): liefert alle Ands zurück. getors(): liefert alle Ors zurück. getnots(): liefert alle Nots zurück. toquerystring: gibt einen String mit allen Wörtern dieses Objektes zurück. Hierbei wird vor jedes And ein + und vor jedes Not ein - geschrieben. Klasse: DocumentVector Paket: de.wiol.infomat.search Beschreibung: Diese Klasse soll einen mathematischen Vektor darstellen und Methoden zur Vektoraddition und Skalarmultiplikation definieren. Oberklasse: keine Unterklasse: keine Interfaces: keine Attribute: keine add(vector): addiert einen anderen Vector auf diesen Vector. scalarmultiply(double): führt eine skalare Multiplikation mit diesem Vector durch. scalardivision(double): führt eine skalare Division mit diesem Vector durch. getdistance(documentvector): Bestimmt die Distanz zwischen diesem Vector und einem andern. getnumberofnotnullvalues(): liefert die Anzahl aller Zeilen dieses Vektors zurück, deren Werte größer als 0 sind. getnumberofvaluesgreaterthan(double): liefert die Anzahl aller Zeilen dieses Vektors zurück, deren Werte größer als ein double-wert sind. deleteallvalueslowerthan(double): setzt alle Zeilen, deren Werte kleiner als der Wert double sind, auf 0. get(int number): liefert den Wert aus der Zeile number zurück. set(number, value): setzt den Wert der Zeile number auf Value. 74

75 Klasse: DBAcessor Paket: de.wiol.infomat.search Beschreibung: Diese abstrakte Klasse stellt die Basis für den Datenbankzugriff des Suchmodules dar. Klassen, welche sich von dieser Klasse ableiten, stellen dem Suchmodul Methoden zur Verfügung, mit denen auf rohen Daten gesucht werden kann. Somit sind diese Klassen eine Abstraktionsschicht von der Datenbank. Oberklasse: keine Unterklassen: HibernateObjectDBAccessorHSQL, HibernateObjectDBAccessor Interfaces: keine Attribute: keine println(string): gibt eine Debug-Nachricht aus (Wenn Infomat.debug gesetzt ist) phrasesearch(string): erstellt eine neue HitList mit den Ergebnissen der Suche nach der Phrase phrase. timesearch(timestamp, Timestamp): erstellt eine neue HitList mit den Ergebnissen der Suche nach allen Dokumenten extrahiert zwischen den übergebenen Parametern starttime und stoptime pathsearch(string): erstellt eine neue HitList mit den Ergebnissen der Suche nach allen Dokumenten extrahiert aus dem Pfad path. namesearch(string): erstellt eine neue HitList mit den Ergebnissen der Suche nach allen Dokumenten mit dem Dateinamen docname. distancesearch(string, String): erstellt eine neue HitList mit den Ergebnissen der Suche nach allen Dokumenten, in denen die Wörter keyword1 und keyword2 vorkommen und deren Distanz voneinander kodiert in den Wahrscheinlichkeiten. keywordsearch(string): erstellt eine neue HitList mit den Ergebnissen der Suche nach dem gegebenen Keyword. keywordsearch(queryline): erstellt eine neue HitList mit den Ergebnissen der Suche nach der gegebenen Queryline. vectorsearch(documentvector): erstellt eine neue HitList mit den Ergebnissen der Suche nach allen Dokumenten ähnlich zu dem gegebenen Dokumentenvektor. getalldocumentsashits(): erstellt eine neue HitList mit allen Dokumenten. getdocument(long): liefert das Dokument mit der gegebenen ID zurück. searchfield(string, String): erstellt eine neue HitList mit den Ergebnissen der Suche nach allen Dokumenten bei denen ein Metadatum mit dem gegebenen Namen mit dem gegebenen Wert übereinstimmt. getallinclass(string): erstellt eine neue HitList mit den Ergebnissen der Suche nach allen Dokumenten aus der gegebenen Klasse. getallbyclassificationtype(int): erstellt eine neue HitList mit den Ergebnissen der Suche nach allen Dokumenten, die mit dem gegebenen Typ klassifiziert wurden. Der Typ ist hier eine 75

76 Konstante aus de.wiol.infomat.data.document. Klasse: HibernateObjectDBAccessor Paket: de.wiol.infomat.search Beschreibung: Diese Klasse stellt Methoden für den (Such-) Zugriff auf Hibernate bereit. Oberklasse: DBAcessor Unterklasse: keine Interfaces: keine Attribute: keine wie aus DbAcessor geerbt. Klasse: HibernateObjectDBAccessorHSQL Paket: de.wiol.infomat.search Beschreibung: Diese Klasse stellt Methoden für den (Such-) Zugriff auf Hibernate bereit. Hier sind einige Methoden auf die Benutzung einer HSQL-Datenbank ausgelegt. Oberklasse: DBAcessor Unterklasse: keine Interfaces: keine Attribute: keine wie aus DbAcessor geerbt. 76

77 Exceptions: Abbildung 19: Klassendiagramm(Vererbung): Such-Exceptions Klasse: SearchException Paket: de.wiol.infomat.search Beschreibung: Dieses ist die HauptException des Suchmodules. Sie soll geworfen werden, wenn ein genereller Fehler beim Suchen passiert. Von ihr leiten sich alle anderen verwendeten Exceptions ab. Oberklasse: entweder normale Exception oder (falls definiert) eine Infomat-Exception Unterklassen: QueryException, LanguageIncorrectException Interfaces: keine Attribute und Wie geerbt Klasse: QueryExecption Paket: de.wiol.infomat.search Beschreibung: Diese Exception soll geworfen werden, wenn ein Fehler bei der Ausführung einer Query passiert (also in der Methode Query.perform()). Oberklasse: SearchException Unterklasse: WrongParameterQueryException 77

78 Interfaces: keine Attribute und Wie geerbt Klasse: WrongParameterQueryException Paket: de.wiol.infomat.search Beschreibung: Diese Exception soll geworfen werden, falls ein Parameter, der einer Query über den Konstruktor übergeben wurde, sich beim Ausführen der Query als fehlerhaft erweist. Oberklasse: QueryException Unterklasse: keine Interfaces: keine Attribute und Wie geerbt Klasse: LanguageIncorrectException Paket: de.wiol.infomat.search Beschreibung: Diese Exception soll geworfen werden, wenn beim Ausführen der Methode Parser.Parse festgestellt wird, dass der übergebene String nicht dem definierten Format genügt, also syntaktisch nicht korrekt aufgebaut ist. Oberklasse: QueryException Unterklasse: keine Interfaces: keine Attribute und Wie geerbt 78

79 Command-Editor Klassen: Abbildung 20: Klassendiagramm: Kommandoeditor Klasse: CommandEditor Paket: de.wiol.infomat.search.commandeditor Beschreibung: Diese Klasse stellt ein SWT-Widget dar, mit der sich Suchanfragen grafisch zusammensetzen lassen. Oberklasse: org.eclipse.swt.widgets.canvas Unterklasse: keine Interfaces: keine Attribute: query: die Momentan im Editor bearbeitete Query. minimumx: die minimale Größe des Editors in X-Richtung. minimumy: die minimale Größe des Editors in Y-Richtung. listeners: die zu diesem Dialog hinzugefügten CommandEditorListeners(als Liste). standalone: boolean-wert um anzuzeigen, ob dieser Editor Standalone oder im Inf-O-matKontext aufgerufen wird. getquery(): Liefert die Momentan im Editor bearbeitete Query zurück. deletequery(): Löscht die momentan bearbeitete Query und setzt sie auf einen Standard-Wert zurück. execute(): Ruft die handlequery()-methode der übergebenen CommandEditorListeners auf. setminimumsize(int, int): Setzt die minimale Größe dieses Widgets. Es kann größer werden, aber nicht kleiner. addcommandeditorlistener(commandeditorlistener): Fügt einen CommandEditorlistener 79

80 hinzu removecommandeditorlistener(commandeditorlistener): Entfernt den entsprechenden Listener. addanalyser(analyser): Fügt einen Analyser zu dieser Klasse hinzu. size(): Liefert die Anzahl der Analyser zurück, die dieser Klasse hinzugefügt sind. Klasse: CommandDisplayData Paket: de.wiol.infomat.search.commandeditor Beschreibung: In dieser Klasse werden Informationen zu Darstellung einzelner Queries im CommandEditor abgespeichert. Zum Beispiel werden hier die zu zeichnenden Images geladen. Oberklasse: keine Unterklasse: keine Interfaces: keine Attribute: diverse Images diverse Strings getimagefor(query): Liefert das entsprechende Image für eine Query des übergebenen Typs zurück.(selektiert/unselektiert wird aus der Query gelesen) getselectedimagefor(query): Liefert das selektierte Image für eine Query des übergebenen Typs zurück. getunselectedimagefor(query): Liefert das unselektierte Image für eine Query des übergebenen Typs zurück. getparameterstring(query): Generiert eine kurze Beschreibung dafür, was die Query genau tut. dispose(): Gibt den von diesem Objekt gebrauchten Speicher wieder frei. gettitle(): Liefert den Titel für den Kommandoeditor zurück. gettoottipfor(buttontype): Liefert den Tooltip für einen entsprechenden Button zurück. togglebuttonup(): Weist den Editor an, auf dem Kopf stehend zu zeichnen. gethelpanchorfor(query): Liefert den Namen der HTML-Datei zurück, welche die query beschreibt. getdialogtranslation(querytype): Liefert den Text zurück, welcher in einem ParameterDialog angezeit werden soll, wenn eine Query von Typ querytype bearbeitet werden soll. getestimatedruntimestring(int): Liefert eine Beschreibung zurück, wie lange die aktuelle Suchanfrage dauern wird (in Zyklen). gettextcolor(): Liefert die Farbe zurück, in der Text dargestellt werden soll. 80

81 getbackgroundcolor(): Liefert die Farbe zurück, in der der Hintergrund des CommandDialogs dargestellt werden soll. getwidgetbackgroundcolor(): liefert die Farbe zurück, in der der Hintergrund des CommandEditors dargestellt werden soll. Klasse: CommandEditorListener Paket: de.wiol.infomat.search.commandeditor Beschreibung: Dieses Interface definiert die Listener, welche einem CommandEditor übergeben werden können. Oberklasse: keine Unterklasse: keine Interfaces: keine Attribute: keine handlequery(query): Diese Methode wird vom CommandEditor aufgerufen, wenn die execute() Methode aufgerufen wird. Der Listener wird aufgefordert, die übergebene Query auszuführen. showhelpforquery(query): Diese Methode wird aufgerufen, wenn die Kontexthilfe zu einer Query vom Benutzer gewünscht wird. querychanged(query): Diese Methode wird immer dann aufgerufen, wenn sich an der momentan bearbeiteten Query etwas ändert. Klasse: CommandDialog Paket: de.wiol.infomat.search.commandeditor Beschreibung: Diese Klasse öffnet ein neues Fenster mit einem Command-Editor-Widget. Man kann sie statisch starten oder aus dem Inf-O-Mat heraus aufrufen. Oberklasse: keine Unterklasse: keine Interfaces: keine Attribute: reference: die Referenz der Anfrage (wohin sollen die Ergebnisse geschickt werden) main(string[]): Main-StartMethode. Startet den EditorDialog standalone. runstandalone(): Startet den Editor standalone. 81

82 runininfomat(string): Startet den Editor im Inf-O-mat und setzt die Referenz auf String setreference(string): Setzt die Referenz dieses Editors Ontologie Die Ontologiegruppe ist für die Modellierung der Ontologie und einer entsprechenden Programmierschnittstelle verantwortlich. Weiterhin wird ein Ontologie-Editor entworfen, mit dem die Ontologie mit Hilfe einer grafischen Oberfläche bearbeitet werden kann. Ontologie Eine Ontologie ist ein definiertes System von Klassen und Relationen zwischen diesen Klassen. Zusätzlich werden durch die Relationen auch Regeln impliziert. Eine Aussage (Statement) besteht dabei immer aus Subjekt, Prädikat und Objekt. Im Inf-O-Mat wird durch die Ontologie die Beziehungen von Worten abgebildet, um ähnliche oder verwandte bzw. hinweisende Begriffe zu verbinden. Ziel ist es, durch eine Analyse von Dokumenten und der Ontologie, jedes Dokument einer Klasse zuzuordnen, und damit eine Klassifizierung der Bedeutungen zu ermöglichen. Subjekt und Objekt beinhalten jeweils Worte und Begriffe, die in den zu analysierenden Dokumenten vorkommen können. Das Prädikat gibt die Stärke an, mit der das Subjekt auf das Objekt hinweist. Je stärker das Prädikat eingestuft wird, desto eher lässt sich ein Rückschluss auf das Objekt ziehen. Das Wort 'Schiedsrichter' ist beispielsweise ein starker Hinweis, dass es sich um einen Begriff aus der Klasse 'Sport' handelt. Der Begriff 'Sport' weist jedoch nicht unbedingt auf Schiedsrichter hin. Es ist daher nicht zwingend sinnvoll und erforderlich, das eine beidseitige Gewichtung modelliert wird. Die Ungleichheit der Gewichte ermöglicht hingegen die Erstellung einer Hierarchie, die bei einer netzförmigen Ontologie sonst nicht gegeben wäre. Dadurch wird die Navigation in der Ontologie vereinfacht und übersichtlicher. Die Gewichtung wird in drei Stufen eingeteilt: ist eine Klasse durch das Gewicht '1' mit einer anderen verbunden, so besteht ein schwacher Hinweis. Beide Begriffe kommen im gleichen Umfeld eines Fachgebietes vor, haben jedoch noch eine andere Bedeutung. Das Gewicht '2' stellt eine stärkere Beziehung dar. Das Subjekt steht in näherer Beziehung zum Objekt und ein semantischer Zusammenhang liegt nahe. Die stärkste Verbindung '3' lässt einen direkten Schluss auf das Objekt zu. Eigennamen wie 'Werder Bremen' können so stark mit Begriffen wie 'Fußball' verknüpft werden. Da eine Verknüpfung auch einseitig bestehen kann, lässt sich eine Hierarchie durch die Stärke der Gewichtungen ablesen. Die stärkeren Prädikate weisen immer zur Oberklasse, der Begriff 'Fußball' weist stark auf 'Sport' hin, während in umgekehrter Richtung ein weniger eindeutiger Zusammenhang besteht. Daher ist 'Sport' eine Oberklasse oder ein Oberbegriff für 'Fußball'. Die Ontologie ermöglicht weiterhin eine direkte Modellierung der Vererbung. Unterklassen erben hierbei die Attribute von Oberklassen. Damit ist eine genauere und effizientere Beschreibung von Klassen möglich, da Eigenschaften nicht mehrfach modelliert werden müssen. Modellierte Unter- und Oberklassen können auch gegen Gewichtungen ausgetauscht werden und umgekehrt. Die Klassifizierung von Dokumenten kann dann durch die Ontologie erfolgen. Hierbei werden jedoch nicht in jeder, sondern nur in dedizierten Klassen Dokumente gespeichert. Einige Klassen dienen nur der Beschreibung anderer Klassen, in denen sich dann die Dokumente befinden. Durch dieses Verfahren soll die Anzahl der Klassen, die Dokumente enthalten, reduziert werden und die Arbeit mit dem Inf-O-Mat erleichtert werden. Kann ein Dokument in der ermittelten Klasse nicht gespeichert werden, so wird die nächste verfügbare Oberklasse verwendet. Somit kann jede Klasse für die Identifikation von Dokumenten verwendet werden, der Nutzer erhält jedoch nur Ergebnisse 82

83 in Klassen, die er für sich als Klasse mit Dokumenten eingerichtet hat. Die Eigenschaft, ob in eine Klasse Dokumente gespeichert werden können, kann jederzeit geändert werden. Für die Implementierung der Ontologie wird die Jena-API verwendet. Der Inf-O-Mat erbt das Speichermodell der Jena-OWL-Ontologie (OWLOntology.java). Das Objekt OWLOntologyClass kapselt die Eigenschaften und deren Manipulation einer jeden Klasse in der Ontologie. Der OWLOntologyManager stellt die Fassade für die Bearbeitung der Ontologie dar. Bei speziellen Anfragen kann die Gewichtung zwischen den einzelnen Klassen oder die generellen Beziehungen über die Klassen OWLOntologyWeight und OWLOntologyRelation zurückgegeben werden. Die Internationalisierung erfolgt durch die Modellierung aller Sprachen in einer Klasse durch Label. Eine Klasse enthält durch die Modellierung von Gift (deutsch) und present (englisch) auch eine Semantik durch die Übersetzung. Diese Semantik erhöht die Trefferwahrscheinlichkeit insbesondere bei der Bayes-Klassifizierung. Die internen Klassennamen unterscheiden sich durch einen eindeutigen Bezeichner (z.b. ID25 ), da identische Label beliebig oft modelliert werden können. Dies ist durch die Vieldeutigkeit von Vokabeln auch notwendig geworden. Die Benutzungsschnittstelle (API) der Ontologie ermöglicht die Manipulation, Suche und Darstellung ausgewählter Klassen. Einzelne Klassen können erstellt, geändert und gelöscht werden. Weiterhin können nach der Angabe einer Klasse in Beziehung stehende Klassen ermittelt werden. Zudem können alle direkten Nachbarn einer Klasse abgefragt werden, was die Ermittlung der Semantik einer Klasse und ihrer benachbarten Kategorien ermöglicht. Die netzförmige Ontologie wird weiterhin in serialisierter Form als OWL-Datei gespeichert und kann in Baumform angefordert werden. Ebenso kann ein Teilbaum mit vorgegebener Wurzel geliefert werden. Gewünschte Funktionen sind die Vervollständigung von Tripeln. Sind nur Subjekt und Objekt bekannt, so kann das Prädikat angefordert werden. Jede Kombination von zwei Bekannten und einer Unbekannten eines Statements kann aufgelöst werden. 83

84 Klassendiagramm: de.wiol.infomat.ontology Abbildung 21: Klassendiagramm: Package ontology 84

85 Klasse: OWLOntologyManager Paket: de.wiol.infomat.ontology Beschreibung: Fassadenklasse für den Zugriff auf die Ontologie. Mit dieser Klasse können Ontologie Klassen eingefügt, bearbeitet oder gelöscht werden. Weiterhin können die Beziehungen und Gewichtungen zwischen einzelnen Klassen abgefragt werden. Diese Klasse instanziiert die Ontologie und erzeugt die Wurzel, an der die weiteren Klassen angehängt werden können Oberklasse: keine Unterklasse(n): keine Interfaces: keine Assoziationen: Infomat: Referenz auf die Haupt-Kontrollklasse OWLOntology: Referenz auf die Wurzel der Ontologie Attribute: theapp: Instanz der Klasse Infomat zum Zugriff auf die Kontrollklasse theontology: Instanz der Klasse OWLOntology, die die absolute Wurzel der Ontologie instanziiert. addstatement(string, String, String): Fügt der Ontologie ein Statement hinzu. Benötigt werden Subjekt, Prädikat und Objekt. applyrelation(owlontologyrelation): Ermöglicht die konsistente Speicherung von Relationen in der Ontologie. Beziehungen zwischen Klassen, die im Editor modelliert wurden, werden durch diese Funktion in die Ontologie geschrieben. createontologyclass(locale, String): Erzeugt eine Klasse in der Ontologie durch Angabe eines Länderkürzels und des Namens deleteontologyclass(owlontologyclass): Entfernt eine Klasse aus der Ontologie. Alle Statements, die den übergebenen Klassennamen enthalten, werden hierbei gelöscht deleteontologyclass(string): Ruft die vorherige Funktion auf, für die Angabe der Klasse genügt jedoch die Angabe eines Namens, ohne das eine Instanz von OWLOntologyClass bestehen muss. editontologyclass(owlontologyclass): Ruft den Ontologieeditor mit der angegebenen Klasse auf. getallontologyclasses(): Liefert eine Liste von OWLOntologyClass Objekten, die aus allen in der Ontologie vorhandenen Klassen besteht. getontologyclass(locale, String): Durch die Angabe von Länderkürzel und Name wird eine Instanz der OWLOntologyClass in der Ontologie erzeugt. getontologyclass(string): Durch die Angabe einer Zeichenkette (= eindeutiger Klassenname) wird eine Instanz der OWLOntologyClass in der Ontologie erzeugt. getontologyclassfrompartialname(locale, String): Liefert eine OWLOntologyClass, wenn eine Klasse gefunden wurde, die die übergebene Zeichenkette als Teilstring enthält. Wird von der semantischen Analyse benötigt, um auf Wortstämme reduziert Zeichenketten in der Ontologie erkennen zu können. getontologyclasshierarchy(tree, OWLOntologyClass): Erzeugt einen Baum, um die netzförmige Ontologie in hierarchischer Struktur darstellen zu können. Die übergebene Klasse 85

86 wird im Baum vorgewählt, wenn sie vorhanden ist. getontologydocumentclasshierarchy(tree, OWLOntologyClass): Erzeugt einen Baum, um die netzförmige Ontologie in hierarchischer Struktur darstellen zu können. Es werden hierbei nur die Klassen berücksichtigt, in die Dokumente einsortiert werden können. Die übergebene Klasse wird im Baum vorgewählt, wenn sie vorhanden ist. getontologyrelation(owlontologyclass, OWLOntologyClass): Erzeugt durch die Angabe zweier Klassen ein Relationen-Objekt (OWLOntologyRelation) getontologyrootclass(): Liefert eine Referenz auf die Ontologie Wurzel als OWLOntologyClass Objekt zurück. getsubclasses(owlontologyclass, boolean): Liefert alle Unterklassen einer Klasse. Das Boolean Flag gibt an, ob nur direkte Unterklassen zurückgegeben werden. getdocumentsubclasses(owlontologyclass, boolean): Liefert alle Unterklassen einer Klasse, die Dokumente enthalten dürfen. Das Boolean Flag gibt an, ob nur direkte Unterklassen zurückgegeben werden. getsuperclasses(owlontologyclass): Liefert alle Oberklassen einer Klasse. Das Boolean Flag gibt an, ob nur direkte Oberklassen zurückgegeben werden. getdocumentsuperclasses(owlontologyclass, boolean): Liefert alle direkten Oberklassen einer Klasse. Das Boolean Flag gibt an, ob nur direkte Oberklassen zurückgegeben werden. renameontologyclass(string, String): Benennt eine Klasse um, die Änderungen beziehen sich auf die gesamte Ontologie. hassubclass(owlontologyclass): Prüft, ob die übergebene Klasse Unterklassen besitzt. 86

87 Klasse: OWLOntology Paket: de.wiol.infomat.ontology Beschreibung: Initialisiert den Aufbau der Ontologie. Diese Klasse erzeugt nach dem FactoryPrinzip ein OWL-Ontologiemodell. Weiterhin wird die Wurzel der Ontologie erzeugt. Die Ontologie kann lokal in serialisierter Form geladen und gespeichert werden. Oberklasse: keine Unterklasse(n): keine Interfaces: keine Assoziationen: keine Attribute: manager: Referenz auf den Ontologiemanager ontologymodel: Referenz auf das Ontologiemodell root: Referenz auf die Wurzel der Ontologie usednodes: Vektor für die hierarchische Präsentation der Ontologie createuniqueontologyclassname(locale, String): Fügt das Länderkürzel und den Namen zu einer eindeutigen Klasse zusammen. createuri(string): Erzeugt eine URI aus dem NAMESPACE und dem eindeutigen Klassennamen. extractclassname(string) Extrahiert den Klassennamen aus einer eindeutigen Klassenbezeichnung extractclassnamefromuri(string): Extrahiert den Klassennamen aus einer URI extractlocalefromuri(string): Extrahiert das Länderkürzel aus einer URI stripnamespace(string): Entfernt den NAMESPACE aus einer URI addstatement(string, String, String): Fügt der Ontologie ein Statement bestehend aus Subjekt, Prädikat und Objekt hinzu. applyrelation(owlontologyrelation): Speichert die Beziehungen einer OWLOntologyRelation in der Ontologie. applyweightrelation(owlontologyrelation): Speichert die gewichteten Beziehungen einer OWLOntologyRelation in der Ontologie. applyhierarchyrelation(owlontologyrelation): Speichert die hierarchischen Beziehungen einer OWLOntologyRelation in der Ontologie. createontologyclass(locale, String): Erzeugt eine Klasse in der Ontologie. createontologyclass(locale, String, OWLOntologyClass): Erzeugt eine Klasse als Unterklasse der übergebenen Klasse in der Ontologie. deleteontologyclass(owlontologyclass): Löscht eine Klasse aus der Ontologie deleteontologyclass(string): Löscht eine Klasse aus der Ontologie an Hand einer Zeichenkette, die die zu löschende Klasse eindeutig identifiziert. getontologyclasshierarchy(tree, boolean, OWLOntologyClass): Erzeugt eine Baumstruktur aus 87

88 der netzförmigen Ontologie und hängt diese in das übergebene Tree Objekt ein. Das übergebene boolean Flag gibt an, ob nur Klassen in den Baum eingefügt werden, die Dokumente enthalten dürfen oder alle Klassen. Die übergebene Ontologie Klasse wird im Baum angewählt. getontologyrootclass(): Gibt eine Referenz auf die Klasse zurück, die die Ontologie Wurzel darstellt. getontologyclass(locale, String): Liefert ein OWLOntolgyClass-Objekt für den übergebenen Klassennamen und das Länderkürzel. getontologyclass(string): Liefert ein OWLOntolgyClass-Objekt für den übergebenen eindeutigen Klassennamen. getontologymodel(): Liefert die Instanz der Ontologie für den direkten Zugriff auf Methoden der Jena-API loadontologyfromdisk(string): Lädt die serialisierte Ontologie (RDF) von einem lokalen Datenträger. printstatements(): Zeigt für Testzwecke alle Statements der Ontologie an. saveontologytodisk(): Speichert die serialisierte Ontologie (RDF) auf einem lokalen Datenträger. selectclassintree(tree, OWLOntologyClass): Liefert den Knoten aus der Baumstruktur, der der übergebenen Klasse entspricht. findtopclassid(): Ermittelt aus einer bestehenden Ontologie den höchsten ID-Eintrag für die Erstellung einer neuen Ontologie Klasse. getallontologyclasses(): Liefert eine Liste aller in der Ontologie verfügbaren Klassen als OWLOntologyClass Objekte. getnextclassid(): Liefert anhand der ermittelten topclassid eine neue ID zur Erstellung einer neuen Ontologie Klasse. getontologyclassfrompartialname(locale, String): Liefert eine Liste von OWLOntologyClass Objekten, deren Name für die übergebene Sprache mit dem genannten partialname übereinstimmt. moveassigneddocuments(owlontologyclass): Stellt sicher, dass Dokumente, die der übergebenen OWLOntologyClass zugeordnet sind in die passende Oberklasse (oder die Wurzel) verschoben werden, bevor die übergebene Klasse gelöscht werden kann. Klasse: OWLOntologyClass Paket: de.wiol.infomat.ontology Beschreibung: Repräsentiert eine Klasse in der Ontologie. Der Zugriff auf das entsprechende Statement einer Instanz wird vollständig gekapselt. Oberklasse(n): keine Unterklasse(n): keine Interfaces: keine Assoziationen: keine 88

89 Attribute: container: Enthält einen Wahrheitswert, ob Dokumente in der Klasse gespeichert werden können equals(object): Überprüft, ob ein übergebenes Objekt mit der aktuellen Klasse identisch ist. getconnectedobjects(): Liefert die Liste der Klassen, für die die aktuelle Klasse ein Subjekt ist getconnectedsubjects(): Liefert die Liste der Klassen, für die die aktuelle Klasse ein Objekt ist getontclass(): Liefert eine Referenz auf das Objekt ontclass der Jena-API für die aktuelle Klasse. getontologyclasslanguage(): Liefert das Länderkürzel der aktuelle Klasse als Zeichenkette. getontologyclasslocale(): Liefert das Länderkürzel der aktuelle Klasse als Locale. getontologyclassname(): Liefert den Namen der Klasse als Zeichenkette. getpredicates(): Liefert die Prädikate, mit denen die Klasse auf Objekte verweist getrelationto(owlontologyclass): Liefert eine OWLOntologyRelation im Bezug auf die übergebene Klasse getuniqueontologyclassname(): Liefert den eindeutigen Klassenamen getweightpredicateto(string): Liefert das Gewicht, mit dem die Klasse auf eine übergebene Klasse weist als Zeichenkette. isdocumentcontainer(): Liefert den Wahrheitswert, ob die Klasse Dokumente enthalten darf rename(string): Benennt die Klasse um. setdocumentcontainer(boolean): Setzt den Wahrheitswert, ob die Klasse Dokumente enthalten darf. setontologyclasslanguage(string): Erzeugt ein Locale-Object aus der übergebenen Zeichenkette. tostring(): Liefert den Namen der Klasse. Klasse: OWLOntologyWeight Paket: de.wiol.infomat.ontology Beschreibung: Implementiert das Mapping von Gewichtungen (Literalen) in Zahlen. Damit werden die Beziehungen von Klassen untereinander modelliert. Die Semantik der Ontologie ergibt sich aus diesen Beziehungen. Oberklasse: keine Unterklasse(n): keine Interfaces: keine Assoziationen: keine Attribute: intvalue: Repräsentiert die Gewichtung als Zahl (Integer) 89

90 OWLOntologyWeight(String): Erzeugt aus der übergebenen Zeichenkette ein OWLOntologyWeight Objekt, das ein Gewicht entsprechend der angegebenen Zeichenkette modelliert. getintvalue(): Liefert das Gewicht als Integer setintvalue(int): Setzt das Gewicht durch den übergebenen Integer-Wert Klasse: OWLOntologyRelation Paket: de.wiol.infomat.ontology Beschreibung: Liefert die Beziehungen (Gewichte) zweier übergebener Klassen. Die direkten Beziehungen zweier Klassen werden durch dieses Objekt beschrieben. Damit lassen sich Aussagen über die Hierarchien von Objekten treffen. Oberklasse: keine Unterklasse(n): keine Interfaces: keine Assoziationen: keine Attribute: weight: Referenz auf ein OntologyWeight Objekt, das die Gewichtung vom Subjekt zum Objekt beschreibt. backweight: Referenz auf ein OntologyWeight Objekt, das die Gewichtung vom Objekt zum Subjekt beschreibt. subject: Referenz auf ein OntologyClass Objekt, das in dieser Relation das Subjekt darstellt. object: Referenz auf ein OntologyClass Objekt, das in dieser Relation das Objekt darstellt. hasweight: Wahrheitswert, der anzeigt, ob das Subjekt das Objekt wichtet. hasbackweight: Wahrheitswert, der anzeigt, ob das Objekt das Subjekt wichtet. issuperclass: Wahrheitswert, der anzeigt, ob das Subjekt eine Oberklasse des Objekts ist. issubclass: Wahrheitswert, der anzeigt, ob das Subjekt eine Unterklasse des Objekts ist. ontologyrelationtype: Repräsentiert die Art der Beziehung zwischen Subjekt und Objekt als Integer-Schlüsselwert. OWLOntologyRelation(OWLOntologyClass, OWLOntologyClass): Erzeugt ein OWLOntologyRelation Objekt, in dem die Beziehung zwischen dem übergebenen Subjekt und Objekt modelliert wird. getweight(): Liefert das Gewicht vom Subjekt auf das Objekt in Form eines OntologyWeight Objektes. getbackweight(): Liefert das Gewicht vom Objekt auf das Subjekt in Form eines OntologyWeight Objektes. 90

91 issubclass(): Liefert den Wahrheitswert, ob das Subjekt eine Unterklasse des Objektes ist. issuperclass(): Liefert den Wahrheitswert, ob das Subjekt eine Oberklasse des Objektes ist. hasweight(): Liefert den Wahrheitswert, ob das Subjekt das Objekt wichtet. hasbackweight(): Liefert den Wahrheitswert, ob das Objekt das Subjekt wichtet. getsubject(): Liefert das Subjekt der Relation. getobject(): Liefert das Subjekt der Relation. hashierarchy(): Liefert den Wahrheitswert, ob zwischen Subjekt und Objekt eine hierarchische Beziehung besteht (ob das Subjekt eine Ober- oder Unterklasse ist). setweight(string): Setzt das Gewicht, mit dem das Subjekt auf das Objekt verweist. setbackweight(string): Setzt das Gewicht, mit dem das Objekt auf das Subjekt verweist. 91

92 3D Darstellung der Ontologie Das Pakte ontnet3d und die Subpakete stellen Klassen und Methoden zur Verfügung, um die Inf-OMat Ontologie als 3 dimensionales Netz zu visualisieren. Das System ist in verschiedene Pakete aufgeteilt: de.wiol.infomat.ontology.ontnet3d: Dieses Modul stellt die Klassen zur Verfügung, um die opengl Schnittstelle zu herzustellen und die Daten zu rendern. de.wiol.infomat.ontology.ontnet3d.ontnet3d.util: Stellt Hilfsklassen zur Verfügung, um Farbwerte zu berechnen de.wiol.infomat.ontology.ontnet3d.ontnet3d.webbuilder Baut ein Netz aus der Ontologie auf. de.wiol.infomat.ontology.ontnet3d.ontnet3d.webbuilder.relations Stellt Hilfsklassen für die Klasse WebBuilder zur Verfügung, um die Struktur zu speichern. 92

93 Klassendiagramm: de.wiol.infomat.ontology.ontnet3d Abbildung 22: Klassendiagramm: Ontnet3d Klasse: RenderFrame Paket: de.wiol.infomat.ontology.ontnet3d Beschreibung: Die Klasse RenderFrame stellt ein AWT Frame zur Verfügung, in dem die 3d Konstrukte angezeigt werden. Oberklasse: keine Unterklasse(n): keine Interfaces: GLEventListener, MouseListener, MouseMotionListener Assoziationen: keine Attribute: 93

94 keine Klassenattribute vorhanden public static void main(string[]) Klasse: OntologyRender Paket: de.wiol.infomat.ontology.ontnet3d Beschreibung: Die Klasse stellt eine Schnittstelle zur opengl Hardware dar und stellt die Struktur der Ontologie dar. Oberklasse: keine Unterklasse(n): keine Interfaces: GLEventListener, KeyListener, MouseListener, MouseMotionListener Assoziationen: keine Attribute: gl: Das gl Objekt erlaubt Zugriff auf die opengl API. glu: Erlaubt den Zugriff auf die GLU Bibliothek glut: Erlaubt den Zugriff auf die GLUT Bibliothek canvas: Hier werden die Daten dargestellt. gldrawable: Enthält alle opengl Daten. keys: Array zum behandeln der Tastatur Eingaben mouseleftbuttondown: Indiziert ob die linke Maustaste gedrückt wird. mouserightbuttondown: Indiziert ob die rechte Maustaste gedrückt wird. lightambient: Array, das die Ambient Lichtquelle speichert. lightdiffuse: Array, das die Diffuse Lichtquelle speichert. lightposition: Array, das die Position der Lichtquelle speichert. xangle: Winkel, um den das System auf der x Achse gedreht wird. xangle_temp: Speichert den Winkel, um den das System auf der x Achse gedreht wird, für einen Frame. yangle: Winkel, um den das System auf der y Achse gedreht wird. yangle_temp: Speichert den Winkel, um den das System auf der y Achse gedreht wird, für einen Frame. zangle: Winkel, um den das System auf der y Achse gedreht wird. zangle_temp: Speichert den Winkel, um den das System auf der z Achse gedreht wird, für einen Frame. x_coordinate: Die x Koordinate des Systems. x_coordinate_temp: Speichert die x Koordinate des Systems für ein Frame. 94

95 y_coordinate: Die y Koordinate des Systems. y_coordinate_temp: Speichert die y Koordinate des Systems für ein Frame. z_coordinate: Die z Koordinate des Systems. z_coordinate_temp: Speichert die z Koordinate des Systems für ein Frame. x_distance: Speichert die Distanz zwischen 2 Punkten auf der x Achse für ein Frame. y_distance: Speichert die Distanz zwischen 2 Punkten auf der y Achse für ein Frame. z_distance: Speichert die Distanz zwischen 2 Punkten auf der z Achse für ein Frame. xzoom: Der Zoom Faktor auf der x Achse. xzoom_temp: Speichert den Zoom Faktor der x Achse für ein Frame. yzoom: Der Zoom Faktor auf der y Achse. float yzoom_temp: Speichert den Zoom Faktor der x Achse für ein Frame. zzoom: Der Zoom Faktor auf der z Achse. zzoom_temp: Speichert den Zoom Faktor der x Achse für ein Frame. previousmousex: Speichert die x Koordinate der Maus für ein Frame. previousmousey: Speichert die y Koordinate der Maus für ein Frame. relations: Speichert die Relationen zwischen Nodes. webbuilder: Erzeugt das darzustellende System. nodes: Speichert die Nodes/Knoten im System. display(gldrawable): Die Funktion wird benötigt, um die Darstellung des Systems zu ermöglichen. displaychanged(gldrawable, boolean, boolean): Nicht implementiert würde aber aufgerufen werden, wenn das Ausgabemedium geändert werden würde. drawcube(float, float, float, float[], float[], float): Zeichnet einen Würfel an den angegebenen Koordinaten und und den entsprechenden Farbwerten. DrawRelations(): Zeichnet die erzeugten Beziehungen zwischen Nodes. drawsphere(vector): Zeichnet das System. GetCanvas(): Gibt den Canvas zurück. init(gldrawable): Initialisiert das System. keypressed(keyevent): Fängt das Gedrückthalten einer Taste ab. keyreleased(keyevent): Fängt das Loslassen einer Taste ab. keytyped(keyevent): Fängt das Drücken einer Taste ab. LoadOntology(): Lädt die Ontologie aus und erstellt die nötigen Strukturen und gibt ein WebBuilder Objekt zurück. mouseclicked(mouseevent): Nicht implementiert. mousedragged(mouseevent): Fängt das ziehen der Maus bei gedrückter Maustaste ab. mouseentered(mouseevent): Nicht implementiert. 95

96 mouseexited(mouseevent): Nicht implementiert. mousemoved(mouseevent): Nicht implementiert. mousepressed(mouseevent): Fangt das Drücken einer Maustaste ab. mousereleased(mouseevent): Fängt das Loslassen einer Maustaste ab. renderstring(float, float, float, String): Rendert einen String. reshape(gldrawable, int, int, int, int): Nicht implementiert. Klassendiagramm: de.wiol.infomat.ontology.ontnet3d.util Abbildung 23: Klassendiagramm: Colors Klasse: Colors Paket: de.wiol.infomat.ontology.ontnet3d.util Beschreibung: Klasse zur Erzeugung von Farbwerten. In Programm werden Koordinaten von Nodes übergeben. Dadurch soll eine möglichst hohe Eindeutigkeit in den Farbwerten ermöglicht werden. Oberklasse: keine Unterklasse(n): keine Interfaces: keine Assoziationen: keine Attribute: keine fgetfacecolor3f(float[]): Erzeugt einen RGB Wert aus einem übergebenden float Array. getfacecolor3f(float, float, float): Erzeugt ein RGB Wert aus drei übergebenen Parametern des Typs float. fgetedgecolor3f(float[]): Erzeugt einen RGB Wert aus einem übergebenden float Array. 96

97 getedgecolor3f(float, float, float): Erzeugt ein RGB Wert aus drei übergebenen Parametern des Typs float. getrootcolor(): Festdefinierter Farbwert, den die Root Node übergeben bekommt. Klassendiagramm: de.wiol.infomat.ontology.ontnet3d.webuilder Abbildung 24: Klassendiagramm: WebBuilder Das Modul de.wiol.infomat.ontology.ontnet3d.webuilder bildet die Infrastruktur um ein Netz, das aus einer Ontologie modelliert wird, zu erzeugen. Klasse: WebBuilder Paket: de.wiol.infomat.ontology.ontnet3d.webbuilder Beschreibung: Oberklasse: keine Unterklasse(n): keine Interfaces: keine Assoziationen: keine Attribute: coordinates: 97

98 ontmodel: relations: nodes: loadontology(string): Lädt eine Ontologie aus der angegeben Datei (Pfad). loadontology(ontmodel): Lädt eine Ontologie aus dem gegebenen OntModel. setontmodel(ontmodel): Setzt ein OntModel. getontmodel(): Gibt das OntModel zurück. getobjectproperties(): Lädt die Object Property Beziehungen. getrootnodes(): Listet die Rootnodes der OWL Datei auf. getsubclasses(node): Listet die Subklassen der übergeben Node auf. setcoordinations(): Setzt die Koordinaten für jede Klasse in der Ontologie. setcolors(): Setzt die Farben in für die Nodes. setcolors(node): Setzt die Farben in Abhängigkeit zur übergebenen Node. exists(string): Überprüft, ob eine Node schon erzeugt wurde. getnodes(): Gibt alle Nodes zurück. getrelations(): Gibt alle Beziehungen zwischen Nodes zurück. getnode(string): Gibt eine Node zurück. calculatecoordinates(double, int): Berechnet die Koordinaten für jede Klasse der Ontologie. calculaterowsandcols(int): Berechnet die Anzahl der Klassen und Spalten für die Klassen der Ontologie. 98

99 Klassendiagramm: de.wiol.infomat.ontology.ontnet3d.webbuilder.relations Abbildung 25: Klassendiagramm: Relations Klasse: Node Paket: de.wiol.infomat.ontology.ontnet3d.webbuilder Beschreibung: Die Klasse Node repräsentiert eine Klasse einer OWL Klasse. Oberklasse: keine Unterklasse(n): keine Interfaces: keine Assoziationen: keine Attribute: ishierachyroot: Es handelt sich um eine Hierachy Root ja/nein. isparent: Die Node hat Kinder ja/nein. coordinates: Die Koordinaten der Node. 99

100 uri: Die URI der Node. parents: Die Eltern der Klassen. labels: Die Labels der Node. childs: Die Kinder der Node. facecolor: Die Hauptfarbe der Node. edgecolor: Die Kantenfarbe der Node. depth: Die Tiefe der Node in der Baumstruktur. addchild(node): Fügt ein Kind hinzu. addlabel(string): Fügt ein Label hinzu. addparent(node): Fügt eine Eltern Node hinzu. getchilds(): Gibt die Kinder zurück. getcoordinates(): Gibt die Koordinaten zurück. ishierachyroot(): Indiziert, ob es sich um eine Root handelt. ishierachyroot(boolean): Setzt die Node zu einer Root. isparent(): Indiziert, ob die Node Kinder hat. setparent(boolean): Setzt die Node als Eltern Node. getparents(): Gibt die Eltern Nodes zurück. geturi(): Gibt die Uri zurück. setchilds(vector): Setzt die Kind Nodes. setcoordinates(float[]): Setzt die Koordinaten. sethierachyroot(boolean): Setzt die Node als Root. setparents(vector): Setzt die Eltern Nodes. seturi(string): Setzt die Uri. getedgecolor(): Gibt die Kantenfarbe zurück. setedgecolor(float[]): Setzt die Kantenfarbe. getfacecolor(): Gibt die Flächenfarbe zurück. setfacecolor(float[]): Setzt die Flächenfarbe. getlabel(int): Gibt ein Label an dem bestimmten Index zurück. getdepth(): Gibt die Tiefe in der Struktur zurück. setdepth(int): Setzt die Tiefe in der Struktur. getlabels(): Gibt die Labels zurück. setlabels(vector): Setzt die Labels. 100

101 Klasse: Relations Paket: de.wiol.infomat.ontology.ontnet3d.webbuilder Beschreibung: Oberklasse: keine Unterklasse(n): keine Interfaces: keine Assoziationen: keine Attribute: relations: Speichert alle Relationen zwischen Nodes. addrelation(relation): Speichert eine Relationen. getrelationatindex(int): Gibt eine Relation an den gegebenen Index zurück. count(): Gibt die Anzahl der Relationen zurück. Klasse: Relation Paket: de.wiol.infomat.ontology.ontnet3d.webbuilder Beschreibung: Speichert eine Beziehung zwischen zwei Nodes. Oberklasse: keine Unterklasse(n): keine Interfaces: keine Assoziationen: keine Attribute: classtosubclass: Es handlet sich um eine Klassen/Subklassen Beziehung. classobjectpropertyclass: Es handelt sich um eine Object Property Beziehung. node1: Die erste Node der Beziehung. node2: Die zweite Node der Beziehung. getnode1(): Gibt die erste Node zurück. getnode2(): Gibt die zweite Node zurück. setnode1(node): Setzt die erste Node. setnode2(node): Setzt die zweite Node. 101

102 3.4.5 Steuerungsklassen Die Steuerungsklassen lassen sich in drei Bereiche einteilen: die Hauptklasse, die Benutzereinstellungen und das EventManagement-System (Programmsteuerungs-System). Diese drei Bereiche sind bis auf gegenseitige Referenzen funktional unabhängig voneinander. Die Hauptklasse (de.wiol.infomat.infomat) beinhaltet die statische main()-methode, über die Inf-OMat gestartet wird. Darüber hinaus ist sie nach ihrer eigenen Instanziierung für die Instanziierung aller Programmmodule (GUI, Semantische Analyse, usw.), für das Laden der Benutzereinstellungen und die Initialisierung des EventManagement-Systems verantwortlich. Sie hält Referenzen auf alle Programmmodule, die von außen über get()-methoden beschafft werden können. Ebenso erfolgt der Zugriff auf die Benutzereinstellungen und den EventManager über die Infomat-Instanz. Die Benutzereinstellungen (de.wiol.infomat.control.infomatpreferences) bieten Zugriff auf sämtliche veränderlichen Einstellungen und Daten, die für den Programmablauf notwendig sind, aber keine reinen Nutzdaten sind. Dazu gehören z.b. Name und Passwort für den Datenbank-Server oder Position und Größe des Hauptfensters, so dass der Benutzer dieses Fenster beim Neustart des Programms an derselben Stelle wie bei Programmende vorfindet. Alle Einstellungen können über set()-methoden gesetzt und get()-methoden abgefragt werden; sie werden bei Programmende in eine lokale XML-Datei gespeichert und bei Programmstart wieder geladen. Das EventManagenent-System ist für die Steuerung des gesamten Inf-O-Mat-Programms und für die Kommunikation zwischen den Programmodulen zuständig. Module nehmen die Dienste anderer Module üblicherweise nicht über normale Methodenaufrufe in Anspruch. Das gilt insbesondere für die Kommunikation zwischen dem GUI-Modul und den anderen Modulen. Stattdessen wird vom anfragenden Modul ein sog. Event erzeugt und dem EventManager übergeben; der EventManager leitet dieses Event zum Zielmodul weiter bzw. führt die gewünschten Operationen aus. Das Zielmodul wiederum antwortet nicht mit einer Methodenrückgabe, sondern erzeugt seinerseits ebenso ein Antwort-Event und sendet dieses über den EventManager zum anfragenden Modul zurück. Durch dieses Event-basierte System wird gewährleistet, dass kein Programmodul an irgendeiner Stelle hängt, weil es auf die Rückkehr einer Methode wartet. Außerdem können die Module nebenläufig arbeiten. Sofern die Inanspruchnahme des Dienstes eines anderen Moduls jedoch nicht zeitkritisch ist oder aber eine sofortige Antwort zu erwarten ist, können auch übliche Methodenaufrufe erfolgen. Der EventManager (de.wiol.infomat.control.eventmanager) ist ein im Hintergrund laufender Thread, in dem sich eine Warteschlange befindet, zu der Events über die addevent()-methode hinzugefügt werden können. Jedes Event-Objekt (de.wiol.infomat.control.infomatevent) kapselt Informationen über seinen Ursprung, seinen Zweck und sein Ziel. Diese Informationen werden im Konstruktor übergeben. Wenn der EventManager ein Event bearbeitet, ruft dieser die action()methode des Events auf. Die Wirkung dieser action()-methode ist abhängig von Ursprung, Zweck und Ziel des Events. Für jeden Zweck gibt es eine definierte Action-Konstante, bspw. für starte die Klassifikation der Dateien in der Liste X, suche nach Y oder beende das Programm. Diese Action-Konstanten, die alle in der Klasse InfomatEvent liegen, werden erst während der Implementierung festgelegt, da erst dann genau entschieden werden kann, wann ein Event statt eines Methodenaufrufs sinnvoll ist. 102

103 Statische Beschreibung Die Hauptklasse, die Klasse für die Benutzereinstellungen sowie die gegenseitigen Beziehungen sind in Abb.Klassendiagramm(Vererbung): Such-Exceptions auf Seite 77 zu sehen. Abb. Klassendiagramm: Kommandoeditor auf Seite 79 zeigt die Klassen des EventManagementSystems. Die Kasse ProgramController wird während der Implementierung näher spezifiziert. Klassendiagramm: Inf-O-Mat Hauptklassen 103

104 Abbildung 26: Klassendiagramm: Inf-O-Mat Hauptklassen 104

105 Klasse: Infomat Paket: de.wiol.infomat Beschreibung: Hauptklasse (Rahmenklasse) Oberklasse(n): keine Unterklasse(n): keine Interfaces: keine Assoziationen: Die Instanz dieser Klasse hält Referenzen auf alle Programmmodule. Außerdem befindet sich in der Fassade (dem Manager) jedes Moduls eine Referenz auf diese Instanz. Attribute: theapp: Instanz dieser Klasse selbst. debug: erlaubt Debug-Ausgaben, wenn true. errorvector: * Vector, in dem bei der Initialisierung Fehlermeldungen abgelegt werden können, die später auf der GUI ausgegeben werden. infomatpreferences: * Die Benutzereinstellungen. persistencemanager:* Fassade des Persistenzmoduls. guimanager: * Fassade des GUI-Moduls. eventmanager: * der EventManager mit Warteschlange zum Abarbeiten von Events. extractionmanager:* Fassade des Extraktionsmoduls. semanticanalysis:* Fassade der semantischen Analyse. semanticsearch:* Fassade der semantischen Suche. ontologymanager:* Fassade der Ontologie. Infomat(): Konstruktor. main(string[]): Die Startmethode des Programms. init(): Initialisiert das Programm. work(): Beginnt die Arbeit des Programms. Ergänzende Beschreibungen: Für alle mit einem Asterisk (*) markierten Attribute sind geeignete Accessor-Methoden vorhanden. Klasse: InfomatPreferences Paket: de.wiol.infomat.control Beschreibung: In einem Objekt dieser Klasse werden alle Benutzerdaten gehalten, die keine reinen Nutzdaten sind. Dazu gehören bspw. die Position des Hauptfensters oder die URL des Datenbankservers. Diese Daten werden bei Instanziierung aus der Datei infomat-preferences.xml geladen bzw. durch den Aufruf von savetofile() in dieser Datei abgelegt. Oberklasse: keine 105

106 Unterklasse(n): keine Interfaces: keine Assoziationen: Es ist eine Referenz auf die Klasse Infomat sowie auf ein Objekt der Klasse PrefTools vorhanden. Attribute: theapp: Referenz auf die Hauptklasse. preftools: Referenz auf das Toolbox -Objekt der Klasse PrefTools. xmlfile: Datei, in der die Daten beim Speichern abgelegt werden. domdoc: DOM-Dokument (-Baum), der die XML-Datei repräsentiert. BUNDLE_BASE:Dateinamen-Präfix für das ResourceBundle. CLASSIFICATION_METHOD_KEYWORD: 0; CLASSIFICATION_METHOD_BAYES: 1; resourcebundle: rmöglicht Zugriff auf die Sprach-Strings (englisch, deutsch). classificationclassidentifierde:* Pfad (qualifizierter Bezeichner) der Klasse, die den gewünschten Klassifikationsalgorithmus für die deutsche Sprache enthält. classificationclassidentifieren:* Pfad (qualifizierter Bezeichner) der Klasse, die den gewünschten Klassifikationsalgorithmus für die deutsche Sprache enthält. databaselogin:* Login/User der Datenbank. databasepassword:* Password der Datenbank. databaseurl:* URL der Datenbank. guilocale: * Locale-Objekt für die GUI. filetypes: *Menge der unterstützten FileTypes. remembermainwindowposition:* Soll die Position des Hauptfensters gespeichert werden? mainwindowbounds:*begrenzungen des Hauptfensters. mainwindowsize:* Größe des Hauptfensters. mainwindowmaximized: *Hauptfenster maximiert? numericprobability:* Numerische Anzeige der Wahrscheinlichkeit? ontologylocale:* Locale der Ontologie. ontologyrgb:* Farbe zur Anzeige der Hilfsklassen in der Ontologie. ontologypath:* Pfad zur Ontologie. classificationthreshold:* Grenzwert (Schwelle) bei der Klassifikation. classificationmethodde:* Methode bei Klassifikation eines deutschen Dokuments. classificationmethoden:* Methode bei Klassifikation eines englischen Dokuments. usemetaclassification:* Verwendung der Meta-Klassifikation? autocolumnwidth:* Automatisches Anpassen der Spaltenbreite in der GUI? 106

107 InfomatPreferences():der Konstruktor. Beim Aufruf werden die Einstellungen aus der XMLDatei geladen. Initialisiert die Instanz. savetofile(): Speichert die Einstellungen in einer lokalen XML-Datei ab. Ergänzende Beschreibungen: Für alle mit einem Asterisk (*) markierten Attribute sind geeignete Accessor-Methoden vorhanden. Anmerkung: Ebenso existiert für alle mit einem Asterisk (*) markierten Attribute eine gleich lautende, in Großbuchstaben geschriebene ( konstantenähnliche ) Variable, in der der Vorgabewert für das jeweilige Attribut hinterlegt ist. -- Diese Vorgabewert-Variablen sind aus Gründen der Kompaktheit nicht im URL-Diagramm aufgeführt! Klasse: PrefTools Paket: de.wiol.infomat.control Beschreibung: Diese Klasse bildet quasi einen Werkzeugkasten mit einigen Dienst-Methoden für die InfomatPreferences. Oberklasse: keine Unterklasse(n): keine Interfaces: keine Assoziationen: Es ist eine Referenz auf das InfomatPreferences-Objekt vorhanden. Attribute: prefs: Referenz auf die InfomatPreferences. PrefTools(InfomatPreferences): Der Konstruktor. createnewfiletypes(): Erzeugt einen neues Set mit vorgegebenen FileType-Objekten und gibt dieses zurück. createnewdomtree(): Erzeugt einen neuen DOM-Baum, indem die Vorgabewerte der InfomatPreferences abgelegt sind, und gibt diesen zurück. divineinstalldirectory(): Stellt fest, in welchem Verzeichnis die Inf-O-Mat-Applikation installiert ist (direkt oder als JAR) und gibt ein entsprechendes File-Objekt zurück. loadfromxmlfile(file): Lädt die Einstellungen aus einer XML-Datei und gibt ein geeignetes DOM-Document-Objekt zurück. replacenull(string): Gibt denselben übergebenen String zurück oder aber den leeren String, falls null übergeben wurde. savetoxmlfile(document, File): Speichert (serialisiert) das übergebene DOM-Dokument in der angegebenen XML-Datei. updatedatabaseproperties(): Aktualisiert die Einstellungen in/von der Datenbank-PropertiesDatei db_settings.properties. 107

108 Klasse: InfomatException Paket: de.wiol.infomat Beschreibung: Exception, die bei Fehlern im Programmablauf geworfen werden kann. Oberklasse: RuntimeException Unterklasse(n): keine Interfaces: Throwable Assoziationen: keine Attribute: theapp: Referenz auf die Hauptklasse exceptiontype: (Code) der Exception (von 1=informativ bis 4=kritisch) exceptionmessage:nachricht der Exception TYPE_NONE: 0 TYPE_INFO: 1 TYPE_WARNING: 2 TYPE_ERROR: 3 TYPE_CRITICAL: 4 InfomatException(): der Konstruktor tostring(): gibt die Nachricht der Exception zurück getmessage(): gibt die Nachricht der Exception zurück printstacktrace(): gibt den Stacktrace auf der Fehlerkonsole aus handleexception(): erzeugt einen Fehlerdialog mit der Nachricht der Exception auf der GUI. 108

109 Klassendiagramm: de.wiol.infomat.eventmanagement Abbildung 27: Klassendiagramm: EventManagement Klasse: EventManager Paket: de.wiol.infomat.control Beschreibung: EventManager, der eine Warteschlange besitzt, in die mit der Methode addevent() Objekte der Klasse InfomatEvent eingefügt werden können. Der EventManager führt diese Objekte dann der Reihe nach aus, indem er deren Methode action() aufruft Oberklasse: Thread Unterklasse(n): keine Interfaces: Runnable Assoziationen: Referenz auf ein Objekt der Klasse ProgramController und auf die Hauptklasse Infomat vorhanden. Attribute: theapp: Referenz auf die Hauptklasse eventmanager: Referenz auf die aktuelle (einzige) EventManager-Instanz running: true, wenn der EventManager gerade läuft programcontroller: Referenz auf den ProgramController. Über Methoden des 109

110 ProgramControllers werden die einzelnen Anwendungsfälle ausgeführt eventqueue: Warteschlange für Events vom Typ InfomatEvent EventManager(): der Konstruktor (privat!) EventManagerString): der Konstruktor, dem der Name dieses Threads übergibt wird (privat!) getinstance(): Singleton-Factory-Methode. Erzeugt eine neue EventManager-Instanz und gibt diese zurück addevent(infomatevent): fügt ein neues InfomatEvent zur Warteschlange hinzu isrunning(): true, wenn der EventManager gerade läuft stoprunning(): stoppt die Ausführung des EventManagers run(): Arbeitsmethode des EventManagers; die Virtuelle Maschine ruft diese Methode intern auf. Zum Starten des EventManagers wird die von Thread geerbte Methode start() verwendet Klasse: ProgramController Paket: de.wiol.infomat.control Beschreibung: Steuerungsklasse, in der sich diverse Methoden für die Programmsteuerung befinden; eine Methode für jeden größeren Anwendungsfall. Oberklasse(n): keine Unterklasse(n): keine Interfaces: keine Assoziationen: Referenz auf die Hauptklasse vorhanden, außerdem auf einen Processor zum Verarbeiten von Dokumenten. Attribute: theapp: Referenz auf die Hauptklasse. processor: Referenz auf einen Processor zur Verarbeitung von Dokumenten. ProgramController():Konstruktor. quitprogram(): beendet das Programm. saveall(): speichert Ontologie und Dokumente. showselectionwindow(): Anzeige des Dateiauswahlfensters. showaboutdialog(): zeigt den About-Dialog an. showhelpdialog(): zeigt den Hilfe-Dialog an. startclassification(filelist: List): startet die Klassifikation. updatesingledocument(doc: Document): aktualisiert ein einzelnes Dokument. 110

111 updatealldocuments: aktualisiert alle Dokumente. stopprocessor(): stoppt die Arbeit des Processors. performsearch(query: String): führt eine Suche durch. performsearch(query: String, reference: Sting): führt eine Suche durch. showontologyeditor(): zeigt den Ontologie-Editor an. refreshontologytree(): führt eine Ansichtsaktualisierung des Ontologiebaums durch. showmainwindow(): zeigt das Hauptfenster an. showsearchwindow(): zeigt das Suchfenster an. addlogfilemessage(params: List, text: String): fügt im Textfeld des Hauptfensters eine LogNachricht hinzu. addlogfilemessage(data: LogData): fügt im Textfeld des Hauptfensters eine Log-Nachricht hinzu. usesearchresults(results: List, reference: String): Verwendung der Suchergebnisse nach Abschluß der Suche. usesearchsteps(times: int, reference String): Vollzug eines einzelnen Suchschritts. usesearchestimatedtime(time: int, reference String): gibt die geschätzte Zeit für die Suche aus. usesearchperformingmessage(reference: String): gibt eine Nachricht mit der auszuführenden Suche aus. usesearchfailedmessage(reference: String): gibt im Falle eines Suchefehlers eine Fehlermeldung aus. closeprogressbar(): schließt die Fortschrittsanzeige. Klasse: InfomatEvent Paket: de.wiol.infomat.control Beschreibung: Objekte dieser Klasse werden zur Warteschlange des EventManagers hinzugefügt und von diesem durch Aufruf der methode action() ausgeführt, wenn sie an der Reihe sind. Bei der Erzeugung eines InfomatEvents wird dem Konstruktor ein Code für den jeweiligen Anwendungsfall und optional ein von diesem Anwendungsfall abhängiges Arbeits-Objekt (z. B. eine Dateiliste oder eine Textnachricht) übergeben. Oberklasse: keine Unterklasse(n): keine Interfaces: keine Assoziationen: Bei der Ausführung eines InfomatEvents wird diesem eine Referenz auf den aktuellen ProgramController übergeben. Außerdem ist eine Referenz auf die Hauptklasse vorhanden. Attribute: theapp: Referenz auf die Hauptklasse 111

112 programcontroller:* Referenz auf den aktuellen ProgramController eventtype:* Code des Events bzw. des Anwendungsfalls. (Sämtliche Codes werden erst während der Implementierung genau festgelegt.) sourceevent:* Quell-Event, falls dieses InfomatEvent die Folge eines anderen Events ist, z.b. eines MouseEvents (optional). workobject:* Arbeits-Objekt, das je nach eventtype (s.o.) in die Ausführung des InfomatEvents einbezogen wird. Das Arbeits-Objekt kann z. B. eine Dateiliste oder eine Suchanfrage sein (optional) message:* Textnachricht (optional) InfomatEvent(int [, EventObject] [, Object] [, String]): Konstruktoren für verschiedene Anwendungsfälle action(): führt dieses Event aus Ergänzende Beschreibungen: Für alle mit einem Asterisk (*) markierten Attribute sind geeignete Accessor-Methoden vorhanden. 112

113 Klassendiagramm: Dokumentenprozessoren Abbildung 28: Klassendiagramm: Dokumentenprozessoren Für die Implementierung der verschiedenen möglichen Abläufe der Klassifikation von Dokumenten, sind verschiedene Prozessoren zur Steuerung dieser implementiert. Es gibt den ExtractionProcessor, der die erstmalige Extraktion von Dokumenten regelt und den UpdateProcessor, welcher die Updatefunktion des Programmes steuert. Klasse: Processor (abstrakt) Paket: de.wiol.infomat.control Beschreibung: Abstrakte Oberklasse aller Prozessortypen Oberklasse: Thread Unterklasse(n): ExtractionProcessor, UpdateProcessor Interfaces: keine Assoziationen: Ein Thread dieser Klasse hat eine Referenz auf die Hauptklasse, über welche die Zugriffe auf die beteiligten Module an der Extraktion erfolgen. Attribute: theapp : Referenz auf die Hauptklasse 113

114 userquit : Flag um den Abbruch des Prozesses durch den Benutzer zu signalisieren. updateall : Flag um zu signalisieren, dass der Benutzer alle in einer neueren Version vorliegenden Dokumente erneut extrahieren möchte. buttonpressed : Flag um zu signalisieren, dass der Benutzer während eines Fragedialoges eine Eingabe gemacht hat. count : Anzahl der bearbeiteten Dokumente. Processor(): Standard Konstruktor setbuttonpressed(boolean): Signalisiert dem Thread, dass der Benutzer auf einen Fragedialog reagiert hat. setupdateall(boolean): Setzt eine Flag, dass der Benutzer alle Dokumente aktualisieren will, die in einer neueren Version vorliegen. getdocupdatelist(): Liefert die Liste mit Document Objekten, die aktualisiert werden sollen stoprunning(): Stoppt die Verarbeitung, indem alle nötigen Flags gesetzt werden. increasecount(): Erhöht den Dokumentenzähler. getcount(): Liefert den aktuellen Dokumentenzähler zurück. abstract processing(): Methode, den die verschiedenen Prozessoren implementieren müssen, stellt den Hauptarbeitsablauf dar. updatedocuments(): Methode, die alle Dokumente aktualisiert, die vom Benutzer aktualisiert werden sollen. waitforuserinteraction(): Busy Loop, in der der Thread so lange schläft bis der Benutzer einen Knopf nach einem Fragedialog gedrückt hat. updatetrainingdata(): Methode zum Aktualisieren der Trainingsdatensätze. settrainingflagtoupdate(string): Setzt eine Markierung, dass die Trainingsdaten für die übergebene Sprache geupdatet werden müssen. setfilenameprogressbar(string): Setzt den Namen des aktuellen Dokuments bei der ProgressBar. increasecompleteprogressbar(): Erhöht die zugehörige ProgressBar zur Anzeige des Vortschrittes aller Dokumente um 1. increasesingleprogressbar(): Erhöht die zugehörige ProgressBar zur Anzeige des Fortschrittes eines Dokuments um 1. Klasse: ExtractionProcessor Paket: de.wiol.infomat.control Beschreibung: Prozessor zum Steuern des Extraktions- und Klassifikationsprozesses Oberklasse: Processor Unterklasse(n): 114

115 Interfaces: keine Assoziationen: siehe Oberklasse Attribute: filelist : Liste mit Dateinamen, die extrahiert werden sollen. extractall : Flag um zu signalisieren, dass alle bereits in der Datenbank vorhandenen Dokumente ebenfalls extrahiert werden sollen. ExtractionProcessor(): Standard Konstruktor ExtractionProcessor(List): Konstruktor, der die Dateiliste übergeben bekommt. run(): Überschriebene Methode der Klasse Thread, die den kompletten Ablauf regelt. preprocessing(): Methode zum Vorbearbeiten der Dateiliste, bereits enthaltene Dokumente in der Datenbank werden gegebenenfalls herausgefiltert und gesondert betrachtet. processing(): Implementiert die abstrakte Methode, die den Extraktions- und Klassifikationsprozess aller Dokumente in der Dateiliste bearbeitet. setpathlist(list): Setzt die Liste der Dateien, die extrahiert und klassifiziert werden sollen. getpathlist(): Liefert die Liste der Dateien, die extrahiert und klassifiziert werden sollen. setextractall(boolean): Setzt die Flag um zu signalisieren, dass alle bereits in der Datenbank vorhandenen Dokumente ebenfalls extrahiert werden sollen. Klasse: UpdateProcessor Paket: de.wiol.infomat.control Beschreibung: Prozessor zum Steuern des Aktualisierungsprozesses der in der Datenbank gespeicherten Dokumente Oberklasse: Processor Unterklasse(n): Interfaces: keine Assoziationen: siehe Oberklasse Attribute: doclist : Liste der Dokumente aus der Datenbank deleteall : Flag um zu signalisieren, dass alle Dokumente, die nicht mehr am angegebenen Pfad liegen, gelöscht werden sollen. UpdateProcessor(): Standard Konstruktor UpdateProcessor(List): Konstruktor, der die Dateiliste übergeben bekommt. run(): Überschriebene Methode der Klasse Thread, die den kompletten Ablauf regelt. processing(): Implementiert die abstrakte Methode, die den Extraktions- und 115

116 Klassifikationsprozess aller Dokumente in der Dateiliste bearbeitet. setdoclist(list): Setzt die Liste der Dokumente, die aktualisiert werden sollen. getdoclist(): Liefert die Liste der Dokumente, die aktualisiert werden sollen. setdeleteall(boolean): Setzt die Flag um zu signalisieren, dass alle Dokumente, die nicht mehr am angegebenen Pfad liegen, gelöscht werden sollen. 116

117 3.5 GUI-Klassen Die Bedienung des Inf-O-Mat erfolgt über eine graphische Benutzungsoberfläche. Diese besteht aus einem Hauptfenster, von dem aus alle Funktionen gesteuert werden können. So wird für die Auswahl neuer einzusortierender Dokumente ein modales Auswahlfenster aufgerufen, das die Auswahl von Dokumenten und Ordnern mit gewünschter Tiefe zur Einsortierung ermöglicht. Für die Suche auf einsortierten Dokumenten kann ein nichtmodales Fenster zur Suche aufgerufen werden, das verschiedene Suchmöglichkeiten, beispielsweise Suche nach Metadaten, Stichworten und Suche nach ähnlichen Dokumenten, anbietet. Ein weiteres wichtiges modales Fenster ist das des Ontologieeditors, in dem der Benutzer die Möglichkeit hat, die Ontologie zu erzeugen bzw. zu verändern. Alle Fenster können aus verschiedenen Bereichen des Hauptfensters heraus aufgerufen werden (siehe Klasse mainwindow). Neben diesen vier Fenstern besteht die GUI zudem aus diversen Info-Dialogen, wie dem Status-Dialog und der Hilfe. Die Technologie zur Realisierung der GUI ist das SWT (Standard Widget Toolkit). Dieses Toolkit wurde von dem Eclipse Projekt entwickelt, um graphische Benutzungsoberflächen zu entwickeln und ist für viele Plattformen frei verfügbar. 117

118 Klassendiagramm: MainWindow und GuiManager Abbildung 29: Klassendiagramm: Hauptfenster und GuiManager 118

119 Klasse: GUIManager Paket: de.wiol.infomat.gui Beschreibung: Fassadenklasse für den Zugriff auf die GUI. Oberklasse(n): keine Unterklasse: keine Interfaces: keine Assoziationen: Infomat: Referenz auf die Haupt-Kontrollklasse Attribute: theapp: Instanz der Klasse Infomat zum Zugriff auf die Kontrollklasse mainwindow: Instanz der Klasse MainWindow run(): delegiert an die initgui()-methode weiter initgui(): verweisst auf die showmainwindow - Methode showmainwindow(): diese Methode erzeugt ein Objekt von MainWindow und ruft die Methode show() auf, die das Hauptfenster anzeigen lässt. refreshgui(): Aktualisiert die GUI Ansicht updategui(): Setzt die Labes des Hauptfensters neu refreshfilelist(): Aktualisiert die Ansicht der Tabelle im Hauptfenster. addlogmessage(): Fügt eine Message in das Logfeld im Hauptfenster. adderromessage(): Fügt eine Fehlermeldung in das Logfeld im Hauptfenster. showinfodialog(string): Erzeugt ein Infofenster mit der übergebenen Nachricht. showdocumentexistdilaog(document, int, Processor): Startet den DocumentExistDialog. showprogressbar(int, string): Initialisiert die Progressbar. increasecompleteprogressbar():erhöht die Progressbar für den Gesamtfortschritt. increasesingelprogressbar(): Erhöht die Progressbar für den detailierten Fortschritt. closeprogressbar(): schliesst die Progressbar. opendocument(document): Öffnet ein Dokument showwarningdialog(string, String): Erzeugt einen Warnungsdialog. showerrodialog(string, String): Erzeugt einen Fehlerdialog. showquestiondeletedialog(document):erzeugt einen Dialog, der den Benutzer fragt ob das Dokument gelöscht werden soll. showdocumenteditor(): Erzeugt den Dokumenteninformationseditor. refreshontology(): Lädt den Ontologiebaum neu. showsplashscreen(int): Erzeugt den Splashscreen. setsplashstatus(string): Setzt einen Text in die Statusbar des Splashscreens 119

120 splashstep(): Erhöht die Progessbar um einen Schritt Klasse: MainWindow Paket: de.wiol.infomat.gui Beschreibung: Die Klasse mainwindow stellt die Ontologie mit den einsortierten Dokumenten dar, zu den Dokumenten werden spezifische Details angezeigt. Hierbei handelt es sich um die Metadaten, die von Dublin Core vorgeschlagen wurden. Zu einem Dokument werden alle verfügbaren Metadaten angegeben. Oberklasse: keine Unterklasse: keine Interfaces: keine Assoziationen: Aus dieser Klasse erfolgt der Zugriff auf: das Suchfenster, Auswahlfenster zur Klassifikation, der Ontologie-Editor und die Hilfefunktion. Attribute: diverse Gui-Elemente wie Buttons, Menuitems, Layouts, Composites etc. initgui(): intitalisiert das Hauptfenster mit allen Komponenten (Menüleiste, Toolbar, Onotologie-Baum, einsortierte Dokumente, Statusbar, usw) initmenubar(): baut die Menüleiste mit allen Menüpunkten auf. initpopupmenu(): baut ein Popupmenü auf. inittoolbar(): baut die Toolbar mit allen Elmenten auf. refreshfilelist(): Erzeugt die Tabelle mit den Dokumenten neu. refreshgui(): Der Ontologiebaum und die Tabelle mit den einsortierten Dokumenten werden neu geladen und angezeigt. refreshontologytree(): Lädt den Baum neu. refreshontologytree(string): Setzt den Onotologiebaum zu einer angegebenen Klasse setmetadata(): Setzt zu einem Dokument alle vorhanden Metadaten. setlabels(): Setzt alle Namen von Labels, Menüpunkten, Toolitems, etc adaptcolumnwidth(table): Berechnet die Größe alle Spalten einer übergegebenen Tabelle show(): ruft das Hauptfenster auf createlist(): Erstellt zu einem angebenen Knoten oder Blatt des Ontollogiebaums eine Tabelle mit den Dokumenten die in diese Kategorie einsortiert worden sind disposechildren(composite parent): Entfernt alle Kindelemente aus dem übergebenen Composites, damit die Metadaten dynamisch zu einem Dokument angezeigt werden können getter/setter für die Attribute Ergänzende Beschreibungen: Layout und Funktionalität 120

121 Abbildung 30: Hauptfenster 1. Menüleiste 2. Toolbar 3. Anzeige der Ontologieklassen 4. Anzeige der in der ausgewählten Klasse vorhandenen Dokumente 5. Anzeige der Metadaten zu einem ausgewählten Dokument 6. Loggingbereich des Hauptfensters. Hier werden wichtige Mitteilungen an den Benutzer ausgegeben 7. Statusbar 121

122 Klassendiagramm: SearchWindow, SelectFileEditor, SimilarDocuments, SelectFileFunctionality Abbildung 31: Klassendiagramm: Suchmaske, Auswahldialog und Suche nach ähnlichen Dokumenten 122

123 Klasse: SearchWindow Paket: de.wiol.infomat.gui Beschreibung: Die Klasse SearchWindow bietet dem Benutzer verschiedene Möglichkeiten auf den bereits einsortieren Dokumenten zu suchen. Einmal ist es möglich auf den Metadaten zu den Dokumenten zu suchen, zum anderen wird eine einfache Stichwortsuche realisiert. Bei dieser Stichwortsuche kann der Benutzer drei verschiedene Genauigkeitsstufen auswählen. Eine weitere Suchmöglichleit ist die kommandobasierte Suche. Hier kann der Benutzer verschiedene Suchkommandos nach einer vorgegebenen Syntax eingeben. Das jeweilige Ergebnis wird dem Benutzer geeignet präsentiert. Oberklasse: Dialog Unterklasse(n): keine Interfaces: keine Assoziationen: keine Attribute: diverse GUI-Elemente (Shell, Display, Button, Layout, Table, SashForm,...): Wird zur Darstellung der GUI benötigt. buttonlistener: ist für den Such-Button zuständig. keylistener: fängt Tastaureingaben, wie Return im Eingabefeld ab. popuplistener: ist für das Abfangen der Ereignisse des PopupMenüs aus der Ergebnisstabelle zuständig SearchWindow (shell): Defaultkonstruktor der Klasse SearchWindow mit Referenz auf das MainWindow. buildsimplesash(): Erzeugt einen Sash für den Tab, in dem die einfache Suche angezeigt wird. buildadvancedsash(): Erzeugt einen Sash für den Tab, in dem die erweiterte Suche angezeigt wird. createresulttable(): Erzeugt die Tabelle in der das Suchergebnis angezeigt wird. buildpopupmenu(): Erzeugt das Popupmenü für die Tabelle die das Sucherbenis anzeigt. buildsearchrow(): Erzeugt eine Zeile, die zwei Comboboxen und ein Textfeld enthält, ist für die Erweiterung der erweiterten Suche zuständig. buildsearchmask(): Erzeugt den Inhalt des Tabs für die erweiterte Suche. buildsimplesearchmask(): Erzeugt den Inhalt des Tabs für die einfache Suche. buildtabfolder(): Erzeugt TabFolder für das Suchfenster. buildbottonrow(): Erzeugt Zeile mit Schließen -Button createresult(list results): ist für die Anzeige des Suchergebnisses zusändig. Das Suchergebnis wird als List-Objekt übergeben. close(): Schließt das Suchfenster. disposebutton(): Entfernt die vier Buttons (+,-, neue Suche und senden) in der Metadatensuche unterhalb der Suchreihen. disposerow(): Entfernt eine Reihe in der Metadatensuche wenn der minus-button gedrückt 123

124 wurde. setlogtext(string text, boolean iserror): Schreibt den übergebenen Text schwarz, bzw. rot ins Logfenster des Suchfensters initmetadatatypes(): Erzeugt eine HashTable für die Metadatentypen, die dann in der Combobox in der Metadatensuche angezeigt werden. diverse getter und setter Ergänzende Beschreibungen: (Beschreibung des Screenshots) Abbildung 32: Suchmaske 1. Auswahl der Suchart 2. Auswahl der Suchart innerhalb der einfachen Suche 124

125 3. Eingabebereich für den Suchbegriff 4. Abschicken der Suchanfrage 5. Auswahl der Suchgenauigkeit innerhalb der Stichwortsuche 6. Anzeige des Ergebnisses 7. Popupmenü für weitere Arbeiten mit den Suchergebnissen 8. LogMessages Bereich des Suchfensters Klasse: SelectFileEditor Paket: de.wiol.infomat.gui Beschreibung: Die Klasse SelectFileEditor ermöglicht dem Benutzer den Auswahldialog (siehe Abbildung 27: Klassendiagramm: EventManagement) zu öffnen und Dokumente mit bestimmter Tiefe und bestimmten Dateitypen auszuwählen. Oberklasse: keine Unterklasse(n): keine Interfaces: keine Assoziationen: wird durch das Hauptfenster aufgerufen Attribute: Icon : Der Name des Images auswahldialog: Der Titel des Fensters dirpath: Der Name des ausgewählten Verzeichnisses datatypstr: Ein Feld, beinhaltet die Elemente des 'datatypcombo' diverse GUI-Elemente init(): intitalisiert das Auswahlfenster mit allen Komponenten Ein Menge von Methoden, die jeweils Elemente des Fensters zurückliefern Ergänzende Beschreibung: (Beschreibung des Screenshots) 125

126 Abbildung 33: Auswahldialog zur Extraktion von Dateien und Dokumenten 1. Anzeige der in dem ausgewählten bzw. der darunter liegenden Ordner vorhandenen Dateien 2. Möglichkeit die Dokumente zwischen den verschiedenen Bereichen hin und her zu schieben 3. Bereich mit den auswählten Dokumenten, die extrahiert und analysiert werden sollen 4. Möglichkeit einen Ordner aus dem Dateisystem, eine bestimmte Tiefe und den Dateityp auszuwählen 5. Anstoßen der Extraktion mit den ausgewählten Dokumenten Klasse: SelectFileFunctionality Paket: de.wiol.infomat.gui Beschreibung: Die Klasse SelectFileFunctionality ist ein Hilfsklasse, die die Funktionalität der 'SelectFileEditor' Klasse zur Verfügung stellt. Oberklasse: keine Unterklasse(n): keine Interfaces: keine Assoziationen: Diese Klasse bietet verschiedenen Methoden, von Listenerklasse 'SelectFileListener' aufgerufen werden. Attribute: 126

127 theapp: Referenz auf die Hauptklasse. SelectFileFunctionality selfunc: Referenz auf sich selbst. selectedfilevector: Zum Speichern von ausgewählten Dokumentenpfaden aus einem Verzeichnis. sortinglist: Enthält Elemente, die einsortiert werden. path: Pfad des ausgewählten Verzeichnisses opendirdialog(): Zum Öffnen eines DirectoryDialog um ein bestimmtes Verzeichnis auszuwählen. readdircontents(string, int ): Zum Erarbeiten eines Dokumentenpfad aus dem ausgewählten Verzeichnis. extension(file ): Überprüft das übergebene File-Objekt (oder das entsprechende Verzeichnis, dass dadurch bezeichnet wird) auf vom Inf-O-mat unterstützte Dateiformate (die wiederum in de.wiol.infomat.control.infomatpreferences) festgelegt sind. selectdatatyp(string ): Zur Auswahl von allen Dateienendungen (Dateitypen). selectalonedatatyp(): Zur Auswahl von einer Dateienendung (Dateitypen). addallfiletolist(swt.list, SWT.List): Fügt alle Dateien (bzw. die Pfade zu diesen Dateien) aus der linken Liste in die rechte ein addalonefiletolist(swt.list, SWT.List ): Fügt eine Dateien (bzw. den Pfad zu dieser Datei) aus der linken Liste in die rechte ein public void makevisible(): Wenn ein GUI-Element (z.b. ein Button ) nicht verwendet wird, dann wird es auf inaktiv gesetzt. SendToSort(): Die ausgewählten Elemente werden sortiert: Klasse: SimilarDocuments Paket: de.wiol.infomat.gui Beschreibung: Die Klasse SililarDocuments dient der Anzeige des Suchergebnisses nach ähnlichen Dokumenten. Oberklasse: keine Unterklasse(n): keine Interfaces: Dialog Assoziationen: keine Attribute: diverse GUI-Elemente SimilarDocuments(Shell paren, List results): Konstruktor der Klasse SimilarDocuments. buildcomposite(): Erzeugt ein Composite zur Anzeige eines Textes. 127

128 buildbottomrow(): Erzeugt eine Zeile mit einem Button. createtable(): Erzeugt eine Tabelle mit den Ergebnissen der Suche. close(): Schließt das Fenster. diverse Getter und Setter 128

129 Klassendiagramm: Hilfsklassen Abbildung 34: Klassendiagramm: Hilfsklassen Klasse: StatusBar Paket: de.wiol.infomat.gui Beschreibung: Diese Klasse ist für die Statusleiste des Haupfensters zuständig. Oberklasse: Composite Unterklasse(n): keine Interfaces: keine Assoziationen: MainWindow Attribute: Gui-Elemente wie Layouts init: initialisiert die Statusbar mit dem Layout und Label setstatustext(string text, boolean stripaccelerator): Gibt den entsprechenden Text in der Statusbar im Hauptfenster an 129

130 Klasse: LogHistory Paket: de.wiol.infomat.gui Beschreibung: Mit dieser Klassen können andere Module Nachrichten schicken, die im Hauptfenster dargestellt werden. Oberklasse: Composite Unterklasse(n): keine Interfaces: keine Assoziationen: MainWindow Attribute: diverse Gui-Elemente wie beispielsweise Labels, Buttons diverse getter und setter addlogmessage: fügt eine Nachricht hinzu. initpopupmenu: Erzeugt ein Popup Menü im Textfeld. diverse getter und setter Klasse: LogData Paket: de.wiol.infomat.gui Beschreibung: Diese Klasse dient dazu eine String und optional ein Datenobjekt für das Logfenster zu beinhalten. Oberklasse: keine Unterklasse(n): keine Interfaces: keine Assoziationen: MainWindow Attribute: message: Die Nachricht, die angezeigt wird. data: Das optionale Objekt zur Nachricht. LogData(String, Object): Konstruktor der Klasse LogData(String): Konstruktor der Klasse LogData(String, List, Object): Konstruktor der Klasse getmessage(): Liefert die Nachricht die im Logfenster angezeigt werden soll. getdata(): Liefert das Datenobjekt zur Lognachricht. setdata(): Setzt das Datenobjekt. 130

131 setmessage(): Setzt die Nachricht. Klasse: MessageBuilder Paket: de.wiol.infomat.gui Beschreibung: Mit dieser Klassen werden unterschiedliche Nachrichten mit Variabeln erzeugt. Oberklasse: keine Unterklasse(n): keine Interfaces: keine Assoziationen: MainWindow Attribute: resultstring: String kombiniert mit den übergebenen Parametern. MessageBuilder(String, List): Konstruktor der Klasse, initialisiert das Object mit dem Text und den Parametern. getresultstring(): Liefert den generierten String. Klasse: OffsetRange Paket: de.wiol.infomat.gui Beschreibung: Diese klasse speichert die Position des Links innerhalb eines Strings als offset. Oberklasse: keine Unterklasse(n): keine Interfaces: keine Assoziationen: MainWindow Attribute: startoffset: Start des Offsets endoffset: Ende des Offsets OffsetRange(int, int): Konstruktor der Klasse. getrange(): Liefert die Abgrenzung. between(int): Überprüft ob der Offset sich zwischen den Offsets befindet partof(offsetrange): Testet ob der OffsetRange im übergebenen OffsetRange liegt. 131

132 Klassendiagramm: Klassen der Preferences Abbildung 35: Klassendiagramm: Preferences Klasse: PreferencesDialog Paket: de.wiol.infomat.gui Beschreibung: Diese Klasse stellt einen Dialog für die Benutzereinstellungen zur Verfügung. Auf der linken Seite wird ein Baum dargestellt, in dem die verschiedenen Einstellungen aufgegliedert werden. Auf der rechten Seite des Fensters befinden sich die entsprechendem, zum angewählten Knoten im Baum gehörenden Einstellungen, die vorgenommen werden können. Oberklasse: Dialog Unterklasse(n): keine Interfaces: keine Assoziationen: InfomatPreferences, PreferencesDialogListener 132

133 Attribute: diverse Gui-Elemente wie beispielsweise Labels, Buttons builddialogarea(): Baut den Dialog auf, so dass der Baum auf der linken Seite und das Composite auf der rechten Seite erscheint. buildtree(): Erzeugt den Baum createrootdata(): Erzeugt das Composite für die Wurzel im Baum. close(): schliesst das Fenster separator(): Zeichnet eine horizontale Linie im übergebenen Composite diverse getter und setter Klasse: PreferencesDatabase Paket: de.wiol.infomat.gui Beschreibung: Mit dieser Klasse können Datenbank Einstellungen verändert werden. Oberklasse: Composite Unterklasse(n): keine Interfaces: keine Assoziationen: InfomatPreferences, PreferencesDatabaseListener Attribute: diverse Gui-Elemente wie beispielsweise Labels, Buttons diverse getter und setter Klasse: PreferencesExternalViewer Paket: de.wiol.infomat.gui Beschreibung: Mit dieser Klasse können die Pfade für externe Betrachter angegeben werden, diese werden in den Infomat Preferences gespeichert. Oberklasse: Composite Unterklasse(n): keine Interfaces: keine Assoziationen: InfomatPreferences, PreferencesExternalViewerListener Attribute: diverse Gui-Elemente wie beispielsweise Labels, Buttons 133

134 diverse getter und setter Klasse: PreferencesGui Paket: de.wiol.infomat.gui Beschreibung: Mit dieser Klasse kann die Sprache der Benutzungsoberfläche sowie die Auflösung des Fensters geändert werden. Oberklasse: Composite Unterklasse(n): keine Interfaces: keine Assoziationen: InfomatPreferences, PreferencesGuiListener Attribute: diverse Gui-Elemente wie beispielsweise Labels, Buttons diverse getter und setter Klasse: PreferencesOntology Paket: de.wiol.infomat.gui Beschreibung: Mit dieser Klasse können verschiedene Einstellungen für die Ontologie vorgenommen werden, wie beispielsweise Auswahl der zu verwendeten Onologie und die Darstellung der Hilfsklassen im Onologieeditor Oberklasse: Composite Unterklasse(n): keine Interfaces: keine Assoziationen: InfomatPreferences, PreferencesOntologyListener Attribute: diverse Gui-Elemente wie beispielsweise Labels, Buttons diverse getter und setter Klasse: PreferencesSemanticAnalysis 134

135 Paket: de.wiol.infomat.gui Beschreibung: Mit dieser Klasse können verschiedene Einstellungen für die Semantische Analyse vorgenommen werden, wie die Auswahl des zu verwendeten Klassifizierungsalgorithmus und der Klassifizierungsgrenzwert. Oberklasse: Composite Unterklasse(n): keine Interfaces: keine Assoziationen: InfomatPreferences, PreferencesSemanticSearchAnalysisListener Attribute: diverse Gui-Elemente wie beispielsweise Labels, Buttons diverse getter und setter 135

136 Klassendiagramm: diverse Dialogfenster: Abbildung 36: Klassendiagramm: Dialogfenster 136

137 Klasse: InformationDialog Paket: de.wiol.infomat.gui Beschreibung: Die Klasse InformationDialog stellt einen kleinen Dialog dar, der den Benutzer über aktuelle Vorgänge im Programm informieren soll. Er zeigt eine Nachricht/Mitteilung die mit OK bestätigt werden kann. Oberklasse: keine Unterklasse(n): keine Interfaces: Assoziationen: keine Attribute: mainwindow : Referenz auf das MainWindow Objekt. listener: Referenz auf das MainWindowListener Objekt. diverse GUI-Elemente InformationDialog(Shell, String, MainWindowListener): Defaultkonstruktor der Klasse. Übergeben wird die Shell des aufrufenden Fenster, sowie die Nachricht und der MainWindowListner. InformationDialog(Shell, String): Defaultkonstruktor der Klasse. Übergeben wird die Shell des aufrufenden Fensters, sowie die anzuzeigende Nachricht. Klasse: QuestionDialog Paket: de.wiol.infomat.gui Beschreibung: Die Klasse QuestionDialog stellt einen kleinen Dialog dar, der eine Bestätigung oder einen Abbruch des Löschens eines Dokuments abfragt. Er zeigt eine Frage die bestätigt oder verneint werden kann. Oberklasse: keine Unterklasse(n): keine Interfaces: keins Assoziationen: keine Attribute: mainwindow : Referenz auf das MainWindow Objekt. ExtendedDialogListener questionlistener: Referenz auf das ExtendedDialogListener Objekt. GUI_TREE_MOVE_DOCUMENT: Dient zur Unterscheidung der Dialogaufrufe GUI_TREE_DELETE_CLASSASSIGNMENT: Dient zur Unterscheidung der Dialogaufrufe GUI_SEARCH_DELETE_DOCUMENT: Dient zur Unterscheidung der Dialogaufrufe GUI_PASTE_DOCUMENT: Dient zur Unterscheidung der Dialogaufrufe 137

138 GUI_EDITDOC_DELETE_DOCUMENT: Dient zur Unterscheidung der Dialogaufrufe GUI_TABLE_DELETE_CLASSASSIGNMENT: Dient zur Unterscheidung der Dialogaufrufe GUI_TABLE_DELETE_DOCUMENT: Dient zur Unterscheidung der Dialogaufrufe diverse GUI-Elemente QuestionDialog(Shell parent, String message, Document doc, SelectionListener listener, int type): Konstruktor der Klasse. Übergeben wird die Shell des aufrufenden Fenster, sowie die Nachricht, SelectionListener, ein Dokument und der Typ um was für eine Frage es sich handelt. Anhand dieses Typs wird die entsprechende Aktion ausgeführt Klasse: DocumentProgressDialog Paket: de.wiol.infomat.gui Beschreibung: Die Klasse DocumentProgressDialog bietet eine Forschrittsanzeige während eine Menge von Dokumenten extrahiert und analysiert wird. Sie zeigt einen Fortschrittsbalken für den gesamten Fortschritt und einen für die Forschrittsanzeige jedes einzelnen Dokuments. Oberklasse: Dialog Unterklasse(n): keine Interfaces: Assoziationen: keine Attribute: diverse GUI-Elemente (Shell, Display, Button, Layout, Table, SashForm,...): Wird zur Darstellung der GUI benötigt. listener : Referenz auf das DocumentProgressListener Objekt pref: Referenz auf die InfomatPreferences DocumentProgressDialog(Shell int, String): Konstruktor der Klasse, übergeben wird die Shell des Parent-Fensters, die maximale Anzahl der Schritte und ein String für den Titel des Fensters. increasesinglestep(): Erhöht den Counter der Forschrittsanzeige für jedes Dokument. increasemaximumstep(): Erhöht den Counter der Anzeige des gesamten Forschritts. close(): Schließt den Dialog diverse Getter und Setter Ergänzende Beschreibungen: (Beschreibung des Screenshots) 138

139 Abbildung 37: Progressbar 1. Anzeige des Gesamtfortschritts 2. Anzeige des einzelnen Fortschritts. Klasse: ExternalViewerDialog Paket: de.wiol.infomat.gui Beschreibung: Mit dieser Klasse wird ein kleiner Dialog erzeugt, dem dem Benutzer erlaubt einen speziellen Betrachter für einen bestimmte Dataiendung anzugeben oder direkt zu den Preferences zu wechseln um dort die Einstellungen vorzunehmen. Oberklasse: keine Unterklasse(n): keine Interfaces: keins Assoziationen: keine Attribute: diverse GUI-Elemente ExternalViewerDialog(Shell, Document): Konstruktor, erzeugt das Layout mit allen Komponenten. builddataarea: Baut das Datenfeld mit allen Komponenten auf, dort werden Informationen angezeigt. buildbuttonrow(): Baut das untere Composite mit den Buttons auf. close(): Setzt die Label der Komponenten. diverse getter und setter für die GUI-Komponenten. 139

140 Klasse: EditDocumentDialog Paket: de.wiol.infomat.gui Beschreibung: Diese Klasse implementiert einen Dialog zur Anzeige von Informationen zu einem Dokument. Der Dialog ist in zwei Tabs aufgeteilt. In dem ersten werden Name, Pfad, Größe, usw und die zu einem Dokument gehörenden Klassen inklusive Wahrscheinlichkeit angezeigt. Es ist möglich den Namen, den Pfad und die Klassen, sowie deren Wahrscheinlichkeiten zu verändern. Im zweiten Tab ist es möglich die zu einem Dokument gehörenden Metadaten zu editieren. Der Inhalt dieses Tabs befindet sich in der Klasse MetadataEditor. Oberklasse: Dialog Unterklasse(n): keine Interfaces: Assoziationen: keine Attribute: diverse GUI-Elemente (Shell, Display, Button, Layout, Table, SashForm,...): Wird zur Darstellung der GUI benötigt. pref : Referenz auf die InfomatPreferences doc: Referenz auf das übergebene Dokument ontclasslist: Referenz auf die Ontologieklassen des Infomaten parenttable: Referenz auf die Tabelle im parent-fenster, hier entweder null oder die Tabelle aus dem Suchfenster ontologyid: Vector, um die Ids der Ontologieklassen zu verarbeiten edlistener: Referenz auf das EditDocumentDialog Objekt metadataeditor: Referenz auf das MetadataEditor Objekt EditDocumentDialog(Shell, Document, Table): Konstruktor der Klasse. Übergeben wird die Shell des mainwindows, das zu bearbeitende Dokument und die Tabelle des parent-fensters addclasses(): Erzeugt für jede dem Dokument zugehörige Klasse eine Zeile mit Name, Wahrscheinlichkeit, Slider und Löschen-Button buildbottomrow(): Erzeugt die untere Zeile des Fensters mit dem Beenden-Button buildtabfolder(): Erzeugt eine TabFolder mit zwei Tabs close(): Schließt den Dialog und ruft die refresh-funktion des MainWindows auf, wenn dies das parent-fenster ist disposechildren(): Entfernt die Elemente aus einer übergebenen Composite enablenewclassbutton(): Aktiviert oder deaktiviert den Button Neue Klasse hinzufügen getdocumentdata(): Diese Methode holt die Informationen Name, Pfad, Datentyp, Größe und Extraktionsdatum aus dem übergebenen Dokumentobjekt und speichert die Werte in den dafür vorgesehenen Attributen der Klasse. getontologyclasses(): Holt die vorhandenen Ontologieklassen und speichert sie in einem Vector initdocumenteditmask(): Erzeugt den Inhalt des ersten Tabs in dem die Dokumentenfunktionen angezeigt werden 140

141 openfileselection(): Öffnet einen Dateiauswahldialog setlabels(): Setzt die Texte für die verschiedenen Buttons und Labels im Fenster diverse Getter und Setter Ergänzende Beschreibungen: (Beschreibung des Screenshots) Abbildung 38: Dokument Informationen Editor 1. Auswahl des Tabs 2. Bereich für die allgemeinen Informationen zu dem übergebenen Dokument 3. Möglichkeit den Namen des Dokuments zu ändern 4. Möglichkeit den Pfad des Dokuments zu ändern 5. Bereich für die Klassenzuordnungen des Dokuments 6. Möglichkeit die Wahrscheinlichkeiten einer Klasse zu ändern 7. Möglichkeit eine Klasse zu löschen 8. Hier ist es möglich eine neue Klasse auszuwählen und dem Dokument hinzuzufügen 9. Möglichkeit das gesamte Dokument zu löschen 141

142 10.Hier können die gemachten Änderungen gespeichert werden, ansonsten werden sie beim Beenden nicht gespeichert." Klasse: MetaDataEditor Paket: de.wiol.infomat.gui Beschreibung: Diese Klasse realisiert die Funktionalität und das Aussehen des Metadatentabs im EditDialog. Oberklasse: keine Unterklasse(n): keine Interfaces: keine Assoziationen: keine Attribute: diverse GUI-Elemente (Button, Layout, Table, SashForm,...): Wird zur Darstellung der GUI benötigt. prefs: Referenz auf die InfomatPreferences editdialog: Referenz auf das EditDocumentDialog Objekt parent: Referenz auf das übergebene Composite aus dem EditDocumentDialog MetaDataEditor(EditDocumentDialog editdoc, Composite parent): Konstruktor der Klasse addmetadatalistitem(int index, String text): Fügt einen neuen Wert für ein Metadatum in die Liste der Metadaten des Dokuments anhand eines übergebenen Indexes ein changemetadatalistitem(int index, String text): Ändert einen Wert für ein Metadatum in der Liste der Metadaten des Dokuments anhand eines übergebenen Indexes changetoenglish(string type): gibt den englischen Begriff zu dem übergegenen Metadatum zurück createtable(): Schreibt alle im Dokument vorhandenen Metadaten in die Tabelle deletemetadatalistitem(string type): Löscht ein Metadatum aus der Liste isexistinmetadatalist(int index): Testet ob ein mit dem Index übergenenes Metadatum schon in der Metadatenliste in der Combobox vorhanden ist matadatatypindex(string type): Gibt den Index zu dem übergenenen Metadatum zurück tableisselected(): Testet ob die Tabelle selektiert ist tableselection(int index): Selektiert einen Tabelleneintrag Ergänzende Beschreibungen: (Beschreibung des Screenshots) 142

143 Abbildung 39: Metadaten Editor 1. Name des Dokuments 2. Anzeige des vorhandenen Metadaten 3. Möglichkeit ein Metadatum auszuwählen und es hinzuzufügen, ein vorhandenes zu ändern oder zu löschen 4. Eingabe des Wertes für das ausgewählte Metadatum Klasse: ExtendedQuestionDialog Paket: de.wiol.infomat.gui Beschreibung: Die Klasse DocumentExist stellt einen kleinen Dialog dar, der aufgerufen wird, wenn während der Extraktion das zu extrahierendes Dokument bereits vorhanden ist oder eine neuere Version existiert, oder beim Update das zu updatende Dokument gelöscht ist oder eine neuere Version vorhanden ist. Der Benutzer wird dann gefragt, ob er dieses Dokument noch einmal extrahieren, bzw. updaten möchte oder nicht. Oberklasse: keine Unterklasse(n): keine Interfaces: Dialog 143

144 Assoziationen: keine Attribute: CLASSIFICATION_DOCUMENT_EXIST: Dient zur Unterscheidung der Dialogaufrufe CLASSIFICATION_DOCUMENT_MODIFIED: Dient zur Unterscheidung der Dialogaufrufe UPDATE_DOCUMENT_NOT_FOUND: Dient zur Unterscheidung der Dialogaufrufe UPDATE_DOCUMENT_MODIFIED: Dient zur Unterscheidung der Dialogaufrufe GUI_MOVE_DOCUMENT: Dient zur Unterscheidung der Dialogaufrufe GUI_DELETE_CLASSASSIGNMENT : Dient zur Unterscheidung der Dialogaufrufe doc: Referenz auf das Dokument um das es geht. processor: Referenz auf das DocumentProcessor Objekt. diverse GUI-Elemente ExtendedQuestionDialog(Shell parent, Document doc, int type, Processor proc): Konstruktor der Klasse createwindow(): Erzeugt den Inhalt des Dialogs Klasse: InfomatHelp Paket: de.wiol.infomat.gui Beschreibung: Diese Klasse stellt dide Hilfedokumente zur Verfügung. Oberklasse: keine Unterklasse(n): keine Interfaces: keine Assoziationen: MainWindow Attribute: diverse Gui-Elemente wie beispielsweise Labels, Buttons diverse getter und setter Ergänzende Beschreibungen: 144

145 Abbildung 40: Hilfe Klasse: AboutDialog Paket: de.wiol.infomat.gui Beschreibung: Erzeugt ein Dialog mit Angabe aller Entwickler Oberklasse: Dialog Unterklasse(n): keine Interfaces: keine Assoziationen: MainWindow Attribute: diverse Gui-Elemente wie beispielsweise Labels, Buttons diverse getter und setter 145

146 Klasse: StatisticDialog Paket: de.wiol.infomat.gui Beschreibung: Erzeugt einen Warunungsdialog Oberklasse: Dialog Unterklasse(n): keine Interfaces: keine Assoziationen: MainWindow StatisticDialog(Shell): Erzeugt den Statistik Dialog setdocumentdequantitycontent(): Setzt den Wert der Anzahl deutscher Dokumente. setdocumentenquantitycontent(): Setzt den Wert der Anzahl englischer Dokumente. setdocumentmanuquantitycontent(): Setzt den Wert von manuell einsortierten Dokumente. setdocumentkeyquantitycontent(): Setzt die Anzahl der Verwendung der Keyword Klassifikation. setdocumentbayesquantitycontent(): Setzt die Anzahl der Verwendung der Bayes Klassifikation. setdocclassquantitycontent(): Setzt die Gesamtanzahl der Dokumente. setclassquantitycontent(): Setzt die Anzahl der Klassen. setrelationaveragecontent(): Setzt die durchschnittliche Anzahl von Relationen pro Klasse. setprobabilityaverageforalldokuments(): Setzt die Anzahl der durchschnittlichen Wahrscheinlichkeiten für alle Dokumente setsizeaveragecontent(): Setzt die durchschnittliche Größe eines Dokuments. Ergänzende Beschreibungen: siehe Screenshot 146

147 Abbildung 41: Statistik Dialog Klasse: ErrorDialog Paket: de.wiol.infomat.gui Beschreibung: Erzeugt ein Fehlerdialog Oberklasse: Dialog Unterklasse(n): keine Interfaces: keine Assoziationen: MainWindow Attribute: keine errordialog(mainwindow, String, String): Konstruktor, erzeugt einen Dialog mit einer Nachricht und einem Titel. Klasse: WarningDialog Paket: de.wiol.infomat.gui 147

148 Beschreibung: Erzeugt einen Warnungsdialog Oberklasse: Dialog Unterklasse(n): keine Interfaces: keine Assoziationen: MainWindow Attribute: keine warningdialog(mainwindow, String, String): Konstruktor, erzeugt einen Dialog mit einer Nachricht und einem Titel. Klasse: ExportDialog Paket: de.wiol.infomat.gui Beschreibung: Diese Klasse stellt einen Export Dialog zur Verfügung, mit dem es möglich ist, Dokumente einer bestimmten, wählbaren Klasse inklusive ihrer Klassenhierarchie in das Dateisystem zu exportieren. Ebenfalls besteht die Möglichkeit, die aktuelle Ontologie in Form einer OWL Datei zu exportieren. Oberklasse: Dialog Unterklasse(n): keine Interfaces: keine Assoziationen: Infomat: Referenz auf die Haupt-Kontrollklasse Attribute: HELP_URL: String Konstante, die angibt, welche HTML-Datei zur Anzeige der kontextsensitiven Hilfe für diesen Dialog genutzt werden soll. exportclass: Referenz auf die zu exportierende Klasse aus der Ontologie. mainlistener: Referenz auf den ExportDialogListener, der auf auftretende Events innerhalb dieses Dialogs reagiert und diese verarbeitet. ontmanager: Referenz auf den Ontology Manager, der die Funktionen zur Verfügung stellt, um auf die gewählte Klasse und ihre Unterklassen zuzugreifen. prefs: Referenz auf die Preferences, in denen u.a. die aktuelle GUI Sprache festgelegt ist und auf die derzeitig genutzte OWL Datei für die Ontologie verweisen wird. (diverse GUI Elemente) ExportDialog(Shell): Konstruktor für den Dialog, dem das Shell Objekt des Elternfensters übergeben wird. ExportDialog(Shell, OWLOntologyClass): Konstruktor für den Dialog, dem neben dem Shell 148

149 Objekt des Elternfensters noch die zu exportierende Klasse übergeben wird. Dieser Konstruktor wird genutzt, wenn der Dialog aus dem Hauptfenster heraus über das Kontextmenü aufgerufen wird. buildbuttonrow(): Diese Methode erzeugt eine grafisch abgehobene Button Leiste am unteren Rand des Dialogs. builddataarea(): Diese Methode erzeugt die eigentlichen Dialog Elemente in der rechten Seite des Dialogfeldes. Hier hat der Benutzer die Möglichkeit, Daten für den Export anzugeben und weitere Einstellungen zu machen. builddialogarea(): Diese Methode erzeugt die obere Hälfte des Dialoges. Dieser Teil des Dialoges ist zweigeteilt. Links wird ein Baum mit den aktuellen Ontologie Klassen angezeigt, rechts befindet sich der eigentliche Dialogbereich, der durch die Methode builddataarea() erzeugt wird. close(): Schließt den Dialog und gibt zuvor belegte Resourcen wieder frei. separator(composite, int): Diese Methode wird zum optischen Abheben der Button Zeile vom Rest des Dialoges verwendet. Sie zeichnet einen waagerechten Strich über die gesamte Dialogbreite. setlabels(): Diese Methode dient zur Lokalisierung des Dialogs. Abhängig von der in den Preferences eingestellten GUI Sprache werden die Beschriftungen für die einzelnen grafischen Elemente hier gesetzt. Alle Elemente, die sprachabhängige Beschriftungen haben, sind hier zusammengefasst. Ergänzende Beschreibungen: Der Export Dialog ist ähnlich dem Hauptfenster in zwei Bereiche aufgeteilt. Links sieht der Benutzer eine baumartige Darstellung der Ontologie, in der er auswählen kann, aus welcher Klasse (samt ihren Unterklassen) die Dokumente in das Dateisystem exportiert werden sollen. Auf der rechten Seite bietet sich die Möglichkeit, zunächst das Zielverzeichnis für den Export anzuwählen.weiterhin kann über eine Checkbox gewählt werden, ob die Klassenhierarchie durch die Erstellung von Unterzerzeichnissen im Dateisystem nachempfunden werden soll. Ist diese Option beim Durchführen des Exports abgewählt, so werden alle Dokumente direkt in das gewählte Verzeichnis kopiert. Anderenfalls werden entsprechend den Klassen, denen die Dokumente zugeordnet sind, passende Unterverzeichnisse erstellt. 149

150 Abbildung 42: Exportdialog Klasse: OntologyEditor Paket: de.wiol.infomat.ontology.editor Beschreibung: Hauptklasse für den Ontologie Editor. In diesem Dialog Fenster wird die Ontologie mit allen Klassen und den Verknüpfungen zwischen den Klassen dargestellt. Der Benutzer hat hier die Möglichkeit, die Ontologie zu bearbeiten und zu erweitern. Oberklasse: Dialog Unterklasse(n): keine Interfaces: keine Assoziationen: keine Attribute: diverse GUI-Elemente (Button, Label, Layout,...) mainlistener: Referenz zur Listener Klasse OntologyEditorListener, in der die GUI Events verarbeitet und die Ontologie entsprechend angepasst wird. editedclass: Referenz zu der Klasse, deren Details sich im Editor gerade in der Bearbeitung befinden. manager: Referenz zum OWLOntologyManager, durch die es dem Listener ermöglicht wird, eine Manipulation der Ontologie anhand der in der GUI eingegebenen Daten durchzuführen. OntologyEditor(Shell): Konstruktor für den Ontologie Editor, der einen Dialog zur Verfügung stellt, mit dem die Ontologie Klassen mit den verbundenen Beziehungen bearbeitet werden kann. OntologyEditor(Shell, OWLOntologyClass): Konstruktor für den Ontologie Editor, der den Dialog erstellt und die übergebene Klasse direkt zur Bearbeitung im Editor auswählt und anzeigt. 150

151 close(): Schließt das OntologieEditor Fenster und entfernt es aus dem Speicher refreshtree(): Realisiert den Neuaufbau der grafischen Darstellung des Ontologie Baumes, um gerade durchgeführte Änderungen wie bspw. das Umbenennen oder Löschen einer Klasse, unmittelbar in der GUI sichtbar zu machen. refreshclassdetails(): Aktualisiert die angezeigten Klassen Details im Ontologie Editor. Die angezeigten Daten werden anhand des Attributs editedclass ermittelt. setdetailsenabled(boolean): Methode die den Bereich für die dargestellten Klassen-Details wahlweise aktiviert oder deaktiviert. So kann grafisch stärker hervor gehoben werden, ob gerade eine Klasse in Bearbeitung ist. diverse Getter- und Setter-Methoden für die einzelnen GUI Elemente Ergänzende Beschreibung: Der Ontologie-Editor ermöglicht die komfortable Manipulation der Ontologie mit Hilfe einer grafischen Oberfläche. Klassen können hinzugefügt, bearbeitet oder gelöscht werden. Weiterhin wird die Möglichkeit geboten, die Beziehungen (Prädikate) zwischen den Klassen zu modellieren. Optisch ist der Editor zweigeteilt: Im linken Drittel des Fensters wird eine Übersicht über die aktuell in der Ontologie verfügbaren Klassen in Form eines Baumes gegeben. Der Benutzer hat die Möglichkeit, durch diesen Baum zu navigieren und einzelne Klassen anzuwählen. Auf der rechten Seite des Editors werden die Details zu einer gewählten Klasse dargestellt. Hierzu wird zunächst die gewählte Klasse, die in einem Tripel das Objekt darstellt, genannt und weiter unten eine Liste aller Subjekte, die auf das Objekt verweisen, dargestellt. Für jedes dieser Subjekte besteht die Möglichkeit, die Gewichtung der Verknüpfung getrennt fest zu legen. Somit befindet sich in der unteren Tabelle eine Beschreibung der aktuellen Klasse. Dort werden zusätzlich auch die Beziehungen angezeigt, mit denen das Objekt auf die angezeigten Subjekte verweist, falls dies modelliert wurde. Zur Bearbeitung der Klassen und deren Verknüpfungen sind zwischen dem Baum und den Klassendetails Buttons angeordnet, die dem Benutzer einzelne Aktionen zur Verfügung stellen. Zum Anzeigen vom Klassendaten beispielsweise, muss zunächst die gewünschte Klasse im Baum selektiert werden. Nach einem Klick auf 'Klasse bearbeiten' werden dann die Details zu dieser Klasse angezeigt. Weitere Beschreibungen können durch den Button 'Beziehung hinzufügen' modelliert werden. Für die Modellierung kann eine Gewichtung oder Hierarchie verwendet werden. Zusammengesetzte Begriffe können durch geeignete Label beschrieben werden. Die Label Bayern und München deuten alleine nicht unbedingt auf einen Fußballverein hin, das Label Bayern München ist dagegen ein deutlicher Hinweis und auch intuitiv in einer Klasse beschreibbar.. Synonyme können durch eine starke gegenseitige Gewichtung (Gewicht 3 ) modelliert werden, die der Analyse eine genaue Zuordnung von Dokumenten ermöglichen. Je mehr Klassen und Beziehungen in der Ontologie modelliert werden, desto genauer lassen sich Dokumente automatisch in die richtige Klasse einsortieren. 151

152 Abbildung 43: Ontologie-Editor 152

153 Klasse: OntologyRelationDialog Paket: de.wiol.infomat.ontology.editor Beschreibung: Dialog Klasse für den Ontologie Editor. In diesem Dialog Fenster wird eine einzelne OWLOntologyRelation bearbeitet. Es werden Elemente zur Verfügung gestellt, um Gewichtungen, hierarchische und semantische Beziehungen zu modellieren und editieren.. Oberklasse(n): Dialog Unterklasse(n): keine Interfaces: keine Assoziationen: keine Attribute: diverse GUI-Elemente (Button, Label, Layout,...) mainlistener: Referenz zur Listener Klasse OntologyRelationDialogListener, in der die GUI Events verarbeitet und das OWLOntologyRelation Objekt, das in diesem Dialog editiert wird, entsprechend angepasst wird. manager: Referenz zum OWLOntologyManager, durch die es dem Listener ermöglicht wird, eine Manipulation der Ontologie anhand der in der GUI eingegebenen Daten durchzuführen. relation: Referenz zum in Bearbeitung befindlichen OWLOntologyRelation Objekt OntologyRelationDialog(Shell, OWLOntologyRelation): Konstruktor für den Relation Dialog, mit dem die OWLOntologyRelation angezeigt und manipuliert werden kann. close():schließt das OntologyRelationDialog Fenster und entfernt es aus dem Speicher diverse Getter- und Setter-Methoden für die einzelnen GUI Elemente Ergänzende Beschreibung: Abbildung 44: Ontology-Relation Dialog 153

154 Klassendiagramm: MainWindow-, SearchWindow-und SimialarDocumentsListener Abbildung 45: MainWindow-, SearchWindow-und SimialarDocumentsListener Klasse: SearchWindowListener Paket: de.wiol.infomat.gui.listener Beschreibung: Die Klasse SearchWindowListener ist für die Listener Logik des Suchfensters zuständig. Die Events des Suchfensters werden hier abgehandelt und weiter verarbeitet. Oberklasse: keine Unterklasse(n): keine Interfaces: SelectionListener, TraverseListener Assoziationen: keine Attribute: searchwindow: Referenz auf das SearchWindow Objekt. So wird ermöglicht, dass auf Objekte des Suchfensters zugeriffen werden kann. resulttable: Referenz auf die Ergebnisstablle aus dem Suchfenster. questionbox: Referenz auf das QuestionDialog Objekt. 154

155 SearchWindowListener (SearchWindow): Defaultkonstruktor der Klasse SearchWindowListener. widgetselected (SelectionEvent): Bearbeitet SelectionEvent für verschiedene Objekte und leitet sie an die entsprechenden Methoden weiter. widgetdefaultselected (SelectionEvent): Methode zur Bearbeitung eines SelectionEvents, das als default Event, z.b. bei einem Doppelklick in einer Liste auftritt. Das Event wird hier an die Methode widgetselected(selectionevent) delegiert. handletabselection(selectionevent): Bearbeitet SelectionEvents, die durch das aktivieren der Tabs ausgelöst werden. handlebuttonselection(selectionevent): Bearbeitet SelectionEvents, die durch die Buttons im Suchfenster ausgelöst werden und führt die entsprechenden Aktionen aus. handlemenuselection(selectionevent): Bearbeitet SelectionEvents, die durch das Popup Menü im Suchfenster ausgelöst werden und führt die entsprechenden Aktionen aus. handlecolumnselection(selectionevent): Bearbeitet SelectionEvents, die durch das Klicken der Tabellenspaltenüberschriften ausgelöst werden. defaultwindowsettings(): Löscht den Inhalt der Ergebnistabelle und setzt die Defaultwerte für das Fenster. sortingstringrow(int row, boolean direction): Sortiert die Tabellenzeilen die Strings enthalten. Die Sortierungsrichtung hängt von der vorherigen Richtung ab. sortingnumberrow(int row, boolean direction): Sortiert die Tabellenzeilen die Zahlen enthalten. Die Sortierungsrichtung hängt von der vorherigen Richtung ab. deletefile(document): Stößt das Löschen eines der Methode übergebenen Document Objekts an. updatefile(): Startet das updaten eines Dokuments. diverse Getter und Setter. Klasse: MainWindowListener Paket: de.wiol.infomat, gui.listener Beschreibung: Diese Klasse beinhaltet die Listener Logik für das Hauptfenster. Die Events des Hauptfensters werden hier abgehandelt und weiter verarbeitet. Oberklasse: keine Unterklasse(n): keine Interfaces: SelectionListener, DisposeListener, ArmListener, TreeListener, MenuListener Assoziationen: MainWindow Attribute: mainwindow: Referenz auf das MainWindow Objekt. Hierdurch wird es ermöglicht auf Objekte des MainWindows zuzugreifen um Events zu verarbeiten. widgetselected(selectionevent e): Bearbeitet SelectionsEvents für verschiedene Objekte und 155

156 leitet sie an die entsprechenden Methoden weiter handletableselection(selectionevent e): Events, die in der Tabelle auftreten, werden verarbeitet handletreeselection(selectionevent e): Bei jeder Anwahl eines Knotens oder Blatts im Baum wird die Suche mit dem Klassennamen des Knotens bzw. Blattes gestartet handletoolbarselection(selectionevent e): Events, die in der Toolbar auftreten, werden verarbeitet handlemenuselection(selectionevent e): Events, die in der Menüleiste auftreten, werden verarbeitet. widgetdefaultselected(selectionevent e): Methode zur Bearbeitung eines SelectionEvents, das als default Event, z.b. bei einem Doppelklick in einer Liste auftritt. Das Event wird hier an die Methode widgetselected(selectionevent) delegiert widgetdisposed(disposeevent arg0): Methode zur Behandlung eines DisposeEvents (bspw. bei Schließen eines Fensters) widgetarmed(armevent e): Diese Methode liefert den Text von den Menüpunkten für die Statusbar menushown(menuevent e): Falls die Menüleiste berüht wird, wird der Text der Menüpunkte in die Statusbar gesetzt startextractiondialog(): Methode zum Starten des Auswahlsdialogs zum Starten der Extraktion startsearchdialog(): Methode zum Starten der Suchmaske startsimilardocsearch(): Gibt zu einem Dokument ähnliche Dokumente an startontologyeditor(): Methode zum Starten des Ontologie-Editors. startupdate(): Aktualisiert alle Dokumente startupadefile(): Aktualisiert ein ausgewähltes Dokument close(): Beendet das Programm cut(): Verschiebt ein Dokument in die Zwischenablage copy(): Kopiert ein Dokument in die Zwischenablage classassignmentdeletionmessage(): Öffnet eine Fragedialog und fragt den Benutzer ob die Klassenzugehörigkeit zu einem Dokument gelöscht werden soll. documentdeletionmessage(): Öffnet einen Fragedialog und fragt den Benutzer ob das Dokument aus der Datenbank gelöscht werden soll. documentexistsmessage(): Öffnett einen Fragedialog und gibt an dass sich das Dokument bereits in der Datenbank befindet. rootpastedropmessage(): Öffnet eine Infobox und gibt an, dass in die Wurzel des Baums keine Dokumente eingefügt werden können. paste(): Leitet den Aufruf an performcopypaste(document) oder performcutpaste ein, je nach dem ob kopiert oder ausgeschnitten wurde. performcopypaste(document): Fügt das kopierte Dokument in die angewählte Klasse ein. performcutpaste(document): Fügt das ausgeschnittende Dokument in die angewählte Klasse ein. dragstart(dragsourceevent): Ermöglicht ein Drag, wenn ein Dokument in der Tabelle angwählt ist. 156

157 dragsetdata(dragsourceevent: Dragt ein auswähltes Dokument. drop(droptargetevent): Dropt ein gedragtes Dokument. Klasse: SimilarDocumentsListener Paket: de.wiol.infomat.gui.listener Beschreibung: Die Klasse SimilarDocumentsListener ist für die Listener Logik des SimilarDocuments Fensters zuständig. Die Events des Dialogs werden hier abgehandelt und weiter verarbeitet. Oberklasse: keine Unterklasse(n): keine Interfaces: SelectionListener Assoziationen: keine Attribute: similardoc: Referenz auf das SimilarDocuments Objekt. So wird ermöglicht dass auf Objekte des Dialogs zugegriffen werden kann. SimilarDocumentsListener (SimilarDocuments): Defaultkonstruktor der Klasse SimilarDocumentsListener. widgetselected (SelectionEvent): Bearbeitet SelectionEvent für verschiedene Objekte und leitet sie an die entsprechenden Methoden weiter. widgetdefaultselected (SelectionEvent): Methode zur Bearbeitung eines SelectionEvents, das als default Event, z.b. bei einem Doppelklick in einer Liste auftritt. Das Event wird hier an die Methode widgetselected(selectionevent) delegiert. handlebuttonselection(selectionevent): Bearbeitet SelectionEvents, die durch die Buttons im Fenster ausgelöst werden und führt die entsprechenden Aktionen aus. 157

158 Klassendiagramm: Listener zu den Preferences Abbildung 46: Klassendiagramm: Listener zu den Preferences Klasse: PreferencesDialogListener Paket: de.wiol.infomat.gui.listener Beschreibung: Diese Klasse behandelt alle auftretenden Events in PreferencesDialog. Oberklasse: keine Unterklasse(n): keine Interfaces: keine Assoziationen: PreferencesDialog, InfomatPreferences Attribute: dialog: Referenz auf PreferencesDialog widgetselected(selectionevent): Fängt alle auftretenden Events ab und gibt sie an die entsprechenden Methoden weiter. widgetdefaultselection(selectionevent): Fängt alle Events ab die durch Doppelklick gesendet werden und leitet sie an widgetselected(se) weiter. handlebuttonselection(selectionevent): Fängt alle Events von einem Button ab und leitet sie weiter. handletreeselection(selectionevent): Fängt alle Events von dem Baum ab und leitet sie weiter. 158

159 Klasse: PreferencesDatabaseListener Paket: de.wiol.infomat.gui.listener Beschreibung: Diese Klasse behandelt alle auftretenden Events in PreferencesDatabase. Oberklasse: keine Unterklasse(n): keine Interfaces: keine Assoziationen: PreferencesDatabase, InfomatPreferences Attribute: dialog: Referenz auf PreferencesDatabase widgetselected(selectionevent): Fängt alle auftretenden Events ab und gibt sie an die entsprechenden Methoden weiter. widgetdefaultselection(selectionevent): Fängt alle Events ab die durch Doppelklick gesendet werden und leitet sie an widgetselected(se) weiter. handletextselection(selectionevent): Fängt alle Events aus einem Textfeld ab und leitet sie weiter. Klasse: PreferencesExternalViewerListener Paket: de.wiol.infomat.gui.listener Beschreibung: Diese Klasse behandelt alle auftretenden Events in PreferencesExternalViewer. Oberklasse: keine Unterklasse(n): keine Interfaces: keine Assoziationen: PreferencesExternalViewer, InfomatPreferences Attribute: dialog: Referenz auf PreferencesExternalViewer widgetselected(selectionevent): Fängt alle auftretenden Events ab und gibt sie an die entsprechenden Methoden weiter. widgetdefaultselection(selectionevent): Fängt alle Events ab die durch Doppelklick gesendet werden und leitet sie an widgetselected(se) weiter. handlebuttonselection(selectionevent): Fängt alle Events von einem Button ab und leitet sie weiter. Klasse: PreferencesGuiListener Paket: de.wiol.infomat.gui.listener 159

160 Beschreibung: Diese Klasse behandelt alle auftretenden Events in PreferencesGui. Oberklasse: keine Unterklasse(n): keine Interfaces: keine Assoziationen: PreferencesGui, InfomatPreferences Attribute: dialog: Referenz auf PreferencesGui widgetselected(selectionevent): Fängt alle auftretenden Events ab und gibt sie an die entsprechenden Methoden weiter. widgetdefaultselection(selectionevent): Fängt alle Events ab die durch Doppelklick gesendet werden und leitet sie an widgetselected(se) weiter. handlecomboselection(selectionevent): Fängt alle Events aus einer Combobox ab und leitet sie weiter. Klasse: PreferencesOntologyListener Paket: de.wiol.infomat.gui.listener Beschreibung: Diese Klasse behandelt alle auftretenden Events in PreferencesOntology. Oberklasse: keine Unterklasse(n): keine Interfaces: keine Assoziationen: PreferencesOntology, InfomatPreferences Attribute: dialog: Referenz auf PreferencesOntology widgetselected(selectionevent): Fängt alle auftretenden Events ab und gibt es an die entsprechenden Methoden weiter. widgetdefaultselection(selectionevent): Fängt alle Events ab die durch Doppelklick gesendet werden und leitet sie an widgetselected(se) weiter. handlecomboevent(selectionevent): Fängt alle Events aus einer Combobox ab und leitet sie weiter. handlebuttonevent: Fängt alle Events von Buttons ab und leitet sie weiter Klasse: PreferencesSemanticAnalysisListener Paket: de.wiol.infomat.gui.listener Beschreibung: Diese Klasse behandelt alle auftretenden Events in PreferencesSemanticAnalysis. 160

161 Oberklasse: keine Unterklasse(n): keine Interfaces: keine Assoziationen: PreferencesSemanticAnalysis, InfomatPreferences Attribute: dialog: Referenz auf PreferencesSemanticAnalysis widgetselected(selectionevent): Fängt alle auftretenden Events ab und gibt es an die entsprechenden Methoden weiter. widgetdefaultselection(selectionevent): Fängt alle Events ab die durch Doppelklick gesendet werden und leitet sie an widgetselected(se) weiter. handlecomboselection(selectionevent): Fängt alle Events aus einer Combobox ab und leitet sie weiter. handlebuttonselection(selectionevent): Fängt alle Events von Buttons ab und leitet sie weiter 161

162 Klassendiagramm: diverse Listener zu Dialogen und sonstigen Fenstern Abbildung 47: Klassendiagramm: diverse Listener zu Dialogen und sonstigen Fenstern Klasse: ExternalViewerListener Paket: de.wiol.infomat.gui.listener Beschreibung: Die Klasse ExternalViewer ist für die Listener Logik des ExternalViewers Dialog zuständig. Die Events des Dialogs werden hier abgehandelt und weiter verarbeitet. Oberklasse: keine Unterklasse(n): keine Interfaces: SelectionListener Assoziationen: keine Attribute: externalviewer: Referenz auf das ExternalViewer Objekt. So wird ermöglicht dass auf Objekte des Dialogs zugegriffen werden kann. ExternalViewerDialogListener(ExternalViewerDialog): Konstruktor der Klasse. widgetselected (SelectionEvent): Bearbeitet SelectionEvent für verschiedene Objekte und leitet sie an die entsprechenden Methoden weiter. widgetdefaultselected (SelectionEvent): Methode zur Bearbeitung eines SelectionEvents, das als default Event, z.b. bei einem Doppelklick in einer Liste auftritt. Das Event wird hier an die Methode widgetselected(selectionevent) delegiert. Klasse: DocumentProgressListener 162

163 Paket: de.wiol.infomat.gui.listener Beschreibung: Die Klasse DocumentProgressListener ist für die Listener Logik des Fortschrittfensters zuständig. Die Events des Fortschrittfensters werden hier abgehandelt und weiter verarbeitet. Oberklasse: keine Unterklasse(n): keine Interfaces: SelectionListener, DisposeListener Assoziationen: keine Attribute: progressdialog: Referenz auf das DocumentProgressDialog Objekt DocumentProgressListener(DocumentProgessDialog progressdialog): Konstruktor der Klasse cancel(): Bricht den Klassifikationsprozess ab widgetdefaultselected(selectionevent): Verarbeitet defaultselectionevents aus dem DocumentProgessDialog. Das Event wird hier an die Methode widgetselected(selectionevent e) delegiert. widgetselected(selectionevent): Verarbeitet SelectionEvents aus dem DocumentProgessDialog widgetdisposed(disposeevent): Verarbeitet DisposeEvents aus dem DocumentProgessDialog Klasse: EditDocumentListener Paket:de.wiol.infomat.gui.listener Beschreibung: Die Klasse EditDocumentListener ist für die Listener Logik des Dokumenteneditors zuständig. Die Events des Dokumenteneditors werden hier abgehandelt und weiter verarbeitet. Oberklasse: keine Unterklasse(n): keine Interfaces: SelectionListener, KeyListener, TraverseListener Assoziationen: keine Attribute: EditDocumentDialog editdialog: Referenz auf das EditDocumentDialog Objekt QuestionDialog questionbox: Referenz auf das QuestionDialog Objekt InfomatPreferences prefs: Referenz auf die InfomatPreferences EditDocumentListener(EditDocumentDialog edialog): Konstruktor der Klasse addontologyclass(): Fügt dem Dokument eine neue Klasse hinzu deletedocument(document): Führt das Löschen des ganzen Dokuments aus handlebuttonselection(selectionevent e): Bearbeitet SelectionEvents, die durch die Buttons im 163

164 EditDialog ausgelöst werden und führt die entsprechenden Aktionen aus. handlecomboselection(selectionevent e): Bearbeitet SelectionEvents, die durch die Combobox im EditDialog ausgelöst werden und führt die entsprechenden Aktionen aus handledeleteselection(selectionevent e): Bearbeitet das Event das durch das Drücken eines lösche Klasse -Buttons ausgelöst wird handlesaveselection(selectionevent e): Bearbeitet das Event das durch Drücken des Speicherbuttons im EditDialog ausgelöst wird handlesliderselection(selectionevent e): Bearbeitet SelectionEvents, die durch einen Slider im EditDialog ausgelöst werden und ändert entsprechend die Wahrscheinlichkeit keypressed(keyevent arg0): Verabeitet KeyEvents aus dem EditDialog keyreleased(keyevent arg0): Verabeitet KeyEvents aus dem EditDialog keytraversed(traverseevent te): Verabeitet TraverseEvents aus dem EditDialog widgetdefaultselected(selectionevent e): Verarbeitet defaultselectionevents aus dem EditDocumentDialog. Das Event wird hier an die Methode widgetselected(selectionevent e) delegiert. widgetselected(selectionevent e): Verarbeitet SelectionEvents aus dem EditDocumentDialog und delegiert es an die ensprechenden Methoden weiter Klasse: ExtendedDialogListener Paket: de.wiol.infomat.gui.listener Beschreibung: Die Klasse ExtendedDialogListener ist für die Listener Logik des ExtendedQuestionDialog Fensters zuständig. Die Events des Dialogs werden hier abgehandelt und weiter verarbeitet. Oberklasse: keine Unterklasse(n): keine Interfaces: SelectionListener,DisposeListener Assoziationen: keine Attribute: dialog: Referenz auf das ExtendedQuestionDialogObjekt. ExtendedDialogListener(ExtendedQuestionDialog dialog): Defaultkonstruktor der Klasse ExtendedDialogListener. widgetselected (SelectionEvent): Bearbeitet SelectionEvent für verschiedene Objekte und leitet sie an die entsprechenden Methoden weiter. widgetdefaultselected (SelectionEvent): Methode zur Bearbeitung eines SelectionEvents, das als default Event, z.b. bei einem Doppelklick in einer Liste auftritt. Das Event wird hier an die Methode widgetselected(selectionevent) delegiert. widgetdisposed(disposeevent arg0): Bearbeitet das DisposeEvent und führt die entsprechenden 164

165 Aktionen aus cancel(): bricht den Prozess ab (update oder exraktion) settrainingflagtoupdate(string language): Setzt ein Flag, das veranlasst die Trainingsdaten für die übergebene Sprache zu aktualisieren Klasse: LogHistoryListener Paket: de.wiol.infomat.gui.listener Beschreibung: Diese Klasse behandelt alle auftretenden Events in der Klasse LogHistory. Oberklasse: keine Unterklasse(n): keine Interfaces: keine Assoziationen: LogHistory, InfomatPreferences Attribute: LogHistory his: Referenz auf LogHistory widgetselected(selectionevent se): Fängt alle auftretenden Events ab und gibt sie an die entsprechenden Methoden weiter. handlemenuselection(selectionevent se): Fängt alle Events des Popup Menüs ab und leitet sie weiter Klasse: ExportDialogListener Paket: de.wiol.infomat.gu.listener Beschreibung: Diese Klasse stellt die Listener zur Verfügung, die auf Events des Export Dialogs reagieren und die gewünschten, damit assoziierten Funktionen durchführen. Oberklasse: keine Unterklasse(n): keine Interfaces: diverse GUI Listener Assoziationen: Infomat: Referenz auf die Haupt-Kontrollklasse. PersistenceManager: Referenz auf den PersistenceManager, um Informationen über die zu exportierenden Dokumente zu erlangen. Attribute: dialog: Referenz auf den ExportDialog, um Zugriff auf die im Dialog eingegebenen Daten zu erlangen. 165

166 exportdirectory: Vollständige Pfadangabe für das Verzeichnis, in das der Export der Dokumente erfolgen soll. ontologyfilename: Vollständiger Dateiname für die Datei, in die die Daten der Ontologie gespeichert werden sollen. prefs: Referenz auf die Preferences um Zugriff auf die gewählte GUI Sprache und die derzeitig genutzte Ontologie Datei zu erlangen. selectedclass: Referenz auf die im Baum des Dialogs gewählte Ontologie Klasse, deren Dokumente in das Dateisystem exportiert werden sollen. ExportDialogListener(ExportDialog): Konstruktor für die Listener Klasse, der eine Referenz auf den Dialog übergeben wird, um Zugriffe auf die Daten des Dialogs zu ermöglichen. copy(file, File): Diese Funktion kopiert eine als File Objekt übergebene Datei an eine zweite, durch ein weiteres File Objekt bezeichnetes Stelle im Dateisystem. Die Datei wird dabei nur kopiert, wenn die Quelldatei existiert und lesbar, sowie die Zieldatei noch nicht vorhanden ist. exportclass(owlontologyclass, boolean, String): Diese rekursive Methode übernimmt die Aufgabe, die gewählte, übergebene Klasse samt ihrer Unterklassen zu durchlaufen und Dokumente, die der jeweiligen Klasse zugeordnet sind zu kopieren. Das boolesche Flag gibt an, ob die Hierarchie durch die Erstellung von Unterverzeichnissen nachempfunden werden soll. Der aktuelle Pfad wird als dritter Parameter als String mit übergeben. getfilenamesforclass(owlontologyclass): Diese Methode liefert eine Liste von String Objekten, die die Pfade der Dokumente beinhalten, die der übergebenen Klasse zugeordnet sind. handlebuttonevent(selectionevent): Diese Methode kapselt alle Aktionen, die bei durch Buttons ausgelösten Events ausgeführt werden sollen. handletreeselection(selectionevent): Diese Methode kapselt alle Aktionen, die bei der Auswahl eines Elements im Baum ausgeführt werden sollen. performclassexport(owlontologyclass): Diese Methode kapselt alle notwendigen Operationen, um die Dokument aus der durch selectedclass bezeichneten Klasse ins Dateisystem zu exportieren. performontologyexport(): Diese Methode kapselt alle notwendigen Operationen, um die Ontologie in Form einer OWL Datei an der durch das Attribut ontologyfilename bezeichnete Stelle im Dateisystem zu speichern. Klasse: OntologyEditorListener Paket: de.wiol.infomat.ontology.editor.listener Beschreibung: Diese Klasse beinhaltet die Listener Logik für das Ontologie Editor Fenster. Die zentralen Events des Editor Hauptfensters werden hier abgehandelt und weiter verarbeitet, sowie eine Bearbeitung der eigentlichen Ontologie über den OWLOntologyManager angestoßen. Oberklasse: keine Unterklasse(n): keine Interfaces: SelectionListener, DisposeListener, FocusListener, KeyListener 166

167 Assoziationen: OntologieEditor Attribute: theeditor: Referenz auf das OntologyEditor Objekt, durch die es ermöglicht wird, auf Objekte innerhalb des OntologieEditors zuzugreifen um Events weiter zu verarbeiten oder weitergehende Aktionen zu initiieren manager: Referenz zum OWLOntologyManager, durch die es dem Listener ermöglicht wird, eine Manipulation der Ontologie anhand der in der GUI eingegebenen Daten durchzuführen. relationdialog: Referenz zum OntologyRelationDialog, durch den die Beziehungen zwischen einzelnen Klassen detailliert bearbeitet werden können. OntologyEditorListener(OntologyEditor): Konstruktor für den Listener, dem eine Referenz des Fensters übergeben wird, für das die Events verarbeitet werden sollen handlebuttonevent(selectionevent): Methode zum Bearbeiten eines SelectionEvents, das für einen Button aufgetreten ist. handlemenuevent(selectionevent): Methode zum Bearbeiten eines SelectionEvents, das in einem Kontext Menü des Baums der Ontologie oder der Liste der Klassen Beziehungen aufgetreten ist. handletableevent(selectionevent): Methode zum Bearbeiten eines SelectionEvents, das in der Tabelle der Klassen Beziehungen aufgetreten ist. handletreeevent(selectionevent): Methode zum Bearbeiten eines SelectionEvents, das im Baum der Ontologie aufgetreten ist. addontologyclass(): Diese Methode übernimmt die Aufgabe eine neue Ontologie Klasse an der im Baum gewählten Stelle zu erzeugen und diese Klasse zur weiteren Bearbeitung im Editor anzuwählen. addrelation(): Diese Methode übernimmt die Aufgabe eine neue Beziehung zwischen der aktuell bearbeiteten Klasse und der im Baum angewählten Klasse anzulegen und diese Beziehung im OntologyRelationEditor weiter bearbeiten zu lassen. editclass(owlontologyclass): Die Detail Daten der übergebenen Klasse werden im Editor angezeigt und können von da an bearbeitet werden. editrelation(owlontologyrelation): Die übergebene OWLOntologyRelation wird im OntologyRelationEditor angezeigt und kann dort erweitert und manipuliert werden. Die geänderten OWLOntologyRelation Daten werden danach direkt über den OWLOntologyManager in der Ontologie persistent gemacht. renameclassto(string): Die aktuell in Bearbeitung befindliche Klasse wird in den Klassennamen, der übergeben wird, umbenannt. confirmrelationdeletion(): Ein Dialog zur Bestätigung einer anstehenden Lösch Operation für ein OWLOntologyRelation Objekt wird angezeigt. Bei positiver Bestätigung wird die Operation über den OWLOntologyManager ausgeführt. setbuttonaccess(): Abhängig von der Auswahl im Ontologie Baum und der Relation Tabelle werden die Buttons zur Manipulation der Ontologie einzeln aktiviert oder deaktiviert. validclassname(string): Diese Funktion prüft, ob der angegebene Name für eine neue Klasse zur Verfügung steht. validclassselected(): Diese Methode prüft, ob eine Klasse im Baum angewählt wurde, die im 167

168 weiteren Verlauf im Editor editiert werden kann. validrelationselected(): Diese Methode prüft, ob in der Relation Tabelle eine Beziehung gewählt wurde, die editiert werden kann. diverse durch die implementierten Interfaces vorgegebenen GUI Methoden. Klasse: OntologyRelationDialogListener Paket: de.wiol.infomat.ontology.editor.listener Beschreibung: Diese Klasse beinhaltet die Listener Logik für den OntologyRelationEditor Dialog. Die zentralen Events des Dialogs werden hier abgehandelt und weiter verarbeitet, sowie eine Bearbeitung der eigentlichen OWLOntologyRelation angestoßen. Oberklasse: keine Unterklasse(n): keine Interfaces: SelectionListener Assoziationen: OntologyRelationDialog Attribute: manager: Referenz zum OWLOntologyManager, durch die es dem Listener ermöglicht wird, eine Manipulation der Ontologie anhand der in der GUI eingegebenen Daten durchzuführen. dialog: Referenz zum OntologyRelationDialog, durch den die Beziehungen zwischen einzelnen Klassen detailliert bearbeitet werden können. OntologyRelationDialogListener(OntologyRelationDialog): Konstruktor für den Listener, der die Events für den übergebenen OntologyRelationDialog verarbeitet und die Manipulation der bearbeiteten OWLOntologyRelation anstößt. handlebuttonevent(selectionevent): Methode zum Bearbeiten eines SelectionEvents, das für einen Button aufgetreten ist. setgrouppermissions(): Abhängig von der bearbeiteten OWLOntologyRelation werden die drei dargestellten GUI Gruppen für die Gewichtung, die Hierarchie sowie die semantische Beziehung beim Öffnen des Dialogs aktiviert oder deaktiviert. applyrelationchanges(): Stößt eine Übernahme der Änderungen in der bearbeiteten OWLOntologyRelation durch den OWLOntologyManager zur Speicherung der neuen Daten an. validrelation(): Diese Methode prüft, ob die modellierten Daten in diesem Dialog eine gültige Klassen Beziehung modellieren. 168

169 3.6 Dynamische Modulbeschreibungen für Fach-, Steuerungs- und GUI-Klassen Fachklassen Datenextraktion Sequenzdiagramme: a) Neues Dokumente einlesen: 169

170 Abbildung 48: Sequenzdiagramm: Neues Dokument einlesen (Teil 1) 170

171 Abbildung 49: Sequenzdiagramm: Neues Dokument einlesen (Teil 2) 171

172 Anwendungsfall: Neues Dokument einlesen Beschreibung: Der Schnittstellenklasse ExtractionManager wird der komplette Pfad mit Dateinamen (Bsp.: C:\Pfad\datei.html ) übergeben. Hier wird die Methode builddocument() aufgerufen, die das Erstellen des Document Objekts mit aufrufen von verschiedenen Methoden regelt. Zuerst wird mit analysedatatype() der Datentyp der zu extrahierenden Datei geprüft und je nach Ergebnis das entsprechende Document. Mit setnameandpath() wird der übergebene Location String geparsed und in Pfad und Dateinamen aufgeteilt und dem Dokument zugeordnet. Dann wird ein passendes Abstract Extraction Objekt mit dem aktuellen Dokument erzeugt. SetSizeAndDate() setzt das Extraktionsdatum und die Größe der Datei zu diesem Zeitpunkt in dem Document Objekt. Mit extract() wird die Extraktion des Textes (extracttext()) und der Metadaten (extractmetadata()) angestossen und mit analysetext() wird schliesslich der extrahierte Text an die Analyser Klassen übergeben und als Ergebnis der analysierte Text zurückgeliefert. b) Bestehendes Dokument erneut einlesen 172

173 Abbildung 50: Sequenzdiagramm: Bestehendes Dokument neu einlesen (Teil 1) 173

174 Abbildung 51: Sequenzdiagramm: Bestehendes Dokument neu einlesen (Tel 2) 174

175 Anwendungsfall: Bestehendes Dokument neu einlesen (wenn Dokumentdaten aktualisiert werden sollen) Beschreibung: Ein aus der Datenbank gelesenes Dokument wird zuerst geprüft, ob es aktualisiert werden muss. Ist dies positiv, wird auch hier ein ExtractionManager Objekt mit übergebenen Dokument erzeugt. Hier wird dann updatedocument aufgerufen. Der Datentyp wird aus dem Dokumentenobjekt gelesen und das entsprechende AbstractExtraction Dokument erzeugt. Dann wird Extraktionsdatum und -größe aktualisiert. Der Extraktions- und Analyseablauf ist dann identisch mit dem Anwendungsfall Neues Objekt Aktivitätsdiagramme a) Neues Dokument extrahieren Abbildung 52: Aktivitätsdiagramm: Neues Dokument extrahieren Anwendungsfall: Neues Dokument extrahierenden Beschreibung: 175

176 Das Diagramm beschreibt den Ablauf der Extraktion eines neuen Dokuments. Es wird ein ExtractionManager Objekt erzeugt und der Datentyp analysiert, dementsprechend wird das passende AbstractExtraction Objekt erzeugt. Danach ist der Ablauf dann eine Abarbeitung von Methoden, wie sie im Sequenzdiagramm beschrieben wurden. b) Bestehendes Dokument neu einlesen Abbildung 53: Aktivitätsdiagramm: Bestehendes Dokument neu einlesen Anwendungsfall: Bestehendes Dokument neu extrahierenden Beschreibung: Die Dokumente werden aus der Datenbank geladen. Die Collection aus der Datenbank wird abgearbeitet, indem jedes Dokument geprüft wird, ob es aktualisiert werden muss. Wenn ja wird das Dokument aktualisiert, wenn nicht, ist der Anwendungsfall für das Dokument beendet. Ist noch ein Dokument in der Liste, wird dieses bearbeitet, sonst ende Semantische Analyse In Abb. Aktivitätsdiagramm: Semantische Analyse auf Seite 179 wird der Ablauf der semantischen Analyse in einem Aktivitätsdiagramm dargestellt Dieser Ablauf wird ebenso im Sequenzdiagramm in Abb. Sequenzdiagramm: Semantische Analyse 176

177 auf Seite 178 unter Einbeziehung aller beteiligten Klassen und Objekte gezeigt. Nach dem Startaufruf zur Klassifikation erzeugt der ClassificationManager ein neues Analysis-Objekt und läßt von diesem das übergebene Dokumenten-Objekt analysieren. Bei der Analyse wird eine Begriffstabelle erstellt, die dem Dokument hinzugefügt wird; außerdem wird nach Synonymen gesucht. Nach der Analyse läßt der ClassificationManager (dynamisch via Java Reflection) eine Instanz einer konkrete Algorithmusklasse durch AbstractClassification erzeugen. Diese klassifiziert schließlich unter Zuhilfenahme der Ontologie das Dokument. Keine der Analyse-/ Klassifikationsmethoden hat einen Rückgabewert, da auf einer Referenz gearbeitet wird Sequenzdiagramme 177

178 Abbildung 54: Sequenzdiagramm: Semantische Analyse 178

179 Aktivitätsdiagramme a) Semantische Analyse Abbildung 55: Aktivitätsdiagramm: Semantische Analyse 179

180 b) Klassifikation von mehreren Dokumenten Abbildung 56: Aktivitätsdiagramm: Klassifikation von mehreren Dokumenten 180

181 3.6.3 Semantische Suche Sequenzdiagramme a) SemanticSearch.search(Query). Dieses ist die Hauptfunktion des Such-Moduls. Abbildung 57: Sequenzdiagramm: Semantische Suche (Query) b) SemanticSearch.search(String) Abbildung 58: Sequenzdiagramm: Semantische Suche (String) Die Suche mit dieser Methode gestaltet sich ähnlich, wie in der anderen search()-methode. Da aber der Parameter hier ein String ist, wird er vor dem Suchen noch der Query.Parse Methode übergeben, 181

182 um einen Querybaum zu erzeugen. c) SemanticSearch.parse(String) Diese Methode nimmt einen String entgegen und parst ihn in eine Baumstruktur von Queries. Der String muss dem folgenden Format genügen: 1. false ist eine Formel 2. true ist eine Formel 3. keyword(string) ist eine Formel. 4. similar(long) ist eine Formel. 5. class(string) ist eine Formel. 6. Field(String,String) ist eine Formel. 7. Fuzzy(String) ist eine Formel 8. complex(string) ist eine Formel 9. distance(string,string) ist eine Formel 10. name(string) ist eine Formel 11. path(string) ist eine Formel 12. exdatebetween(int-int-int and int-int-in) ist eine Formel 13. todaysdocs ist eine Formel 14. yesterdaysdocs ist eine Formel 15. docsoflasthour ist eine Formel 16. docsoflastweek ist eine Formel 17. classifiedbybayes ist eine Formel 18. classifiedbykeyword ist eine Formel 19. classifiedmanually ist eine Formel 20.Falls F eine Formel ist, ist not F eine Formel. 21.Falls F eine Formel ist, ist like F eine Formel. 22.Falls F eine Formel ist, ist normalize F eine Formel. 23.Falls F eine Formel ist, ist probchange(int) F eine Formel. 24.Falls F eine Formel ist, dann ist filter(int,int) F eine Formel. 25.Falls F1 und F2 Formeln sind, dann ist auch F1 and F2 eine Formel. 26.Falls F1 und F2 Formeln sind, dann ist auch F1 or F2 eine Formel. 27.Falls F eine Formel ist, dann ist auch ( F ) eine Formel. Hierbei entspricht keyword(string) einer KeywordQuery, similar(long) einer SimilarQuery, class(long) einer ClassQuery, field(string,string) einer FieldQuery, fuzzy(string) einer FuzzyQuery, complex(string) einer ComplexQuery, name(string) einer NameQuery, path (String) einer PathQuery, distance(string,string) einer Distance- und filter(int,int) einer Filterquery. Die Ausdrücke exdatebetween, todaysdocs, yesterdaysdocs, docsoflasthour 182

183 und docsoflastweek sind verschiedene Erscheinungsformen einer TimeQuery, die Ausdrücke classifiedbybayes, classifiedbykeyword und classifiedmanually Erscheinungsformen der ClassificationQuery. Normalize und probchange(int) entsprechen einer ProbabilityChangerQuery. Um eine Baum von Queries aufzubauen, benutzt diese Methode die von JAVACC mittels dieser Grammatik generierten Klassen aus dem Verzeichnis de.wiol.infomat.search.parser. d) KeywordQuery: Abbildung 59: Sequenzdiagramm: KeywordQuery Bei dieser Query wird nach dem Analysieren des zu suchenden Keywords dieses der keywordsearch () Methode übergeben, welche dann direkt auf die Persistenzschicht zugreift und die Ergebnisse zurückliefert. 183

184 e) SimilarQuery Abbildung 60: Sequenzdiagramm: SimilarQuery Der AnfrageVector wird hier direkt der vectorsearch-methode übergeben, welche dann auf der Persistenzschicht nach ähnlichen Vektoren sucht. Falls es keinen AnfrageVector gibt, sondern nur 184

185 die ID eines Dokumentes, wird dieses Dokument zuerst noch aus der Datenbank geladen und dann der entsprechende Vector daraus extrahiert. f) SimilarKeywordQuery Abbildung 61: Sequenzdiagramm: SimilarKeywordQuery 185

186 Bei einer SimilarkeywordQuery werden zunächst mit der Methode SemanticSearch.searchKeyword alle Dokumente aus der Datenbank geladen, in denen ein bestimmtes Schlüsselwort vorkommt. Danach werden aus diesen Dokumenten ihre Vektoren extrahiert, woraufhin nun das "arithmetische Mittel" dieser Vektoren berechnet werden kann. Dieses geschieht über die Methoden zur Vektoraddition und Skalarmultiplikation der Klasse Vector. Zu dem neuen Mittelvektor können nun mit der Methode SemanticSearch.searchVector alle ähnlichen Dokumente ermittelt werden, welche anschließend zurück gegeben werden. g) AndQuery Abbildung 62: Sequenzdiagramm: AndQuery Nachdem hier beide übergebenen Querys ausgeführt wurden, werden ihre Ergebnisse innerhalb der combine() Methode über den Minimum-Operator miteinander verbunden. 186

187 h) OrQuery Abbildung 63: Sequenzdiagramm: OrQuery Hier geschieht das selbe, wie in der And-Query, nur dass hier die combine-methode auf dem Maximum-Operator beruht. 187

188 i) NotQuery Abbildung 64: Sequenzdiagramm: NotQuery Nach dem Ausführen der übergebenen Query wird deren Ergebnis in der negate()-methode negiert, indem die einzelnen Wahrscheinlichkeiten von 1 subtrahiert werden. j) FieldQuery Abbildung 65: Sequenzdiagramm: FieldQuery Nachdem Typ und Wert des zu suchenden Feldes bestimmt worden sind, wird hier die Methode 188

189 SearchField() der Klasse SemanticSearch aufgerufen und deren Ergebnis zurückgegeben. k) ClassQuery Abbildung 66: Sequenzdiagramm: ClassQuery Ähnlich wie die FieldQuery wird hier der Wert des Feldes (die ID der Klasse) bestimmt und dann die Methode searchfield() der Klasse SemanticSearch mit den Parametern Field.Type.CLASS und der ID aufgerufen. 189

190 Ontologie Sequenzdiagramme a) Ontologie-Editor starten: Abbildung 67: Sequenzdiagramm: Ontologie-Editor starten 190

191 b) Ontologie-API: Abbildung Abbildung 68: 69: Sequenzdiagramm: Sequenzdiagramm: Ontologie-API Ontologie-API (Teil(Teil 2) 1) 191

192 Aktivitätsdiagramme a) Klasse hinzufügen: Abbildung 70: Aktivitätsdiagramm: Klasse hinzufügen 192

193 b) Klasse löschen: Abbildung 71: Aktivitätsdiagramm: Klasse löschen 193

194 c) Klasse bearbeiten: Abbildung 72: Sequenzdiagramm: Klasse bearbeiten 194

195 Steuerungsklassen EventManager Sequenzdiagramme a) Event-Management Abbildung 73: Sequenzdiagramm: Event-Management (Teil 1) 195

196 Abbildung 74: Sequenzdiagramm: Event-Management (Teil 2) 196

197 Aktivitätsdiagramme a) Event-Manager Abbildung 75: Aktivitätsdiagramm: Event-Manager 197

198 3.6.6 GUI-Klassen Aktivitätsdiagramme a) Suche nach Metadaten, ähnlichen Dokumenten oder Stichwort Abbildung 76: Aktivitätsdiagramm: Suche nach Metadaten 198

199 b) Ein Dokument zum Klassifizieren auswählen: Abbildung 77: Aktivitätsdiagramm: Dokument zum Klassifizieren auswählen c) Hauptfenster starten Abbildung 78: Aktivitätsdiagramm: Hauptfenster starten 199

200 3.6.7 Datenhaltung Für den Großteil der Datenhaltung innerhalb des Infomat Programmes ist eine mysql Datenbank zuständig. Zu diesen Daten gehören Wörterbücher, gespeicherte Dokumente mit allen zugehörigen Infomationen, die gesamte Ontologie, sowie alle Zuordnungen von Dokumenten in diese Ontologie bzw. Ontologieklasse (siehe auch Erläuterungen zum relationellen Datenbankmodell). Alle Arten von Datenbankzugriffen werden von der Persistenzschicht Hibernate bzw. der dafür geschriebenen Klasse PersistenceManager übernommen. Hiervon ausgenommen ist die Ontologie, da für diese die Speicherfunktionalität von Jena genutzt wird. Allgemeine Einstellungen für das Infomatprogramm werden ebenfalls gespeichert. Da dies aber nicht in der Datenbank sondern in einer XML Datei geschieht, wird dies hier nicht weiter erläutert. Eine genauere Beschreibung hierzu findet sich bei der Klassenbeschreibung zu InfomatPreferences. 200

201 ER-Diagramm für das Inf-O-Mat Projekt: Abbildung 79: ER-Diagramm des Inf-O-Mats 201

202 Das ER-Diagramm lässt sich in im Allgemeinen in vier Bestandteile aufgliedern: 1. Tabellen zum Abspeichern von Dokumenteninformationen (Texte, Metadaten, Klassenzuordnungen) Relationale Datenbanktabellen: datatype(id, name, programpath) document(id,name, path, datatype_id, extracted_text, analysed_text, extraction_date, extraction_size, classification_type) metadata(id, value, metadatatype_id, document_id) metadatatype(id, name) document_keywords(id, quantity, word, document_id) class_assignment(id, document_id, ontology_class, probability) 2. Hilfsdaten für die syntaktische Analyseablauf: In der Datenbank werden Stoppwort- und Sonderzeichenlisten für alle Sprachen angelegt, die von der syntaktischen Analyse als Grundlage benutzt werden, um Stoppwörter aus Texten zu entfernen und Sonderzeichen durch deren Bedeutung in ausgeschriebener Form zu ersetzen. Relationale Datenbanktabellen: fillwords(id, word, language_id) specialcharacters(id, symbol, word, language_id) language(id, name, iso) 3. Deutscher Thesaurus (OpenThesaurus) Modelliert das deutsche Wörterbuch OpenThesaurus. Zusätzlich dazu gibt es eine Tabelle, in der alle deutschen gestemmten Wörter gespeichert sind. Relationale Datenbanktabellen: german_meanings(id, distinction, hidden, check_count) german_word_meaning(meaning_id, word_id) german_words(id, word, lookup) german_stem_words(id, word) 4. Englischer Thesaurus (WordNet) Modelliert das englische Wörterbuch (WordNet). Besteht aus zwei Entitäten, Wörtern und Synonymsets. Relationale Datenbanktabellen: english_meanings(id, gloss, ss_type) english_word_meanings(meaning_id, word_id) 202

203 english_words(id, word) 3.7 Testumgebung In diesem Abschnitt werden die Testverfahren bei der semantischen Analyse beschrieben Separates Testen Hierbei wird die Software von ihren Grundkomponennten an separat getestet. Es wird begonnen mit der kleinsten funktionellen Einheit (sog. Unittest). Im weiteren Verlauf werden größere zusammenhängende Module getestet. Als nächstes wird ein Integrationstest der veschiedenen Module miteinander vollzogen. So kommt man am Ende auf einen Gesamtsystemtest. Dieses Testen stellt ein White Box - Testen dar, da es sich um ein Testen mit Kenntnis der Implementierung handelt Black-Box Testen Bei diesem Testverfahren wird die Software von einem Tester ohne Implementierungskenntnisse getestet. Dabei wird nur das Ergebnis einer Eingabe genommen und die mit dem Soll-Wert verglichen. Hierzu sollte eine Menge von Testdaten entwickelt werden, wobei die Sollergebnisse anhand des oben angesprochenen Verfahrens getestet werden Belastungstests Hier wird die Belastbarkeit der Software getestet. Das heißt eine maximale Anzahl parallel laufender Operationen, wobei man auch nicht unrealistische Belastungen aussen vor lassen sollte, werden gestartet und hierbei die Performanz getestet, ob hier die Kapazität von Speicher und Zeit nicht überschritten wird Plattformtest Bei diesem Testen soll die Software auf verschiedenen Betriebssystemen, sowie verschiedenen Hardware- und Softwarevoraussetzungen getestet werden. Hierbei sollten idealerweise keine Differenzen auftreten Testdurchführung Im weiteren Verlauf der Softwareentwicklung wird es ein Dokument geben, in der Prototypen und ihre Ziele festlegt werden. In diesem Dokument werden dann entsprechende Testdurchführungen und zu erreichende Ergebnisse festgelegt. Hierbei sollen alle oben genannten Testverfahren je nach Status der Phase durchgeführt werden. Diese werden dokumentiert und zur Verfügung gestellt. Als weiteres wird parallel zu diesen Testverfahren eine interne Qualitätssicherung der Module untereinander vollzogen. Dies soll eine bessere Qualität des Programms sowie eine gute Übersicht garantieren. 203

204 3.8 Anhang Verwendete Technologien: Technologie MySQL.Connector Speicherplatz (MB) 0,23 Hibernate 8,9 PDFBox 2,18 HTMLParser 0,23 Jakarta PoI 0,78 Xerces SWT Libaries Jena 204 1,3 2,5-3.5 je nach Betriebssystem 7.5

205 Abbildungsverzeichnis Entwurf Abbildung 1 - Anwendungsfall 4: Ontologieklasse hinzufügen 12 Abbildung 2 - Anwendungsfall 5: Ontologieklasse bearbeiten 12 Abbildung 3 - Anwendungsfall 6: Ontologieklasse löschen 12 Abbildung 4 - Anwendungsfall 10: Suche nach ähnlichem Dokument 13 Abbildung 5 - Hauptfenster des Inf-O-Mat 14 Abbildung 6: Kernmodule des Inf-O-Mat 17 Abbildung 7: Klassendiagramm: Klassendiagramm Extraktionsklassen 20 Abbildung 8: Klassendiagramm: syntaktische Analyse Klassen 25 Abbildung 9: Klassendiagramm: Datenhalterobjekte 29 Abbildung 10: Klassendiagramm: Datenhaltung Wörterbücher, etc. 35 Abbildung 11: Klassendiagramm: Deutsches Wörterbuch 39 Abbildung 12: Klassendiagramm: Englisches Wörterbuch 40 Abbildung 13: Klassendiagramm: Package analysis 44 Abbildung 14: Klassendiagramm(Beziehungen): Semantische Suche 52 Abbildung 15: Klassendiagramm: Queries 56 Abbildung 16: Klassendiagramm (Vererbung): Kommandos 59 Abbildung 17: Klassendiagramm(Vererbung) :Binäre Anfragen 66 Abbildung 18: Klassendiagramm(Vererbung) : Unäre Anfragen 68 Abbildung 19: Klassendiagramm(Vererbung): Such-Exceptions 75 Abbildung 20: Klassendiagramm: Kommandoeditor 77 Abbildung 21: Klassendiagramm: Package ontology 83 Abbildung 22: Klassendiagramm: Ontnet3d 92 Abbildung 23: Klassendiagramm: Colors 95 Abbildung 24: Klassendiagramm: WebBuilder 96 Abbildung 25: Klassendiagramm: Relations 98 Abbildung 26: Klassendiagramm: Inf-O-Mat Hauptklassen 103 Abbildung 27: Klassendiagramm: EventManagement 108 Abbildung 28: Klassendiagramm: Dokumentenprozessoren 112 Abbildung 29: Klassendiagramm: Hauptfenster und GuiManager 117 Abbildung 30: Hauptfenster 120 Abbildung 31: Klassendiagramm: Suchmaske, Auswahldialog und Suche nach ähnlichen Dokumenten 121 Abbildung 32: Suchmaske 123 Abbildung 33: Auswahldialog zur Extraktion von Dateien und Dokumenten 125 Abbildung 34: Klassendiagramm: Hilfsklassen 128 Abbildung 35: Klassendiagramm: Preferences 131 Abbildung 36: Klassendiagramm: Dialogfenster 135 Abbildung 37: Progressbar 138 Abbildung 38: Dokument Informationen Editor 140 Abbildung 39: Metadaten Editor 142 Abbildung 40: Hilfe 144 Abbildung 41: Statistik Dialog 146 Abbildung 42: Exportdialog 149 Abbildung 43: Ontologie-Editor 151 Abbildung 44: Ontology-Relation Dialog 152 Abbildung 45: MainWindow-, SearchWindow-und SimialarDocumentsListener 153 Abbildung 46: Klassendiagramm: Listener zu den Preferences 157 Abbildung 47: Klassendiagramm: diverse Listener zu Dialogen und sonstigen Fenstern 161 Abbildung 48: Sequenzdiagramm: Neues Dokument einlesen (Teil 1) 169 Abbildung 49: Sequenzdiagramm: Neues Dokument einlesen (Teil 2)

206 Abbildung 50: Sequenzdiagramm: Bestehendes Dokument neu einlesen (Teil 1) Abbildung 51: Sequenzdiagramm: Bestehendes Dokument neu einlesen (Tel 2) Abbildung 52: Aktivitätsdiagramm: Neues Dokument extrahieren 173 Abbildung 53: Aktivitätsdiagramm: Bestehendes Dokument neu einlesen 174 Abbildung 54: Sequenzdiagramm: Semantische Analyse 176 Abbildung 55: Aktivitätsdiagramm: Semantische Analyse 177 Abbildung 56: Aktivitätsdiagramm: Klassifikation von mehreren Dokumenten Abbildung 57: Sequenzdiagramm: Semantische Suche (Query) 179 Abbildung 58: Sequenzdiagramm: Semantische Suche (String) 179 Abbildung 59: Sequenzdiagramm: KeywordQuery 181 Abbildung 60: Sequenzdiagramm: SimilarQuery 182 Abbildung 61: Sequenzdiagramm: SimilarKeywordQuery 183 Abbildung 62: Sequenzdiagramm: AndQuery 184 Abbildung 63: Sequenzdiagramm: OrQuery 185 Abbildung 64: Sequenzdiagramm: NotQuery 186 Abbildung 65: Sequenzdiagramm: FieldQuery 186 Abbildung 66: Sequenzdiagramm: ClassQuery 187 Abbildung 67: Sequenzdiagramm: Ontologie-Editor starten 188 Abbildung 68: Sequenzdiagramm: Ontologie-API (Teil 2) 189 Abbildung 69: Sequenzdiagramm: Ontologie-API (Teil 1) 189 Abbildung 70: Aktivitätsdiagramm: Klasse hinzufügen 190 Abbildung 71: Aktivitätsdiagramm: Klasse löschen 191 Abbildung 72: Sequenzdiagramm: Klasse bearbeiten 192 Abbildung 73: Sequenzdiagramm: Event-Management (Teil 1) 193 Abbildung 74: Sequenzdiagramm: Event-Management (Teil 2) 194 Abbildung 75: Aktivitätsdiagramm: Event-Manager 195 Abbildung 76: Aktivitätsdiagramm: Suche nach Metadaten 196 Abbildung 77: Aktivitätsdiagramm: Dokument zum Klassifizieren auswählen Abbildung 78: Aktivitätsdiagramm: Hauptfenster starten 197 Abbildung 79: ER-Diagramm des Inf-O-Mats 199 Abbildung 80 Ergebnisse der KeywordClassification 208 Literaturverzeichnis Entwurf ZADEH,1965: L. Zadeh, Fuzzy sets. Information and Control 8,

207 4 Evaluation 4.1 Einleitung Das folgende Kapitel befasst sich mit der Evaluierung der beiden Klassifikationsmethoden des InfO-Mats sowie einigen weiteren Eckdaten bezüglich des Speicherverbrauchs des Programms im Allgemeinen und der Datenbank. Zuerst wird das angewandte Evaluationsverfahren vorgestellt. Im Folgenden werden Keyword- und BayesClassification nach diesem Verfahren evaluiert und eine Untersuchung der Ergebnisse durchgeführt. Zum Schluss gibt es einen Überblick über die am Anfang erwähnten weiteren Eckdaten des Inf-O-Mats. 4.2 Verfahren Zur Evaluierung wird eine Reihe von Dokumenten herausgesucht, die sowohl nach Keyword als auch nach Bayes klassifiziert werden sollen. Die Menge der Dokumente decken einen breiten Bereich der Testontologie ab. Für jedes Dokument besteht eine bestimmte Erwartung in welche Klasse es einsortiert wird. Die Ergebnisse der automatischen Klassifizierung werden mit den erwarteten Ergebnissen verglichen und in folgende Mengen eingeteilt: Menge A: Das Dokument wurde in die erwartete Klasse eingeordnet und hatte ebenfalls die höchste Wahrscheinlichkeit aller erstellten Klassen. Menge B: Das Dokument wurde in die erwartete Klasse eingeteilt, aber es wurden weitere Klassen erstellt, deren Wahrscheinlichkeit höher als die erwartete Klasse war. Menge C: Das Dokument wurde nicht in die erwartete Klasse eingeteilt. Für die KeywordClassification wird sowohl ein Gesamtergebnis als auch Ergebnisse für die einzelnen Sprachen Englisch und Deutsch berechnet. Für Bayes wird nur ein Gesamtergebnis aufgestellt (Begründung siehe Kapitel) Eine alternative Evaluationsmethode statt der hier vorgestellten wäre eine Berechnung von Precision und Recall Werten. Es werden alle automatisch erstellten Zuordnungen mit den manuell festgelegten verglichen und ebenfalls in Mengen eingeteilt. Menge A: False Negatives - Nicht erkannte, aber manuell erstellte Klassenzuordnungen Menge B: True Positives - Richtig erkannte Klassenzuordnungen, die auch manuell erstellt wurden. Menge C: False Positives - Falsch erstellte Klassenzuordnungen, die manuell nicht erstellt wurden. Precision: B / B + C, berechnet das Verhältnis der richtig erkannten Klassenzuordnungen zu den insgesamt erstellten Klassenzuordnungen. Der Wert berechnet demnach, wieviel Prozent der erstellten Klassenzuordnungen richtig sind. Recall: B / A + B, berechnet das Verhältnis der richtig erkannten Klassenzuordnungen zu den insgesamt manuell erstellten Klassenzuordnungen. Der Wert gibt demnach an, wieviel Prozent der richtigen Klassenzuordnungen gefunden wurden. 207

208 Um diese Evaluierungsmethode für die KeywordClassification richtig durchzuführen, ist es notwendig, alle erstellten Klassenzuordnungen richtig beurteilen zu können, weshalb eine genaue manuelle Untersuchung und Einteilung der einzelnen Dokumente notwendig wäre, da ein Dokument auch in mehrere Klassen eingeordnet werden kann. Aus Zeitgründen kommt dieses Verfahren daher nicht zum Einsatz. Für die BayesClassification ist die Berechnung von Precision und Recall Werten ebenfalls eher unpassend, da mittels dieser Methode ein Dokument so gut wie immer in nur eine Klasse einsortiert wird, da Bayes bei der Berechnung der Wahrscheinlichkeiten zu Extremwerten neigt. Aufgrund dessen wurden die beiden Klassifikationsmethoden mittels des Anfangs vorgestellten Verfahrens bewertet Evaluation KeywordClassification Der folgende Evaluationsabschnitt befasst sich mit dem selbst entwickelten Klassifikationsverfahren, welches auf der Analyse von Schlüsselwörtern (engl. Keyword) des jeweiligen Textes mit Hilfe der erstellten Ontologie basiert Vorgehen Die KeywordClassification ist die Grundlage des Programms, um einen initialen Trainingsdatensatz für die Klassifikation nach Bayes erstellen zu können (genaue Beschreibung siehe Kapitel 209). Eine hohe Genauigkeit mit nur wenig manueller Anpassung der Ergebnisse ist demnach wünschenswert, wobei anzumerken ist, dass die Methode im hohen Maße von der modellierten Ontologie abhängt. Durchgeführt wird die Evaluation nach dem vorgestellten Verfahren. Zur Verfügung standen 84 Testdokumente Ergebnisse Die Ergebnisse werden tabellarisch dargestellt. Die Tabelle enthält Ergebnisse für die Sprache Deutsch, Englisch und ein Gesamtergebnis. Die jeweils erste Zeile von Deutsch, Englisch, Gesamt gibt die Anzahl an Dokumenten für die entsprechende Menge an. Die zweite Zeile eine prozentuale Umrechnung. Sprache Menge A Menge B Menge C Gesamt Deutsch ,90% 11,10% 37,00% ,70% 21,10% 12,20% ,90% 17,90% 20,20% Englisch Gesamt

209 20% 62% 18% Menge C Menge B Menge A Abbildung 80 Ergebnisse der KeywordClassification Bewertung Trotz einer hohen Abhängigkeit der KeywordClassification von einer gut modellierten Ontologie ist die Gesamtanzahl der richtig einsortierten Dokumente relativ hoch. So sind 67 der 84 Dokumente in die erwartete Klasse einsortiert worden, was einer Erfolgsquote von 79,8% entspricht. Bei 52 dieser 67 Dokumente wurde der erwarteten Klasse sogar die höchste Wahrscheinlichkeit zugeordnet. Die Prozentzahl der richtig erkannten Klassenzuordnungen bei englischen Dokumenten liegt innerhalb der Evaluation über der von deutschen Dokumenten (~25%). Grund hierfür könnte der komplexere syntaktische Aufbau deutscher Texte gegenüber englischen Texten sein. Wegen dieser komplexeren Struktur ist die syntaktische Analyse eventuell fehleranfälliger, was zu etwas schlechteren Ergebnissen mit der KeywordClassification führen kann Evaluation BayesClassification Ist eine initiale Trainingsdatenmenge erstellt worden, wird die genutzte Klassifikationsmethode auf Bayes umgestellt. Im Folgenden wird eine Evaluation dieses Verfahrens durchgeführt, um die Eckdaten festzustellen, mit denen eine zufrieden stellende Bayes Klassifikation durchgeführt werden kann Vorgehen Die 57 englischen Dokumente, die im ersten Teil zur Evaluierung der KeywordClassification verwendet wurden, werden ebenfalls für die Evaluierung der BayesClassification verwendet. Ziel ist es, die Eckdaten der Trainingsdaten pro Klasse zu bestimmten, die notwendig sind, um eine zufrieden stellende Klassifikation durch Bayes zu garantieren. Diese Eckdaten umfassen die Anzahl der mindestens vorhandenen Dokumente pro Klasse und den Mindestwahrscheinlichkeitswert, über dem diese Dokumente liegen müssen. 209

210 Verwendet wird dasselbe Verfahren, bzw. Mengen wie bei der Evaluation der Keyword Classification. Da bei Bayes aufgrund der Neigung zu extremen Werten bei der Klassenzuordnung, meist nur eine Klassenzuordnung erstellt wird, wird die Menge B aber wahrscheinlich leer bleiben. Gibt es nur eine Klassenzuordnung, ist das Ergebnis entweder richtig oder falsch Wie oben angedeutet, wird sich auf die englischen Dokumente beschränkt, da sich für Englisch ein Trainingsdatensatz von mehr als 350 Dokumenten innerhalb der verwendeten Datenbank befindet. Auf eine Zusammenstellung eines weiteren deutschen Trainingsdatensatzes wurde aus Zeitgründen verzichtet. Da es für Bayes aber im Prinzip irrelevant ist, welche Sprache verwendet wird man darf die Sprachen innerhalb eines Trainingsdatensatzes nur nicht mischen ist diese Einschränkung, was die Aussagekraft des Ergebnisses betrifft, zu vernachlässigen Ergebnisse 31 der 57 englischen Dokumente wurden mittels Bayes in die erwartete Klasse einsortiert, was einem Ergebnis von 54,4% richtig und 45,6% falsch einsortierten Dokumenten entspricht. Menge B ist wie erwartet leer geblieben Bewertung Betrachtet man das bloße Ergebnis der Evaluation, so ist der Prozentsatz der richtig einsortierten Dokumente eher gering. Grund hierfür ist, dass in bestimmten Klassen teilweise zu wenig Trainingsdaten vorhanden sind. So wurde ein Dokument, von dem erwartet wurde in eine Klasse mit vielen Trainingsdaten einsortiert zu werden, auch immer in diese Klasse einsortiert. War es hingegen ein Dokument für eine Klasse, in denen relativ wenig Trainingsdokumente vorhanden waren, wurde das Dokument oft in die falsche Klasse einsortiert. Beispiel: Ein Dokument über Politik wurde immer in Politik einsortiert, da in dieser Klasse in etwa weitere Dokumente als Trainingsdaten vorlagen. Hingegen wurde ein Dokument über Cinema eher selten auch in Cinema einsortiert, da in dieser Klasse nur fünf Trainingsdokumente vorhanden waren. Da die zur Evaluation verwendeten Dokumente eher die schwach ausgeprägten Bereiche abgedeckt haben, ist ein eher schwaches Ergebnis das Resultat. Demnach kommt man zu dem Schluss, dass innerhalb jeder Klasse mindestens Dokumente als Trainingsdaten vorhanden sein sollten, um eine zufrieden stellende Klassifizierung zu gewährleisten. Diese Dokumente sollten aussagekräftig für die jeweilige Klasse sein und einen Wahrscheinlichkeitswert von über 80% besitzen. Dieser Wert ist nur eine untere Empfehlung, je mehr Trainingsdaten in einer Klasse sind, desto besser sind die Ergebnisse. 4.3 Weitere Eckdaten Im Folgenden werden weitere Eckdaten innerhalb des Testlaufs des Inf-O-Mats aufgeführt, so z.b, der durchschnittliche Speicherbedarf pro Dokument zum Zeitpunkt der Evaluation, die Größe der Grunddatenbank (Wörterbücher) usw.: Zum Zeitpunkt der Evaluation waren 420 Dokumente in der Datenbank gespeichert, was einen Speicherplatzbedarf von 74 Megabyte benötigte. Dies entspricht einem durchschnittlichen Speicherplatzverbrauch von 0,176 Megabyte pro Dokument. Die maximale verwaltbare Anzahl von Dokumenten ist abhängig vom vorhandenen Festplattenspeicher, bzw. bei der Nutzung von HSQL auch vom Hauptspeicher. Man kann generell sagen, dass mit HSQL insgesamt weniger Dokumente 210

211 verwaltet werden können als mit einer MySQL Datenbank, da ein Rechner üblicherweise weniger Hauptspeicher als Festplattenspeicher besitzt (bei HSQL werden die Dokumente in den Hauptspeicher geladen, um eine akzeptable Geschwindigkeit zu gewährleisten). Geht man von einer Systemvorraussetzung von einem Gigabyte Festplattenspeicher aus, ist auf Basis des durchschnittlichen Speicherplatzbedarfs pro Dokument innerhalb des Tests, eine Verwaltung von mehr als 5000 Dokumenten mit einer MySQL Datenbank möglich. Wird eine HSQL Datenbank verwendet und eine Systemvorraussetzung von 256 Megabyte Arbeitsspeicher verlangt, würde dies eine Verwaltung von höchstens 1000 Dokumenten ermöglichen (auf Basis von Megabyte pro Dokument und Reservierung von 80 Megabyte für den Rest des Programms). Da diese Werte äußerst knapp bemessen sind (andere Datenbanktabellen noch nicht mit eingerechnet), ist davon auszugehen, dass das System schon etwas früher ausgelastet ist. Mit einer MySQL Datenbank ist demnach die Verwaltung einer deutlich höheren Anzahl von Dokumenten möglich. Weiterer Festplattenspeicher wird von der eigentlichen Installation des Programms und den Wörterbüchern innerhalb der mitgelieferten Datenbank (bzw. SQL-Datei im Falle einer MySQL Datenbank) benötigt, wobei das eigentliche Programm gegenüber der initialen Datenbank (ca. 35 Megabyte) vernachlässigt werden kann. 4.4 Installationsanleitung Für die Installation existiert ein automatisches Installationsprogramm. Es lässt sich unter Windows durch Ausführen der Datei "Installer.exe" starten, woraufhin automatisch nach einer installierten Java-Distribution gesucht wird. Falls eine Distribution installiert ist, startet der eigentliche Installer, wenn nicht, wird der Download und die Installation einer Distribution eingeleitet und anschließend mit der Installation des Inf-O-Mat fortgefahren. Alternativ lässt sich der Installer sowohl unter Windows als auch unter Linux/Unix durch Eingabe von "java -jar installer.jar" starten. Im ersten Fenster des Installers lässt sich die für die Installation benutzte Sprache auswählen. Gültige Werte sind bis jetzt Deutsch und Englisch. Nun erscheint nach einem Info-Dialog ein kurzer Text, in dem die Funktionsmerkmale des Inf-OMat beschrieben werden. Nach der Festlegung der Installationsverzeichnisses und der Orte, an denen eventuelle Shortcuts abgelegt werden sollen, erscheint ein Dialog, in dem man sich für den gewünschten Installationsumfang entscheiden kann. 4.5 Installationsumfang Der folgende Abschnitt beschreibt den Umfang der Installation unter verschiedenen Gesichtspunkten Inf-O-Mat Basis Das eigentliche Programm inklusive sämtlicher Plattformunabhängiger Bibliotheken und Ressourcen (Muss Installiert werden) 211

212 4.5.2 Inf-O-Mat plattformspezifische Dateien (Windows Base oder Unix Base) Die plattformspezifischen Dateien, die für den Betrieb nötig sind (Grafikbibliotheken etc.). Die entsprechenden Dateien werden automatisch je nach Betriebssystem ausgewählt. (Muss installiert werden) Datenbanksupport für die laufende Datenbank Der Inf-O-Mat wird so installiert, dass als Datenbank die MySql-Datenbank auf jclass.informatik.uni-oldenburg.de benutzt wird. Diese Funktion ist eigentlich nur zum Testen gedacht, da hiermit eine Möglichkeit besteht auf einer schon gefüllten Datenbank zu arbeiten. (Einer der Datenbanksupports Muss installiert werden) Datenbanksupport für MySql Installiert Konfigurationsdateien für den Betrieb mit einer schon installierten MySql-Datenbank. Im Hauptverzeichnis wird eine Datei namens "infomat.sql" angelegt. In ihr sind die Datenbankdefinitionen und Wörterbücher enthalten, die benutzt werden. Um diese in die bestehende Datenbank einzufügen, reicht die Eingabe von "mysql -u root -p <infomat.sql". Datenbankadresse,Username und Passwort müssen in der Datei "db_settings.properties" angegeben werden. (Einer der Datenbanksupports Muss installiert werden) Datenbanksupport für Hsql Installiert und konfiguriert eine HSQL-Datenbank. Es ist eine "Nur-Java" Datenbank, geeignet um mit einer geringen Anzahl von Dokumenten zu arbeiten. Der Vorteil hierbei ist, dass keine externe Datenbank installiert sein muss. (Einer der Datenbanksupports Muss installiert werden) Dokumentation Dokumentation des Programms Quellen Der Quellcode des Programms Spezieller Installationsumfang unter Windows: Datenbanksupport für lokalen MySql-Server Es wird ein vorkonfigurierter MySql-Server installiert. Er wird im Folgenden bei jedem Start des Programmes gestartet und nach dem Beenden beendet. (Einer der Datenbanksupports muss installiert werden) Im Anschluss startet die Installation im gewählten Umfang. Nach Abschluss der Installation und etwaiger manueller Änderungen an Konfigurationsdateien (Falls auf eine bestehende Datenbank zugegriffen werden soll), ist der Inf-O-Mat fertig installiert und konfiguriert. Er kann nun durch starten der Datei "run.bat" im Installationsverzeichnis (sowohl unter Windows 212

213 als auch unter Linux) gestartet werden. Alternativ dazu kann zum Starten auch einer der angelegten Shortcuts verwendet werden Schnittstellen und Wartungsfreundlichkeit Beim Entwurf und der Implementierung der Anwendung wurde besonders darauf geachtet, offene und einheitliche Schnittstellen zwischen den Programmmodulen zu realisieren, um eine leichte Wartbarkeit des Codes und eine einfache Erweiterung der Applikation im Nachhinein zu gewährleisten, falls dazu Bedarf besteht. Um dieses Ziel zu erreichen kamen im Wesentlichen das Entwurfsmuster der sog. "Fassade" in Verbindung mit klar definierten Modulen sowie die "Java-Reflection-API" zum Einsatz. Jedes Modul entspricht einem Java-Paket (bspw. "de.wiol.infomat.analysis") und bietet genau eine Fassadenklasse an, über die die Dienste des Moduls in Anspruch genommen werden können. Bis auf diese Fassadenklasse sind alle anderen Klassen nur innerhalb des jeweiligen Moduls selbst relevant, nicht jedoch für andere Module. So gibt es insgesamt die sieben folgenden Module: Grafische Benutzungsoberfläche (GUI) Steuerungsklassen Datenextraktion Semantische Analyse Semantische Suche Ontologie Persistenzebene Bis auf die GUI und die Steuerungsklassen sind alle Module im Wesentlichen "passiv", d.h. sie bieten Dienste an und agieren primär bei externem Aufruf durch die Steuerungsklassen bzw. die GUI. Besteht später der Bedarf, ein Modul auszutauschen, so kann dies leicht geschehen. Soll beispielsweise die Persistenzebene ersetzt werden, um eine Ablage der Nutzdaten in einer objektorientierten Datenbank zu ermöglichen, und nicht wie bisher in einer relationalen, so ist dies ohne viel Aufwand möglich. Das neue Modul muss eben nur eine gleichlautende Fassadenklasse anbieten, die dieselben Methodensignaturen (mit Rückgabewerten) bei den öffentlichen Methoden aufweist. Alle anderen Klassen sind nicht weiter relevant. In den Modulen "Datenextraktion" und "Semantische Analyse" kommt die Java Reflection API zu Einsatz, um bestimmte Klassen erst zur Laufzeit zu binden. Welche Klassen dies sind wird durch die Angabe entsprechender qualifizieter Klassenbezeichner in einer XML-Datei bestimmt. Vorteil dieses Systems ist ebenso eine besonders leichte Erweiterbarkeit. Wird bspw. eine Erweiterung der Datenextraktion zur Unterstützung eines weiteren Dateityps angestrebt, so reicht eine Ablage der neuen Klasse für diesen neuen Datentyp im Datenextraktions-Modul, ein Eintrag in der XML-Datei und allenfalls minimale Änderung am vorhandenen Programmcode. Zu guter letzt sorgt das vorhandene EventManagent-System für eine gewisse Datenunabhängigkeit. Es leitet sequenziell die eintreffenden Events an die Zielmodule weiter, ohne jedoch eine eigene Programmlogik anzubieten, die selbständig "Entscheidungen" trifft. Dies sorgt auf der einen Seite für eine Entkoppelung der einzelnen Programmodule, auf der anderen Seite für eine Gleichbehandlung, da jedes Modul den Weg über das EventManagement-System zu gehen hat. 213

214 5 Benutzerhandbuch In diesem Abschnitt wird die Bedienung des Inf-O-Mat beschrieben. Sie können diese Anleitung auch online aufrufen, indem Sie auf im Hauptmenu auf Hilfe und dann auf Handbuch klicken. 5.1 Das Hauptmenu Im Hauptfenster erhalten Sie einen Überblick über die Ontologie und die einsortierten Dokumente. Ontologie-Überblick (linkes Fenster) Im linken Fenster wird die aktuelle Ontologie dargestellt. Es werden nur die Klassen angezeigt, die Dokumente enthalten können. Dokumente der aktuellen Klasse (rechtes Fenster) Im rechten Fenster werden die Dokumente angezeigt, die sich in der links gewählten Klasse 214

215 befinden. Einträge im Hauptmenu: Datei Bearbeiten Dokument Klassifikation Ontologie Suche Hilfe Datei Aktualisieren: das ausgewählte Dokument wird neu klassifiziert. Exportieren in das Dateisystem: exportiert ausgewählte Dokumente in der Ontologie in das Dateisystem Beenden:beendet das Programm Bearbeiten Kopieren: kopiert das ausgewählte Dokument in die Zwischenablage. Mit dem Befehl "Einfügen" kann das Dokument in eine andere Klasse eingefügt werden. Einfügen: fügt das Dokument aus der Zwischenablage in die aktuelle Klasse ein. Ausschneiden: entfernt das Dokument aus der aktuellen Klasse und fügt es in die Zwischenablage ein. Mit dem Befehl "Einfügen" kann das Dokument in eine andere Klasse eingefügt werden. Benutzereinstellungen: Dokument Dokument neu klassifizieren: führt eine erneute Klassifikation für das markierte Dokument durch Dokument löschen: entfernt das markierte Dokument aus der Klasse Dokument aktualisieren: Das ausgewähltes Dokument wird erneut extrahiert, klassifiziert und in die Ontologie eingefügt Dokument mit externen Betrachter öffnen: startet einen geeigneten Betrachter für das gewählte 215

216 Dokument. In den "Einstellungen" können die bevorzugten Programme für verschiedene Dateitypen festgelegt werden Klassifikation Klassifikation starten: führt eine Klassifikation für auszuwählende Dokumente durch Ontologie Ontologie-Editor starten: Startet den Ontologie Editor Suche Suche nach Stichwörtern : Startet den Such-Dialog Suche nach ähnlichen Dokumenten: Startet den Such-Dialog Hilfe Handbuch: Öffnet die Hilfsseiten, in denen Sie gerade lesen :-) Statistik: Zeigt eine Statistik über alle Dokumente in der Datenbank an Inf-O-Mat: About-Dialog mit Informationen über die Inf-O-Mat-Entwickler/Betreuer 5.2 Hinzufügen von Dokumenten Klicken Sie auf "Dokumente/Metadaten editieren", um Dokumente für die Klassifikation auszuwählen. 216

217 Dokumente Auswählen und Einsortieren: 1. Klicken Sie auf Knopf Browse..., um Dokumente für die Klassifizierung auszuwählen. Es erscheint der folgende Dialog. 217

218 2. Wählen Sie das Verzeichnis, das die einzusortierenden Dokumente enthält und bestätigen Sie Ihre Auswahl mit OK. 3. Der Parameter "Tiefe" bestimmt Anzahl der Unterverzeichnisse, in denen nach unterstützten Dokumenttypen gesucht wird. Der Inf-O-Mat sucht rekursiv in allen Unterverzeichnissen der vorgegebenen Tiefe. Der voreingestellte Wert "0" ermöglicht die Erfassung von Dokumenten im aktuellen Verzeichnis. 4. Wählen Sie einen geeigneten Dateityp, um die Auswahl der Dokumente einzuschränken. Andernfalls erfasst der Inf-O-Mat alle Dokumente, die von der Extraktion verarbeitet werden können. 5. Im linken Feld befinden sich jetzt die Dokumente, die der Inf-O-Mat klassifizieren kann. Markieren Sie alle Dokumente, die erfasst werden sollen. Halten Sie die "Strg"-Taste gedrückt, um mehrere Dateien selektiv auszuwählen. Verwenden Sie die "Shift"-Taste, um einen Bereich von Dateien zu markieren. Alternativ können Sie durch einen Klick auf "Alle auswählen" alle gefundenen Dokumente der Klassifikation hinzufügen. 6. Um die Auswahl von Dokumenten rückgängig zu machen, wählen Sie die Optionen "Entfernen" oder "Alle entfernen" 7. Klicken Sie auf "Einsortieren", um die gewählten Dokumente zu extrahieren, klassifizieren und in die Datenbank aufzunehmen. 8. Sie können diesen Dialog jederzeit abbrechen, indem Sie auf "Abbrechen" klicken. 5.3 Export in das Dateisystem Die Export Funktion ermöglicht es, die Ontologie im XML-Format (als OWL-Datei) an anderer Stelle im Dateisystem oder auf einem externen Datenträger zu speichern. Weiterhin besteht die Möglichkeit, eine Klasse aus der Ontologie auszuwählen und alle Dokumente, die sich in dieser Klasse befinden, gesammelt und nach ihrer Klassenzuordnung strukturiert auf einem Dateisystem zu speichern. Hierbei werden auch die Dokumente der Unterklassen exportiert. Der Inf-O-Mat erzeugt dabei eine Verzeichnisstruktur, die dem gewählten Teilbaum entspricht. 218

219 Export von Dokumenten und ihrer Klassenstruktur: 1. Wählen Sie im linken Fenster aus der Ontologie die Klasse, aus der die Dokumente exportiert werden sollen 2. Klicken Sie auf "Zielverzeichnis auswählen", um das Verzeichnis festzulegen, in dem die Dokumente gespeichert werden sollen 3. Wenn verhindert werden soll, dass für evtl. vorhandene Unterklassen Ordner erstellt werden, kann durch Abwahl dieser Option veranlasst werden, dass die Dokumente aus der Klasse und allen Unterklassen in ein und dem selben Ordner gespeichert werden. Dies kann vor allem dann sinnvoll sein, wenn nur wenige Dokumente über eine Vielzahl von Klassen verteilt sind. 4. Klicken Sie auf "Exportieren", um die Dokumente auf dem Datenträger zu speichern. Die Klassenstruktur der Ontologie wird durch das Anlegen von Unterverzeichnissen nachgebildet Export der Ontologie 1. Klicken Sie auf "Dateinamen wählen", um den Namen festzulegen, unter dem die Ontologie auf einem Datenträger gespeichert werden soll 2. Klicken Sie auf "Exportieren", um die Ontologie im XML-Format auf dem Datenträger zu speichern 5.4 Suche nach Dokumenten Dieser Abschnitt beschreibt die Suchmöglichkeit im Inf-O-Mat. Es ist der primäre Dialog zum Suchen nach Dokumenten anhand vom Benutzer definierter Kriterien. Das Fenster besteht im wesentlichen aus zwei Suchmethoden, zum einen der (einfachen) Stichwortsuche und zum anderen aus der Metadatensuche. Diese beiden Methoden sollen im Folgenden kurz beschrieben werden. 219

220 5.5 Einfache Suche 1. Suchbegriff-Eingabezeile Hier werden die Suchbegriffe, bzw. die Kommandos eingegeben 2. Suchen-Knopf Startet die Suche (entspricht einem Druck auf RETURN) 3. Auswahl der Suchart Schlagwortsuche Schaltet das Suchfenster in den Schlagwort-Suchmodus. Nach einem Druck auf den Suchen-Knopf wird nach den Schlagwörtern in der Eingabezeile anhand der angegebenen Schlagwort-Suchmethode gesucht. Kommandobasierte Suche Wenn dieses Merkmal aktiviert ist, können in der Eingabezeile direkt ein oder mehrere Kommandos aus der Such-Kommando-Sprache eingegeben werden. 4. Auswahl der Schlagwort-Suchmethode genaue Phrase Sucht nach dem genauen Vorkommen der Phrase in der Eingabezeile. Entspricht dem Kommando PHRASE. 220

221 Mit Wortstammzerlegung Teilt die Eingabe in einzelne Wörter auf, führt anschließend eine Wortstammzerlegung durch, bestimmt Synonyme und sucht nach diesen und den Wörtern. Besondere Syntax : Wenn einem Wort ein "+" vorangestellt wird, muss dieses Wort in jedem Ergebnis und bei einem "-" in keinem Ergebnis vorkommen. Wenn nichts vorangestellt wird, kann, aber muss das Wort nicht in jedem Dokument vorkommen. Entspricht dem Kommando KEYWORD. inklusive Rechtschreibkorrektur Die Wörter der Eingabezeile werden in ihre Wortstämme zerlegt, dann werden dazu syntaktisch ähnliche Ausdrücke erzeugt und nach diesen und ihren Synonymen gesucht. Anschließend werden auch noch alle Metadaten nach den Wörtern der Eingabezeile durchsucht. Besondere Syntax wie bei der Wortstammzerlegung Entspricht dem Kommando COMPLEX. 5. Such-Ergebnisfenster Hier werden die zu einer Anfrage gefundenen Dokumente angezeigt. 6. Such-Mitteilungsfenster In diesem Feld werden etwaige Status- oder Fehlermeldungen angezeigt. 7. Beenden-Button Schließt dieses Fenster. 221

222 5.6 Metadatensuche 1. Suchbegriff-Feld In dieses Feld können Suchbegriffe eingetragen werden. 2. Suchfeld Hier lässt sich einstellen, ob nach einem Stichwort (entspricht "inklusive Rechtschreibkorrektur" und damit COMPLEX) gesucht werden soll oder nach einem Metadatum. Die wählbaren Metadaten sind z.b. der Autor, die Sprache des Dokumentes oder ähnliches. 3. Verknüpfungsfeld Zwei Suchbegriff-Felder lassen sich mit der entsprechenden Verknüpfung aus diesem Feld miteinander kombinieren. So lässt sich zum Beispiel mit einem (Suche-)Feld nach einem Stichwort suchen und mit einem anderen nach allen Dokumenten eines Autors. Diese beiden Felder lassen sich nun miteinander verknüpfen, so dass man alle Dokumente eines Autors erhält, in denen ein bestimmtes Stichwort vorkommt. 4. Suchfeld hinzufügen Button Mit diesem Button lässt sich ein neues Suchbegriff-Feld hinzufügen. 5. Suchfeld entfernen Button 222

223 Dieser Button entfernt das letzte Suchbegriff-Feld (zwei Felder bleiben immer bestehen). 6. Suchen-Button Startet die Suche. 7. Neue Suche Button löscht alle Suchbegriff-Felder. 5.7 Der Ontologie-Editor Der Ontologie-Editor ermöglicht das komfortable Hinzufügen, Bearbeiten und Löschen von Klassen. Weiterhin können Beziehungen zwischen den Klassen modelliert werden, die der semantischen Analyse ermöglichen, automatisch Dokumente in die richtigen Klassen einzusortieren. Baumdarstellung der Ontologie (linkes Fenster) 1. Im linken Fenster sehen Sie die Klassen, die bereits in der Ontologie vorhanden sind. Durch einen Klick auf "Nur Dokumentenklassen" können Sie die Klassen ein-/ausblenden, in denen keine Dokumente gespeichert werden sollen. Sie erhalten so einen schnellen Überblick über die Klassen, in die Dokumente einsortiert werden können. 223

224 2. Klicken Sie auf eine gewünschte Klasse oder klappen Sie Teilbäume der Ontologie auf und zu, indem Sie auf die kleinen Dreiecke vor den Klassennamen klicken. 3. "Neue Klasse anlegen" Fügen Sie der Ontologie neue Klassen hinzu. Die neue Klasse wird automatisch eine Unterklasse der im linken Fenster gewählten Kategorie! 4. "Klasse bearbeiten" Bearbeiten Sie die links gewählte Klasse im rechten Teil des Editors. 5. "Klasse löschen" Löschen Sie die gewählte Klasse aus der Ontologie. Sollte diese Klasse Dokumente enthalten, so werden diese in die nächste Oberklasse verschoben. Klassenbeschreibung (Rechtes oberes Fenster) In diesem Fenster kann der Name der Ontologie-Klasse eingegeben/geändert werden. 1. Führen Sie einen Doppelklick auf den Namen in deutscher oder englischer Sprache aus, um einen Eintrag zu bearbeiten. 2. Tragen Sie neben der Sprachbezeichnung den neuen Namen für die Klasse ein Darstellung der Beziehungen zwischen Klassen (Rechtes unteres Fenster) In diesem Fenster werden die Beziehungen angezeigt, die die oben angezeigte Klasse zu anderen Klassen der Ontologie besitzt. Beziehungen zwischen Klassen können hierarchisch oder gewichtet sein. 1. Achtung! Wählen sie im linken Fenster die Klasse aus, die die rechts dargestellte Klasse durch eine Beziehung beschreiben soll. Es können nur Beziehungen zwischen diesen beiden Klassen hinzugefügt werden. Klicken Sie erst dann auf "Beziehung hinzufügen". 2. Wählen Sie zwischen hierarchischer oder gewichteter Beziehung, um eine möglichst exakte Beschreibung der Klasse zu erzielen. Bei hierarchischen Beziehungen können Sie zwischen Ober- und Unterklasse wählen, die gewichteten Beziehungen modellieren schwache, mittelstarke und starke Hinweise auf die zu beschreibende Klasse. 3. Aktivieren Sie die entsprechenden Check-Boxen und wählen Sie geeignete Attribute, mit denen die Klasse am besten beschrieben werden kann. 4. "Beziehung bearbeiten" Mit dieser Funktion können Sie bestehende Beziehungen bearbeiten. Ändern Sie die bestehende Beziehungen und bestätigen Sie Ihre Auswahl mit OK 5. "Beziehung entfernen" Hiermit entfernen Sie eine Beziehung zwischen zwei Klassen Durch die vielfältigen Beziehungen zwischen den Klassen wird die automatische Klassifikation erst möglich. Je mehr Beziehungen zwischen den verschiedenen Klassen bestehen, desto genauer können die Dokumente einem Fachgebiet zugeordnet werden. 5.8 Dokumenteninformations- und Metadaten-Editor Dokumenteninformations-Editor Der Dokumenteninformationseditor ermöglicht es, die beschreibenden Informationen zu einem Dokument zu editieren, sowie die Klassenzugehörigkeit zu ändern. Um den Editor starten zu können, muss ein Dokument im Hauptfenster angewählt sein. Im oberen Teil des Fensters werden die allgemeinen Daten zum Dokument aufgelistet. Hierbei handelt es sich um den Namen, den Pfad, das Extraktionsdatum, den Dateityp und die Größe des Dokuments. 224

225 Der Dateiname kann direkt im Textfeld geändert werden. Zum Ändern des Dateipfads betätigen Sie bitte den "Ändern" Button, daraufhin öffnet sich ein Dateiauswahlfenster. Im unterem Teil des Fenstern werden alle Klassenzugehörigkeiten aufgelistet. Über den Slider können Sie die Zugehörigkeit zu der Klasse verändern. Die Mindestwahrscheinlichkeit liegt hierbei bei 10%. Falls die Klassenzugehörigkeit zu dem Dokument entfernt werden soll, betätigen Sie den "Löschen" Button. Um eine neue Klasse zum Dokument hinzu zufügen, können Sie in der unteren Combobox eine Klasse auswählen. Es werden alle Klassen aufgelistet, die modelliert sind. Anschließend betätigen sie den "Hinzufügen" Button. Mit dem Editor können Sie ein Dokument auch löschen indem Sie den "Dokument löschen" anklicken. Beachten Sie, dass das Dokument hierbei komplett aus der Datenbank entfernt wird! Alle Änderungen zum Dokument oder zu der Klassenzugehörigkeit werden erst übernommen, wenn sie den "Speichern" Button angeklickt haben. Das Entfernen des Dokuments wird allerdings im Gegensatz dazu sofort durchgeführt. Bearbeitung von Metadaten 225

226 Der Metadaten-Editor ermöglicht die Bearbeitung der Eigenschaften von Dokumenten wie Titel, Autor usw. Ein Standard für die Bearbeitung solcher Metadaten ist Dublin Core, der auch im Inf-OMat verwendet wird. Mit den 15 Dublin-Core-Elementen können alle Eigenschaften für ein Dokument beschrieben werden. Im oberen Bereich werden die Metadaten angezeigt, für die bereits Informationen eingetragen wurden oder die bei der Extraktion automatisch erkannt wurden. Klicken Sie auf einen Eintrag in der Tabelle, um die entsprechenden Metadaten zu bearbeiten. Im unteren Teil des Editors können Metadaten bearbeitet, hinzugefügt oder gelöscht werden. 1. Klicken Sie auf das schwarze Dreieck neben dem Auswahlfeld oder auf einen Eintrag aus dem oberen Fenster, um eine Eigenschaft auszuwählen 2. Bearbeiten Sie die Eigenschaft im rechten unteren Fenster 3. Klicken Sie auf "Hinzufügen", um ein oben noch nicht aufgeführtes Element hinzuzufügen. 4. Klicken Sie auf "Ändern", um ein oben bereits aufgeführtes Element zu verändern. 5. Klicken Sie auf "Löschen", um ein bestehendes Element zu entfernen 6. Klicken Sie auf "Speichern", um Ihre Änderungen zu übernehmen. Die Eigenschaften der oben angezeigten Tabelle werden gespeichert. 7. Hinweis: zum aktuellen Zeitpunkt darf das Metadatum "Sprache" nicht verändert werden 226

227 5.9 Einstellungen Dieser Dialog ermöglicht es, verschiedene Einstellungen des Inf-O-Mats vorzunehmen. Er unterteilt sich in folgende Abschnitte: grafische Benutzungsoberfläche, Datenbank, Ontologie, Semantische Analyse und Externe Betrachter. Der Einstellungsdialog ist zweigeteilt, auf der linken Seite befindet sich der Baum, in dem zwischen den einzelnen Einstellungsabschnitten navigiert werden kann. Auf der rechten Seite des Dialogs befinden sich die entsprechenden Einstellungen, die vorgenommen werden können. Die Änderungen werden sofort registriert und gespeichert. Beim Öffnen des Dialogs sind alle momentanen Einstellungen vorab angewählt bzw. angegeben. Grafische Benutzungsoberfläche (GUI) 1. Die Sprache der Bedienungsoberfläche kann über einen Auswahldialog geändert werden. Momentan kann zwischen einer deutschen oder einer englischen GUI umgeschaltet werden. 2. Das Hauptfenster kann in verschiedenen Auflösungen gestartet werden: 1024*768, 800*600, 640*480 oder maximiert. Falls keine Auflösung ausgewählt wird, startet Inf-O-Mat in der StandardAuflösung. 227

228 Außerdem kann in der Checkbox angewählt werden, ob die Fenstergröße und die -position beim Beenden des Inf-O-Mats gespeichert werden soll. Falls die Checkbox angewählt ist, erscheint das Hauptfenster beim nächsten Start des Inf-O-Mats an der gleichen Position mit der gleichen Größe. Datenbank Bei den Datenbankeinstellungen kann die URL, Loginname sowie das Passwort eingetragen oder geändert werden. Ontologie 1. Über den ersten "Auswählen" Button kann die zu verwendende Ontologiedatei ausgewählt werden. Dabei muss es sich um eine *.owl Datei handeln 2. Im Ontologie-Editor können Hilfsklassen anders farbig dargestellt werden, hierzu dient der zweite "Auswählen" Button, dieser öffnet ein Farbdialog, in dem die Farbe ausgewählt werden kann. Semantische Analyse 1. Es kann der Klassifizierungsgrenzwert eingestellt werden. Dabei kann zwischen einem schwachen, mittleren oder hohen Grenzwert gewählt werden. 2. Falls eine manuelle Klassifizierung vorgenommen werden soll, muss die erste Checkbox selektiert sein, dann kann für deutsche und englische Dokumente separat gewählt werden, mit welchem Algorithmus die Klassifizierung staffinden soll. Zur Auswahl stehen: Keyword: Vergleicht die 50 häufigsten Wörter mit der Ontologie. Simple: Klassifizierung erfolgt ohne Berücksichtigung der Ontologie. Bayes: lernender Algorithmus Externe Betrachter Falls der Inf-O-Mat auf einem Unix/Linux System ausgeführt wird, können Dokumente aus dem Haupt- oder Suchfenster nur geöffnet werden, wenn in den Benutzereinstellungen unter "Externe Betrachter" der Pfad zur jeweiligen Dateiendung angeben ist. Um den Pfad anzugeben öffnet sich durch das Anwählen des "Auswählen" Buttons ein Dateiauswahldialog. 228

229 5.10 Tastaturkürzel Viele Funktionen lassen sich auch direkt durch eine Tastenkombination aufrufen. Die folgenden Tabellen erläutern die möglichen Schnellzugriffe in den jeweiligen Dialogen. Hauptfenster Entf Löschen Strg + c Kopieren Strg + e Ontologie-Editor starten Strg + p Einstellungsdialog aufrufen OntologieEditor Entf Löschen Strg + c Kopieren Suche Dialog Entf Löschen Strg + c Kopieren 229

230 Auswahl Dialog Entf Löschen Strg + c Kopieren Strg+f Suchen Metadaten Editor Entf Löschen Strg + c Kopieren Strg+f Suchen 5.11 Mausbedienung Viele Befehle lassen sich auch durch ein Kontextmenu aufrufen. Bitte drücken Sie die rechte Maustaste auf Klassen oder Dokumenten, um sinnvolle Aktionen aufrufen zu können. Bei der Selektierung mehrerer Dokumente könne Bereiche markiert werden, indem vor dem Klick mit der Maus die Umschalt-Taste gedrückt wird. Nicht direkt aufeinander folgende Dokumente können markiert werden, indem vor dem Klick mit der Maus die STRG-Taste gedrückt wird Statistik Die Statistik bietet die Möglichkeit, sich einen Überblick über die Klassen der Ontologie und die Dokumente in den Klassen zu verschaffen 230

231 6 Ausblick Die Verwaltung und Speicherung elektronischer Dokumente ist mit dem explosionsartigen Wachstum der Internetauftritte stetig aufwändiger geworden. Die Menge der anfallenden Schriftstücke lässt sich auch durch ein geordnetes Speichern in Verzeichnissen kaum übersichtlich gestalten. Die Recherche in vielen gespeicherten Dokumenten ist schwierig, da unterschiedliche Dateiformate aufeinander treffen und dateibasierte Suchfunktionen nur eine eingeschränkte Funktionalität bieten. Der Inf-O-Mat bietet hingegen die vollautomatische Datenextraktion aus verschiedenen Dokumenttypen und eine Klassifizierung an Hand von Schlüsselwörtern oder des Bayes-Algorithmus'. Eine weitgehend programmierbare Suche mit eigenem Parser ermöglicht das schnelle Auffinden von Dokumenten nach unterschiedlichen Gesichtspunkten, ohne auf Dokumentformate Rücksicht nehmen zu müssen. Jedes Dokument kann durch Metadaten beschrieben und um wichtige Informationen ergänzt werden. Die Ontologie ermöglicht die Modellierung eigener, auch sehr spezieller Fachgebiete, in die passende Dokumente zuverlässig einsortiert werden können. Fehlgeschlagene Klassifizierungen können durch den Benutzer korrigiert werden. Die von Hand eingepflegten Korrekturen werden erkannt und für die Klassifikation späterer Dokumente zur Unterstützung herangezogen. Je mehr Dokumente und Klassen in der Ontologie bestehen, desto exakter gelingt die Klassifikation. Der Inf-O-Mat arbeitet damit um so präziser, je häufiger er genutzt wird. Da das Arbeiten im wissenschaftlichen Bereich häufig auch den Umgang mit mehrsprachigen Dokumenten notwendig macht, muss auch die Software mit dieses Internationalisierung Schritt halten können. Die Mehrsprachigkeit bei der Entwicklung des Inf-O-Mat wurde dabei in mehrerer Hinsicht vollzogen: sowohl die grafische Benutzeroberfläche als auch die Ontologie lassen sich in deutscher und englischer Sprache darstellen. Weitere Sprachen lassen sich mit geringem Aufwand 231

[Arbeiten mit dem Nvu Composer]

[Arbeiten mit dem Nvu Composer] Eine neue Seite erstellen Beim Start des Composers steht automatisch eine neue Composer-Seite zur Verfügung, die direkt verwendet werden kann. Über Datei > Neu > Composer-Seite kann jederzeit eine neue

Mehr

Algorithmen und Datenstrukturen 06

Algorithmen und Datenstrukturen 06 31. Mai 2012 1 Besprechung Blatt 5 Fragen 2 Objektorientierte Programmierung Allgemein Sichtbarkeit Konstanten 3 Unified Modeling Language (UML) Klassendiagramme Anwendungsfalldiagramme 4 Vorbereitung

Mehr

1 Klassen und Objekte

1 Klassen und Objekte 1 Klassen und Objekte Datentyp - Spezifikation des Typs von Datenobjekten Datenstruktur - logische Ordnung von Elementen eines Datentyps - zur (effizienten) Speicherung, Verwaltung, Zugriff - auf die Elemente

Mehr

Erstellen und Verwalten von Karteikarten für imcards am iphone / ipod touch

Erstellen und Verwalten von Karteikarten für imcards am iphone / ipod touch IMCARDSPC Erstellen und Verwalten von Karteikarten für imcards am iphone / ipod touch You 2 Software E-Mail: info@you2.de Homepage: http://www.you2.de You 2 Software 2010 imcardspc Handbuch 1-9 Haupt-Fenster

Mehr

Ihr Name: Massen- Globalmutation via Export und Re- Import

Ihr Name: Massen- Globalmutation via Export und Re- Import Ihr Name: Massen- Globalmutation via Export und Re- Import Inhalt 1. EINLEITUNG 3 2. EXPORT VON DATEN IN WINVS NEXT 3 3. BEARBEITEN DES EXCELS 4 4. IMPORT DER DATEI 5 5. IMPORT ALS NEUE DATENSÄTZE 7 5.1.

Mehr

Didaktik der Informatik. Dokumentation zur BlueJ-Erweiterung. Klassenkarte. Michael Steinhuber

Didaktik der Informatik. Dokumentation zur BlueJ-Erweiterung. Klassenkarte. Michael Steinhuber Didaktik der Informatik Dokumentation zur BlueJ-Erweiterung Klassenkarte Michael Steinhuber 28. April 2008 Inhaltsverzeichnis 1 Einleitung 3 2 Bedienungsanleitung 4 2.1 Anzeigen der Klassenkarte....................................

Mehr

EEP Ressourcen Switch. Benutzerhandbuch August 2017

EEP Ressourcen Switch. Benutzerhandbuch August 2017 EEP Ressourcen Switch Benutzerhandbuch August 2017 Inhaltsangabe Einführung...3 Installation...4 EEP Resourcen Switch...5 Menü-Leiste...7 Datei...8 Ressourcen...9 Extras...12 Hilfe...13 Icon-Leiste...14

Mehr

Betriebswirtschaftliche Standardsoftware - Made for the WEB. ESS Enterprise Solution Server. Dokumentenablage. Release 6.0 Dokumentenablage 1

Betriebswirtschaftliche Standardsoftware - Made for the WEB. ESS Enterprise Solution Server. Dokumentenablage. Release 6.0 Dokumentenablage 1 ESS Enterprise Solution Server Dokumentenablage Release 6.0 Dokumentenablage 1 Inhaltsangabe 1. Allgemeines... 3 2. Ablegen der Dokumente im ESS... 4 2.1. Voraussetzung... 4 2.1.1. Konfiguration des Browsers...

Mehr

Die Warenkorbfunktion (workbasket)

Die Warenkorbfunktion (workbasket) Beschreibung der Komponente zur integration eines Warenkorbs in die Anwendung Table of contents 1 Allgemein...2 2 Körbe speichern und laden...3 3 Aufgelöstes XML oder beliebige weitere Metadaten im Korb...

Mehr

Objektorientierte Programmierung (OOP)

Objektorientierte Programmierung (OOP) orientierte Programmierung (OOP) 1. Motivation Die objektorientierte Sichtweise der Welt Als Motivation für die OOP sieht man sich am besten die reale Welt an: Die reale Welt besteht aus "en", z. B.: Gegenstände,

Mehr

ILIAS Erste Schritte

ILIAS Erste Schritte ILIAS Erste Schritte 1 Persönlicher Schreibtisch...2 1.1 Persönliches Profil... 2 1.2 Kalender... 2 1.2.1 Einen neuen Termin erstellen... 3 1.2.2 Schlagwörter definieren... 3 1.3 Private Notizen... 3 1.4

Mehr

Das Scann-Programm wird entsprechend Ihrem Wunsch in zwei Versionen ausgeliefert:

Das Scann-Programm wird entsprechend Ihrem Wunsch in zwei Versionen ausgeliefert: Inhaltsverzeichnis Einleitung... 1 Archivordner festlegen... 2 Übersicht über Unterlagen-Gruppen... 3 Unterlagen scannen... 5 Zugriff auf die gescannten Unterlagen über WG1... 8 Aktivieren der Auswahlkästchen

Mehr

Stapelverarbeitung mit Adobe Acrobat Professional. Leibniz Universität IT Services Anja Aue

Stapelverarbeitung mit Adobe Acrobat Professional. Leibniz Universität IT Services Anja Aue Stapelverarbeitung mit Adobe Acrobat Professional Leibniz Universität IT Services Anja Aue Stapelverarbeitung Befehlsfolgen werden automatisiert abgearbeitet. Eine Reihe von Aktionen werden manuell gestartet

Mehr

IBM Software Demos Rational Systems Developer Introduction

IBM Software Demos Rational Systems Developer Introduction Heute sehen wir uns den IBM Rational Systems Developer näher an, der Teil der IBM Rational Software Delivery Platform ist. IBM Rational Systems Developer richtet

Mehr

WORD TEXT REPLACER 1 PROGRAMMHILFE GILLMEISTER SOFTWARE.

WORD TEXT REPLACER 1 PROGRAMMHILFE GILLMEISTER SOFTWARE. WORD TEXT REPLACER 1 PROGRAMMHILFE GILLMEISTER SOFTWARE www.gillmeister-software.de 1 INHALT 1 Inhalt... 1 1. Start... 3 2 Hauptmenü... 3 2.1 Menüeinträge der Gruppe Menü... 3 2.1.1 Optionen... 3 2.1.2

Mehr

Erstellen/Aktualisieren von HeBIS-Handbuchkapiteln

Erstellen/Aktualisieren von HeBIS-Handbuchkapiteln Seite 1 Erstellen/Aktualisieren von HeBIS-Handbuchkapiteln Inhalt: 1.Neues Handbuchkapitel anlegen 1.1. Text erstellen 1.2. Speicherort VZ-Laufwerk 2. Vorhandenes Handbuchkapitel aktualisieren 2.1. Aktualisierung

Mehr

Vorlesung Informatik II

Vorlesung Informatik II Vorlesung Informatik II Universität Augsburg Wintersemester 2011/2012 Prof. Dr. Bernhard Bauer Folien von: Prof. Dr. Robert Lorenz Lehrprofessur für Informatik 12. UML GUI-Schicht 1 GUI-Schicht Sichtbarmachen

Mehr

bibliothek 1 5 InDesign CS6 Verwenden von Objektbibliotheken

bibliothek 1 5 InDesign CS6 Verwenden von Objektbibliotheken 1 5 Verwenden von Objekten Mit Objekten können Sie häufig verwendete Grafiken, Text und Seiten systematisch ordnen. Außerdem können Sie einer Bibliothek Hilfslinien, Raster, gezeichnete Formen und gruppierte

Mehr

Frilo.Document.Designer

Frilo.Document.Designer Erstellt am 19. Februar 2011 Letzte Änderung am 10. Juni 2011 Version 4.2011.1.2 Seite 1 von 8 Inhalt 1 Erste Schritte...4 1.1 Arbeiten in der Verwaltung FCC und Erstellen eines Dokumentes...4 1.2 Erstellen

Mehr

Leitfaden für den Import von Artikeln und Sicherheitsdatenblättern/Leistungserklärungen

Leitfaden für den Import von Artikeln und Sicherheitsdatenblättern/Leistungserklärungen Leitfaden für den Import von Artikeln und Sicherheitsdatenblättern/Leistungserklärungen Import von Artikeln Der Import von Artikeln erfolgt über den Import-Button in der oberen Toolbar. Seite 1 Nach Anklicken

Mehr

Pflichtenheft Inhaltsverzeichnis. 1 Zielbestimmung Musskriterien Wunschkriterien Abgrenzungskriterien...

Pflichtenheft Inhaltsverzeichnis. 1 Zielbestimmung Musskriterien Wunschkriterien Abgrenzungskriterien... Pflichtenheft 17.05.2010 Inhaltsverzeichnis 1 Zielbestimmung 2 1.1 Musskriterien.................................. 2 1.2 Wunschkriterien................................ 3 1.3 Abgrenzungskriterien..............................

Mehr

Tutorial zum Erstellen eines Fragenkatalogs

Tutorial zum Erstellen eines Fragenkatalogs Tutorial zum Erstellen eines Fragenkatalogs Inhalt Tutorial zum Erstellen eines Fragenkatalogs... 1 Ein komplett neuen Fragenkatalog erstellen... 2 Einzelne Fragen oder Fragensets?... 6 Fehlermeldungen...

Mehr

[Hier klicken und Text eingeben] [Hier klicken und Text eingeben] Auftragsnummer: [Hier klicken und Text eingeben] Auftragnehmer:

[Hier klicken und Text eingeben] [Hier klicken und Text eingeben] Auftragsnummer: [Hier klicken und Text eingeben] Auftragnehmer: Pflichtenheft Auftraggeber: Auftragsnummer: Auftragnehmer: Bearbeiter: Berlin, den (microtool GmbH, Berlin) Pflichtenheft Inhalt 1 Einleitung (Introduction) 3 1.1 Zielsetzung (Purpose) 3 1.2 Scope (Scope)

Mehr

Objekte haben eine eigene Notation, also Schreibweise, beim Aufruf:

Objekte haben eine eigene Notation, also Schreibweise, beim Aufruf: JavaScript - Inhalt 1. Objekte 2. Arrays 3. Callbacks 1)JavaScript Objekte Objekte haben eine eigene Notation, also Schreibweise, beim Aufruf: Eine Methode wird immer mit dem Namen des Objekts, einem Punkt

Mehr

ORGAKOM 2017 imanv mstart Installations-Info Version 4.0

ORGAKOM 2017 imanv mstart Installations-Info Version 4.0 ORGAKOM 2017 imanv mstart Installations-Info Version 4.0 Installations-Info Übersicht 1. Allgemeines 2. FileMaker Go 16 Installation 3. Wichtige Einstellungen setzen 4. Download der imanv-mstart-app 5.

Mehr

Modell Bahn Verwaltung. Tutorial. Links. Min. Programm Version 0.65, März w w w. r f n e t. c h 1 / 11

Modell Bahn Verwaltung. Tutorial. Links. Min. Programm Version 0.65, März w w w. r f n e t. c h 1 / 11 Modell Bahn Verwaltung Tutorial Links Min. Programm Version 0.65, März 2015 Tutorial Version 04.01.2017 rfnet Software w w w. r f n e t. c h 1 / 11 Vorwort... 3 1 Links... 4 1.1 Einführung... 4 1.2 Link

Mehr

FAQ Frequently Asked Questions. Produktname AFPS Outlook-AddIn Version 1.63 Stand Inhalt

FAQ Frequently Asked Questions. Produktname AFPS Outlook-AddIn Version 1.63 Stand Inhalt FAQ Frequently Asked Questions Produktname AFPS Outlook-AddIn Version 1.63 Stand 05.02.2006 Inhalt Inhalt...1 1. Installation des AddIns...2 Deinstallation der Version 1.62...2 Installation verschiedener

Mehr

2 ArcGIS Pro Grundlagen

2 ArcGIS Pro Grundlagen 2.1 Anmeldung Beim ersten Start von ArcGIS Pro müssen Sie sich mit ihrer ArcGIS-Online-Identität oder Ihrem Enterprise-Konto anmelden (vgl. Abb. 1). Die bereitgestellten Funktionen in ArcGIS Pro hängen

Mehr

Installation und Einrichtung von TeXnic-Center

Installation und Einrichtung von TeXnic-Center Installation und Einrichtung von TeXnic-Center Um Berichte mit Latex verfassen zu können, wird im Idealfall ein Editor verwendet, der neben dem Erstellen des Dokuments noch weitere Features bereitstellt.

Mehr

Versionsupdate von V auf V We automate your success

Versionsupdate von V auf V We automate your success JetSym Versionsupdate von V. 5.4.0 auf V. 5.4.1 We automate your success Jetter AG Gräterstrasse 2 71642 Ludwigsburg Telefon: Zentrale +49 7141 2550-0 Vertrieb +49 7141 2550-531 Technische Hotline +49

Mehr

Eigene Seiten erstellen Eigene Inhalte / CMS

Eigene Seiten erstellen Eigene Inhalte / CMS Eigene Seiten erstellen Eigene Inhalte / CMS Datum 19. Oktober 2016 Version 3.1 Inhaltsverzeichnis Anleitung zur Erstellung von eigenen Inhalten/Links...3 1.Anmeldung in Shop Administration...3 2.Box Inhalte

Mehr

Software- und Systementwicklung

Software- und Systementwicklung Software- und Systementwicklung Seminar: Designing for Privacy 11.11.2009 Moritz Vossenberg Inhalt Vorgehensmodelle Wasserfallmodell V-Modell Phasen (Pflichtenheft) UML Klassendiagramm Sequenzdiagramm

Mehr

Frilo.Manager. Erstellt am 19. Februar 2011 Letzte Änderung am 11. Mai 2011 Version Seite 1 von 8

Frilo.Manager. Erstellt am 19. Februar 2011 Letzte Änderung am 11. Mai 2011 Version Seite 1 von 8 Speichern und Verwalten Ihrer Frilo-Positionen Einfügen von externen Dokumenten wie Word, Excel oder sonstige PDF- Dateien Paralleles Bearbeiten mehrerer Dokumente Erstellen eines Gesamtdokuments auf PDF-Basis

Mehr

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI Universität Osnabrück Drei-Schichten-Architektur 3 - Objektorientierte Programmierung in Java Vorlesung 6: 3-Schichten-Architektur Fachkonzept - GUI SS 2005 Prof. Dr. F.M. Thiesing, FH Dortmund Ein großer

Mehr

Dabei sollen die Nutzern nach einer Authentifizierung entsprechend ihren Rechten Begriffe ändern, anlegen und kommentieren können.

Dabei sollen die Nutzern nach einer Authentifizierung entsprechend ihren Rechten Begriffe ändern, anlegen und kommentieren können. Seite: 1 / 10 Designentwurf 1 Allgemeines 1.1 Kurzcharakterisierung Die Glossarverwaltung soll eine einheitliche Terminologie zwischen allen Beteiligten sicherstellen, hier zwischen den Mitarbeitern der

Mehr

Begriffe 1 (Wiederholung)

Begriffe 1 (Wiederholung) Begriffe 1 (Wiederholung) Klasse Eine Klasse ist der Bauplan für ein oder mehrere Objekte. In einer Klasse werden Dienste (Methoden) zur Verfügung gestellt. Klassennamen beginnen mit einem Großbuchstaben.

Mehr

MACKMA Architektur. MACKMA Core. Atomare Artefakte

MACKMA Architektur. MACKMA Core. Atomare Artefakte MACKMA Architektur Die Architektur des MACKMA-Systems ist modular aufgebaut, so dass Erweiterungen und Anpassungen flexibel vorgenommen werden können. Im Folgenden werden die einzelnen Bestandteile der

Mehr

Übungen Softwaretechnik I

Übungen Softwaretechnik I Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich Übungen Softwaretechnik I Übung 5: Objektorientierte Analyse Einführung Objektorientierung in der

Mehr

CLB Simulator. Inhaltsverzeichnis. Marcel Viehmeier. 30. Oktober Version 1.0.1

CLB Simulator. Inhaltsverzeichnis. Marcel Viehmeier. 30. Oktober Version 1.0.1 CLB Simulator Marcel Viehmeier 30. Oktober 2012 Version 1.0.1 Inhaltsverzeichnis 1 Einleitung 2 1.1 Hintergrund................................. 2 1.2 Technischer Hintergrund..........................

Mehr

Wie erreiche ich was?

Wie erreiche ich was? Wie erreiche ich was? Projekt: Bezeichnung: Auftragsverwaltung intern Interne Auftragsverwaltung Version: 9.0 Datum: 12.02.2013 Kurzbeschreibung: Mit diesem Leitfaden erhalten Sie eine tabellarische Kurzanleitung,

Mehr

Objektorientierte Programmierung III

Objektorientierte Programmierung III Objektorientierte Programmierung III OOP Kapselung: Gruppierung von Daten und Funktionen als Objekte. Definieren eine Schnittstelle zu diesen Objekten. Vererbung: Erlaubt Code zwischen verwandten Typen

Mehr

Trainingsmanagement Gutschein Management. Beschreibung

Trainingsmanagement Gutschein Management. Beschreibung Trainingsmanagement Beschreibung www.dastm.de info@dastm.de 1. Einführung... 2 2. Gutschein Funktionen... 3 2.1. Gutschein Menü... 3 2.2. Gutscheine anlegen... 4 Gutschein Kassenwirksam erfassen... 6 Gutschein

Mehr

Wiederholung. Klassenhierarchie:

Wiederholung. Klassenhierarchie: Wiederholung Klassenhierarchie: class Unter extends Ober {... Die Unterklasse Unter erweitert die Funktionalität ihrer Oberklasse Ober. Objekte der Klasse Unter können anstelle von Objekten der Klasse

Mehr

Universität Augsburg, Institut für Informatik Sommersemester 2001 Prof. Dr. Martin Ester 16. Juli Klausur

Universität Augsburg, Institut für Informatik Sommersemester 2001 Prof. Dr. Martin Ester 16. Juli Klausur Universität Augsburg, Institut für Informatik Sommersemester 2001 Prof. Dr. Martin Ester 16. Juli 2001 Stefan Holland Informatik II Hinweise: Klausur Verwenden Sie für Ihre Lösungen ausschließlich den

Mehr

MAILCHIMPCONNECTOR FÜR DAYLITE

MAILCHIMPCONNECTOR FÜR DAYLITE MAILCHIMPCONNECTOR FÜR DAYLITE Table of Contents Allgemeines... 3... 4 Einrichtung... 5 Installation... 6 Lizenzierung... 9 Benutzung...12 Einrichtung des notwendigen API Key...13 Listenverwaltung...17

Mehr

STP Handout. bea-unterstützung im LEXolution.DMS Outlook Desk

STP Handout. bea-unterstützung im LEXolution.DMS Outlook Desk STP Handout bea-unterstützung im LEXolution.DMS Outlook Desk bea-unterstützung im LEXolution.DMS Outlook DESK Der LEXolution.DMS Outlook DESK enthält ab Version 6.1 eine neue Registerkarte bea, die Sie

Mehr

Suchen von Bildern mit Hilfe der Bilddatenbank der Universität Basel (EasyDB)

Suchen von Bildern mit Hilfe der Bilddatenbank der Universität Basel (EasyDB) Suchen von Bildern mit Hilfe der Bilddatenbank der Universität Basel (EasyDB) 1. Suche innerhalb der Universität Basel Nach dem einloggen erscheint die standardmässige Oberfläche der Bilddatenbank Das

Mehr

Netzlaufwerk-Verbindung auf den Server se-1ug w2k.makro.privat. im Computerraum für die Daten der Chemikaliendatenbank

Netzlaufwerk-Verbindung auf den Server se-1ug w2k.makro.privat. im Computerraum für die Daten der Chemikaliendatenbank Netzlaufwerk-Verbindung auf den Server se-1ug-01008-05.w2k.makro.privat im Computerraum für die Daten der Chemikaliendatenbank Verwendung nur für geschäftliche Belange, ablegen oder Missbrauch durch private

Mehr

:44 1/8 Fachwahl

:44 1/8 Fachwahl 07.06.2017 19:44 1/8 Fachwahl Fachwahl Jahrgänge mit Abiturjahr 2017 und 2018 Die beiden Jahrgänge werden noch mit Hilfe der WinQD zum Abitur geführt. Wenn die Oberstufeninformationen im Rahmen der Vorbereitungen

Mehr

Einschränkung der Sichtbarkeit

Einschränkung der Sichtbarkeit Einschränkung der Sichtbarkeit Möchten Sie in speziellen Situationen bestimmte Bilder bei der Suche in der Ergebnismenge ausblenden oder möchten Sie den Nutzern Ihres Webservers nur ganz bestimmte Bilder

Mehr

Kontakte. Inhaltsverzeichnis

Kontakte. Inhaltsverzeichnis Kontakte Inhaltsverzeichnis 1 Einleitung... 3 2 Kontakt anlegen... 3 3 Kontakt (Firma / Person)... 3 3.1 Menü: Kontakt, Löschen, Aktivität, Kalender öffnen... 3 3.1.1 Kontakt - zusammenführen... 3 3.1.2

Mehr

Dateizuordnungen. Mike McBride Deutsche Übersetzung: Stefan Winter

Dateizuordnungen. Mike McBride Deutsche Übersetzung: Stefan Winter Mike McBride Deutsche Übersetzung: Stefan Winter 2 Inhaltsverzeichnis 1 Dateizuordnungen 4 1.1 Einleitung.......................................... 4 1.2 Benutzung dieses Moduls.................................

Mehr

Kapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen

Kapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen Kapitel 9 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Objektorientierte Programmierung Attribute von Klassen, Methoden und Variablen Interfaces WS 07/08 1/ 18 2/ 18

Mehr

CADEMIA: Einrichtung Ihres Computers unter Windows

CADEMIA: Einrichtung Ihres Computers unter Windows CADEMIA: Einrichtung Ihres Computers unter Windows Stand: 30.01.2017 Java-Plattform: Auf Ihrem Computer muss die Java-Plattform, Standard-Edition der Version 7 (Java SE 7) oder höher installiert sein.

Mehr

Softwaretechnik 2015/2016

Softwaretechnik 2015/2016 Softwaretechnik 2015/2016 PST Lehrstuhl Prof. Dr. Matthias Hölzl HAUPT-/ BACHELOR- SEMINAR ADAPTIVE SYSTEME PST Joschka PROF. DR. Rinke WIRSING 14. JUNI 2009 VORNAME NAME AGENDA Übung 11: 14.01.2016 Schon

Mehr

EasyWebNG - Screenshots

EasyWebNG - Screenshots EasyWebNG - Screenshots EasyWebNG ist und bleibt 100% kostenlos. Weitere Informationen finden Sie unter http://www.nbs-rottweil.de/easywebng Bereich Alle InstallationEasyWeb. Startseite Startseite nach

Mehr

Um den Übergang zur neuen 4Master -Version besser vorzubereiten, wurde deshalb für die Übergangsphase das Programm 4M2Datev entwickelt.

Um den Übergang zur neuen 4Master -Version besser vorzubereiten, wurde deshalb für die Übergangsphase das Programm 4M2Datev entwickelt. Einführung Mit Beginn des Jahres 2018 stellt die DATEV die Unterstützung der Importschnittstelle SELF für ihre Buchhaltungsprogramme ein. Höchstwahrscheinlich werden Daten über diese Schnittstelle nicht

Mehr

Wie erreiche ich was?

Wie erreiche ich was? Wie erreiche ich was? Projekt: Bezeichnung: CRM Customer Relationship Management Hauptmenü - Briefe Version: 4.11. Datum: 22. Juli 2014 Kurzbeschreibung: Sie können im CRM Briefvorlagen erstellen, Musterbriefe

Mehr

Wie erreiche ich was?

Wie erreiche ich was? Wie erreiche ich was? Projekt: Bezeichnung: Kostenrechnung KOBAU-Viewer Version: 1.0.4 Datum: 14. August 2013 Kurzbeschreibung: In der vorliegenden Kurzbeschreibung finden Sie die genaue Anleitung für

Mehr

2. Übung zu Software Engineering

2. Übung zu Software Engineering 2. Übung zu Software Engineering WS 2007/2008 Organisatorisches [SE] als Teil des E-Mail-Betreffs nicht: SE, Software Engineering, Blatt 01 etc. Abgabe: EINE pdf-datei, spätestens 11:30 Uhr nicht: xls,

Mehr

Anleitung zur Benutzung des Admin Control Panel

Anleitung zur Benutzung des Admin Control Panel Anleitung zur Benutzung des Admin Control Panel Homepageversion 0.3.2 vom 04.10.2015 Dokumentenversion 1.0 vom 08.10.2015 1. Globale Einstellungen 2. Eine Seite bearbeiten Wie bearbeite ich eine Seite?

Mehr

AplusixAdmin : Administration von Aplusix 3 Benutzerhandbuch

AplusixAdmin : Administration von Aplusix 3 Benutzerhandbuch 1. Einleitung AplusixAdmin : Administration von Aplusix 3 Benutzerhandbuch Mai 2011 Deutsche Übersetzung von Marion Göbel verfaßt mit epsilonwriter AplusixAdmin ist die Verwaltungssoftware von Aplusix.

Mehr

PC Software ETL DataView f. Serie 400, Version 3 Art.-Nr.: Datenmanagement-Paket

PC Software ETL DataView f. Serie 400, Version 3 Art.-Nr.: Datenmanagement-Paket PC Software ETL DataView f. Serie 400, Version 3 Art.-Nr.: 205060 Datenmanagement-Paket Einleitung ETL DataView 3 ist die 3. Generation der Datenmanagementsoftware zur Verwaltung der Geräteeinstellungen

Mehr

Markus Mandalka Einführung in die Fotoverwaltung mit JPhotoTagger. Version vom 6. September Inhaltsverzeichnis

Markus Mandalka Einführung in die Fotoverwaltung mit JPhotoTagger. Version vom 6. September Inhaltsverzeichnis Markus Mandalka Einführung in die Fotoverwaltung mit JPhotoTagger Version 10.07.06 vom 6. September 2010 Inhaltsverzeichnis Grundaufbau der Programmoberfläche...2 Bilder suchen und sichten...2 Schnellsuche...2

Mehr

Neue Dateien zu einem bestehenden Katalog hinzufügen

Neue Dateien zu einem bestehenden Katalog hinzufügen Elemente Importieren Neue Dateien zu einem bestehenden Katalog hinzufügen Um Ihre Dateien mit Daminion verwalten zu können, ist es zunächst erforderlich, diese Dateien in den Daminion Katalog zu importieren.

Mehr

DAS EINSTEIGERSEMINAR

DAS EINSTEIGERSEMINAR DAS EINSTEIGERSEMINAR Microsoft Office Excel 2010 Gudrun Rehn-Göstenmeier LERNEN ÜBEN ANWENDEN Teil I: Lernen L1 Dateiorganisation Bevor wir uns mit den Excel-spezifischen Befehlen und Funktionen befassen

Mehr

Schreiben erstellen in KeItSi

Schreiben erstellen in KeItSi Schreiben erstellen in KeItSi Version: 1.20 Datum: 15.06.2017 Internet: E-Mail: www.keitsi.de info@keitis.de KeItSi Schreiben erstellen Version 1.20 Seite 1 / 7 Einleitung KeItSi erlaubt seit der Version

Mehr

CADEMIA: Einrichtung Ihres Computers unter Linux mit Oracle-Java

CADEMIA: Einrichtung Ihres Computers unter Linux mit Oracle-Java CADEMIA: Einrichtung Ihres Computers unter Linux mit Oracle-Java Stand: 30.01.2017 Java-Plattform: Auf Ihrem Computer muss die Java-Plattform, Standard-Edition der Version 7 (Java SE 7) oder höher installiert

Mehr

SMARTentry Notification

SMARTentry Notification Vario IT-Solutions GmbH SMARTentry Notification Dokumentation 08.04.2016 Installation und Einrichtung von SMARTentry Notification für bestehende und neue SALTO Installationen mit SHIP Schnittstelle. Inhaltsverzeichnis

Mehr

Alerts für Microsoft CRM 4.0

Alerts für Microsoft CRM 4.0 Alerts für Microsoft CRM 4.0 Benutzerhandbuch Der Inhalt des Dokuments ist Änderungen vorbehalten. Microsoft und Microsoft CRM sind registrierte Markenzeichen von Microsoft Inc. Alle weiteren erwähnten

Mehr

PL Daniel Keil Softwaretechnikpraktikum erstellt am: V. Recherche Torsten Heinrich Gruppe ueb22 Aufgabenblatt 1 1.

PL Daniel Keil Softwaretechnikpraktikum erstellt am: V. Recherche Torsten Heinrich Gruppe ueb22 Aufgabenblatt 1 1. 1. Allgemeines Das zu entwickelnde Produkt soll für den Übungsbetrieb an Hochschulen konzipiert werden. Die zu Grunde liegende Idee ist es, diesen weitestgehend zu automatisieren und für die Nutzer dieses

Mehr

Das Einsteigerseminar Objektorientierte Programmierung in Java

Das Einsteigerseminar Objektorientierte Programmierung in Java Alexander Niemann Das Einsteigerseminar Objektorientierte Programmierung in Java -H-H Inhalt Vorwort 13 Einleitung 15 1 Java 21 1.1 Die Geschichte von Java 22 1.2 Das Konzept 24 Klassisch - Compiler und

Mehr

Midas Metadata yield by Data Analysis

Midas Metadata yield by Data Analysis Midas Metadata yield by Data Analysis Glossar powered by Was ist Text Mining? Unter Text Mining versteht sich im Allgemeinen die Extraktion von strukturierten Informationen aus unstrukturierten oder semistrukturierten

Mehr

PDF-Druck und PDF-Versand mit repdoc Werkstattsoftware

PDF-Druck und PDF-Versand mit repdoc Werkstattsoftware PDF-Druck und PDF-Versand mit repdoc Werkstattsoftware Installation und Erste Schritte Limex Computer GmbH. Alle Rechte vorbehalten Übersicht Mit der Version Q1/2012 bietet repdoc Werkstattsoftware eine

Mehr

Handbuch. Aufzeichnung aller ein- und ausgehenden Dokumente in einem fortlaufenden Postbuch für Dokumentation und Recherche.

Handbuch. Aufzeichnung aller ein- und ausgehenden Dokumente in einem fortlaufenden Postbuch für Dokumentation und Recherche. Handbuch Aufzeichnung aller ein- und ausgehenden Dokumente in einem fortlaufenden Postbuch für Dokumentation und Recherche Version 1 2000-2014, Fischer Software Berlin 1. BESCHREIBUNG... 3 2. KONFIGURATION...

Mehr

38. Benutzerverwaltung

38. Benutzerverwaltung 38. Benutzerverwaltung Stellen Sie Standard-Variablen für jeden Benutzer individuell ein. Begrenzen Sie den Zugang für einzelne Benutzer zeitlich, z.b. für Praktikanten. Legen Sie fest, wie HVO2go und

Mehr

12 Abstrakte Klassen, finale Klassen und Interfaces

12 Abstrakte Klassen, finale Klassen und Interfaces 12 Abstrakte Klassen, finale Klassen und Interfaces Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält,

Mehr

Pflichtenheft zum erweiterten UML-Tool

Pflichtenheft zum erweiterten UML-Tool Westfälische Wilhelms-Universität Münster Fachbereich Mathematik und Informatik Programmierpraktikum WS 2000/2001 Dozent: Dr. Dietmar Lammers Pflichtenheft zum erweiterten UML-Tool Projektgruppe SynergieSoft

Mehr

Benutzerhandbuch. Liquid-Preisvergleichsportale. Version

Benutzerhandbuch. Liquid-Preisvergleichsportale. Version Benutzerhandbuch Liquid-Preisvergleichsportale Version 2016.2 Inhaltsverzeichnis 1 EINLEITUNG... 3 2 BESCHREIBUNG... 4 2.1 ARTIKEL... 4 2.2 BEZIEHUNGEN... 5 2.3 BEARBEITEN... 6 2.3.1 KONFIGURATION... 6

Mehr

Volltextsuche E-Akte. Volltextsuche E-Akte. Volltextsuche E-Akte. Kategorie: E-Workflow. Tastenkombination: Support-Hotline: 030/

Volltextsuche E-Akte. Volltextsuche E-Akte. Volltextsuche E-Akte. Kategorie: E-Workflow. Tastenkombination: Support-Hotline: 030/ Volltextsuche E-Akte Hauptseite > E-Workflow > Volltextsuche E-Akte Volltextsuche E-Akte Kategorie: E-Workflow Tastenkombination: Support-Hotline: 030/43598888 Support Formular: https://www.ra-micro.de/support/

Mehr

Typo3 Benutzerhandbuch

Typo3 Benutzerhandbuch Typo3 Benutzerhandbuch contemas GmbH & Co KG Hauptplatz 46 7100 Neusiedl/See m: office@contemas.net Sechsschimmelgasse 14 1090 Wien www.contemas.net t: +43 (0) 136 180 80 Inhaltsverzeichnis 1 Zugang...

Mehr

Von der UML nach C++

Von der UML nach C++ 22 Von der UML nach C++ Dieses Kapitel behandelt die folgenden Themen: Vererbung Interfaces Assoziationen Multiplizität Aggregation Komposition Die Unified Modeling Language (UML) ist eine weit verbreitete

Mehr

7. Objektorientierung. Informatik II für Verkehrsingenieure

7. Objektorientierung. Informatik II für Verkehrsingenieure 7. Objektorientierung Informatik II für Verkehrsingenieure Klassen, Objekte und Attribute Buslinie und Haltestellen 3 Haltestellen und deren Eigenschaften Bauplan einer Haltestelle (Struktur) Konkrete

Mehr

Verwaltung der Textdokumente

Verwaltung der Textdokumente Verwaltung der Textdokumente Im Programm FACTOR Zeitarbeit können benutzereigene Vorlagen für Textdokumente, E-Mails und SMS integriert werden. Zu finden ist die Dokumentenverwaltung im FACTOR AdminTool,

Mehr

Tyros 5 / PSR-S970 / PSR-S770: Wichtige Information: Mehrere Expansion Packs gleichzeitig installieren

Tyros 5 / PSR-S970 / PSR-S770: Wichtige Information: Mehrere Expansion Packs gleichzeitig installieren Tyros 5 / PSR-S970 / PSR-S770: Wichtige Information: Mehrere Expansion Packs gleichzeitig installieren Bitte vor dem Installieren mehrerer Expansion Packs unbedingt lesen! Beim Installieren von Expansion

Mehr

1. Kapitel Konfiguration der Felder der Kursbeschreibung

1. Kapitel Konfiguration der Felder der Kursbeschreibung Handbuch 1. Kapitel Konfiguration der Felder der Kursbeschreibung Mit der Datei config.xml im Verzeichnis swp/xml/_i18n/ kann die Struktur der Kursbeschreibung einfach an eigene Wünsche angepasst werden.

Mehr

Im Mathe-Pool startet man Eclipse am besten aus einer Shell heraus, und zwar indem man im Home- Verzeichnis den Befehl

Im Mathe-Pool startet man Eclipse am besten aus einer Shell heraus, und zwar indem man im Home- Verzeichnis den Befehl Eclipse Eclipse ist eine IDE (Integrierte Entwicklungsumgebung), die speziell auf das Programmieren in Java zugeschnitten (und auch selbst in Java geschrieben) ist. Eine solche IDE vereint die Funktionalität

Mehr

Frank Neuschütz * EDV und Verwaltungsservice. Bäumleweg 13a * Grenzach-Wyhlen Tel.: / *

Frank Neuschütz * EDV und Verwaltungsservice. Bäumleweg 13a * Grenzach-Wyhlen Tel.: / * CHECK IN Kundenverwaltung Installationshandbuch Version: 2007.20 Seite: 2 17.10.2008 1. Allgemein... 3 1.2. Systemvoraussetzungen... 3 2. Installation... 3 2.1. UPDATE einer älteren Version von CheckIn:...

Mehr

T:\Dokumentationen\Asseco_BERIT\Schulung\BERIT_LIDS7_Basiskurs\Impo rt_export\beritde_lt_do_20120918_lids7.basisschulung_import_export.

T:\Dokumentationen\Asseco_BERIT\Schulung\BERIT_LIDS7_Basiskurs\Impo rt_export\beritde_lt_do_20120918_lids7.basisschulung_import_export. LIDS 7 Import/Export Mannheim, 11.02.2013 Autor: Anschrift: Version: Status: Modifiziert von: Ablage: Christine Sickenberger - Asseco BERIT GmbH Asseco BERIT GmbH Mundenheimer Straße 55 68219 Mannheim

Mehr

VERWENDUNG DES FRAGEBOGENBAUKASTENS

VERWENDUNG DES FRAGEBOGENBAUKASTENS VERWENDUNG DES FRAGEBOGENBAUKASTENS Der Fragebogenbaukasten liegt als Zip-Datei im standardisierten QTI-Format vor und kann daher in CommSy-Projekträume und OLAT-Kurse eingebunden werden. In OLAT-Kursen

Mehr

Eikon Crashkurs Eikon ist eine Software von Thomson Reuters um Finanzinformationen abzurufen und zu analysieren.

Eikon Crashkurs Eikon ist eine Software von Thomson Reuters um Finanzinformationen abzurufen und zu analysieren. Eikon Crashkurs Eikon ist eine Software von Thomson Reuters um Finanzinformationen abzurufen und zu analysieren. Erste Schritte - Navigation Toolbar Nach dem Starten von Eikon öffnet sich die Toolbar am

Mehr

zur Verfügung gestellt durch das OpenOffice.org Dokumentations-Projekt

zur Verfügung gestellt durch das OpenOffice.org Dokumentations-Projekt Serienbriefe Wie Sie einen Serienbrief mittels Calc und Writer erstellen zur Verfügung gestellt durch das OpenOffice.org Dokumentations-Projekt Inhaltsverzeichnis 1. Erzeugen einer Quelldatei 2. Erzeugung

Mehr

Durch die Anwahl des Menüpunktes (1) KIS im Menüband auf der linken Seite gelangen Sie in den Bereich des Kanzlei-Informations-Systems.

Durch die Anwahl des Menüpunktes (1) KIS im Menüband auf der linken Seite gelangen Sie in den Bereich des Kanzlei-Informations-Systems. K U R Z A N L E I T U N G R Z L B O A R D S E R I E N B R I E F RZL Software GmbH Hannesgrub Nord 5 49 Tumeltsham Version:. August 07/ng. Öffnen des Kanzlei-Informations-Systems Durch die Anwahl des Menüpunktes

Mehr

OMS-FS. Objekt-Memory-Server - Dateisystem-Schnittstelle TOBIAS GROß UNIVERSITÄT DES SAARLANDES 17. NOVEMBER Betreuer : Michael Schneider

OMS-FS. Objekt-Memory-Server - Dateisystem-Schnittstelle TOBIAS GROß UNIVERSITÄT DES SAARLANDES 17. NOVEMBER Betreuer : Michael Schneider Objekt-Memory-Server - Dateisystem-Schnittstelle TOBIAS GROß UNIVERSITÄT DES SAARLANDES 17. NOVEMBER 2010 Betreuer : Michael Schneider Einleitung Ohne OMS-FS Daten vom Chip auslesen Dateien von Hand auf

Mehr

S.M. Hartmann GmbH IT Solutions

S.M. Hartmann GmbH IT Solutions S.M. Hartmann GmbH 82008 Unterhaching Prager Straße 7 www.smhsoftware.de S.M. Hartmann GmbH IT Solutions Software für den modernen Handel SMH-Connect/400 Version V6.0 Beschreibung SMH-Connect: iseries

Mehr

Herzlich willkommen!

Herzlich willkommen! Programmiertechnik 1 Herzlich willkommen! Dozent: Dipl.-Ing. Jürgen Wemheuer Mail: wemheuer@ewla.de Online: http://cpp.ewla.de/ Disclaimer 2 Diese Vorlesungs-/Unterrichtsfolien wurden durch den Dozenten

Mehr