From ca7ee9638d6295701152277753b3e4e625d6b896 Mon Sep 17 00:00:00 2001 From: Jan Philipp Timme Date: Wed, 3 Aug 2016 14:35:30 +0200 Subject: [PATCH] [TASK] Generic commit. --- Bachelorarbeit.tex | 72 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 71 insertions(+), 1 deletion(-) diff --git a/Bachelorarbeit.tex b/Bachelorarbeit.tex index 89cb8f7..ffb5611 100644 --- a/Bachelorarbeit.tex +++ b/Bachelorarbeit.tex @@ -467,7 +467,77 @@ Hier wird jetzt mal wirklich C-SPARQL verwendet. \section{Hello-World mit C-SPARQL Engine in Java} -Einmal ein minimales, vollständiges Programm mit Erklärung der Komponenten: +Erst einmal die Instanz der Engine erzeugen und initialisieren (mit true, damit f:timestamp zur Verfügung steht). +\begin{lstlisting} +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} + +Über den StreamGenerator muss ich etwas mehr erzählen, hier mal der grobe Code: +\begin{lstlisting} +public class StreamGenerator extends RdfStream implements Runnable { + private volatile boolean keepRunning = false; + + public StreamGenerator(String iri) { + super(iri); + } + + public void pleaseStop() { + keepRunning = false; + } + + @Override + public void run() { + this.keepRunning = true; + while (this.keepRunning) { + long currentTime = System.currentTimeMillis(); + // Generate RdfQuadruple from data and hand it over to the engine + this.put(new RdfQuadruple( + someSubject, + somePredicate, + someObject, + currentTime + ) + ); + // Maybe sleep or do a simulation step + } + } +} +\end{lstlisting} + +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 %%%"; +CsparqlQueryResultProxy resultProxy = null; +try { + resultProxy = engine.registerQuery(query, true); +} catch (ParseException e1) { + // handle exception +} +// Print results to console +resultProxy.addObserver(new ConsoleFormatter()); +\end{lstlisting} + +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()); +\end{lstlisting} + +// Jetzt noch den StreamGenerator stoppen und von der Engine abkoppeln, fertig. +\begin{lstlisting} +((CarStreamGenerator) carStreamGenerator).pleaseStop(); +engine.unregisterStream(carStreamGenerator.getIRI()); +\end{lstlisting} + + \begin{itemize} \item Initialisieren der Engine \item Erzeugen und Registrieren der Stream-Generatoren