diff --git a/Bachelorkolloquium.tex b/Bachelorkolloquium.tex index df5db99..ff618ce 100644 --- a/Bachelorkolloquium.tex +++ b/Bachelorkolloquium.tex @@ -72,14 +72,14 @@ \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 +\item $\rightarrow$ 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 +\item Jedes Ereignis bildet kleinen Teil der Realität ab \begin{itemize} \item \dots sofern Daten korrekt sind (Messfehler, Übertragungsfehler, \dots) \end{itemize} @@ -91,14 +91,14 @@ \begin{frame}{Verarbeitung der Ereignisdatenströme} \begin{itemize} -\item Ereignisse für sich tragen kaum Bedeutung +\item Ein Ereignis für sich trägt 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 Möglichst schnelle Verarbeitung gefordert \item $\rightarrow$ Complex Event Processing (CEP) \end{itemize} \end{frame} @@ -122,6 +122,7 @@ \end{itemize} \end{frame} + \section{Exkurs: Grundlagen RDF} \begin{frame}{Exkurs: RDF} @@ -162,17 +163,23 @@ car:23 carOnt:hasNickname "Alf"^^xsd:string . \caption{Prädikate verknüpfen ein Subjekt mit Objekt und Literalwert} \label{fig:triple_spo} \end{figure} +\begin{lstlisting} +car:23 carOnt:isCarModel carModel:42 . +car:23 carOnt:hasNickname "Alf"^^xsd:string . +\end{lstlisting} \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 +\item $\rightarrow$ Analog: Klassendefinition in OOP \begin{itemize} \item Objektklassen \item Prädikate \end{itemize} \item ABox enthält konkrete Fakten +\item $\rightarrow$ Analog: Instanzen in OOP \begin{itemize} \item z.B. Wissen über existierende Objekte, \dots \end{itemize} @@ -180,7 +187,7 @@ car:23 carOnt:hasNickname "Alf"^^xsd:string . \end{frame} \begin{frame}[fragile]{Beispiel für eine TBox} -Definition der Klassen \texttt{Car}, \texttt{CarModel} und \texttt{Driver} in RDFS: +Definition der Klassen \texttt{Car}, \texttt{CarModel} und \texttt{Driver} in RDF-Schema (RDFS): \begin{lstlisting} :Car rdf:type rdfs:class . :CarModel rdf:type rdfs:class . @@ -192,7 +199,7 @@ Definition der Klassen \texttt{Car}, \texttt{CarModel} und \texttt{Driver} in RD :isCarModel rdf:type rdf:Property . :isCarModel rdfs:domain :Car . -.isCarModel rdfs:range :CarModel . +:isCarModel rdfs:range :CarModel . \end{lstlisting} \end{frame} @@ -218,7 +225,7 @@ driver:1 :hasName "Max Mustermann"^^xsd:string . \item Ermittelt in der ABox enthaltenes, implizites Wissen \end{itemize} -Dazu folgt nun ein Beispiel +Dazu folgt nun ein Beispiel \dots \end{frame} \begin{frame}[fragile]{Beispiel: Reasoning} @@ -228,13 +235,13 @@ Gegeben sei folgende ABox: \end{lstlisting} Führt man nun Reasoning mit Hilfe dieser TBox durch: \begin{lstlisting} -:Vehicle rdf:type rdfs:class . -:Car rdf:type rdfs:class . -:Car rdfs:subclassOf :Vehicle . - :drives rdf:type rdf:Property . :drives rdfs:domain :Driver . :drives rdfs:range :Car . + +:Vehicle rdf:type rdfs:class . +:Car rdf:type rdfs:class . +:Car rdfs:subclassOf :Vehicle . \end{lstlisting} So ergibt sich daraus folgendes, zusätzliches Wissen: \begin{lstlisting} @@ -244,35 +251,6 @@ So ergibt sich daraus folgendes, zusätzliches Wissen: \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) @@ -281,12 +259,12 @@ Diese Abfrage selektiert zu dem PKW \texttt{car:0} die maximal zulässige Motord \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} \section{Complex Event Processing mit C-SPARQL} + \begin{frame}{Complex Event Processing} \begin{itemize} \item Ereignisdaten werden in Sliding Windows betrachtet