@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . 
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix pmlp: <http://inference-web.org/2.0/pml-provenance.owl#> .
@prefix pmlj: <http://inference-web.org/2.0/pml-justification.owl#> .
@prefix pmll: <http://inference-web.org/2.0/pml-lite.owl#> .
@prefix air: <http://dig.csail.mit.edu/2009/AIR/air#> .
@prefix airj: <http://dig.csail.mit.edu/2009/AIR/airjustification#> .
@prefix : <http://dig.csail.mit.edu/2009/AIR/airjustification#> .

airj:BuiltinAssertions a owl:Class;
	rdfs:label "BuiltinAssertions Event" ;
	rdfs:comment "Abstract event that asserts all assertions for a builtin. The asserted graph can be unbound" ;
	rdfs:subClassOf pmll:Event .

airj:ClosingTheWorld a owl:Class ;
	rdfs:label "ClosingTheWorld Event" ;
	rdfs:comment "World is closed and unmatched conditions of all active rules is assumed false after this." ;
	rdfs:subClassOf pmll:Event .

airj:ClosureComputation a owl:Class ;
	rdfs:label "ClosureComputation Event" ;
	rdfs:comment "This is representative of the functionality of the AIR reasoner" ;
	rdfs:subClassOf pmll:Event .

airj:Dereference a owl:Class ;
	rdfs:label "Dereference Event" ;
	rdfs:comment "This is notionally similar to log:semantics builtin which gets the graph in an N3 document" ;
	rdfs:subClassOf pmll:Event .

airj:Extraction a owl:Class ;
	rdfs:label "Extraction Event" ;
	rdfs:comment "Used to capture the operation of getting a subgraph" ;
	rdfs:subClassOf pmll:Event .

airj:BuiltinExtraction a owl:Class ;
	rdfs:label "BuiltinExtraction Event" ;
	rdfs:comment "Special extraction event to get subgraph from potentially unbound graph of all the builtin assertions, for given builtin" ;
	rdfs:subClassOf airj:Extraction .

airj:RuleApplication a owl:Class ;
	rdfs:label "RuleApplication Event" ;
	rdfs:comment "Event to describe firing of a rule" ;
	rdfs:subClassOf pmll:Event .

air:Rule rdfs:subClassOf pmll:Operation .

air:rule rdfs:subPropertyOf pmll:operation .

airj:builtin a owl:ObjectProperty ;
	rdfs:label "builtin" ;
	rdfs:subPropertyOf pmll:operation ;
	rdfs:domain airj:BuiltinAssertions .
	
airj:dataDependency a owl:ObjectProperty ;
	rdfs:label "data dependency" ;
	rdfs:comment "to relate two events e1 and e2 where outputdata of e1 is used by e2" ;
	a owl:TransitiveProperty ;
	rdfs:subPropertyOf pmll:antecedent .

airj:flowDependency a owl:ObjectProperty ;
	rdfs:label "flow dependency" ;
	rdfs:comment "to relate two events e1 and e2 where e1 must precede e2" ;
	a owl:TransitiveProperty ;
	rdfs:subPropertyOf pmll:antecedent .

airj:nestedDependency a owl:ObjectProperty ;
	rdfs:label "nested dependency" ;
	rdfs:comment "special flow dependency between RuleApplication events r1 and r2 where firing of rule in r1 activates rule fired in r2" ;
	#nested dependency is not transitive.
	a owl:FunctionalProperty ;
	rdfs:subPropertyOf airj:flowDependency ;
	rdfs:domain airj:RuleApplication ;
	rdfs:range airj:RuleApplication .

airj:inputVariableMappingList a rdf:Property ;
	rdfs:label "input variable mapping list" ;
	a owl:FunctionalProperty ;
	rdfs:domain airj:RuleApplication ;
	rdfs:subPropertyOf pmll:variableMappingList .

airj:outputVariableMappingList a rdf:Property ;
	rdfs:label "output variable mapping list" ;
	a owl:FunctionalProperty ;
	rdfs:domain airj:RuleApplication ;
	rdfs:subPropertyOf pmll:variableMappingList .

airj:outputVariableMappingListOf a rdf:Property ;
	rdfs:comment "This is notional, supposed to be inverse of  airj:outputVariableMappingList. Strictly speaking it can not be a rdf:Property because it's domain is a list, but can be represented in N3" .

airj:branch a rdf:Property ;
	rdfs:label "branch" ;
	rdfs:comment "used to specify which actions - then-actions or else-actions- were fired" ;
	rdfs:domain :RuleApplication ;
	rdfs:range air:action . #air:action is a rdf:Property


