diff --git a/Bachelorarbeit.tex b/Bachelorarbeit.tex index edba2c9..dc97c1e 100644 --- a/Bachelorarbeit.tex +++ b/Bachelorarbeit.tex @@ -997,7 +997,7 @@ Die Details der technischen Implementierung von Reasoning in der C-SPARQL-Engine \chapter{Umsetzung des Beispielszenarios}\label{cpt:csparql_in_practice} Nachdem die Umsetzung von CEP-Regeln in C-SPARQL im vorherigen Kapitel erläutert wurde, soll nun das in Kapitel~\ref{cpt:scenario} angerissene Beispielszenario der Autoverleihgesellschaft umgesetzt werden. Ausgangspunkt hierfür sind zwei gegebene RDF-Ereignisdatenströme: -\paragraph{Ereignisstrom der PKW} +\paragraph{PKW-Ereignisstrom} Dieser Ereignisdatenstrom übermittelt alle Ereignisse, die von den PKW aus dem Fuhrpark der Verleihgesellschaft ausgehen. Jedes einzelne Ereignis bezieht sich dabei auf einen konkreten PKW. Die folgenden Ereignistypen werden durch den Datenstrom übermittelt: \begin{itemize} \item \textbf{\texttt{CarStatusEvent}}: Wird von jedem PKW in regelmäßigen Abständen ausgelöst und übermittelt ein Paket von Statuswerten. Neben dem Attribut \texttt{relatedCar}, welches auf den jeweiligen PKW verweist, werden die Attribute \texttt{motorOn}, \texttt{motorRPM}, \texttt{speed}, \texttt{handbrakeEngaged}, \texttt{locked} und \texttt{tirePressure\{1-4\}} für die Beschreibung der Statuswerte verwendet. Da dieses der Ereignistyp mit den meisten Attributen ist, wird im Folgenden ein Beispiel für eine solche Ereignisinstanz gezeigt: @@ -1020,16 +1020,45 @@ Dieser Ereignisdatenstrom übermittelt alle Ereignisse, die von den PKW aus dem \item \textbf{\texttt{CarAirbagTriggeredEvent}}: Wurde an einem PKW der Airbag ausgelöst, so wird ein Ereignis dieses Typen ausgelöst, um auf diesen Umstand aufmerksam zu machen. Auch hier wird lediglich der PKW über \texttt{relatedCar} angegeben. \end{itemize} -\paragraph{DriverStream} +\paragraph{Kundenereignisstrom} Die Ereignisse in diesem Datenstrom beziehen sich ausschließlich auf Interaktionen von Kunden mit den PKW. Somit werden durh diesen Ereignisdatenstrom nur Ereignisse dieser zwei Typen übertragen: \begin{itemize} \item \texttt{CarTakenEvent}: Wird ausgelöst, wenn ein Kunde einen PKW ausleiht. Ein solches Ereignis verweist über \texttt{relatedCar} auf den geliehenen PKW und über \texttt{relatedUser} auf den entsprechenden Kunden. \item \texttt{CarReturnedEvent}: Analog zum Ereignistypen \texttt{CarTakenEvent} wird dieses Ereignis ausgelöst, wenn ein Kunde sein geliehenes Fahrzeug wieder zurückgibt. Ebenso wie das \texttt{CarTakenEvent} wird über \texttt{relatedCar} auf den entsprechenden PKW verwiesen und über \texttt{relatedUser} auf den Kunden. \end{itemize} + +\section{Lokales Domänenwissen} +Neben den beiden Ereignisdatenströmen existiert eine lokale Datenbasis, in der neben einer Kartei mit Kundendaten auch Informationen über die vorhandenen PKW vorgehalten werden. Diese beinhalten auch Angaben über das Modell jedes einzelnen PKW, sowie technische Daten der Modelle, wie zum Beispiel der empfohlene Reifendruck oder die maximal zulässige Motordrehzahl im Betrieb. +Es folgt ein gekürzter Auszug aus der lokalen Datenbasis: +\begin{lstlisting} +:Driver#0 rdf:type car:Driver +:Driver#0 car:hasName "Max Mustermann"^^xsd:string . +:Driver#0 car:hasPhoneNumber "+49 111 123456789"^^xsd:string . +:Driver#0 car:hasDriverLicense "B"^^xsd:string . + +:Car#2 rdf:type car:Car . +:Car#2 car:isCarModel :CarModel#1 . + +:CarModel#1 rdf:type car:CarModel . +:CarModel#1 car:minimumMotorRPM 800^^xsd:integer . +:CarModel#1 car:maximumMotorRPM 1900^^xsd:integer . +:CarModel#1 car:minimumTirePressure 35^^xsd:integer . +:CarModel#1 car:maximumTirePressure 38^^xsd:integer . +:CarModel#1 car:requiresDriverLicense "B"^^xsd:string . +\end{lstlisting} + + \section{Umsetzung der Anforderungen} Um diese Ereignisdatenströme nun zu Verarbeiten, werden die Anforderungen des Szenarios aus Kapitel~\ref{cpt:scenario} zunächst genauer betrachtet und CEP-Regeln für sie formuliert. +\paragraph{Erkennung von Verschleiß am Fahrzeug} Um durch Nutzung bedingten Verschleiß an den PKW feststellen zu können, lohnt sich ein Blick auf die \texttt{CarStatusEvent}s, die ein PKW periodisch auslöst. So lassen sich gleich mehrere Arten von Verschleiß hieraus ermitteln: +\begin{itemize} +\item Verschleiß des Motors durch starkes Beschleunigen, sowie Fahrt mit überhöhter Motordrehzahl +\item Verschleiß der Handbremse durch Fahren mit angezogener Handbremse +\item Verschleiß der Bremsen durch häufige, sehr starke Bremsmanöver +\item Verschleiß der Reifen durch Fahren mit zu niedrigem Reifendruck +\end{itemize}