<?xml version='1.0' encoding='ISO-8859-1'?>
<!DOCTYPE uridef[
  <!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns">
  <!ENTITY daml "http://www.daml.org/2001/03/daml+oil">
  <!ENTITY xsd "http://www.w3.org/2000/10/XMLschema.xsd">
  <!ENTITY profile "http://www.daml.org/services/daml-s/0.7/Profile">
  <!ENTITY DEFAULT "http://www.daml.org/services/daml-s/0.7/ProfileTaxonomy">
]>

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

<rdf:RDF
  xmlns:rdf=	"&rdf;#"
  xmlns:daml=	"&daml;#"
  xmlns:xsd=	 "&xsd;#"
  xmlns:profile= "&profile;#"
  xmlns=	"&DEFAULT;#">

  <daml:Ontology>
    <daml:versionInfo>
      $Id: ProfileTaxonomy.daml,v 1.4 2002/09/10 05:19:53 martin Exp $
    </daml:versionInfo> 
    <daml:comment>
      Sketch of a classification scheme for service advertisements,
      based on the DAML-S Profile.  This is not intended to evolve into
      *the* standard classification scheme, but rather to serve as an example
      of how the Profile can be used as the basis for a class-hierarchical
      classification scheme.  This is a *partial* example; it contains just 
      the uppermost levels of a possible classification.

      This file declares the following class hierarchy, where indentation
      indicates subclassing, names starting with upper case are classes,
      and names starting with lower case are properties.  For readability,
      in these comments, we omit the suffix "Profile" from each class name.
      
      ; Services that provide some kind of product.  "Provide" here means
      ; "make available", and does not include producing or manufacturing
      ; the product.  "Product" includes various kinds of information
      ; documents, and physical products.
      ProductProvidingService
        ; electronic primarily:
        ; Services that provide an information product
        InformationProvidingService: informationProduct+
          ; Services that provide reports, analyses, quotes, etc.
          ReportingService: subject+ reportDeliveryStyle+
          ; A database-oriented query service
          DataService: queryLanguage+
          ; Services that provide information organized as a directory
          DirectoryService
            WhitePages
            YellowPages
            NameServer
          ; Services that provide (visual) images
          ImageService
            MapServer: geographicRegion+
        ; Services that provide a physical product
        PhysicalProductProvidingService: physicalProduct+ manufacturer+
                                deliveryRegion* deliveryProvider* deliveryType*
          ; Retail sales - also a subclass of FeeBasedService
          RetailService
            ; Online retail sales (B2C)
            OnlineRetailService

      ; Services that provide transportation (of people or goods)
      TransportationService: transportationMode+ geographicRegion+
       Airline
      ; Legal and medical services
      AdvisoryConsultingService
        LegalService
        MedicalService
      ; Services that repair physical products
      RepairService: physicalProduct+
      ; Communications services
      CommunicationsService
      ; Entertainment services
      EntertainmentService: medium+ ageGroupServed+
      ; Manufacturing services
      ManufacturingService: physicalProduct+
      ; Advertising services
      AdvertisingService
      ; Appraisals services
      AppraisalService
        PhysicalProductAppraisalService: physicalProduct+
        RealtyAppraisalService: geographicRegion+
      ; Services that sell things on behalf of other parties
      SalesBrokeringService
        RealtyService: geographicRegion+ propertyType+
        AuctionService: auctionStyle+
        TravelService: transportationMode+ geographicRegion+

      Additional commentary is available here:

        http://lists.w3.org/Archives/Public/www-ws/2002May/0000.html

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

 
<!--  ############ ########### ############ ############ ########### --> 
<!--  ############ ########### ############ ############ ########### --> 
<!--  ############ ########### ############ ############ ########### --> 
  <!--
    These two classes cut across all services (that is, they form a
    covering set):
  -->

  <daml:Class rdf:ID="FeeBasedServiceProfile">
    <daml:label>FeeBasedServiceProfile</daml:label> 
    <daml:subClassOf rdf:resource="&profile;#Profile" /> 
    <daml:comment>
      The class of services for which some form of payment is required.
    </daml:comment>
  </daml:Class>

  <daml:ObjectProperty rdf:ID="paymentMethodAccepted">
    <daml:domain rdf:resource="#FeeBasedServiceProfile"/>
    <daml:range rdf:resource="&daml;#Thing"/>
    <daml:comment>
      Indicates Visa, MasterCard, personal check, money order, and such things.
      Thing is just a place holder, until the appropriate class is developed.
    </daml:comment>
  </daml:Property>

  <daml:ObjectProperty rdf:ID="feeBasis">
    <daml:domain rdf:resource="#FeeBasedServiceProfile"/>
    <daml:range rdf:resource="&daml;#Thing"/>
    <daml:comment>
      Indicates such things as "full payment at time of purchase", "Net 30",
      and so forth.
      Thing is just a place holder, until the appropriate class is developed.
    </daml:comment>
  </daml:Property>

  <daml:Class rdf:ID="FreeServiceProfile">
    <daml:label>FreeServiceProfile</daml:label> 
    <daml:subClassOf rdf:resource="&profile;#Profile" /> 
    <daml:comment>
      The class of services offered for free.
    </daml:comment>
  </daml:Class>

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

  <daml:Class rdf:ID="ProductProvidingServiceProfile">
    <daml:label>ProductProvidingServiceProfile</daml:label> 
    <daml:subClassOf rdf:resource="&profile;#Profile" /> 
    <daml:comment>
      The class of services that are primarily concerned with providing
      some product.
    </daml:comment>
  </daml:Class>

 <daml:Class rdf:ID="InformationServiceProfile">
    <daml:label>InformationServiceProfile</daml:label> 
    <daml:subClassOf rdf:resource="#ProductProvidingServiceProfile" /> 
    <daml:comment>
      The class of services that are primarily concerned with providing
      information.
    </daml:comment>
  </daml:Class>

  <daml:ObjectProperty rdf:ID="informationProduct">
    <daml:domain rdf:resource="#InformationServiceProfile"/>
    <daml:range rdf:resource="&stub;#InformationProduct"/>
    <daml:comment>
    </daml:comment>
  </daml:Property>

 <daml:Class rdf:ID="ReportingServiceProfile">
    <daml:label>ReportingServiceProfile</daml:label> 
    <daml:subClassOf rdf:resource="#InformationServiceProfile" /> 
    <daml:comment>
    </daml:comment>
  </daml:Class>

  <daml:ObjectProperty rdf:ID="subject">
    <daml:domain rdf:resource="#ReportingServiceProfile"/>
    <daml:range rdf:resource="&daml;#Thing"/>
    <daml:comment>
      Thing is just a place holder, until the appropriate class is developed.
    </daml:comment>
  </daml:Property>

  <daml:ObjectProperty rdf:ID="informationDeliveryStyle">
    <daml:domain rdf:resource="#ReportingServiceProfile"/>
    <daml:range rdf:resource="&daml;#Thing"/>
    <daml:comment>
      Thing is just a place holder, until the appropriate class is developed.
    </daml:comment>
  </daml:Property>

 <daml:Class rdf:ID="DataServiceProfile">
    <daml:label>DataServiceProfile</daml:label> 
    <daml:subClassOf rdf:resource="#InformationServiceProfile" /> 
    <daml:comment>
    </daml:comment>
  </daml:Class>

  <daml:ObjectProperty rdf:ID="queryLanguage">
    <daml:domain rdf:resource="#DataServiceProfile"/>
    <daml:range rdf:resource="&daml;#Thing"/>
    <daml:comment>
      Thing is just a place holder, until the appropriate class is developed.
    </daml:comment>
  </daml:Property>

 <daml:Class rdf:ID="DirectoryServiceProfile">
    <daml:label>DirectoryServiceProfile</daml:label> 
    <daml:subClassOf rdf:resource="#DataServiceProfile" /> 
    <daml:comment>
    </daml:comment>
  </daml:Class>

 <daml:Class rdf:ID="WhitePagesProfile">
    <daml:label>WhitePagesProfile</daml:label> 
    <daml:subClassOf rdf:resource="#DirectoryServiceProfile" /> 
    <daml:comment>
    </daml:comment>
  </daml:Class>

 <daml:Class rdf:ID="YellowPagesProfile">
    <daml:label>YellowPagesProfile</daml:label> 
    <daml:subClassOf rdf:resource="#DirectoryServiceProfile" /> 
    <daml:comment>
    </daml:comment>
  </daml:Class>

 <daml:Class rdf:ID="NameServerProfile">
    <daml:label>NameServerProfile</daml:label> 
    <daml:subClassOf rdf:resource="#DirectoryServiceProfile" /> 
    <daml:comment>
    </daml:comment>
  </daml:Class>

  <daml:Class rdf:ID="ImageServiceProfile">
    <daml:label>ImageServiceProfile</daml:label> 
    <daml:subClassOf rdf:resource="#DataServiceProfile" /> 
    <daml:comment>
    </daml:comment>
  </daml:Class>

  <daml:Class rdf:ID="MapServer">
    <daml:label>MapServer</daml:label> 
    <daml:subClassOf rdf:resource="#ImageServiceProfile" /> 
    <daml:comment>
    </daml:comment>
  </daml:Class>

  <daml:Class rdf:ID="PhysicalProductServiceProfile">
    <daml:label>PhysicalProductServiceProfile</daml:label> 
    <daml:subClassOf rdf:resource="#ProductProvidingServiceProfile" /> 
    <daml:comment>
    </daml:comment>
  </daml:Class>

  <daml:ObjectProperty rdf:ID="physicalProduct">
    <daml:domain rdf:resource="#PhysicalProductServiceProfile"/>
    <daml:range rdf:resource="&stub;#PhysicalProduct"/>
    <daml:comment>
    </daml:comment>
  </daml:Property>

  <daml:ObjectProperty rdf:ID="physicalProduct">
    <daml:domain rdf:resource="#PhysicalProductServiceProfile"/>
    <daml:range rdf:resource="&stub;#PhysicalProduct"/>
    <daml:comment>
    </daml:comment>
  </daml:Property>

  <daml:ObjectProperty rdf:ID="manufacturer">
    <daml:domain rdf:resource="#PhysicalProductServiceProfile"/>
    <daml:range rdf:resource="&daml;#Thing"/>
    <daml:comment>
      Thing is just a place holder, until the appropriate class is developed.
    </daml:comment>
  </daml:Property>

  <daml:ObjectProperty rdf:ID="deliveryRegion">
    <daml:domain rdf:resource="#PhysicalProductServiceProfile"/>
    <daml:range rdf:resource="&daml;#Thing"/>
    <daml:comment>
      Thing is just a place holder, until the appropriate class is developed.
    </daml:comment>
  </daml:Property>

  <daml:ObjectProperty rdf:ID="deliveryProvider">
    <daml:domain rdf:resource="#PhysicalProductServiceProfile"/>
    <daml:range rdf:resource="&daml;#Thing"/>
    <daml:comment>
      Thing is just a place holder, until the appropriate class is developed.
    </daml:comment>
  </daml:Property>

  <daml:ObjectProperty rdf:ID="deliveryType">
    <daml:domain rdf:resource="#PhysicalProductServiceProfile"/>
    <daml:range rdf:resource="&daml;#Thing"/>
    <daml:comment>
      Thing is just a place holder, until the appropriate class is developed.
    </daml:comment>
  </daml:Property>

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

  <daml:Class rdf:ID="ActionServiceProfile">
    <daml:label>ActionServiceProfile</daml:label> 
    <daml:subClassOf rdf:resource="&profile;#Profile" /> 
    <daml:comment>
    </daml:comment>
  </daml:Class>

  <daml:Class rdf:ID="TransportationServiceProfile">
    <daml:label>TransportationServiceProfile</daml:label> 
    <daml:subClassOf rdf:resource="#ActionServiceProfile" /> 
    <daml:comment>
    </daml:comment>
  </daml:Class>

  <daml:ObjectProperty rdf:ID="transportationMode">
    <daml:domain rdf:resource="#TransportationServiceProfile"/>
    <daml:range rdf:resource="&daml;#Thing"/>
    <daml:comment>
      Thing is just a place holder, until the appropriate class is developed.
    </daml:comment>
  </daml:Property>

  <daml:ObjectProperty rdf:ID="geographicRegion">
    <daml:domain rdf:resource="#TransportationServiceProfile"/>
    <daml:range rdf:resource="&daml;#Thing"/>
    <daml:comment>
      Thing is just a place holder, until the appropriate class is developed.
    </daml:comment>
  </daml:Property>

  <daml:Class rdf:ID="AdvisoryConsultingServiceProfile">
    <daml:label>AdvisoryConsultingServiceProfile</daml:label> 
    <daml:subClassOf rdf:resource="#ActionServiceProfile" /> 
    <daml:comment>
    </daml:comment>
  </daml:Class>

  <daml:ObjectProperty rdf:ID="feeBasis">
    <daml:domain rdf:resource="#AdvisoryConsultingServiceProfile"/>
    <daml:range rdf:resource="&daml;#Thing"/>
    <daml:comment>
      Thing is just a place holder, until the appropriate class is developed.
    </daml:comment>
  </daml:Property>

  <daml:Class rdf:ID="LegalServiceProfile">
    <daml:label>LegalServiceProfile</daml:label> 
    <daml:subClassOf rdf:resource="#AdvisoryConsultingServiceProfile" /> 
    <daml:comment>
    </daml:comment>
  </daml:Class>

  <daml:Class rdf:ID="MedicalServiceProfile">
    <daml:label>MedicalServiceProfile</daml:label> 
    <daml:subClassOf rdf:resource="#AdvisoryConsultingServiceProfile" /> 
    <daml:comment>
    </daml:comment>
  </daml:Class>

  <daml:Class rdf:ID="RepairServiceProfile">
    <daml:label>RepairServiceProfile</daml:label> 
    <daml:subClassOf rdf:resource="#ActionServiceProfile" /> 
    <daml:comment>
    </daml:comment>
  </daml:Class>

  <daml:ObjectProperty rdf:ID="physicalProduct">
    <daml:domain rdf:resource="#RepairServiceProfile"/>
    <daml:range rdf:resource="&stub;#PhysicalProduct"/>
    <daml:comment>
      Thing is just a place holder, until the appropriate class is developed.
    </daml:comment>
  </daml:Property>

  <daml:Class rdf:ID="CommunicationsServiceProfile">
    <daml:label>CommunicationsServiceProfile</daml:label> 
    <daml:subClassOf rdf:resource="#ActionServiceProfile" /> 
    <daml:comment>
    </daml:comment>
  </daml:Class>

  <daml:Class rdf:ID="EntertainmentServiceProfile">
    <daml:label>EntertainmentServiceProfile</daml:label> 
    <daml:subClassOf rdf:resource="#ActionServiceProfile" /> 
    <daml:comment>
    </daml:comment>
  </daml:Class>

  <daml:ObjectProperty rdf:ID="medium">
    <daml:domain rdf:resource="#EntertainmentServiceProfile"/>
    <daml:range rdf:resource="&daml;#Thing"/>
    <daml:comment>
      Thing is just a place holder, until the appropriate class is developed.
    </daml:comment>
  </daml:Property>

  <daml:ObjectProperty rdf:ID="ageGroupServed">
    <daml:domain rdf:resource="#EntertainmentServiceProfile"/>
    <daml:range rdf:resource="&daml;#Thing"/>
    <daml:comment>
      Thing is just a place holder, until the appropriate class is developed.
    </daml:comment>
  </daml:Property>

  <daml:Class rdf:ID="ManufacturingServiceProfile">
    <daml:label>ManufacturingServiceProfile</daml:label> 
    <daml:subClassOf rdf:resource="#ActionServiceProfile" /> 
    <daml:comment>
    </daml:comment>
  </daml:Class>

  <daml:ObjectProperty rdf:ID="physicalProduct">
    <daml:domain rdf:resource="#ManufacturingServiceProfile"/>
    <daml:range rdf:resource="&stub;#PhysicalProduct"/>
    <daml:comment>
      Thing is just a place holder, until the appropriate class is developed.
    </daml:comment>
  </daml:Property>

  <daml:Class rdf:ID="AdvertisingServiceProfile">
    <daml:label>AdvertisingServiceProfile</daml:label> 
    <daml:subClassOf rdf:resource="#ActionServiceProfile" /> 
    <daml:comment>
    </daml:comment>
  </daml:Class>

  <daml:Class rdf:ID="AppraisalServiceProfile">
    <daml:label>AppraisalServiceProfile</daml:label> 
    <daml:subClassOf rdf:resource="#ActionServiceProfile" /> 
    <daml:comment>
    </daml:comment>
  </daml:Class>

  <daml:Class rdf:ID="PhysicalProductAppraisalServiceProfile">
    <daml:label>PhysicalProductAppraisalServiceProfile</daml:label> 
    <daml:subClassOf rdf:resource="#AppraisalServiceProfile" /> 
    <daml:comment>
    </daml:comment>
  </daml:Class>

  <daml:ObjectProperty rdf:ID="physicalProduct">
    <daml:domain rdf:resource="#PhysicalProductAppraisalServiceProfile"/>
    <daml:range rdf:resource="&stub;#PhysicalProduct"/>
    <daml:comment>
      Thing is just a place holder, until the appropriate class is developed.
    </daml:comment>
  </daml:Property>

  <daml:Class rdf:ID="RealtyAppraisalServiceProfile">
    <daml:label>RealtyAppraisalServiceProfile</daml:label> 
    <daml:subClassOf rdf:resource="#AppraisalServiceProfile" /> 
    <daml:comment>
    </daml:comment>
  </daml:Class>

  <daml:ObjectProperty rdf:ID="geographicRegion">
    <daml:domain rdf:resource="#RealtyAppraisalServiceProfile"/>
    <daml:range rdf:resource="&daml;#Thing"/>
    <daml:comment>
      Thing is just a place holder, until the appropriate class is developed.
    </daml:comment>
  </daml:Property>

  <daml:Class rdf:ID="SalesServiceProfile">
    <daml:label>SalesServiceProfile</daml:label> 
    <daml:subClassOf rdf:resource="#ActionServiceProfile" /> 
    <daml:comment>
    </daml:comment>
  </daml:Class>

  <daml:Class rdf:ID="RealtyServiceProfile">
    <daml:label>RealtyServiceProfile</daml:label> 
    <daml:subClassOf rdf:resource="#SalesServiceProfile" /> 
    <daml:comment>
    </daml:comment>
  </daml:Class>

  <daml:ObjectProperty rdf:ID="geographicRegion">
    <daml:domain rdf:resource="#RealtyServiceProfile"/>
    <daml:range rdf:resource="&daml;#Thing"/>
    <daml:comment>
      Thing is just a place holder, until the appropriate class is developed.
    </daml:comment>
  </daml:Property>

  <daml:ObjectProperty rdf:ID="propertyType">
    <daml:domain rdf:resource="#RealtyServiceProfile"/>
    <daml:range rdf:resource="&daml;#Thing"/>
    <daml:comment>
      Thing is just a place holder, until the appropriate class is developed.
    </daml:comment>
  </daml:Property>

  <daml:Class rdf:ID="AuctionServiceProfile">
    <daml:label>AuctionServiceProfile</daml:label> 
    <daml:subClassOf rdf:resource="#SalesServiceProfile" /> 
    <daml:comment>
    </daml:comment>
  </daml:Class>

  <daml:ObjectProperty rdf:ID="auctionStyle">
    <daml:domain rdf:resource="#AuctionServiceProfile"/>
    <daml:range rdf:resource="&daml;#Thing"/>
    <daml:comment>
      Thing is just a place holder, until the appropriate class is developed.
    </daml:comment>
  </daml:Property>

  <daml:Class rdf:ID="TravelServiceProfile">
    <daml:label>TravelServiceProfile</daml:label> 
    <daml:subClassOf rdf:resource="#SalesServiceProfile" /> 
    <daml:comment>
    </daml:comment>
  </daml:Class>

  <daml:ObjectProperty rdf:ID="transportationMode">
    <daml:domain rdf:resource="#TravelServiceProfile"/>
    <daml:range rdf:resource="&daml;#Thing"/>
    <daml:comment>
      Thing is just a place holder, until the appropriate class is developed.
    </daml:comment>
  </daml:Property>

  <daml:ObjectProperty rdf:ID="geographicRegion">
    <daml:domain rdf:resource="#TravelServiceProfile"/>
    <daml:range rdf:resource="&daml;#Thing"/>
    <daml:comment>
      Thing is just a place holder, until the appropriate class is developed.
    </daml:comment>
  </daml:Property>


