diff --git a/Bachelorarbeit.tex b/Bachelorarbeit.tex index 633165f..2d8e11a 100644 --- a/Bachelorarbeit.tex +++ b/Bachelorarbeit.tex @@ -751,9 +751,18 @@ WHERE { Natürlich kann man diese Abfrage auch umkehren um alle Personentripel \textbf{mit} einer Namensangabe zu finden. Hierfür kommt anstelle von \texttt{FILTER NOT EXISTS \{ ... \}} nun \texttt{FILTER EXISTS \{ ... \}} zum Einsatz. Das Ergebnis der Abfrage wäre nun das Personentripel von \texttt{:alice}. \end{itemize} - \todo{Es folgt die Übersetzung der Operatoren der Ereignisalgebra aus Kapitel~\ref{cpt:cep_intro}, um zu erläutern, wie das alles in C-SPARQL funktionieren kann.} +Um nun in C-SPARQL Ereignismuster formulieren zu können, die denen aus Kapitel~\ref{cpt:cep_intro} entsprechen, müssen zunächst die Operatoren aus der Ereignisalgebra aus Anweisungen in C-SPARQL übersetzt werden. +\begin{itemize} +\item \textbf{Ereignistypen} $(A)$: Bevor die Operatoren aus der Ereignisalgebra verwendet werden können, muss zunächst die Selektion von Ereignissen spezifischer Typen gezeigt werden. Wie Listing~\ref{lst:sample_event_rdf_quads} bereits demonstriert hat, wird das Prädikat \texttt{rdf:type} verwendet, um den Ereignistyp einer Ereignisinstanz zu spezifizieren. Diese Angabe kann bei der Selektion von Tripeln verwendet werden, um nur Ereignisinstanzen eines bestimmten Ereignistypen zu erhalten. Platziert man das folgende Muster in der \texttt{WHERE}-Klausel einer C-SPARQL-Abfrage, so erhält man Ereignisse vom Typ \texttt{}: +\begin{lstlisting} +?eventA rdf:type . +\end{lstlisting} +\item Der \textbf{Sequenzoperator} $X\ \rightarrow\ Y$: Um die zeitliche Abfolge von Ereignissen mit C-SPARQL zu formulieren, wird die \texttt{f:timestamp(?s,?p,?o)}-Funktion mit der \texttt{FILTER}-Anweisung kombiniert. Hat man bereits zwei Ereignisse --- je eines vom Typ X beziehungsweise Y --- selektiert, so kann man diese Anhand ihrer Zeitstempel filtern, sodass nur in der Ergebnismenge nur Ereignisse übrig bleiben, + +\end{itemize} + Ich hab da mal etwas vorbereitet, und zwar das Äquivalent zu $A\ \rightarrow\ (\neg B)\ \rightarrow\ C$: \begin{lstlisting}[label={},caption={C-SPARQL-Query für Muster $A\ \rightarrow\ (\neg B)\ \rightarrow C$}] REGISTER QUERY matchANotBC AS