# Copyright 2023 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.

# RDF Vocabulary document for OSLC Core Tracked Resource Set

@prefix dcterms:     <http://purl.org/dc/terms/> .
@prefix ldp:         <http://www.w3.org/ns/ldp#> .
@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 vann:        <http://purl.org/vocab/vann/> .

@prefix trs:         <http://open-services.net/ns/core/trs#> .
@prefix trspatch:    <http://open-services.net/ns/core/trspatch#> .

# the vocabulary

trs:
    a owl:Ontology ;
    dcterms:title                 "OSLC Core Tracked Resource Set vocabulary" ;
    rdfs:label                    "OSLC Core Tracked Resource Set vocabulary" ;
    dcterms:description           "The OSLC Core Tracked Resource Set vocabulary defines terms used in describing Tracked Resource Sets." ;
    dcterms:source                <https://docs.oasis-open-projects.org/oslc-op/trs/v3.0/os/trs-vcab.ttl> ;
    dcterms:isPartOf              <https://docs.oasis-open-projects.org/oslc-op/trs/v3.0/os/tracked-resource-set.html> ;
    dcterms:hasVersion            "OS" ;
    dcterms:license               <http://www.apache.org/licenses/LICENSE-2.0> ;
    dcterms:issued               "2023-07-23"^^<http://www.w3.org/2001/XMLSchema#date> ;
    dcterms:dateCopyrighted       "2012-2023" ;
    vann:preferredNamespacePrefix "trs" .

# Classes

trs:TrackedResourceSet
    a rdfs:Class ;
    rdfs:isDefinedBy trs: ;
    rdfs:label "Tracked Resource Set" ;
    rdfs:comment "A Tracked Resource Set provides a representation of the current state of a Resource Set." .

trs:ChangeLog
    a rdfs:Class ;
    rdfs:isDefinedBy trs: ;
    rdfs:label "Change Log" ;
    rdfs:comment "A Change Log describes what resources have been created, modified or deleted, and when." .

trs:Base
    a rdfs:Class ;
    rdfs:isDefinedBy trs: ;
    rdfs:subClassOf ldp:DirectContainer ;
    rdfs:label "Base" ;
    rdfs:comment "A Base identifies the initial set of resources in a Tracked Resource Set." .

trs:Creation
  a rdfs:Class ;
  rdfs:isDefinedBy trs: ;
  rdfs:label "Creation" ;
  rdfs:comment "Represents a resource creation or modification change event." .

trs:Modification
  a rdfs:Class ;
  rdfs:isDefinedBy trs: ;
  rdfs:label "Modification" ;
  rdfs:comment "Represents a resource creation or modification change event." .

trs:Deletion
  a rdfs:Class ;
  rdfs:isDefinedBy trs: ;
  rdfs:label "Deletion" ;
  rdfs:comment "Represents a resource deletion change event." .


# Properties

trs:base
    a rdf:Property ;
    rdfs:isDefinedBy trs: ;
    rdfs:label "base" ;
    rdfs:range trs:Base ;
    rdfs:comment "An enumeration of the Resources in the Resource Set." .

trs:changeLog
    a rdf:Property ;
    rdfs:isDefinedBy trs: ;
    rdfs:label "changeLog" ;
    rdfs:range trs:ChangeLog ;
    rdfs:comment "A Change Log providing an order series of incremental adjustments to the Resource Set." .

trs:cutoffEvent
    a rdf:Property ;
    rdfs:isDefinedBy trs: ;
    rdfs:label "cutoffEvent" ;
    rdfs:comment "The most recent Change Log entry that is accounted for in this Base. When rdf:nil, the Base is an enumeration at the start of time." .

trs:change
    a rdf:Property ;
    rdfs:isDefinedBy trs: ;
    rdfs:label "change" ;
    rdfs:comment "The Change Event entries." .

trs:previous
    a rdf:Property ;
    rdfs:isDefinedBy trs: ;
    rdfs:label "previous" ;
    rdfs:range trs:ChangeLog ;
    rdfs:comment "The continuation of the Change Log, containing the next group of chronologically earlier Change Events." .

trs:changed
    a rdf:Property ;
    rdfs:isDefinedBy trs: ;
    rdfs:label "changed" ;
    rdfs:comment "The Resource that has changed." .

trs:order
    a rdf:Property ;
    rdfs:isDefinedBy trs: ;
    rdfs:label "order" ;
    rdfs:comment "The sequence in time of the Change Event." .

trs:trackedResourceSet
    a rdf:Property ;
    rdfs:isDefinedBy trs: ;
    rdfs:label "trackedResourceSet" ;
    rdfs:range trs:TrackedResourceSet ;
    rdfs:comment "A Tracked Resource Set." .


# TRS Patch properties for change events

trspatch:createdFrom
    a rdf:Property ;
    rdfs:isDefinedBy trs: ;
    rdfs:label "createdFrom" ;
    rdfs:comment "URI of antecedent resource for trs:Creation Change Events." .

trspatch:rdfPatch
    a rdf:Property ;
    rdfs:isDefinedBy trs: ;
    rdfs:label "rdfPatch" ;
    rdfs:comment "Patch directives describing a modification to the resource's RDF representation." .

trspatch:beforeETag
    a rdf:Property ;
    rdfs:isDefinedBy trs: ;
    rdfs:label "beforeETag" ;
    rdfs:comment "HTTP entity tag of resource immediately before this change." .

trspatch:afterETag
    a rdf:Property ;
    rdfs:isDefinedBy trs: ;
    rdfs:label "afterETag" ;
    rdfs:comment "HTTP entity tag of resource immediately after this change." .




