[TASK] Generic commit.
This commit is contained in:
parent
8f2cef721a
commit
ca7ee9638d
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user