2016-06-26 17 views
-2

Ich versuche, wenn es zu überprüfen, sind zwei Personen durch die Beziehung B verbunden und haben Beziehung c mit dem gleichen ElementWas ist mit der SPARQL-Abfrage falsch?

ASK {

{?x :B ?y}filter not exist{?x :c ?t1, ?y :c ?t2 ,t1 ≠ t2 } 

} 
+0

Wenn Sie wollen, dass sie Beziehung c haben, warum "existiert nicht"? Sobald dies klar ist, müssen Sie nur noch die Syntax korrigieren: Die Kommas sind dort nicht OK, und wenn Sie immer noch herausfiltern wollen, sollte es 'filter not exists' sein. –

+0

@IvoVelitchkov so ist es akzeptabel, t1 ≠ t2 in den Filter zu setzen? Was ist die Syntax von nicht gleich? wie man es schreibt – hala

+1

Es ist '! ='. Ich würde vorschlagen, dass Sie beziehen sich auf die [SPARQL-Spezifikation] (https://www.w3.org/TR/sparql11-query/) mindestens für die grundlegende Syntax –

Antwort

2

Wenn ich richtig verstanden, die Abfrage Sie versuchen, schreiben sollte wie folgt aussehen:

ASK{ 
?x :B ?y; 
:c ?t1 . 
?y :c ?t2 . 
filter (t1 != t2) 
} 

Bitte beachten Sie, dass bei einer solchen Abfrage, x und y sein könnte genauso gut Klassen und nicht Einzelpersonen.

+0

gab es einen Fehler in die Abfrage ist es t1 "? x: c? t1" statt t2, korrigiere ich es – hala