# Saved by TopBraid on Tue Mar 29 19:04:42 BST 2011
# baseURI: http://www.w3.org/TR/usdl/service#
# imports: http://www.w3.org/ns/org
# imports: http://purl.org/goodrelations/v1
# imports: http://www.w3.org/2004/02/skos/core
# imports: http://xmlns.com/foaf/0.1/
# imports: http://purl.org/dc/terms/

@prefix :        <http://www.w3.org/TR/usdl/service#> .
@prefix ctag:    <http://commontag.org/ns#> .
@prefix dcterms:  <http://purl.org/dc/terms/> .
@prefix dctypes:  <http://purl.org/dc/dcmitype/> .
@prefix foaf:    <http://xmlns.com/foaf/0.1/> .
@prefix gr:      <http://purl.org/goodrelations/v1#> .
@prefix msm:     <http://cms-wg.sti2.org/ns/minimal-service-model#> .
@prefix org:     <http://www.w3.org/ns/org#> .
@prefix owl:     <http://www.w3.org/2002/07/owl#> .
@prefix rdf:     <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs:    <http://www.w3.org/2000/01/rdf-schema#> .
@prefix skos:    <http://www.w3.org/2004/02/skos/core#> .
@prefix time:    <http://www.w3.org/2006/time#> .
@prefix usdl-f:  <http://www.w3.org/TR/usdl/foundation#> .
@prefix usdl-func:  <http://www.w3.org/TR/usdl/functional#> .
@prefix usdl-int:  <http://www.w3.org/TR/usdl/interaction#> .
@prefix usdl-legal:  <http://www.w3.org/TR/usdl/legal#> .
@prefix usdl-part:  <http://www.w3.org/TR/usdl/participants#> .
@prefix usdl-price:  <http://www.w3.org/TR/usdl/pricing#> .
@prefix usdl-sl:  <http://www.w3.org/TR/usdl/service-level#> .
@prefix vcard:   <http://www.w3.org/2006/vcard/ns#> .
@prefix xsd:     <http://www.w3.org/2001/XMLSchema#> .

<http://www.w3.org/TR/usdl/service>
      rdf:type owl:Ontology ;
      rdfs:label "Service module of USDL v3 M5" ;
      dcterms:contributor :Carlos_Pedrinaci ;
      dcterms:created "2011-03-10"^^xsd:date ;
      dcterms:creator :Carlos_Pedrinaci ;
      dcterms:description "Service module of USDL" ;
      dcterms:modified "2011-03-29"^^xsd:date ;
      owl:versionInfo "0.1" .

:     rdf:type owl:Ontology ;
      owl:imports dcterms: , foaf: , <http://www.w3.org/2004/02/skos/core> , <http://purl.org/goodrelations/v1> , <http://www.w3.org/ns/org> .

:AbstractService
      rdf:type rdfs:Class ;
      rdfs:comment "AbstractService is used to represent 'classes' of services, i.e. groups of services that share a number of characteristics.  AbstractService enables the capturing of these characteristics as a set (configuration) of predefined description properties (USDL objects)." ;
      rdfs:isDefinedBy <http://www.w3.org/TR/usdl/service> ;
      rdfs:label "Abstract Service" ;
      rdfs:subClassOf gr:ProductOrServiceModel .

:AbstractServiceType
      rdf:subClassOf skos:Concept ;
      rdfs:comment "Types of Abstract Service. Schemes for classifying Abstract Service should start from here" ;
      rdfs:isDefinedBy <http://www.w3.org/TR/usdl/service> ;
      skos:prefLabel "Abstract Service Type"@en .

:Automated
      rdf:type :ServiceNature ;
      rdfs:comment "The service is carried out automatically" ;
      rdfs:isDefinedBy <http://www.w3.org/TR/usdl/service> ;
      skos:prefLabel "Automated service"@en .

:Carlos_Pedrinaci
      rdf:type foaf:Person ;
      foaf:firstName "Carlos" ;
      foaf:homepage <http://www.cpedrinaci.net/> ;
      foaf:lastName "Pedrinaci" .

:ComposableEntity
      rdf:type rdfs:Class ;
      rdfs:comment "Composable serves as the super type of all USDL classes that can be included in a composite service or service bundle. Valid classes are Service, ServiceBundle and AbstractService." ;
      rdfs:isDefinedBy <http://www.w3.org/TR/usdl/service> ;
      rdfs:label "Composable Entity" .

:CompositeService
      rdf:type rdfs:Class ;
      rdfs:comment "A  CompositeService is a special type of  Service that aggregates other services, service bundles or abstract services. Unlike service bundles, which group services for single-point selling, composite services provide new functionality by combining the capabilities of their parts." ;
      rdfs:isDefinedBy <http://www.w3.org/TR/usdl/service> ;
      rdfs:subClassOf gr:ProductOrServicesSomeInstancesPlaceholder , :Service .

:CompositionType
      rdf:type skos:Concept ;
      rdfs:comment "Composition Type indicates the general nature of a composition (e.g., ordered parts, etc)" ;
      rdfs:isDefinedBy <http://www.w3.org/TR/usdl/service> ;
      rdfs:label "Composition Type" .

:ConsumerType
      rdf:subClassOf skos:Concept ;
      rdfs:comment "Types of Consumer. Schemes for classifying Consumers should start from here" ;
      rdfs:isDefinedBy <http://www.w3.org/TR/usdl/service> ;
      skos:prefLabel "Consumer Type"@en .

:DataDependentPartsComposite
      rdf:type :CompositionType ;
      rdfs:comment "The parts of the composite share data context with each other, but there is no explicit order defined among them. " ;
      rdfs:isDefinedBy <http://www.w3.org/TR/usdl/service> ;
      skos:prefLabel "Data Dependent Parts Composite"@en .

:Human
      rdf:type :ServiceNature ;
      rdfs:comment "The service is carried out entirely manually" ;
      rdfs:isDefinedBy <http://www.w3.org/TR/usdl/service> ;
      skos:prefLabel "Manual service"@en .

:NetworkedProvisionedEntity
      rdf:type rdfs:Class ;
      rdfs:comment "NetworkProvisionedEntity is the central concept of the USDL model and represents all entities that are provisioned into, i.e. exposed to, a service network. The NetworkProvisionedEntity class serves as an abstract super type for all concrete exposable entities (Service, Service Bundle). It constitutes the main entry point into the model (core elements and elements captured in other modules)." ;
      rdfs:isDefinedBy <http://www.w3.org/TR/usdl/service> ;
      rdfs:label "Networked Provisioned Entity" .

:NetworkedProvisionedEntityType
      rdf:subClassOf skos:Concept ;
      rdfs:comment "Types of Networked Provisioned Entity. Schemes for classifying Networked Entities should start from here" ;
      rdfs:isDefinedBy <http://www.w3.org/TR/usdl/service> ;
      skos:prefLabel "Networked Provisioned Entity Type"@en .

:OrderedPartsComposite
      rdf:type :CompositionType ;
      rdfs:comment "The parts of the composite are executed and delivered in a particular order, because the data and execution contexts of certain parts depend on other parts to be executed before/after them." ;
      rdfs:isDefinedBy <http://www.w3.org/TR/usdl/service> ;
      skos:prefLabel "Ordered Parts Composite"@en .

:Semi-Automated
      rdf:type :ServiceNature ;
      rdfs:comment "The service is carried out partly manually and partly automatically" ;
      rdfs:isDefinedBy <http://www.w3.org/TR/usdl/service> ;
      skos:prefLabel "Semi-automated service"@en .

:Service
      rdf:type rdfs:Class ;
      rdfs:comment "A  Service is one specific type of aforementioned NetworkProvisionedEntity. It is an entity that exposes a set of capabilities that can be accessed through the service's technical interface." ;
      rdfs:isDefinedBy <http://www.w3.org/TR/usdl/service> ;
      rdfs:label "Networked Provisioned Entity" ;
      rdfs:subClassOf gr:ProductOrServicesSomeInstancesPlaceholder , :NetworkedProvisionedEntity .

:ServiceBundle
      rdf:type rdfs:Class ;
      rdfs:comment "A  ServiceBundle is a type of NetworkProvisionedEntity that aggregates other services, service bundles or abstract services, which in turn are available in a service network. Bundling is defined as offering several services for sale as one combined package." ;
      rdfs:isDefinedBy <http://www.w3.org/TR/usdl/service> ;
      rdfs:label "Service Bundle" ;
      rdfs:subClassOf :NetworkedProvisionedEntity .

:ServiceNature
      rdf:type skos:Concept ;
      rdfs:comment "Service Nature indicates the general nature of a service. The nature of a service refers to the manner in which the service is performed, i.e. completely manually (human), fully  automated  or a combination of both (semi-automated)" ;
      rdfs:isDefinedBy <http://www.w3.org/TR/usdl/service> ;
      rdfs:label "Service Nature" .

:ServiceVariant
      rdf:type rdfs:Class ;
      rdfs:comment "ServiceVariant is a certain combination of options offered as a pre-packaged version of the service. Variants are defined by actors in the provisioning chain (usually the service provider)." ;
      rdfs:isDefinedBy <http://www.w3.org/TR/usdl/service> ;
      rdfs:label "Service Variant" .

:SimplePartsComposite
      rdf:type :CompositionType ;
      rdfs:comment "The composite service is a loose accumulation of parts" ;
      rdfs:isDefinedBy <http://www.w3.org/TR/usdl/service> ;
      skos:prefLabel "Simple Parts Composite"@en .

:basicCompositionTypes
      rdf:type skos:ConceptScheme ;
      rdfs:label "Composition Type scheme" ;
      skos:hasTopConcept :CompositionType .

:basicServiceNatures
      rdf:type skos:ConceptScheme ;
      rdfs:label "Service Nature scheme" ;
      skos:hasTopConcept :ServiceNature .

:canConflictWith
      rdf:type owl:ObjectProperty ;
      rdfs:comment "Operation of the service, service bundle or abstract service may conflict with the operation of the referenced service, service bundle or abstract service" ;
      rdfs:domain
              [ rdf:type owl:Class ;
                owl:unionOf (:Service :ServiceBundle :AbstractService)
              ] ;
      rdfs:isDefinedBy <http://www.w3.org/TR/usdl/service> ;
      rdfs:label "can conflict with" ;
      rdfs:range
              [ rdf:type owl:Class ;
                owl:unionOf (:Service :ServiceBundle :AbstractService usdl-f:Resource)
              ] ;
      rdfs:subPropertyOf :dependsOn .

:canSubstitute
      rdf:type owl:ObjectProperty ;
      rdfs:comment "The service, service bundle or abstract service defines capabilities (functionality) that are different from those of the referenced service, service bundle or abstract service, but it achieves the same goals and therefore constitutes an alternative to the referenced object" ;
      rdfs:domain
              [ rdf:type owl:Class ;
                owl:unionOf (:Service :ServiceBundle :AbstractService)
              ] ;
      rdfs:isDefinedBy <http://www.w3.org/TR/usdl/service> ;
      rdfs:label "can substitute" ;
      rdfs:range
              [ rdf:type owl:Class ;
                owl:unionOf (:Service :ServiceBundle :AbstractService usdl-f:Resource)
              ] ;
      rdfs:subPropertyOf :dependsOn .

:dependsOn
      rdf:type owl:ObjectProperty ;
      rdfs:comment "depends on" ;
      rdfs:domain
              [ rdf:type owl:Class ;
                owl:unionOf (:Service :ServiceBundle :AbstractService)
              ] ;
      rdfs:isDefinedBy <http://www.w3.org/TR/usdl/service> ;
      rdfs:label "depends on" ;
      rdfs:range
              [ rdf:type owl:Class ;
                owl:unionOf (:Service :ServiceBundle :AbstractService usdl-f:Resource)
              ] .

:enhances
      rdf:type owl:ObjectProperty ;
      rdfs:comment "The service, service bundle or abstract service provides additional capabilities (functionality) on top of the referenced service, service bundle or abstract service " ;
      rdfs:domain
              [ rdf:type owl:Class ;
                owl:unionOf (:Service :ServiceBundle :AbstractService)
              ] ;
      rdfs:isDefinedBy <http://www.w3.org/TR/usdl/service> ;
      rdfs:label "enhances" ;
      rdfs:range
              [ rdf:type owl:Class ;
                owl:unionOf (:Service :ServiceBundle :AbstractService usdl-f:Resource)
              ] ;
      rdfs:subPropertyOf :dependsOn ;
      owl:equivalentProperty
              gr:addOn .

:exposes
      rdf:type owl:ObjectProperty ;
      rdfs:domain
              [ rdf:type owl:Class ;
                owl:unionOf (:Service :AbstractService)
              ] ;
      rdfs:isDefinedBy <http://www.w3.org/TR/usdl/service> ;
      rdfs:label "exposes" ;
      rdfs:range usdl-f:Resource .

:hasAbstractServiceClassification
      rdf:type owl:ObjectProperty ;
      rdfs:comment "Indicates a classification with respect to Abstract Services classifications" ;
      rdfs:domain :AbstractService ;
      rdfs:isDefinedBy <http://www.w3.org/TR/usdl/service> ;
      rdfs:label "abstract service classification"@en ;
      rdfs:range :AbstractServiceType ;
      rdfs:subPropertyOf :hasClassification .

:hasBusinessOwner
      rdf:type rdf:Property , owl:ObjectProperty ;
      rdfs:comment "Indicates that a given Agent is the business owner in the Networked Provisioned Entity"@en ;
      rdfs:domain :NetworkedProvisionedEntity ;
      rdfs:isDefinedBy <http://www.w3.org/TR/usdl/service> ;
      rdfs:label "business owner"@en ;
      rdfs:range foaf:Agent ;
      rdfs:subPropertyOf org:memberOf .

:hasClassification
      rdf:type owl:ObjectProperty ;
      rdfs:comment "Indicates a classification for the Networked Provisioned Entity or an Abstract Service." ;
      rdfs:domain
              [ rdf:type owl:Class ;
                owl:unionOf (:AbstractService :NetworkedProvisionedEntity)
              ] ;
      rdfs:isDefinedBy <http://www.w3.org/TR/usdl/service> ;
      rdfs:label "classification"@en ;
      rdfs:range :NetworkedProvisionedEntityType .

:hasCompositionType
      rdf:type owl:ObjectProperty ;
      rdfs:comment "Composition type indicates the general nature of the composition, i.e. how loosely or tightly it is defined " ;
      rdfs:domain :CompositeService ;
      rdfs:isDefinedBy <http://www.w3.org/TR/usdl/service> ;
      rdfs:label "has composition type" ;
      rdfs:range :CompositionType .

:hasConsumer
      rdf:type rdf:Property , owl:ObjectProperty ;
      rdfs:comment "Indicates that a given Agent is an consumer in the Networked Provisioned Entity"@en ;
      rdfs:domain :NetworkedProvisionedEntity ;
      rdfs:isDefinedBy <http://www.w3.org/TR/usdl/service> ;
      rdfs:label "consumer"@en ;
      rdfs:range foaf:Agent ;
      rdfs:subPropertyOf org:memberOf .

:hasFeedbackModel
      rdf:type owl:ObjectProperty ;
      rdfs:domain
              [ rdf:type owl:Class ;
                owl:unionOf (:NetworkedProvisionedEntity :AbstractService)
              ] ;
      rdfs:isDefinedBy <http://www.w3.org/TR/usdl/service> ;
      rdfs:label "feedback model" ;
      rdfs:range usdl-f:Artifact .

:hasImplementationSpecification
      rdf:type owl:ObjectProperty ;
      rdfs:comment "Reference to the formal specification of the composition, e.g. orchestration in BPEL" ;
      rdfs:domain :CompositeService ;
      rdfs:isDefinedBy <http://www.w3.org/TR/usdl/service> ;
      rdfs:label "has implementation specification" ;
      rdfs:range usdl-f:Artifact .

:hasIntermediary
      rdf:type rdf:Property , owl:ObjectProperty ;
      rdfs:comment "Indicates that a given Agent is an intermediary in the Networked Provisioned Entity"@en ;
      rdfs:domain :NetworkedProvisionedEntity ;
      rdfs:isDefinedBy <http://www.w3.org/TR/usdl/service> ;
      rdfs:label "intermediary"@en ;
      rdfs:range foaf:Agent ;
      rdfs:subPropertyOf org:memberOf .

:hasMandatoryPart
      rdf:type owl:ObjectProperty ;
      rdfs:comment "Has mandatory part captures the part-whole relationship between services, in particular mandatory ones. This relationship is not transitive" ;
      rdfs:domain
              [ rdf:type owl:Class ;
                owl:unionOf (:ServiceBundle :CompositeService)
              ] ;
      rdfs:isDefinedBy <http://www.w3.org/TR/usdl/service> ;
      rdfs:label "has mandatory part" ;
      rdfs:range
              [ rdf:type owl:Class ;
                owl:unionOf (:AbstractService :NetworkedProvisionedEntity)
              ] ;
      rdfs:subPropertyOf :hasMandatoryPartTransitive .

:hasMandatoryPartTransitive
      rdf:type owl:TransitiveProperty ;
      rdfs:comment "Has mandatory part captures the part-whole relationship between services, in particular mandatory ones. This property is transitive and therefore is more convenient for finding all the mandatory parts" ;
      rdfs:domain
              [ rdf:type owl:Class ;
                owl:unionOf (:ServiceBundle :CompositeService)
              ] ;
      rdfs:isDefinedBy <http://www.w3.org/TR/usdl/service> ;
      rdfs:label "has mandatory part transitive" ;
      rdfs:range
              [ rdf:type owl:Class ;
                owl:unionOf (:AbstractService :NetworkedProvisionedEntity)
              ] ;
      rdfs:subPropertyOf :hasPartTransitive .

:hasNature
      rdf:type owl:ObjectProperty ;
      rdfs:domain
              [ rdf:type owl:Class ;
                owl:unionOf (:Service :AbstractService)
              ] ;
      rdfs:isDefinedBy <http://www.w3.org/TR/usdl/service> ;
      rdfs:label "service nature" ;
      rdfs:range :ServiceNature .

:hasOptionalPart
      rdf:type owl:ObjectProperty ;
      rdfs:comment "Has optional part captures the part-whole relationship between services, in particular optional ones. This relationship is not transitive" ;
      rdfs:domain
              [ rdf:type owl:Class ;
                owl:unionOf (:ServiceBundle :CompositeService)
              ] ;
      rdfs:isDefinedBy <http://www.w3.org/TR/usdl/service> ;
      rdfs:label "has optional part" ;
      rdfs:range
              [ rdf:type owl:Class ;
                owl:unionOf (:AbstractService :NetworkedProvisionedEntity)
              ] ;
      rdfs:subPropertyOf :hasOptionalPartTransitive .

:hasOptionalPartTransitive
      rdf:type owl:TransitiveProperty ;
      rdfs:comment "Has optional part captures the part-whole relationship between services, in particular optional ones. This property is transitive and therefore is more convenient for finding all the optional parts" ;
      rdfs:domain
              [ rdf:type owl:Class ;
                owl:unionOf (:ServiceBundle :CompositeService)
              ] ;
      rdfs:isDefinedBy <http://www.w3.org/TR/usdl/service> ;
      rdfs:label "has optional part transitive" ;
      rdfs:range
              [ rdf:type owl:Class ;
                owl:unionOf (:AbstractService :NetworkedProvisionedEntity)
              ] ;
      rdfs:subPropertyOf :hasPartTransitive .

:hasParent
      rdf:type owl:ObjectProperty ;
      rdfs:comment "Has parent captures inheritance relationship between instances of Abstract Services. It therefore is different from a hierarchy of Abstract Services." ;
      rdfs:domain :AbstractService ;
      rdfs:isDefinedBy <http://www.w3.org/TR/usdl/service> ;
      rdfs:label "has parent" ;
      rdfs:range :AbstractService ;
      rdfs:subPropertyOf :hasParentTransitive .

:hasParentTransitive
      rdf:type owl:TransitiveProperty ;
      rdfs:comment "Has parent captures inheritance relationship between instances of Abstract Services. It therefore is different from a hierarchy of Abstract Services. This property is transitive and therefore is more convenient for finding all the parents" ;
      rdfs:domain :AbstractService ;
      rdfs:isDefinedBy <http://www.w3.org/TR/usdl/service> ;
      rdfs:label "has parent transitive" ;
      rdfs:range :AbstractService .

:hasPart
      rdf:type owl:ObjectProperty ;
      rdfs:comment "Has part captures the part-whole relationship between services. This relationship is not transitive" ;
      rdfs:domain
              [ rdf:type owl:Class ;
                owl:unionOf (:ServiceBundle :CompositeService)
              ] ;
      rdfs:isDefinedBy <http://www.w3.org/TR/usdl/service> ;
      rdfs:label "has part" ;
      rdfs:range
              [ rdf:type owl:Class ;
                owl:unionOf (:AbstractService :NetworkedProvisionedEntity)
              ] ;
      rdfs:subPropertyOf :hasPartTransitive .

:hasPartTransitive
      rdf:type owl:TransitiveProperty ;
      rdfs:comment "Has part captures the part-whole relationship between services. This property is transitive and therefore is more convenient for finding all the parts" ;
      rdfs:domain
              [ rdf:type owl:Class ;
                owl:unionOf (:ServiceBundle :CompositeService)
              ] ;
      rdfs:isDefinedBy <http://www.w3.org/TR/usdl/service> ;
      rdfs:label "has part transitive" ;
      rdfs:range
              [ rdf:type owl:Class ;
                owl:unionOf (:AbstractService :NetworkedProvisionedEntity)
              ] .

:hasProvider
      rdf:type rdf:Property , owl:ObjectProperty ;
      rdfs:comment "Indicates that a given Agent is the provider in the Networked Provisioned Entity"@en ;
      rdfs:domain :NetworkedProvisionedEntity ;
      rdfs:isDefinedBy <http://www.w3.org/TR/usdl/service> ;
      rdfs:label "provider"@en ;
      rdfs:range foaf:Agent ;
      rdfs:subPropertyOf org:memberOf .

:hasStakeholder
      rdf:type rdf:Property , owl:ObjectProperty ;
      rdfs:comment "Indicates that a given Agent is a stakeholder in the Networked Provisioned Entity"@en ;
      rdfs:domain :NetworkedProvisionedEntity ;
      rdfs:isDefinedBy <http://www.w3.org/TR/usdl/service> ;
      rdfs:label "stakeholder"@en ;
      rdfs:range foaf:Agent ;
      rdfs:subPropertyOf org:memberOf .

:hasTargetConsumer
      rdf:type owl:ObjectProperty ;
      rdfs:domain
              [ rdf:type owl:Class ;
                owl:unionOf (:AbstractService :NetworkedProvisionedEntity)
              ] ;
      rdfs:isDefinedBy <http://www.w3.org/TR/usdl/service> ;
      rdfs:label "target consumer" ;
      rdfs:range :ConsumerType .

:implements
      rdf:type owl:ObjectProperty ;
      rdfs:domain :Service ;
      rdfs:isDefinedBy <http://www.w3.org/TR/usdl/service> ;
      rdfs:label "implements" ;
      rdfs:range :AbstractService .

:includes
      rdf:type owl:ObjectProperty ;
      rdfs:comment "Operation of the service, service bundle or abstract service entails the operation of the referenced service, service bundle, abstract service, or resource; the referenced object is part of the service, service bundle or abstract service and does not need to be procured by the consumer" ;
      rdfs:domain
              [ rdf:type owl:Class ;
                owl:unionOf (:Service :ServiceBundle :AbstractService)
              ] ;
      rdfs:isDefinedBy <http://www.w3.org/TR/usdl/service> ;
      rdfs:label "includes" ;
      rdfs:range
              [ rdf:type owl:Class ;
                owl:unionOf (:Service :ServiceBundle :AbstractService usdl-f:Resource)
              ] ;
      rdfs:subPropertyOf :dependsOn .

:mirrors
      rdf:type owl:ObjectProperty ;
      rdfs:comment "The service, service bundle or abstract service defines the exact same capabilities (functionality) as the referenced service, service bundle or abstract service, thus constituting an alternative to the referenced object " ;
      rdfs:domain
              [ rdf:type owl:Class ;
                owl:unionOf (:Service :ServiceBundle :AbstractService)
              ] ;
      rdfs:isDefinedBy <http://www.w3.org/TR/usdl/service> ;
      rdfs:label "enhances" ;
      rdfs:range
              [ rdf:type owl:Class ;
                owl:unionOf (:Service :ServiceBundle :AbstractService usdl-f:Resource)
              ] ;
      rdfs:subPropertyOf :dependsOn .

:requires
      rdf:type owl:ObjectProperty ;
      rdfs:comment " Operation of the service, service bundle or abstract service depends on the operation of the referenced service, service bundle, abstract service, or resource; consequence is that the referenced object has to be made available by the consumer (i.e. has to be ordered separately)" ;
      rdfs:domain
              [ rdf:type owl:Class ;
                owl:unionOf (:Service :ServiceBundle :AbstractService)
              ] ;
      rdfs:isDefinedBy <http://www.w3.org/TR/usdl/service> ;
      rdfs:label "requires" ;
      rdfs:range
              [ rdf:type owl:Class ;
                owl:unionOf (:Service :ServiceBundle :AbstractService usdl-f:Resource)
              ] ;
      rdfs:subPropertyOf :dependsOn .
