<?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/2000/10/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.7/Service.daml">
  <!ENTITY process "http://www.daml.org/services/daml-s/0.7/Process.daml">
  <!ENTITY congo   "http://www.daml.org/services/daml-s/0.7/CongoProcess.daml">
  <!ENTITY DEFAULT "http://www.daml.org/services/daml-s/0.7/CongoProcessDataFlow.daml"> 
  <!ENTITY THIS    "http://www.daml.org/services/daml-s/0.7/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.4 2003/01/23 00:20:08 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.7 Technical Overview:
      http://www.daml.org/services/daml-s/0.7/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="#FullCongoBuy"> 
  <process:sameValues rdf:parseType="daml:collection">
    <process:ValueOf process:atClass="#FullCongoBuy" process:theProperty="#fullCongoBuyBookName"/>  
    <process:ValueOf process:atClass="#LocateBook" process:theProperty="#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="#FullCongoBuy" process:theProperty="#fullCongoBuyBookISBN"/>   
    <!-- the conditional output of LocateBook is LocatedBookOutput -->
    <process:ValueOf process:atClass="#LocatedBookOutput" process:theProperty="outInCatalogBookISBN"/> 
    <process:ValueOf process:atClass="#CongoBuyBOok" process:theProperty="#congoBuyBookISBN"/>
  </process:sameValues>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

   <process:sameValues rdf:parseType="daml:collection">
     <process:ValueOf process:atClass="#CreateAcctSequence" process:theProperty="#createAcctSequenceCreateAcctOutput"/>
     <process:ValueOf process:atClass="#CreateAcct" process:theProperty="#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="#LocateBook"> 
   <process:sameValues rdf:parseType="daml:collection">
     <process:ValueOf process:atClass="#LocateBook" process:theProperty="#bookName"/>
     <process:ValueOf process:atClass="#BookInCatalogueP" process:theProperty="#nameBookInCatalogue"/>
   </process:sameValues>
</rdf:Description>

</rdf:RDF>
