AIR: A Policy Language Enabling Dependency Tracking for Policy Explanation

Ian Jacobi

23 October 2009

Overview

AIR Policy Language

The AIR Reasoner

The Rete Production Rule System


Rete reasoner

Dependency Tracking

"The angles of a triangle
 sum to more than 180 degrees"
  -> "Given a point and line,
         no parallel line exists"
    -> Riemann

"The angles of a triangle
 sum to less than 180 degrees"
  -> "Given a point and line,
         infinite parallel lines exist"
    -> Lobachevsky

Johnny asks: "What do the angles
              of a triangle sum to?"
      

AIR specifications


AIR ontology
:Policy1 a air:Policy;
    air:rule [
        air:if { ... };
        air:then [ air:assert [ air:statement { ... } ] ];
        air:else [ air:rule [ ... ] ]
    ].

Example 1:

:CaptainMcCluskey a p:PoliceOfficer .
:VitoCorleoneRapSheet a p:CriminalRecord .
:VirgilSollozoPersonalRequest a p:PersonalRequest .

:request1972 a p:RecordRequest ;
    p:record :VitoCorleoneRapSheet ;
    p:requester :CaptainMcCluskey ;
    p:purpose :VirgilSollozzoPersonalRequest .

:DickTracy a p:PoliceOfficer .
:AlphonseCapriceRapSheet a p:CriminalRecord .
:DickTracyAttemptedMurderInvestigation a p:ActiveCriminalInvestigation .

:request1931 a p:RecordRequest ;
    p:record :AlphonseCapriceRapSheet ;
    p:requester :DickTracy ;
    p:purpose :DickTracyAttemptedMurderInvestigation .
      

Example 1:

@forAll :A, :P, :R.

:Policy a air:Policy;
    air:rule :Policy_1 .

:Policy_1 a air:Belief-rule ;
    air:if { :A a p:RecordRequest ;
                p:record :R ;
                p:requester :P .
             :R a p:CriminalRecord . } ;
    air:then [ air:rule :Policy_1a ] .

:Policy_1a a air:Belief-rule ;
    air:if { :P a p:PoliceOfficer . } ;
    air:then [
        air:assert [ air:statement { :A air:compliant-with :Policy . } ];
        air:description (:P " is a police officer requesting criminal record " :R) ];
    air:else [
        air:assert [ air:statement { :A air:non-compliant-with :Policy . } ];
        air:description (:P " is requesting criminal record " :R " but is not a police officer") ] .
      

Example 2:

@forAll :A, :P, :R, :I.

:Policy a air:Policy;
    air:rule :Policy_1 .

:Policy_1 a air:Belief-rule ;
    air:if { :A a p:RecordRequest ;
                p:record :R ;
                p:requester :P ;
                p:purpose :I ;
             :R a p:CriminalRecord . } ;
    air:then [ air:rule :Policy_1a ] .

:Policy_1a a air:Belief-rule ;
    air:if { :P a p:PoliceOfficer .
             :I a p:ActiveCriminalInvestigation . } ;
    air:then [
        air:assert [ air:statement { :A air:compliant-with :Policy . } ];
        air:description (:P " is a police officer requesting criminal record " :R
                         " pertaining to an active criminal investigation " :I) ];
    air:else [
        air:assert [ air:statement { :A air:non-compliant-with :Policy . } ];
        air:description (:P " is either not a police officer or is a police officer "
                         "requesting criminal record " :R " not in relation to an "
                         "active criminal investigation") ] .
      

Future Work

Questions?

Redistribution License

Creative Commons License