From TAMI
OWL
<?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>