@prefix dcterms:        <http://purl.org/dc/terms/> .
@prefix foaf:           <http://xmlns.com/foaf/0.1/> .
@prefix ldp:            <http://www.w3.org/ns/ldp#> .
@prefix oslc:           <http://open-services.net/ns/core#> .
@prefix prov:           <http://www.w3.org/ns/prov#> .
@prefix rdf:            <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs:           <http://www.w3.org/2000/01/rdf-schema#> .
@prefix xsd:            <http://www.w3.org/2001/XMLSchema#> .

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

<#ResourceShape>
    a oslc:ResourceShape ;
    dcterms:title "A shape resource describes the contents of and constraints on some set of described resources." ;
    dcterms:description "A resource should satisfy all the constraints defined by its applicable shapes." ;
    oslc:describes oslc:ResourceShape ;
    oslc:property <#shapeTitle>, <#shapeDescription>, <#describes>, <#property>, <#hidden> .

<#shapeTitle> a oslc:Property ;
    oslc:name "title" ;
    oslc:propertyDefinition dcterms:title ;
    oslc:occurs oslc:Zero-or-one ;
    dcterms:description "The summary of this shape."^^rdf:XMLLiteral ;
    oslc:valueType rdf:XMLLiteral ;
    oslc:readOnly true .

<#describes> a oslc:Property ;
    oslc:name "describes" ;
    oslc:propertyDefinition oslc:describes ;
    oslc:occurs oslc:Zero-or-many ;
    oslc:range rdfs:Class ;
    dcterms:description "The described resource types that this shape applies to."^^rdf:XMLLiteral ;
    oslc:valueType oslc:Resource ;
    oslc:representation oslc:Reference ;
    oslc:readOnly true .

<#property> a oslc:Property ;
    oslc:name "property" ;
    oslc:propertyDefinition oslc:property ;
    oslc:range oslc:Property ;
    dcterms:description "Indicates an expected property of the described resources."^^rdf:XMLLiteral ;
    oslc:occurs oslc:Zero-or-many ;
    oslc:readOnly true ;
    oslc:valueType oslc:Resource ;
    oslc:representation oslc:Inline .

<#hidden> a oslc:Property ;
    oslc:name "hidden" ;
    oslc:propertyDefinition oslc:hidden ;
    dcterms:description "Indicates the resource or property should not be displayed to users."^^rdf:XMLLiteral ;
    oslc:occurs oslc:Zero-or-one ;
    oslc:readOnly true ;
    oslc:valueType xsd:boolean .



<#Property>
    a oslc:ResourceShape ;
    dcterms:title "Specifies the name, description, summary, occurrence, value type, allowed values, and several other aspects of the defined property." ;
    oslc:describes oslc:Property ;
    oslc:property 
        <#shapeDescription>,
        <#title>,  
        <#anonymousAllowedValue>, 
        <#allowedValues>, 
        <#defaultValue>, 
        <#hidden>, 
        <#isMemberProperty>,
        <#name>, 
        <#maxSize>, 
        <#occurs>, 
        <#propertyDefinition>, 
        <#range>, 
        <#readOnly>,
        <#representation>, 
        <#valueShape>, 
        <#valueType> .

<#shapeDescription>  a oslc:Property ;
    oslc:name "description" ;
    oslc:propertyDefinition dcterms:description ;
    oslc:occurs oslc:Zero-or-one;
    dcterms:description """The description of the defined constraint."""^^rdf:XMLLiteral ;
    oslc:valueType rdf:XMLLiteral ;
    oslc:readOnly true .
    
<#title>  a oslc:Property ;
    oslc:name "title" ;
    oslc:propertyDefinition dcterms:title ;
    oslc:occurs oslc:Zero-or-one;
    dcterms:description """The summary of the defined property."""^^rdf:XMLLiteral ;
    oslc:valueType rdf:XMLLiteral ;
    oslc:readOnly true .

<#anonymousAllowedValue> a oslc:Property ;
    oslc:name "allowedValue" ;
    oslc:propertyDefinition oslc:allowedValue ;
    oslc:occurs oslc:Zero-or-many;
    oslc:readOnly true ;
    dcterms:description "Specifies the allowed values of a property."^^rdf:XMLLiteral .

    
<#allowedValues> a oslc:Property ;
    oslc:name "allowedValues" ;
    oslc:propertyDefinition oslc:allowedValues ;
    oslc:occurs oslc:Zero-or-one;
    oslc:readOnly true ;
    oslc:valueType oslc:Resource ;
    oslc:representation oslc:Reference ;
    oslc:range oslc:AllowedValues ;
    dcterms:description "The resource containing a set of allowed values of the defined property."^^rdf:XMLLiteral .

<#defaultValue>  a oslc:Property ; 
    oslc:name "defaultValue" ;
    oslc:propertyDefinition oslc:defaultValue ;
    oslc:occurs oslc:Zero-or-one;
    dcterms:description """The default value of the defined property."""^^rdf:XMLLiteral ;
    oslc:readOnly true .

<#isMemberProperty>  a oslc:Property ;
    oslc:name "isMemberProperty" ;
    oslc:propertyDefinition oslc:isMemberProperty ;
    oslc:occurs oslc:Zero-or-one;
    dcterms:description """If true then the described resource is a container and the defined 
        property is used for container membership."""^^rdf:XMLLiteral ;
    oslc:valueType xsd:boolean ;
    oslc:readOnly true .
    
<#name>  a oslc:Property ;
    oslc:name "name" ;
    oslc:propertyDefinition oslc:name ;
    oslc:occurs oslc:Exactly-one;
    dcterms:description """The local name of the defined property."""^^rdf:XMLLiteral ;
    oslc:valueType xsd:string ;
    oslc:readOnly true .
    
<#maxSize>  a oslc:Property ;
    oslc:name "maxSize" ;
    oslc:propertyDefinition oslc:maxSize ;
    oslc:occurs oslc:Zero-or-one;
    dcterms:description """For string datatype properties, the maximum number of characters."""^^rdf:XMLLiteral ;
    oslc:valueType xsd:integer ;
    oslc:readOnly true .
    
<#occurs>  a oslc:Property ;
    oslc:name "occurs" ;
    oslc:propertyDefinition oslc:occurs ;
    oslc:range oslc:Cardinality ;
    oslc:occurs oslc:Exactly-one;
    dcterms:description """The number of times the defined property may occur."""^^rdf:XMLLiteral ;
    oslc:valueType oslc:Resource ;
    oslc:representation oslc:Reference ;
    oslc:readOnly true .
    
<#propertyDefinition>  a oslc:Property ;
    oslc:name "propertyDefinition" ;
    oslc:propertyDefinition oslc:propertyDefinition ;
    oslc:range rdf:Property ;
    oslc:occurs oslc:Exactly-one;
    dcterms:description """The URI of the defined or constrained property."""^^rdf:XMLLiteral ;
    oslc:valueType oslc:Resource ;
    oslc:representation oslc:Reference ;
    oslc:readOnly true .
    
<#range>  a oslc:Property ;
    oslc:name "range" ;
    oslc:propertyDefinition oslc:range ;
    oslc:range rdfs:Class ;
    oslc:occurs oslc:One-or-many;
    dcterms:description "For object properties, specifies what the target resource type is expected to be, but that is not necessarily the case."^^rdf:XMLLiteral ;
    oslc:valueType oslc:Resource ;
    oslc:representation oslc:Reference ;
    oslc:readOnly true .
    
<#readOnly>  a oslc:Property ;
    oslc:name "readOnly" ;
    oslc:propertyDefinition oslc:readOnly ;
    oslc:occurs oslc:Zero-or-one;
    dcterms:description """If true then the defined property cannot be directly 
        writen by clients, but may be updated indirectly by servers."""^^rdf:XMLLiteral ;
    oslc:valueType xsd:boolean ;
    oslc:readOnly true .
    
<#representation>  a oslc:Property ;
    oslc:name "representation" ;
    oslc:propertyDefinition oslc:representation ;
    oslc:range oslc:Representation ;
    oslc:occurs oslc:Zero-or-one;
    dcterms:description """For object properties, how the object resource is represented in 
        the representation of the described resource."""^^rdf:XMLLiteral ;
    oslc:valueType oslc:Resource ;
    oslc:representation oslc:Reference ;
    oslc:readOnly true .
    
<#valueShape>  a oslc:Property ;
    oslc:name "valueShape" ;
    oslc:propertyDefinition oslc:valueShape ;
    oslc:range oslc:ResourceShape ;
    oslc:occurs oslc:Zero-or-one;
    dcterms:description """For object properties, the URI of a shape resource 
        that describes the object resource."""^^rdf:XMLLiteral ;
    oslc:valueType oslc:Resource ;
    oslc:representation oslc:Reference ;
    oslc:readOnly true .
    
<#valueType>  a oslc:Property ;
    oslc:name "valueType" ;
    oslc:propertyDefinition oslc:valueType ;
    oslc:range oslc:ResourceValueType ;
    oslc:occurs oslc:Zero-or-many;
    dcterms:description """The type of values of the defined property."""^^rdf:XMLLiteral ;
    oslc:valueType oslc:Resource ;
    oslc:representation oslc:Reference ;
    oslc:readOnly true .
    

<#AllowedValues>
    a oslc:ResourceShape ;
    dcterms:title "Defines a set of allowed values for a defined property."^^rdf:XMLLiteral  ;
    oslc:describes oslc:AllowedValues ;
    oslc:property <#allowedValue> .

<#allowedValue> a oslc:Property ;
    oslc:name "allowedValue" ;
    oslc:propertyDefinition oslc:allowedValue ;
    oslc:occurs oslc:One-or-many;
    oslc:readOnly true ;
    dcterms:description "Specifies the allow values in an AllowedValue constraint."^^rdf:XMLLiteral .



