bachelorcolloquium/Bachelorkolloquium.tex

360 lines
10 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
2016-10-18 11:49:57 +02:00
\item $\rightarrow$ In Form von RDF-Ereignisdatenströmen abrufbar
2016-10-17 09:49:21 +02:00
\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
2016-10-18 11:49:57 +02:00
\item Jedes Ereignis bildet kleinen Teil der Realität ab
2016-10-17 09:49:21 +02:00
\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-18 11:49:57 +02:00
\item Ein Ereignis für sich trägt kaum Bedeutung
2016-10-17 10:11:07 +02:00
\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}
2016-10-18 11:49:57 +02:00
\item Möglichst schnelle Verarbeitung gefordert
2016-10-17 10:11:07 +02:00
\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-18 11:49:57 +02:00
2016-10-17 16:10:57 +02:00
\section{Exkurs: Grundlagen RDF}
2016-10-17 10:11:07 +02:00
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}
2016-10-18 11:49:57 +02:00
\begin{lstlisting}
car:23 carOnt:isCarModel carModel:42 .
car:23 carOnt:hasNickname "Alf"^^xsd:string .
\end{lstlisting}
2016-10-17 11:00:23 +02:00
\end{frame}
2016-10-17 10:51:17 +02:00
2016-10-18 12:03:09 +02:00
\begin{frame}{Assertion Box (ABox) und Terminology Box (TBox)}
2016-10-17 13:12:33 +02:00
\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-18 11:49:57 +02:00
\item $\rightarrow$ Analog: Klassendefinition in OOP
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
2016-10-18 11:49:57 +02:00
\item $\rightarrow$ Analog: Instanzen in OOP
2016-10-17 13:22:30 +02:00
\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-18 11:49:57 +02:00
Definition der Klassen \texttt{Car}, \texttt{CarModel} und \texttt{Driver} in RDF-Schema (RDFS):
2016-10-17 13:22:30 +02:00
\begin{lstlisting}
2016-10-17 16:51:26 +02:00
:Car rdf:type rdfs:class .
:CarModel rdf:type rdfs:class .
:Driver rdf:type rdfs:class .
2016-10-17 13:22:30 +02:00
2016-10-17 16:51:26 +02:00
:drives rdf:type rdf:Property .
:drives rdfs:domain :Driver .
:drives rdfs:range :Car .
2016-10-17 13:22:30 +02:00
2016-10-17 16:51:26 +02:00
:isCarModel rdf:type rdf:Property .
:isCarModel rdfs:domain :Car .
2016-10-18 11:49:57 +02:00
:isCarModel rdfs:range :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}
2016-10-17 16:54:11 +02:00
car:5 rdf:type :Car .
car:5 :isCarModel carModel:8 .
2016-10-17 13:22:30 +02:00
2016-10-17 16:54:11 +02:00
carModel:8 rdf:type :CarModel .
carModel:8 :maximumMotorRPM 4300 .
2016-10-17 13:22:30 +02:00
2016-10-17 16:54:11 +02:00
driver:1 rdf:type :Driver .
driver:1 :drives car:5 .
driver:1 :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
2016-10-18 11:49:57 +02:00
Dazu folgt nun ein Beispiel \dots
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}
2016-10-17 16:51:26 +02:00
:a :drives :b .
2016-10-17 13:50:52 +02:00
\end{lstlisting}
Führt man nun Reasoning mit Hilfe dieser TBox durch:
\begin{lstlisting}
2016-10-17 16:51:26 +02:00
:drives rdf:type rdf:Property .
:drives rdfs:domain :Driver .
:drives rdfs:range :Car .
2016-10-18 11:49:57 +02:00
:Vehicle rdf:type rdfs:class .
:Car rdf:type rdfs:class .
:Car rdfs:subclassOf :Vehicle .
2016-10-17 13:50:52 +02:00
\end{lstlisting}
2016-10-18 12:03:09 +02:00
So ergibt sich daraus folgendes, implizites Wissen:
2016-10-17 13:50:52 +02:00
\begin{lstlisting}
2016-10-17 16:51:26 +02:00
:a rdf:type :Driver .
:b rdf:type :Car .
:b rdf:type :Vehicle .
2016-10-17 13:50:52 +02:00
\end{lstlisting}
\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}
2016-10-18 12:03:09 +02:00
\item \dots dafür ist eine TBox mit Vokabular notwendig
2016-10-17 14:06:36 +02:00
\end{itemize}
\end{itemize}
\end{frame}
2016-10-17 10:51:17 +02:00
2016-10-17 16:10:57 +02:00
\section{Complex Event Processing mit C-SPARQL}
2016-10-18 11:49:57 +02:00
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-18 12:03:09 +02:00
\begin{frame}{Sliding Window und 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}
2016-10-17 16:10:57 +02:00
\item $\rightarrow$ Es wird quasi \enquote{umgeklappt}
2016-10-18 12:03:09 +02:00
\item $\rightarrow$ Ereignisse nur ein \emph{einziges Mal} darin enthalten
2016-10-17 16:04:52 +02:00
\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}
2016-10-17 16:10:57 +02:00
\begin{frame}{CEP mit C-SPARQL}
2016-10-17 14:06:36 +02:00
\begin{itemize}
2016-10-17 16:10:57 +02:00
\item \enquote{Continuous SPARQL}
\item Erweiterung von SPARQL zur Verarbeitung von RDF-Datenströmen
2016-10-17 14:06:36 +02:00
\item
\end{itemize}
2016-10-17 10:12:34 +02:00
\end{frame}
\begin{frame}{}
\end{frame}
\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 16:25:59 +02:00
\begin{frame}{Fazit}
\begin{itemize}
\item C-SPARQL-Engine noch nicht vollständig ausgereift
\item Einige Probleme bei der Durchführung des Beispielszenarios aufgetaucht
\item Einfacher Zugriff auf Domänenwissen ist großer Pluspunkt
2016-10-18 12:03:09 +02:00
\item Nutzung von Reasoning auf Basis von TBox mit RDF-Schema möglich
2016-10-17 16:25:59 +02:00
\item Umfang der C-SPARQL-Queries ist hingegen etwas groß
\item Für rein didaktische Zwecke auf jeden Fall zur Erprobung von CEP geeignet
\end{itemize}
\end{frame}
2016-10-17 10:12:34 +02:00
2016-10-17 16:25:59 +02:00
\begin{frame}{Ausblick}
\begin{itemize}
\item Nach einigen Verbesserungen und Fehlerbehebungen gut nutzbar
\item Dann auch definitiv für Einsteiger geeignet
\item Eventuell Reasoning auf Basis von TBox mit OWL-Ontologien denkbar
\begin{itemize}
\item Diese sind deutlich mächtiger als Vokabular auf RDFS-Basis
\item Ermöglichen Attribute mit Transitivität, Symmetrie, Inversen, \dots
\end{itemize}
\end{itemize}
2016-10-17 10:12:34 +02:00
\end{frame}
2016-10-17 16:25:59 +02:00
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 16:10:57 +02:00
\begin{frame}[fragile]{EOF}
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