@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>.
@prefix owl: <http://www.w3.org/2002/07/owl#>.
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
@prefix dcterms: <http://purl.org/dc/terms/>.
@prefix oslc: <http://open-services.net/ns/core#> .

@base <http://open-services.net/ns/core/shapes/3.0/Service-shape.ttl> .


<#Service>  a oslc:ResourceShape ;
    dcterms:title "Service" ;
    dcterms:description """An LDPC whose properties describe specific services offered by a server, 
        and the URIs to use for those services in the context of that ServiceProvider.""" ;
    oslc:describes oslc:Service ;
    oslc:property 
        <#oslc-service-domain>,
        <#oslc-creationFactory>,
        <#oslc-queryCapability>,
        <#oslc-selectionDialog>,
        <#oslc-creationDialog>,
        <#oslc-usage>
.

<#oslc-service-domain> a oslc:Property ;
	oslc:name "domain" ;
	oslc:propertyDefinition oslc:domain ;
	oslc:occurs oslc:Exactly-one;
	dcterms:description "Namespace URI of the specification that is implemented by this service. In most cases this namespace URI will be for an OSLC domain, but other URIs MAY be used."^^rdf:XMLLiteral ;
	oslc:valueType oslc:Resource ;
	oslc:representation oslc:Reference ;
	oslc:readOnly true
.

<#oslc-creationFactory> a oslc:Property ;
	oslc:name "creationFactory" ;
	oslc:propertyDefinition oslc:creationFactory ;
	oslc:range oslc:CreationFactory ;
	oslc:occurs oslc:Zero-or-many;
	dcterms:description "An LDPC that enables clients to create new resources."^^rdf:XMLLiteral ;
	oslc:valueType oslc:AnyResource ;
	oslc:representation oslc:Inline ;
	oslc:readOnly true
.

<#oslc-queryCapability> a oslc:Property ;
	oslc:name "queryCapability" ;
	oslc:propertyDefinition oslc:queryCapability ;
	oslc:range oslc:QueryCapability ;
	oslc:occurs oslc:Zero-or-many;
	dcterms:description "Enables clients query across a collection of resources."^^rdf:XMLLiteral ;
	oslc:valueType oslc:AnyResource ;
	oslc:representation oslc:Inline ;
	oslc:readOnly true
.

<#oslc-selectionDialog> a oslc:Property ;
	oslc:name "selectionDialog" ;
	oslc:propertyDefinition oslc:selectionDialog ;
	oslc:range oslc:Dialog ;
	oslc:occurs oslc:Zero-or-many;
	dcterms:description "Enables clients to select a resource via UI."^^rdf:XMLLiteral ;
	oslc:valueType oslc:AnyResource ;
	oslc:representation oslc:Inline ;
	oslc:readOnly true
.

<#oslc-creationDialog> a oslc:Property ;
	oslc:name "creationDialog" ;
	oslc:propertyDefinition oslc:creationDialog ;
	oslc:range oslc:Dialog ;
	oslc:occurs oslc:Zero-or-many;
	dcterms:description "Enables clients to create a resource via UI."^^rdf:XMLLiteral ;
	oslc:valueType oslc:AnyResource ;
	oslc:representation oslc:Inline ;
	oslc:readOnly true
.

<#oslc-usage> a oslc:Property ;
	oslc:name "usage" ;
	oslc:propertyDefinition oslc:usage ;
	oslc:occurs oslc:Zero-or-many;
	dcterms:description """An identifier URI for the domain specified usage of 
		this resource. If a resource has multiple uses, it may designate the primary or default one that should be used with a property value of oslc:default."""^^rdf:XMLLiteral ;
	oslc:valueType oslc:Resource ;
	oslc:representation oslc:Reference ;
	oslc:readOnly true
.

