bachelorthesis/Bachelorarbeit.tex

360 lines
10 KiB
TeX
Raw Normal View History

2016-03-07 12:46:38 +01:00
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Setup des Dokuments
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\documentclass[12pt,DIV14,BCOR10mm,a4paper,twoside,parskip=half-,headsepline,headinclude]{scrreprt} % Grundgröße 12pt, zweiseitig
2016-04-04 13:07:28 +02:00
% Packages from template
2016-03-07 12:46:38 +01:00
\usepackage[headsepline,automark]{scrpage2} % Seitenköpfe automatisch
\KOMAoptions{headinclude} % Fix
2016-04-23 13:26:48 +02:00
\usepackage[german]{babel} % Sprachpaket für Deutsch (Umlaute, Trennung,deutsche Überschriften)
% Not needed anymore
% \usepackage{blindtext}
2016-03-13 11:16:52 +01:00
\usepackage{graphicx,hyperref} % Graphikeinbindung, Hyperref (alles klickbar, Bookmarks)
\usepackage{amssymb} % Math. Symbole aus AmsTeX
2016-03-07 12:46:38 +01:00
\usepackage[utf8]{inputenc} % Umlaute
2016-04-04 13:07:28 +02:00
% Custom packages
\usepackage[autostyle=true,german=quotes]{csquotes} % Anführungszeichen mit \enquote{}
\usepackage{textcomp} % Zusätzliches Package für °C
\usepackage{listings} % Codesnippets
\usepackage{scrhack} % Hack for lstlisting i suspect :-/
2016-04-23 13:26:48 +02:00
\usepackage{color}
2016-04-04 13:07:28 +02:00
% Setup für Codeblocks
\lstset{
% Optionen
breaklines=true,
breakatwhitespace=true,
breakautoindent=true,
frame=single,
%framexleftmargin=19pt,
inputencoding=utf8,
language=awk,
%numbers=left,
%numbersep=8pt,
showspaces=false,
showstringspaces=false,
tabsize=1,
%xleftmargin=19pt,
captionpos=b,
% Styling
%basicstyle=\footnotesize\ttfamily,
%commentstyle=\footnotesize,
%keywordstyle=\footnotesize\ttfamily,
%numberstyle=\footnotesize,
%stringstyle=\footnotesize\ttfamily,
}
% Hack für Sonderzeichen in Codeblocks
\lstset{literate=%
{Ö}{{\"O}}1
{Ä}{{\"A}}1
{Ü}{{\"U}}1
{ß}{{\ss}}1
{ü}{{\"u}}1
{ä}{{\"a}}1
{ö}{{\"o}}1
{°}{{${^\circ}$}}1
}
2016-03-07 12:17:22 +01:00
2016-04-22 14:12:28 +02:00
% Befehl für TODO-Markierungen
2016-04-23 13:26:48 +02:00
\newcommand{\todo}{\textcolor{blue}{\emph{Dieser Bereich ist in Bearbeitung.}}}
2016-04-22 14:12:28 +02:00
2016-03-07 12:17:22 +01:00
% Festlegung Kopf- und Fußzeile
\defpagestyle{meinstil}{%
2016-03-07 12:46:38 +01:00
{\headmark \hfill}
{\hfill \headmark}
{\hfill \headmark\hfill}
(\textwidth,.4pt)
2016-03-07 12:17:22 +01:00
}{%
(\textwidth,.4pt)
{\pagemark\hfill Jan Philipp Timme}
{Version 0.1 vom \today \hfill \pagemark}
2016-03-07 12:46:38 +01:00
{Version 0.1 vom \today \hfill \pagemark}
2016-03-07 12:17:22 +01:00
}
\pagestyle{meinstil}
2016-03-07 12:17:22 +01:00
\raggedbottom
2016-03-07 12:17:22 +01:00
\renewcommand{\topfraction}{1}
\renewcommand{\bottomfraction}{1}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2016-03-07 12:46:38 +01:00
% Beginn der Inhalte
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}
% Titelseite
\thispagestyle{empty}
2016-03-07 12:46:38 +01:00
\includegraphics[width=0.2\textwidth]{res/Wortmarke_WI_schwarz.pdf}
{ ~ \sffamily
2016-03-07 12:46:38 +01:00
\vfill
2016-04-22 14:33:00 +02:00
{\Huge\bfseries Verarbeitung von Datenströmen im RDF-Format in Kombination mit Hintergrundwissen in der C-SPARQL-Engine}
\bigskip
{\Large Jan Philipp Timme
\\[2ex]
Bachelor-Arbeit im Studiengang "`Angewandte Informatik"'
\\[5ex]
\today
}
2016-03-07 12:17:22 +01:00
}
2016-03-07 12:46:38 +01:00
\vfill
~ \hfill
\includegraphics[height=0.3\paperheight]{res/H_WI_Pantone1665.pdf}
2016-03-07 12:17:22 +01:00
\vspace*{-3cm}
% Seite mit Personen und Selbstständigkeitserklärung
2016-03-07 12:46:38 +01:00
\newpage \thispagestyle{empty}
\begin{tabular}{ll}
2016-03-07 12:17:22 +01:00
{\bfseries\sffamily Autor} & Jan Philipp Timme \\
& 1271449 \\
& jan-philipp.timme@stud.hs-hannover.de \\[5ex]
2016-05-02 11:16:16 +02:00
{\bfseries\sffamily Erstprüfer} & Prof. Dr. Jürgen Dunkel \\
& Abteilung Informatik, Fakultät IV \\
& Hochschule Hannover \\
& juergen.dunkel@hs-hannover.de \\[5ex]
2016-05-02 11:16:16 +02:00
{\bfseries\sffamily Zweitprüfer} & N. N. \\
& Abteilung Informatik, Fakultät IV \\
& Hochschule Hannover \\
2016-04-22 14:12:28 +02:00
& ---@---.--
2016-03-07 12:17:22 +01:00
\end{tabular}
\vfill
2016-03-07 12:46:38 +01:00
% fett und zentriert in der Minipage
\begin{center} \sffamily\bfseries Selbständigkeitserklärung \end{center}
2016-03-07 12:17:22 +01:00
Hiermit erkläre ich, dass ich die eingereichte Bachelor-Arbeit
selbständig und ohne fremde Hilfe verfasst, andere als die von mir angegebenen Quellen
und Hilfsmittel nicht benutzt und die den benutzten Werken wörtlich oder
inhaltlich entnommenen Stellen als solche kenntlich gemacht habe.
\vspace*{7ex}
Hannover, den \today \hfill Unterschrift
2016-03-07 12:46:38 +01:00
\pdfbookmark[0]{Inhalt}{contents}
% Inhaltsverzeichnis
\tableofcontents
% Abbildungsverzeichnis
\listoffigures
2016-04-05 08:29:43 +02:00
% Codeverzeichnis
\lstlistoflistings
% Tabellenverzeichnis
\listoftables
2016-03-07 12:17:22 +01:00
\newpage
2016-03-07 12:17:22 +01:00
2016-03-07 12:51:26 +01:00
%%% Hier kommt inhaltlicher Inhalt! %%%
2016-03-07 12:46:38 +01:00
2016-04-22 14:12:28 +02:00
\chapter{Einleitung}
\todo
Diese Arbeit beschäftigt sich mit der Verarbeitung von komplexen Ereignissen (CEP) auf RDF-Datenströmen mit C-SPARQL.
2016-04-25 12:00:52 +02:00
\chapter{Einführung in Complex Event Processing}
2016-04-22 14:12:28 +02:00
2016-04-22 14:33:00 +02:00
\todo
2016-04-22 14:12:28 +02:00
Was ist CEP und warum sollte man es verwenden wollen?
2016-04-23 13:26:48 +02:00
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.
2016-04-22 14:12:28 +02:00
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}
2016-04-22 14:33:00 +02:00
\todo
2016-04-22 14:12:28 +02:00
Ereignisse treten überall auf, wenn man sich darauf einlässt.
Welche Ereignisse kann man sich denn so vorstellen?
Diese hier:
\begin{itemize}
\item Ein Online-Shop meldet eine ausgelöste Bestellung
\item Ein soziales Netzwerk meldet die Interaktion eines Benutzers
\item Die Wetterstation meldet ihre aktuellen Messwerte
\item Windkraftanlagen melden ihre Drehgeschwindigkeit
\item Ein Auto meldet Fehlzündungen im zweiten Zylinder
\item Fabrikmaschinen melden Fehler im Betrieb
\item Rauchmelder melden ihre Auslösung
\item \dots und vieles mehr
\end{itemize}
\section{Ereignisse als Informationsträger}
2016-04-04 13:07:28 +02:00
2016-04-22 14:33:00 +02:00
\todo
2016-04-22 14:12:28 +02:00
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.
2016-03-07 12:51:26 +01:00
2016-04-22 14:12:28 +02:00
Für unsere Zwecke können wir das nutzen.
Ereignisse haben einen Zeitstempel [und eine ID]. Der Zeitstempel ist wichtig, die ID auch etwas.
2016-04-04 13:07:28 +02:00
2016-04-22 14:12:28 +02:00
Ein Ereignis kann beispielsweise so strukturiert sein:
\begin{lstlisting}[caption={Beispielhaftes Ereignis dargestellt in JSON}]
2016-04-04 13:07:28 +02:00
{
"ID": "17352",
"Zeitstempel": "Mo 4. Apr 12:38:19 CEST 2016",
"Daten": {
"Temperatur": "19°C",
"Luftfeuchtigkeit": "31%"
}
}
\end{lstlisting}
2016-04-22 14:12:28 +02:00
\section{Ereignisströme als Datenquelle}
2016-03-13 11:16:52 +01:00
2016-04-22 14:33:00 +02:00
\todo
2016-04-23 13:26:48 +02:00
Ja, Ereignisse treten öfters in Rudeln auf. Wenn viele Ereignisse aneinandergereiht werden, spricht man von einem Ereignisstrom.
2016-04-22 14:39:52 +02:00
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.
2016-04-22 14:33:00 +02:00
\chapter{Gegenüberstellung existierender CEP-Engines}
2016-04-22 14:12:28 +02:00
\todo
2016-04-22 14:33:00 +02:00
Es gibt bereits einige Technologien um Ereignisströme zu verarbeiten.
Im Folgenden stelle ich nun ein paar bekannte Systeme kurz vor.
2016-04-22 14:12:28 +02:00
2016-04-22 14:33:00 +02:00
Wichtig wären gegebenenfalls diese Kriterien:
2016-04-22 14:12:28 +02:00
2016-04-22 14:33:00 +02:00
\paragraph{Integration von Hintergrundwissen}
2016-04-22 14:12:28 +02:00
Ereignisse kommen ohne Kontext, daher ist es nötig, sie in einen Kontext zu bringen, um etwas mit dem Ereignis anfangen zu können.
Um nun den passenden Kontext herzustellen, muss dieses Ereignis also mit weiteren Daten verknüpft werden.
Das können andere Ereignisse oder Daten sein, die uns schon bekannt sind - Hintergrundwissen.
2016-04-23 13:26:48 +02:00
\paragraph{(Performance)}
2016-04-22 14:12:28 +02:00
Auch, wenn einige tausend Ereignisse über einen Datenstrom in der Minute eintreffen muss die Software dennoch sehr zeitnah (im Idealfall sofort) Ergebnisse liefern.
(Das hier wird später ein Grund sein, weshalb Reasoning nur sehr begrenzt auf Datenströmen stattfinden kann oder aber sehr teuer ist.)
\section{Etalis/EP-SPARQL?}
\todo
2016-04-22 14:39:52 +02:00
Kenne ich noch nicht.
2016-04-22 14:12:28 +02:00
\section{CQELS?}
\todo
2016-04-22 14:39:52 +02:00
Kenne ich noch nicht.
2016-04-22 14:12:28 +02:00
\section{Esper}
2016-04-22 14:33:00 +02:00
\todo
2016-04-22 14:12:28 +02:00
Ein Ansatz mit einer eigenen Abfragesprache.
Hintergrundwissen etwas fummelig, aber theoretisch möglich. Nur halt nicht in der selben Abfragesprache.
\section{C-SPARQL}
2016-04-22 14:33:00 +02:00
\todo
2016-04-22 14:39:52 +02:00
Verarbeitet Ströme im RDF-Format. Kann Hintergrundwissen im RDF-Format einbeziehen. Wurde in Java implementiert \dots
2016-04-22 14:12:28 +02:00
Es gibt einen W3C-Standard für die Sprache C-SPARQL.
2016-04-22 14:39:52 +02:00
Diese Engine werde ich nachher genauer vorstellen und benutzen.
2016-04-22 14:12:28 +02:00
\chapter{Die C-SPARQL-Engine im Detail}
\todo
2016-04-22 14:33:00 +02:00
So, hier kommt dann das, was man so zu C-SPARQL erzählen kann.
2016-04-22 14:39:52 +02:00
Dieser Bereich bekommt noch genug Sections für die Features von C-SPARQL.
2016-04-22 14:33:00 +02:00
2016-04-22 14:12:28 +02:00
\section{Abfrage von bestimmten Ereignistypen}
\todo
\section{Keine Ahnung, aber ganz viel}
\todo
2016-04-22 14:33:00 +02:00
\chapter{Die C-SPARQL-Engine im Einsatz}
\todo
Hier wird jetzt mal wirklich C-SPARQL verwendet.
2016-04-22 14:12:28 +02:00
\section{RDF-Datenströme}
2016-04-22 14:33:00 +02:00
\todo
2016-04-22 14:12:28 +02:00
Spannender ist es, wenn man dann ein Haufen RDF-Tripel reingedrückt bekommt.
Die sehen anders aus, sind aber auch toll.
Schemenhaft könnten die ja so aussehen:
Wir können uns diese Datenströme angucken und beispielsweise auf bestimmte Dinge achten.
Aber irgendwie ist das nicht so toll, weil unsere Abfragen recht spezifisch sein müssen.
Wäre es nicht toll, wenn wir bestimmte Dinge bereits vorher irgendwie da integrieren könnten?
\section{Beispielszenario}
\todo
2016-04-23 13:26:48 +02:00
Ich hab noch keine richtig tolle Idee, aber das kommt noch.
2016-04-22 14:12:28 +02:00
\section{Umsetzung mit C-SPARQL}
\todo
2016-04-22 14:39:52 +02:00
Jetzt kommt ein kurzer Schwank dazu, wie die Umsetzung gedacht ist.
2016-04-23 13:26:48 +02:00
\subsection{Nötiger Code für das Setup}
2016-04-22 14:33:00 +02:00
\todo
2016-04-23 13:26:48 +02:00
Zunächst wird ein Datenstrom benötigt; dafür wäre ein kleiner Generator nicht verkehrt.
\subsection{Abfrage des Datenstroms mit C-SPARQL}
2016-04-22 14:33:00 +02:00
\todo
2016-04-23 13:26:48 +02:00
Und jetzt werden Listener und Abfragen gebaut, um aus diesem Strom Informationen zu extrahieren oder neue, höherwertige Ereignisse zu konstruieren.
2016-04-22 14:33:00 +02:00
\section{Bewertung/Ergebnis}
\todo
2016-04-22 14:39:52 +02:00
\enquote{Und? Wie war's?}
2016-04-22 14:33:00 +02:00
\chapter{Fazit}
\todo
2016-04-23 13:26:48 +02:00
Die Engine macht sich hoffentlich ganz gut.
2016-04-22 14:33:00 +02:00
\chapter{Ausblick}
\todo
2016-04-23 13:26:48 +02:00
Vielleicht geht das mit dem Reasoning später ja noch besser - aktueller Stand ist noch limitiert, aber es wird fleißig daran geforscht. \dots
2016-04-22 14:12:28 +02:00
% Kurzer Test
2016-04-04 13:07:28 +02:00
\cite{robbins:gawk}[Siehe ab S.95]
2016-04-04 13:07:28 +02:00
% Referenz auf Bibtex mit Kommentar
% \cite{robbins:gawk}[Siehe ab S.95]
2016-03-07 12:46:38 +01:00
% Einbinden von Tex-Files
%\input{abkuerz.tex}
2016-03-07 12:17:22 +01:00
%\input{einfuehrung.tex}
2016-03-07 12:46:38 +01:00
% Einbinden von größeren Tex-Files, z.B. Kapiteln
2016-04-04 13:07:28 +02:00
%\include{normen}
2016-03-07 12:17:22 +01:00
%\include{aufbau}
%\include{zitieren}
%\include{form}
%\include{allgtips}
2016-03-07 12:51:26 +01:00
%%% Ende inhaltlicher Inhalt! %%%
2016-03-07 12:17:22 +01:00
% Literaturverzeichnis
% Schlüssel als Buchstaben
\bibliographystyle{alpha}
\bibliography{Literaturverweise}
2016-03-07 12:46:38 +01:00
\end{document}
% Nothing beyond this line!