@prefix : <https://w3id.org/citydata/part2/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/> .
@prefix cdm1: <https://w3id.org/citydata/part1/v1/> .
@base <https://w3id.org/citydata/part2/v1/> .

<https://w3id.org/citydata/part2/v1/BuildingPattern> rdf:type owl:Ontology ;
                                                      owl:imports :InfrastructurePattern ;
                                                      cc:license "http://creativecommons.org/licenses/by/4.0/" ;
                                                      dcterms:creator "Kenneth Vaughn" ,
                                                                      "Mark Fox" ,
                                                                      "Megan Katsumi" ;
                                                      dcterms:modified "2026-02-12"^^xsd:date ;
                                                      dcterms:title "Information technology - City data model - Part 2: City level concepts - Building Pattern" ;
                                                      dcterms:bibliographicCitation "ISO/IEC 5087-2:2024" ;
                                                      vann:preferredNamespacePrefix "cdm2" ;
                                                      vann:preferredNamespaceUri "https://w3id.org/citydata/part2/v1/" ;
                                                      rdfs:seeAlso <https://www.iso.org/standard/80742.html> ;
                                                      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-2:2024." ;
                                                      owl:priorVersion <https://standards.iso.org/iso-iec/5087/-2/ed-1/en/ontology/Building/> ;
                                                      owl:versionIRI <https://w3id.org/citydata/part2/v1/BuildingPattern/r3.0/> ;
                                                      owl:versionInfo "1.3.0" ;
                                                      skos:definition "This ontology specifies the city-level concepts for the building pattern of the city data model. A Building is a structure with some location in the urban system. The location of the Building in space may change due to construction, but the Parcel/Lot of land it is located on cannot. There may be many different types (subclasses) of buildings, such as House, Apartment Building, Office Building, and so on." .

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

###  https://w3id.org/citydata/part2/v1/BuildingObjectProperty
:BuildingObjectProperty rdf:type owl:ObjectProperty ;
                        rdfs:subPropertyOf :CityObjectProperty ;
                        skos:definition "Added for organizational purposes, to identify object properties defined for the Building Pattern in the City-level CDM ontology." .


###  https://w3id.org/citydata/part2/v1/buildingFacility
:buildingFacility rdf:type owl:ObjectProperty ;
                  rdfs:subPropertyOf cdm1:hasComponent ,
                                     :BuildingObjectProperty ;
                  rdfs:range :Facility ;
                  skos:definition "Identifies a Facility that is contained in the Building." ;
                  skos:example "kitchen, bath, or air conditioning" .


###  https://w3id.org/citydata/part2/v1/floorAreaRatio
:floorAreaRatio rdf:type owl:ObjectProperty ;
                rdfs:subPropertyOf :BuildingObjectProperty ;
                rdfs:domain :Building ;
                rdfs:range :AreaRatio ;
                skos:definition "Identifies the building's floor area ratio. This is a ratio of the gross floor area (the value of hasBuildingFloorArea) to its “buildable area” (i.e. lot size)." .


###  https://w3id.org/citydata/part2/v1/floorToCeilingHeight
:floorToCeilingHeight rdf:type owl:ObjectProperty ;
                      rdfs:subPropertyOf :BuildingObjectProperty ;
                      rdfs:domain :BuildingUnit ;
                      rdfs:range cdm1:Length ;
                      skos:definition "Identifies the floor to ceiling height in the Building Unit." .


###  https://w3id.org/citydata/part2/v1/hasBuildingFloorArea
:hasBuildingFloorArea rdf:type owl:ObjectProperty ;
                      rdfs:subPropertyOf :BuildingObjectProperty ;
                      rdfs:domain :Building ;
                      rdfs:range cdm1:Area ;
                      skos:definition "identifies the floor area occupied by the Building. The floor area accounts for the area of each floor of the building. However, floor area excludes unoccupied areas such as basements." .


###  https://w3id.org/citydata/part2/v1/hasBuildingFootprintArea
:hasBuildingFootprintArea rdf:type owl:ObjectProperty ;
                          rdfs:subPropertyOf :BuildingObjectProperty ;
                          rdfs:domain :Building ;
                          rdfs:range cdm1:Area ;
                          skos:definition "Identifies the footprint occupied by the Building." .


###  https://w3id.org/citydata/part2/v1/hasBuildingHeight
:hasBuildingHeight rdf:type owl:ObjectProperty ;
                   rdfs:subPropertyOf :BuildingObjectProperty ;
                   rdfs:domain :Building ;
                   rdfs:range cdm1:Length ;
                   skos:definition "Identifies the Building’s height." .


###  https://w3id.org/citydata/part2/v1/hasBuildingUnit
:hasBuildingUnit rdf:type owl:ObjectProperty ;
                 rdfs:subPropertyOf cdm1:hasComponent ,
                                    :BuildingObjectProperty ;
                 rdfs:domain :Building ;
                 rdfs:range :BuildingUnit ;
                 skos:definition "Identifies the Building Unit(s), if any, that are contained by the Building." .


###  https://w3id.org/citydata/part2/v1/hasConstructionStatus
:hasConstructionStatus rdf:type owl:ObjectProperty ;
                       rdfs:subPropertyOf :BuildingObjectProperty ;
                       rdfs:domain :Building ;
                       rdfs:range :ConstructionStatus ;
                       skos:definition "identifies the Construction Status of a Building." .


###  https://w3id.org/citydata/part2/v1/hasRent
:hasRent rdf:type owl:ObjectProperty ;
         rdfs:subPropertyOf :BuildingObjectProperty ;
         rdfs:domain :BuildingUnit ;
         rdfs:range cdm1:MonetaryValue ;
         skos:definition "Identifies the rental fee for the Building Unit." .


###  https://w3id.org/citydata/part2/v1/hasUnitSize
:hasUnitSize rdf:type owl:ObjectProperty ;
             rdfs:subPropertyOf :BuildingObjectProperty ;
             rdfs:domain :BuildingUnit ;
             rdfs:range cdm1:Area ;
             skos:definition "Identifies the size of the Building Unit as an Area." .


###  https://w3id.org/citydata/part2/v1/unitInBuilding
:unitInBuilding rdf:type owl:ObjectProperty ;
                rdfs:subPropertyOf :BuildingObjectProperty ;
                owl:inverseOf :hasBuildingUnit ;
                skos:definition "Identifies the Building that the Building Unit belongs to (is contained in)." .


###  https://w3id.org/citydata/part2/v1/use
:use rdf:type owl:ObjectProperty ;
     rdfs:subPropertyOf :BuildingObjectProperty ;
     rdfs:domain :Building ;
     rdfs:range :BuildingUse ;
     skos:definition "Identifies the use of the Building, typically associated with some classification system." .


###  https://w3id.org/citydata/part2/v1/windowToWallRatio
:windowToWallRatio rdf:type owl:ObjectProperty ;
                   rdfs:subPropertyOf :BuildingObjectProperty ;
                   rdfs:domain :Building ;
                   rdfs:range i72:RatioIndicator ;
                   skos:definition "Identifies the percentage area of a building’s exterior envelope that is made up of glazing (i.e., glass installed in fixed openings such as windows and doors)." .


###  https://w3id.org/citydata/part2/v1/yearOfConstruction
:yearOfConstruction rdf:type owl:ObjectProperty ;
                    rdfs:subPropertyOf :BuildingObjectProperty ;
                    rdfs:domain :Building ;
                    rdfs:range :Year ;
                    skos:definition "Identifies the year that construction on the Building was completed." .


#################################################################
#    Data properties
#################################################################

###  https://w3id.org/citydata/part2/v1/BuildingDataProperty
:BuildingDataProperty rdf:type owl:DatatypeProperty ;
                      rdfs:subPropertyOf :CityDataProperty ;
                      skos:definition "Added for organizational purposes, to identify data properties defined in the Building Pattern." .


###  https://w3id.org/citydata/part2/v1/builtAccordingToConstructionCode
:builtAccordingToConstructionCode rdf:type owl:DatatypeProperty ;
                                  rdfs:subPropertyOf :BuildingDataProperty ;
                                  rdfs:domain :Building ;
                                  rdfs:range xsd:string ;
                                  skos:definition "Identifies the name of any construction code(s) applicable during the construction of the Building. " ;
                                  skos:note "Construction codes refer to a set of rules or instructions that specify the standards for constructed objects such as buildings and non-building structures. Buildings must conform to the code throughout the construction of the building." .


###  https://w3id.org/citydata/part2/v1/numAboveGroundFloors
:numAboveGroundFloors rdf:type owl:DatatypeProperty ;
                      rdfs:subPropertyOf :BuildingDataProperty ;
                      rdfs:domain :Building ;
                      rdfs:range xsd:nonNegativeInteger ;
                      skos:definition "Specifies the number of above-ground floors in a building, including the ground floor." .


###  https://w3id.org/citydata/part2/v1/numBuildingUnits
:numBuildingUnits rdf:type owl:DatatypeProperty ;
                  rdfs:subPropertyOf :BuildingDataProperty ;
                  rdfs:domain :Building ;
                  rdfs:range xsd:nonNegativeInteger ;
                  skos:definition "Specifies the total number of building units in a building." .


###  https://w3id.org/citydata/part2/v1/numFloors
:numFloors rdf:type owl:DatatypeProperty ;
           rdfs:subPropertyOf :BuildingDataProperty ;
           rdfs:domain :Building ;
           rdfs:range xsd:nonNegativeInteger ;
           skos:definition "Identifies the total number of floors in a building (including those below ground)." .


###  https://w3id.org/citydata/part2/v1/numberOfBedrooms
:numberOfBedrooms rdf:type owl:DatatypeProperty ;
                  rdfs:subPropertyOf :BuildingDataProperty ;
                  rdfs:domain :BuildingUnit ;
                  rdfs:range xsd:nonNegativeInteger ;
                  skos:definition "Specifies the number of bedrooms in a building unit." .


###  https://w3id.org/citydata/part2/v1/numberOfRooms
:numberOfRooms rdf:type owl:DatatypeProperty ;
               rdfs:subPropertyOf :BuildingDataProperty ;
               rdfs:domain :BuildingUnit ;
               rdfs:range xsd:nonNegativeInteger ;
               skos:definition "Specifies the number of rooms in a building unit." .


###  https://w3id.org/citydata/part2/v1/propertyRegistrationID
:propertyRegistrationID rdf:type owl:DatatypeProperty ;
                        rdfs:subPropertyOf :BuildingDataProperty ;
                        rdfs:domain :Building ;
                        rdfs:range rdfs:Literal ;
                        skos:definition "Identifies the unique identifier of the real estate in the property register of authority where the Building is located." .


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

###  https://w3id.org/citydata/part2/v1/AreaRatio
:AreaRatio rdf:type owl:Class ;
           rdfs:subClassOf :BuildingThing ;
           owl:intersectionOf ( i72:RatioIndicator
                                [ rdf:type owl:Restriction ;
                                  owl:onProperty i72:denominator ;
                                  owl:allValuesFrom cdm1:Area
                                ]
                                [ rdf:type owl:Restriction ;
                                  owl:onProperty i72:numerator ;
                                  owl:allValuesFrom cdm1:Area
                                ]
                              ) .


###  https://w3id.org/citydata/part2/v1/Building
:Building rdf:type owl:Class ;
          rdfs:subClassOf :BuildingThing ,
                          :InfrastructureElement ,
                          [ rdf:type owl:Restriction ;
                            owl:onProperty :buildingFacility ;
                            owl:allValuesFrom :Facility
                          ] ,
                          [ rdf:type owl:Restriction ;
                            owl:onProperty :builtAccordingToConstructionCode ;
                            owl:allValuesFrom xsd:string
                          ] ,
                          [ rdf:type owl:Restriction ;
                            owl:onProperty :hasBuildingFloorArea ;
                            owl:allValuesFrom cdm1:Area
                          ] ,
                          [ rdf:type owl:Restriction ;
                            owl:onProperty :hasBuildingFootprintArea ;
                            owl:allValuesFrom cdm1:Area
                          ] ,
                          [ rdf:type owl:Restriction ;
                            owl:onProperty :hasBuildingHeight ;
                            owl:allValuesFrom cdm1:Length
                          ] ,
                          [ rdf:type owl:Restriction ;
                            owl:onProperty :hasBuildingUnit ;
                            owl:allValuesFrom :BuildingUnit
                          ] ,
                          [ rdf:type owl:Restriction ;
                            owl:onProperty :use ;
                            owl:allValuesFrom :BuildingUse
                          ] ,
                          [ rdf:type owl:Restriction ;
                            owl:onProperty :numFloors ;
                            owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ;
                            owl:onDataRange xsd:nonNegativeInteger
                          ] ,
                          [ rdf:type owl:Restriction ;
                            owl:onProperty :floorAreaRatio ;
                            owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ;
                            owl:onClass :AreaRatio
                          ] ,
                          [ rdf:type owl:Restriction ;
                            owl:onProperty :hasConstructionStatus ;
                            owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ;
                            owl:onClass :ConstructionStatus
                          ] ,
                          [ rdf:type owl:Restriction ;
                            owl:onProperty :numAboveGroundFloors ;
                            owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ;
                            owl:onDataRange xsd:nonNegativeInteger
                          ] ,
                          [ rdf:type owl:Restriction ;
                            owl:onProperty :numBuildingUnits ;
                            owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ;
                            owl:onDataRange xsd:nonNegativeInteger
                          ] ,
                          [ rdf:type owl:Restriction ;
                            owl:onProperty :propertyRegistrationID ;
                            owl:maxCardinality "1"^^xsd:nonNegativeInteger
                          ] ,
                          [ rdf:type owl:Restriction ;
                            owl:onProperty :windowToWallRatio ;
                            owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ;
                            owl:onClass :AreaRatio
                          ] ,
                          [ rdf:type owl:Restriction ;
                            owl:onProperty :yearOfConstruction ;
                            owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ;
                            owl:onClass :Year
                          ] ;
          skos:definition "A Building is a type of Infrastructure Element that is a structure with a roof and walls, such as a house, school, or factory. The location of a Building may change due to construction, but the Parcel/Lot of land it is located on cannot (i.e., moving an entire building results in a change in object instance). " ;
          skos:note "There are different types (subclasses) of buildings; House, Apartment Building, Office Building..." .


###  https://w3id.org/citydata/part2/v1/BuildingThing
:BuildingThing rdf:type owl:Class ;
               rdfs:subClassOf :CityThing ;
               skos:definition "Added for organizational purposes, to identify classes defined in the Building ontology." .


###  https://w3id.org/citydata/part2/v1/BuildingUnit
:BuildingUnit rdf:type owl:Class ;
              rdfs:subClassOf cdm1:Manifestation ,
                              :BuildingThing ,
                              :InfrastructureElement ,
                              [ rdf:type owl:Restriction ;
                                owl:onProperty :buildingFacility ;
                                owl:allValuesFrom :Facility
                              ] ,
                              [ rdf:type owl:Restriction ;
                                owl:onProperty :floorToCeilingHeight ;
                                owl:allValuesFrom cdm1:Length
                              ] ,
                              [ rdf:type owl:Restriction ;
                                owl:onProperty :hasAddress ;
                                owl:allValuesFrom :Address
                              ] ,
                              [ rdf:type owl:Restriction ;
                                owl:onProperty :hasRent ;
                                owl:allValuesFrom cdm1:MonetaryValue
                              ] ,
                              [ rdf:type owl:Restriction ;
                                owl:onProperty :hasUnitSize ;
                                owl:allValuesFrom cdm1:Area
                              ] ,
                              [ rdf:type owl:Restriction ;
                                owl:onProperty i72:hasValue ;
                                owl:allValuesFrom cdm1:MonetaryValue
                              ] ,
                              [ rdf:type owl:Restriction ;
                                owl:onProperty :numberOfBedrooms ;
                                owl:allValuesFrom xsd:nonNegativeInteger
                              ] ,
                              [ rdf:type owl:Restriction ;
                                owl:onProperty :numberOfRooms ;
                                owl:allValuesFrom xsd:nonNegativeInteger
                              ] ,
                              [ rdf:type owl:Restriction ;
                                owl:onProperty cdm1:existsAt ;
                                owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ;
                                owl:onClass time:TemporalEntity
                              ] ,
                              [ rdf:type owl:Restriction ;
                                owl:onProperty :unitInBuilding ;
                                owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ;
                                owl:onClass :Building
                              ] ;
              skos:definition "A part of a Building which may be occupied by some Persons or Organization." .


###  https://w3id.org/citydata/part2/v1/BuildingUse
:BuildingUse rdf:type owl:Class ;
             rdfs:subClassOf :BuildingThing ,
                             [ rdf:type owl:Restriction ;
                               owl:onProperty :hasCode ;
                               owl:allValuesFrom :Code
                             ] ;
             skos:definition "Building Use is a type of Code that describes the use or function of a Building" ;
             skos:example "residential, commercial, industrial" .


###  https://w3id.org/citydata/part2/v1/ConstructionStatus
:ConstructionStatus rdf:type owl:Class ;
                    rdfs:subClassOf :BuildingThing ,
                                    [ rdf:type owl:Restriction ;
                                      owl:onProperty :hasCode ;
                                      owl:allValuesFrom :Code
                                    ] ;
                    skos:definition "Construction Status is a type of Code that describes the construction status of a Building or Infrastructure Element." .


###  https://w3id.org/citydata/part2/v1/Facility
:Facility rdf:type owl:Class ;
          rdfs:subClassOf :BuildingThing ,
                          :InfrastructureElement ,
                          [ rdf:type owl:Restriction ;
                            owl:onProperty cdm1:hasLocation ;
                            owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ;
                            owl:onClass cdm1:Location
                          ] ;
          skos:definition "A facility is a physical location or structure that provides services or amenities to the public or a specific group of people." .


###  https://w3id.org/citydata/part2/v1/Year
:Year rdf:type owl:Class ;
      rdfs:subClassOf time:DateTimeDescription ,
                      :BuildingThing ;
      skos:definition "Represents a year in the Gregorian calendar." .
