<?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.xsd">
  <!ENTITY service "http://www.daml.org/services/owl-s/0.9/Service.owl">
  <!ENTITY process "http://www.daml.org/services/owl-s/0.9/Process.owl">
  <!ENTITY DEFAULT "http://www.daml.org/services/owl-s/0.9/Profile.owl">
  <!ENTITY country "http://www.daml.org/services/owl-s/0.9/Country.owl">
  <!-- <!ENTITY country "http://www.daml.ri.cmu.edu/ont/Country.owl"> -->
]>

<!--
This document uses entity types as a shorthand for URIs.
For a version with unexpanded entities, try loading this source
into Internet Explorer.
  -->

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

  <daml:Ontology>
    <daml:versionInfo>
      $Id: Profile.owl,v 1.20 2003/03/24 15:16:59 martin Exp $
    </daml:versionInfo> 
    <daml:comment>
      Process and Service Coalition
      First cut at OWL ontology for Advertisements (i.e. Profiles) based
      upon the Service Model.
      Version of Profile for OWL-S 0.9 Release
      Created by Terry Payne (terryp@cs.cmu.edu).
      Modified by Massimo Paolucci (paolucci@cs.cmu.edu)

    </daml:comment> 
<!--  
  -->
    <daml:imports rdf:resource="&rdf;" /> 
    <daml:imports rdf:resource="&daml;" />
    <daml:imports rdf:resource="&service;" /> 
    <daml:imports rdf:resource="&process;" /> 
  </daml:Ontology>
  

  
  

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

<!--  
  Organization of this file:
  1. Log of changes 
  2. Definition of Profile
     It provides a definition of the Profile class
  3. Non-Functional Properties
     It provides a definition of properties such as name of the
     service, contact information, quality of the service, and
     additional information that may help to evaluate the service
  4. Functional Properties
     Input/Output/Precondition/Effects that help with the
     specification of what the service provides
  5. Additional Classes
     These are classes that are needed to specify details of the
     Profile
     - Service Category
     - Service Parameters
     - Quality Rating
  6. Deprecated 
     Classes and properties that were of relevance in the previous
     versions of the profile, but they are no longer relevant.
     They are maintained here as deprecated, but will be
     removed removed in following versions of the service profile
  --> 

<!--  ############ ########### ############ ############ ########### --> 
<!--  ############                                       ########### --> 
<!--  ############    LOG OF CHANGES from 0.6 to 0.7     ########### --> 
<!--  ############                                       ########### --> 
<!--  ############ ########### ############ ############ ########### --> 
  
  <!--
    * Deprecations:
       - OfferedService
       - NeededService
       - ServiceRequester
       - ServiceProvider
       - serviceType
       - intendedPurpose
       - role
       - requestedBy
       - providedBy
       - domainResource
       - geographicRadius
       - degreeOfQuality
       - qualityGuarantee
       - communicationThru
       - Location
    
    * ParameterDescription 
       - parameterName turned from DAML:#Thing to XSD:#string.  The name
                       of a parameter is just a string
       - restrictedTo: added maxCardinality restriction to 1
       - refersTo: added maxCardinality restriction to 1
    
    * Added ContactInformation to collect information about whom to
       refer to when using the service
    
    * Added title property to Actor
    
    * Added examples of service categories
       - Naics
       - UNSPSC
    
    * Added examples of Service Parameters
       - MaxResponseTime
       - AverageResponseTime
       - GeographicRadius
    
    * Added examples of QualityRating
       - D&B
  -->
  
  

<!--  ############ ########### ############ ############ ########### --> 
<!--  ############                                       ########### --> 
<!--  ############               PROFILE                 ########### --> 
<!--  ############                                       ########### --> 
<!--  ############ ########### ############ ############ ########### --> 

  
  <!-- 
      Profile is a subclass of ServiceProfile.  It is used to
      acknowledge that there may be different ways to profile services
      that are different from the way we expressed it so far.
    -->
  
  
  <daml:Class rdf:ID="Profile">
    <daml:label>Profile</daml:label> 
    <rdfs:subClassOf rdf:resource="&service;#ServiceProfile" /> 
    <daml:comment>
      Definition of Profile
    </daml:comment>
  </daml:Class>
  
  
  
  
<!--  ############ ########### ############ ############ ########### --> 
<!--  ############                                       ########### --> 
<!--  ############                PROFILE                ########### --> 
<!--  ############      NON FUNCTIONAL PROPERTIES        ########### --> 
<!--  ############                                       ########### --> 
<!--  ############ ########### ############ ############ ########### --> 

  <!--
  	The Service Name refers to the name of the service that is being
  	offered.
    -->
  <daml:DatatypeProperty rdf:ID="serviceName">
    <daml:domain rdf:resource="#Profile"/>
    <daml:range rdf:resource="&xsd;#string"/>
  </daml:DatatypeProperty>
  
  <!-- there is only one name per profile -->

  <daml:Class rdf:about="#Profile">
    <rdfs:comment>
    A profile can have only one name
    </rdfs:comment>
    <rdfs:subClassOf>
      <daml:Restriction daml:cardinality="1">
	<daml:onProperty rdf:resource="#serviceName"/>
      </daml:Restriction>
    </rdfs:subClassOf>
  </daml:Class>

  <!--
  	The TextDescription provides a brief description of the service.
  	It summarisese what the service offers, or to describe what
	service is requested.
    -->
  <daml:DatatypeProperty rdf:ID="textDescription">
    <daml:domain rdf:resource="#Profile"/>
    <daml:range rdf:resource="&xsd;#string"/>
  </daml:DatatypeProperty>
  
  <!-- there is only one text description per profile -->

  <daml:Class rdf:about="#Profile">
    <rdfs:comment>
    A profile can have only one text description
    </rdfs:comment>
    <rdfs:subClassOf>
      <daml:Restriction daml:cardinality="1">
	<daml:onProperty rdf:resource="#textDescription"/>
      </daml:Restriction>
    </rdfs:subClassOf>
  </daml:Class>

  

  <!--
  	Contact information is used to record contact information
    about the entity that issued the Profile.  It refers to Actor,
    that records address and other info that allows a receiver of the
    profile to contact directly the issuer.
    In general there may be more then one contact information: for
    instance, there can be one for the shipping department, another
    for the payment department, one for the technical support and so
    on.  For this purpose, the field title is added to the definition
    of Actor.
    NOTE: contact information is intended to be interpreted by human
    users, rather than to be interpreted automatically as is the case
    of other fields
    -->
  <daml:ObjectProperty rdf:ID="contactInformation">
    <daml:domain rdf:resource="#Profile"/>
    <daml:range rdf:resource="#Actor"/>
  </daml:ObjectProperty>

  

  <!--
    has_process is a pointer the process that is associated with the
    service.
    -->

  <daml:UniqueProperty rdf:ID="has_process">
    <daml:domain rdf:resource="#Profile"/>
    <daml:range rdf:resource="&process;#Process"/>
  </daml:UniqueProperty>

  
  
  <!--
	serviceCategory refers to an ontology of services that
	may be on offer.  High level services could include
	classification on the bases of industry taxonomies such as
	NAICS or UNSPCP or DandB or others that may be used.
    
        Additionally, it can be used to specify other classification
        systems such as
		* Products
		* Problem Solving Capabilities
		* Commercial Services
		* Information
		etc
	No range restrictions are placed on this property at present.
	Specific service descriptions will specialise this by
	restricting the range appropriately using subPropertyOf.
    
        Examples of usage of serviceCategory are given below
    -->

  <daml:Property rdf:ID="serviceCategory">
    <daml:domain rdf:resource="#Profile"/>
    <daml:range rdf:resource="#ServiceCategory"/>
  </daml:Property>
  
  
  
  <!-- 
	serviceParameters - An expandable list of properties that
	may accompany a profile description.

	The range of each property is unconstrained, i.e. no range restrictions
	are placed on the service parameters at present. Specific service
	parameters will specialise this property by restricting the range
	appropriately and using subPropertyOf.
    -->

  <daml:Property rdf:ID="serviceParameter">
    <daml:domain rdf:resource="#Profile"/>
    <daml:range rdf:resource="#ServiceParameter"/>
  </daml:Property>

  
  
  <!--
	qualityRating property represents an expandable list of
	rating RDF properties that may accompany a service profile.
	These ratings refer to industry accepted ratings, such as the
	Dun and Bradstreet Rating for businesses, or the Star rating
	for Hotels. 

  -->

  <daml:Property rdf:ID="qualityRating">
    <daml:domain rdf:resource="#Profile"/>
    <daml:range rdf:resource="#QualityRating"/>
  </daml:Property>

  
  
<!--  ############ ########### ############ ############ ########### --> 
<!--  #######                                                 ###### --> 
<!--  #######    SERVICE PROFILE FUNCTIONALITY DESCRIPTION    ###### --> 
<!--  #######                                                 ###### --> 
<!--  ############ ########### ############ ############ ########### --> 

<!-- 
  The specification of the functionalites of a service is based on the
  effects it produces in its environment.  Specifically, in order to
  process a service requires some preconditions to be satisfied, and as
  a result of the computation some effects emerge.  In addition, the
  service requires some inputs to compute on and produces some outputs
  as result of its computation.
  As an example, take a for-pay news service:  its precondition could be a
  valid credit card, its input could be the topic of the news requested,
  the output could be the news reported, and the effects is that the
  credit card is charged.
  Inputs, outputs, preconditions and effects play an essential role
  during service matching. The matching engine will have to make sure
  that the inputs, outputs, preconditions and effects expected by the
  requester match the inputs, outputs, preconditions and effects
  provided by the services selected.
  -->
 
  
<!--  ############ ########### ############ ############ ########### --> 


  <!--
    Profiles describe the services functional behavior through the use of
    parameters, whose subpropertied are inputs, outputs, preconditions
    and effects.
    The definition of ParameterDescription does not restrict
    parameters at all. An input can be any kind of daml object
    (Thing).  The specialization is left to the definition of subproperties.
    -->
    
  <daml:ObjectProperty rdf:ID="parameter">
    <daml:domain rdf:resource="#Profile"/>
    <daml:range rdf:resource="#ParameterDescription"/>
  </daml:ObjectProperty>

  <!--
	An input is a type of parameter and is a property of a
    profile. Inputs describe the information that is exprected by the
    service.
  -->

  <daml:ObjectProperty rdf:ID="input"> 
    <daml:subPropertyOf rdf:resource="#parameter" />
  </daml:ObjectProperty>

  <!-- 
	An output is a type of parameter and is a property of
	a profile. Outputs describe information that is generated by
	the service to work.
  -->

  <daml:ObjectProperty rdf:ID="output"> 
    <daml:subPropertyOf rdf:resource="#parameter" />
  </daml:ObjectProperty>

  <!--
	Precondition represent a state of the world that is expected
	for the service to work appropriately.  For example, a
	precondition is that some money is available to pay for some
	goods, or that the goods are available and so on.  At the time
	of modeling, it is important to consider the point of view of
	who receives the profile.  For example, if a requester of the
	service receives a profile, it cannot check whether the
	provider has the good in storage, so that is a precondition
	that may not be satisfied.  On the other side, the requester
	may be able to transfer money on some account.
  -->

  <daml:ObjectProperty rdf:ID="precondition">  
    <daml:subPropertyOf rdf:resource="#parameter" />
  </daml:ObjectProperty>

  
  <!--
	Effect represent conditions that are expected to result after
	the execution of the service.  For example, a credit card is
	charged, goods are delivered as so on.
   -->

  <daml:ObjectProperty rdf:ID="effect"> 
    <daml:subPropertyOf rdf:resource="#parameter" />
  </daml:ObjectProperty>  



  
 
  
<!--   ############ ########### ############ ############ ########### --> 
<!--   ############                                       ########### --> 
<!--   ############      ADDITIONAL CLASSES THAT          ########### --> 
<!--   ############      HELP TO DEFINE PROPERTIES OF     ########### --> 
<!--   ############      PROFILE                          ########### --> 
<!--   ############                                       ########### --> 
<!--   ############ ########### ############ ############ ########### --> 

  
  <!-- Parameter description associates a name to the value of a parameter -->

  <daml:Class rdf:ID="ParameterDescription"/> 


  <!-- ParameterName is the name of the actual parameter, which could be just a literal,
       or perhaps the uri of the process parameter (a property)
    -->
  <daml:DatatypeProperty rdf:ID="parameterName">
    <daml:domain rdf:resource="#ParameterDescription"/>
    <daml:range rdf:resource="&xsd;#string"/>
  </daml:DatatypeProperty>


  <!-- restrictedTO points to the class that is the range of the parameter described -->

  <daml:Property rdf:ID="restrictedTo">
    <daml:domain rdf:resource="#ParameterDescription"/>
    <daml:comment>
      Range is left unspecified, to allow for both OWL classes and
      XSD datatypes.
    </daml:comment>
    <!-- <daml:range  rdf:resource="&daml;#Class"/> -->
  </daml:Property>

  <daml:Class rdf:about="#ParameterDescription">
    <daml:comment>
    a Parameter is restricted to refer to only one concept in some
    ontology
    </daml:comment>
    <rdfs:subClassOf>
      <daml:Restriction daml:cardinality="1">
	<daml:onProperty rdf:resource="#restrictedTo"/>
      </daml:Restriction>
    </rdfs:subClassOf>
  </daml:Class>

  <!-- RefersTo points to the inputParameter in the Process Model -->

  <daml:ObjectProperty rdf:ID="refersTo">
    <daml:domain rdf:resource="#ParameterDescription"/>
    <daml:range  rdf:resource="&process;#parameter"/> 
  </daml:ObjectProperty>

  <daml:Class rdf:about="#ParameterDescription">
    <daml:comment>
    a Parameter is restricted refer to only one parameter in the
      process model
    </daml:comment>
    <rdfs:subClassOf>
      <daml:Restriction daml:cardinality="1">
	<daml:onProperty rdf:resource="#refersTo"/>
      </daml:Restriction>
    </rdfs:subClassOf>
  </daml:Class>


  <!-- On 0.6
       We might also need to specify the cardinality, but I haven't
       done that here. My tendency would be to make these (min, max,
       cardinality) additional properties of the ParemeterDescription,
       as oposed to making the restrictedTo point to a real
       Restriction, but I'm not adamant about it. - Mark Burstein -
    
       On 0.7
       I added cardinality restrictions because I thought they were
       needed.  Can we really have a parameter that points to more
       than one concept?  I always thought that there was an
       "implicit" restriction to 1. so I made it exlicit. 
       - Massimo Paolucci -
    -->
  
  
<!--  ############ ########### ############ ############ ########### --> 
<!--  ############ ########### ############ ############ ########### --> 
<!--  ############ ########### ############ ############ ########### --> 
  
  
  
  <!-- 
    ServiceCategory describes categories of services on the bases of
    some classification that may be outside OWL-S and possibly
    outside OWL. In the latter case, they may require some
    specialized reasoner if any inference has to be done with it
    -->

  <daml:Class rdf:ID="ServiceCategory"/>  


  <!-- categoryName is the name of the actual category, which could be just a literal,
       or perhaps the uri of the process parameter (a property)
    -->
  <daml:DatatypeProperty rdf:ID="categoryName">
    <daml:domain rdf:resource="#ServiceCategory"/>
    <daml:range rdf:resource="&xsd;#string"/>
  </daml:DatatypeProperty>
  
  
  
  <!-- each serviceCategory can refer to only one categoryName -->

  <daml:Class rdf:about="#ServiceCategory">
    <daml:comment>
    a ServiceCategory is restricted to refer to only onename
    </daml:comment>
    <rdfs:subClassOf>
      <daml:Restriction daml:cardinality="1">
	<daml:onProperty rdf:resource="#categoryName"/>
      </daml:Restriction>
    </rdfs:subClassOf>
  </daml:Class>


  
  <!-- taxonomy stores a reference to the taxonomy scheme.  It can be
  either the URL of the taxonomy, or the name of the taxonomy or
  anything else.  -->

  <daml:DatatypeProperty rdf:ID="taxonomy">
    <daml:domain rdf:resource="#ServiceCategory"/>
    <daml:range  rdf:resource="&xsd;#string"/> 
  </daml:DatatypeProperty>
  
  
  <!-- each serviceCategory can refer to only one taxonomy, to limit
  the possibility of confusion. -->

  <daml:Class rdf:about="#ServiceCategory">
    <daml:comment>
    a ServiceCategory is restricted to refer to only one taxonomy
    </daml:comment>
    <rdfs:subClassOf>
      <daml:Restriction daml:cardinality="1">
	<daml:onProperty rdf:resource="#taxonomy"/>
      </daml:Restriction>
    </rdfs:subClassOf>
  </daml:Class>


  <!-- value points to the value in a specific taxonomy
    There may be more than one value for each taxonomy, so no
    restriction is added here.
    -->

  <daml:DatatypeProperty rdf:ID="value">
    <daml:domain rdf:resource="#ServiceCategory"/>
    <daml:range  rdf:resource="&xsd;#string"/> 
  </daml:DatatypeProperty>
  
  
  <!-- each serviceCategory can refer to only one value, 
    if more then one value applies, then they have to be added as a
    string with space separators -->

  <daml:Class rdf:about="#ServiceCategory">
    <daml:comment>
    a ServiceCategory is restricted to refer to only one taxonomy
    </daml:comment>
    <rdfs:subClassOf>
      <daml:Restriction daml:cardinality="1">
	<daml:onProperty rdf:resource="#value"/>
      </daml:Restriction>
    </rdfs:subClassOf>
  </daml:Class>
  
  
  <!-- Often taxonomies associate a code to each type of service.
    The following property stores the code -->
  <daml:DatatypeProperty rdf:ID="code">
    <daml:domain rdf:resource="#ServiceCategory"/>    
    <daml:range rdf:resource="&xsd;#string"/>
  </daml:DatatypeProperty>
  
  
  <!-- each serviceCategory can refer to only one code, 
    if more then one value applies, then they have to be added as a
    string with space separators 
    There may be of course a problem of synchronization with the value -->

  <daml:Class rdf:about="#ServiceCategory">
    <daml:comment>
    a ServiceCategory is restricted to refer to only one taxonomy
    </daml:comment>
    <rdfs:subClassOf>
      <daml:Restriction daml:cardinality="1">
	<daml:onProperty rdf:resource="#code"/>
      </daml:Restriction>
    </rdfs:subClassOf>
  </daml:Class>
  
  
  
<!--  ############ ########### ############ ############ ########### --> 
<!--  ############ ########### ############ ############ ########### --> 
<!--  ############ ########### ############ ############ ########### --> 
  
  
  
  <!-- 
    ServiceParameter describes service parameters.
    In general we can think this class as the root of an ontology of
    Service Parameters of different types.  Other types of
    ServiceParameters may expand this definition by adding other
    properties.
    -->

  <daml:Class rdf:ID="ServiceParameter"/> 


  <!-- ParameterName is the name of the actual parameter, which could be just a literal,
       or perhaps the uri of the process parameter (a property)
    -->
  <daml:DatatypeProperty rdf:ID="serviceParameterName">
    <daml:domain rdf:resource="#ServiceParameter"/>
    <daml:range rdf:resource="&xsd;#string"/>
  </daml:DatatypeProperty>

  <daml:Class rdf:about="#ServiceParameter">
    <daml:comment>
    A ServiceParameter should have at most 1 name (more precisely only
      one serviceParameterName)
    </daml:comment>
    <rdfs:subClassOf>
      <daml:Restriction daml:cardinality="1">
	<daml:onProperty rdf:resource="#serviceParameterName"/>
      </daml:Restriction>
    </rdfs:subClassOf>
  </daml:Class>


  <!-- sParameter points to the value of the parameter within some
    OWL ontology -->

  <daml:ObjectProperty rdf:ID="sParameter">
    <daml:domain rdf:resource="#ServiceParameter"/>
    <daml:range  rdf:resource="&daml;#Thing"/> 
  </daml:ObjectProperty>

  <daml:Class rdf:about="#ServiceParameter">
    <daml:comment>
    a Parameter is restricted to refer to only one concept in some
    ontology
    </daml:comment>
    <rdfs:subClassOf>
      <daml:Restriction daml:cardinality="1">
	<daml:onProperty rdf:resource="#sParameter"/>
      </daml:Restriction>
    </rdfs:subClassOf>
  </daml:Class>
  
  
<!--  ############ ########### ############ ############ ########### --> 
<!--  ############ ########### ############ ############ ########### --> 
<!--  ############ ########### ############ ############ ########### --> 
  
  
  
  <!-- 
     QualityRating describes quality rating services..
    In general this class is the root of an ontology of
    Service Parameters of different types.  Other types of
    ServiceParameters may expand this definition by adding other
    properties.
    -->

  <daml:Class rdf:ID="QualityRating"/> 


  <!-- rating name points to the name of the rating service
    -->
  <daml:DatatypeProperty rdf:ID="ratingName">
    <daml:domain rdf:resource="#QualityRating"/>
    <daml:range rdf:resource="&xsd;#string"/>
  </daml:DatatypeProperty>


  <!-- store for the value of the rating within a given rating service -->

  <daml:ObjectProperty rdf:ID="rating">
    <daml:domain rdf:resource="#QualityRating"/>
    <daml:range  rdf:resource="&daml;#Thing"/> 
  </daml:ObjectProperty>
  
  



 
<!--  ############ ########### ############ ############ ########### --> 
<!--  ############ ########### ############ ############ ########### --> 
<!--  ############ ########### ############ ############ ########### --> 
  <!--
    The class Actor contains  details about the organisation or
    individual that either offers a service or requests the service.
  -->

  <daml:Class rdf:ID="Actor">
    <daml:label>Actor</daml:label> 
    <rdfs:subClassOf rdf:resource="&daml;#Thing" /> 
    <daml:comment>
      Actor represents a Requester or Provider who might request or offer a service.
    </daml:comment>
  </daml:Class>

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

  <!-- Name, type of company etc of Service Provider or the name of
         some officer that is referred by the Profile -->
  <daml:DatatypeProperty rdf:ID="name">
    <daml:domain rdf:resource="#Actor"/>
    <daml:range rdf:resource="&xsd;#string"/>
  </daml:DatatypeProperty>
   

  <!-- Title of whom is contacted.  It can be CEO, or
    ServiceDepartment or whatever deemed appropriate -->
  <daml:DatatypeProperty rdf:ID="title">
    <daml:domain rdf:resource="#Actor"/>
    <daml:range rdf:resource="&xsd;#string"/>
  </daml:DatatypeProperty>

  <daml:DatatypeProperty rdf:ID="phone">
    <daml:domain rdf:resource="#Actor"/>
    <daml:range rdf:resource="&xsd;#string"/>
  </daml:DatatypeProperty>

  <daml:DatatypeProperty rdf:ID="fax">
    <daml:domain rdf:resource="#Actor"/>
    <daml:range rdf:resource="&xsd;#string"/>
  </daml:DatatypeProperty>

  <daml:DatatypeProperty rdf:ID="email">
    <daml:domain rdf:resource="#Actor"/>
    <daml:range rdf:resource="&xsd;#string"/>
  </daml:DatatypeProperty>

  <daml:DatatypeProperty rdf:ID="physicalAddress">
    <daml:domain rdf:resource="#Actor"/>
    <daml:range rdf:resource="&xsd;#string"/>
  </daml:DatatypeProperty>

  <!-- A URL to the companies web site -->
  <daml:DatatypeProperty rdf:ID="webURL">
    <daml:domain rdf:resource="#Actor"/>
    <daml:range rdf:resource="&xsd;#string"/>
  </daml:DatatypeProperty>
  
  
  
  
<!--   ############ ########### ############ ############ ########### --> 
<!--   ############                                       ########### --> 
<!--   ############          SERVICE CATEGORIES           ########### --> 
<!--   ############                                       ########### --> 
<!--   ############ ########### ############ ############ ########### --> 

  <!--
    This section contains some examples of service category that may
    be useful to define services.
    NOTE: that these service categories show how service categories
    are used in the OWL-S Profile.  By no means, the list is
    restricted to them, indeed many more can be added.  
    -->
  
  
  <!-- 
    NAICS is one of the industrial taxonomies widely used in the
    real world.  This class shows the bases of how NAICS can be used
    within OWL-S
    -->
  
  <daml:Class rdf:ID="NAICS">
    <daml:comment>
      Hook to the NAICS taxonomy 
    </daml:comment>
    <rdfs:subClassOf rdf:resource="#ServiceCategory"/>
    <rdfs:subClassOf>
      <daml:Restriction>
	<daml:onProperty rdf:resource="#categoryName"/>
	<daml:hasValue>
	  NAICS 
	</daml:hasValue>
      </daml:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <daml:Restriction>
	<daml:onProperty rdf:resource="#taxonomy"/>
	<daml:hasValue>
	  www.naics.com
	</daml:hasValue>
      </daml:Restriction>
    </rdfs:subClassOf>
  </daml:Class>
  
  
  <!-- 
    UNSPSC is one of the industrial taxonomies widely used in the
    real world.  This class shows the bases of how UNSPSC can be used
    within OWL-S
    -->
  
  <daml:Class rdf:ID="UNSPSC">
    <daml:comment>
      Hook to the UNSPSC taxonomy 
      </daml:comment>
    <rdfs:subClassOf rdf:resource="#ServiceCategory"/>
    <rdfs:subClassOf>
      <daml:Restriction>
	<daml:onProperty rdf:resource="#categoryName"/>
	<daml:hasValue>
	   UNSPSC
	</daml:hasValue>
      </daml:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <daml:Restriction>
	<daml:onProperty rdf:resource="#taxonomy"/>
	<daml:hasValue>
	  www.un-spsc.net
	</daml:hasValue>
      </daml:Restriction>
    </rdfs:subClassOf>
  </daml:Class>
  
  
  
  
<!--   ############ ########### ############ ############ ########### --> 
<!--   ############                                       ########### --> 
<!--   ############           SERVICE PARAMETERS          ########### --> 
<!--   ############                                       ########### --> 
<!--   ############ ########### ############ ############ ########### --> 

  <!--
    This section contains some examples of service parameters that may
    be useful to define services.
    NOTE: that these service parameters show how service parameters
    are used in the OWL-S Profile.  By no means, the list is
    restricted to them, indeed many more can be added.  
    -->
  
  <!-- Max resonse time by which the service will be delivered  
    It would be better defined as a rule
    -->

  <daml:Class rdf:ID="MaxResponseTime">
    <rdfs:subClassOf rdf:resource="#ServiceParameter"/>
    <rdfs:subClassOf>
      <daml:Restriction>
	<daml:onProperty rdf:resource="#sParameter"/>
	<daml:toClass rdf:resource="#Duration"/>
      </daml:Restriction>
    </rdfs:subClassOf>
  </daml:Class>
  
  <!-- Average resonse time by which the service will be delivered  
    It would be better defined as a rule
    -->

  <daml:Class rdf:ID="AverageResponseTime">
    <rdfs:subClassOf rdf:resource="#ServiceParameter"/>
    <rdfs:subClassOf>
      <daml:Restriction>
	<daml:onProperty rdf:resource="#sParameter"/>
	<daml:toClass rdf:resource="#Duration"/>
      </daml:Restriction>
    </rdfs:subClassOf>
  </daml:Class>
  
  
  <daml:Class rdf:ID="Duration" />
  
  <!-- 
    Version 0.6 contained GeographicRadius as one of the properties of
    Profile.  The property was then removed in 0.7 because it was felt
    that it was not general enough.  It is added here as an example of
    Service Parameter.
    -->

  <daml:Class rdf:ID="GeographicRadius">
    <rdfs:subClassOf rdf:resource="#ServiceParameter"/>
    <rdfs:subClassOf>
      <daml:Restriction>
	<daml:onProperty rdf:resource="#sParameter"/>
	<daml:toClass rdf:resource="&country;#Country"/>
      </daml:Restriction>
    </rdfs:subClassOf>
  </daml:Class>
  
  
  
  
<!--   ############ ########### ############ ############ ########### --> 
<!--   ############                                       ########### --> 
<!--   ############            QUALITY RATING             ########### --> 
<!--   ############                                       ########### --> 
<!--   ############ ########### ############ ############ ########### --> 

  <!--
    This section contains some examples of quality rating that may
    be useful to define services.
    NOTE: this quality rating show how the quality rating class
    is used in the OWL-S Profile.  By no means, the list is
    restricted to the rating defined here.
    -->
  

  <!-- Dun and Bradstreet Rating -->
  <daml:Class rdf:ID="DAndBRating">
    <rdfs:subClassOf rdf:resource="#QualityRating"/>
    <rdfs:subClassOf>
      <daml:Restriction>
	<daml:onProperty rdf:resource="#ratingName"/>
	<daml:hasValue>
          <xsd:integer rdf:value="Dun and Bradstreet Rating"/>
	</daml:hasValue>
      </daml:Restriction>
    </rdfs:subClassOf>
  </daml:Class>
  
  
<!--   ############ ########### ############ ############ ########### --> 
<!--   ############                                       ########### --> 
<!--   ############              DEPRECATED               ########### --> 
<!--   ############                                       ########### --> 
<!--   ############ ########### ############ ############ ########### --> 


  <!-- OWL-S is still under construction.  Some classes, or
  properties that we expected to need when the construction of the
  ontology started, are no longer of use.
    
    For back-compatibility reasons we maintain them classes, but we
  warn that they are deprecated, so that developers will have time
  to update their code and adheer with new versions of the ontology.
  Still, We cannot guarantee that the deprecated classes will be
  present in future versions of the ontology.  Furthermore, we cannot
  guarantee that the meaning of these classes and properties will be
  preserved after the deprecation.
    --> 
  
  <!-- DEPRECATED
    
    The determination of whether a service is offered or requested
    should come from the use of the profile, not be specified in the
    profile itself
    
    NOTE: OfferedService is now a bogus class because it depends on
    ServiceProfile rather than on Profile
    --> 

  <daml:Class rdf:ID="OfferedService">
    <daml:label>OfferedService</daml:label> 
    <rdfs:subClassOf rdf:resource="&service;#ServiceProfile"/>
  </daml:Class>

  
  
  <!-- DEPRECATED
    
    The determination of whether a service is offered or requested
    should come from the use of the profile, not be specified in the
    profile itself --> 

  <daml:Class rdf:ID="NeededService">
    <daml:label>NeededService</daml:label> 
    <rdfs:subClassOf rdf:resource="&service;#ServiceProfile"/>
  </daml:Class>
  

  
  <!-- We do not make any distinction between Provider and Requester,
  rather there is an actor that is responsible for the Profile, and we
  leave the interpretation of whether the Profile represents a service
  request or a service provided to the use of the Profile. -->
    
  <daml:Class rdf:ID="ServiceRequester">
    <daml:label>ServiceRequester</daml:label> 
    <rdfs:subClassOf rdf:resource="#Actor" /> 
    <daml:comment>
      ServiceRequester provides general contract details such as address, fax etc.
    </daml:comment>
  </daml:Class>

  <!-- deprecated for the same reason of ServiceRequester -->
   <daml:Class rdf:ID="ServiceProvider">
    <daml:label>ServiceProvider</daml:label> 
    <rdfs:subClassOf rdf:resource="#Actor" /> 
    <daml:comment>
      ServiceProvider provides general contract details such as address, fax etc.
    </daml:comment>
  </daml:Class>
  

  <!--
  	serviceType refers to a high level classification
  	of the service, for example B2B, B2C etc

	No range restrictions are placed on this property at present.
	Specific service descriptions will specialise this by
	restricting the range appropriately using subPropertyOf.
  -->
  <!-- Deprecated:  it is too close and redundant to
    the property serviceCategory -->
  
  <daml:Property rdf:ID="serviceType">
    <daml:domain rdf:resource="#Profile"/>
    <daml:range rdf:resource="&daml;#Thing"/>
  </daml:Property>

  <!-- 
	The IntendedPurpose provides information on what
	constitutes successful accomplishment of a service execution.

    -->
  <daml:Property rdf:ID="intendedPurpose">
    <daml:domain rdf:resource="#Profile"/>
    <daml:range rdf:resource="&daml;#Thing"/>
  </daml:Property>

  <!--
  	role links the service profile to an Actor.
  	The Actor is the entity that provides the service or makes
  	the request.  See the description of #Actor below.

  	Different roles can be supropertied from the property role
  	to portray specific roles.
    -->
  <daml:ObjectProperty rdf:ID="role">
    <daml:domain rdf:resource="#Profile"/>
    <daml:range rdf:resource="#Actor"/>
  </daml:ObjectProperty>

  <!--
  	requestedBy is similar to, but distinct from the property
  	role.  It links the service profile to an Actor who requests
  	the service.
    -->
  <!-- Deprecated to remove the distinction between
    provided services and requested services -->
  <daml:ObjectProperty rdf:ID="requestedBy">
    <daml:subPropertyOf rdf:resource="#role" />
    <daml:range rdf:resource="#ServiceRequester"/>
  </daml:ObjectProperty>

  <!--
  	providedBy is similar to, but distinct from the property
  	role.  It links the service profile to an Actor who provides
  	the service.
    -->
  <!-- Deprecated to remove the distinction between
    provided services and requested services -->
  <daml:ObjectProperty rdf:ID="providedBy">
    <daml:subPropertyOf rdf:resource="#role" />
    <daml:range rdf:resource="#ServiceProvider"/>
  </daml:ObjectProperty>


  <!-- 
	DomainResource(s) - not to be confused with RDF resources, or
	domain restrictions - are resources that are necessary for the
	task to be executed.
    -->
  <!-- Deprecated unless a clear distinction is made
    between this property and the input/preconditions -->

  <daml:Property rdf:ID="domainResource">
    <daml:domain rdf:resource="#Profile"/>
    <daml:range rdf:resource="&daml;#Thing"/>
  </daml:Property>
  
  <!--
  	geographicRadius refers to the geographic scope of the
  	service.  This may be at the global or national scale (e.g. for
  	ecommerce) or at a local scale (eg pizza delivery).
    -->
  <!-- Deprecation: we had discussions and feedbacks
    from OWL-S users that the property is not general enough to be
    here.  Furthermore, there may be more then one type of geographic
    radious for the same service, for example what is the geographic
    radius of a European company that specializes on US domestic
    flights, but delivers tickets only in Europe?.  If you look at the
    flight it deals with the geographic radius is US, if you look at
    the ticket distribution is Europe.  On the other side, why can't
    this property be defined as a constraint on the outputs?
    Geographic constraints may be added to the Profile either as
    domain specific information added to the profile description, or as
    service parameters as done in the example below. 
    -->
  <daml:ObjectProperty rdf:ID="geographicRadius">
    <daml:domain rdf:resource="#Profile"/>
    <daml:range rdf:resource="#Location"/>
  </daml:ObjectProperty>
  
  
  <!--
    Location provides semantic to the property
    GeographicRadius, which limits the scope or availability
    of a service to some area.  The use of this class has been
deprecated because it should be specified in other ontologies
    -->

  <daml:Class rdf:ID="Location">
    <daml:label>Location</daml:label> 
    <rdfs:subClassOf rdf:resource="&daml;#Thing" /> 
    <daml:comment>
	This class represents the scope or availability
	of a service to some area.
    </daml:comment>
  </daml:Class>

  <!-- 
	degreeOfQuality properties provide qualifications about the service.

	No range restrictions are placed on them at present (as with those
	used by the process model).  Specific service descriptions will
	specialise this property by restricting the range appropriately
	using subPropertyOf.
    -->
  <!-- Deprecated, unless a clear distinction is made
    between this class and qualityRating which is also defined here
  -->
    
  <daml:Property rdf:ID="degreeOfQuality">
    <daml:domain rdf:resource="#Profile"/>
    <daml:range rdf:resource="&daml;#Thing"/>
  </daml:Property>

  
  <!--
	qualityGuarantee is a guarantee that the service promises to
	deliver, such as guaranteeing to provide the lowest possible
	interest rate, or a response within 3 minutes, etc.

	No range restrictions are placed on this property at present.
	Specific service descriptions will specialise this by
	restricting the range appropriately using subPropertyOf.
  -->
  <!-- Deprecated, unless a clear distinction is made
    between this class and qualityRating which is also defined here
  -->

  <daml:Property rdf:ID="qualityGuarantee">
    <daml:domain rdf:resource="#Profile"/>
    <daml:range rdf:resource="&daml;#Thing"/>
  </daml:Property>
  

  <!-- 
	CommunicationThru is a property of a Service Profile.
	This property provides high level information on how
	a service may communicate, such as the ACL (eg FIPA,
	KQML, SOAP etc).  This summarises the descriptions
	provided by the Service Grounding and are used when
	matching services; it is not intended to replace the
	detail provided by the Service Grounding.

	No range restrictions are placed on this property at present.
	Specific service descriptions will specialise this by
	restricting the range appropriately using subPropertyOf.
    -->

  <daml:Property rdf:ID="communicationThru">
    <daml:domain rdf:resource="#Profile"/>
    <daml:range rdf:resource="&daml;#Thing"/>
  </daml:Property>
  
</rdf:RDF>


