[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}
|
\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}
|
\begin{itemize}
|
||||||
\item Initialisieren der Engine
|
\item Initialisieren der Engine
|
||||||
\item Erzeugen und Registrieren der Stream-Generatoren
|
\item Erzeugen und Registrieren der Stream-Generatoren
|
||||||
|
Loading…
x
Reference in New Issue
Block a user