diff --git a/Bachelorarbeit.synctex.gz(busy) b/Bachelorarbeit.synctex.gz(busy) deleted file mode 100644 index a642e2a..0000000 Binary files a/Bachelorarbeit.synctex.gz(busy) and /dev/null differ diff --git a/Bachelorarbeit.tex b/Bachelorarbeit.tex index a0227a1..efeafe8 100644 --- a/Bachelorarbeit.tex +++ b/Bachelorarbeit.tex @@ -1069,6 +1069,37 @@ ACTION new StrongAccelerationEvent(relatedCar=c1.relatedCar, deltaSpeed=deltaSpeed) \end{lstlisting} +Übersetzt man dies in einen C-SPARQL-Query, so erhält man folgende Abfrage: +\begin{lstlisting}[label={},caption={}] +REGISTER STREAM getStronglyAcceleratingCars AS +PREFIX rdf: +PREFIX f: +PREFIX xsd: +PREFIX car: +CONSTRUCT { + [] rdf:type car:CarStrongAcceleratingEvent + ; car:relatedCar ?car + ; car:deltaSpeed ?deltaSpeed . +} +FROM STREAM [RANGE 5s STEP 1s] +WHERE { + ?e1 rdf:type car:CarStatusEvent . + ?e1 car:relatedCar ?car . + ?e1 car:speed ?speed1 . + ?e2 rdf:type car:CarStatusEvent . + ?e2 car:relatedCar ?car . + ?e2 car:speed ?speed2 . + FILTER NOT EXISTS { + ?ex rdf:type car:CarStatusEvent . + FILTER(f:timestamp(?e1,rdf:type,car:CarStatusEvent) < f:timestamp(?ex,rdf:type,car:CarStatusEvent)) + FILTER(f:timestamp(?ex,rdf:type,car:CarStatusEvent) < f:timestamp(?e2,rdf:type,car:CarStatusEvent)) + } + BIND(?speed2 - ?speed1 AS ?deltaSpeed) + FILTER(f:timestamp(?e1,rdf:type,car:CarStatusEvent) < f:timestamp(?e2,rdf:type,car:CarStatusEvent)) + FILTER(?deltaSpeed > 25) +} +\end{lstlisting} +Diese muss nun lediglich als Ereignisdatenstrom an der Engine registriert werden, und kann dann innerhalb von weiteren C-SPARQL-Queries verwendet werden. \item Verschleiß der Bremsen durch sehr starke Bremsmanöver \item Verschleiß des Motors durch Fahrt mit überhöhter Motordrehzahl