@prefix rdf: . @prefix : . @prefix rdfs: . @prefix mf: . @prefix qt: . @prefix dawgt: . <> rdf:type mf:Manifest ; rdfs:comment "OPTIONAL with inner and outer FILTERs" ; mf:entries (:dawg-optional-filter-001 :dawg-optional-filter-002 :dawg-optional-filter-003 :dawg-optional-filter-004 :dawg-optional-filter-005-simplified :dawg-optional-filter-005-not-simplified). :dawg-optional-filter-001 a mf:QueryEvaluationTest ; mf:name "OPTIONAL-FILTER" ; rdfs:comment "FILTER inside an OPTIONAL does not block an entire solution" ; mf:action [ qt:query ; qt:data ] ; mf:result ; dawgt:approvedBy ; dawgt:approval dawgt:Approved . :dawg-optional-filter-002 a mf:QueryEvaluationTest ; mf:name "OPTIONAL - Outer FILTER" ; rdfs:comment "FILTER outside an OPTIONAL tests bound and unbound variables" ; mf:action [ qt:query ; qt:data ] ; mf:result ; dawgt:approvedBy ; dawgt:approval dawgt:Approved . :dawg-optional-filter-003 a mf:QueryEvaluationTest ; mf:name "OPTIONAL - Outer FILTER with BOUND" ; rdfs:comment "Use !bound to only run outer FILTERs against variables bound in an OPTIONAL" ; mf:action [ qt:query ; qt:data ] ; mf:result ; dawgt:approvedBy ; dawgt:approval dawgt:Approved . :dawg-optional-filter-004 a mf:QueryEvaluationTest ; mf:name "OPTIONAL - Inner FILTER with negative EBV for outer variables" ; rdfs:comment "FILTER inside an OPTIONAL does not corrupt the entire solution" ; mf:action [ qt:query ; qt:data ] ; mf:result ; dawgt:approval dawgt:Approved ; dawgt:approvedBy . :dawg-optional-filter-005-simplified a mf:QueryEvaluationTest ; mf:name "dawg-optional-filter-005-simplified"; rdfs:comment "Double curly braces get simplified to single curly braces early on, before filters are scoped"; mf:action [ qt:query ; qt:data ] ; mf:result . :dawg-optional-filter-005-not-simplified a mf:QueryEvaluationTest ; mf:name "dawg-optional-filter-005-not-simplified"; rdfs:comment "Double curly braces do NOT get simplified to single curly braces early on, before filters are scoped"; mf:action [ qt:query ; qt:data ] ; mf:result .