\documentclass{f4_beamer}

% Basic setup
\usepackage[german]{babel} % Sprachpaket für Deutsch (Umlaute, Trennung,deutsche Überschriften)
\usepackage{graphicx,hyperref} % Graphikeinbindung, Hyperref (alles klickbar, Bookmarks)
\usepackage{amssymb} % Math. Symbole aus AmsTeX
\usepackage[utf8]{inputenc} % Umlaute
% 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 :-/
\usepackage{xcolor}
\usepackage{float}
\usepackage{soul}
\usepackage{verbatim} % für comment-environment
\usepackage{amsmath}

% 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
}

% Broken citation needs broken command
\newcommand\mathplus{+}

% Actual beamer related document setup
\title{CEP auf RDF-Datenströmen mit C-SPARQL}
\subtitle{Bachelorkolloquium}
\author{Jan Philipp Timme}
\date{\today}

% Content below this line
\begin{document}


\section{Motivation}

\begin{frame}{Motivation}
\begin{itemize}
\item Immer mehr Geräte sind mit dem Internet verbunden
\item Sollen überwacht werden beziehungsweise überwachen selbst etwas
\item Bieten kontinuierlich aktuelle Zustands- und Messinformationen 
\item In Form von RDF-Ereignisdatenströmen abrufbar
\end{itemize}
\end{frame}

\begin{frame}{Ereignisdatenströme}
\begin{itemize}
\item Transportieren Daten von einzelnen Ereignissen
\item Ereignisse bilden kleine Teile der Realität ab
\begin{itemize}
\item \dots sofern Daten korrekt sind (Messfehler, Übertragungsfehler, \dots)
\end{itemize}
\item Aber: Sind oft zeitlich begrenzt gültig
\item Und: Treten meist hochfrequent auf
\item $\rightarrow$ Große Datenmengen in kürzester Zeit
\end{itemize}
\end{frame}

\begin{frame}{Verarbeitung der Ereignisdatenströme}
\begin{itemize}
\item Ereignisse für sich tragen kaum Bedeutung
\item Betrachtung in Kontext notwendig
\item Der Kontext ergibt sich \dots
\begin{itemize}
\item \dots durch relevante, weitere Ereignisse
\item \dots durch Integration von \emph{Domänenwissen}
\end{itemize}
\item Möglichst schnelle Verarbeitung erforderlich
\item $\rightarrow$ Complex Event Processing (CEP)
\end{itemize}
\end{frame}

\begin{frame}{Complex Event Processing (CEP)}
\begin{itemize}
\item Betrachtung von Ereignissen in \emph{Sliding Windows}
\item $\rightarrow$ In-Memory Processing
\item Erkennung von Ereignismustern
\item Aggregation von Ereignissen
\item $\rightarrow$ Erzeugung von komplexen Ereignissen
\end{itemize}
\end{frame}

\begin{frame}{Ziel der Arbeit}
\begin{itemize}
\item Verarbeitung von RDF-Ereignisdatenströmen mit CEP
\item Dabei: Integration von Domänenwissen
\item Und: In wie weit kann Reasoning\footnote{Dazu später mehr \dots} genutzt werden?
\item $\rightarrow$ Anhand eines Beispielszenarios praktisch durchführen
\end{itemize}
\end{frame}


\section{Grundlagen}


\subsection{Exkurs: RDF}

\begin{frame}{Exkurs: RDF}
\begin{itemize}
\item Resource Description Framework
\item Framework zur Beschreibung und Modellierung von Wissen
\item Aussagen sind Tripel
\item Bestehen aus Subjekt, Prädikat und Objekt
\item Werden als URI repräsentiert
\begin{itemize}
\item Im Objektteil sind auch Literalwerte erlaubt
\end{itemize}
\end{itemize}

Es folgt ein Beispiel \dots
\end{frame}

\begin{frame}[fragile]{Beispiel: Zwei RDF-Tripel in Turtle-Notation}
Fakten über ein beispielhaftes Subjekt in RDF:
\begin{lstlisting}
@prefix car: <http://example.org/carSim/objects/Car#> .
@prefix carModel: <http://example.org/carSim/objects/CarModel#> .
@prefix carOnt: <http://example.org/carSim/carSimulationOntology#> .

car:23	carOnt:isCarModel	carModel:42 .
car:23	carOnt:hasNickname	"Alf"^^xsd:string .
\end{lstlisting}
\begin{itemize}
\item Turtle erlaubt mit \texttt{@prefix} die Definition von Prefixen\footnote{Für die Übersichtlichkeit werden Prefixe auf den folgenden Folien weggelassen.}
\item $\rightarrow$ Übersichtliche Repräsentation der Fakten
\end{itemize}
\end{frame}

\begin{frame}[fragile]{Beispiel: Zwei RDF-Tripel visualisiert}
\begin{figure}[htbp]
\centering
\includegraphics[width=\textwidth]{img/triple-spo.pdf}
\caption{Prädikate verknüpfen ein Subjekt mit Objekt und Literalwert}
\label{fig:triple_spo}
\end{figure}
\end{frame}

\begin{frame}{Assertion Box (ABox) und Terminlogy Box (TBox)}
\begin{itemize}
\item Unterscheidung zwischen Faktenbasis (ABox) und Terminologie (TBox)
\item TBox enthält Vokabular mit definierter Bedeutung
\begin{itemize}
\item Objektklassen
\item Prädikate
\end{itemize}
\item ABox enthält konkrete Fakten
\begin{itemize}
\item z.B. Wissen über existierende Objekte, \dots
\end{itemize}
\end{itemize}
\end{frame}

\begin{frame}[fragile]{Beispiel für eine TBox}
Definition der Klassen \texttt{Car}, \texttt{CarModel} und \texttt{Driver} in RDFS:
\begin{lstlisting}
carOnt:Car	rdf:type	rdfs:class .
carOnt:CarModel	rdf:type	rdfs:class .
carOnt:Driver	rdf:type	rdfs:class .

carOnt:drives	rdf:type	rdf:Property .
carOnt:drives	rdfs:domain	carOnt:Driver .
carOnt:drives	rdfs:range	carOnt:Car .

carOnt:isCarModel	rdf:type	rdf:Property .
carOnt:isCarModel	rdfs:domain	carOnt:Car .
carOnt.isCarModel	rdfs:range	carOnt:CarModel .
\end{lstlisting}
\end{frame}

\begin{frame}[fragile]{Beispiel für eine ABox}
Beschreibung eines PKW und dessen Fahrer mit Hilfe der Terminologie aus der vorherigen TBox:
\begin{lstlisting}
car:0	rdf:type	carOnt:Car .
car:0	carOnt:isCarModel	carModel:0 .

carModel:0	rdf:type	carOnt:CarModel .
carModel:0	carOnt:maximumMotorRPM	4300 .

driver:0	rdf:type	carOnt:Driver .
driver:0	carOnt:drives	car:0 .
driver:0	carOnt:hasName	"Max Mustermann"^^xsd:string .
\end{lstlisting}
\end{frame}

\begin{frame}{Reasoning}
\begin{itemize}
\item Prozess zum automatischen Anreichern von RDF-Daten
\item Basiert auf einer gegebenen TBox
\item Ermittelt in der ABox enthaltenes, implizites Wissen
\end{itemize}

Dazu folgt nun ein Beispiel
\end{frame}

\begin{frame}[fragile]{Beispiel: Reasoning}
Gegeben sei folgende ABox:
\begin{lstlisting}
:a carOnt:drives :b .
\end{lstlisting}
Führt man nun Reasoning mit Hilfe dieser TBox durch:
\begin{lstlisting}
carOnt:Vehicle	rdf:type	rdfs:class .
carOnt:Car	rdf:type	rdfs:class .
carOnt:Car	rdfs:subclassOf	carOnt:Vehicle .

carOnt:drives	rdf:type	rdf:Property .
carOnt:drives	rdfs:domain	carOnt:Driver .
carOnt:drives	rdfs:range	carOnt:Car .
\end{lstlisting}
So ergibt sich daraus folgendes, zusätzliches Wissen:
\begin{lstlisting}
:a	rdf:type	carOnt:Driver .
:b	rdf:type	carOnt:Car .
:b	rdf:type	carOnt:Vehicle .
\end{lstlisting}
\end{frame}

\begin{frame}{Abfragen von RDF-Daten mit SPARQL}
\begin{itemize}
\item \enquote{SPARQL Protocol And RDF Query Language}
\item Schlüsselwörter sehr ähnlich zu SQL
\item Größter Unterschied in der \texttt{WHERE}-Klausel
\begin{itemize}
\item Gesuchte Tripelmuster werden formuliert
\item Tripel mit Platzhaltern (z.B. \texttt{?carModel})
\end{itemize}
\item Auch hier: Prefixe können genutzt werden\footnote{\dots und werden auf den folgenden Folien für die Übersichtlichkeit weggelassen}
\end{itemize}

Es folgt ein beispielhafter SPARQL-Query
\end{frame}

\begin{frame}[fragile]{Beispielhafte SPARQL-Abfrage}
\begin{lstlisting}
PREFIX carOnt: <http://example.org/carSim/carSimulationOntology#>
PREFIX car: <http://example.org/carSim/objects/Car#>

SELECT ?maxMotorRPM
WHERE {
	car:0	carOnt:isCarModel	?carModel .
	?carModel	carOnt:maximumMotorRPM	?maxMotorRPM .
}
\end{lstlisting}
Diese Abfrage selektiert zu dem PKW \texttt{car:0} die maximal zulässige Motordrehzahl über das Modell des PKW.
\end{frame}

\begin{frame}{Zusammenfassung RDF-Exkurs}
\begin{itemize}
\item RDF-Daten bestehen aus Tripeln (Subjekt, Prädikat, Objekt)
\item Unter Nutzung von Vokabular auf RDFS-Basis kann schon viel erreicht werden
\item Reasoning reichert vorhandenes Wissen automatisch um implizites Wissen an
\begin{itemize}
\item \dots dafür ist eine TBox notwendig
\end{itemize}
\item Mittels SPARQL können RDF-Daten abgefragt werden
\end{itemize}
\end{frame}


\subsection{Complex Event Processing}
\begin{frame}{Complex Event Processing}
\begin{itemize}
\item Ereignisdaten werden in Sliding Windows betrachtet
\item Auswertung anhand von CEP-Regeln
\item Mustererkennung und Aggregation von Ereignissen
\item $\rightarrow$ Erzeugung komplexer Ereignisse aus Ergebnissen
\item $\rightarrow$ Auslösen von Aktionen (externe Dienste anstoßen, Code ausführen)
\end{itemize}
\end{frame}

\begin{frame}{Sliding Window}
\begin{itemize}
\item Fenster, in dem Ereignisse betrachtet werden
\item Hat eine feste Größe bzw. Kapazität (Zeitraum oder Anzahl Ereignisse)
\item Wird um eine bestimmte Größe \enquote{weitergeschoben}
\item Nur die Ereignisdaten in dem Fenster sind Teil der Verarbeitung
\end{itemize}
\end{frame}

\begin{frame}{Unterschied Sliding Window - Tumbling Window}
\begin{itemize}
\item Tumbling Window ist Sonderfall des Sliding Window
\item \dots es wird immer um seine Größe weitergeschoben
\begin{itemize}
\item $\rightarrow$ es wird quasi \enquote{umgeklappt}
\item $\rightarrow$ Ereignisse nur ein \emph{einziges} Mal darin enthalten
\end{itemize}
\end{itemize}
\begin{figure}[htbp]
\centering
\includegraphics[width=\textwidth]{img/slidingvstumblingwindow.pdf}
\caption{Sliding- und Tumbling Window auf einem Ereignisstrom}
\label{fig:slidingvstumblingwindow}
\end{figure}
\end{frame}

\begin{frame}{}
\begin{itemize}
\item 
\end{itemize}
\end{frame}

\begin{frame}{}

\end{frame}


\section{Umsetzung des Beispielszenarios}

\begin{frame}{}

\end{frame}


\section{Fazit}

\begin{frame}{}

\end{frame}

% Probably not used, not sure yet.
\begin{comment}
\begin{frame}{Literaturverzeichnis}
% Literaturverzeichnis
% Schlüssel als Buchstaben
\bibliographystyle{alpha}
\bibliography{Literaturverweise}
% Und JETZT zum Inhaltsverzeichnis hinzufügen. Geil!
\addcontentsline{toc}{chapter}{Literaturverweise}
\end{frame}
\end{comment}

\begin{frame}[fragile]{Ende}
Vielen Dank für Ihre Aufmerksamkeit!

Fragen?

Download der Software und Bachelorarbeit unter: \url{http://jpt.lu/thesispackage.zip}
\end{frame}

\end{document}
% No more content below this line
