title: The mechanism of "FILTER NOT EXISTS" in SPARQL
body: <p>Assuming the triples are following:</p>
  <pre><code>@prefix  :       &lt;http://example/&gt; .
  @prefix  rdf:    &lt;http://www.w3.org/1999/02/22-rdf-syntax-ns#&gt; .
  @prefix  foaf:   &lt;http://xmlns.com/foaf/0.1/&gt; .
  
  :alice  rdf:type   foaf:Person .
  :alice  foaf:name  &quot;Alice&quot; .
  :bob    rdf:type   foaf:Person .  
  </code></pre>
  <p>and then we perform 3 queries based on SPARQL 1.1:</p>
  <p>Q1:</p>
  <pre><code>SELECT ?s 
  WHERE 
  {
      ?s ?p ?o .
      FILTER NOT EXISTS { ?s foaf:name ?y }
  } 
  </code></pre>
  <p>Q2:</p>
  <pre><code>SELECT ?s 
  WHERE 
  {
      ?s ?p ?o .
      FILTER NOT EXISTS { ?x foaf:name ?y }
  } 
  </code></pre>
  <p>Q3:</p>
  <pre><code>SELECT ?s 
  WHERE 
  {
      ?s ?p ?o .
      FILTER NOT EXISTS { ?x foaf:mailbox ?y }
  } 
  </code></pre>
  <p>These three queries return three different solutions. Could anyone help me figure out why Q2 evaluates to no query solution in contrast to Q1 and Q3? Many thanks in advance :)</p>