# Copyright 2019 OASIS Open
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

@prefix foaf:    <http://xmlns.com/foaf/0.1/> .
@prefix oslc_cm: <http://open-services.net/ns/cm#> .
@prefix oslc_config:  <http://open-services.net/ns/config#> .
@prefix oslc:  <http://open-services.net/ns/core#> .
@prefix rdf:     <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix dcterms: <http://purl.org/dc/terms/> .
@prefix xsd:     <http://www.w3.org/2001/XMLSchema#> .
@prefix oslc_rm: <http://open-services.net/ns/rm#> .
@prefix rdfs:    <http://www.w3.org/2000/01/rdf-schema#> .
@prefix vs: <http://www.w3.org/2003/06/sw-vocab-status/ns#>.


<#ChangeRequestShape> a oslc:ResourceShape ;
        oslc:describes  oslc_cm:ChangeRequest ;
        dcterms:title   "A general type for records in a Change Management." ;
        oslc:property
            <#affectsPlanItem>,
            <#affectsRequirement>,
            <#affectedByDefect>,
            <#closeDate>,
            <#contributor>,
            <#created>,
            <#creator>,
            <#description>,
            <#discussedBy>,
            <#identifier>,
            <#serviceProvider>,
            <#instanceShape>,
            <#modified>,
            <#priority>,
            <#relatedChangeRequest>,
            <#shortTitle>,
            <#status>,
            <#state>,
            <#subject>,
            <#title>,
            <#tracksChangeSet>,
            <#implementsRequirement>,
            <#tracksRequirement>,
            <#type>,
            <#authorizer>,
            <#parent>,

            # State predicates
            <#closed>,
            <#inProgress>,
            <#fixed>,
            <#approved>,
            <#reviewed>,
            <#verified>
        .

<#ChangeNoticeShape>  a      oslc:ResourceShape ;
        oslc:describes       oslc_cm:ChangeNotice ;
        dcterms:title        "A notification of a change request that requires authorization to address." ;
        dcterms:description  "Represents an assignment notification of a change request. May be used also to bestow authority onto the assigned user to effect the changes." ;
        oslc:property
            <#affectsPlanItem>,
            <#affectsRequirement>,
            <#affectedByDefect>,
            <#closeDate>,
            <#contributor>,
            <#created>,
            <#creator>,
            <#description>,
            <#discussedBy>,
            <#identifier>,
            <#serviceProvider>,
            <#instanceShape>,
            <#modified>,
            <#priority>,
            <#relatedChangeRequest>,
            <#severity>,
            <#shortTitle>,
            <#status>,
            <#state>,
            <#subject>,
            <#title>,
            <#tracksChangeSet>,
            <#type>,
            <#authorizer>,
            <#parent>,

            # State predicates
            <#closed>,
            <#inProgress>,
            <#fixed>,
            <#approved>,
            <#reviewed>,
            <#verified>
        .

<#DefectShape>  a                 oslc:ResourceShape ;
        oslc:describes       oslc_cm:Defect ;
        dcterms:title        "A software or product defect." ;
        dcterms:description  "Used to report defects in testing." ;
        oslc:property
            <#affectsPlanItem>,
            <#affectsRequirement>,
            <#affectedByDefect>,
            <#closeDate>,
            <#contributor>,
            <#created>,
            <#creator>,
            <#description>,
            <#discussedBy>,
            <#identifier>,
            <#serviceProvider>,
            <#instanceShape>,
            <#modified>,
            <#priority>,
            <#relatedChangeRequest>,
            <#severity>,
            <#shortTitle>,
            <#status>,
            <#state>,
            <#subject>,
            <#title>,
            <#tracksChangeSet>,
            <#type>,
            <#authorizer>,
            <#parent>,

            # State predicates
            <#closed>,
            <#inProgress>,
            <#fixed>,
            <#approved>,
            <#reviewed>,
            <#verified>
        .

<#EnhancementShape>  a       oslc:ResourceShape ;
        oslc:describes  oslc_cm:Enhancement ;
        dcterms:title   "A request for new functionality." ;
        oslc:property
            <#affectsPlanItem>,
            <#affectsRequirement>,
            <#affectedByDefect>,
            <#closeDate>,
            <#contributor>,
            <#created>,
            <#creator>,
            <#description>,
            <#discussedBy>,
            <#identifier>,
            <#implementsRequirement>,
            <#serviceProvider>,
            <#instanceShape>,
            <#modified>,
            <#priority>,
            <#relatedChangeRequest>,
            <#shortTitle>,
            <#status>,
            <#state>,
            <#subject>,
            <#title>,
            <#tracksChangeSet>,
            <#type>,
            <#authorizer>,
            <#parent>,

            # State predicates
            <#closed>,
            <#inProgress>,
            <#fixed>,
            <#approved>,
            <#reviewed>,
            <#verified>
        .

<#ReviewTaskShape>  a             oslc:ResourceShape ;
        oslc:describes       oslc_cm:ReviewTask ;
        dcterms:title        "A request to make a changes and review the change." ;
        dcterms:description  "A review task can be used to request and approve changes to requirements, test plans, test cases or other resources." ;
        oslc:property
            <#affectsPlanItem>,
            <#affectsRequirement>,
            <#affectedByDefect>,
            <#closeDate>,
            <#contributor>,
            <#created>,
            <#creator>,
            <#description>,
            <#discussedBy>,
            <#identifier>,
            <#serviceProvider>,
            <#instanceShape>,
            <#modified>,
            <#priority>,
            <#relatedChangeRequest>,
            <#shortTitle>,
            <#status>,
            <#state>,
            <#subject>,
            <#title>,
            <#tracksChangeSet>,
            <#tracksRequirement>,
            <#type>,
            <#authorizer>,
            <#parent>,

            # State predicates
            <#closed>,
            <#inProgress>,
            <#fixed>,
            <#approved>,
            <#reviewed>,
            <#verified>
        .

<#TaskShape>  a              oslc:ResourceShape ;
        oslc:describes       oslc_cm:Task ;
        dcterms:title        "An executable and trackable activity." ;
        dcterms:description  "Used to track assigned work that to be completed within a certain time." ;
        oslc:property
            <#affectsPlanItem>,
            <#affectsRequirement>,
            <#affectedByDefect>,
            <#closeDate>,
            <#contributor>,
            <#created>,
            <#creator>,
            <#description>,
            <#discussedBy>,
            <#identifier>,
            <#serviceProvider>,
            <#instanceShape>,
            <#modified>,
            <#priority>,
            <#relatedChangeRequest>,
            <#shortTitle>,
            <#status>,
            <#state>,
            <#subject>,
            <#title>,
            <#tracksChangeSet>,
            <#type>,
            <#authorizer>,
            <#parent>,

            # State predicates
            <#closed>,
            <#inProgress>,
            <#fixed>,
            <#approved>,
            <#reviewed>
        .

<#authorizer>  a                 oslc:Property ;
        oslc:name                "authorizer" ;
        oslc:range               foaf:Agent ;
        oslc:occurs              oslc:Zero-or-many ;
        oslc:propertyDefinition  oslc_cm:authorizer ;
        oslc:valueType           oslc:AnyResource ;
        oslc:representation      oslc:Either ;
        dcterms:description      "Agents who are responsible authorizing and/or has authorized effort to be expended to address a set of child change requests."^^rdf:XMLLiteral .

<#parent>  a           oslc:Property ;
        oslc:name                "parent" ;
        oslc:occurs              oslc:Zero-or-many ;
        oslc:propertyDefinition  oslc_cm:parent ;
        oslc:range               oslc_cm:ChangeRequest ;
        oslc:representation      oslc:Either ;
        oslc:valueType           oslc:AnyResource ;
        dcterms:description      "The related parent change requests of the subject change request. Establishes a parent/child relationship between change requests."^^rdf:XMLLiteral ;
        dcterms:title            "Parent of Change Request" .

<#affectedByDefect>  a           oslc:Property ;
        oslc:name                "affectedByDefect" ;
        oslc:occurs              oslc:Zero-or-many ;
        oslc:propertyDefinition  oslc_cm:affectedByDefect ;
        oslc:range               oslc_cm:Defect ;
        oslc:representation      oslc:Reference ;
        oslc:valueType           oslc:Resource ;
        dcterms:description      "Change request is affected by a reported defect. It is likely that the target resource will be an <code>oslc_cm:Defect</code> but that is not necessarily the case."^^rdf:XMLLiteral ;
        dcterms:title            "Affected by Defect" .

<#affectedByDefect>  a           oslc:Property ;
        oslc:name                "affectedByDefect" ;
        oslc:occurs              oslc:Zero-or-many ;
        oslc:propertyDefinition  oslc_cm:affectedByDefect ;
        oslc:range               oslc_cm:Defect ;
        oslc:representation      oslc:Reference ;
        oslc:valueType           oslc:Resource ;
        dcterms:description      "Change request is affected by a reported defect. It is likely that the target resource will be an <code>oslc_cm:Defect</code> but that is not necessarily the case."^^rdf:XMLLiteral ;
        dcterms:title            "Affected by Defect" .

<#affectsPlanItem>  a            oslc:Property ;
        oslc:name                "affectsPlanItem" ;
        oslc:occurs              oslc:Zero-or-many ;
        oslc:propertyDefinition  oslc_cm:affectsPlanItem ;
        oslc:representation      oslc:Reference ;
        oslc:valueType           oslc:Resource ;
        dcterms:description      "Change request affects plan item."^^rdf:XMLLiteral ;
        dcterms:title            "Affects PlanItem" .

<#affectsRequirement>  a         oslc:Property ;
        oslc:name                "affectsRequirement" ;
        oslc:occurs              oslc:Zero-or-many ;
        oslc:propertyDefinition  oslc_cm:affectsRequirement ;
        oslc:range               oslc_rm:Requirement ;
        oslc:representation      oslc:Reference ;
        oslc:valueType           oslc:Resource ;
        dcterms:description      "Change request affecting a Requirement. It is likely that the target resource will be an <code>oslc_rm:Requirement</code> but that is not necessarily the case."^^rdf:XMLLiteral ;
        dcterms:title            "Affects Requirement" .

<#closeDate>  a                  oslc:Property ;
        oslc:name                "closeDate" ;
        oslc:occurs              oslc:Zero-or-one ;
        oslc:propertyDefinition  oslc_cm:closeDate ;
        oslc:readOnly            true ;
        oslc:valueType           xsd:dateTime ;
        dcterms:description      "The date at which no further activity or work is intended to be conducted."^^rdf:XMLLiteral .

<#contributor>  a                oslc:Property ;
        oslc:name                "contributor" ;
        oslc:occurs              oslc:Zero-or-many ;
        oslc:propertyDefinition  dcterms:contributor ;
        oslc:range               foaf:Person ;
        oslc:representation      oslc:Either ;
        oslc:valueType           oslc:AnyResource ;
        dcterms:description      "The person(s) who are responsible for the work needed to complete the change request (reference: Dublin Core). It is likely that the target resource will be a <code>foaf:Person</code> but that is not necessarily the case."^^rdf:XMLLiteral .

<#created>  a                    oslc:Property ;
        oslc:name                "created" ;
        oslc:occurs              oslc:Zero-or-one ;
        oslc:propertyDefinition  dcterms:created ;
        oslc:readOnly            true ;
        oslc:valueType           xsd:dateTime ;
        dcterms:description      "Timestamp of resource creation (reference: Dublin Core)."^^rdf:XMLLiteral .

<#creator>  a                    oslc:Property ;
        oslc:name                "creator" ;
        oslc:occurs              oslc:Zero-or-many ;
        oslc:propertyDefinition  dcterms:creator ;
        oslc:range               foaf:Person ;
        oslc:representation      oslc:Either ;
        oslc:valueType           oslc:AnyResource ;
        dcterms:description      "Creator or creators of resource (reference: Dublin Core). It is likely that the target resource will be a <code>foaf:Person</code> but that is not necessarily the case."^^rdf:XMLLiteral .

<#description>  a                oslc:Property ;
        oslc:name                "description" ;
        oslc:occurs              oslc:Zero-or-one ;
        oslc:propertyDefinition  dcterms:description ;
        oslc:valueType           rdf:XMLLiteral ;
        dcterms:description      "Descriptive text (reference: Dublin Core) about resource represented as rich text in XHTML content. SHOULD include only content that is valid and suitable inside an XHTML &lt;div&gt; element."^^rdf:XMLLiteral .

<#discussedBy>  a                oslc:Property ;
        oslc:name                "discussedBy" ;
        oslc:occurs              oslc:Zero-or-one ;
        oslc:propertyDefinition  oslc:discussedBy ;
        oslc:range               oslc:Discussion ;
        oslc:representation      oslc:Either ;
        oslc:valueType           oslc:AnyResource ;
        dcterms:description      "A series of notes and comments about this change request."^^rdf:XMLLiteral .

<#identifier>  a                 oslc:Property ;
        oslc:name                "identifier" ;
        oslc:occurs              oslc:Exactly-one ;
        oslc:propertyDefinition  dcterms:identifier ;
        oslc:readOnly            true ;
        oslc:valueType           xsd:string ;
        dcterms:description      "A unique identifier for a resource. Assigned by the service provider when a resource is created. Not intended for end-user display."^^rdf:XMLLiteral .

<#implementsRequirement>  a      oslc:Property ;
        oslc:name                "implementsRequirement" ;
        oslc:occurs              oslc:Zero-or-many ;
        oslc:propertyDefinition  oslc_cm:implementsRequirement ;
        oslc:range               oslc_rm:Requirement ;
        oslc:representation      oslc:Reference ;
        oslc:valueType           oslc:Resource ;
        dcterms:description      "Implements associated Requirement. It is likely that the target resource will be an <code>oslc_rm:Requirement</code> but that is not necessarily the case."^^rdf:XMLLiteral ;
        dcterms:title            "Implements Requirement" .

<#serviceProvider> a oslc:Property ;
    oslc:name "serviceProvider" ;
    oslc:propertyDefinition oslc:serviceProvider  ;
    oslc:range oslc:ServiceProvider ;
    oslc:occurs oslc:Zero-or-many;
    dcterms:description """A link to the resource's OSLC Service Provider. There may be cases when the
subject resource is available from a service provider that implements multiple domain
specifications, which could result in multiple values for this property."""^^rdf:XMLLiteral ;
    oslc:valueType oslc:Resource ;
    oslc:representation oslc:Reference .

<#instanceShape>  a              oslc:Property ;
        oslc:name                "instanceShape" ;
        oslc:occurs              oslc:Zero-or-many ;
        oslc:propertyDefinition  oslc:instanceShape ;
        oslc:range               oslc:ResourceShape ;
        oslc:representation      oslc:Reference ;
        oslc:valueType           oslc:Resource ;
        dcterms:description      "Resource Shape that provides hints as to resource property value-types and allowed values."^^rdf:XMLLiteral .

<#modified>  a                   oslc:Property ;
        oslc:name                "modified" ;
        oslc:occurs              oslc:Zero-or-one ;
        oslc:propertyDefinition  dcterms:modified ;
        oslc:readOnly            true ;
        oslc:valueType           xsd:dateTime ;
        dcterms:description      "Timestamp of latest resource modification (reference: Dublin Core)."^^rdf:XMLLiteral .

<#priority>  a                   oslc:Property ;
        oslc:name                "priority" ;
        oslc:occurs              oslc:Zero-or-many ;
        oslc:propertyDefinition  oslc_cm:priority ;
        oslc:range               oslc_cm:Priority ;
        oslc:valueType           oslc:AnyResource ;
        oslc:representation      oslc:Either ;
        dcterms:description      "Priority of this change request."^^rdf:XMLLiteral .

<#relatedChangeRequest>  a       oslc:Property ;
        oslc:name                "relatedChangeRequest" ;
        oslc:occurs              oslc:Zero-or-many ;
        oslc:propertyDefinition  oslc_cm:relatedChangeRequest ;
        oslc:representation      oslc:Reference ;
        oslc:valueType           oslc:Resource ;
        dcterms:description      "This relationship is loosely coupled and has no specific meaning."^^rdf:XMLLiteral ;
        dcterms:title            "Related ChangeRequest" .

<#severity>  a                   oslc:Property ;
        oslc:name                "severity" ;
        oslc:occurs              oslc:Zero-or-many ;
        oslc:propertyDefinition  oslc_cm:severity ;
        oslc:range               oslc_cm:Severity ;
        oslc:valueType           oslc:AnyResource ;
        oslc:representation      oslc:Either ;
        dcterms:description      "Severity or criticality of this change request."^^rdf:XMLLiteral .

<#shortTitle>  a                 oslc:Property ;
        oslc:name                "shortTitle" ;
        oslc:occurs              oslc:Zero-or-one ;
        oslc:propertyDefinition  oslc:shortTitle ;
        oslc:valueType           rdf:XMLLiteral ;
        dcterms:description      "Short name identifying a resource, often used as an abbreviated identifier for presentation to end-users. SHOULD include only content that is valid inside an XHTML &lt;span&gt; element."^^rdf:XMLLiteral ;
        dcterms:title            "Short title" .

# deprecated, use state
<#status>  a                     oslc:Property ;
        oslc:name                "status" ;
        oslc:occurs              oslc:Zero-or-one ;
        oslc:propertyDefinition  oslc_cm:status ;
        oslc:valueType           xsd:string ;
        dcterms:description      "Used to indicate the status of the change request. This property is often read-only."^^rdf:XMLLiteral .

<#state>  a                      oslc:Property ;
        oslc:name                "state" ;
        oslc:occurs              oslc:Zero-or-one ;
        oslc:propertyDefinition  oslc_cm:state ;
        oslc:range               oslc_cm:State ;
        dcterms:description      "Used to indicate the state of the change request. This property is often read-only, but could be changed using OSLC Actions."^^rdf:XMLLiteral .

<#subject>  a                    oslc:Property ;
        oslc:name                "subject" ;
        oslc:occurs              oslc:Zero-or-many ;
        oslc:propertyDefinition  dcterms:subject ;
        oslc:valueType           xsd:string ;
        dcterms:description      "Tag or keyword for a resource. Each occurrence of a dcterms:subject property denotes an additional tag for the resource."^^rdf:XMLLiteral .

<#title>  a                      oslc:Property ;
        oslc:name                "title" ;
        oslc:occurs              oslc:Exactly-one ;
        oslc:propertyDefinition  dcterms:title ;
        oslc:valueType           rdf:XMLLiteral ;
        dcterms:description      "Title (reference: Dublin Core) or often a single line summary of the resource represented as rich text in XHTML content. SHOULD include only content that is valid and suitable inside an XHTML &lt;div&gt; element."^^rdf:XMLLiteral .

<#tracksChangeSet>  a            oslc:Property ;
        oslc:name                "tracksChangeSet" ;
        oslc:occurs              oslc:Zero-or-many ;
        oslc:propertyDefinition  oslc_cm:tracksChangeSet ;
        oslc:range               oslc_config:ChangeSet ;
        oslc:representation      oslc:Reference ;
        oslc:valueType           oslc:Resource ;
        dcterms:description      "Tracks a resource that represents a set of changes on the resource."^^rdf:XMLLiteral ;
        dcterms:title            "Tracks Change Set" .

<#tracksRequirement>  a          oslc:Property ;
        oslc:name                "tracksRequirement" ;
        oslc:occurs              oslc:Zero-or-many ;
        oslc:propertyDefinition  oslc_cm:tracksRequirement ;
        oslc:range               oslc_rm:Requirement ;
        oslc:representation      oslc:Reference ;
        oslc:valueType           oslc:Resource ;
        dcterms:description      "Tracks the associated Requirement or Requirement ChangeSet resources. It is likely that the target resource will be an <code>oslc_rm:Requirement</code> but that is not necessarily the case."^^rdf:XMLLiteral ;
        dcterms:title            "Tracks Requirement" .

<#type>  a                       oslc:Property ;
        oslc:name                "type" ;
        oslc:occurs              oslc:Zero-or-many ;
        oslc:propertyDefinition  rdf:type ;
        oslc:representation      oslc:Reference ;
        oslc:valueType           oslc:Resource ;
        dcterms:description      "The resource type URIs, at least one of which should be oslc_cm:ChangeRequest."^^rdf:XMLLiteral .


<#closed>   a                     oslc:Property ;
        oslc:name                "closed" ;
        oslc:occurs              oslc:Zero-or-one ;
        oslc:propertyDefinition  oslc_cm:closed ;
        oslc:valueType           xsd:boolean ;
        dcterms:description      "Whether or not the Change Request is completely done, no further fixes or fix verification is needed."^^rdf:XMLLiteral .

<#inProgress>   a                oslc:Property ;
        oslc:name                "inProgress" ;
        oslc:occurs              oslc:Zero-or-one ;
        oslc:propertyDefinition  oslc_cm:inProgress ;
        oslc:valueType           xsd:boolean ;
        dcterms:description      "Whether or not the Change Request in a state indicating that active work is occurring. If oslc_cm:inProgress is true, then oslc_cm:fixed and oslc_cm:closed must also be false."^^rdf:XMLLiteral .

<#fixed>   a                     oslc:Property ;
        oslc:name                "fixed" ;
        oslc:occurs              oslc:Zero-or-one ;
        oslc:propertyDefinition  oslc_cm:fixed ;
        oslc:valueType           xsd:boolean ;
        dcterms:description      "Whether or not the Change Request has been fixed."^^rdf:XMLLiteral .

<#approved>   a                  oslc:Property ;
        oslc:name                "approved" ;
        oslc:occurs              oslc:Zero-or-one ;
        oslc:propertyDefinition  oslc_cm:approved ;
        oslc:valueType           xsd:boolean ;
        dcterms:description      "Whether or not the Change Request has been approved."^^rdf:XMLLiteral .

<#reviewed>   a                  oslc:Property ;
        oslc:name                "reviewed" ;
        oslc:occurs              oslc:Zero-or-one ;
        oslc:propertyDefinition  oslc_cm:reviewed ;
        oslc:valueType           xsd:boolean ;
        dcterms:description      "Whether or not the Change Request has been reviewed."^^rdf:XMLLiteral .

<#verified>   a                  oslc:Property ;
        oslc:name                "verified" ;
        oslc:occurs              oslc:Zero-or-one ;
        oslc:propertyDefinition  oslc_cm:verified ;
        oslc:valueType           xsd:boolean ;
        dcterms:description      "Whether or not the resolution or fix of the Change Request has been verified."^^rdf:XMLLiteral .
