diff --git a/Bachelorarbeit.tex b/Bachelorarbeit.tex index ffb5611..dc9dc1d 100644 --- a/Bachelorarbeit.tex +++ b/Bachelorarbeit.tex @@ -461,11 +461,10 @@ Hier wird jetzt mal wirklich C-SPARQL verwendet. \end{itemize} -\section{grobes Konzept} -Ähm. Ich glaube, der Part ist redundant mit dem groben C-SPARQL Abschnitt im vorherigen Kapitel? +\section{Nutzung der C-SPARQL Engine in Java} -\section{Hello-World mit C-SPARQL Engine in Java} +\subsection{Initialisieren der Engine} Erst einmal die Instanz der Engine erzeugen und initialisieren (mit true, damit f:timestamp zur Verfügung steht). \begin{lstlisting} @@ -473,15 +472,11 @@ CsparqlEngine engine = new CsparqlEngineImpl(); engine.initialize(true); \end{lstlisting} -Einen StreamGenerator erzeugen (im Konstruktor die IRI für alle generierten Quadrupel), an der Engine registrieren und starten (separater Thread, dementsprechent etwas auf Threadsicherheit achten!) -\begin{lstlisting} -RdfStream carStreamGenerator = new CarStreamGenerator("http://myexample.org/cars"); -engine.registerStream(carStreamGenerator); -final Thread t = new Thread((Runnable) carStreamGenerator); -t.start(); -\end{lstlisting} + +\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; @@ -513,6 +508,21 @@ public class StreamGenerator extends RdfStream implements Runnable { } \end{lstlisting} + +\subsection{StreamGenerator an der Engine registrieren und starten} + +Einen StreamGenerator erzeugen (im Konstruktor die IRI für alle generierten Quadrupel), an der Engine registrieren und starten +\begin{lstlisting} +RdfStream carStreamGenerator = new CarStreamGenerator("http://myexample.org/cars"); +engine.registerStream(carStreamGenerator); +final Thread t = new Thread((Runnable) carStreamGenerator); +t.start(); +\end{lstlisting} + + +\subsection{Query an der Engine registrieren} + + Jetzt einen Query an der Engine registrieren; Ergebnis ist ein ResultProxy, an den Observer angeklemmt werden können um die Query-Ergebnisse weiter zu verarbeiten. \begin{lstlisting} String query = "%%% SPARQL QUERY %%%"; @@ -526,6 +536,15 @@ try { resultProxy.addObserver(new ConsoleFormatter()); \end{lstlisting} + +\subsection{Laufen lassen und abwarten} + +Der Part ist einfach ;-) +Im Main-Thread einfach etwas Thread.sleep() callen und gut. + + +\subsection{Engine herunterfahren} + Ab hier läuft das ganze ab, bis es gestoppt wird. Um es abzubauen, wird zunächst der Query deregistriert. \begin{lstlisting} engine.unregisterQuery(resultProxy.getId()); @@ -538,17 +557,6 @@ engine.unregisterStream(carStreamGenerator.getIRI()); \end{lstlisting} -\begin{itemize} -\item Initialisieren der Engine -\item Erzeugen und Registrieren der Stream-Generatoren -\item Starten der Generatoren (optional auch später) -\item Erzeugen von QueryResultProxys mit den CSPARQL-Queries -\item Observer dem QueryResultProxy anheften und den Proxy an der Engine registrieren -\item Laufen lassen und abwarten -\item Zum Beenden die Queries deregistrieren, die StreamGeneratoren stoppen und deregistrieren. -\end{itemize} - - \section{Einspeisung von Ereignissen} \begin{itemize} @@ -559,6 +567,7 @@ engine.unregisterStream(carStreamGenerator.getIRI()); Spezielle Betrachtung der StreamGenerators und wie sie funktionieren, Anmerkungen darüber, dass hier Daten von außen gezogen und ggf. konvertiert werden können. + \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?