## 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)))) ##########################