@prefix : <https://w3id.org/citydata/part1/v1/> .
@prefix cc: <http://creativecommons.org/ns#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix xml: <http://www.w3.org/XML/1998/namespace> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@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 i72: <https://w3id.org/citydata/21972/v1/> .
@prefix vann: <http://purl.org/vocab/vann/> .
@prefix dcterms: <http://purl.org/dc/terms/> .
@base <https://w3id.org/citydata/part1/v1/> .

<https://w3id.org/citydata/part1/v1/ResourcePattern> rdf:type owl:Ontology ;
                                                      owl:imports :ActivityPattern ,
                                                                  :CityUnitsPattern ;
                                                      cc:license "http://creativecommons.org/licenses/by/4.0/" ;
                                                      dcterms:alternative "CDM Resource Pattern" ;
                                                      dcterms:creator "Kenneth Vaughn" ,
                                                                      "Mark Fox" ,
                                                                      "Megan Katsumi" ;
                                                      dcterms:modified "2026-02-12"^^xsd:date ;
                                                      dcterms:title "Information technology - City data model - Part 1: Foundation level concepts - Resource Pattern" ;
                                                      vann:preferredNamespacePrefix "cdm1" ;
                                                      vann:preferredNamespaceUri "https://w3id.org/citydata/part1/v1/" ;
                                                      rdfs:comment "The prior version of this ontology used a different ontology IRI. This update remains semantically consistent with the version adopted as ISO 5087-1:2023." ;
                                                      owl:priorVersion <https://standards.iso.org/iso-iec/5087/-1/ed-1/en/ontology/Resource/> ;
                                                      owl:versionIRI <https://w3id.org/citydata/part1/v1/ResourcePattern/r3.0/> ;
                                                      owl:versionInfo "1.3.0" ;
                                                      skos:definition "This ontology specifies the foundation-level concepts related to the resource pattern of the city data model." .

#################################################################
#    Object Properties
#################################################################

###  https://w3id.org/citydata/part1/v1/ResourceObjectProperty
:ResourceObjectProperty rdf:type owl:ObjectProperty ;
                        rdfs:subPropertyOf :FoundationalCdmObjectProperty ;
                        skos:definition "Added for organizational purposes, to identify all resource object properties defined in the City Data Model." .


###  https://w3id.org/citydata/part1/v1/capacityInUse
:capacityInUse rdf:type owl:ObjectProperty ;
               rdfs:subPropertyOf :ResourceObjectProperty ;
               rdf:type owl:FunctionalProperty ;
               rdfs:domain :Resource ;
               rdfs:range i72:Quantity ;
               skos:definition "Identifies the portion of capacity in use, by some Activity(s)." .


###  https://w3id.org/citydata/part1/v1/consumedBy
:consumedBy rdf:type owl:ObjectProperty ;
            rdfs:subPropertyOf :preconditionOf .


###  https://w3id.org/citydata/part1/v1/forResource
:forResource rdf:type owl:ObjectProperty ;
             rdfs:subPropertyOf :ResourceObjectProperty ;
             rdfs:domain :PlannedAllocation ;
             rdfs:range :Resource ;
             skos:definition "Specifies the Resource that is allocated." .


###  https://w3id.org/citydata/part1/v1/forState
:forState rdf:type owl:ObjectProperty ;
          rdfs:subPropertyOf :ResourceObjectProperty ;
          owl:inverseOf :hasAllocation ;
          rdfs:domain :PlannedAllocation ;
          rdfs:range :State ;
          skos:definition "Specifies the State to which the Resource is allocated." .


###  https://w3id.org/citydata/part1/v1/hasAllocation
:hasAllocation rdf:type owl:ObjectProperty ;
               rdfs:subPropertyOf :ResourceObjectProperty ;
               skos:definition "Specifies a Planned Allocation for the Resource. This indicates a State and time Interval to which the Resource has been allocated." .


###  https://w3id.org/citydata/part1/v1/hasAsset
:hasAsset rdf:type owl:ObjectProperty ;
          rdfs:subPropertyOf :ResourceObjectProperty .


###  https://w3id.org/citydata/part1/v1/hasAvailableCapacity
:hasAvailableCapacity rdf:type owl:ObjectProperty ;
                      rdfs:subPropertyOf :ResourceObjectProperty ;
                      rdfs:domain :Resource ;
                      rdfs:range i72:Quantity ;
                      skos:definition "identifies the Quantity that specifies how much of the Resource is available for use." .


###  https://w3id.org/citydata/part1/v1/hasCapacity
:hasCapacity rdf:type owl:ObjectProperty ;
             rdfs:subPropertyOf :ResourceObjectProperty ;
             rdf:type owl:FunctionalProperty ;
             rdfs:domain :Resource ;
             rdfs:range i72:Quantity ;
             skos:definition "Identifies the Quantity that specifies how much of the Resource exists, e.g. its volume, if it is liquid; how much it can hold, if it is an container." .


###  https://w3id.org/citydata/part1/v1/hasOwner
:hasOwner rdf:type owl:ObjectProperty ;
          rdfs:subPropertyOf :ResourceObjectProperty ;
          owl:inverseOf :ownedBy ;
          rdfs:domain :Resource ;
          skos:definition "A Resource may have some owner. The owner of a resource is subject to change over time." .


###  https://w3id.org/citydata/part1/v1/hasQuantity
:hasQuantity rdf:type owl:ObjectProperty ;
             rdfs:subPropertyOf :ResourceObjectProperty ;
             rdfs:domain :PlannedAllocation ;
             rdfs:range i72:Quantity ;
             skos:definition "Specifies the Quantity of the Resource that participates in the State, if applicable." .


###  https://w3id.org/citydata/part1/v1/hasResource
:hasResource rdf:type owl:ObjectProperty ;
             rdfs:subPropertyOf :ResourceObjectProperty ;
             owl:inverseOf :resourceOf ;
             rdfs:domain :TerminalResourceState ;
             rdfs:range :Resource ;
             skos:definition "Specifies a Resource that participates in the State. This identifies the condition of the object that plays a resource role (i.e. is used, consumed, etc.) when the state’s status is active." .


###  https://w3id.org/citydata/part1/v1/ownedBy
:ownedBy rdf:type owl:ObjectProperty ;
         rdfs:subPropertyOf :ResourceObjectProperty .


###  https://w3id.org/citydata/part1/v1/participatesIn
:participatesIn rdf:type owl:ObjectProperty ;
                rdfs:subPropertyOf :ResourceObjectProperty ;
                rdfs:domain :Resource ;
                rdfs:range :Activity ;
                skos:definition "Identifies the Activity that the Resource is being used, consumed, produced, or released by." .


###  https://w3id.org/citydata/part1/v1/resourceOf
:resourceOf rdf:type owl:ObjectProperty ;
            rdfs:subPropertyOf :ResourceObjectProperty ;
            skos:definition "identifies what State the agent may be a resource of. This is specified using the Resource pattern, where the Agent would be considered to be a resource from the perspective of an Activity that uses it in some way. For example, a construction activity may use some persons(s) and those persons would be considered a Resource for that Activity." .


###  https://w3id.org/citydata/part1/v1/usedBy
:usedBy rdf:type owl:ObjectProperty ;
        rdfs:subPropertyOf :ResourceObjectProperty ,
                           :preconditionOf .


#################################################################
#    Classes
#################################################################

###  https://w3id.org/citydata/part1/v1/ConsumeState
:ConsumeState rdf:type owl:Class ;
              rdfs:subClassOf :TerminalResourceState ;
              skos:definition "Identifies a Resource and Quantity it consumes. The Quantity is removed from the Resource." .


###  https://w3id.org/citydata/part1/v1/DivisibleResource
:DivisibleResource rdf:type owl:Class ;
                   rdfs:subClassOf :Resource ;
                   skos:definition "A Resource that can be divided for use or consumption between multiple Activities." .


###  https://w3id.org/citydata/part1/v1/NonDivisibleResource
:NonDivisibleResource rdf:type owl:Class ;
                      rdfs:subClassOf :Resource ;
                      skos:definition "A Resource that can only be used for a single Activity at once - even if it isn't fully utilized." .


###  https://w3id.org/citydata/part1/v1/PlannedAllocation
:PlannedAllocation rdf:type owl:Class ;
                   rdfs:subClassOf :Manifestation ,
                                   :ResourceThing ,
                                   [ rdf:type owl:Restriction ;
                                     owl:onProperty :forResource ;
                                     owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ;
                                     owl:onClass :Resource
                                   ] ,
                                   [ rdf:type owl:Restriction ;
                                     owl:onProperty :forState ;
                                     owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ;
                                     owl:onClass :State
                                   ] ,
                                   [ rdf:type owl:Restriction ;
                                     owl:onProperty :hasQuantity ;
                                     owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ;
                                     owl:onClass i72:Quantity
                                   ] ,
                                   [ rdf:type owl:Restriction ;
                                     owl:onProperty time:hasTime ;
                                     owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ;
                                     owl:onClass time:TemporalEntity
                                   ] ;
                   skos:definition """Specifies the planned allocation of a resource to an activity via a state.
        Note that Allocation is a Manifestation as the allocation may change over time."""@en .


###  https://w3id.org/citydata/part1/v1/ProduceState
:ProduceState rdf:type owl:Class ;
              rdfs:subClassOf :TerminalResourceState ;
              skos:definition "Identifies a Resource and Quantity it produces." .


###  https://w3id.org/citydata/part1/v1/ReleaseState
:ReleaseState rdf:type owl:Class ;
              rdfs:subClassOf :TerminalResourceState ;
              skos:definition "Identifies a Resource and Quantity it releases (after using)." .


###  https://w3id.org/citydata/part1/v1/Resource
:Resource rdf:type owl:Class ;
          rdfs:subClassOf :ResourceThing ,
                          [ rdf:type owl:Restriction ;
                            owl:onProperty :hasAllocation ;
                            owl:allValuesFrom :PlannedAllocation
                          ] ,
                          [ rdf:type owl:Restriction ;
                            owl:onProperty :hasLocation ;
                            owl:allValuesFrom :Location
                          ] ,
                          [ rdf:type owl:Restriction ;
                            owl:onProperty :participatesIn ;
                            owl:minQualifiedCardinality "1"^^xsd:nonNegativeInteger ;
                            owl:onClass :Activity
                          ] ,
                          [ rdf:type owl:Restriction ;
                            owl:onProperty :capacityInUse ;
                            owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ;
                            owl:onClass i72:Quantity
                          ] ,
                          [ rdf:type owl:Restriction ;
                            owl:onProperty :hasAvailableCapacity ;
                            owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ;
                            owl:onClass i72:Quantity
                          ] ,
                          [ rdf:type owl:Restriction ;
                            owl:onProperty :hasCapacity ;
                            owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ;
                            owl:onClass i72:Quantity
                          ] ;
          skos:definition """A Resource is a generic representation of some Thing that can be "used" in an Activity. 
        A Resource may have some Location, amount or availability, according to the definition of the Manifestation or TimeVaryingEntity. 
        A Resource must be classified as some Resource Type.
        A Resource may participate in some Activity Occurrence. In other words, it links to the Activity that the Resource is being used/consumed/produced/released at the time of the manifestation.
        A specific Resource may be used in or consumed in some activity occurrence.""" .


###  https://w3id.org/citydata/part1/v1/ResourceThing
:ResourceThing rdf:type owl:Class ;
               rdfs:subClassOf :FoundationalCdmThing ;
               skos:definition "Added for organizational purposes, to identify all classes defined in the Resource ontology." .


###  https://w3id.org/citydata/part1/v1/TerminalResourceState
:TerminalResourceState rdf:type owl:Class ;
                       rdfs:subClassOf :ResourceThing ,
                                       :TerminalState ,
                                       [ rdf:type owl:Restriction ;
                                         owl:onProperty :hasAllocation ;
                                         owl:allValuesFrom :PlannedAllocation
                                       ] ,
                                       [ rdf:type owl:Restriction ;
                                         owl:onProperty :hasQuantity ;
                                         owl:allValuesFrom i72:Quantity
                                       ] ,
                                       [ rdf:type owl:Restriction ;
                                         owl:onProperty :hasResource ;
                                         owl:allValuesFrom :Resource
                                       ] ;
                       skos:definition "" .


###  https://w3id.org/citydata/part1/v1/UseState
:UseState rdf:type owl:Class ;
          rdfs:subClassOf :TerminalResourceState ;
          skos:definition "Identifies a Resource and Quantity it uses (without consuming)." .
