- From: Andy Seaborne <andy@apache.org>
- Date: Wed, 30 Nov 2016 12:00:33 +0000
- To: public-sparql-exists@w3.org
Some more interesting examples, exploring composition and filters.
Composition is important because the mechanisms here are related to what
SHACL calls pre-binding and is provided in various ways in most
toolkits. Also c.f. SQL Correlated subqueries
The FILTER tests are "?a = ?b" on URIs to make tests just about RDFterms.
The real world would include FILTER ( ?x < ?y ) for literals ?x and ?y.
Andy
Data:
Graph
:s :p :v .
:t :r :w .
-----------------------------------
Example 6:
SELECT ?x WHERE {
?x :p ?v .
FILTER ( EXISTS {
?x :p :v .
MINUS { ?x :p ?w . FILTER(?w = ?v) } # or sameTerm()
} )
}
Specification { { (x,:s) } }
Proposal A { }
Proposal B { { (x,:s) } }
Expected { { (x,:s) } }
-----------------------------------
Example 7:
SELECT ?x WHERE {
:s :p ?v .
FILTER ( EXISTS {
:s :p ?v . FILTER ( ?w = ?v )
}
Specification { { (x,:s) } }
Proposal A { { (x,:s) } }
Proposal B { { (x,:s) } }
Expected { { (x,:s) } }
-----------------------------------
Example 8:
SELECT ?x WHERE {
:s :p ?v .
FILTER ( EXISTS {
{ :s :p ?w . FILTER ( ?w = ?v ) }
UNION
{ :s :p ?w . FILTER ( ?w = ?v ) }
}
}
Specification { { (x,:s) } }
Proposal A { }
Proposal B { { (x,:s) } }
Expected { { (x,:s) } }
-----------------------------------
-----------------------------------
Data:
GRAPH :g {
:s :p :v .
:t :r :w .
}
-----------------------------------
Example 9:
see example 7
PREFIX : <http://example/>
SELECT ?x WHERE {
GRAPH :g {
?x :p ?v .
FILTER ( EXISTS {
?x :p ?w. FILTER ( ?w = ?v )
} )
}
}
Specification { { (x,:s) } }
Proposal A { { (x,:s) } }
Proposal B { { (x,:s) } }
Expected { { (x,:s) } }
-----------------------------------
Example 10:
SELECT ?x WHERE {
?x :p ?v .
FILTER ( EXISTS {
GRAPH :g {
?x :p ?v
}
} )
}
Specification { { (x,:s) } }
Proposal A { { (x,:s) } }
Proposal B { { (x,:s) } }
Expected { { (x,:s) } }
-----------------------------------
Example 11:
SELECT ?x WHERE {
?x :p ?v .
FILTER ( EXISTS {
GRAPH :g {
?x :p ?w. FILTER ( ?w = ?v )
} )
}
}
Specification { { (x,:s) } }
Proposal A { }
Proposal B { { (x,:s) } }
Expected { { (x,:s) } }
Received on Wednesday, 30 November 2016 12:01:08 UTC