2016-04-19 19 views
2

Dies ist die Abfrage und das Ergebnis:Warum Filter in diesem Kontext nicht funktioniert?

enter image description here

Wie Sie sehen, ich bin die Benutzer, die bo:ania sind Ausfiltern, also warum erscheinen sie noch?

Allerdings, wenn ich die widecard entfernen und wählen Sie einfach die Benutzer ?user, hat bo:ania nicht

enter image description here

erscheint ich nicht ein minimales Daten Beispiel vorsah, denn dies ist eine Frage, wie Filter und Platzhalter arbeiten, nicht über ein Problem beim Extrahieren einiger Daten aus einem Datensatz. Wenn Sie jedoch ein Minimum an Daten benötigen, bin ich mehr als glücklich, es zur Verfügung zu stellen.

+0

off-topic: Ich glaube, Sie Wildcard bedeuten? – AKSW

Antwort

5

?specificUser ist an bo:ania durch Ihre VALUES Anweisung gebunden. ?user ist eine ganz andere Bindung, die durch die anderen Dreifachmuster definiert ist. Ihr FILTER sagt, die Ergebnisse herauszufiltern, wo ?user = bo:ania, und es scheint, das richtig zu tun, zu sehen, dass ?user in keinem der Ergebnisse an bo:ania gebunden ist.

Übrigens, in diesem Fall müssen Sie VALUES nicht verwenden, es sei denn, Sie möchten mehrere Werte überprüfen. Wenn es nur den einen Wert, dann wird die folgende funktionieren würde, und haben nicht fragen, warum auf bo:ania die Bindung in der Ergebnismenge enthalten ist:

SELECT * 
WHERE { 
    ?user a rs:user . 
    ?user rs:hasRated ?rating . 
    ?rating rs:hasRatingDate ?ratngDate . 
    FILTER (?ratingDates >= (now() -"P10000F"^^xsd:duration)) 
    FILTER (?user != bo:ania) 
} 
+0

Auch wenn nur ein Wert zu verwenden ist, ** Werte ** Kann eine Quelle von Tippfehlern reduzieren, indem der IRI nur einmal angezeigt wird, und kann die Projektion vereinfachen, da der Wert an eine Variable gebunden ist. –

+0

Ich sehe nichts davon in der obigen Abfrage (?) Im allgemeinen Fall sehe ich keinen Unterschied zwischen 'VALUES' mit einer Bindung und' BIND', anders als Benutzerpräferenz. – scotthenninger

+0

@JoshuaTaylor ja Werte speichern mich Töne von Tippfehlern, ich benutze es immer, du hast mir das gelehrt, vielen Dank –

Verwandte Themen