@prefix rdf: . @prefix rdfs: . @prefix mf: . @prefix qt: . @prefix dawgt: . <> rdf:type mf:Manifest ; rdfs:label "Algebra" ; mf:entries ( <#nested-opt-1> <#nested-opt-2> <#opt-filter-1> <#opt-filter-2> <#opt-filter-3> <#filter-place-1> <#filter-place-2> <#filter-place-3> <#filter-nested-1> <#filter-nested-2> <#filter-scope-1> <#join-scope-1> ) . <#nested-opt-1> rdf:type mf:QueryEvaluationTest ; mf:name "Nested Optionals - 1" ; dawgt:approval dawgt:Approved ; dawgt:approvedBy ; rdfs:comment """Nested-optionals with a shared variable that does not appear in the middle pattern (a not well-formed query pattern as per "Semantics and Complexity" of SPARQL""" ; mf:action [ qt:query ; qt:data ] ; mf:result . <#nested-opt-2> rdf:type mf:QueryEvaluationTest ; mf:name "Nested Optionals - 2" ; rdfs:comment "OPTIONALs parse in a left-associative manner" ; dawgt:approval dawgt:Approved ; dawgt:approvedBy ; mf:action [ qt:query ; qt:data ] ; mf:result . <#opt-filter-1> rdf:type mf:QueryEvaluationTest ; mf:name "Optional-filter - 1" ; rdfs:comment "A FILTER inside an OPTIONAL can reference a variable bound in the required part of the OPTIONAL" ; dawgt:approval dawgt:Approved ; dawgt:approvedBy ; mf:action [ qt:query ; qt:data ] ; mf:result . <#opt-filter-2> rdf:type mf:QueryEvaluationTest ; mf:name "Optional-filter - 2 filters" ; rdfs:comment "FILTERs inside an OPTIONAL can refer to variables from both the required and optional parts of the construct." ; dawgt:approval dawgt:Approved ; dawgt:approvedBy ; mf:action [ qt:query ; qt:data ] ; mf:result . <#opt-filter-3> rdf:type mf:QueryEvaluationTest ; mf:name "Optional-filter - scope of variable" ; rdfs:comment "FILTERs in an OPTIONAL do not extend to variables bound outside of the LeftJoin(...) operation" ; dawgt:approval dawgt:Approved ; dawgt:approvedBy ; mf:action [ qt:query ; qt:data ] ; mf:result . <#filter-place-1> rdf:type mf:QueryEvaluationTest ; mf:name "Filter-placement - 1" ; rdfs:comment "FILTER placed after the triple pattern that contains the variable tested" ; dawgt:approval dawgt:Approved ; dawgt:approvedBy ; mf:action [ qt:query ; qt:data ] ; mf:result . <#filter-place-2> rdf:type mf:QueryEvaluationTest ; mf:name "Filter-placement - 2" ; rdfs:comment "FILTERs are scoped to the nearest enclosing group - placement within that group does not matter" ; dawgt:approval dawgt:Approved ; dawgt:approvedBy ; mf:action [ qt:query ; qt:data ] ; mf:result . <#filter-place-3> rdf:type mf:QueryEvaluationTest ; mf:name "Filter-placement - 3" ; rdfs:comment "FILTERs are scoped to the nearest enclosing group - placement within that group does not matter" ; dawgt:approval dawgt:Approved ; dawgt:approvedBy ; mf:action [ qt:query ; qt:data ] ; mf:result . <#filter-nested-1> rdf:type mf:QueryEvaluationTest ; mf:name "Filter-nested - 1" ; rdfs:comment "A FILTER is in scope for variables bound at the same level of the query tree" ; dawgt:approval dawgt:Approved ; dawgt:approvedBy ; mf:action [ qt:query ; qt:data ] ; mf:result . <#filter-nested-2> rdf:type mf:QueryEvaluationTest ; mf:name "Filter-nested - 2" ; rdfs:comment "A FILTER in a group { ... } cannot see variables bound outside that group" ; dawgt:approval dawgt:Approved ; dawgt:approvedBy ; mf:action [ qt:query ; qt:data ] ; mf:result . <#filter-scope-1> rdf:type mf:QueryEvaluationTest ; mf:name "Filter-scope - 1" ; rdfs:comment "FILTERs in an OPTIONAL do not extend to variables bound outside of the LeftJoin(...) operation" ; dawgt:approval dawgt:Approved ; dawgt:approvedBy ; mf:action [ qt:query ; qt:data ] ; mf:result . <#join-scope-1> rdf:type mf:QueryEvaluationTest ; mf:name "Join scope - 1" ; rdfs:comment "Variables have query scope." ; dawgt:approval dawgt:Approved ; dawgt:approvedBy ; mf:action [ qt:query ; qt:data ] ; mf:result .