# Auto-generated AIR chaining policy. # Policy is default non-compliant. Patterns assert compliance. @prefix air: . @prefix log: . @prefix math: . @prefix s: . @prefix : <>. # User-defined namespaces: @prefix ex: . @forAll :P, :Q, :T, :U, :V, :W, :Tx. @forAll :T0, :U0, :V0. # Variables for ex:a @forAll :T1, :U1, :V1. # Variables for ex:b :chaining-policy a air:Policy; air:label "If retrieving a must also retrieve b or fails."; air:rule :chaining-policy-check. :chaining-policy-check a air:BeliefRule; air:label "chaining-policy query check"; air:pattern { :Q a s:SPARQLQuery; s:retrieve :P; s:clause :W. }; air:description ("Make sure this is a query."); # Goes to the first rule. If there are no attributes, # simply go to the default rule. air:rule :chaining-policy-rule-0. :chaining-policy-rule-0 a air:BeliefRule; air:label "chaining-policy ex:a presence check"; air:pattern { # if RETRIEVE, or alternately, not USE :P s:var :V0. :W s:triplePattern :T0. :T0 log:includes { [] ex:a :V0 } . }; air:description ("Chaining has found the first pattern RETRIEVE in " :T0 ); # There are more policies, go to the next policy. air:rule :chaining-policy-rule-1 . :chaining-policy-rule-1 a air:BeliefRule; air:label "chaining-policy ex:b presence check"; air:pattern { # if RETRIEVE, or alternately, not USE :P s:var :V1. :W s:triplePattern :T1. :T1 log:includes { [] ex:b :V1 } . }; air:description ("A restriction on the RETRIEVE of ex:b, violated by " :T1 ); air:assert { :Q air:compliant-with :chaining-policy } ; # No more policies, go to the default case. air:alt [ air:rule :chaining-policy-default ] . :chaining-policy-default a air:BeliefRule; air:label "chaining-policy default rule"; air:pattern { # Empty search. }; air:description ("Chaining failed to find any constraints. This is the default assertion."); air:assert { :Q air:non-compliant-with :chaining-policy } . #ends