## Filter-placement - 2 (data-r2/algebra/filter-placement-2.rq) ##
PREFIX :
SELECT ?v
{
FILTER (?v = 2)
?s :p ?v .
}
Join(BGP(),BGP((?s, rdflib.URIRef('http://example/p'), ?v)))
##########################
## Filter-nested - 1 (data-r2/algebra/filter-nested-1.rq) ##
PREFIX :
SELECT ?v
{ :x :p ?v . FILTER(?v = 1) }
BGP((rdflib.URIRef('http://example/x'), rdflib.URIRef('http://example/p'), ?v))
#######################
## Filter-placement - 3 (data-r2/algebra/filter-placement-3.rq) ##
PREFIX :
SELECT ?v ?w
{
FILTER (?v = 2)
FILTER (?w = 3)
?s :p ?v .
?s :q ?w .
}
Join(Join(BGP(),BGP()),BGP((?s, rdflib.URIRef('http://example/p'), ?v),(?s, rdflib.URIRef('http://example/q'), ?w)))
##########################
## Filter-scope - 1 (data-r2/algebra/filter-scope-1.rq) ##
PREFIX :
SELECT *
{
:x :p ?v .
{ :x :q ?w
OPTIONAL { :x :p ?v2 FILTER(?v = 1) }
}
}
BGP((rdflib.URIRef('http://example/x'), rdflib.URIRef('http://example/p'), ?v))
######################
## Optional-filter - scope of variable (data-r2/algebra/opt-filter-3.rq) ##
PREFIX :
SELECT *
{
:x :p ?v .
{ :x :q ?w
# ?v is not in scope so ?v2 never set
OPTIONAL { :x :p ?v2 FILTER(?v = 1) }
}
}
BGP((rdflib.URIRef('http://example/x'), rdflib.URIRef('http://example/p'), ?v))
#########################################
## Filter-placement - 1 (data-r2/algebra/filter-placement-1.rq) ##
PREFIX :
SELECT ?v
{
?s :p ?v .
FILTER (?v = 2)
}
BGP((?s, rdflib.URIRef('http://example/p'), ?v))
##########################
## Optional-filter - 2 filters (data-r2/algebra/opt-filter-2.rq) ##
PREFIX :
SELECT *
{
?x :p ?v .
OPTIONAL
{
?y :q ?w .
FILTER(?v=2)
FILTER(?w=3)
}
}
LeftJoin(BGP((?x, rdflib.URIRef('http://example/p'), ?v)),Join(BGP((?y, rdflib.URIRef('http://example/q'), ?w)),BGP()))
#################################
## Join scope - 1 (data-r2/algebra/var-scope-join-1.rq) ##
PREFIX :
SELECT *
{
?X :name "paul"
{?Y :name "george" . OPTIONAL { ?X :email ?Z } }
}
BGP((?X, rdflib.URIRef('http://example/name'), rdflib.Literal('paul', lang=None, datatype=None)))
####################
## Filter-nested - 2 (data-r2/algebra/filter-nested-2.rq) ##
PREFIX :
SELECT ?v
{ :x :p ?v . { FILTER(?v = 1) } }
BGP((rdflib.URIRef('http://example/x'), rdflib.URIRef('http://example/p'), ?v))
#######################
## Nested Optionals - 2 (data-r2/algebra/two-nested-opt-alt.rq) ##
PREFIX :
## The nested optional example, rewritten to a form that is the same
## for the SPARQL algebra and the declarative semantics.
SELECT *
{
:x1 :p ?v .
OPTIONAL { :x3 :q ?w }
OPTIONAL { :x3 :q ?w . :x2 :p ?v }
}
LeftJoin(LeftJoin(BGP((rdflib.URIRef('http://example/x1'), rdflib.URIRef('http://example/p'), ?v)),BGP((rdflib.URIRef('http://example/x3'), rdflib.URIRef('http://example/q'), ?w))),Join(BGP((rdflib.URIRef('http://example/x3'), rdflib.URIRef('http://example/q'), ?w)),BGP((rdflib.URIRef('http://example/x2'), rdflib.URIRef('http://example/p'), ?v))))
##########################
## Optional-filter - 1 (data-r2/algebra/opt-filter-1.rq) ##
PREFIX :
SELECT *
{
?x :p ?v .
OPTIONAL
{
?y :q ?w .
FILTER(?v=2)
}
}
LeftJoin(BGP((?x, rdflib.URIRef('http://example/p'), ?v)),BGP((?y, rdflib.URIRef('http://example/q'), ?w)))
#########################
## Nested Optionals - 1 (data-r2/algebra/two-nested-opt.rq) ##
PREFIX :
SELECT *
{
:x1 :p ?v .
OPTIONAL
{
:x3 :q ?w .
OPTIONAL { :x2 :p ?v }
}
}
LeftJoin(BGP((rdflib.URIRef('http://example/x1'), rdflib.URIRef('http://example/p'), ?v)),LeftJoin(BGP((rdflib.URIRef('http://example/x3'), rdflib.URIRef('http://example/q'), ?w)),BGP((rdflib.URIRef('http://example/x2'), rdflib.URIRef('http://example/p'), ?v))))
##########################