<?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 owl "http://www.w3.org/2002/07/owl">
  <!ENTITY xsd "http://www.w3.org/2001/XMLSchema">
  <!ENTITY service "http://www.daml.org/services/owl-s/1.0/Service.owl">
  <!ENTITY process "http://www.daml.org/services/owl-s/1.0/Process.owl">
  <!ENTITY DEFAULT "http://www.daml.org/services/owl-s/1.0/Profile.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:owl=	"&owl;#"
  xmlns:xsd=	"&xsd;#"
  xmlns:service="&service;#"
  xmlns:process="&process;#"
  xmlns=	"&DEFAULT;#">

  <owl:Ontology rdf:about="">
    <owl:versionInfo>
      $Id: Profile.owl,v 1.33 2003/12/18 02:10:14 martin Exp $
    </owl:versionInfo> 
    <rdfs:comment>
      OWL ontology for Advertisements (i.e. Profiles).
      This file belongs to the OWL-S 1.0 Release.
      Initial version created by Terry Payne (trp@ecs.soton.ac.uk).
      Modified by Massimo Paolucci (paolucci@cs.cmu.edu)
      Modified by David Martin and other members of the DAML-S Coalition.

    </rdfs:comment> 
    <rdfs:seeAlso rdf:resource="http://www.daml.org/services" /> 
    <rdfs:seeAlso rdf:resource="http://www.daml.org/services/owl-s/1.0/ProfileAdditionalProperties.owl" /> 
    <rdfs:seeAlso rdf:resource="http://www.daml.org/services/owl-s/1.0/ProfileDeprecatedElements.owl" /> 
    <rdfs:seeAlso rdf:resource="http://www.daml.org/services/owl-s/1.0/ActorDefault.owl" /> 
<!--  
  -->
    <owl:imports rdf:resource="&service;" /> 
    <owl:imports rdf:resource="&process;" /> 
  </owl: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 as of
     version 0.7.  They are maintained here as deprecated, but will be
     removed removed in following versions of the service profile
  --> 

<!--  ############ ########### ############ ############ ########### --> 
<!--  ############                                       ########### --> 
<!--  ############    LOG OF CHANGES from 0.7 to 0.9     ########### --> 
<!--  ############                                       ########### --> 
<!--  ############ ########### ############ ############ ########### --> 
  
  <!--
    * Remove Deprecated functions and save them in a separate file for reference.
      These were deprecated in version 0.7 (see below) and have now been removed
      from this file
    * Migration of example and useful service parameters to a separate file.
      Version 0.7 introduced several useful classes that were derived from top
      level profile classes such as serviceParameter.  These have now been moved
      to a supplementary file.
    * Removal of Actor proterties
      The Actor class and its properties have been moved to a separate file.  It
      represents actors within a service description.  Alternative concepts
      can be used to represent individuals.  Examples include FOAF or vCard.
    * Renaming of the ParameterDescription to FunctionalPropertyDescription
    * Creation of the following FunctionalPropertyDescription classes:
		InputDescription,
		OutputDescription,
		PreconditionDescription
		EffectDescription
      where each has an explicit range restriction.  All of these classes are
      now disjoint.
      * Renaming parameterName to functionalPropertyName.
      
    -->
<!--  ############ ########### ############ ############ ########### --> 
<!--  ############                                       ########### --> 
<!--  ############    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 OWL:#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.
    -->
  
  
  <owl:Class rdf:ID="Profile">
    <rdfs:label>Profile</rdfs:label> 
    <rdfs:subClassOf rdf:resource="&service;#ServiceProfile" /> 
    <rdfs:comment>
      Definition of Profile
    </rdfs:comment>
  </owl:Class>
  
  
  
  
<!--  ############ ########### ############ ############ ########### --> 
<!--  ############                                       ########### --> 
<!--  ############                PROFILE                ########### --> 
<!--  ############      NON FUNCTIONAL PROPERTIES        ########### --> 
<!--  ############                                       ########### --> 
<!--  ############ ########### ############ ############ ########### --> 

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

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

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

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

  

  <!--
    Contact information is used to record contact information
    about the entity that issued the Profile.  It once refered to Actor,
    that records address and other info that allows a receiver of the
    profile to contact directly the issuer.  However, this class has migrated
    to a separate ActorDefault.daml ontology.

    Previous versions of the OWL-S profile defined the range as follows:
    <rdfs:range rdf:resource="#Actor"/>
    
    This definition has migrated to ActorDefault.daml

    -->
  
  <owl:ObjectProperty rdf:ID="contactInformation">
    <rdfs:domain rdf:resource="#Profile"/>
  </owl:ObjectProperty>


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

  <owl:FunctionalProperty rdf:ID="has_process">
    <rdfs:domain rdf:resource="#Profile"/>
    <rdfs:range rdf:resource="&process;#Process"/>
  </owl:FunctionalProperty>

  
  
  <!--
	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 in
        ProfileAdditionalParameters.owl.

	QualityRating has been deprecated, as it can be constructed
	from the ServiceParameter class.
    -->

  <rdf:Property rdf:ID="serviceCategory">
    <rdfs:domain rdf:resource="#Profile"/>
    <rdfs:range rdf:resource="#ServiceCategory"/>
  </rdf: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.
    -->

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

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

<!--
  This ontology has no classes for modelling IOPE's. Profile
  instances will be able to define IOPE's using the schema
  offered by the Process.owl ontology.
	
  The hasParameter property relates Profile instances to and
  process:Parameter instances. In particular, there is a subproperty
  of hasParameter for process:Inputs and process:Outputs
	  *hasInput
	  *hasOutput

  The following properties relate Profile to process:Preconditions/process:Effects.
	  *hasPrecondition
	  *hasEffect.
-->
<!-- 
i  The hasParameter property (domain:Profile; range:process:Parameter)
  and its subproperties
    - hasInput
    - hasOutput
  
  Further:
    - hasPrecondition
    - hasEffect
-->
  <owl:ObjectProperty rdf:ID="hasParameter">
    <rdfs:domain rdf:resource="#Profile"/>
    <rdfs:range rdf:resource="&process;#Parameter"/>
  </owl:ObjectProperty>

  <owl:ObjectProperty rdf:ID="hasInput">
    <rdfs:subPropertyOf rdf:resource="#hasParameter"/>
    <rdfs:range rdf:resource="&process;#Input"/>
  </owl:ObjectProperty>

  <owl:ObjectProperty rdf:ID="hasOutput">
    <rdfs:subPropertyOf rdf:resource="#hasParameter"/>
    <rdfs:range rdf:resource="&process;#ConditionalOutput"/>
  </owl:ObjectProperty>

  <owl:ObjectProperty rdf:ID="hasPrecondition">
    <rdfs:domain rdf:resource="#Profile"/>
    <rdfs:range rdf:resource="&process;#Precondition"/>
  </owl:ObjectProperty>

  <owl:ObjectProperty rdf:ID="hasEffect">
    <rdfs:domain rdf:resource="#Profile"/>
    <rdfs:range rdf:resource="&process;#ConditionalEffect"/>
  </owl:ObjectProperty>

<!--  ############ ########### ############ ############ ########### --> 
<!--  ############ ########### ############ ############ ########### --> 
<!--  ############ ########### ############ ############ ########### --> 
  
  
  
  <!-- 
    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
    -->

  <owl: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)
    -->
  <owl:DatatypeProperty rdf:ID="categoryName">
    <rdfs:domain rdf:resource="#ServiceCategory"/>
    <rdfs:range rdf:resource="&xsd;#string"/>
  </owl:DatatypeProperty>
  
  
  
  <!-- each serviceCategory can refer to only one categoryName -->

  <owl:Class rdf:about="#ServiceCategory">
    <rdfs:comment>
    a ServiceCategory is restricted to refer to only onename
    </rdfs:comment>
    <rdfs:subClassOf>
      <owl:Restriction owl:cardinality="1">
	<owl:onProperty rdf:resource="#categoryName"/>
      </owl:Restriction>
    </rdfs:subClassOf>
  </owl: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.  -->

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

  <owl:Class rdf:about="#ServiceCategory">
    <rdfs:comment>
    a ServiceCategory is restricted to refer to only one taxonomy
    </rdfs:comment>
    <rdfs:subClassOf>
      <owl:Restriction owl:cardinality="1">
	<owl:onProperty rdf:resource="#taxonomy"/>
      </owl:Restriction>
    </rdfs:subClassOf>
  </owl: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.
    -->

  <owl:DatatypeProperty rdf:ID="value">
    <rdfs:domain rdf:resource="#ServiceCategory"/>
    <rdfs:range  rdf:resource="&xsd;#string"/> 
  </owl: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 -->

  <owl:Class rdf:about="#ServiceCategory">
    <rdfs:comment>
    a ServiceCategory is restricted to refer to only one taxonomy
    </rdfs:comment>
    <rdfs:subClassOf>
      <owl:Restriction owl:cardinality="1">
	<owl:onProperty rdf:resource="#value"/>
      </owl:Restriction>
    </rdfs:subClassOf>
  </owl:Class>
  
  
  <!-- Often taxonomies associate a code to each type of service.
    The following property stores the code -->
  <owl:DatatypeProperty rdf:ID="code">
    <rdfs:domain rdf:resource="#ServiceCategory"/>    
    <rdfs:range rdf:resource="&xsd;#string"/>
  </owl: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 -->

  <owl:Class rdf:about="#ServiceCategory">
    <rdfs:comment>
    a ServiceCategory is restricted to refer to only one taxonomy
    </rdfs:comment>
    <rdfs:subClassOf>
      <owl:Restriction owl:cardinality="1">
	<owl:onProperty rdf:resource="#code"/>
      </owl:Restriction>
    </rdfs:subClassOf>
  </owl: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.
    -->

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


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

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


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

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

  <owl:Class rdf:about="#ServiceParameter">
    <rdfs:comment>
    a Parameter is restricted to refer to only one concept in some
    ontology
    </rdfs:comment>
    <rdfs:subClassOf>
      <owl:Restriction owl:cardinality="1">
	<owl:onProperty rdf:resource="#sParameter"/>
      </owl:Restriction>
    </rdfs:subClassOf>
  </owl:Class>
  
 
  
<!--   ############ ########### ############ ############ ########### --> 
<!--   ############                                       ########### --> 
<!--   ############                Actor                  ########### --> 
<!--   ############                                       ########### --> 
<!--   ############ ########### ############ ############ ########### --> 


<!-- The Actor concept has now migrated to
       rdf:resource="ActorDefault.owl" 
  -->

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


  <!-- Deprecated concepts have now migrated to
       rdf:resource="ProfileDepreciatedElements.owl" 
  -->

</rdf:RDF>

