<?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 service "http://www.daml.org/services/daml-s/2001/05/Service">
  <!ENTITY process "http://www.daml.org/services/daml-s/2001/05/Process">
  <!ENTITY profile "http://www.daml.org/services/daml-s/2001/05/Profile">
  <!ENTITY usregion "http://www.daml.ri.cmu.edu/ont/USRegionState.daml">
  <!ENTITY date "http://www.ai.sri.com/daml/ontologies/sri-basic/1-0/Date.daml">
  <!ENTITY time "http://www.ai.sri.com/daml/ontologies/sri-basic/1-0/Time.daml">
  <!ENTITY congo "http://www.daml.org/services/daml-s/2001/05/Congo.daml">
  <!ENTITY DEFAULT "http://www.daml.org/services/daml-s/2001/05/Congo-profile1.daml">
  <!ENTITY THIS "http://www.daml.org/services/daml-s/2001/05/Congo-profile1.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:xsd=    "&xsd;#"
  xmlns:daml=   "&daml;#"
  xmlns:service= "&service;#"
  xmlns:process= "&process;#"
  xmlns:profile= "&profile;#"
  xmlns:congo=  "&congo;#"
  xmlns=        "&DEFAULT;#">
 
  <daml:Ontology about="">
    <daml:versionInfo>
      $Id: Congo-profile1.daml,v 1.1 2001/05/31 22:29:50 kmbarber Exp $
    </daml:versionInfo>
    <rdfs:comment>
      Profile Description (advert) for Congo.com
 
    </rdfs:comment>
    <daml:imports rdf:resource="&rdf;" />
    <daml:imports rdf:resource="&rdfs;" />
    <daml:imports rdf:resource="&xsd;" />
    <daml:imports rdf:resource="&daml;" />
    <daml:imports rdf:resource="&service;" />
    <daml:imports rdf:resource="&process;" />
    <daml:imports rdf:resource="&profile;" />

    <!-- Note that congo.daml is *not* imported, as many
         of the properties within the process model are
         replicated here, but as profile properties.
      -->
  </daml:Ontology>


  <!-- ################################################################### -->
  <!-- # Definition of Congo Attributes ################################## -->
  <!-- ################################################################### -->

  <rdf:Property rdf:ID="bookName">
    <rdfs:subPropertyOf rdf:resource="&profile;#input"/>
    <rdfs:range rdf:resource="&xsd;#string"/>
  </rdf:Property>

  <rdf:Property rdf:ID="creditCardNumber">
    <rdfs:subPropertyOf rdf:resource="&profile;#input"/>
    <rdfs:range rdf:resource="&xsd;#decimal"/>
  </rdf:Property>

  <rdf:Property rdf:ID="creditCardType">
    <rdfs:subPropertyOf rdf:resource="&profile;#input"/>
    <rdfs:range rdf:resource="&congo;#CreditCardTypes"/>   
  </rdf:Property>

  <rdf:Property rdf:ID="creditCardExpirationDate">
    <rdfs:subPropertyOf rdf:resource="&profile;#input"/>
    <rdfs:range rdf:resource="&time;#Time"/>
  </rdf:Property>

  <rdf:Property rdf:ID="acctName">
    <rdfs:subPropertyOf rdf:resource="&profile;#input"/>
    <rdfs:range rdf:resource="&xsd;#string"/>
  </rdf:Property>

  <rdf:Property rdf:ID="password">
    <rdfs:subPropertyOf rdf:resource="&profile;#input"/>
    <rdfs:range rdf:resource="&xsd;#string"/>
  </rdf:Property>

  <rdf:Property rdf:ID="deliveryAddress">
    <rdfs:subPropertyOf rdf:resource="&profile;#input"/>
    <rdfs:range rdf:resource="&xsd;#string"/>
  </rdf:Property>

  <rdf:Property rdf:ID="acctExistsPrecondition">
    <rdfs:subPropertyOf rdf:resource="&profile;#accesscondition"/>
    <rdfs:range rdf:resource="&congo;#AcctExists"/>
  </rdf:Property>

  <rdf:Property rdf:ID="creditExistsPrecondition">
    <rdfs:subPropertyOf rdf:resource="&profile;#precondition"/>
    <rdfs:range rdf:resource="&congo;#CreditExists"/>
  </rdf:Property>

  <rdf:Property rdf:ID="eReceiptOutput">
    <rdfs:subPropertyOf rdf:resource="&profile;#output"/>
    <rdfs:range rdf:resource="&congo;#EReceipt"/>
  </rdf:Property>

  <rdf:Property rdf:ID="shippingOrderOutput">
    <rdfs:subPropertyOf rdf:resource="&profile;#output"/>
    <rdfs:range rdf:resource="&congo;#ShippingOrder"/>
  </rdf:Property>

  <rdf:Property rdf:ID="buyEffect">
    <rdfs:subPropertyOf rdf:resource="&profile;#effect"/>
    <rdfs:range rdf:resource="&congo;#BuyEffectType"/>
  </rdf:Property>

  <!-- ################################################################### -->
  <!-- # Instance Definition of Congo Service ############################ -->
  <!-- ################################################################### -->

  <service:Service rdf:ID="Congo">
    <service:presents>
      <profile:Advertisement rdf:about="CongoBuy_Advertisement"/>
    </service:presents>
    <service:implements>
      <process:ProcessModel rdf:about="CongoBuy_ProcessModel"/>
    </service:implements>
  </service:Service>

  <!-- ################################################################### -->
  <!-- # Instance Definition of CongoBuy Process Model ################### -->
  <!-- ################################################################### -->

  <process:ProcessModel rdf:ID="CongoBuy_ProcessModel">
    <service:topLevelEvent rdf:resource="&congo;#CongoBuy" />
  </process:ProcessModel>

  <!-- ################################################################### -->
  <!-- # Instance Definition of CongoBuy Advertisement ################### -->
  <!-- ################################################################### -->

  <profile:Advertisement rdf:ID="CongoBuy_Advertisement">
    <profile:serviceName>CongoBuy</profile:serviceName>
    <profile:textDescription>
      A B2C bookbuying example for DAML.

      Illustrating the use of the process model. The basic service is a
      buybook service from www.congo.com. The service can be treated as
      ATOMIC, ie. Given certain inputs and parameters, the service provides
      certain outputs and has specific effects. The service can also be
      expanded to specify the composition of other component services. The
      atomic service is the CongoBuy Service which has a bunch of inputs,
      paramters, outputs and effects. The expanded version of the service
      includes an arrangement of processes LocateBook, PutInCart, SignIn,
      CreateAcct, CreateProfile, LoadProfile, SpecifyDeliveryDetails,
      FinalizeBuy each with its own i/o spec. 
    </profile:textDescription>

    <profile:providedBy>
      <profile:ServiceProvider rdf:ID="DAML-S-Coalition">
	<profile:name>Congo</profile:name>
	<profile:phone>650 286 8870 </profile:phone>
	<profile:fax>650 286 5596 </profile:fax>
	<profile:email>help@congo.com</profile:email>
	<profile:physicalAddress>
	  1a, Brazillian Cliff Hights,
	  CA 12321,
	  USA
	</profile:physicalAddress>
	<profile:webURL>http://www.daml.ri.cmu.edu/services/congo.html</profile:webURL>
      </profile:ServiceProvider>
    </profile:providedBy>

    <profile:qualityRating>Superb</profile:qualityRating>

    <profile:serviceCategory>products</profile:serviceCategory>

    <profile:serviceType>B2C</profile:serviceType>

    <profile:communicationThru>KQML</profile:communicationThru>

    <profile:geographicRadius rdf:resource="&usregion;#PacificWest" />
    <profile:geographicRadius rdf:resource="&usregion;#NewEngland" />
    <profile:geographicRadius rdf:resource="&usregion;#Mid-Atlantic" />

    <profile:intendedPurpose rdf:resource="&congo;#FinalizeBuy">
      To buy and deliver books
    </profile:intendedPurpose>

    <!-- Accessconditions -->
    <acctExistsPrecondition />

    <!-- Preconditions -->
    <creditExistsPrecondition />

    <!-- Inputs -->
    <bookName />
    <creditCardNumber />
    <creditCardType />
    <creditCardExpirationDate />
    <acctName />
    <password />
    <deliveryAddress />

    <!-- Outputs -->
    <eReceiptOutput />
    <shippingOrderOutput />

    <!-- Effects -->
    <buyEffect />

  </profile:Advertisement>

</rdf:RDF>
