<?xml version='1.0' encoding='ISO-8859-1'?>
<!--
  This document uses entities as abbreviations for URIs.
  For a version with entities references expanded, load the source into 
  Internet Explorer.
  -->

<!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/0.7/Service.daml">
  <!ENTITY process "http://www.daml.org/services/daml-s/0.7/Process.daml">
  <!ENTITY DEFAULT "http://www.daml.org/services/daml-s/0.7/Grounding.daml">
]>


<rdf:RDF
  xmlns:rdf=	"&rdf;#"
  xmlns:rdfs=	"&rdfs;#"
  xmlns:daml=	"&daml;#"
  xmlns:xsd=	 "&xsd;#"
  xmlns:service= "&service;#"
  xmlns:process= "&process;#"
  xmlns=	"&DEFAULT;#">

<daml:Ontology rdf:about="">
  <daml:versionInfo>
    $Id: Grounding.daml,v 1.10 2003/01/10 01:24:23 martin Exp $
  </daml:versionInfo>
  <rdfs:comment>
    Upper-level DAML ontology for Groundings that employ WSDL.
    Part of the DAML-S ontology; see http://www.daml.org/services/.

    Note that other approaches to grounding may be accommodated
    within the DAML-S framework.  This is the only approach produced
    to date by the DAML-S Coalition.

    This version does not cover all possible cases of mapping
    DAML-S atomic processes onto WSDL services.  For information
    about the limits of this version, please see documentation
    available on the WebSite mentioned above.

  </rdfs:comment>
  <daml:imports rdf:resource="http://www.daml.org/2001/03/daml+oil"/>
  <daml:imports rdf:resource="http://www.daml.org/services/daml-s/0.7/Process.daml"/>
</daml:Ontology>

<!--######################################################
    Preliminaries
  ######################################################-->

<!--######################################################
    WsdlMessageMap
  ######################################################-->

<daml:Class rdf:ID="WsdlMessageMap">
  <rdfs:comment>
    A class that relates a parameter (input or output) of an atomic
    process to the corresponding WSDL message part.
  </rdfs:comment>
</daml:Class>

<!-- damlsParameter -->

<daml:ObjectProperty rdf:ID="damlsParameter">
  <rdfs:comment>
    An input or output property of an atomic process.
  </rdfs:comment>
  <rdf:type rdf:resource="http://www.daml.org/2001/03/daml+oil#UniqueProperty"/>
  <rdfs:domain rdf:resource="#WsdlMessageMap"/>
  <rdfs:range rdf:resource="&process;#parameter"/>
</daml:ObjectProperty>

<daml:Class rdf:about="#WsdlMessageMap">
  <rdfs:comment>
    A WsdlMessageMap must have a single instance of damlsParameter.
  </rdfs:comment>
  <rdfs:subClassOf>
    <daml:Restriction daml:cardinality="1">
      <daml:onProperty rdf:resource="#damlsParameter"/>
    </daml:Restriction>
  </rdfs:subClassOf>
</daml:Class>

<!-- wsdlMessagePart -->

<daml:DatatypeProperty rdf:ID="wsdlMessagePart">
  <rdfs:comment>
    A URI for a WSDL message part element.
  </rdfs:comment>
  <rdf:type rdf:resource="http://www.daml.org/2001/03/daml+oil#UniqueProperty"/>
  <rdfs:domain rdf:resource="#WsdlMessageMap"/>
  <rdfs:range rdf:resource="&xsd;#uriReference"/>
</daml:DatatypeProperty>

<daml:Class rdf:about="#WsdlMessageMap">
  <rdfs:comment>
    A WsdlMessageMap must have a single instance of wsdlMessagePart.
  </rdfs:comment>
  <rdfs:subClassOf>
    <daml:Restriction daml:cardinality="1">
      <daml:onProperty rdf:resource="#wsdlMessagePart"/>
    </daml:Restriction>
  </rdfs:subClassOf>
</daml:Class>

<daml:Class rdf:ID="WsdlMessageMapList">
<rdfs:comment> A list of WsdlMessageMap instances </rdfs:comment>
  <rdfs:subClassOf rdf:resource="http://www.daml.org/2001/03/daml+oil#List"/>
  <rdfs:subClassOf>
   <daml:Restriction>
     <daml:onProperty rdf:resource="http://www.daml.org/2001/03/daml+oil#item"/>
     <daml:toClass rdf:resource="#WsdlMessageMap"/>
   </daml:Restriction>
  </rdfs:subClassOf>
</daml:Class>

<!--######################################################
    WsdlGrounding
    ######################################################-->

<daml:Class rdf:ID="WsdlGrounding">
  <rdfs:comment>
    A WsdlGrounding is just a collection of WsdlAtomicProcessGrounding
    instances, one for each atomic process in the process model.
  </rdfs:comment>
  <rdfs:subClassOf rdf:resource="&service;#ServiceGrounding"/>
</daml:Class>

<daml:Property rdf:ID="hasAtomicProcessGrounding">
  <rdfs:domain rdf:resource="#WsdlGrounding"/>
  <rdfs:range rdf:resource="#WsdlAtomicProcessGrounding"/>
</daml:Property>

<!--######################################################
    WsdlAtomicProcessGrounding
    ######################################################-->

<daml:Class rdf:ID="WsdlAtomicProcessGrounding">
  <rdfs:comment>
    A class that relates elements of a DAML-S atomic process to a
    WSDL specification.
  </rdfs:comment>
</daml:Class>

<!-- damlsProcess -->

<daml:UniqueProperty rdf:ID="damlsProcess">
  <rdfs:comment>
    The atomic process to which this grounding applies.
  </rdfs:comment>
  <rdfs:domain rdf:resource="#WsdlAtomicProcessGrounding"/>
  <rdfs:range rdf:resource="&process;#AtomicProcessPowerSet"/>
</daml:UniqueProperty>

<daml:Class rdf:about="#WsdlAtomicProcessGrounding">
  <rdfs:comment>
    A WsdlAtomicProcessGrounding must have a single instance of damlsProcess.
  </rdfs:comment>
  <rdfs:subClassOf>
    <daml:Restriction daml:cardinality="1">
      <daml:onProperty rdf:resource="#damlsProcess"/>
    </daml:Restriction>
  </rdfs:subClassOf>
</daml:Class>

<!-- wsdlOperation  -->

<daml:DatatypeProperty rdf:ID="wsdlOperation">
  <rdfs:comment>
    A URI indicating the WSDL operation to which the atomic process
    (referenced by damlsProcess) corresponds.
  </rdfs:comment>
  <rdf:type rdf:resource="http://www.daml.org/2001/03/daml+oil#UniqueProperty"/>
  <rdfs:domain rdf:resource="#WsdlAtomicProcessGrounding"/>
  <rdfs:range rdf:resource="&xsd;#uriReference"/>
</daml:DatatypeProperty>

<daml:Class rdf:about="#WsdlAtomicProcessGrounding">
  <rdfs:comment>
    A WsdlAtomicProcessGrounding must have a single instance of wsdlOperation.
  </rdfs:comment>
  <rdfs:subClassOf>
    <daml:Restriction daml:cardinality="1">
      <daml:onProperty rdf:resource="#wsdlOperation"/>
    </daml:Restriction>
  </rdfs:subClassOf>
</daml:Class>

<!-- wsdlInputMessage -->

<daml:DatatypeProperty rdf:ID="wsdlInputMessage">
  <rdfs:comment>
    A URI for the WSDL message element corresponding
    to the inputs of the atomic process.
  </rdfs:comment>
  <rdf:type rdf:resource="http://www.daml.org/2001/03/daml+oil#UniqueProperty"/>
  <rdfs:domain rdf:resource="#WsdlAtomicProcessGrounding"/>
  <rdfs:range rdf:resource="&xsd;#uriReference"/>
</daml:DatatypeProperty>

<!-- wsdlInputMessageParts -->

<daml:UniqueProperty rdf:ID="wsdlInputMessageParts">
  <rdfs:comment>
    A list of WsdlMessageMap instances, one for each
    input of the atomic process.
  </rdfs:comment>
  <rdfs:domain rdf:resource="#WsdlAtomicProcessGrounding"/>
  <rdfs:range rdf:resource="#WsdlMessageMapList"/>
</daml:UniqueProperty>

<!-- wsdlOutputMessage -->

<daml:DatatypeProperty rdf:ID="wsdlOutputMessage">
  <rdfs:comment>
    A URI for the WSDL message element corresponding
    to the outputs of the atomic process.
  </rdfs:comment>
  <rdf:type rdf:resource="http://www.daml.org/2001/03/daml+oil#UniqueProperty"/>
  <rdfs:domain rdf:resource="#WsdlAtomicProcessGrounding"/>
  <rdfs:range rdf:resource="&xsd;#uriReference"/>
</daml:DatatypeProperty>

<!-- wsdlOutputMessageParts -->

<daml:UniqueProperty rdf:ID="wsdlOutputMessageParts">
  <rdfs:comment>
    A list of WsdlMessageMap instances, one for each
    output of the atomic process.
  </rdfs:comment>
  <rdfs:domain rdf:resource="#WsdlAtomicProcessGrounding"/>
  <rdfs:range rdf:resource="#WsdlMessageMapList"/>
</daml:UniqueProperty>

<!-- wsdlReference -->

<daml:DatatypeProperty rdf:ID="wsdlReference">
  <rdfs:comment>
    A URI indicating the version of WSDL being used.
  </rdfs:comment>
  <rdf:type rdf:resource="http://www.daml.org/2001/03/daml+oil#UniqueProperty"/>
  <rdfs:domain rdf:resource="#WsdlAtomicProcessGrounding"/>
  <rdfs:range rdf:resource="&xsd;#uriReference"/>
</daml:DatatypeProperty>

<daml:Class rdf:about="#WsdlAtomicProcessGrounding">
  <rdfs:comment>
    A WsdlAtomicProcessGrounding must have a single instance of wsdlReference.
  </rdfs:comment>
  <rdfs:subClassOf>
    <daml:Restriction daml:cardinality="1">
      <daml:onProperty rdf:resource="#wsdlReference"/>
    </daml:Restriction>
  </rdfs:subClassOf>
</daml:Class>

<!-- otherReference -->

<daml:DatatypeProperty rdf:ID="otherReference">
  <rdfs:comment>
    A URI indicating a relevant standards document.
  </rdfs:comment>
  <rdfs:domain rdf:resource="#WsdlAtomicProcessGrounding"/>
  <rdfs:range rdf:resource="&xsd;#uriReference"/>
</daml:DatatypeProperty>

<!-- wsdlDocument -->

<daml:DatatypeProperty rdf:ID="wsdlDocument">
  <rdfs:comment>
    A URI indicating a WSDL document to
    which this grounding refers.
  </rdfs:comment>
  <rdfs:domain rdf:resource="#WsdlAtomicProcessGrounding"/>
  <rdfs:range rdf:resource="&xsd;#uriReference"/>
</daml:DatatypeProperty>

</rdf:RDF>


