\documentclass{f4_beamer} % 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} \author{Jan Philipp Timme} \date{\today} % Content below this line \begin{document} \section{Motivation} \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} \end{frame} \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} \begin{frame}{Verarbeitung der Ereignisdatenströme} \begin{itemize} \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 \end{itemize} \end{frame} \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? \item $\rightarrow$ Anhand eines Beispielszenarios praktisch durchführen \end{itemize} \end{frame} \section{Grundlagen} \subsection{Exkurs: RDF} \begin{frame}{Exkurs: RDF} \begin{itemize} \item Resource Description Framework \item Framework zur Beschreibung und Modellierung von Wissen \item Aussagen sind Tripel \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} \end{itemize} Es folgt ein Beispiel \dots \end{frame} \begin{frame}[fragile]{Beispiel: Zwei RDF-Tripel in Turtle-Notation} Fakten über ein beispielhaftes Subjekt in RDF: \begin{lstlisting} @prefix car: . @prefix carModel: . @prefix carOnt: . car:23 carOnt:isCarModel carModel:42 . car:23 carOnt:hasNickname "Alf"^^xsd:string . \end{lstlisting} \begin{itemize} \item Turtle erlaubt mit \texttt{@prefix} die Definition von Prefixen\footnote{Für die Übersichtlichkeit werden Prefixe auf den folgenden Folien weggelassen.} \item $\rightarrow$ Übersichtliche Repräsentation der Fakten \end{itemize} \end{frame} \begin{frame}[fragile]{Beispiel: Zwei RDF-Tripel visualisiert} \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} \begin{frame}{Assertion Box (ABox) und Terminlogy Box (TBox)} \begin{itemize} \item Unterscheidung zwischen Faktenbasis (ABox) und Terminologie (TBox) \item TBox enthält Vokabular mit definierter Bedeutung \begin{itemize} \item Objektklassen \item Prädikate \end{itemize} \item ABox enthält konkrete Fakten \begin{itemize} \item z.B. Wissen über existierende Objekte, \dots \end{itemize} \end{itemize} \end{frame} \begin{frame}[fragile]{Beispiel für eine TBox} Definition der Klassen \texttt{Car}, \texttt{CarModel} und \texttt{Driver} in RDFS: \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 . carOnt.isCarModel rdfs:range carOnt:CarModel . \end{lstlisting} \end{frame} \begin{frame}[fragile]{Beispiel für eine ABox} Beschreibung eines PKW und dessen Fahrer mit Hilfe der Terminologie aus der vorherigen TBox: \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 . driver:0 carOnt:hasName "Max Mustermann"^^xsd:string . \end{lstlisting} \end{frame} \begin{frame}{Reasoning} \begin{itemize} \item Prozess zum automatischen Anreichern von RDF-Daten \item Basiert auf einer gegebenen TBox \item Ermittelt in der ABox enthaltenes, implizites Wissen \end{itemize} Dazu folgt nun ein Beispiel \end{frame} \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} \begin{frame}{Abfragen von RDF-Daten mit SPARQL} \begin{itemize} \item \enquote{SPARQL Protocol And RDF Query Language} \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} \end{itemize} Es folgt ein beispielhafter SPARQL-Query \end{frame} \begin{frame}[fragile]{Beispielhafte SPARQL-Abfrage} \begin{lstlisting} PREFIX carOnt: PREFIX 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} \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} \item Mittels SPARQL können RDF-Daten abgefragt werden \end{itemize} \end{frame} \subsection{Complex Event Processing} \begin{frame}{Complex Event Processing} \begin{itemize} \item \end{itemize} \end{frame} \begin{frame}{} \begin{itemize} \item \end{itemize} \end{frame} \begin{frame}{} \begin{itemize} \item \end{itemize} \end{frame} \begin{frame}{} \begin{itemize} \item \end{itemize} \end{frame} \section{Vergleich aktueller RDF-fähiger CEP-Engines} \begin{frame}{} \end{frame} \section{Umsetzung des Beispielszenarios} \begin{frame}{} \end{frame} \section{Fazit} \begin{frame}{} \end{frame} % 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} \begin{frame}[fragile]{Ende} Vielen Dank für Ihre Aufmerksamkeit! Fragen? \end{frame} \end{document} % No more content below this line