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 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}
\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-17 16:10:57 +02:00
\section { Complex Event Processing mit C-SPARQL}
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}
2016-10-17 16:10:57 +02:00
\item $ \rightarrow $ Es wird quasi \enquote { umgeklappt}
2016-10-17 16:04:52 +02:00
\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}
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}
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 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