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