[TASK] Generic commit.
This commit is contained in:
parent
5ac780c517
commit
138d66b268
@ -593,6 +593,14 @@ Da in dieser Arbeit die Verarbeitung von RDF-Ereignisdatenströmen anhand einer
|
||||
\item Transparente Implementierung der Engine durch Verwendung bekannter Technologien
|
||||
\end{itemize}
|
||||
|
||||
\begin{tabular}{l|lll}
|
||||
Kriterium & EP-SPARQL & CQELS & C-SPARQL \\
|
||||
\hline
|
||||
Programmiersprache(n) & Prolog und Java & Java & Java \\
|
||||
Technologien & Prolog, eigene Entwicklung & eigene Entwicklung & Jena, Sesame, Esper\\
|
||||
Beispiele & \dots & \dots & Ja \\
|
||||
\end{tabular}
|
||||
|
||||
\todo{Tabelle o.Ä. zum direkten Vergleich der Kriterien!}
|
||||
|
||||
Unter Berücksichtigung dieser Kriterien fiel die Wahl auf die CEP-Engine C-SPARQL; sie wird im weiteren Lauf der Arbeit vorgestellt, um die Verarbeitung von RDF-Er\-eig\-nis\-da\-ten\-strö\-men durchzuführen und das Beispielszenario aus Kapitel~\ref{cpt:scenario} umzusetzen.
|
||||
@ -634,26 +642,31 @@ Wie in Listing~\ref{lst:sample_event_rdf_quads} zu sehen ist, wurde die ID der E
|
||||
\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 gibt es neben den Grundlagen zu SPARQL aus Kapitel~\ref{cpt:sparql_intro} noch ein Dokument der W3C\cite{w3c:sparql}. Eine detailliertere Erläuterung von C-SPARQL mit Beispielabfragen ist unter \cite{barbieri:csparql} nachzulesen.
|
||||
|
||||
Da C-SPARQL die Abfragesprache SPARQL lediglich erweitert, kann ein einfacher SPARQL-\texttt{SELECT}-Query als Grundgerüst verwendet werden:
|
||||
\begin{lstlisting}
|
||||
SELECT ...
|
||||
Da C-SPARQL die Abfragesprache SPARQL lediglich erweitert, sind alle gültigen SPARQL-Abfragen automatisch auch gültige C-SPARQL-Abfragen\cite{barbieri:csparql}. Bevor nun die einzelnen Features von C-SPARQL erläutert werden, folgt nun ein ein gültiger Beispiel-Query, der als Grundlage der Erläuterungen dienen soll. Die Angabe von Prefixen mit der \texttt{PREFIX}-Klausel ist natürlich auch in C-SPARQL-Abfragen erforderlich, wird in diesem Abschnitt aber aus Gründen der Übersichtlichkeit weggelassen.
|
||||
\begin{lstlisting}[label={cpt:example_csparql_query},caption={Beispielhafter C-SPARQL-Query}]
|
||||
REGISTER QUERY exampleQuery AS
|
||||
SELECT ?a ?b ?c
|
||||
FROM STREAM <http://example.org> [RANGE 5s STEP 1s]
|
||||
WHERE {
|
||||
...
|
||||
?a a <http://example.org/type/A> .
|
||||
?c a <http://example.org/type/C> .
|
||||
BIND(f:timestamp(?a,rdf:type,<http://example.org/type/A>) AS ?tsa)
|
||||
BIND(f:timestamp(?c,rdf:type,<http://example.org/type/C>) AS ?tsc)
|
||||
FILTER(?tsa < ?tsc)
|
||||
FILTER NOT EXISTS {
|
||||
?b a <http://example.org/type/B> .
|
||||
BIND(f:timestamp(?b,rdf:type,<http://example.org/type/B>) AS ?tsb)
|
||||
FILTER(?tsa < ?tsb && ?tsb < ?tsc)
|
||||
}
|
||||
}
|
||||
\end{lstlisting}
|
||||
Neben der Angabe von Prefixen mit der \texttt{PREFIX}-Klausel, die hier aus Gründen der Übersichtlichkeit weggelassen wird, erfordert C-SPARQL die Registrierung des Queries (\texttt{Query}) mit einem Namen (\texttt{QName}) an der Engine nach dem folgenden Schema:
|
||||
Zuerst fällt auf, dass C-SPARQL die Registrierung des Queries an der Engine erfordert. Diese wird nach dem folgenden Schema durchgeführt, wobei \texttt{QName} einen Namen für die Abfrage angibt und \texttt{Query} für die gesamte, restliche Abfrage steht:
|
||||
\begin{lstlisting}
|
||||
'REGISTER' ('QUERY'|'STREAM') QName 'AS' Query
|
||||
\end{lstlisting}
|
||||
Vorerst werden C-SPARQL-Queries unter Angabe des Schlüsselwortes \texttt{QUERY} registriert, mit dem Schlüsselwort \texttt{STREAM} wird sich später im Abschnitt (?)\todo{Referenz!} beschäftigt.
|
||||
Somit sieht das Grundgerüst eines C-SPARQL-Queries, der unter dem Namen \enquote{exampleQuery} an der Engine registriert werden soll, wie folgt aus:
|
||||
\begin{lstlisting}[label={lst:sample_csparql_query_structure},caption={Grundgerüst eines C-SPARQL-Queries}]
|
||||
REGISTER QUERY exampleQuery AS
|
||||
SELECT ...
|
||||
WHERE {
|
||||
...
|
||||
}
|
||||
\end{lstlisting}
|
||||
Vorerst werden C-SPARQL-Queries unter Angabe des Schlüsselwortes \texttt{QUERY} registriert, mit dem Schlüsselwort \texttt{STREAM} wird sich später im Abschnitt~\ref{cpt:register_stream} beschäftigt.
|
||||
Somit wurde die in Listing~\ref{lst:example_csparql_query} angegebene Abfrage als \texttt{QUERY} unter dem Namen \enquote{exampleQuery} an der Engine registriert.
|
||||
|
||||
\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 Schlüsselworts \texttt{NAMED} ist hierbei optional und funktioniert ähnlich wie in herkömmlichen SPARQL-Queries indem die Herkunft der einströmenden Tripel in Variablen vorgehalten wird, die über die \texttt{GRAPH}-Klausel verwendet werden können.
|
||||
|
||||
@ -804,7 +817,7 @@ Mögliche Aggregationsfunktionen laut \cite{barbieri:csparql} sind:
|
||||
\end{itemize}
|
||||
|
||||
|
||||
\section{Auslösen von Aktionen}
|
||||
\section{Auslösen von Aktionen}\label{cpt:register_stream}
|
||||
\todo{CONSTRUCT wird hier verwendet, der Query wird als Datenstrom registriert um seine Ergebnisse in die Engine einzuspeisen!}
|
||||
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
Block a user