[TASK] Generic commit.
This commit is contained in:
parent
afbe2019ac
commit
3fd3e904ec
@ -1104,8 +1104,18 @@ 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:} 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.
|
||||
\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 für einen einzelnen PKW in einem Zeitfenster betrachtet werden und die durchschnittliche Motordrehzahl durch den Einsatz von Aggregationsfunktionen ermittelt werden. Dieser ermittelte Mittelwert muss nun mit den im Domänenwissen hinterlegten Daten für das Modell des PKW abgeglichen werden, um festzustellen, ob er sich noch in dem für den Betrieb zulässigen Bereich befindet.
|
||||
Die folgende, abstrakte CEP-Regel stellt diesen Vorgang dar:
|
||||
\begin{lstlisting}[mathescape=true,label={},caption={}]
|
||||
CONDITION ($(CarStatusEvent\ AS\ statusEvent)$)[WindowSize:15s,StepSize:5s]
|
||||
$\wedge$ AGGREGATE(statusEvent, "motorRPM", {statusEvent.relatedCar}, AVG) AS avgMotorRPM
|
||||
$\wedge$ lookup("maxMotorRPM", statusEvent.relatedCar) AS maxMotorRPM
|
||||
$\wedge$ avgMotorRPM > maxMotorRPM
|
||||
ACTION
|
||||
new CarEngineWearEvent(relatedCar=c.relatedCar, avgMotorRPM=avgMotorRPM, maxMotorRPM=maxMotorRPM)
|
||||
\end{lstlisting}
|
||||
|
||||
Übersetzt man diese CEP-Regel in einen C-SPARQL-Query, so erhält man folgende Abfrage:
|
||||
\begin{lstlisting}[label={lst:scenario_get_engine_wear},caption={Ermittlung überhöhter Motordrehzahl im Betrieb}]
|
||||
REGISTER STREAM getEngineWear AS
|
||||
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
|
||||
@ -1118,7 +1128,7 @@ CONSTRUCT {
|
||||
; car:avgMotorRPM ?avgMotorRPM
|
||||
; car:maxMotorRPM ?maxMotorRPM .
|
||||
}
|
||||
FROM STREAM <http://example.org/carSim/stream/carStream> [RANGE 3s STEP 1s]
|
||||
FROM STREAM <http://example.org/carSim/stream/carStream> [RANGE 15s STEP 5s]
|
||||
FROM <http://example.org/carSim/localDomainKnowledge>
|
||||
WHERE {
|
||||
{
|
||||
@ -1135,6 +1145,8 @@ WHERE {
|
||||
FILTER(?avgMotorRPM > ?maxMotorRPM)
|
||||
}
|
||||
\end{lstlisting}
|
||||
Auch diese Abfrage muss später in der Engine als Datenstrom registriert werden, um innerhalb von weiteren Abfragen auf die Ergebnisse dieses Queries zugreifen zu können.
|
||||
|
||||
\item \textbf{Verschleiß der Handbremse durch Fahren mit angezogener Handbremse:}
|
||||
\item \textbf{Verschleiß der Reifen durch Fahren mit zu niedrigem Reifendruck:}
|
||||
\end{itemize}
|
||||
|
Loading…
Reference in New Issue
Block a user