diff --git a/Bachelorarbeit.tex b/Bachelorarbeit.tex index 79042dd..ba46b11 100644 --- a/Bachelorarbeit.tex +++ b/Bachelorarbeit.tex @@ -706,10 +706,19 @@ f:timestamp(?s,rdf:type,) \end{lstlisting} \item \textbf{Berechnungsergebnisse speichern}: Um einen Ausdruck in einer lokalen Variable zu speichern wird die Anweisung \texttt{BIND(\emph{ausdruck} AS \emph{?var})} verwendet. Ein Ausdruck kann nahezu alles sein, von einer mathematischen Berechnung wie \texttt{(?i+1)/2} bis hin zu dem Aufruf der \texttt{f:timestamp(?s,?p,?o)}-Funktion. Der folgende Ausdruck demonstriert das Abspeichern der Differenz zwischen den Zeitstempeln zweier Tripel in der Variable \texttt{?difference}: \begin{lstlisting} -BIND((f:timestamp(?a,?b,?c) - f:timestamp(?x,?y,?z)) AS ?difference) +BIND(f:timestamp(?a,?b,?c) - f:timestamp(?x,?y,?z)) AS ?difference) \end{lstlisting} -\item \textbf{Eventuell vorhandene Tripel selektieren}: Manchmal kann man zur Zeit der Formulierung einer Abfrage nicht mit Gewissheit sagen, ob bestimmte Muster von Tripeln \texttt{OPTIONAL \{ ... \}} -\item \textbf{Variablen auf Werte prüfen}: \texttt{ISBOUND(?var)} +\item \textbf{Eventuell vorhandene Tripel selektieren}: Manchmal kann man zur Zeit der Formulierung einer Abfrage nicht mit vollständiger Gewissheit eine Aussage darüber treffen, ob bestimmte Muster von Tripeln in den zur Verfügung stehenden Daten enthalten sind. In diesem Fall hilft das Konstrukt \texttt{OPTIONAL \{ ... \}} weiter: Es erlaubt die Selektion von Tripeln, wobei der Fall, dass keine Tripel selektiert werden konnten keinen negativen Einfluss auf die restliche Abfrage hat. Möchte man beispielsweise das Tripelmuster \texttt{?a :b :c} selektieren und zusätzlich --- falls vorhanden --- die Tripel für das Muster \texttt{?d :e :f}, so kann dies in der \texttt{WHERE}-Klausel wie folgt notiert werden: +\begin{lstlisting} +WHERE { + ?a :b :c . + OPTIONAL { + ?d :e :f + } +} +\end{lstlisting} +Wurde durch die Abfrage kein Tripel für \texttt{?d :e :f} gefunden, so wird dennoch das Ergebnis für \texttt{?a :b :c} zurückgegeben. +\item \textbf{Variablen auf Werte prüfen}: Hat man das Konstrukt \texttt{OPTIONAL \{ ... \}} verwendet, so stellt sich innerhalb der restlichen Abfrage oft die Frage, ob nun ein Ergebnis vorliegt oder nicht. Über die Abfrage \texttt{ISBOUND(?var)} kann geprüft werden, ob die angegebene Variable --- in diesem Fall \texttt{?var} --- mit einem Wert versehen ist oder nicht. \item \textbf{Abwesenheit von Tripeln erkennen}: \texttt{FILTER NOT EXISTS \{ ... \}} \item \textbf{Gefundene Tripelmenge einschränken}: \texttt{FILTER()}