<?xml version="1.0"?>
<rdf:RDF xmlns="http://www.daml.org/2000/10/daml-ont#"
         xmlns:daml="http://www.daml.org/2000/10/daml-ont#"
	 xmlns:time="http://www.kestrel.edu/DAML/2000/12/TIME.daml#"
	 xmlns:resource="http://www.kestrel.edu/DAML/2000/12/RESOURCE.daml#"
	 xmlns:capacity="http://www.kestrel.edu/DAML/2000/12/CAPACITY.daml#"
	 xmlns:demand="http://www.kestrel.edu/DAML/2000/12/DEMAND.daml#"
	 xmlns:ls="http://www.w3.org/TR/xmlschema-2#"
         xmlns:a="https://www.daml.org/actionitems/actionitems-20000905.rdfs#"
         xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
         xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">



     <!-- mark DAML program action item 12 as complete --> 
     <rdf:Description about="https://www.daml.org/actionitems/12.rdf">
        <a:state>closed</a:state>
        <a:Action parseType="Resource">
            <a:status>available at http://www.kestrel.edu/DAML/2000/12/OPERATION.daml</a:status>
            <a:date>12-14-2000 17:44</a:date>
            <a:by>becker@kestrel.edu</a:by>
        </a:Action>
     </rdf:Description>



	<!--  	
	Does importing an ontology adds a new recognizable namespace
	or we still need to declare the namespace and use the corresponding 
	tag to refer to resources
	-->

 <Ontology about="">
     <versionInfo>$Id$</versionInfo>
     <comment>Kestrel Scheduling Ontology </comment>
     <imports resource="http://www.daml.org/2000/10/daml-ont"/>
     <imports resource="http://www.kestrel.edu/DAML/2000/12/TIME.daml"/>
     <imports resource="http://www.kestrel.edu/DAML/2000/12/DEMAND.daml"/>
     <imports resource="http://www.kestrel.edu/DAML/2000/12/CAPACITY.daml"/>
     <imports resource="http://www.kestrel.edu/DAML/2000/12/RESOURCE.daml"/>
 </Ontology>



  <!-- CLASS OPERATION -->
  <Class ID="Operation">
    <label>Operation</label>
    <comment> </comment>
  </Class>

  <Class ID="Activity">
    <label>Activity</label>
    <sameClassAs resource="#Operation"/>
    <comment> </comment>
  </Class>

	<!-- How do I restric the members of the list to be of a certain type?? -->
  <Class ID="Activity-List">
     <label>ActivityList</label>
     <comment>Place holder for a list of activities</comment>
     <subClassOf resource="daml:#List"/>
     <restrictedBy>
	<restriction> 
	  <onProperty resource="#item"/>
	  <toClass resource="#Activity"/>
	</restriction>
     </restrictedBy>
  </Class>		


   <Property ID="resources">
     <domain resource="#Operation"/>
     <range  resource="#Resource-List"/>
   </Property>

   <Property ID="scheduled-in">
     <domain resource="#Operation"/>
     <range  resource="#Resource"/>
   </Property>

   <Property ID="unscheduled-in">
     <domain resource="#Operation"/>
     <range  resource="#Resource"/>
   </Property>

   <Property ID="unschedulable-in">
     <domain resource="#Operation"/>
     <range  resource="#Resource"/>
   </Property>

   <Property ID="alternative-resources">
     <domain resource="#Operation"/>
     <range  resource="#Resource-List"/>
   </Property>


   <Property ID="capacity">
     <domain resource="#Operation"/>
     <range  resource="capacity:#Capacity-Value"/>
   </Property>

   <Property ID="reserved-capacity">
     <domain resource="#Operation"/>
     <range  resource="capacity:#Capacity-Value"/>
   </Property>

   <Class ID="Operation-Status"> 
     <comment>Valid status for an activity</comment>
     <label>Operation-Status</label>
     <subClassOf resource="daml:#Literal"/>
   </Class>

   <Property ID="status">
     <domain resource="#Operation"/>
     <range  resource="#Operation-Status"/>
   </Property>

   <Property ID="setup-duration">
     <domain resource="#Operation"/>
     <range  resource="time:#Duration"/>
   </Property>

   <Class ID="Operation-Connective">
     <comment>Represents if the activity plan is a disjunction or a
     conjuntion of its children</comment>
     <label>Operation-Connective</label>
     <subClassOf resource="daml:#Literal"/>
   </Class>


   <Property ID="connective">
     <domain resource="#Operation"/>
     <range  resource="#Operation-Connective"/>
   </Property>

   <Property ID="lateness">
     <domain resource="#Operation"/>
     <range  resource="time:#Duration"/>
   </Property>

   <Property ID="demand">
     <domain resource="#Operation"/>
     <range  resource="demand:#Demand"/>
   </Property>

   <Property ID="quantity">
     <domain resource="#Operation"/>
     <range  resource="capacity:#Capacity-Value"/>
     <equivalentTo resource="#capacity"/>
   </Property>

   <Property ID="message">
     <domain resource="#Operation"/>
     <range  resource="#Literal"/>
   </Property>



   <Property ID="start-time"> 
     <domain resource="#Operation" />
     <range  resource="time:#Time-Point" />
   </Property>

   <Property ID="scheduled-start-time"> 
     <domain resource="#Operation" />
     <range  resource="time:#Time-Point" />
   </Property>

   <Property ID="earliest-start-time"> 
     <domain resource="#Operation" />
     <range  resource="time:#Time-Point" />
   </Property>

   <Property ID="latest-start-time"> 
     <domain resource="#Operation" />
     <range  resource="time:#Time-Point " />
   </Property>


   <Property ID="end-time"> 
     <domain resource="#Operation" />
     <range  resource="time:#Time-Point" />
   </Property>

   <Property ID="scheduled-end-time"> 
     <domain resource="#Operation" />
     <range  resource="time:#Time-Point" />
   </Property>

   <Property ID="earliest-end-time"> 
     <domain resource="#Operation" />
     <range  resource="time:#Time-Point" />
   </Property>

   <Property ID="latest-end-time"> 
     <domain resource="#Operation" />
     <range  resource="time:#Time-Point " />
   </Property>

   <Property ID="temporal-relation"> 
     <domain resource="#Operation" />
     <range  resource="time:#Temporal-Relation" />
   </Property>


   <Property ID="duration">
     <domain resource="#Operation"/>
     <range  resource="time:#Duration"/>
   </Property>

   <Property ID="time-bound">
     <domain resource="#Operation"/>
     <range  resource="time:#Time-Interval"/>
   </Property>




  <!-- CLASS TRANSPORT-OPERATION -->
  <Class ID="Transport-Operation">
    <label>Transport-Operation</label>
    <comment> </comment>
    <subClassOf resource="#Operation"/>
  </Class>

   <Property ID="origin">
     <domain resource="#Transport-Operation"/>
     <range  resource="resource:#Location"/>
   </Property>

   <Property ID="destination">
     <domain resource="#Transport-Operation"/>
     <range  resource="resource:#Location"/>
   </Property>



   <Property ID="travel-time">
     <domain resource="#Transport-Operation"/>
     <range resource="time:#Duration"/>
   </Property>


   <Class ID="Air-Transport-Operation">
      <label>Air-Transport-Operation</label>
      <comment></comment> 
      <subClassOf resource="#Transport-Operation"/>
  </Class>



  <Class ID="Sea-Transport-Operation">
    <label>Air-Transport-Operation</label>
    <comment> </comment>
    <subClassOf resource="#Transport-Operation"/>
  </Class>


  <Class ID="Land-Transport-Operation">
    <label>Air-Transport-Operation</label>
    <comment> </comment>
    <subClassOf resource="#Transport-Operation"/>
  </Class>

   <Property ID="ground-operation">
     <domain resource="#Transport-Operation"/>
     <range  resource="#Ground-Operation"/>
   </Property>

   <Property ID="ground-event">
     <domain resource="#Transport-Operation"/>
     <range  resource="#Ground-Operation"/>
     <equivalentTo resource="#ground-operation"/>
   </Property>



  <Class ID="Ground-Operation">
    <label>Ground-Operation</label>
    <comment> </comment>
    <subClassOf resource="Operation"/>
  </Class>
  <Class ID="Ground-Event">
    <label>Ground-Event</label>
    <comment> </comment>
    <sameClassAs ID="Ground-Operation"/>
  </Class>


  <Class ID="On-Load"> 
   <label>On-Load</label>
   <comment> </comment>
   <subClassOf resource="#Ground-Operation" />
  </Class>
  <Class ID="Off-Load"> 
   <label>Off-Load</label>
   <comment> </comment>
   <subClassOf resource="#Ground-Operation" />
  </Class>
  <Class ID="Refuel"> 
   <label>Refuel</label>
   <comment> </comment>
   <subClassOf resource="#Ground-Operation" />
  </Class>
  <Class ID="Crew-Rest"> 
   <label>Crew-Rest</label>
   <comment> </comment>
   <subClassOf resource="#Ground-Operation" />
  </Class>
  <Class ID="Crew-Change"> 
   <label>Crew-Change</label>
   <comment> </comment>
   <subClassOf resource="#Ground-Operation" />
  </Class>
  <Class ID="Turn-Around">
    <label>Turn-Around</label>
    <comment> </comment>
    <subClassOf resource="#Ground-Operation"/>
  </Class>
   <Property ID="owner">
     <domain resource="#Transport-Load"/>
     <range  resource="#Transport-Operation"/>
   </Property>





  <!-- CLASS MANUFACTURING-OPERATION -->
  <Class ID="Manufacturing-Operation">
    <label>Manufacturing-Operation</label>
    <comment> </comment>
    <subClassOf resource="#Operation"/>
  </Class>



  <!-- CLASS BATCH-OPERATION -->
  <Class ID="Batch-Operation">
    <label>Batch-Operation</label>
    <comment> </comment>
    <subClassOf resource="#Operation"/>
  </Class>

   <Property ID="batched-operation">
     <domain resource="#Batch-Operation"/>
     <range  resource="#Operation"/>
   </Property>



  <!-- Class Flight -->
   <Class ID="Flight">
     <label>Flight</label>
     <comment> The Flight class represents the mission that should fly </comment>
     <subClassOf resource="#Air-Transport-Operation"/>
   </Class>

  <!-- CLASS SORTIE -->
  <Class ID="Sortie">
    <label>Sortie</label>
    <comment> </comment>
    <subClassOf resource="#Air-Transport-Operation"/>
    <equivalentTo resource="#Flight"/>
  </Class>

  <Property ID="base">
     <domain resource="#Sortie"/>
     <range  resource="resource:#Location"/>
   </Property>


  <!-- CLASS STRIKE -->
  <Class ID="Strike">
    <label>Strike</label>
    <comment> </comment>
    <subClassOf resource="#Sortie"/>
  </Class>



  <!-- CLASS CONSUMER PRODUCER OPERATION -->
  <Class ID="Producer-Operation">
    <label>Producer-Operation</label>
    <comment> </comment>
    <subClassOf resource="#Operation"/>
  </Class>

  <Class ID="Consumer-Operation">
    <label>Producer-Operation</label>
    <comment> </comment>
    <subClassOf resource="#Operation"/>
  </Class>



  <!-- CLASS MAINTENANCE-OPERATION -->
  <Class ID="Maintenance-Operation">
    <label>Maintenance-Operation</label>
    <comment> </comment>
    <subClassOf resource="#Operation"/>
  </Class>



  <!-- CLASS ITINERARY -->
  <Class ID="Itinerary">
    <label>Itinerary</label>
    <comment> </comment>
    <subClassOf resource="#Transport-Operation"/>
  </Class>



  <!-- CLASS MISSION-OPERATION -->
  <Class ID="Mission-Operation">
    <label>Mission-Operation</label>
    <comment> </comment>
    <subClassOf resource="#Transport-Operation"/>
    <equivalentTo resource="#Flight"/>
  </Class>

   <Property ID="cargo-carrying">
     <domain resource="#Mission-Operation"/>
     <range  resource="ls:#boolean"/>
   </Property>

   <Property ID="nominal-duration">
     <domain resource="#Mission-Operation"/>
     <range  resource="Time:#Duration"/>
   </Property>

   <Property ID="remaining-resource-travel-time">
     <domain resource="#Mission-Operation"/>
     <range  resource="#Duration"/>
   </Property>

   <Property ID="overallocated-p">
     <domain resource="#Mission-Operation"/>
     <range  resource="ls:#boolean"/>
   </Property>



  <!-- CLASS MISSION-LEG -->
  <Class ID="Mission-Leg">
    <label>Mission-Leg</label>
    <comment> </comment>
    <subClassOf ID="Itinerary"/>
  </Class>

   <Property ID="depart-time">
     <subPropertyOf resource="#start-time" />
     <domain resource="#Mission-Leg"/>
     <range  resource="time:#Time-Point"/>
   </Property>

   <Property ID="arrival-time">
     <subPropertyOf resource="#end-time" />
     <domain resource="#Mission-Leg"/>
     <range  resource="#Arrival-Time"/>
   </Property>


  <!-- CLASS MISSION -->
  <Class ID="Mission">
    <label>Mission</label>
    <comment> </comment>
    <subClassOf ID="Itinerary"/>
  </Class>



  <!-- CLASS FIXED-DURATION-MISSION-OPERATION -->
  <Class ID="Fixed-Duration-Mission-Operation">
    <label>Fixed-Duration-Mission-Operation</label>
    <comment> </comment>
    <subClassOf ID="Mission-Operation"/>
  </Class>



  <!-- CLASS MISSION-FUEL-SUPPLY-OPERATION -->
  <Class ID="Mission-Fuel-Supply-Operation">
    <label>Mission-Fuel-Supply-Operation</label>
    <comment> Air refuel mission for tankers </comment>
    <subClassOf ID="Mission-Operation"/>
  </Class>

  <!-- 
  How do I express the constraint that the cardinality 
  of this property depends on the amount of fuel the tanker can carry and 
  on the amount required by each of the others consumer. 
  -->

   <Property ID="consumer">
     <domain resource="#Mission-Fuel-Supply-Operation"/>
     <range  resource="#Mission-Refueling-Operation"/>
   </Property>

   <Property ID="possible-consumer">
     <domain resource="#Mission-Fuel-Supply-Operation"/>
     <range  resource="#Mission-Refueling-Operation"/>
   </Property>

   <Property ID="total-quantity">
     <domain resource="#Mission-Fuel-Supply-Operation"/>
     <range  resource="capacity:#Capacity-Value"/>
   </Property>

   <Property ID="duration-default">
     <domain resource="#Mission-Fuel-Supply-Operation"/>
     <range  resource="time:#Duration"/>
   </Property>



  <!-- CLASS MISSION-REFUELING-OPERATION -->

  <Class ID="Mission-Refueling-Operation">
    <label>Mission-Refueling-Operation</label>
    <comment> Mission for the receiveing side of the air refuel event </comment>
    <subClassOf ID="Mission-Operation"/>
  </Class>

   <Property ID="required-quantity">
     <domain resource="#Mission-Refueling-Operation"/>
     <range  resource="capacity:#Capacity-Value"/>
   </Property>

   <Property ID="supplier">
     <domain resource="#Mission-Refueling-Operation"/>
     <range  resource="#Mission-Fuel-Supply-Operation"/>
   </Property>

   <Property ID="possible-supplier">
     <domain resource="#Mission-Refueling-Operation"/>
     <range  resource="#Mission-Fuel-Supply-Operation"/>
   </Property>

   <Property ID="alternative-track">
     <domain resource="#Mission-Refueling-Operation"/>
     <range  resource="resource:#Refueling-Track"/>
   </Property>



  <!-- CLASS GROUND-EVENT-OPERATION -->
  <Class ID="Fixed-Duration-Ground-Event-Operation">
    <label>Fixed-Duration-Ground-Event-Operation</label>
    <comment> </comment>
    <subClassOf resource="#Ground-Operation" />
    <subClassOf resource="#Fixed-Duration-Mission-Operation"/>
  </Class>

    



  <!-- CLASS FIXED-DURATION-FUEL-SUPPLY-OPERATION -->
  <Class ID="Fixed-Duration-Fuel-Supply-Operation">
    <label>Fixed-Duration-Fuel-Supply-Operation</label>
    <comment> </comment>
    <subClassOf resource="#Fixed-Duration-Mission-Operation"/>
    <subClassOf resource="#Mission-Fuel-Supply-Operation"/>
  </Class>




  <!-- CLASS FIXED-DURATION-REFUELING-OPERATION -->
  <Class ID="Fixed-Duration-Refueling-Operation">
    <label>Fixed-Duration-Refueling-Operation</label>
    <comment> </comment>
    <subClassOf resource="#Mission-Refueling-Operation"/>
    <subClassOf resource="#Fixed-Duration-Mission-Operation"/>
  </Class>



  <!-- CLASS TRANSPORT-BATCH-OPERATION -->
  <Class ID="Transport-Batch-Operation">
    <label>Transport-Batch-Operation</label>
    <comment> </comment>
    <subClassOf ID="Batch-Operation"/>
    <subClassOf ID="Transport-Operation"/>
  </Class>



  <!-- CLASS MISSION-BATCH-OPERATION -->
  <Class ID="Mission-Batch-Operation">
    <label>Mission-Batch-Operation</label>
    <comment> </comment>
    <subClassOf ID="Transport-Batch-Operation"/>
    <subClassOf ID="Mission-Operation"/>
  </Class>



</rdf:RDF>
