[TASK] Add some introduction.

This commit is contained in:
Jan Philipp Timme 2016-05-03 17:05:04 +02:00
parent 39ff95967c
commit aa8ab697bd
2 changed files with 72 additions and 103 deletions

View File

@ -148,26 +148,24 @@ Hannover, den \today \hfill Unterschrift
\chapter{Einleitung} \chapter{Einleitung}
\todo Diese Arbeit beschäftigt sich mit \enquote{Complex Event Processing} (CEP), also der Verarbeitung komplexer Ereignisse auf Ereignisdatenströmen mit Integration von Hintergrundwissen, und der praktischen Nutzung der CEP-Engine C-SPARQL.
Diese Arbeit beschäftigt sich mit der Verarbeitung von komplexen Ereignissen (CEP) auf RDF-Datenströmen mit C-SPARQL. Nach einem kurzen Einstieg in das Thema CEP soll der Leser einen Einblick in die Features von aktuellen CEP-Engines erhalten und am Beispiel der Engine C-SPARQL die Verarbeitung von Ereignisströmen im RDF-Format in Kombination mit Hintergrundwissen im Detail kennenlernen. An einem Beispielszenario soll dann der Praxiseinsatz von C-SPARQL erklärt werden, in dem einige der vorgestellten Features Anwendung finden. Im Abschluss wird ein kurzer Ausblick auf die technischen Möglichkeiten des Reasoning gegeben - eine Technik, die es erlaubt auf den vorhandenen und eingehenden Daten logische Schlussfolgerungen und Operationen durchzuführen um neues Wissen zu erhalten.
\chapter{Einführung in Complex Event Processing}
\todo \todo
Was ist CEP und warum sollte man es verwenden wollen? \section{Einführung in Complex Event Processing}
Generell sollen Muster von primitiven Events erkannt und zu komplexen Events zusammengefasst werden. (Niedrige Abstraktion \textrightarrow~ Höhere Abstraktion). Dann sollen daraus tolle Erkenntnisse gewonnen werden. Im folgenden Abschnitt wird ein kurzer Überblick über Complex Event Processing (CEP) gegeben. Eine detailreiche Erläuterung von CEP und die Anwendung der Engine Esper in einem Beispielszenario wird in \cite{hsh:cep} beschrieben.
Ereignisse stellen einen konkreten momentanen Zustand dar, aber sind für sich alleine betrachtet kontextlos; die daraus resultierende Bedeutung fehlt. Weiterhin sind diese Informationen oft nur für einen begrenzten Zeitraum gültig.
Die Erkennung von Mustern in den Ereignissen ist interessant.
Wir verarbeiten Ereignisströme und versuchen aus dem großen Rauschen bestimmte Ereignismuster zu erkennen.
Und wir wollen kurz-, mittel- oder langfristig bestimmte Werte beobachten und sicherstellen, dass sie innerhalb eines spezifizierten Wertebereichs bleiben.
Es ist eine tolle Herangehensweise, um aus großen Datenströmen wesentliche Informationen zu extrahieren - noch bevor ein Mensch diese Daten zu Gesicht bekommt.
\section{Ereignisquellen} \section{Ereignisquellen}
\todo
Ereignisse treten überall auf, wenn man sich darauf einlässt. Ereignisse treten überall auf, wenn man sich darauf einlässt.
Welche Ereignisse kann man sich denn so vorstellen? Welche Ereignisse kann man sich denn so vorstellen?
@ -185,8 +183,6 @@ Diese hier:
\section{Ereignisse als Informationsträger} \section{Ereignisse als Informationsträger}
\todo
Alles, was irgendwo passiert liefert Informationen über den Zustand unserer Umgebung. Alles, was irgendwo passiert liefert Informationen über den Zustand unserer Umgebung.
Jede aktuell gemeldete Information ist ein Ereignis. Eine gerade gemessene Temperatur, eine Fehlermeldung einer Werkzeugmaschine oder das Auslösen eines Rauchmelders sind Ereignisse, die einen aktuellen Zustand unserer Welt repräsentieren. Jede aktuell gemeldete Information ist ein Ereignis. Eine gerade gemessene Temperatur, eine Fehlermeldung einer Werkzeugmaschine oder das Auslösen eines Rauchmelders sind Ereignisse, die einen aktuellen Zustand unserer Welt repräsentieren.
@ -207,62 +203,53 @@ Ein Ereignis kann beispielsweise so strukturiert sein:
\section{Ereignisströme als Datenquelle} \section{Ereignisströme als Datenquelle}
\todo
Ja, Ereignisse treten öfters in Rudeln auf. Wenn viele Ereignisse aneinandergereiht werden, spricht man von einem Ereignisstrom. Ja, Ereignisse treten öfters in Rudeln auf. Wenn viele Ereignisse aneinandergereiht werden, spricht man von einem Ereignisstrom.
Anbieter von Daten können anstatt aktueller Messwerte als einzelnes Ereignis natürlich gleich Ereignisströme liefern. Das ist technisch sicherlich auch ganz praktisch, weil Verzicht auf Polling und so Sachen. Anbieter von Daten können anstatt aktueller Messwerte als einzelnes Ereignis natürlich gleich Ereignisströme liefern. Das ist technisch sicherlich auch ganz praktisch, weil Verzicht auf Polling und so Sachen.
\chapter{Gegenüberstellung existierender CEP-Engines} \chapter{Gegenüberstellung existierender CEP-Engines}
\todo
Es gibt bereits einige Technologien um Ereignisströme zu verarbeiten. Es gibt bereits einige Technologien um Ereignisströme zu verarbeiten.
Im Folgenden stelle ich nun ein paar bekannte Systeme kurz vor. Im Folgenden stelle ich nun ein paar bekannte Systeme kurz vor.
\section{Anforderungen an CEP-Engines}
Wichtig wären gegebenenfalls diese Kriterien: Wichtig wären gegebenenfalls diese Kriterien:
\paragraph{Integration von Hintergrundwissen} \begin{itemize}
Ereignisse kommen ohne Kontext, daher ist es nötig, sie in einen Kontext zu bringen, um etwas mit dem Ereignis anfangen zu können. \item Verarbeitung von mehreren Ereignisströmen
Um nun den passenden Kontext herzustellen, muss dieses Ereignis also mit weiteren Daten verknüpft werden. \item Kombination von Ereignissen \enquote{Join}
Das können andere Ereignisse oder Daten sein, die uns schon bekannt sind - Hintergrundwissen. \item Konstruktion neuer Ereignisse
\item Sliding/Tumbling Windows
\paragraph{(Performance)} \item Mustererkennung (Abfolge, Präsenz/Absenz von Ereignissen [zeitlicher Abstand])
Auch, wenn einige tausend Ereignisse über einen Datenstrom in der Minute eintreffen muss die Software dennoch sehr zeitnah (im Idealfall sofort) Ergebnisse liefern. \item \enquote{COMPUTE EVERY} - Neuberechnung in festen Intervallen
\item Ausführen von benutzerdefiniertem Code
(Das hier wird später ein Grund sein, weshalb Reasoning nur sehr begrenzt auf Datenströmen stattfinden kann oder aber sehr teuer ist.) \item Integration von Hintergrundwissen [aus weiteren Quellen]
\item Aggregationsfunktionen über mehrere Ereignisse (Sum, Avg, ...)
\item Vergleichsoperatoren für Selektionskriterien
\item Bonuspunkte: Reasoning (Logikoperationen und Schlussfolgerungen)
\end{itemize}
\section{Etalis/EP-SPARQL?} \section{Etalis/EP-SPARQL?}
\todo
Kenne ich noch nicht. Kenne ich noch nicht.
\section{CQELS?} \section{CQELS?}
\todo
Kenne ich noch nicht. Kenne ich noch nicht.
\section{Esper} \section{Esper}
\todo
Ein Ansatz mit einer eigenen Abfragesprache. Ein Ansatz mit einer eigenen Abfragesprache.
Hintergrundwissen etwas fummelig, aber theoretisch möglich. Nur halt nicht in der selben Abfragesprache. Hintergrundwissen etwas fummelig, aber theoretisch möglich. Nur halt nicht in der selben Abfragesprache.
\section{C-SPARQL} \section{C-SPARQL}
\todo
Verarbeitet Ströme im RDF-Format. Kann Hintergrundwissen im RDF-Format einbeziehen. Wurde in Java implementiert \dots Verarbeitet Ströme im RDF-Format. Kann Hintergrundwissen im RDF-Format einbeziehen. Wurde in Java implementiert \dots
Es gibt einen W3C-Standard für die Sprache C-SPARQL. Es gibt einen W3C-Standard für die Sprache C-SPARQL.
Diese Engine werde ich nachher genauer vorstellen und benutzen. Diese Engine werde ich nachher genauer vorstellen und benutzen.
\chapter{Die C-SPARQL-Engine im Detail} \chapter{Die C-SPARQL-Engine im Detail}
\todo
So, hier kommt dann das, was man so zu C-SPARQL erzählen kann. So, hier kommt dann das, was man so zu C-SPARQL erzählen kann.
Dieser Bereich bekommt noch genug Sections für die Features von C-SPARQL. Dieser Bereich bekommt noch genug Sections für die Features von C-SPARQL.
@ -276,14 +263,10 @@ Dieser Bereich bekommt noch genug Sections für die Features von C-SPARQL.
\chapter{Die C-SPARQL-Engine im Einsatz} \chapter{Die C-SPARQL-Engine im Einsatz}
\todo
Hier wird jetzt mal wirklich C-SPARQL verwendet. Hier wird jetzt mal wirklich C-SPARQL verwendet.
\section{RDF-Datenströme} \section{RDF-Datenströme}
\todo
Spannender ist es, wenn man dann ein Haufen RDF-Tripel reingedrückt bekommt. Spannender ist es, wenn man dann ein Haufen RDF-Tripel reingedrückt bekommt.
Die sehen anders aus, sind aber auch toll. Die sehen anders aus, sind aber auch toll.
Schemenhaft könnten die ja so aussehen: Schemenhaft könnten die ja so aussehen:
@ -294,48 +277,34 @@ Wäre es nicht toll, wenn wir bestimmte Dinge bereits vorher irgendwie da integr
\section{Beispielszenario} \section{Beispielszenario}
\todo
Ich hab noch keine richtig tolle Idee, aber das kommt noch. Ich hab noch keine richtig tolle Idee, aber das kommt noch.
\section{Umsetzung mit C-SPARQL} \section{Umsetzung mit C-SPARQL}
\todo
Jetzt kommt ein kurzer Schwank dazu, wie die Umsetzung gedacht ist. Jetzt kommt ein kurzer Schwank dazu, wie die Umsetzung gedacht ist.
\subsection{Nötiger Code für das Setup} \subsection{Nötiger Code für das Setup}
\todo
Zunächst wird ein Datenstrom benötigt; dafür wäre ein kleiner Generator nicht verkehrt. Zunächst wird ein Datenstrom benötigt; dafür wäre ein kleiner Generator nicht verkehrt.
\subsection{Abfrage des Datenstroms mit C-SPARQL} \subsection{Abfrage des Datenstroms mit C-SPARQL}
\todo
Und jetzt werden Listener und Abfragen gebaut, um aus diesem Strom Informationen zu extrahieren oder neue, höherwertige Ereignisse zu konstruieren. Und jetzt werden Listener und Abfragen gebaut, um aus diesem Strom Informationen zu extrahieren oder neue, höherwertige Ereignisse zu konstruieren.
\section{Bewertung/Ergebnis} \section{Bewertung/Ergebnis}
\todo
\enquote{Und? Wie war's?} \enquote{Und? Wie war's?}
\chapter{Fazit} \chapter{Fazit}
\todo
Die Engine macht sich hoffentlich ganz gut. Die Engine macht sich hoffentlich ganz gut.
\chapter{Ausblick} \chapter{Ausblick}
\todo
Vielleicht geht das mit dem Reasoning später ja noch besser - aktueller Stand ist noch limitiert, aber es wird fleißig daran geforscht. \dots Vielleicht geht das mit dem Reasoning später ja noch besser - aktueller Stand ist noch limitiert, aber es wird fleißig daran geforscht. \dots
% Kurzer Test % Kurzer Test
\cite{hsh:cep}[Einführung] \cite{hsh:cep}[Einstieg]
\cite{hsh:integrating}[erste Quelle] \cite{hsh:integrating}[erste Quelle]
\cite{barbieri:reasoning}[zweite Quelle] \cite{barbieri:reasoning}[zweite Quelle]
\cite{barbieri:querying}[dritte Quelle] \cite{barbieri:querying}[dritte Quelle]

View File

@ -1,47 +1,47 @@
% Encoding: UTF-8 % Encoding: UTF-8
@InProceedings{hsh:integrating, @InProceedings{hsh:integrating,
author = {S. Beckstein and R. Bruns and J. Dunkel and L. Renners}, author = {S. Beckstein and R. Bruns and J. Dunkel and L. Renners},
title = {Integrating Semantic Knowledge in Data Stream Processing}, title = {Integrating Semantic Knowledge in Data Stream Processing},
booktitle = {The 9th Workshop on Knowledge Engineering and Software Engineering (KESE2013)}, booktitle = {The 9th Workshop on Knowledge Engineering and Software Engineering (KESE2013)},
year = {2013}, year = {2013},
volume = {CEUR Proceedings Vol-1070}, volume = {CEUR Proceedings Vol-1070},
url = {http://ceur-ws.org/Vol-1070/kese9-01_02.pdf}, url = {http://ceur-ws.org/Vol-1070/kese9-01_02.pdf},
journaltitle = {Proceeding of the 9th International Workshop on Knowledge Engineering and Software Engineering (KESE9)}, journaltitle = {Proceeding of the 9th International Workshop on Knowledge Engineering and Software Engineering (KESE9)},
} }
@InCollection{barbieri:reasoning, @InCollection{barbieri:reasoning,
author = {Davide Francesco Barbieri and Daniele Braga and Stefano Ceri and Emanuele Della Valle and Michael Grossniklaus}, author = {Davide Francesco Barbieri and Daniele Braga and Stefano Ceri and Emanuele Della Valle and Michael Grossniklaus},
title = {Incremental Reasoning on Streams and Rich Background Knowledge}, title = {Incremental Reasoning on Streams and Rich Background Knowledge},
booktitle = {Lecture Notes in Computer Science}, booktitle = {Lecture Notes in Computer Science},
year = {2010}, year = {2010},
publisher = {Springer Science $\mathplus$ Business Media}, publisher = {Springer Science $\mathplus$ Business Media},
pages = {1--15}, pages = {1--15},
doi = {10.1007/978-3-642-13486-9_1}, doi = {10.1007/978-3-642-13486-9_1},
url = {http://dx.doi.org/10.1007/978-3-642-13486-9_1}, url = {http://dx.doi.org/10.1007/978-3-642-13486-9_1},
} }
@Article{barbieri:querying, @Article{barbieri:querying,
author = {Davide Francesco Barbieri and Daniele Braga and Stefano Ceri and Emanuele Della Valle and Michael Grossniklaus}, author = {Davide Francesco Barbieri and Daniele Braga and Stefano Ceri and Emanuele Della Valle and Michael Grossniklaus},
title = {Querying {RDF} streams with C-{SPARQL}}, title = {Querying {RDF} streams with C-{SPARQL}},
year = {2010}, year = {2010},
volume = {39}, volume = {39},
number = {1}, number = {1},
month = {sep}, month = {sep},
pages = {20}, pages = {20},
doi = {10.1145/1860702.1860705}, doi = {10.1145/1860702.1860705},
url = {http://dx.doi.org/10.1145/1860702.1860705}, url = {http://dx.doi.org/10.1145/1860702.1860705},
journal = {{ACM} {SIGMOD} Record}, journal = {{ACM} {SIGMOD} Record},
publisher = {Association for Computing Machinery ({ACM})}, publisher = {Association for Computing Machinery ({ACM})},
} }
@Book{hsh:cep, @Book{hsh:cep,
author = {Ralf Bruns and Jürgen Dunkel}, author = {Ralf Bruns and Jürgen Dunkel},
title = {Complex Event Processing}, title = {Complex Event Processing},
year = {2015}, year = {2015},
publisher = {Springer Fachmedien Wiesbaden}, publisher = {Springer Fachmedien Wiesbaden},
doi = {10.1007/978-3-658-09899-5}, doi = {10.1007/978-3-658-09899-5},
url = {http://dx.doi.org/10.1007/978-3-658-09899-5}, url = {http://dx.doi.org/10.1007/978-3-658-09899-5},
} }
@Comment{jabref-meta: databaseType:biblatex;} @Comment{jabref-meta: databaseType:biblatex;}