[TASK] Generic commit.

This commit is contained in:
Jan Philipp Timme 2016-08-03 14:35:30 +02:00
parent 8f2cef721a
commit ca7ee9638d

View File

@ -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