Im optionalen WHERE-Clause lassen sich mit Booleschen Ausdrücken zusätzliche Einschränkungen machen. Dabei gibt es natürlich die gewohnten Konstanten TRUE und FALSE. Folgende Abfrage gibt z.B. niemals Werte zurück:
Wertegleichheit überprüft man mit dem "="-Operator, Ungleichheit mit "!=".
Für numerische Vergleiche gibt es außerdem "<",">", "<=" und ">=".
Für Strings gibt es den praktischen "LIKE"-Operator, der außerdem den "*"-Platzhalter für beliebig viele Zeichen unterstützt. Normalerweise werden Groß-und Kleinbuchstaben dabei unterschieden, will man dies nicht, verwendet man die Option "IGNORE CASE".
Beispiele:
Wie üblich gibt es die drei Operatoren NOT, AND und OR. Bei zusammengesetzten Ausdrücken hat NOT die höchste Priorität, OR die niedrigste. Natürlich kann man Klammern verwenden.
Um Literale, Resourcen und URIs zu identifizieren, gibt es die eingebauten Funktionen isResource(), isLiteral() und isURI(), beispielsweise findet
SELECT V FROM {R} prop {V} WHERE isURI(V) alle benutzten URIs.
Um Bedingungen an optionale Pfade zu stellen, muss man kleine WHERE-Blöcke direkt in die optionalen Pfade mit einbauen:
Will man nicht gleich alle Datensätze bekommen, sondern nur z.B. die ersten 50, schreibt man einfach LIMIT 50. Mittels OFFSET x kann man die ersten x Datensätze auslassen, d.h. die nächsten 50 bekommt man nun mit LIMIT 50 OFFSET 50, danach LIMIT 50 OFFSET 100 usw.
Mit USING NAMESPACE kann man beliebig viele Namensabkürzungen definieren, die in der restlichen Abfrage dann für abgekürzte URIs verwendet werden können. Beispiel:
Präfix | Namespace |
---|---|
rdf | http://www.w3.org/1999/02/22-rdf-syntax-ns# |
rdfs | http://www.w3.org/2000/01/rdf-schema# |
xsd | http://www.w3.org/2001/XMLSchema# |
owl | http://www.w3.org/2002/07/owl# |
serql | http://www.openrdf.org/schema/serql# |