<?xml version='1.0' encoding='ISO-8859-1'?>
<!DOCTYPE uridef[
  <!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns">
  <!ENTITY rdfs "http://www.w3.org/2000/01/rdf-schema">
  <!ENTITY daml "http://www.daml.org/2001/03/daml+oil">
  <!ENTITY xsd "http://www.w3.org/2000/10/XMLschema">
  <!ENTITY service "http://www.daml.org/services/daml-s/2001/10/Service">
  <!ENTITY process "http://www.daml.org/services/daml-s/2001/10/Process">
  <!ENTITY profile "http://www.daml.ri.cmu.edu/ont/DAML-S/Profile">
  <!ENTITY ba_service "http://www.daml.ri.cmu.edu/ont/DAML-S/BravoAir_Service.daml">
  <!ENTITY ba_iope "http://www.daml.ri.cmu.edu/ont/DAML-S/BravoAir_IOPE.daml">
  <!ENTITY DEFAULT "http://www.daml.ri.cmu.edu/ont/DAML-S/BravoAir_process.daml">
]>
 
<!--
This document uses entity types as a shorthand for URIs.
Download the source for a version with unexpanded entities.
  -->
 
<rdf:RDF
  xmlns:rdf=     "&rdf;#"
  xmlns:rdfs=    "&rdfs;#"
  xmlns:daml=    "&daml;#"
  xmlns:xsd=     "&xsd;#"
  xmlns:service= "&service;#"
  xmlns:process= "&process;#"
  xmlns:iope= 	 "&iope;#"
  xmlns:profile= "&profile;#"
  xmlns=         "&DEFAULT;#">
 
  <daml:Ontology about="">
    <daml:versionInfo>
      $Id: BravoAir_Process.daml,v 1.1 2001/09/12 01:42:28 terryp Exp $
    </daml:versionInfo>
    <daml:comment>
      DAML-S Coalition: BravoAir Example for DAML-S release 0.6, 15th Sept 2001
      Process Model
    </daml:comment>
    <daml:imports rdf:resource="&rdf;" />
    <daml:imports rdf:resource="&rdfs;" />
    <daml:imports rdf:resource="&daml;" />
    <daml:imports rdf:resource="&service;" />
    <daml:imports rdf:resource="&process;" />
    <daml:imports rdf:resource="&profile;" />
    <daml:imports rdf:resource="&iope;" />
  </daml:Ontology>

<!-- ################################################################### -->
<!-- Instance Definition of AlphaAir Reservation Agent Process Model
  -->

  <process:ProcessModel rdf:ID="BravoAir_ReservationAgent_ProcessModel">
    <service:topLevelProcess rdf:resource="#BravoAir_Process" />
    <service:isImplementedBy>
      <service:Service rdf:resource="&ba_service;#BravoAir_ReservationAgent"/>
    </service:isImplementedBy>
  </process:ProcessModel>


<!-- ########################################################################## -->
<!-- Instance Definition of the top level process -->

  <daml:Class rdf:ID="BravoAir_Process">
    <daml:subClassOf rdf:resource="&process;#Process" />
    <daml:label> This is the top level process for BravoAir </daml:label>
  </daml:Class>

<!-- ########################################################################## -->
<!-- Expand and Collapse relations for BravoAir_Process
     Based on the Congo.daml model
  -->

  <process:expand> 
    <daml:Class> rdfs:about ="#BravoAir_Process"</daml:Class> 
    <daml:Class> rdfs:about ="#ExpandedBravoAir_Process"</daml:Class>
  </process:expand>

<!-- ########################################################################## -->
<!-- ExpandBravoAir_Process (Composite)
     Top Level Description of the Process
  -->

  <daml:Class rdf:ID="ExpandBravoAir_Process">
    <daml:subClassOf rdf:resource="&process;#CompositeProcess" />
    <daml:subClassOf rdf:resource="&process;#Sequence" />
    <daml:subClassOf>
      <daml:Restriction> 
	<daml:onProperty rdf:resource="&process;#components" />
	<daml:toClass>
	  <daml:subClassOf>
	    <daml:unionOf rdf:parseType="daml:collection">
	      <daml:Class rdfs:about="#GetDesiredFlightDetails"/>
	      <daml:Class rdfs:about="#SelectAvailableFlight"/>
	      <daml:Class rdfs:about="#BookFlight"/>
	    </daml:unionOf>
	  </daml:subClassOf>
	</daml:toClass>
      </daml:Restriction>
    </daml:subClassOf>
  </daml:Class>


<!-- ########################################################################## -->
<!-- BookFlight (Composite)
     Log into account and confirm reservation
  -->

  <daml:Class rdf:ID="BookFlight">
    <daml:subClassOf rdf:resource="#CompositeProcess" />
    <daml:subClassOf rdf:resource="&process;#Sequence" />
    <daml:subClassOf>
      <daml:Restriction> 
	<daml:onProperty rdf:resource="&process;#components" />
	<daml:toClass>
	  <daml:subClassOf>
	    <daml:unionOf rdf:parseType="daml:collection">
	      <daml:Class rdfs:about="#LogIn"/>
	      <daml:Class rdfs:about="#ConfirmReservation"/>
	    </daml:unionOf>
	  </daml:subClassOf>
	</daml:toClass>
      </daml:Restriction>
    </daml:subClassOf>
  </daml:Class>

  <!-- No specification of inputs or outputs are generated here -->


<!-- ########################################################################## -->
<!-- GetDesiredFlightDetails (ATOMIC)
     Get details such as airports, prefered time, roundtrip etc
  -->

  <daml:Class rdf:ID="GetDesiredFlightDetails">
    <daml:subClassOf rdf:resource="&process;#AtomicProcess" />
  </daml:Class>

    <!-- GetDesiredFlightDetails IOPEs -->

  <daml:Property rdf:ID="departureAirport_In">
    <daml:subPropertyOf rdf:resource="&process;#input"/>
    <daml:domain rdf:resource="#GetDesiredFlightDetails"/>
    <daml:range rdf:resource="&concepts;#Airport"/>
  </daml:Property>

  <daml:Property rdf:ID="arrivalAirport_In">
    <daml:subPropertyOf rdf:resource="&process;#input"/>
    <daml:domain rdf:resource="#GetDesiredFlightDetails"/>
    <daml:range rdf:resource="&concepts;#Airport"/>
  </daml:Property>

  <daml:Property rdf:ID="outboudDate_In">
    <daml:subPropertyOf rdf:resource="&process;#input"/>
    <daml:domain rdf:resource="#GetDesiredFlightDetails"/>
    <daml:range rdf:resource="&concepts;#FlightDate"/>
  </daml:Property>

  <daml:Property rdf:ID="inboundDate_In">
    <daml:subPropertyOf rdf:resource="&process;#input"/>
    <daml:domain rdf:resource="#GetDesiredFlightDetails"/>
    <daml:range rdf:resource="&concepts;#FlightDate"/>
  </daml:Property>

  <daml:Property rdf:ID="roundTrip_In">
    <daml:subPropertyOf rdf:resource="&process;#input"/>
    <daml:domain rdf:resource="#GetDesiredFlightDetails"/>
    <daml:range rdf:resource="&concepts;#RoundTrip"/>
  </daml:Property>

  <!-- ########################################################################## -->
  <!-- SelectAvailableFlight (ATOMIC)
       Get users prefered flight choice from available itineraries
    -->

  <daml:Class rdf:ID="SelectAvailableFlight">
    <daml:subClassOf rdf:resource="&process;#AtomicProcess" />
  </daml:Class>

    <!-- SelectAvailableFlight IOPEs -->

  <daml:Property rdf:ID="preferredFlightItinerary_In">
    <daml:subPropertyOf rdf:resource="&process;#input"/>
    <daml:domain rdf:resource="#SelectAvailableFlight"/>
    <daml:range rdf:resource="&concepts;#FlightItinerary"/>
  </daml:Property>

  <daml:Property rdf:ID="availableFlightItineraryList_Out">
    <daml:subPropertyOf rdf:resource="&process;#output"/>
    <daml:domain rdf:resource="#SelectAvailableFlight"/>
    <daml:range rdf:resource="#FlightItineraryList_CO"/>
  </daml:Property>

  <daml:Class rdf:ID="FlightItineraryList_CO">
    <daml:subClassOf rdf:resource="&process;#ConditionalOutput" />
    <daml:Restriction daml:cardinality="0">
       <daml:onProperty rdf:resource="#coCondition"/>
    </daml:Restriction>
  </daml:Class>

  <daml:Property rdf:ID="coCondition_FlightItineraryList_CO">
    <daml:subPropertyOf rdf:resource="&process;#coCondition"/>
      <daml:Restriction daml:cardinality="0">
         <daml:onProperty rdf:resource="#composedOf"/>
    <daml:domain rdf:resource="#FlightItineraryList_CO"/>
  </daml:Property>

  <daml:Property rdf:ID="coOutput_FlightItineraryList_CO">
    <daml:subPropertyOf rdf:resource="&process;#coOutput"/>
    <daml:domain rdf:resource="#FlightItineraryList_CO"/>
    <daml:range rdf:resource="&concepts;#FlightItineraryList"/>
  </daml:Property>

  


<!-- ########################################################################## -->
<!-- LogIn (ATOMIC)
     Get user details
  -->

  <daml:Class rdf:ID="LogIn">
    <daml:subClassOf rdf:resource="&process;#AtomicProcess" />
  </daml:Class>


    <!-- LogIn IOPE -->

  <daml:Property rdf:ID="acctName_In">
    <daml:subPropertyOf rdf:resource="&process;#input"/>
    <daml:domain rdf:resource="#LogIn"/>
    <daml:range rdf:resource="&concepts;#AcctName"/>
  </daml:Property>

  <daml:Property rdf:ID="password_In">
    <daml:subPropertyOf rdf:resource="&process;#input"/>
    <daml:domain rdf:resource="#LogIn"/>
    <daml:range rdf:resource="&concepts;#Password"/>
  </daml:Property>

<!-- ########################################################################## -->
<!-- ConfirmReservation (ATOMIC)
     Confirm selected reservation
  -->

  <daml:Class rdf:ID="ConfirmReservation">
    <daml:subClassOf rdf:resource="&process;#AtomicProcess" />
  </daml:Class>

    <!-- ConfirmReservation IOPE -->

  <daml:Property rdf:ID="reservationID_In">
    <daml:subPropertyOf rdf:resource="&process;#input"/>
    <daml:domain rdf:resource="#ConfirmReservation"/>
    <daml:range rdf:resource="&concepts;#ReservationID"/>
  </daml:Property>

  <daml:Property rdf:ID="confirm_In">
    <daml:subPropertyOf rdf:resource="&process;#input"/>
    <daml:domain rdf:resource="#ConfirmReservation"/>
    <daml:range rdf:resource="&concepts;#Confirmation"/>
  </daml:Property>

  <daml:Property rdf:ID="preferredFlightItinerary_Out">
    <daml:subPropertyOf rdf:resource="&process;#output"/>
    <daml:domain rdf:resource="#ConfirmReservation"/>
    <daml:range rdf:resource="&concepts;#FlightItinerary"/>
  </daml:Property>

  <daml:Property rdf:ID="acctName_Out">
    <daml:subPropertyOf rdf:resource="&process;#input"/>
    <daml:domain rdf:resource="#ConfirmReservation"/>
    <daml:range rdf:resource="&concepts;#AcctName"/>
  </daml:Property>

  <daml:Property rdf:ID="reservationID_Out">
    <daml:subPropertyOf rdf:resource="&process;#input"/>
    <daml:domain rdf:resource="#ConfirmReservation"/>
    <daml:range rdf:resource="&concepts;#ReservationNumber"/>
  </daml:Property>

  <daml:Property rdf:ID="haveSeat">
    <daml:subPropertyOf rdf:resource="&process;#effect"/>
    <daml:domain rdf:resource="#ConfirmReservation"/>
    <daml:range rdf:resource="&concepts;#HaveFlightSeat"/>
  </daml:Property>

</rdf:RDF>
