From 762d47ce1f6cbae7a92c10409c5e21f695c8d537 Mon Sep 17 00:00:00 2001 From: Jan Philipp Timme Date: Wed, 3 Aug 2016 17:55:48 +0200 Subject: [PATCH] [TASK] Generic commit. --- Bachelorarbeit.tex | 36 +++++++++++++++++++++++------------- 1 file changed, 23 insertions(+), 13 deletions(-) diff --git a/Bachelorarbeit.tex b/Bachelorarbeit.tex index dc9dc1d..75af1dd 100644 --- a/Bachelorarbeit.tex +++ b/Bachelorarbeit.tex @@ -253,7 +253,7 @@ Weiterhin ist es möglich, beliebig viele verschiedene Ontologien gleichzeitig z Die Abfrage von RDF-Daten erfolgt über die Sprache SPARQL (\enquote{SPARQL Protocol And RDF Query Language}), welche in diesem Abschnitt grob erläutert wird. Eine detaillierte Beschreibung von SPARQL ist unter \cite{w3c:sparql} nachzulesen. -Im Gegensatz zu Abfragesprachen von relationalen Datenbanksystemen wie SQL ist es mit SPARQL möglich, Daten über verschiedene Datenquellen wie Tripel- oder Quadstores hinweg miteinander zu verknüpfen. Auch ist im Gegensatz zu SQL keine spezielle Anpassung der Abfragen an ein Datenbankschema notwendig; lediglich die Art und Weise, wie die angeforderten Daten miteinander in Verbindung stehen, ist für SPARQL-Abfragen wichtig. Im Folgenden zeigt Listing~\ref{lst:sample_sparql_query} eine Abfrage auf den Daten aus Listing~\ref{lst:sample_rdf_data}. +Im Gegensatz zu Abfragesprachen von relationalen Datenbanksystemen wie SQL ist es mit SPARQL möglich, Daten über verschiedene Datenquellen wie Tripel- oder Quadstores hinweg miteinander zu verknüpfen. Auch ist im Gegensatz zu SQL keine spezielle Anpassung der Abfragen an ein Datenbankschema notwendig; lediglich die Art und Weise, wie die angeforderten Daten miteinander in Verbindung stehen, ist für SPARQL-Abfragen wichtig. Im Folgenden zeigt Listing~\ref{lst:sample_sparql_query} eine einfache Abfrage auf den Daten aus Listing~\ref{lst:sample_rdf_data}. \begin{lstlisting}[caption={Abfrage des Namens des Bruders von Marie aus Daten von Listing~\ref{lst:sample_rdf_data}},label={lst:sample_sparql_query}] SELECT ?nameOfBrother @@ -319,6 +319,8 @@ http://myexample.org/cars/event#1468064960110 http://myexample.org/cars#currentT http://myexample.org/cars/event#1468064960110 http://myexample.org/cars#currentSpeed "13"^^http://www.w3.org/2001/XMLSchema#integer \end{lstlisting} +\todo{Noch ein wenig auf das Listing eingehen, URIs und die fiktiven Prädikate etwas erläutern} + \section{SPARQL-Erweiterung zur Verarbeitung von RDF-Datenströmen} @@ -345,6 +347,8 @@ WHERE { } \end{lstlisting} +\todo{Streaming-Erweiterungen aus dem Listiung ein wenig hervorheben} + \section{Resoning auf RDF-Datenströmen?} @@ -363,12 +367,17 @@ Reasoning auf RDF-Datenströmen ist ein zur Zeit noch umforschtes Gebiet, da dur Es gibt bereits einige Technologien um Ereignisströme zu verarbeiten. Im Folgenden stelle ich nun ein paar bekannte Systeme kurz vor. +Grobe Eckpunkte zur Orientierung: +\begin{itemize} +\item Woher kommt sie, wie sieht die Entwicklung zur Zeit aus? +\item Eckdaten über Implementierung +\item Fähigkeiten und Funktionen? +\end{itemize} + \section*{Anforderungen an CEP-Engines} -\todo{Eventuell fliegt der Part raus; Es sind mehr Kriterien/Features als Anforderungen, mal sehen} - -Mögliche Kriterien: +\todo{Eventuell fliegt die Section raus; Es sind mehr Kriterien/Features als Anforderungen, mal sehen was damit geschehen wird} \begin{itemize} \item Verarbeitung von mehreren Ereignisströmen @@ -413,18 +422,12 @@ Mögliche Kriterien: \item Listener können aus SPARQL-Query-Ergebnissen CSV produzieren \item In Java implementiert \item Kein Reasoning? -\item \url{http://graphofthings.org/debs2015/cqels.zip} - VirtualBox-Image zum Ausprobieren +\item CQELS\footnote{Unter \url{http://graphofthings.org/debs2015/cqels.zip} ist ein VirtualBox-Image zum Ausprobieren von CQELS erhältlich.} \end{itemize} \section{Esper} -\begin{itemize} -\item Woher kommt sie, wie sieht die Entwicklung zur Zeit aus? -\item Eckdaten über Implementierung -\item Fähigkeiten und Funktionen? -\end{itemize} - \begin{itemize} \item Quasi auch jetzt aktuell, da kommerzieller Hintergrund \item SQL-ähnliche Sprache @@ -450,7 +453,7 @@ Mögliche Kriterien: \chapter{Nutzung der Engine C-SPARQL} -Hier wird jetzt mal wirklich C-SPARQL verwendet. +In diesem Kapitel wird die C-SPARQL-Engine konkret vorgestellt und verwendet. \begin{itemize} \item RDF-Datenströme \item Beispielszenario @@ -463,6 +466,8 @@ Hier wird jetzt mal wirklich C-SPARQL verwendet. \section{Nutzung der C-SPARQL Engine in Java} +Im Folgenden wird auf die praktische Anwendung der C-SPARQL-Engine in einem Java-Projekt eingegangen. + \subsection{Initialisieren der Engine} @@ -476,7 +481,6 @@ engine.initialize(true); \subsection{Stream-Generatoren} Über den StreamGenerator muss ich etwas mehr erzählen, hier mal der grobe Code: -(Beim Programmieren darauf achten, dass dies ein separater Thread ist) \begin{lstlisting} public class StreamGenerator extends RdfStream implements Runnable { private volatile boolean keepRunning = false; @@ -508,6 +512,11 @@ public class StreamGenerator extends RdfStream implements Runnable { } \end{lstlisting} +\begin{itemize} +\item eigener Thread, also diesbezüglich wachsam bleiben +\item Aufgabe: Konstruktion von Quadrupeln + deren Übergabe an die Engine via \texttt{this.put()} +\end{itemize} + \subsection{StreamGenerator an der Engine registrieren und starten} @@ -571,6 +580,7 @@ Spezielle Betrachtung der StreamGenerators und wie sie funktionieren, Anmerkunge \section{Einspeisung von statischem Hintergrundwissen aus Dateien} Wie und wo werden Dateien in welchen Formaten abgelegt, müssen sie zuvor in der Engine registriert werden und wie wird im Query darauf zugegriffen? + \section{CSPARQL-Queries} \begin{itemize}