<?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 xsd     "http://www.w3.org/2001/XMLSchema">
  <!ENTITY daml    "http://www.daml.org/2001/03/daml+oil">
  <!ENTITY dex     "http://www.daml.org/2001/03/daml+oil-ex">
  <!ENTITY exd     "http://www.daml.org/2001/03/daml+oil-ex-dt">
  <!ENTITY time    "http://www.ai.sri.com/daml/ontologies/time/Time.daml">
  <!ENTITY service "http://www.daml.org/services/daml-s/0.9/Service.daml">
  <!ENTITY process "http://www.daml.org/services/daml-s/0.9/Process.daml">
  <!ENTITY congo   "http://www.daml.org/services/daml-s/0.9/CongoProcess.daml">
  <!ENTITY DEFAULT "http://www.daml.org/services/daml-s/0.9/CongoProcessDataFlow.daml"> 
  <!ENTITY THIS    "http://www.daml.org/services/daml-s/0.9/CongoProcessDataFlow.daml"> 
    
]>

<rdf:RDF
  xmlns:rdf =     "&rdf;#"
  xmlns:rdfs =    "&rdfs;#"
  xmlns:xsd =     "&xsd;#"
  xmlns:daml =    "&daml;#"
  xmlns:dex =     "&dex;#"
  xmlns:exd =     "&exd;#"
  xmlns:service = "&service;#"
  xmlns:process = "&process;#"
  xmlns:time =    "&time;#"
  xmlns:congo =    "&congo;#"
  xmlns =          "&congo;#"
>

<daml:Ontology rdf:about="">
  <daml:versionInfo>
    $Id: CongoProcessDataFlow.daml,v 1.7 2003/09/19 05:00:18 martin Exp $
  </daml:versionInfo>
  <rdfs:comment>

   This file contains process annotations for CongoProcess.daml
    to relate various process parameters to each other.
    
    See section 5.2 of the DAML-S 0.9 Technical Overview:
      http://www.daml.org/services/daml-s/0.9/daml-s.html 
    for details.
    Created by Mark Burstein
    Contributions by David Martin
    
  </rdfs:comment>
  <daml:imports rdf:resource="&daml;"/>
  <daml:imports rdf:resource="&service;"/>
  <daml:imports rdf:resource="&process;"/>
  <daml:imports rdf:resource="&congo;"/>
</daml:Ontology>


<!-- defines the correlations between parameters of 
     #FullCongoBuy and the subprocess
     sequence #LocateBook #CongoBuyBook -->

<rdf:Description rdf:about="&congo;#FullCongoBuy"> 
  <process:sameValues rdf:parseType="daml:collection">
    <process:ValueOf process:atClass="&congo;#FullCongoBuy" process:theProperty="&congo;#fullCongoBuyBookName"/>  
    <process:ValueOf process:atClass="&congo;#LocateBook" process:theProperty="&congo;#bookName"/>
  </process:sameValues>

<!-- this one relates the output of LocateBook to an input to CongoBuyBook -->
  <process:sameValues rdf:parseType="daml:collection"> 
    <process:ValueOf process:atClass="&congo;#FullCongoBuy" process:theProperty="&congo;#fullCongoBuyBookISBN"/>   
    <!-- the conditional output of LocateBook is LocatedBookOutput -->
    <process:ValueOf process:atClass="&congo;#LocatedBookOutput" process:theProperty="outInCatalogBookISBN"/> 
    <process:ValueOf process:atClass="&congo;#CongoBuyBOok" process:theProperty="&congo;#congoBuyBookISBN"/>
  </process:sameValues>

  <process:sameValues rdf:parseType="daml:collection">
    <process:ValueOf process:atClass="&congo;#FullCongoBuy" process:theProperty="&congo;#fullCongoBuySignInInfo"/>  
    <process:ValueOf process:atClass="&congo;#CongoBuyBook" process:theProperty="&congo;#congoBuyBookSignInInfo"/> 
  </process:sameValues>

  <process:sameValues rdf:parseType="daml:collection">
    <process:ValueOf process:atClass="&congo;#FullCongoBuy" process:theProperty="&congo;#fullCongoBuyCreateAcctInfo"/> 
    <process:ValueOf process:atClass="&congo;#CongoBuyBook" process:theProperty="&congo;#congoBuyBookCreateAcctInfo"/> 
  </process:sameValues>

  <process:sameValues rdf:parseType="daml:collection">
    <process:ValueOf process:atClass="&congo;#FullCongoBuy" process:theProperty="&congo;#fullCongoBuyCreateAcctOutput"/> 
    <process:ValueOf process:atClass="&congo;#CongoBuyBook" process:theProperty="&congo;#congoBuyBookCreateAcctOutput"/> 
  </process:sameValues>

  <process:sameValues rdf:parseType="daml:collection">
    <process:ValueOf process:atClass="&congo;#FullCongoBuy" process:theProperty="&congo;#fullCongoBuyCreditCardNumber"/> 
    <process:ValueOf process:atClass="&congo;#CongoBuyBook" process:theProperty="&congo;#congoBuyBookCreditCardNumber"/> 
  </process:sameValues>

  <process:sameValues rdf:parseType="daml:collection">
    <process:ValueOf process:atClass="&congo;#FullCongoBuy" process:theProperty="&congo;#fullCongoBuyCreditCardType"/> 
    <process:ValueOf process:atClass="&congo;#CongoBuyBook" process:theProperty="&congo;#congoBuyBookCreditCardType"/> 
  </process:sameValues>

  <process:sameValues rdf:parseType="daml:collection">
    <process:ValueOf process:atClass="&congo;#FullCongoBuy" process:theProperty="&congo;#fullCongoBuyCreditCardExpirationDate"/> 
    <process:ValueOf process:atClass="&congo;#CongoBuyBook" process:theProperty="&congo;#congoBuyBookCreditCardExpirationDate"/> 
  </process:sameValues>

  <process:sameValues rdf:parseType="daml:collection">
    <process:ValueOf process:atClass="&congo;#FullCongoBuy" process:theProperty="&congo;#fullCongoBuyDeliveryAddress"/> 
    <process:ValueOf process:atClass="&congo;#CongoBuyBook" process:theProperty="&congo;#congoBuyBookDeliveryAddress"/> 
  </process:sameValues>

  <process:sameValues rdf:parseType="daml:collection">
    <process:ValueOf process:atClass="&congo;#FullCongoBuy" process:theProperty="&congo;#fullCongoBuyPackagingSelection"/> 
    <process:ValueOf process:atClass="&congo;#CongoBuyBook" process:theProperty="&congo;#congoBuyBookPackagingSelection"/> 
  </process:sameValues>

  <process:sameValues rdf:parseType="daml:collection">
    <process:ValueOf process:atClass="&congo;#FullCongoBuy" process:theProperty="&congo;#fullCongoBuyDeliveryTypeSelection"/> 
    <process:ValueOf process:atClass="&congo;#CongoBuyBook" process:theProperty="&congo;#congoBuyBookDeliveryTypeSelection"/> 
  </process:sameValues>
</rdf:Description>

<!-- CongoBuyBook is a a sequence of BuySequence SpecifyDeliveryDetails FinalizeBuy -->

<rdf:Description rdf:about="&congo;#CongoBuyBook"> 
  <process:sameValues rdf:parseType="daml:collection">
    <process:ValueOf process:atClass="&congo;#CongoBuyBook" process:theProperty="&congo;#congoBuyBookBookISBN"/>
    <process:ValueOf process:atClass="&congo;#BuySequence" process:theProperty="&congo;#buySequenceBookISBN"/>
  </process:sameValues>

  <process:sameValues rdf:parseType="daml:collection">
    <process:ValueOf process:atClass="&congo;#CongoBuyBook" process:theProperty="&congo;#congoBuyBookCreateAcctInfo"/> 
    <process:ValueOf process:atClass="&congo;#BuySequence" process:theProperty="&congo;#buySequenceCreateAcctInfo"/>
  </process:sameValues>

  <process:sameValues rdf:parseType="daml:collection">
    <process:ValueOf process:atClass="&congo;#CongoBuyBook" process:theProperty="&congo;#congoBuyBookCreateAcctOutput"/> 
    <process:ValueOf process:atClass="&congo;#BuySequence" process:theProperty="&congo;#buySequenceCreateAcctInfo"/> 
  </process:sameValues>

  <process:sameValues rdf:parseType="daml:collection">
    <process:ValueOf process:atClass="&congo;#CongoBuyBook" process:theProperty="&congo;#congoBuyBookSignInInfo"/> 
    <process:ValueOf process:atClass="&congo;#BuySequence" process:theProperty="&congo;#buySequenceSignInInfo"/> 
  </process:sameValues>

  <process:sameValues rdf:parseType="daml:collection">
    <process:ValueOf process:atClass="&congo;#CongoBuyBook" process:theProperty="&congo;#congoBuyBookCreditCardNumber"/> 
    <process:ValueOf process:atClass="&congo;#BuySequence" process:theProperty="&congo;#buySequenceCreditCardNumber"/> 
  </process:sameValues>

  <process:sameValues rdf:parseType="daml:collection">
    <process:ValueOf process:atClass="&congo;#CongoBuyBook" process:theProperty="&congo;#congoBuyBookCreditCardType"/>
    <process:ValueOf process:atClass="&congo;#BuySequence" process:theProperty="&congo;#buySequenceCreditCardType"/> 
  </process:sameValues>

  <process:sameValues rdf:parseType="daml:collection">
    <process:ValueOf process:atClass="&congo;#CongoBuyBook" process:theProperty="&congo;#congoBuyBookCreditCardExpirationDate"/> 
    <process:ValueOf process:atClass="&congo;#BuySequence" process:theProperty="&congo;#buySequenceCreditCardExpirationDate"/> 
  </process:sameValues>

  <process:sameValues rdf:parseType="daml:collection">
    <process:ValueOf process:atClass="&congo;#CongoBuyBook" process:theProperty="&congo;#congoBuyBookDeliveryAddress"/> 
    <process:ValueOf process:atClass="&congo;#SpecifyDeliveryDetails" process:theProperty="&congo;#deliveryAddress"/>
  </process:sameValues>

  <process:sameValues rdf:parseType="daml:collection">
    <process:ValueOf process:atClass="&congo;#CongoBuyBook" process:theProperty="&congo;#congoBuyBookPackagingSelection"/> 
    <process:ValueOf process:atClass="&congo;#SpecifyDeliveryDetails" process:theProperty="&congo;#packagingSelection"/>
  </process:sameValues>

  <process:sameValues rdf:parseType="daml:collection">
    <process:ValueOf process:atClass="&congo;#CongoBuyBook" process:theProperty="&congo;#congoBuyBookDeliveryTypeSelection"/> 
    <process:ValueOf process:atClass="&congo;#SpecifyDeliveryDetails" process:theProperty="&congo;#deliveryTypeSelection"/>
  </process:sameValues>
</rdf:Description>

<!-- BuySequence is a sequence of PutInCart SignInAlternatives SpecifyPaymentMethod -->
<rdf:Description rdf:about="&congo;#BuySequence"> 
<!-- MAY WANT TO CHANGE HOW THIS IS DONE IN CONGOPROCESS??-->
  <process:sameValues rdf:parseType="daml:collection">  
    <process:ValueOf process:atClass="&congo;#BuySequence" process:theProperty="&congo;#buySequenceBookISBN"/> 
    <process:ValueOf process:atClass="&congo;#PutInCart" process:theProperty="&congo;#putInCartBookISBN"/> 
  </process:sameValues>

  <process:sameValues rdf:parseType="daml:collection">
    <process:ValueOf process:atClass="&congo;#BuySequence" process:theProperty="&congo;#buySequenceCreateAcctInfo"/>
    <process:ValueOf process:atClass="&congo;#SignInAlternatives" process:theProperty="&congo;#signInAlternativesCreateAcctInfo"/> 
  </process:sameValues>

  <process:sameValues rdf:parseType="daml:collection">
    <process:ValueOf process:atClass="&congo;#BuySequence" process:theProperty="&congo;#buySequenceCreateAcctOutput"/>
    <process:ValueOf process:atClass="&congo;#SignInAlternatives" process:theProperty="&congo;#signInAlternativesCreateAcctOutput"/> 
  </process:sameValues>

  <process:sameValues rdf:parseType="daml:collection">
    <process:ValueOf process:atClass="&congo;#BuySequence" process:theProperty="&congo;#buySequenceSignInInfo"/>
    <process:ValueOf process:atClass="&congo;#SignInAlternatives" process:theProperty="&congo;#signInAlternativesSignInInfo"/> 
  </process:sameValues>

  <process:sameValues rdf:parseType="daml:collection">
    <process:ValueOf process:atClass="&congo;#BuySequence" process:theProperty="&congo;#buySequenceCreditCardNumber"/>
    <process:ValueOf process:atClass="&congo;#SpecifyPaymentMethod" process:theProperty="&congo;#creditCardNumber"/>
  </process:sameValues>

  <process:sameValues rdf:parseType="daml:collection">
    <process:ValueOf process:atClass="&congo;#BuySequence" process:theProperty="&congo;#buySequenceCreditCardType"/> 
    <process:ValueOf process:atClass="&congo;#SpecifyPaymentMethod" process:theProperty="&congo;#creditCardType"/>
  </process:sameValues>

  <process:sameValues rdf:parseType="daml:collection">
    <process:ValueOf process:atClass="&congo;#BuySequence" process:theProperty="&congo;#buySequenceCreditCardExpirationDate"/> 
    <process:ValueOf process:atClass="&congo;#SpecifyPaymentMethod" process:theProperty="&congo;#creditCardExpirationDate"/>
  </process:sameValues>
</rdf:Description>

<!-- SignInAlternatives is a choice between CreateAcctSequence SignInSequence -->
<rdf:Description rdf:about="&congo;#SignInAlternatives"> 

  <process:sameValues rdf:parseType="daml:collection">
    <process:ValueOf process:atClass="&congo;#SignInAlternatives" process:theProperty="&congo;#signInAlternativesCreateAcctInfo"/>
    <process:ValueOf process:atClass="&congo;#CreateAcctSequence" process:theProperty="&congo;#createAcctSequenceCreateAcctInfo"/>
  </process:sameValues>

  <process:sameValues rdf:parseType="daml:collection">
    <process:ValueOf process:atClass="&congo;#SignInAlternatives" process:theProperty="&congo;#signInAlternativesCreateAcctOutput"/>
    <process:ValueOf process:atClass="&congo;#CreateAcctSequence" process:theProperty="&congo;#createAcctSequenceCreateAcctOutput"/>
  </process:sameValues>

  <process:sameValues rdf:parseType="daml:collection">
    <process:ValueOf process:atClass="&congo;#SignInAlternatives" process:theProperty="&congo;#signInAlternativesSignInInfo"/> 
    <process:ValueOf process:atClass="&congo;#SignInSequence" process:theProperty="&congo;#signInSequenceSignInInfo"/>
  </process:sameValues>
</rdf:Description>


<!-- SignInSequence is a sequence of SignIn LoadProfile -->
<rdf:Description rdf:about="&congo;#SignInSequence"> 
  <process:sameValues rdf:parseType="daml:collection">
    <process:ValueOf process:atClass="&congo;#SignInSequence" process:theProperty="&congo;#signInSequenceSignInInfo"/>
    <process:ValueOf process:atClass="&congo;#SignIn" process:theProperty="&congo;#signInInfo"/>
  </process:sameValues>
</rdf:Description>

<!-- CreateAcctSequence is a sequence of CreateAcct CreateProfile LoadProfile -->
<rdf:Description rdf:about="&congo;#CreateAcctSequence"> 
   <process:sameValues rdf:parseType="daml:collection">
     <process:ValueOf process:atClass="&congo;#CreateAcctSequence" process:theProperty="&congo;#createAcctSequenceCreateAcctInfo"/>
     <process:ValueOf process:atClass="&congo;#CreateAcct" process:theProperty="&congo;#CcreateAcctInfo"/>
   </process:sameValues>

   <process:sameValues rdf:parseType="daml:collection">
     <process:ValueOf process:atClass="&congo;#CreateAcctSequence" process:theProperty="&congo;#createAcctSequenceCreateAcctOutput"/>
     <process:ValueOf process:atClass="&congo;#CreateAcct" process:theProperty="&congo;#createAcctOutput"/>
   </process:sameValues>
</rdf:Description>

<!-- LocateBook is an atomic process, but with a conditional output that is 
     contingent on the input bookName -->

<rdf:Description rdf:about="&congo;#LocateBook"> 
   <process:sameValues rdf:parseType="daml:collection">
     <process:ValueOf process:atClass="&congo;#LocateBook" process:theProperty="&congo;#bookName"/>
     <process:ValueOf process:atClass="&congo;#BookInCatalogueP" process:theProperty="&congo;#nameBookInCatalogue"/>
   </process:sameValues>
</rdf:Description>

</rdf:RDF>
