diff --git a/Bachelorarbeit.tex b/Bachelorarbeit.tex index 49950d7..44455dc 100644 --- a/Bachelorarbeit.tex +++ b/Bachelorarbeit.tex @@ -1104,8 +1104,37 @@ Diese muss nun lediglich als Ereignisdatenstrom an der Engine registriert werden \item \textbf{Verschleiß der Bremsen durch sehr starke Bremsmanöver:} Die Umsetzung hier ist sehr ähnlich zu dem Query aus Listing~\ref{lst:scenario_strong_acceleration}, da der einzige Unterschied die Beschleunigungsrichtung ist. Somit ist für die Erkennung lediglich die Vertauschung der beiden Geschwindigkeitsparameter bei der Differenzbildung notwendig. Am Ende der Auswertung wird dann ein Ereignis vom Typ \texttt{CarStrongBrakeEvent} gefeuert. -\item \textbf{Verschleiß des Motors durch Fahrt mit überhöhter Motordrehzahl:} +\item \textbf{Verschleiß des Motors durch Fahrt mit überhöhter Motordrehzahl:} Um die andauernd überhöhte Motordrehzahl eines PKW zu erkennen, müssen mehrere \texttt{CarStatusEvent}s in einem Zeitfenster betrachtet werden und die durchschnittliche Motordrehzahl durch den Einsatz von Aggregationsfunktionen ermittelt werden. +\begin{lstlisting}[label={lst:scenario_get_engine_wear},caption={Ermittlung überhöhter Motordrehzahl im Betrieb}] +REGISTER STREAM getEngineWear AS +PREFIX rdf: +PREFIX f: +PREFIX xsd: +PREFIX car: +CONSTRUCT { + [] rdf:type car:CarEngineWearEvent + ; car:relatedCar ?car + ; car:avgMotorRPM ?avgMotorRPM + ; car:maxMotorRPM ?maxMotorRPM . +} +FROM STREAM [RANGE 3s STEP 1s] +FROM +WHERE { + { + SELECT ?car (AVG(?motorRPM) AS ?avgMotorRPM) + WHERE { + ?e rdf:type car:CarStatusEvent . + ?e car:relatedCar ?car . + ?e car:motorRPM ?motorRPM . + } + GROUP BY (?car) + } + ?car car:isCarModel ?carModel . + ?carModel car:maximumMotorRPM ?maxMotorRPM . + FILTER(?avgMotorRPM > ?maxMotorRPM) +} +\end{lstlisting} \item \textbf{Verschleiß der Handbremse durch Fahren mit angezogener Handbremse:} \item \textbf{Verschleiß der Reifen durch Fahren mit zu niedrigem Reifendruck:} \end{itemize}