bachelorcolloquium/Bachelorkolloquium.tex

376 lines
11 KiB
TeX
Raw Normal View History

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?
2016-10-17 15:23:21 +02:00
\item $\rightarrow$ Anhand eines Beispielszenarios praktisch durchführen
2016-10-17 11:25:34 +02:00
\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 14:02:14 +02:00
\begin{itemize}
2016-10-17 14:11:20 +02:00
\item Turtle erlaubt mit \texttt{@prefix} die Definition von Prefixen\footnote{Für die Übersichtlichkeit werden Prefixe auf den folgenden Folien weggelassen.}
2016-10-17 14:02:14 +02:00
\item $\rightarrow$ Übersichtliche Repräsentation der Fakten
\end{itemize}
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 15:23:21 +02:00
Dazu folgt nun ein Beispiel
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 15:23:21 +02:00
\begin{frame}{Abfragen von RDF-Daten mit SPARQL}
\begin{itemize}
\item \enquote{SPARQL Protocol And RDF Query Language}
2016-10-17 15:30:20 +02:00
\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}
2016-10-17 15:23:21 +02:00
\end{itemize}
2016-10-17 15:30:20 +02:00
Es folgt ein beispielhafter SPARQL-Query
2016-10-17 15:23:21 +02:00
\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}
2016-10-17 14:06:36 +02:00
\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}
2016-10-17 15:23:21 +02:00
\item Mittels SPARQL können RDF-Daten abgefragt werden
2016-10-17 14:06:36 +02:00
\end{itemize}
\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}
2016-10-17 14:06:36 +02:00
\begin{itemize}
2016-10-17 16:04:52 +02:00
\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)
2016-10-17 14:06:36 +02:00
\end{itemize}
2016-10-16 11:29:47 +02:00
\end{frame}
2016-10-17 16:04:52 +02:00
\begin{frame}{Sliding Window}
2016-10-17 14:06:36 +02:00
\begin{itemize}
2016-10-17 16:04:52 +02:00
\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
2016-10-17 14:06:36 +02:00
\end{itemize}
2016-10-16 11:29:47 +02:00
\end{frame}
2016-10-17 16:04:52 +02:00
\begin{frame}{Unterschied Sliding Window - Tumbling Window}
2016-10-17 14:06:36 +02:00
\begin{itemize}
2016-10-17 16:04:52 +02:00
\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}
2016-10-17 14:06:36 +02:00
\end{itemize}
2016-10-17 16:04:52 +02:00
\begin{figure}[htbp]
\centering
\includegraphics[width=\textwidth]{img/slidingvstumblingwindow.pdf}
\caption{Sliding- und Tumbling Window auf einem Ereignisstrom}
\label{fig:slidingvstumblingwindow}
\end{figure}
2016-10-17 10:12:34 +02:00
\end{frame}
\begin{frame}{}
2016-10-17 14:06:36 +02:00
\begin{itemize}
\item
\end{itemize}
2016-10-17 10:12:34 +02:00
\end{frame}
\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-17 15:23:21 +02:00
\begin{frame}[fragile]{Ende}
2016-10-16 19:11:39 +02:00
Vielen Dank für Ihre Aufmerksamkeit!
Fragen?
2016-10-17 16:04:52 +02:00
Download der Software und Bachelorarbeit unter: \url{http://jpt.lu/thesispackage.zip}
2016-10-16 19:11:39 +02:00
\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