2016-10-16 11:29:47 +02:00
|
|
|
\documentclass{f4_beamer}
|
|
|
|
|
2016-10-16 19:11:39 +02:00
|
|
|
% 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}
|
2016-10-16 11:29:47 +02:00
|
|
|
\author{Jan Philipp Timme}
|
|
|
|
\date{\today}
|
|
|
|
|
2016-10-16 19:11:39 +02:00
|
|
|
% Content below this line
|
2016-10-16 11:29:47 +02:00
|
|
|
\begin{document}
|
|
|
|
|
2016-10-17 10:11:07 +02:00
|
|
|
|
2016-10-16 19:11:39 +02:00
|
|
|
\section{Motivation}
|
2016-10-16 11:29:47 +02:00
|
|
|
|
2016-10-17 09:49:21 +02:00
|
|
|
\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}
|
2016-10-16 11:29:47 +02:00
|
|
|
\end{frame}
|
|
|
|
|
2016-10-17 09:49:21 +02:00
|
|
|
\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}
|
2016-10-16 11:29:47 +02:00
|
|
|
|
2016-10-17 09:49:21 +02:00
|
|
|
\begin{frame}{Verarbeitung der Ereignisdatenströme}
|
|
|
|
\begin{itemize}
|
2016-10-17 10:11:07 +02:00
|
|
|
\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
|
2016-10-17 09:49:21 +02:00
|
|
|
\end{itemize}
|
2016-10-16 11:29:47 +02:00
|
|
|
\end{frame}
|
|
|
|
|
2016-10-17 11:25:34 +02:00
|
|
|
\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?
|
|
|
|
\end{itemize}
|
|
|
|
\end{frame}
|
|
|
|
|
2016-10-17 10:11:07 +02:00
|
|
|
|
2016-10-16 19:11:39 +02:00
|
|
|
\section{Grundlagen}
|
2016-10-16 11:29:47 +02:00
|
|
|
|
2016-10-17 10:11:07 +02:00
|
|
|
|
|
|
|
\subsection{Exkurs: RDF}
|
|
|
|
|
2016-10-17 11:00:23 +02:00
|
|
|
\begin{frame}{Exkurs: RDF}
|
2016-10-17 10:11:07 +02:00
|
|
|
\begin{itemize}
|
|
|
|
\item Resource Description Framework
|
|
|
|
\item Framework zur Beschreibung und Modellierung von Wissen
|
2016-10-17 11:00:23 +02:00
|
|
|
\item Aussagen sind Tripel
|
2016-10-17 11:03:49 +02:00
|
|
|
\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}
|
2016-10-17 10:11:07 +02:00
|
|
|
\end{itemize}
|
2016-10-17 11:25:34 +02:00
|
|
|
|
|
|
|
Es folgt ein Beispiel \dots
|
2016-10-17 10:11:07 +02:00
|
|
|
\end{frame}
|
2016-10-16 19:11:39 +02:00
|
|
|
|
2016-10-17 13:12:33 +02:00
|
|
|
\begin{frame}[fragile]{Beispiel: Zwei RDF-Tripel in Turtle-Notation}
|
2016-10-17 13:50:52 +02:00
|
|
|
Fakten über ein beispielhaftes Subjekt in RDF:
|
2016-10-17 11:00:23 +02:00
|
|
|
\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#> .
|
2016-10-17 10:51:17 +02:00
|
|
|
|
2016-10-17 11:00:23 +02:00
|
|
|
car:23 carOnt:isCarModel carModel:42 .
|
|
|
|
car:23 carOnt:hasNickname "Alf"^^xsd:string .
|
|
|
|
\end{lstlisting}
|
2016-10-17 10:51:17 +02:00
|
|
|
\end{frame}
|
|
|
|
|
2016-10-17 11:25:34 +02:00
|
|
|
\begin{frame}[fragile]{Beispiel: Zwei RDF-Tripel visualisiert}
|
2016-10-17 11:00:23 +02:00
|
|
|
\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}
|
2016-10-17 10:51:17 +02:00
|
|
|
|
2016-10-17 13:12:33 +02:00
|
|
|
\begin{frame}{Assertion Box (ABox) und Terminlogy Box (TBox)}
|
|
|
|
\begin{itemize}
|
2016-10-17 13:22:30 +02:00
|
|
|
\item Unterscheidung zwischen Faktenbasis (ABox) und Terminologie (TBox)
|
|
|
|
\item TBox enthält Vokabular mit definierter Bedeutung
|
2016-10-17 13:12:33 +02:00
|
|
|
\begin{itemize}
|
|
|
|
\item Objektklassen
|
2016-10-17 13:22:30 +02:00
|
|
|
\item Prädikate
|
|
|
|
\end{itemize}
|
|
|
|
\item ABox enthält konkrete Fakten
|
|
|
|
\begin{itemize}
|
|
|
|
\item z.B. Wissen über existierende Objekte, \dots
|
2016-10-17 13:12:33 +02:00
|
|
|
\end{itemize}
|
|
|
|
\end{itemize}
|
|
|
|
\end{frame}
|
|
|
|
|
2016-10-17 13:22:30 +02:00
|
|
|
\begin{frame}[fragile]{Beispiel für eine TBox}
|
2016-10-17 13:38:20 +02:00
|
|
|
Definition der Klassen \texttt{Car}, \texttt{CarModel} und \texttt{Driver} in RDFS:
|
2016-10-17 13:22:30 +02:00
|
|
|
\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 .
|
2016-10-17 13:38:20 +02:00
|
|
|
carOnt.isCarModel rdfs:range carOnt:CarModel .
|
2016-10-17 13:22:30 +02:00
|
|
|
\end{lstlisting}
|
|
|
|
\end{frame}
|
|
|
|
|
|
|
|
\begin{frame}[fragile]{Beispiel für eine ABox}
|
2016-10-17 13:50:52 +02:00
|
|
|
Beschreibung eines PKW und dessen Fahrer mit Hilfe der Terminologie aus der vorherigen TBox:
|
2016-10-17 13:22:30 +02:00
|
|
|
\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 .
|
2016-10-17 13:56:07 +02:00
|
|
|
driver:0 carOnt:hasName "Max Mustermann"^^xsd:string .
|
2016-10-17 13:22:30 +02:00
|
|
|
\end{lstlisting}
|
|
|
|
\end{frame}
|
|
|
|
|
2016-10-17 13:38:20 +02:00
|
|
|
\begin{frame}{Reasoning}
|
|
|
|
\begin{itemize}
|
2016-10-17 13:50:52 +02:00
|
|
|
\item Prozess zum automatischen Anreichern von RDF-Daten
|
|
|
|
\item Basiert auf einer gegebenen TBox
|
|
|
|
\item Ermittelt in der ABox enthaltenes, implizites Wissen
|
2016-10-17 13:38:20 +02:00
|
|
|
\end{itemize}
|
2016-10-17 13:56:07 +02:00
|
|
|
Bitte nicht erschrecken, die nächste Folie ist etwas voll.
|
2016-10-17 13:38:20 +02:00
|
|
|
\end{frame}
|
2016-10-17 13:22:30 +02:00
|
|
|
|
2016-10-17 13:50:52 +02:00
|
|
|
\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}
|
|
|
|
|
2016-10-17 10:51:17 +02:00
|
|
|
|
2016-10-16 19:11:39 +02:00
|
|
|
\subsection{Complex Event Processing}
|
2016-10-17 11:25:34 +02:00
|
|
|
\begin{frame}{Complex Event Processing}
|
|
|
|
Nun zu CEP \dots
|
2016-10-16 11:29:47 +02:00
|
|
|
\end{frame}
|
|
|
|
|
2016-10-17 10:12:34 +02:00
|
|
|
\begin{frame}{}
|
2016-10-16 11:29:47 +02:00
|
|
|
|
|
|
|
\end{frame}
|
|
|
|
|
2016-10-17 10:12:34 +02:00
|
|
|
\begin{frame}{}
|
|
|
|
|
|
|
|
\end{frame}
|
|
|
|
|
|
|
|
\begin{frame}{}
|
|
|
|
|
|
|
|
\end{frame}
|
|
|
|
|
|
|
|
|
2016-10-16 19:11:39 +02:00
|
|
|
\section{Vergleich aktueller RDF-fähiger CEP-Engines}
|
|
|
|
|
2016-10-17 10:12:34 +02:00
|
|
|
\begin{frame}{}
|
|
|
|
|
|
|
|
\end{frame}
|
|
|
|
|
|
|
|
|
2016-10-16 19:11:39 +02:00
|
|
|
\section{Umsetzung des Beispielszenarios}
|
2016-10-16 11:29:47 +02:00
|
|
|
|
2016-10-17 10:12:34 +02:00
|
|
|
\begin{frame}{}
|
|
|
|
|
|
|
|
\end{frame}
|
|
|
|
|
|
|
|
|
2016-10-16 19:11:39 +02:00
|
|
|
\section{Fazit}
|
2016-10-16 11:29:47 +02:00
|
|
|
|
2016-10-17 10:12:34 +02:00
|
|
|
\begin{frame}{}
|
|
|
|
|
|
|
|
\end{frame}
|
|
|
|
|
2016-10-16 19:11:39 +02:00
|
|
|
% 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}
|
2016-10-16 11:29:47 +02:00
|
|
|
|
2016-10-16 19:11:39 +02:00
|
|
|
\begin{frame}{Ende}
|
|
|
|
Vielen Dank für Ihre Aufmerksamkeit!
|
|
|
|
|
|
|
|
Fragen?
|
|
|
|
\end{frame}
|
2016-10-16 11:29:47 +02:00
|
|
|
|
|
|
|
\end{document}
|
2016-10-16 19:11:39 +02:00
|
|
|
% No more content below this line
|