@prefix air: . @prefix tami: . @prefix rein: . @prefix rdfs: . @prefix owl: . @prefix foaf: . @prefix log: . @prefix : <#> . @forAll :EVENT, :DATA, :REQUESTER, :FORMULA, :FRIEND, :FRIENDFORMULA . :JulietteLocationDissemPolicy a air:Policy ; air:rule [ # air:variable :EVENT, :DATA, :REQUESTER ; rdfs:label "Juliette's Location Dissemination Rule" ; air:pattern { :EVENT a rein:Request ; tami:data :DATA ; tami:recipient :REQUESTER . } ; air:description (:REQUESTER " is a friend of Juliette requesting " :DATA) ; air:assert { :EVENT air:compliant-with :JulietteLocationDissemPolicy . } ] . :JulietteFOAFDissemPolicy a air:Policy ; air:rule [ rdfs:label "Juliette's Friend-of-a-Friend Rule" ; air:pattern { :EVENT a rein:Request ; tami:data :DATA ; tami:recipient :REQUESTER . log:semantics :FORMULA . :FORMULA log:includes { foaf:knows :REQUESTER . } . } ; air:description (:REQUESTER " is a friend of Juliette requesting " :DATA) ; air:assert { :EVENT air:compliant-with :JulietteFOAFDissemPolicy . } ; air:alt [ air:rule [ air:pattern { :EVENT a rein:Request ; tami:data :DATA ; tami:recipient :REQUESTER . log:semantics :FORMULA . :FORMULA log:includes { foaf:knows :FRIEND . } . :FRIEND log:semantics :FRIENDFORMULA . :FRIENDFORMULA log:includes { :FRIEND foaf:knows :REQUESTER . } . } ; air:description (:REQUESTER " is a friend of " :FRIEND ", who is a friend of Juliette, requesting " :DATA) ; air:assert { :EVENT air:compliant-with :JulietteFOAFDissemPolicy . } ] ] ] . :JulietteSpammingDissemPolicy a air:Policy ; air:rule [ rdfs:label "Juliette's Friend-of-a-Friend Spamming Rule" ; air:pattern { :EVENT a rein:Request ; tami:data :DATA ; tami:recipient :REQUESTER . :REQUESTER log:semantics :FORMULA . :FORMULA log:includes { :REQUESTER foaf:knows . } . } ; air:description (:REQUESTER " has Juliette as a friend requesting " :DATA) ; air:assert { :EVENT air:compliant-with :JulietteSpammingDissemPolicy . } ] .