[TASK] Generic commit.
This commit is contained in:
parent
48714db495
commit
0a47130d41
|
@ -601,6 +601,7 @@ Unter Berücksichtigung dieser Kriterien fiel die Wahl auf die CEP-Engine C-SPAR
|
|||
\chapter{CEP auf RDF-Datenströmen anhand der C-SPARQL Engine}
|
||||
Nachdem die Wahl der CEP-Engine im vorherigen Kapitel auf die C-SPARQL-Engine gefallen ist, sollen in diesem Kapitel nun ihre Möglichkeiten zur Verarbeitung von RDF-Datenströmen beleuchtet werden. Hierfür wird die Abbildung von Ereignisdaten mit RDF erläutert und die in Kapitel~\ref{cpt:cep_intro} eingeführte abstrakte Sprache für CEP-Regeln verwendet werden, um die Fähigkeiten von C-SPARQL-Queries zu demonstrieren --- die auf SPARQL aufgebaute Regelsprache der C-SPARQL-Engine.
|
||||
|
||||
|
||||
\section{Ereignisinstanzen in RDF-Datenströmen}
|
||||
Ereignisse --- genauer: Ereignisinstanzen --- werden aufgrund der Nutzung von RDF-Datenströmen als Transportmedium nun durch RDF-Tupel beschrieben. Diese tragen neben den typischen Inhalten von Tripeln (Subjekt, Prädikat und Objekt) nun eine vierte Information mit sich: den Zeitstempel, zu dem das Ereignis ausgelöst wurde. Da die Tupel nun mit dem Zeitstempel insgesamt vier Angaben enthalten, werden sie als \emph{Quadrupel} bezeichnet.
|
||||
|
||||
|
@ -629,6 +630,7 @@ Wie aus Listing~\ref{lst:sample_abstract_event_data} zu erkennen ist, ist jede E
|
|||
\end{lstlisting}
|
||||
Wie in Listing~\ref{lst:sample_event_rdf_quads} zu sehen ist, wurde die ID der Ereignisinstanzen zur Generierung der Subjekt-URI verwendet, die in den Quadrupeln verwendet werden, um die Ereignisse zu beschreiben. Aus dem Ereignistyp wurde eine Aussage, die die Subjekt-URI via \texttt{rdf:type} mit einer RDFS-Objektklasse verknüpft, die diesen Ereignistypen repräsentieren soll. Alle weiteren Attribute der Ereignisinstanzen wurden über eigens hierfür definierte RDFS-Prädikate dem Ereignissubjekt zugeordnet. Die Angabe des PKW, auf den sich die Ereignisinstanzen beziehen, wurde durch eine direkte Verknüpfung der Ereignissubjekte mit dem zugehörigen PKW-Subjekt modelliert. Die PKW-Subjekte sind hierbei im Domänenwissen hinterlegt; dazu später mehr\todo{Kapitelreferenz!}.
|
||||
|
||||
|
||||
\section{C-SPARQL als Sprache für CEP-Regeln}
|
||||
Um die Ereignisdatenströme mit RDF-Quadrupeln nun in der C-SPARQL-Engine verarbeiten zu können, werden im Verarbeitungsprozess in C-SPARQL-Queries formulierte CEP-Regeln benötigt. Die Konstrukte und Fähigkeiten von C-SPARQL sollen in diesem Abschnitt erläutert werden; weiterführend ist eine detailliertere Erläuterung von C-SPARQL mit Beispielabfragen unter \cite{barbieri:csparql} nachzulesen.
|
||||
Da C-SPARQL die Abfragesprache SPARQL lediglich erweitert, kann ein einfacher SPARQL-\texttt{SELECT}-Query als Ausgangspunkt verwendet werden:
|
||||
|
@ -639,7 +641,7 @@ WHERE {
|
|||
}
|
||||
\end{lstlisting}
|
||||
|
||||
\paragraph{Sliding Windows}
|
||||
\paragraph{Ereignisdatenströme in Sliding Windows}
|
||||
Um mit der Verarbeitung von Ereignisdatenströmen beginnen zu können, müssen die für die Verarbeitung benötigten RDF-Datenströme in der CEP-Regel angegeben werden. Das Konstrukt \texttt{FROM [NAMED] STREAM <\emph{streamUri}> [\emph{window}]} wird zwischen den Klauseln \texttt{SELECT} und \texttt{WHERE} angegeben und definiert neben der in \texttt{streamUri} zu hinterlegenden URI des zu konsumierenden RDF-Datenstroms auch das an Stelle von \texttt{window} zu definierende Sliding Window, in dem dieser betrachtet werden soll\cite{barbieri:csparql}. Die Angabe des Sliding Windows ist hier zwingend erforderlich, da die kontinuierlich einströmenden Ereignisdaten zur Verarbeitung auf eine endliche Datenmenge reduziert werden müssen. Weiterhin ist die Spezifikation des Sliding Window sinnvoll, da je nach Anforderungen der CEP-Regel Ereignisse aus bestimmten Zeiträumen für die Verarbeitung interessant sind --- je nach Zweck der CEP-Regel können diese Zeiträume sich stark unterscheiden.
|
||||
|
||||
Um ein Sliding Window zu definieren, wird die folgende Grammatik (entnommen aus \cite{barbieri:csparql}) ab dem Einstiegspunkt \texttt{Window} verwendet:
|
||||
|
@ -670,6 +672,10 @@ beschrieben werden. In der Abfragesprache C-SPARQL kann dieses Tumbling Window d
|
|||
Übersetzt man diese Definition in die C-SPARQL-Abfragesprache, so erhält man \texttt{[RANGE TRIPLES 150]}.
|
||||
\end{itemize}
|
||||
|
||||
\paragraph{Mustererkennung}
|
||||
\todo{\dots} Ereignismuster lassen sich durch Sequenzen von auftretenden bzw. nicht auftretenden Ereignissen definieren. Um diese zu finden, müssen Tripel selektiert werden, die zu den benötigten Ereignistypen korrespondieren, wobei diese später über \texttt{FILTER}-Anweisungen in ihrer Reihenfolge festgelegt werden. Über Differenzen der durch \texttt{f:timestamp(?s,?p,?o)} angegebenen Zeitstempel von gegebenen Tripeln lassen sich auch zeitliche Beziehungen eingrenzen und festlegen.
|
||||
|
||||
|
||||
\paragraph{Aggregation von Ereignissen}
|
||||
\dots
|
||||
\begin{lstlisting}
|
||||
|
@ -688,8 +694,6 @@ Mögliche Aggregationsfunktionen laut \cite{barbieri:csparql} sind:
|
|||
\item MAX
|
||||
\end{itemize}
|
||||
|
||||
\paragraph{Mustererkennung}
|
||||
\todo{\dots} Ereignismuster lassen sich durch Sequenzen von auftretenden bzw. nicht auftretenden Ereignissen definieren. Um diese zu finden, müssen Tripel selektiert werden, die zu den benötigten Ereignistypen korrespondieren, wobei diese später über \texttt{FILTER}-Anweisungen in ihrer Reihenfolge festgelegt werden. Über Differenzen der durch \texttt{f:timestamp(?s,?p,?o)} angegebenen Zeitstempel von gegebenen Tripeln lassen sich auch zeitliche Beziehungen eingrenzen und festlegen.
|
||||
|
||||
\section{Auslösen von Aktionen}
|
||||
Erzeugen von Ereignissen innerhalb von C-SPARQL-Queries (durch Registrierung der C-SPARQL-Queries als neue Ereignisströme an der Engine). Hinweise auf Möglichkeit der Auslösung von Reaktionen beim Beobachten der Abfrageergebnisse.
|
||||
|
|
Loading…
Reference in New Issue