AIR Ontology

From TAMI

Jump to: navigation, search

OWL

  • Version 2.0
<?xml version="1.0"?>
<!DOCTYPE owl [
 <!ENTITY air "http://dig.csail.mit.edu/TAMI/2007/amord/air#">
 <!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#">
 <!ENTITY rdfs "http://www.w3.org/2000/01/rdf-schema#">
 <!ENTITY xsd "http://www.w3.org/2001/XMLSchema#">
 <!ENTITY owl "http://www.w3.org/2002/07/owl#">
 <!ENTITY dc "http://purl.org/dc/elements/1.1/">  
]>

<rdf:RDF
 xmlns:air="http://dig.csail.mit.edu/TAMI/2007/amord/air#"
 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
 xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
 xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
 xmlns:owl="http://www.w3.org/2002/07/owl#" 
 xmlns:dc="http://purl.org/dc/elements/1.1/"
 xml:base="http://dig.csail.mit.edu/TAMI/2007/amord/air#"
>

<!--# Date: 2009-04-12 17:49:42 -0500 (Sun, 12 Apr 2009)-->

<owl:Ontology rdf:about="">
  <rdfs:label>AIR language Ontology</rdfs:label>
  <dc:creator>lkagal</dc:creator>
  <rdfs:comment>Definition of the AIR (AMORD in RDF) policy language.</rdfs:comment>
  <owl:versionInfo>2.0</owl:versionInfo>
</owl:Ontology>

<!-- AMORD components -->

<!--Actions-->
<owl:Class rdf:about="Action">
  <rdfs:label>Action</rdfs:label>
  <rdfs:comment>Abstract class of actions</rdfs:comment>
</owl:Class>

<owl:Class rdf:about="Assertion">
  <rdfs:label>Assertion</rdfs:label>
  <rdfs:comment>Generalized class of assertions</rdfs:comment>
  <rdfs:subClassOf rdf:resource="Action"/>
  <rdfs:subClassOf>
    <owl:Restriction>
      <owl:onProperty rdf:resource="statement"/>
      <owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality>
    </owl:Restriction>
  </rdfs:subClassOf>
  <rdfs:subClassOf>
    <owl:Restriction>
      <owl:onProperty rdf:resource="justification"/>
      <owl:maxCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:maxCardinality>
    </owl:Restriction>
  </rdfs:subClassOf>
</owl:Class>

<owl:Class rdf:about="Belief-assertion">
  <rdfs:label>Belief assertion</rdfs:label>
  <rdfs:subClassOf rdf:resource="Assertion"/>
</owl:Class>

<owl:Class rdf:about="Goal-assertion">
  <rdfs:label>Goal assertion</rdfs:label>
  <rdfs:subClassOf rdf:resource="Assertion"/>
</owl:Class>

<owl:Class rdf:about="Rule">
  <rdfs:label>Rule</rdfs:label>
  <rdfs:comment>Generalized class of rules</rdfs:comment>
  <rdfs:subClassOf rdf:resource="Action"/>
  <rdfs:subClassOf>
    <owl:Restriction>
	<owl:onProperty rdf:resource="if"/>
	<owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality>
    </owl:Restriction>
  </rdfs:subClassOf>
  <rdfs:subClassOf>
     <owl:Restriction>
	<owl:onProperty rdf:resource="matched-graph"/>
	<owl:maxCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:maxCardinality>
     </owl:Restriction>
  </rdfs:subClassOf>
</owl:Class>

<owl:Class rdf:about="Belief-rule">
  <rdfs:label>Belief rule</rdfs:label>
  <rdfs:subClassOf rdf:resource="Rule"/>
</owl:Class>

<owl:Class rdf:about="Goal-rule">
  <rdfs:label>Goal rule</rdfs:label>
  <rdfs:subClassOf rdf:resource="Rule"/>
</owl:Class>

<owl:Class rdf:about="Hidden-rule">
  <rdfs:label>Hidden rule</rdfs:label>
  <rdfs:comment>Special belief rule. Proof of actions taken by hidden rule application is not displayed to the User</rdfs:comment>
  <rdfs:subClassOf rdf:resource="Belief-rule"/>
</owl:Class>

<!--Action Containers -->
<!--
<owl:Class rdf:about="Action-container">
  <rdfs:comment>A collection of rules</rdfs:comment>  
  <rdfs:subClassOf rdf:resource="Container"/>  
</owl:Class>
-->

<!-- Container to Action-container -->
<owl:Class rdf:about="Action-container">
  <rdfs:label>Action container</rdfs:label>	
  <rdfs:comment>Abstract superclass of containers for actions (rules and assertion)</rdfs:comment>
</owl:Class>

<owl:Class rdf:about="Assertion-container">
  <rdfs:label>Assertion container</rdfs:label>
  <rdfs:comment></rdfs:comment>
  <rdfs:subClassOf rdf:resource="Action-container"/>
</owl:Class>

<owl:Class rdf:about="Belief-assertion-container">
  <rdfs:label>Belief assertion container</rdfs:label>
  <rdfs:comment></rdfs:comment>
  <rdfs:subClassOf rdf:resource="Assertion-container"/>
  <rdfs:subClassOf>
    <owl:Restriction>
	<owl:onProperty rdf:resource="assert"/>
	<owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality>
    </owl:Restriction>
  </rdfs:subClassOf>
</owl:Class>

<owl:Class rdf:about="Goal-assertion-container">
  <rdfs:label>Goal assertion container</rdfs:label>
  <rdfs:comment></rdfs:comment>
  <rdfs:subClassOf rdf:resource="Assertion-container"/>
  <rdfs:subClassOf>
    <owl:Restriction>
      <owl:onProperty rdf:resource="assert-goal"/>
      <owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality>
    </owl:Restriction>
  </rdfs:subClassOf>
</owl:Class>

<owl:Class rdf:about="Rule-container">
  <rdfs:label>Rule container</rdfs:label>
  <rdfs:comment></rdfs:comment>
  <rdfs:subClassOf rdf:resource="Action-container"/>
</owl:Class>

<owl:Class rdf:about="Policy">
  <rdfs:label>Policy</rdfs:label>
  <rdfs:comment>A collection of rules</rdfs:comment>  
  <rdfs:subClassOf rdf:resource="Rule-container"/>  
</owl:Class>

<owl:Class rdf:about="Nested-belief-rule-container">
  <rdfs:label>nested belief rule container</rdfs:label>
  <rdfs:comment>container for nested belief rule. contains exactly 1 belief rule</rdfs:comment>  
  <rdfs:subClassOf rdf:resource="Rule-container"/>  
    <rdfs:subClassOf>
      <owl:Restriction>
	<owl:onProperty rdf:resource="rule"/>
 	<owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
</owl:Class>

<owl:Class rdf:about="Nested-goal-rule-container">
  <rdfs:label>nested goal rule container</rdfs:label>
  <rdfs:comment>container for nested goal rule, contains exactly 1 goal rule</rdfs:comment>  
  <rdfs:subClassOf rdf:resource="Rule-container"/>  
  <rdfs:subClassOf>
     <owl:Restriction>
       <owl:onProperty rdf:resource="goal-rule"/>
       <owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality>
     </owl:Restriction>
  </rdfs:subClassOf>
</owl:Class>

<!--Justification -->

<owl:Class rdf:about="Justification">
  <rdfs:label>Justification</rdfs:label>  
  <rdfs:comment>Generalized class of justifications</rdfs:comment>  
  <rdfs:subClassOf>
     <owl:Restriction>
	<owl:onProperty rdf:resource="rule-id"/>
	<owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality>
     </owl:Restriction>
  </rdfs:subClassOf>
</owl:Class>

<owl:Class rdf:about="Default-justification">
  <rdfs:label>Default justification</rdfs:label>
  <rdfs:comment>Justification attached be default to all actions</rdfs:comment>
  <rdfs:subClassOf rdf:resource="Justification"/>
  <rdfs:subClassOf>
     <owl:Restriction>
	<owl:onProperty rdf:resource="antecedent"/>
	<owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality>
     </owl:Restriction>
  </rdfs:subClassOf>
</owl:Class>

<owl:Class rdf:about="Explicit-justification">
   <rdfs:label>Default justification</rdfs:label>
   <rdfs:comment>User defined justification of an action</rdfs:comment>
   <rdfs:subClassOf rdf:resource="Justification"/>
</owl:Class>

<!--Pattern-->

<owl:Class rdf:about="Graph">
  <rdfs:label>Graph</rdfs:label>  
  <rdfs:comment>This ought to be the (non-existent) standard graph class.</rdfs:comment>  
</owl:Class>	

<owl:Class rdf:about="Pattern">
  <rdfs:label>Pattern</rdfs:label>  
  <rdfs:comment>Pattern graph for policy rules.</rdfs:comment>  
  <rdfs:subClassOf rdf:resource="Graph"/>  
</owl:Class>

<owl:Class rdf:about="Variable">
  <rdfs:label>variable</rdfs:label>
  <rdfs:comment></rdfs:comment>
</owl:Class>

<!--# deprecated 12/8/08 - lkagal
# air:Variable a rdfs:Class;
#    rdfs:label "Variable";
#    rdfs:comment "Pattern variables for policy rules.".-->	

<!--# deprecated 12/8/08 - lkagal
# air:Contradiction a rdfs:Class;
#    rdfs:label "Contradiction". -->

<!--#deprecated
is-variable a owl:DatatypeProperty;
  rdfs:label "Variable condition"; 
  rdfs:comment "Tests whether the subject is/isn't a goal variable";
  rdfs:domain rdfs:Resource;
  rdfs:range xsd:boolean. -->

<!-- A rule consists of a pattern, an optional matched-graph variable,
# an optional justification, and zero or more actions.  Omitting the
# matched-graph variable means there's no direct reference for the
# matched graph, which often isn't needed.  Omitting the justification
# means a default justification is used, also the usual case.  Actions
# are properties that assert statements or introduce subrules. -->

<!-- Action description -->
<owl:DatatypeProperty rdf:about="description">
  <rdfs:label>Action description</rdfs:label>  
  <rdfs:comment>action description used in justification</rdfs:comment>  
  <rdfs:domain rdf:resource="Action-container"/>
</owl:DatatypeProperty>

<!-- Rule -->

<owl:ObjectProperty rdf:about="if">
  <rdfs:label>Rule pattern or condition</rdfs:label>  
  <rdfs:comment>Pattern to be matched against a universe.</rdfs:comment>  
  <rdfs:domain rdf:resource="Rule"/>
  <rdfs:range rdf:resource="Pattern"/>
</owl:ObjectProperty>

<!--range is more general than it really is. It is (Action-container - Policy)-->
<owl:ObjectProperty rdf:about="then">
  <rdfs:label>then</rdfs:label>  
  <rdfs:comment>link to action to be taken when pattern matches.</rdfs:comment>  
  <rdfs:domain rdf:resource="Rule"/>
  <rdfs:range rdf:resource="Action-container"/>
</owl:ObjectProperty>

<!--range is more general than it really is. It is (Action-container - Policy)-->
<owl:ObjectProperty rdf:about="else">
  <rdfs:label>else</rdfs:label>  
  <rdfs:comment>link to alternative action, to be taken when the pattern does not match.</rdfs:comment>  
  <rdfs:domain rdf:resource="Rule"/>
  <rdfs:range rdf:resource="Action-container"/>
</owl:ObjectProperty>

<owl:ObjectProperty rdf:about="matched-graph">
  <rdfs:label>Matched-graph variable</rdfs:label>  
  <rdfs:comment>Variable to bind to a graph matching a pattern.</rdfs:comment>  
  <rdfs:domain rdf:resource="Rule"/>
  <rdfs:range rdf:resource="Variable"/>
</owl:ObjectProperty>

<!--Assertion-->

<owl:ObjectProperty rdf:about="statement">
  <rdfs:label>statement</rdfs:label>  
  <rdfs:comment>property with graph to be asserted as its value.</rdfs:comment>  
  <rdfs:domain rdf:resource="Assertion"/>
  <rdfs:range rdf:resource="Pattern"/>
</owl:ObjectProperty>

<owl:ObjectProperty rdf:about="justification">
  <rdfs:label>justification property</rdfs:label>  
  <rdfs:comment></rdfs:comment>  
  <rdfs:domain rdf:resource="Assertion"/>
  <rdfs:range rdf:resource="Explicit-justification"/>
</owl:ObjectProperty>

<!--Action containers-->

<owl:ObjectProperty rdf:about="rule">
  <rdfs:comment>Assert a belief or hidden rule.</rdfs:comment>  
  <rdfs:domain rdf:resource="Rule-container"/>
  <rdfs:range rdf:resource="Rule"/>
</owl:ObjectProperty>

<owl:ObjectProperty rdf:about="assert">
  <rdfs:label>Belief assertion</rdfs:label> 
  <rdfs:comment>Assert a belief</rdfs:comment>
  <rdfs:domain rdf:resource="Belief-assertion-container"/>
  <rdfs:range rdf:resource="Belief-assertion"/>
</owl:ObjectProperty>

<owl:ObjectProperty rdf:about="goal-rule">
  <rdfs:label>Nested goal rule</rdfs:label>  
  <rdfs:comment>Assert a goal rule.</rdfs:comment>  
  <rdfs:domain rdf:resource="Rule-container"/>
  <rdfs:range rdf:resource="Goal-rule"/>
</owl:ObjectProperty>

<owl:ObjectProperty rdf:about="assert-goal">
  <rdfs:label>Simple goal assertion</rdfs:label>  
  <rdfs:comment>Assert a goal, with default justification.</rdfs:comment>  
  <rdfs:domain rdf:resource="Goal-assertion-container"/>
  <rdfs:range rdf:resource="Goal-assertion"/>
</owl:ObjectProperty>

<!--# deprecated 12/10/08 - lkagal
# use @forAll to declare variables 
# air:variable a rdf:Property;
#    rdfs:label "Declare variable";
#    rdfs:domain air:Abstract-container;
#    rdfs:range air:Variable;
#    rdfs:comment "Declare variable scoped to the container it appears in.".-->

<!--Though the range is Rule, a new rule (anonymous or o/w) cannot be declared.-->
<owl:ObjectProperty rdf:about="rule-id">
  <rdfs:label>Rule ID for justification</rdfs:label>  
  <rdfs:comment>Explicit justification of an action.</rdfs:comment>  
  <rdfs:domain rdf:resource="Justification"/>
  <rdfs:range rdf:resource="Rule"/>
</owl:ObjectProperty>

<owl:ObjectProperty rdf:about="antecedent">
  <rdfs:label>Antecedent for justification</rdfs:label>    
  <rdfs:domain rdf:resource="Justification"/>
  <rdfs:range rdf:resource="Variable"/>
</owl:ObjectProperty>

<!-- Compliance -->

<!--Though the range is Policy, only a PolicyID may be used-->
<owl:ObjectProperty rdf:about="compliant-with">
  <rdfs:label>Policy compliance</rdfs:label>  
  <rdfs:comment>The subject resource is compliant with the object policy.</rdfs:comment>  
  <rdfs:domain rdf:resource="&rdfs;Resource"/>
  <rdfs:range rdf:resource="Policy"/>
</owl:ObjectProperty>

<!--Though the range is Policy, only a PolicyID may be used-->
<owl:ObjectProperty rdf:about="non-compliant-with">
  <rdfs:label>Policy non-compliance</rdfs:label>  
  <rdfs:comment>The subject resource is non-compliant with the object policy.</rdfs:comment>  
  <rdfs:domain rdf:resource="&rdfs;Resource"/>
  <rdfs:range rdf:resource="Policy"/>
</owl:ObjectProperty>

</rdf:RDF>
Personal tools