Class
type: Concept
type: NodeShape
comment: This is a modeling construct. Instances of abstract classes cannot be created. All abstract classes in this standard have a more specific subclass.
subclass of: Class

Class
type: Concept
type: NodeShape
comment: This is a modeling construct. All classes defined in the 223 standard are instances of `s223:Class`.
subclass of: Concept
subclass of: Class
property:
  comment: A `Class` shall be associated with at least one label using the relation `rdfs:label`.
  message: s223: A `Class` shall be associated with at least one label using the relation `rdfs:label`.
  min count: 1
  path: label
  severity: Warning

Concept
type: Class
type: NodeShape
comment: All classes and relations defined in the 223 standard are subclasses of `s223:Concept`.
subclass of: Resource
property:
  comment: Incompatible Medium. Case1: An entity with a pure medium and an associated `Property` with a different pure medium.
  name: Test for compatible declared Medium
  path: has Medium
  sparql: SPARQLConstraint
    comment: Incompatible Medium. Case 1: Two pure mediums.
    message: s223: {$this} `hasMedium` of {?m1}, but is associated with `Property` {?prop} that has `ofMedium` of {?m2}.
    prefixes: all
    select: SELECT $this ?m1 ?prop ?m2 WHERE { $this s223:hasMedium ?m1 . $this ?p ?prop . ?prop a/rdfs:subClassOf* s223:Property . ?prop s223:ofMedium ?m2 . FILTER (?m1 != ?m2 ) . FILTER NOT EXISTS {?m1 s223:composedOf ?c1} . FILTER NOT EXISTS {?m2 s223:composedOf ?c2} FILTER (NOT EXISTS {?m2 rdfs:subClassOf* ?m1}) . FILTER (NOT EXISTS {?m1 rdfs:subClassOf* ?m2}) . }
property:
  comment: Incompatible Medium. Case3: An entity with constituents and an associated `Property` with a pure medium.
  name: Test for compatible declared Medium
  path: has Medium
  sparql: SPARQLConstraint
    comment: Incompatible Medium. Case 3: A medium with constituents and an associated `Property` with a pure medium.
    message: s223: {$this} `hasMedium` of {?m2}, but is associated with `Property` {?prop} that has `ofMedium` of {?m1}.
    prefixes: all
    select: SELECT $this ?m1 ?prop ?m2 WHERE { $this s223:hasMedium ?m2 . $this ?p ?prop . ?prop a/rdfs:subClassOf* s223:Property . ?prop s223:ofMedium ?m1 . ?m2 s223:composedOf/s223:ofConstituent ?s2 . FILTER NOT EXISTS {?m1 s223:composedOf ?c1} . FILTER NOT EXISTS { ?m2 s223:composedOf/s223:ofConstituent ?s12 . {?s12 rdfs:subClassOf* ?m1} UNION {?m1 rdfs:subClassOf* ?s12} . } }
property:
  comment: Incompatible Medium. Case4: An entity with constituents and an associated `Property` with constituents.
  name: Test for compatible declared Medium
  path: has Medium
  sparql: SPARQLConstraint
    comment: Incompatible Medium. Case 4: A medium with constituents and an associated `Property` with constituents.
    message: s223: {$this} `hasMedium` of {?m1}, but is associated with `Property` {?prop} that has `ofMedium` of {?m2}.
    prefixes: all
    select: SELECT $this ?m1 ?prop ?m2 WHERE { $this s223:hasMedium ?m1 . $this ?p ?prop . ?prop a/rdfs:subClassOf* s223:Property . ?prop s223:ofMedium ?m2 . ?m1 s223:composedOf/s223:ofConstituent ?s1 . ?m2 s223:composedOf/s223:ofConstituent ?s2 . FILTER NOT EXISTS { ?m1 s223:composedOf/s223:ofConstituent ?s11 . ?m2 s223:composedOf/s223:ofConstituent ?s12 . FILTER (?s11 = ?s12) . } FILTER NOT EXISTS { ?m1 s223:composedOf/s223:ofConstituent ?s21 . ?m2 s223:composedOf/s223:ofConstituent ?s22 . {?s22 rdfs:subClassOf* ?s21} UNION {?s21 rdfs:subClassOf* ?s22} . } }
property:
  comment: If the relation `hasProperty` is present, it shall associate the concept with a `Property`.
  class: Property
  message: s223: If the relation `hasProperty` is present, it shall associate the concept with a `Property`.
  path: has Property
property:
  comment: Incompatible Medium. Case2: An entity with a pure medium and an associated `Property` with constituents.
  name: Test for compatible declared Medium
  path: has Medium
  sparql: SPARQLConstraint
    comment: Incompatible Medium. Case 2: A pure medium and an associated `Property` with constituents.
    message: s223: {$this} `hasMedium` of {?m1}, but is associated with `Property` {?prop} that has `ofMedium` of {?m2}.
    prefixes: all
    select: SELECT $this ?m1 ?prop ?m2 WHERE { $this s223:hasMedium ?m1 . $this ?p ?prop . ?prop a/rdfs:subClassOf* s223:Property . ?prop s223:ofMedium ?m2 . ?m2 s223:composedOf/s223:ofConstituent ?s2 . FILTER NOT EXISTS {?m1 s223:composedOf ?c1} . FILTER NOT EXISTS { ?m2 s223:composedOf/s223:ofConstituent ?s12 . {?s12 rdfs:subClassOf* ?m1} UNION {?m1 rdfs:subClassOf* ?s12} . } }

Relation
type: Class
type: Concept
type: NodeShape
comment: A `Relation` associates the subject and the object in an RDF triple, the *predicate* portion of a *(subject, predicate, object)* triple.
subclass of: Concept
subclass of: Property
property:
  comment: A `Relation` shall be associated with at least one label using the relation `rdfs:label`.
  message: s223: A `Relation` shall be associated with at least one label using the relation `rdfs:label`.
  min count: 1
  path: label
  severity: Warning

Inverse relation
type: Class
type: Concept
type: NodeShape
comment: An `RelationWithInverse` is modeling construct used to define symmetric behavior for certain relations in the standard such as `connectedTo` and `connectedFrom`.
subclass of: Relation
property:
  comment: An `RelationWithInverse` shall be associated with exactly one other `RelationWithInverse` using the relation `inverseOf`.
  class: Inverse relation
  max count: 1
  message: s223: An `RelationWithInverse` shall be associated with exactly one other `RelationWithInverse` using the relation `inverseOf`.
  min count: 1
  path: inverse of

Symmetric relation
type: Class
type: Concept
type: NodeShape
comment: A modeling construct used to define symmetric behavior for certain relations in the standard such as `cnx`, `connected`, and `pairedConnectionPoint`.
subclass of: Relation

ChilledWaterCoil
type: Class
type: NodeShape
comment: A cooling coil with a connected chilled water valve.
subclass of: Cooling coil
property:
  comment: The ChilledWaterCoil shall be connected to a ChilledWaterValve using the relation connectedTo.
  path: connected to
  qualified min count: 1
  qualified value shape:
    class: Chilled Water Valve

Chilled Water Valve
type: Class
type: NodeShape
comment: A valve that controls the flow of chilled water through a chilled water coil.
subclass of: Valve

Chilled Water Valve Or Shape 1
type: Class
type: NodeShape
comment: A ChilledWaterValve shall have at least one analog valve command property or at least two binary valve command properties using the relation hasProperty.
message: g36: A ChilledWaterValve shall have at least one analog valve command property or at least two binary valve command properties using the relation hasProperty.
or:
  property:
    comment: A ChilledWaterValve shall have at least one analog valve command property or at least two binary valve command properties using the relation hasProperty.
    min count: 1
    path: has Property
    qualified min count: 1
    qualified value shape:
      class: Quantifiable Actuatable Property
or:
  property:
    comment: A ChilledWaterValve shall have at least one analog valve command property or at least two binary valve command properties using the relation hasProperty.
    min count: 2
    path: has Property
    qualified min count: 2
    qualified value shape:
      class: Enumerated actuatable property
target class: Chilled Water Valve

Damper
type: Class
type: NodeShape
comment: A damper with an analog or two binary position command properties.
subclass of: Damper

Damper Or Shape 1
type: Class
type: NodeShape
comment: A damper shall have at least one analog damper command property or at least two binary damper command properties using the relation hasProperty.
message: g36: A damper shall have at least one analog damper command property or at least two binary damper command properties using the relation hasProperty.
or:
  property:
    comment: A damper shall have at least one analog damper command property or at least two binary damper command properties using the relation hasProperty.
    min count: 1
    path: has Property
    qualified min count: 1
    qualified value shape:
      class: Quantifiable Actuatable Property
or:
  property:
    comment: A damper shall have at least one analog damper command property or at least two binary damper command properties using the relation hasProperty.
    min count: 2
    path: has Property
    qualified min count: 2
    qualified value shape:
      class: Enumerated actuatable property
target class: Damper

Electric Heating Coil
type: Class
type: NodeShape
comment: An electrical heating element with an analog heating command.
subclass of: Electric resistance element
property:
  comment: An electric heating coil shall have at least one analog heating command property using a relation hasProperty.
  message: g36: An electric heating coil shall have at least one analog heating command property using a relation hasProperty.
  min count: 1
  path: has Property
  qualified min count: 1
  qualified value shape:
    class: Quantifiable Actuatable Property
    node:
      property:
        has value: DimensionlessRatio
        max count: 1
        min count: 1
        path: hasQuantityKind

Fan
type: Class
type: NodeShape
comment: A fan with a start/stop command.
subclass of: Fan
property:
  comment: A Fan shall have at least one Start/Stop command using the relation hasProperty.
  message: g36: A Fan shall have at least one Start/Stop command using the relation hasProperty.
  min count: 1
  path: has Property
  qualified min count: 1
  qualified value shape:
    class: Enumerated actuatable property
    node:
      property:
        class: On and Off enumerations
        max count: 1
        min count: 1
        path: has enumeration kind

FanWithVFD
type: Class
type: NodeShape
comment: A fan controlled by a VFD.
subclass of: Fan
property:
  comment: A fan with VFD shall have at least one fan speed command using the relation hasProperty.
  message: g36: A fan with VFD shall have at least one fan speed command using the relation hasProperty.
  min count: 1
  path: has Property
  qualified min count: 1
  qualified value shape:
    class: Quantifiable Actuatable Property
    node:
      property:
        has value: DimensionlessRatio
        max count: 1
        min count: 1
        path: hasQuantityKind

HotWater/ReheatCoil
type: Class
type: NodeShape
comment: A hot water coil connected to a control valve.
subclass of: Heating coil
property:
  comment: The HotWaterCoil shall be connected to a HotWaterValve using the relation connectedTo.
  message: g36: The HotWaterCoil shall be connected to a HotWaterValve using the relation connectedTo.
  min count: 1
  path: connected to
  qualified min count: 1
  qualified value shape:
    class: Hot Water Valve

Hot Water Valve
type: Class
type: NodeShape
comment: A valve that controls the flow of hot water through a hot water coil.
subclass of: Valve

Hot Water Valve Or Shape 1
type: Class
type: NodeShape
comment: A HotWaterValve shall have at least one analog valve command property or at least two binary valve command properties using the relation hasProperty.
message: g36: A HotWaterValve shall have at least one analog valve command property or at least two binary valve command properties using the relation hasProperty.
or:
  property:
    comment: A HotWaterValve shall have at least one analog valve command property or at least two binary valve command properties using the relation hasProperty.
    min count: 1
    path: has Property
    qualified min count: 1
    qualified value shape:
      class: Quantifiable Actuatable Property
or:
  property:
    comment: A HotWaterValve shall have at least one analog valve command property or at least two binary valve command properties using the relation hasProperty.
    min count: 2
    path: has Property
    qualified min count: 2
    qualified value shape:
      class: Enumerated actuatable property
target class: Hot Water Valve

Two Position Damper
type: Class
type: NodeShape
comment: A damper that can take two positions: fully open and fully closed.
subclass of: Damper
property:
  comment: A Two Position Damper shall have at least one open-and-close damper command property using the relation hasProperty.
  message: g36: A Two Position Damper shall have at least one open-and-close damper command property using the relation hasProperty.
  min count: 1
  path: has Property
  qualified min count: 1
  qualified value shape:
    class: Enumerated actuatable property
    node:
      property:
        has value: Binary position enumerations
        max count: 1
        min count: 1
        path: has aspect
      property:
        class: Binary value
        max count: 1
        min count: 1
        path: has enumeration kind

Zone
type: Class
type: NodeShape
comment: A thermal zone with the points required for Guideline 36 control sequences. It is a collection of s223:DomainSpace instances.
subclass of: Zone
property:
  comment: A Zone shall have at least one Domain-HVAC using the relation hasDomain.
  has value: HVAC domain
  message: g36: A Zone shall have at least one Domain-HVAC using the relation hasDomain.
  min count: 1
  path: has domain
property:
  comment: A Zone shall have a zone temperature setpoint adjustment property using the relation hasProperty, if applicable.
  message: g36: A Zone shall have a zone temperature setpoint adjustment property using the relation hasProperty, if applicable.
  min count: 1
  path: has Property
  qualified min count: 1
  qualified value shape:
    class: Quantifiable Observable Property
    node:
      property:
        has value: Dimensioned-Delta
        max count: 1
        min count: 1
        path: has aspect
      property:
        has value: Temperature
        max count: 1
        min count: 1
        path: hasQuantityKind
  qualified value shapes disjoint: true
  severity: Info
property:
  comment: A Zone shall have at least a zone CO2 concentration property using the relation hasProperty, if applicable control is used.
  message: g36: A Zone shall have at least a zone CO2 concentration property using the relation hasProperty, if applicable control is used.
  min count: 1
  path: has Property
  qualified min count: 1
  qualified value shape:
    class: Quantifiable Observable Property
    node:
      property:
        has value: Carbon dioxide
        max count: 1
        min count: 1
        path: of constituent
      property:
        has value: DimensionlessRatio
        max count: 1
        min count: 1
        path: hasQuantityKind
  severity: Info
property:
  comment: A Zone shall have at least one binary zone occupancy property using the relation hasProperty
  message: g36: A Zone shall have at least one binary zone occupancy property using the relation hasProperty
  min count: 1
  path: has Property
  qualified min count: 1
  qualified value shape:
    class: Enumerated observable property
    node:
      property:
        class: Occupancy
        max count: 1
        min count: 1
        path: has enumeration kind
  severity: Info
property:
  comment: A Zone shall have at least one window switch on-off property using the relation hasProperty.
  message: g36: A Zone shall have at least one window switch on-off property using the relation hasProperty.
  min count: 1
  path: has Property
  qualified min count: 1
  qualified value shape:
    class: Enumerated observable property
    node:
      property:
        comment: Property shall be measured at a window.
        class: Window
      property:
        class: On and Off enumerations
        max count: 1
        min count: 1
        path: has enumeration kind
  severity: Info

Zone Group
type: Class
type: NodeShape
comment: A ZoneGroup is a grouping of zones that may be scheduled together. Zone groupings must be assigned based on rules in section 3.1.3 of Guideline 36.
subclass of: Zone group
property:
  comment: A ZoneGroup shall have the Domain HVAC using the relation hasDomain.
  has value: HVAC domain
  message: g36: A ZoneGroup shall have the Domain HVAC using the relation hasDomain.
  min count: 1
  path: has domain
property:
  comment: A ZoneGroup shall contain at least one Zone using the relation contains.
  class: Zone
  message: g36: A ZoneGroup shall contain at least one Zone using the relation contains.
  min count: 1
  path: contains

AbstractClassShape
type: NodeShape
sparql: SPARQLConstraint
  message: s223: {$this} cannot be declared an instance of only {?c}, which is an abstract class.
  prefixes: all
  select: SELECT $this ?c WHERE { $this a ?c . ?c a s223:AbstractClass . FILTER NOT EXISTS { $this a ?nonAbs . ?nonAbs rdfs:subClassOf+ ?c . FILTER NOT EXISTS { ?nonAbs a s223:AbstractClass } } }
target class: Class
target subjects of: type

ActuatablePropertyShape
type: NodeShape
property:
  comment: An `ActuatableProperty` normally is referred to by `Equipment` using the relation `actuatedByProperty`.
  class: Equipment
  message: s223: An `ActuatableProperty` normally is referred to by `Equipment` using the relation `actuatedByProperty`.
  min count: 1
  path:
    inverse path: commanded by Property
  severity: Warning
target class: Actuatable Property

Actuator
type: Class
type: NodeShape
comment: A piece of `Equipment` that receives control signals and electrically, pneumatically, or hydraulically makes changes in the physical world, such as the position of a valve or damper.
subclass of: Equipment
property:
  comment: If the relation `actuates` is present it shall associate the `Actuator` with a piece of `Equipment`.
  class: Equipment
  message: s223: If the relation `actuates` is present it shall associate the `Actuator` with a piece of `Equipment`.
  path: actuates
property:
  comment: An `Actuator` shall be associated with at least one `ActuatableProperty` using the relation `actuatedByProperty`.
  class: Actuatable Property
  message: s223: An `Actuator` shall be associated with at least one `ActuatableProperty` using the relation `actuatedByProperty`.
  min count: 1
  path: commanded by Property

Air handling unit
type: Class
type: NodeShape
comment: A piece of `Equipment` consisting of a fan or fans and other equipment necessary to perform one or more of the following functions: circulating, filtration, heating, cooling, heat recovery, humidifying, dehumidifying, and mixing of air.
subclass of: Equipment
property:
  comment: An `AirHandlingUnit` shall have at least one inlet using the medium `Fluid-Air`.
  message: s223: An `AirHandlingUnit` shall have at least one inlet using the medium `Fluid-Air`.
  min count: 1
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Inlet Connection Point
    node:
      property:
        class: Air
        path: has Medium
property:
  comment: An `AirHandlingUnit` shall have at least one outlet using the medium `Fluid-Air`.
  message: s223: An `AirHandlingUnit` shall have at least one outlet using the medium `Fluid-Air`.
  min count: 1
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Outlet Connection Point
    node:
      property:
        class: Air
        path: has Medium

Air to air heat pump
type: Class
type: NodeShape
comment: A `HeatPump` that transfers thermal energy between two bodies of air.
subclass of: Heat pump
property:
  comment: An `AirToAirHeatPump` shall have at least two inlets using the medium `Fluid-Air`.
  message: s223: An `AirToAirHeatPump` shall have at least two inlets using the medium `Fluid-Air`.
  min count: 2
  path: has connection point
  qualified min count: 2
  qualified value shape:
    class: Inlet Connection Point
    node:
      property:
        class: Air
        path: has Medium
property:
  comment: An `AirToAirHeatPump` shall have at least two outlets using the medium `Fluid-Air`.
  message: s223: An `AirToAirHeatPump` shall have at least two outlets using the medium `Fluid-Air`.
  min count: 2
  path: has connection point
  qualified min count: 2
  qualified value shape:
    class: Outlet Connection Point
    node:
      property:
        class: Air
        path: has Medium

BACnetExternalReferenceShape
type: NodeShape
property: PropertyShape
  comment: If the relation `device-identifier` is present it associates the external reference with a BACnet device having the specific device identifier.
  datatype: string
  max count: 1
  min count: 0
  path: Device Identifier
  pattern: ^[A-Za-z0-9-]+,[1-9][0-9]*$
property: PropertyShape
  comment: If the relation `property-array-index` is present it provides the index for reading items from a property that is an array.
  datatype: nonNegativeInteger
  max count: 1
  min count: 0
  path: Property Array Index
property: PropertyShape
  comment: If the relation `property-identifier` is present it is either a decimal number or exactly equal to the ASHRAE 135-2020 Clause 21 identifier text of BACnetPropertyIdentifier. If it is omitted, it defaults to "present-value" except for BACnet File objects, where absence of `property-identifier` refers to the entire content of the file accessed with Stream Access.
  datatype: string
  max count: 1
  min count: 0
  path: Property Identifier
property: PropertyShape
  comment: If the relation `object-name` is present it associates the external reference with the BACnet object having the specific object name.
  datatype: string
  max count: 1
  min count: 0
  path: Object Name
property: PropertyShape
  comment: If the relation `object-identifier` is present it associates the external reference with the BACnet object having the specific object identifier.
  datatype: string
  max count: 1
  min count: 0
  path: object-identifier
  pattern: ^[A-Za-z0-9-]+,[1-9][0-9]*$
property: PropertyShape
  comment: If the relation `priority-for-writing` is present it provides the priority for writing values to the object.
  datatype: nonNegativeInteger
  max count: 1
  min count: 0
  path: Priority for Writing
property: PropertyShape
  comment: If the relation `device-name` is present it associates the external reference with a BACnet device having the specific device name.
  datatype: string
  max count: 1
  min count: 0
  path: Device Name
target class: BACnetExternalReference

Bathtub
type: Class
type: NodeShape
comment: A piece of `Equipment` for bathing that receives as an input hot or cold water dispensed from one or two `Faucet`s, and is designed to hold a specific volume of water and release the held water through a `Drain`.
subclass of: Equipment
property:
  comment: A `Bathtub` shall have at least one outlet using the medium `Fluid-Water`.
  message: s223: A `Bathtub` shall have at least one outlet using the medium `Fluid-Water`.
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Outlet Connection Point
    node:
      property:
        class: Water
        path: has Medium
property:
  comment: A `Bathtub` shall have at least one inlet using the medium `Fluid-Water`.
  message: s223: A `Bathtub` shall have at least one inlet using the medium `Fluid-Water`.
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Inlet Connection Point
    node:
      property:
        class: Water
        path: has Medium

Battery CP Shape
type: NodeShape
comment: A `Battery` shall have at least one outlet or bidirectional `ConnectionPoint` using the medium Electricity.
message: s223: A `Battery` shall have at least one outlet or bidirectional `ConnectionPoint` using the medium Electricity.
or:
  property:
    comment: A `Battery` shall have at least one outlet or bidirectional `ConnectionPoint` using the medium Electricity.
    min count: 1
    path: has connection point
    qualified min count: 1
    qualified value shape:
      class: Outlet Connection Point
or:
  property:
    comment: A `Battery` shall have at least one outlet or bidirectional `ConnectionPoint` using the medium Electricity.
    min count: 1
    path: has connection point
    qualified min count: 1
    qualified value shape:
      class: Bidirectional Connection Point
severity: Warning
target class: Battery

Boiler
type: Class
type: NodeShape
comment: A piece of `Equipment` that uses fuel or electricity to heat water or other fluids and supply steam or hot water for heating, humidification, or other applications.
subclass of: Equipment
property:
  comment: A `Boiler` shall have at least one inlet using the medium `Fluid-Water`.
  message: s223: A `Boiler` shall have at least one inlet using the medium `Fluid-Water`.
  min count: 1
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Inlet Connection Point
    node:
      property:
        class: Water
        path: has Medium
property:
  comment: A `Boiler` shall have at least one outlet using the medium `Fluid-Water`.
  message: s223: A `Boiler` shall have at least one outlet using the medium `Fluid-Water`.
  min count: 1
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Outlet Connection Point
    node:
      property:
        class: Water
        path: has Medium

ChilledBeamShape
type: NodeShape
rule: TripleRule
  comment: A `ChilledBeam` must always have the role `Role-Cooling`
  object: Cooling role
  predicate: hasRole
  subject: this
target class: Chilled beam

Chiller
type: Class
type: NodeShape
comment: A piece of `Equipment` that removes heat from a liquid coolant via a vapor-compression, adsorption refrigeration, or absorption refrigeration cycles.
subclass of: Equipment
property:
  comment: A `Chiller` shall have at least one outlet using the medium `Fluid-Water`.
  message: s223: A `Chiller` shall have at least one outlet using the medium `Fluid-Water`.
  min count: 1
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Outlet Connection Point
    node:
      property:
        class: Water
        path: has Medium
property:
  comment: A `Chiller` shall have at least one inlet using the medium `Fluid-Water`.
  message: s223: A `Chiller` shall have at least one inlet using the medium `Fluid-Water`.
  min count: 1
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Inlet Connection Point
    node:
      property:
        class: Water
        path: has Medium

Closed World s223 Shape
type: NodeShape
comment: Ensure that all instances of an s223 class use only the relations defined for that class. Note that this only applies to s223 relations.
sparql: SPARQLConstraint
  comment: Ensure that all instances of an s223 class use only the relations defined for that class. Note that only s223 relations are checked by this validation.
  message: s223: s223 predicate {?p} is not defined for instance {$this}.
  prefixes: all
  select: SELECT $this ?p ?o WHERE { ?p a/rdfs:subClassOf* s223:Relation . $this ?p ?o . FILTER NOT EXISTS {$this a sh:NodeShape} FILTER NOT EXISTS {$this a/rdfs:subClassOf* ?class . ?class sh:property/sh:path ?p . } FILTER NOT EXISTS {$this a/rdfs:subClassOf* ?class . ?class sh:xone/rdf:rest*/rdf:first/sh:property/sh:path ?p . } FILTER NOT EXISTS {$this a/rdfs:subClassOf* ?class . ?class sh:or/rdf:rest*/rdf:first/sh:property/sh:path ?p . } }
target class: Concept

Closed World QUDT Shape
type: NodeShape
comment: Ensure that all instances of an s223 class use only the relations defined for that class. Note that this only applies to QUDT relations.
sparql: SPARQLConstraint
  comment: Ensure that all instances of an s223 class use only the relations defined for that class. Note that only QUDT relations are checked by this validation.
  message: s223: QUDT predicate {?p} is not defined for instance {$this}.
  prefixes: all
  select: SELECT $this ?p ?o WHERE { $this ?p ?o . FILTER(STRSTARTS (str(?p), "http://qudt.org/schema/qudt")) FILTER NOT EXISTS {$this a sh:NodeShape} FILTER NOT EXISTS {$this a/rdfs:subClassOf* ?class . ?class sh:property/sh:path ?p . } FILTER NOT EXISTS {$this a/rdfs:subClassOf* ?class . ?class sh:xone/rdf:rest*/rdf:first/sh:property/sh:path ?p . } FILTER NOT EXISTS {$this a/rdfs:subClassOf* ?class . ?class sh:or/rdf:rest*/rdf:first/sh:property/sh:path ?p . } }
target class: Concept

Clothes washer
type: Class
type: NodeShape
comment: A piece of `Equipment` that automatically cleans a load of textiles (e.g., clothing, bedding).
subclass of: Equipment
property:
  comment: A `ClothesWasher` shall have at least one inlet using the medium `Fluid-Water`.
  message: s223: A `ClothesWasher` shall have at least one inlet using the medium `Fluid-Water`.
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Inlet Connection Point
    node:
      property:
        class: Water
        path: has Medium
property:
  comment: A `ClothesWasher` shall have at least one inlet using the medium `Constituent-Electricity`.
  message: s223: A `ClothesWasher` shall have at least one inlet using the medium `Constituent-Electricity`.
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Inlet Connection Point
    node:
      property:
        class: Electricity
        path: has Medium
property:
  comment: A `ClothesWasher` shall have at least one outlet using the medium `Fluid-Water`.
  message: s223: A `ClothesWasher` shall have at least one outlet using the medium `Fluid-Water`.
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Outlet Connection Point
    node:
      property:
        class: Water
        path: has Medium

Coffee maker
type: Class
type: NodeShape
comment: A piece of `Equipment` that automatically brews coffee.
subclass of: Equipment
property:
  comment: A `CoffeeMaker` shall have at least one inlet using the medium `Constituent-Electricity`.
  message: s223: A `CoffeeMaker` shall have at least one inlet using the medium `Constituent-Electricity`.
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Inlet Connection Point
    node:
      property:
        class: Electricity
        path: has Medium

Compressor
type: Class
type: NodeShape
comment: A piece of `Equipment` that mechanically increases the pressure of a gas.
subclass of: Equipment
property:
  comment: A `Compressor` shall have at least one outlet.
  message: s223: A `Compressor` shall have at least one outlet.
  min count: 1
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Outlet Connection Point
property:
  comment: A `Compressor` shall have at least one inlet.
  message: s223: A `Compressor` shall have at least one inlet.
  min count: 1
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Inlet Connection Point

Computer printer
type: Class
type: NodeShape
comment: A piece of `Equipment` that processes an input electrical or RF signal, typically from a `Computer`, and outputs a durable representation of information, typically text and/or graphics, typically on paper.
subclass of: Equipment
property:
  comment: A `ComputerPrinter` shall have at least one inlet using the medium `Electricity-Signal` or `EM-RF`.
  message: s223: A `ComputerPrinter` shall have at least one inlet using the medium `Electricity-Signal` or `EM-RF`.
  min count: 1
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Inlet Connection Point
    node:
      property:
        path: has Medium
property:
  comment: A `ComputerPrinter` shall have at least one inlet using the medium `Constituent-Electricity`.
  message: s223: A `ComputerPrinter` shall have at least one inlet using the medium `Constituent-Electricity`.
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Inlet Connection Point
    node:
      property:
        class: Electricity
        path: has Medium

Concentration sensor
type: Class
type: NodeShape
comment: A `Sensor` that `observes` a `QuantifiableObservableProperty` that represents a concentration of a miscible constituent in a medium, in contrast to a `ParticulateSensor` that `observes` a `QuantifiableObservableProperty` that represents an amount of a particulate in a medium (see {s223:ParticulateSensor}). The 223 standard does not constrain the `Unit` or `QuantityKind` reported by a `ConcentrationSensor`, but possible `QuantityKind`s include `Concentration` (moles per volume), `Density` (mass per volume), `MoleFraction`, and `VolumeFraction`.
subclass of: Sensor

ConceptShape
type: NodeShape
rule: SPARQLRule
  comment: Add an rdfs:label if it is missing.
  construct: CONSTRUCT {$this rdfs:label ?newLabel .} WHERE { FILTER (NOT EXISTS {$this rdfs:label ?something}) . BIND(REPLACE(STR($this), "^.*/([^/]*)$", "$1") AS ?localNameWithoutHash) BIND(REPLACE(?localNameWithoutHash, "^.*#(.*)$", "$1") AS ?localName) BIND(REPLACE(?localName, "-", " ", "i") AS ?newLabel) }
  name: AddLabelFromLocalName
  prefixes: all
target class: Concept

ConductorShape
type: NodeShape
rule: SPARQLRule
  comment: Infer the `hasElectricalPhase` value from any connected `ConnectionPoint`s.
  construct: CONSTRUCT {$this s223:hasElectricalPhase ?phase .} WHERE { $this s223:cnx/s223:hasElectricalPhase ?phase . }
  prefixes: all
target class: Conductor

ConnectableShape
type: NodeShape
rule: SPARQLRule
  comment: Infer the `connected` relation for BiDirectional connections
  construct: CONSTRUCT {$this s223:connected ?d2 .} WHERE { $this s223:connectedThrough/^s223:connectedThrough ?d2 . FILTER ($this != ?d2) . FILTER NOT EXISTS {$this s223:contains* ?d2} . FILTER NOT EXISTS {?d2 s223:contains* $this} . }
  name: InferredEquipmentToDownstreamEquipmentProperty
  prefixes: all
rule: SPARQLRule
  comment: Infer the `connected` relation for BiDirectional connections
  construct: CONSTRUCT {$this s223:connected ?d2 .} WHERE { $this s223:connectedThrough/^s223:connectedThrough ?d2 . FILTER ($this != ?d2) . FILTER NOT EXISTS {$this s223:contains* ?d2} . FILTER NOT EXISTS {?d2 s223:contains* $this} . }
  name: InferredEquipmentToDownstreamEquipmentProperty
  prefixes: all
rule: SPARQLRule
  comment: Infer the `connected` relation using `connectedTo`
  construct: CONSTRUCT {$this s223:connected ?thing .} WHERE { $this s223:connectedTo ?thing . }
  name: InferredEquipmentToEquipmentPropertyfromconnectedTo
  prefixes: all
rule: SPARQLRule
  comment: Infer the `connectedTo` relation using `connectsThrough` and `connectsTo`.
  construct: CONSTRUCT {$this s223:connectedTo ?equipment .} WHERE { $this s223:hasConnectionPoint ?cp . ?cp a s223:OutletConnectionPoint . ?cp s223:connectsThrough/s223:connectsTo ?equipment . }
  name: InferredEquipmentToDownstreamEquipmentProperty
  prefixes: all
rule: SPARQLRule
  comment: Infer the `connected` relation using `connectedFrom`
  construct: CONSTRUCT {$this s223:connected ?thing .} WHERE { $this s223:connectedFrom ?thing . }
  name: InferredEquipmentToEquipmentPropertyfromconnectedFrom
  prefixes: all
rule: SPARQLRule
  comment: Infer the `cnx` relation using `isConnectionPointOf`.
  construct: CONSTRUCT {$this s223:cnx ?thing .} WHERE { $this ^s223:isConnectionPointOf ?thing . }
  name: InferredEquipmentToConnectionPointCnxPropertyFromInverse
  prefixes: all
rule: SPARQLRule
  comment: Infer the `cnx` relationship using `hasConnectionPoint`.
  construct: CONSTRUCT {$this s223:cnx ?thing .} WHERE { $this s223:hasConnectionPoint ?thing . }
  name: InferredEquipmentToConnectionPointCnxProperty
  prefixes: all
rule: SPARQLRule
  comment: Infer the `connectedFrom` relations using `connectsThrough` and `connectsFrom`.
  construct: CONSTRUCT {$this s223:connectedFrom ?equipment .} WHERE { $this s223:hasConnectionPoint ?cp . ?cp a s223:InletConnectionPoint . ?cp s223:connectsThrough/s223:connectsFrom ?equipment . }
  name: InferredEquipmentToUpstreamEquipmentProperty
  prefixes: all
rule: SPARQLRule
  comment: Infer the `connectedThrough` relation using `hasConnectionPoint` and `connectsThrough`
  construct: CONSTRUCT {$this s223:connectedThrough ?connection .} WHERE { $this s223:hasConnectionPoint/s223:connectsThrough ?connection . }
  name: InferredEquipmentToConnectionProperty
  prefixes: all
rule: SPARQLRule
  comment: Infer the `hasConnectionPoint` relation using `cnx`
  construct: CONSTRUCT {$this s223:hasConnectionPoint ?thing .} WHERE { $this s223:cnx ?thing . }
  name: InferredEquipmentToConnectionPointProperty
  prefixes: all
target class: Connectable

ConnectionCnxShape
type: NodeShape
comment: You need either an `InletConnectionPoint` and an `OutletConnectionPoint`, or at least one `BidirectionalConnectionPoint` and another `ConnectionPoint` of any type.
message: s223: You need either an `InletConnectionPoint` and an `OutletConnectionPoint`, or at least one `BidirectionalConnectionPoint` and another `ConnectionPoint` of any type.
or:
  property:
    comment: A `Connection` shall have at least two `connectsAt` relations allowing flow in and out of the `Connection`.
    min count: 1
    path: connects at
    qualified min count: 1
    qualified value shape:
      class: Inlet Connection Point
    qualified value shapes disjoint: true
    severity: Warning
  property:
    comment: A `Connection` shall have at least two `connectsAt` relations allowing flow in and out of the `Connection`.
    min count: 1
    path: connects at
    qualified min count: 1
    qualified value shape:
      class: Outlet Connection Point
    qualified value shapes disjoint: true
    severity: Warning
or:
  property:
    comment: A `Connection` shall have at least two `connectsAt` relations allowing flow in and out of the `Connection`.
    min count: 2
    path: connects at
    qualified min count: 1
    qualified value shape:
      class: Bidirectional Connection Point
    qualified value shapes disjoint: true
    severity: Warning
severity: Warning
target class: Connection

ConnectionPointShape
type: NodeShape
rule: SPARQLRule
  comment: Infer the `hasElectricalPhase` value from any connected `Conductor`.
  construct: CONSTRUCT {$this s223:hasElectricalPhase ?phase .} WHERE { $this s223:connectsThrough/s223:hasElectricalPhase ?phase . }
  prefixes: all
target class: ConnectionPoint

ConnectionShape
type: NodeShape
rule: SPARQLRule
  comment: Infer the `connectsFrom` relation using the relation `connectsAt`.
  construct: CONSTRUCT {$this s223:connectsFrom ?equipment .} WHERE { $this s223:connectsAt ?cp . ?cp a s223:OutletConnectionPoint . ?cp s223:isConnectionPointOf ?equipment . }
  name: InferredConnectionToUpstreamEquipmentProperty
  prefixes: all
rule: SPARQLRule
  comment: Infer the `connectsTo` relation using the relation `connectsAt`.
  construct: CONSTRUCT {$this s223:connectsTo ?equipment .} WHERE { $this s223:connectsAt ?cp . ?cp a s223:InletConnectionPoint . ?cp s223:isConnectionPointOf ?equipment . }
  name: InferredConnectionToDownstreamEquipmentProperty
  prefixes: all
rule: SPARQLRule
  comment: Infer `cnx` relation using the relation `connectsAt`.
  construct: CONSTRUCT {$this s223:cnx ?thing .} WHERE { $this s223:connectsAt ?thing . }
  prefixes: all
rule: SPARQLRule
  comment: Infer `cnx` relation using the relation `connectsThrough`.
  construct: CONSTRUCT {$this s223:cnx ?thing .} WHERE { $this ^s223:connectsThrough ?thing . }
  prefixes: all
rule: SPARQLRule
  comment: Infer the `connectsAt` relation using the relation `cnx`.
  construct: CONSTRUCT {$this s223:connectsAt ?thing .} WHERE { $this s223:cnx ?thing . }
  prefixes: all
target class: Connection

Controller
type: Class
type: NodeShape
comment: A piece of equipment for regulation of a system or component in normal operation, which executes one or more `Function`s.
subclass of: Equipment
property:
  comment: If the relation `executes` is present it shall associate the `Controller` with a `Function`.
  class: Function
  message: s223: If the relation `executes` is present it shall associate the `Controller` with a `Function`.
  path: executes

CoolingCoilShape
type: NodeShape
rule: TripleRule
  comment: A `CoolingCoil` must always have the role `Role-Cooling`
  object: Cooling role
  predicate: hasRole
  subject: this
target class: Cooling coil

Cooling tower
type: Class
type: NodeShape
comment: A piece of `Equipment` that uses atmospheric air to cool warm water, generally by direct contact via evaporation.
subclass of: Equipment
property:
  comment: A `CoolingTower` shall have at least one outlet using the medium `Fluid-Water`.
  message: s223: A `CoolingTower` shall have at least one outlet using the medium `Fluid-Water`.
  min count: 1
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Outlet Connection Point
    node:
      property:
        class: Water
        path: has Medium
property:
  comment: A `CoolingTower` shall have at least one inlet using the medium `Fluid-Water`.
  message: s223: A `CoolingTower` shall have at least one inlet using the medium `Fluid-Water`.
  min count: 1
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Inlet Connection Point
    node:
      property:
        class: Water
        path: has Medium

Copy machine
type: Class
type: NodeShape
comment: A piece of `Equipment` that processes an input of one or more durable representation(s) of information, typically text and/or graphics and typically on paper, and outputs one or more reproductions of the information for each input, typically on paper.
subclass of: Equipment
property:
  comment: A `CopyMachine` shall have at least one inlet using the medium `Constituent-Electricity`.
  message: s223: A `CopyMachine` shall have at least one inlet using the medium `Constituent-Electricity`.
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Inlet Connection Point
    node:
      property:
        class: Electricity
        path: has Medium

Correlated color temperature sensor
type: Class
type: NodeShape
comment: A `LightSensor` that `observes` a `QuantifiableObservableProperty` that represents a correlated color temperature (CCT) of a light source, defined as the absolute temperature of a blackbody whose chromaticity most nearly resembles that of the light source.
subclass of: Light sensor
property:
  comment: A `CorrelatedColorTemperatureSensor` shall always `observe` a `QuantifiableObservableProperty` that has a `QuantityKind` of `CorrelatedColorTemperature`.
  message: s223: A `CorrelatedColorTemperatureSensor` shall always `observe` a `QuantifiableObservableProperty` that has a `QuantityKind` of `CorrelatedColorTemperature`.
  path: observes
  qualified min count: 1
  qualified value shape:
    class: Property
    node:
      property:
        has value: CorrelatedColorTemperature
        path: hasQuantityKind

Dishwasher
type: Class
type: NodeShape
comment: A piece of `Equipment` that automatically cleans dishware, cookware, and cutlery.
subclass of: Equipment
property:
  comment: A `Dishwasher` shall have at least one inlet using the medium `Fluid-Water`.
  message: s223: A `Dishwasher` shall have at least one inlet using the medium `Fluid-Water`.
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Inlet Connection Point
    node:
      property:
        class: Water
        path: has Medium
property:
  comment: A `Dishwasher` shall have at least one outlet using the medium `Fluid-Water`.
  message: s223: A `Dishwasher` shall have at least one outlet using the medium `Fluid-Water`.
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Outlet Connection Point
    node:
      property:
        class: Water
        path: has Medium
property:
  comment: A `Dishwasher` shall have at least one inlet using the medium `Constituent-Electricity`.
  message: s223: A `Dishwasher` shall have at least one inlet using the medium `Constituent-Electricity`.
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Inlet Connection Point
    node:
      property:
        class: Electricity
        path: has Medium

DomainSpaceShape
type: NodeShape
rule: SPARQLRule
  comment: Infer a `hasDomain` relation by checking any enclosing `Zone` to determine the domain.
  construct: CONSTRUCT {$this s223:hasDomain ?domain .} WHERE { $this ^s223:hasDomainSpace/s223:hasDomain ?domain . }
  prefixes: all
target class: Domain Space

Door
type: Class
type: NodeShape
comment: A piece of `Equipment` consisting of hinged, sliding, or revolving barrier at the entrance to a building or room.
subclass of: Equipment
property:
  comment: A `Door` shall have at least two bidirectional connection points using the medium `Fluid-Air`.
  message: s223: A `Door` shall have at least two bidirectional connection points using the medium `Fluid-Air`.
  min count: 2
  path: has connection point
  qualified min count: 2
  qualified value shape:
    class: Bidirectional Connection Point
    node:
      property:
        class: Air
        path: has Medium

Drain
type: Class
type: NodeShape
comment: A `Valve` that allows, regulates, or stops the flow of water from a `Sink`, `Shower`, `Bathtub` or other plumbing service equipment into a plumbing drainage system that typically carries the mixture to a sewer system or septic tank.
subclass of: Valve
property:
  comment: A `Drain` shall have at least one inlet using the medium `Fluid-Water`.
  message: s223: A `Drain` shall have at least one inlet using the medium `Fluid-Water`.
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Inlet Connection Point
    node:
      property:
        class: Water
        path: has Medium
property:
  comment: A `Drain` shall have at least one outlet using the medium `Fluid-Water`.
  message: s223: A `Drain` shall have at least one outlet using the medium `Fluid-Water`.
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Outlet Connection Point
    node:
      property:
        class: Water
        path: has Medium

Dual duct terminal.
type: Class
type: NodeShape
comment: A `TerminalUnit` that mixes two independent sources of primary air.
subclass of: Terminal unit
property:
  comment: A `DualDuctTerminal` shall have at least two inlets using the medium `Fluid-Air`.
  message: s223: A `DualDuctTerminal` shall have at least two inlets using the medium `Fluid-Air`.
  min count: 2
  path: has connection point
  qualified min count: 2
  qualified value shape:
    class: Inlet Connection Point
    node:
      property:
        class: Air
        path: has Medium

Duct
type: Class
type: NodeShape
comment: A `Connection` that is used to transport air such as supply, return, and exhaust in HVAC (Heating, Ventilation, and Air Conditioning) systems.
subclass of: Connection

Duv sensor
type: Class
type: NodeShape
comment: A `LightSensor` that `observes` a `QuantifiableObservableProperty` that represents a Duv of a light source, defined as the distance between the chromaticity of the light source and a blackbody radiator of equal correlated color temperature (CCT).
subclass of: Light sensor
property:
  comment: A `DuvSensor` shall always `observe` a `QuantifiableObservableProperty` that has a `QuantityKind` of `Duv`.
  message: s223: A `DuvSensor` shall always `observe` a `QuantifiableObservableProperty` that has a `QuantityKind` of `Duv`.
  path: observes
  qualified min count: 1
  qualified value shape:
    class: Property
    node:
      property:
        has value: Duv
        path: hasQuantityKind

Electric clothes dryer
type: Class
type: NodeShape
comment: A piece of `Equipment` that automatically removes moisture from a load of textiles (e.g., clothing, bedding), typically after they are washed in a `ClothesWasher`.
subclass of: Equipment
property:
  comment: A `ElectricClothesDryer` shall have at least one inlet using the medium `Constituent-Electricity`.
  message: s223: A `ElectricClothesDryer` shall have at least one inlet using the medium `Constituent-Electricity`.
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Inlet Connection Point
    node:
      property:
        class: Electricity
        path: has Medium

Electric cooktop
type: Class
type: NodeShape
comment: A piece of `Equipment` with a flat surface containing one or more heat sources designed for cooking with pots and pans.
subclass of: Equipment
property:
  comment: A `ElectricCooktop` shall have at least one inlet using the medium `Constituent-Electricity`.
  message: s223: A `ElectricCooktop` shall have at least one inlet using the medium `Constituent-Electricity`.
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Inlet Connection Point
    node:
      property:
        class: Electricity
        path: has Medium

Electric energy DC-DC converter
type: Class
type: NodeShape
comment: An `ElectricEnergyConverter` that transforms direct current (DC) electric power from one voltage to another voltage.
subclass of: Electric energy converter
property:
  comment: An `ElectricEnergyDCDCConverter` shall have at least two connection points using the medium `Electricity-DC`.
  message: s223: An `ElectricEnergyDCDCConverter` shall have at least two connection points using the medium `Electricity-DC`.
  min count: 2
  path: has connection point
  qualified min count: 2
  qualified value shape:
    class: ConnectionPoint
    node:
      property:
        class: DC electricity
        path: has Medium

Electric energy inverter
type: Class
type: NodeShape
comment: An `ElectricEnergyConverter` that tranforms direct current (DC) electric power to alternating current (AC) electric power, or vice versa.
subclass of: Electric energy converter
property:
  comment: An `ElectricEnergyInverter` shall have at least one connection point that uses the medium `Electricity-AC`.
  message: s223: An `ElectricEnergyInverter` shall have at least one connection point that uses the medium `Electricity-AC`.
  min count: 1
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: ConnectionPoint
    node:
      property:
        class: AC electricity
        path: has Medium
property:
  comment: An `ElectricEnergyInverter` shall have at least one connection point that uses the medium `Electricity-DC`.
  message: s223: An `ElectricEnergyInverter` shall have at least one connection point that uses the medium `Electricity-DC`.
  min count: 1
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: ConnectionPoint
    node:
      property:
        class: DC electricity
        path: has Medium

Electric energy transformer
type: Class
type: NodeShape
comment: An `ElectricEnergyConverter` that transforms alternating current (AC) electric power from one voltage to another voltage.
subclass of: Electric energy converter
property:
  comment: An `ElectricEnergyTransformer` shall have at least two connection points using the medium `Electricity-AC`.
  message: s223: An `ElectricEnergyTransformer` shall have at least two connection points using the medium `Electricity-AC`.
  min count: 2
  path: has connection point
  qualified min count: 2
  qualified value shape:
    class: ConnectionPoint
    node:
      property:
        class: AC electricity
        path: has Medium

Electric water dispenser
type: Class
type: NodeShape
comment: A piece of `Equipment` that dispenses water, and optionally heats and/or cools the water prior to dispensing.
subclass of: Equipment
property:
  comment: An `ElectricWaterDispenser` shall have at least one inlet using the medium `Fluid-Water`.
  message: s223: An `ElectricWaterDispenser` shall have at least one inlet using the medium `Fluid-Water`.
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Inlet Connection Point
    node:
      property:
        class: Water
        path: has Medium
property:
  comment: An `ElectricWaterDispenser` shall have at least one inlet using the medium `Constituent-Electricity`.
  message: s223: An `ElectricWaterDispenser` shall have at least one inlet using the medium `Constituent-Electricity`.
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Inlet Connection Point
    node:
      property:
        class: Electricity
        path: has Medium

Electricity breaker
type: Class
type: NodeShape
comment: A piece of equipment that automatically opens an electric circuit automatically at a predetermined overcurrent, so as to prevent damage to the circuit, the equipment connected to the circuit, and the building containing the circuit.
subclass of: Equipment
property:
  comment: An `ElectricityBreaker` shall have at least one inlet using the medium `Constituent-Electricity`.
  message: s223: An `ElectricityBreaker` shall have at least one inlet using the medium `Constituent-Electricity`.
  min count: 1
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Inlet Connection Point
    node:
      property:
        class: Electricity
        path: has Medium
property:
  comment: An `ElectricityBreaker` shall have at least one outlet using the medium `Constituent-Electricity`.
  message: s223: An `ElectricityBreaker` shall have at least one outlet using the medium `Constituent-Electricity`.
  min count: 1
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Outlet Connection Point
    node:
      property:
        class: Electricity
        path: has Medium

Electricity meter
type: Class
type: NodeShape
comment: A piece of `Equipment` that contains at least one `VoltageSensor` and one `ElectricCurrentSensor`, and reports one or more properties of electricity. Example reported properties include the following `QuantityKind`s`: `Voltage`, `ElectricCurrent`, `ActiveEnergy`, `ActivePower`, `ReactivePower`, `ApparentPower`, `PowerFactor`, and `Frequency` with unit `Hertz`. An `ElectricityMeter` may optionally contain a `Function` that represents the mathematical calculations of the reported properties of electricity.
subclass of: Equipment
property:
  comment: The observation location of the contained `VoltageSensor`(s) and `ElectricCurrentSensor`(s) shall be a single instance of either a `Connection` or a `ConnectionPoint`.
  message: s223: The observation location of the sensors contained by an `ElectricityMeter` shall be either a `Connection` or a `ConnectionPoint`.
  min count: 1
  or:
    class: Connection
  or:
    class: ConnectionPoint
  path: contains
  path: has observation location
property:
  comment: An `ElectricityMeter` shall contain a `VoltageSensor` and `ElectricCurrentSensor` with the same observation location.
  path: contains
  sparql: SPARQLConstraint
    comment: An `ElectricityMeter` shall contain a `VoltageSensor` and `ElectricCurrentSensor` with the same observation location.
    message: s223: {$this} contains {?sensorA} and {?sensorB} with different observation locations: {?locA} and {?locB}.
    prefixes: all
    select: SELECT DISTINCT $this ?sensorA ?locA ?sensorB ?locB WHERE { $this s223:contains ?sensorA . $this s223:contains ?sensorB . ?sensorA a/rdfs:subClassOf* s223:Sensor . ?sensorB a/rdfs:subClassOf* s223:Sensor . FILTER (?sensorA != ?sensorB) . ?sensorA s223:hasObservationLocation ?locA . ?sensorB s223:hasObservationLocation ?locB . FILTER (?locA != ?locB) . }
property:
  comment: An `ElecticityMeter` shall contain at least two `Sensor`s.
  message: An `ElecticityMeter` shall contain at least two `Sensor`s.
  min count: 2
  path: contains
property:
  comment: An `ElecticityMeter` shall contain at least one `ElectricCurrentSensor`.
  message: An `ElecticityMeter` shall contain at least one `ElectricCurrentSensor`.
  path: contains
  qualified min count: 1
  qualified value shape:
    class: Electric Current Sensor
  qualified value shapes disjoint: true
property:
  comment: An `ElecticityMeter` shall contain at least one `VoltageSensor`.
  message: An `ElecticityMeter` shall contain at least one `VoltageSensor`.
  path: contains
  qualified min count: 1
  qualified value shape:
    class: Voltage Sensor
  qualified value shapes disjoint: true
property:
  comment: Placeholder: The medium observed by the sensors contained by an `ElectricityMeter` shall be within the `Constituent-Electricity` hierarchy.
  class: Electricity
  message: s223: The medium observed by the sensors contained by an `ElectricityMeter` shall be within the `Constituent-Electricity` hierarchy.
  min count: 1
  path: contains
  path: has observation location
  path: has Medium

Electricity outlet
type: Class
type: NodeShape
comment: A piece of `Equipment` that contains one or more receptacles for connecting electrical equipment to electrical power, typically via a plug and cord. Not to be confused with an `OutletConnectionPoint` with the medium Constituent-Electricity.
subclass of: Equipment
property:
  comment: An `ElectricityOutlet` shall have exactly one inlet using the medium `Constituent-Electricity`.
  message: s223: An `ElectricityOutlet` shall have exactly one inlet using the medium `Constituent-Electricity`.
  min count: 1
  path: has connection point
  qualified max count: 1
  qualified min count: 1
  qualified value shape:
    class: Inlet Connection Point
    node:
      property:
        class: Electricity
        path: has Medium
property:
  comment: An `ElectricityOutlet` shall have at least one outlet using the medium `Constituent-Electricity`.
  message: s223: An `ElectricityOutlet` shall have at least one outlet using the medium `Constituent-Electricity`.
  min count: 1
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Outlet Connection Point
    node:
      property:
        class: Electricity
        path: has Medium

Elevator
type: Class
type: NodeShape
comment: A piece of `Equipment` that vertically transports people or freight between floors or levels of a building via a vertical shaft commonly referred to as a hoistway. The people or freight are typically situated on a platform, or in a container commonly referred to as a car, cab, cabin, cage, or carriage.
subclass of: Equipment
property:
  comment: A `Elevator` shall have at least one inlet using the medium `Constituent-Electricity`.
  message: s223: A `Elevator` shall have at least one inlet using the medium `Constituent-Electricity`.
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Inlet Connection Point
    node:
      property:
        class: Electricity
        path: has Medium

EquipmentShape
type: NodeShape
rule: SPARQLRule
  comment: For equipment contained within another piece of equipment use the `mapsTo` relation to infer a Medium from the containing equipment.
  construct: CONSTRUCT { ?childCp s223:hasMedium ?medium . } WHERE { $this s223:hasConnectionPoint ?cp . ?childCp s223:mapsTo ?cp . ?cp s223:connectsThrough ?connection . ?cp s223:hasMedium ?medium . FILTER NOT EXISTS {?childCp s223:hasMedium ?something} . }
  prefixes: all
rule: SPARQLRule
  comment: For equipment containing another piece of equipment, use the `mapsTo` relation to infer a Medium from the contained equipment.
  construct: CONSTRUCT { ?parentCp s223:hasMedium ?medium . } WHERE { $this s223:hasConnectionPoint ?cp . ?cp s223:mapsTo ?parentCp . ?cp s223:connectsThrough ?connection . ?cp s223:hasMedium ?medium . FILTER NOT EXISTS {?parentCp s223:hasMedium ?something} . }
  prefixes: all
target class: Equipment

Escalator
type: Class
type: NodeShape
comment: A piece of `Equipment` that vertically transports people between floors or levels of a building via a moving staircase.
subclass of: Equipment
property:
  comment: A `Escalator` shall have at least one inlet using the medium `Constituent-Electricity`.
  message: s223: A `Escalator` shall have at least one inlet using the medium `Constituent-Electricity`.
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Inlet Connection Point
    node:
      property:
        class: Electricity
        path: has Medium

Ethernet switch
type: Class
type: NodeShape
comment: A piece of `Equipment` that connects electrical equipment, such as `Computer`s and Wi-Fi access points, to an Ethernet network so they can communicate with each other and, optionally, to the Internet.
subclass of: Equipment
property:
  comment: An `EthernetSwitch` shall have at least two `BidirectionalConnectionPoint`s using the medium `Signal-Ethernet`.
  message: s223: An `EthernetSwitch` shall have at least two `BidirectionalConnectionPoint`s using the medium `Signal-Ethernet`.
  path: has connection point
  qualified min count: 2
  qualified value shape:
    class: Bidirectional Connection Point
    node:
      property:
        class: Signal-Ethernet
        path: has Medium
property:
  comment: An `EthernetSwitch` shall have at least one inlet using the medium `Constituent-Electricity`.
  message: s223: An `EthernetSwitch` shall have at least one inlet using the medium `Constituent-Electricity`.
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Inlet Connection Point
    node:
      property:
        class: Electricity
        path: has Medium

Fan coil unit
type: Class
type: NodeShape
comment: A piece of `Equipment` consisting of a `Coil` and a `Fan` that regulates the temperature of one or more spaces.
subclass of: Equipment
property:
  comment: A `FanCoilUnit` shall be associated with at least 1 `Coil` using the relation `contains`.
  message: s223: A `FanCoilUnit` shall be associated with at least 1 `Coil` using the relation `contains`.
  min count: 1
  path: contains
  qualified min count: 1
  qualified value shape:
    class: Coil
property:
  comment: A `FanCoilUnit` shall have the role `Role-Heating` or `Role-Cooling`.
  message: s223: A `FanCoilUnit` shall have the role `Role-Heating` or `Role-Cooling`.
  min count: 1
  path: hasRole
  qualified min count: 1
  qualified value shape:
    in: Heating role
    in: Cooling role
property:
  comment: A `FanCoilUnit` shall have at least one inlet using the medium `Fluid-Air`.
  message: s223: A `FanCoilUnit` shall have at least one inlet using the medium `Fluid-Air`.
  min count: 1
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Inlet Connection Point
    node:
      property:
        class: Air
        path: has Medium
property:
  comment: A `FanCoilUnit` shall have at least one outlet using the medium `Fluid-Air`.
  message: s223: A `FanCoilUnit` shall have at least one outlet using the medium `Fluid-Air`.
  min count: 1
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Outlet Connection Point
    node:
      property:
        class: Air
        path: has Medium
property:
  comment: A `FanCoilUnit` shall be associated with at least 1 `Fan` using the relation `contains`.
  message: s223: A `FanCoilUnit` shall be associated with at least 1 `Fan` using the relation `contains`.
  min count: 1
  path: contains
  qualified min count: 1
  qualified value shape:
    class: Fan

Fan powered terminal
type: Class
type: NodeShape
comment: A `TerminalUnit` that contains a fan, and optionally has supplemental heating or cooling. Airflow may pass through or be parallel to the fan.
subclass of: Terminal unit
property:
  comment: A `FanPoweredTerminal` shall be associated with at least one `Fan` by using the relation `contains`.
  message: s223: A `FanPoweredTerminal` shall be associated with at least one `Fan` by using the relation `contains`.
  min count: 1
  path: contains
  qualified min count: 1
  qualified value shape:
    class: Fan

Faucet
type: Class
type: NodeShape
comment: A `Valve` that allows, regulates, or stops the flow of hot or cold water from a plumbing supply system into a `Sink`, `Shower`, `Bathtub`, or other plumbing service equipment.
subclass of: Valve
property:
  comment: A `Faucet` shall have at least one outlet using the medium `Fluid-Water`.
  message: s223: A `Faucet` shall have at least one outlet using the medium `Fluid-Water`.
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Outlet Connection Point
    node:
      property:
        class: Water
        path: has Medium
property:
  comment: A `Faucet` shall have at least one inlet using the medium `Fluid-Water`.
  message: s223: A `Faucet` shall have at least one inlet using the medium `Fluid-Water`.
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Inlet Connection Point
    node:
      property:
        class: Water
        path: has Medium

Fiber ethernet outlet
type: Class
type: NodeShape
comment: A piece of `Equipment` that contains one or more receptacles for connecting electrical equipment to a fiber Ethernet communication network, typically via a fiber Ethernet cable.
subclass of: Equipment
property:
  comment: A `FiberEthernetOutlet` shall have exactly one inlet using the medium `Signal-FiberEthernet`.
  message: s223: A `FiberEthernetOutlet` shall have exactly one inlet using the medium `Signal-FiberEthernet`.
  min count: 1
  path: has connection point
  qualified max count: 1
  qualified min count: 1
  qualified value shape:
    class: Inlet Connection Point
    node:
      property:
        class: Fiber Ethernet
        path: has Medium
property:
  comment: A `FiberEthernetOutlet` shall have at least one outlet using the medium `Signal-FiberEthernet`.
  message: s223: A `FiberEthernetOutlet` shall have at least one outlet using the medium `Signal-FiberEthernet`.
  min count: 1
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Outlet Connection Point
    node:
      property:
        class: Fiber Ethernet
        path: has Medium

Filter
type: Class
type: NodeShape
comment: A piece of `Equipment` that removes contaminants from gases or liquids. See {s223:Substance-Medium} for more details on validating compatible mediums upstream and downstream of a `Filter`.
subclass of: Equipment
property:
  comment: A `Filter` shall have at least one inlet `ConnectionPoint`.
  message: s223: A `Filter` shall have at least one inlet `ConnectionPoint`.
  min count: 1
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Inlet Connection Point
property:
  comment: A `Filter` shall have at least one outlet.
  message: s223: A `Filter` shall have at least one outlet.
  min count: 1
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Outlet Connection Point
property:
  comment: Incompatible Medium. Case 3: Associated `ConnectionPoint`s with mediums having constituents.
  path: has connection point
  sparql: SPARQLConstraint
    comment: Incompatible Medium. Case 3: Two mediums with constituents.
    message: s223: For `Filter` {$this} there is no compatible substance between medium {?m2} and medium {?m1}.
    prefixes: all
    select: SELECT ?this ?m2 ?m1 WHERE { ?this s223:cnx ?cp1, ?cp2 . ?cp1 a/rdfs:subClassOf* s223:ConnectionPoint . ?cp2 a/rdfs:subClassOf* s223:ConnectionPoint . FILTER (?cp1 != ?cp2) . ?cp1 s223:hasMedium ?m1 . ?cp2 s223:hasMedium ?m2 . ?m1 s223:composedOf/s223:ofConstituent ?s1 . ?m2 s223:composedOf/s223:ofConstituent ?s2 . FILTER NOT EXISTS { ?m1 s223:composedOf/s223:ofConstituent ?s11 . ?m2 s223:composedOf/s223:ofConstituent ?s12 . FILTER (?s11 = ?s12) . } FILTER NOT EXISTS { ?m1 s223:composedOf/s223:ofConstituent ?s21 . ?m2 s223:composedOf/s223:ofConstituent ?s22 . {?s22 rdfs:subClassOf* ?s21} UNION {?s21 rdfs:subClassOf* ?s22} . } }
property:
  comment: Incompatible Medium. Case 1: Associated `ConnectionPoint`s with two pure mediums.
  path: has connection point
  sparql: SPARQLConstraint
    comment: Incompatible Medium. Case 1: Two pure mediums.
    message: s223: {$this} with inlet medium {?m2} is incompatible with outlet medium {?m1}.
    prefixes: all
    select: SELECT $this ?m2 ?m1 WHERE { $this s223:cnx ?cp1, ?cp2 . ?cp1 a/rdfs:subClassOf* s223:ConnectionPoint . ?cp2 a/rdfs:subClassOf* s223:ConnectionPoint . FILTER (?cp1 != ?cp2) . ?cp1 s223:hasMedium ?m1 . ?cp2 s223:hasMedium ?m2 . FILTER NOT EXISTS {?m1 s223:composedOf ?c1} . FILTER NOT EXISTS {?m2 s223:composedOf ?c2} FILTER (NOT EXISTS {?m2 rdfs:subClassOf* ?m1}) . FILTER (NOT EXISTS {?m1 rdfs:subClassOf* ?m2}) . }
property:
  comment: Incompatible Medium. Case 2: Associated `ConnectionPoint`s, one with a pure medium and one with a medium having constituents..
  path: has connection point
  sparql: SPARQLConstraint
    comment: Incompatible Medium. Case 2: A medium with constituents and a pure medium.
    message: s223: {$this} has an incompatible medium {?m1} with any constituent of {?m2}.
    prefixes: all
    select: SELECT $this ?m2 ?m1 WHERE { $this s223:cnx ?cp1, ?cp2 . ?cp1 a/rdfs:subClassOf* s223:ConnectionPoint . ?cp2 a/rdfs:subClassOf* s223:ConnectionPoint . FILTER (?cp1 != ?cp2) . ?cp1 s223:hasMedium ?m1 . ?cp2 s223:hasMedium ?m2 . ?m2 s223:composedOf/s223:ofConstituent ?s2 . FILTER NOT EXISTS {?m1 s223:composedOf ?c1} . FILTER NOT EXISTS { ?m2 s223:composedOf/s223:ofConstituent ?s12 . {?s12 rdfs:subClassOf* ?m1} UNION {?m1 rdfs:subClassOf* ?s12} . } }

Flow sensor
type: Class
type: NodeShape
comment: A `Sensor` that `observes` a `QuantifiableObservableProperty` that represents a measure of flow of fluid, typically with a `QuantityKind` of `VolumeFlowRate`.
subclass of: Sensor

Flush toilet
type: Class
type: NodeShape
comment: A piece of `Equipment` that collects human waste (i.e., urine and/or feces, and sometimes toilet paper) in a chamber containing water, and contains an integral manual or automatic actuator that triggers the release of an additional volume of water that flushes everything from the chamber into a drainage system that typically carries the mixture to a sewer system or septic tank.
subclass of: Equipment
property:
  comment: A `FlushToilet` shall have at least one outlet using the medium `Fluid-Water`.
  message: s223: A `FlushToilet` shall have at least one outlet using the medium `Fluid-Water`.
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Outlet Connection Point
    node:
      property:
        class: Water
        path: has Medium
property:
  comment: A `FlushToilet` shall have at least one inlet using the medium `Fluid-Water`.
  message: s223: A `FlushToilet` shall have at least one inlet using the medium `Fluid-Water`.
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Inlet Connection Point
    node:
      property:
        class: Water
        path: has Medium

Freezer
type: Class
type: NodeShape
comment: A piece of `Equipment` that maintains an internal temperature below the freezing point of water.
subclass of: Equipment
property:
  comment: A `Freezer` shall have at least one inlet using the medium `Constituent-Electricity`.
  message: s223: A `Freezer` shall have at least one inlet using the medium `Constituent-Electricity`.
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Inlet Connection Point
    node:
      property:
        class: Electricity
        path: has Medium

Fume hood
type: Class
type: NodeShape
comment: A piece of `Equipment` that is typically mounted over a work area (e.g., a space, table, or shelf) and conducts unwanted gases away from the area.
subclass of: Equipment
property:
  comment: A `FumeHood` shall have at least one outlet using the medium `Fluid-Air`.
  message: s223: A `FumeHood` shall have at least one outlet using the medium `Fluid-Air`.
  min count: 1
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Outlet Connection Point
    node:
      property:
        class: Air
        path: has Medium
property:
  comment: A `FumeHood` shall have at least one inlet using the medium `Fluid-Air`.
  message: s223: A `FumeHood` shall have at least one inlet using the medium `Fluid-Air`.
  min count: 1
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Inlet Connection Point
    node:
      property:
        class: Air
        path: has Medium

Function Property Shape
type: NodeShape
comment: A `Function` must be associated with at least one `Property` using either the relation `hasInput` or `hasOutput`.
message: s223: A `Function` must be associated with at least one `Property` using either the relation `hasInput` or `hasOutput`.
or:
  property:
    comment: A `Function` must be associated with at least one `Property` using either the relation `hasInput` or `hasOutput`.
    class: Property
    min count: 1
    path: has input
or:
  property:
    comment: A `Function` must be associated with at least one `Property` using either the relation `hasInput` or `hasOutput`.
    class: Property
    min count: 1
    path: has output
severity: Warning
target class: Function

Furnace
type: Class
type: NodeShape
comment: A piece of `Equipment` that converts fuel or electrical energy into heat.
subclass of: Equipment
property:
  comment: A `Furnace` shall have at least one outlet using the medium `Fluid-Air`.
  message: s223: A `Furnace` shall have at least one outlet using the medium `Fluid-Air`.
  min count: 1
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Outlet Connection Point
    node:
      property:
        class: Air
        path: has Medium
property:
  comment: A `Furnace` shall have at least one inlet using the medium `Fluid-Air`.
  message: s223: A `Furnace` shall have at least one inlet using the medium `Fluid-Air`.
  min count: 1
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Inlet Connection Point
    node:
      property:
        class: Air
        path: has Medium

Gauge pressure sensor
type: Class
type: NodeShape
comment: A `PressureSensor` that `observes` a `QuantifiableObservableProperty` that represents a measure of pressure relative to atmospheric pressure. Such sensors are commonly used to monitor compressed gas cylinders, for example, where a gauge reading of zero signifies that the measured pressure is equal to the atmospheric pressure, not a vacuum.
subclass of: Pressure sensor
property:
  comment: A `GaugePressureSensor` shall always `observe` a `QuantifiableObservableProperty` that has a value of true for qudt:isDeltaQuantity.
  max count: 1
  message: s223: A `GaugePressureSensor` shall always `observe` a `QuantifiableObservableProperty` that has a value of true for qudt:isDeltaQuantity.
  min count: 1
  path: observes
  path: isDeltaQuantity
  value: true
property:
  comment: A `GaugePressureSensor` shall always `observe` a `QuantifiableObservableProperty` that has a `QuantityKind` of GaugePressure.
  message: s223: A `GaugePressureSensor` shall always `observe` a `QuantifiableObservableProperty` that has a `QuantityKind` of GaugePressure.
  path: observes
  path: hasQuantityKind
  value: GaugePressure

Generator
type: Class
type: NodeShape
comment: A piece of `Equipment` that converts non-electric energy into electric energy.
subclass of: Equipment
property:
  comment: A `Generator` shall have at least one outlet using the medium `Constituent-Electricity`.
  class: Outlet Connection Point
  message: s223: A `Generator` shall have at least one outlet using the medium `Constituent-Electricity`.
  min count: 1
  node:
    property:
      class: Electricity
      path: has Medium
  path: has connection point
property:
  comment: A `Generator` shall be associated with at least one `ConnectionPoint` using the relation `hasConnectionPoint`.
  message: s223: A `Generator` shall be associated with at least one `ConnectionPoint` using the relation `hasConnectionPoint`.
  min count: 1
  path: has connection point

Ground to air heat pump
type: Class
type: NodeShape
comment: A `HeatPump` that transfers thermal energy between air and the ground.
subclass of: Heat pump
property:
  comment: A `GroundToAirHeatPump` shall have at least one outlet using the medium `Fluid-Air`.
  message: s223: A `GroundToAirHeatPump` shall have at least one outlet using the medium `Fluid-Air`.
  min count: 1
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Outlet Connection Point
    node:
      property:
        class: Air
        path: has Medium
property:
  comment: A `GroundToAirHeatPump` shall have at least one inlet using the medium `Fluid-Air`.
  message: s223: A `GroundToAirHeatPump` shall have at least one inlet using the medium `Fluid-Air`.
  min count: 1
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Inlet Connection Point
    node:
      property:
        class: Air
        path: has Medium
property:
  comment: A `GroundToAirHeatPump` shall have at least one `BidirectionalConnectionPoint` using `Medium-ThermalContact`.
  class: Bidirectional Connection Point
  message: s223: A `GroundToAirHeatPump` shall have at least one `BidirectionalConnectionPoint` using `Medium-ThermalContact`.
  min count: 1
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Bidirectional Connection Point
    node:
      property:
        class: Thermal contact
        path: has Medium

HeatTransferRoleShape
type: NodeShape
rule: TripleRule
  comment: Infer the `hasRole` s223:Role-HeatTransfer relation for every instance of the listed targetClass values.
  object: Heat transfer role
  predicate: hasRole
  subject: this
target class: Air heat exchanger
target class: Chilled beam
target class: Coil
target class: Electric resistance element
target class: Hydronic heat exchanger
target class: Radiant heater
target class: Radiator

HeatingCoilShape
type: NodeShape
rule: TripleRule
  comment: Heating coils must always have the role `Role-Heating`
  object: Heating role
  predicate: hasRole
  subject: this
target class: Heating coil

Humidifier
type: Class
type: NodeShape
comment: A piece of equipment that adds moisture to a gas (e.g., air).
subclass of: Equipment

Humidistat
type: Class
type: NodeShape
comment: A piece of equipment that measures the relative humidity of the air and then uses this information to automatically adjust the amount of moisture in air.
subclass of: Equipment

Humidity sensor
type: Class
type: NodeShape
comment: A `Sensor` that `observes` a `QuantifiableObservableProperty` that represents a measure of relative or absolute humidity.
subclass of: Sensor
property:
  comment: A `HumiditySensor` shall always `observe` a `QuantifiableObservableProperty` that has a `QuantityKind` of either `RelativeHumidity` or `AbsoluteHumidity`.
  class: Quantifiable Observable Property
  message: s223: A `HumiditySensor` shall always `observe` a `QuantifiableObservableProperty` that has a `QuantityKind` of either `RelativeHumidity` or `AbsoluteHumidity`.
  node:
    property:
      or:
        has value: RelativeHumidity
      or:
        has value: AbsoluteHumidity
      path: hasQuantityKind
  path: observes

Ice maker
type: Class
type: NodeShape
comment: A piece of `Equipment` that makes ice.
subclass of: Equipment
property:
  comment: An `IceMaker` shall have at least one inlet using the medium `Constituent-Electricity`.
  message: s223: An `IceMaker` shall have at least one inlet using the medium `Constituent-Electricity`.
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Inlet Connection Point
    node:
      property:
        class: Electricity
        path: has Medium
property:
  comment: An `IceMaker` shall have at least one inlet using the medium `Fluid-Water`.
  message: s223: An `IceMaker` shall have at least one inlet using the medium `Fluid-Water`.
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Inlet Connection Point
    node:
      property:
        class: Water
        path: has Medium

Illuminance sensor
type: Class
type: NodeShape
comment: A `LightSensor` that `observes` a `QuantifiableObservableProperty` that represents an illuminance, defined as the areal density of the luminous flux incident at a point on a surface.
subclass of: Light sensor
property:
  comment: An `IlluminanceSensor` shall `observe` a `QuantifiableObservableProperty` that has a `QuantityKind` of `Illuminance`.
  message: s223: An `IlluminanceSensor` shall `observe` a `QuantifiableObservableProperty` that has a `QuantityKind` of `Illuminance`.
  path: observes
  qualified min count: 1
  qualified value shape:
    class: Property
    node:
      property:
        has value: Illuminance
        path: hasQuantityKind

JunctionCPShape
type: NodeShape
comment: A `Junction` shall have at least two `ConnectionPoint`s including (a) at least one inlet and one outlet, or (b) at least one bidirectional connection point.
message: s223: A `Junction` shall have at least two `ConnectionPoint`s including (a) at least one inlet and one outlet, or (b) at least one bidirectional connection point.
or:
  property:
    comment: A `Junction` shall have at least two `ConnectionPoint`s including (a) at least one inlet and one outlet, or (b) at least one bidirectional connection point.
    min count: 2
    path: has connection point
    qualified min count: 1
    qualified value shape:
      class: Outlet Connection Point
    qualified value shapes disjoint: true
  property:
    comment: A `Junction` shall have at least two `ConnectionPoint`s including (a) at least one inlet and one outlet, or (b) at least one bidirectional connection point.
    min count: 2
    path: has connection point
    qualified min count: 1
    qualified value shape:
      class: Inlet Connection Point
    qualified value shapes disjoint: true
or:
  property:
    comment: A `Junction` shall have at least two `ConnectionPoint`s including (a) at least one inlet and one outlet, or (b) at least one bidirectional connection point.
    min count: 2
    path: has connection point
    qualified min count: 1
    qualified value shape:
      class: Bidirectional Connection Point
    qualified value shapes disjoint: true
severity: Warning
target class: Junction

JunctionUsageWarning
type: NodeShape
comment: This `Junction` is not used to model significant details of a branching point in a connection, and may not be required.
sparql: SPARQLConstraint
  comment: This `Junction` is not used to model significant details of a branching point in a connection, and may not be required.
  message: s223: This `Junction` {$this} is not used to model significant details of a branching point in a connection, and may not be required.
  prefixes: all
  select: SELECT $this WHERE { $this s223:hasConnectionPoint? | s223:connectedThrough? ?junc_cp_conn . FILTER NOT EXISTS { # Connection has a relation that is not in the structural or required relationships { ?junc_cp_conn ?p ?o . } UNION {?o ?p ?junc_cp_conn . } FILTER (?p NOT IN ( s223:connected, s223:connectedTo, s223:connectedThrough, s223:hasConnectionPoint, s223:connectsAt, s223:isConnectionPointOf, s223:cnx, rdf:type, rdfs:label, rdfs:comment )) } . }
  severity: Warning
target class: Junction

Luminaire
type: Class
type: NodeShape
comment: A piece of `Equipment` consisting of a light source(s) and ballast(s) or driver(s) (when applicable), together with the parts designed to distribute the light, to position and protect the light source(s), and to connect the light source(s) to the power supply. Also known as a light fixture.
subclass of: Equipment
property:
  comment: A `Luminaire` shall have at least one outlet using the medium `EM-Light`.
  message: s223: A `Luminaire` shall have at least one outlet using the medium `EM-Light`.
  min count: 1
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Outlet Connection Point
    node:
      property:
        class: Light
        path: has Medium
property:
  comment: A `Luminaire` shall have at least one inlet using the medium `Constituent-Electricity`.
  message: s223: A `Luminaire` shall have at least one inlet using the medium `Constituent-Electricity`.
  min count: 1
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Inlet Connection Point
    node:
      property:
        class: Electricity
        path: has Medium

Microwave oven
type: Class
type: NodeShape
comment: An `ElectricOven` that cooks food by exposing it to electromagnetic radiation in the microwave frequency range.
subclass of: Electric oven
property:
  comment: A `MicrowaveOven` shall have at least one inlet using the medium `Constituent-Electricity`.
  message: s223: A `MicrowaveOven` shall have at least one inlet using the medium `Constituent-Electricity`.
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Inlet Connection Point
    node:
      property:
        class: Electricity
        path: has Medium

Monitor
type: Class
type: NodeShape
comment: An `ElectronicDisplay` designed primarily for the output of visual information supplied by a `Computer`.
subclass of: Electronic display

Motor
type: Class
type: NodeShape
comment: A piece of `Equipment` that converts electrical energy into mechanical energy.
subclass of: Equipment
property:
  comment: A `Motor` shall have at least one inlet using the medium `Constituent-Electricity`.
  message: s223: A `Motor` shall have at least one inlet using the medium `Constituent-Electricity`.
  min count: 1
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Inlet Connection Point
    node:
      property:
        class: Electricity
        path: has Medium

Occupant count sensor
type: Class
type: NodeShape
comment: An `OccupancySensor` that `observes` a `QuantifiableObservableProperty` that represents a population, usually of humans, within a sensing region.
subclass of: Occupancy sensor
property:
  comment: An `OccupantCountSensor` shall always observe a `QuantifiableObservableProperty` that has a `QuantityKind` of `Population` and a `Unit` of `NUM`.
  class: Quantifiable Observable Property
  message: s223: An `OccupantCountSensor` shall always observe a `QuantifiableObservableProperty` that has a `QuantityKind` of `Population` and a `Unit` of `NUM`.
  min count: 1
  node:
    property:
      has value: NUM
      max count: 1
      path: hasUnit
    property:
      has value: Population
      max count: 1
      path: hasQuantityKind
  path: observes

Occupant motion sensor
type: Class
type: NodeShape
comment: An `OccupancySensor` that `observes` a `ObservableProperty` that represents motion within a sensing region.
subclass of: Occupancy sensor
property:
  comment: An `OccupantMotionSensor` shall always observe an `EnumeratedObservableProperty` that has an `EnumerationKind` of `Occupancy-Motion`.
  class: Enumerated observable property
  message: s223: An `OccupantMotionSensor` shall always observe an `EnumeratedObservableProperty` that has an `EnumerationKind` of `Occupancy-Motion`.
  min count: 1
  node:
    property:
      class: Occupancy motion
      max count: 1
      path: has enumeration kind
  path: observes

Occupant presence sensor
type: Class
type: NodeShape
comment: An `OccupancySensor` that `observes` a `ObservableProperty` that represents presence within a sensing region.
subclass of: Occupancy sensor
property:
  comment: An `OccupantPresenceSensor` shall always observe an `EnumeratedObservableProperty` that has an `EnumerationKind` of `Occupancy-Presence`.
  class: Enumerated observable property
  message: s223: An `OccupantPresenceSensor` shall always observe an `EnumeratedObservableProperty` that has an `EnumerationKind` of `Occupancy-Presence`.
  min count: 1
  node:
    property:
      class: Occupancy presence
      max count: 1
      path: has enumeration kind
  path: observes

Outdoor physical space
type: Class
type: NodeShape
comment: A `PhysicalSpace` that is outside of the building where, for example, outdoor ambient properties might be measured, within a suitably defined `DomainSpace`.
subclass of: Physical Space

Particulate sensor
type: Class
type: NodeShape
comment: A `Sensor` that `observes` a `QuantifiableObservableProperty` that represents an amount of a particulate in a medium, in contrast to a `ConcentrationSensor` that `observes` a `QuantifiableObservableProperty` that represents a concentration of a miscible constituent in a medium (see {s223:ConcentrationSensor}). The 223 standard does not constrain the `Unit` or `QuantityKind` reported by a `ParticulateSensor`, but possible `QuantityKind`s include `Density` (mass per volume), `ParticleNumberDensity` (count per volume), and `DimensionlessRatio` (with units such as `PPM` or `PPB`). Some particulate sensors may claim to report a raw count of particles, for which a `QuantityKind` of `Count` could be used, but the required context for such a measurement should be provided in the sensor's documentation to specify if it in fact measures a count per volume (e.g. `ParticleNumberDensity`), time (e.g. `CountRate` or `ParticleCurrent`), or some other combination. Explicitly declaring the `QuantityKind` of a sensor's output is preferable to relying on implicit assumptions.
subclass of: Sensor
property:
  comment: If the relation `ofSubstance` is present it shall associate the `ParticulateSensor` with a `Substance-Particulate`.
  class: Particulate
  message: s223: If the relation `ofSubstance` is present it shall associate the `ParticulateSensor` with a `Substance-Particulate`.
  path: of substance

Personal computer
type: Class
type: NodeShape
comment: A `Computer` designed primarily used by a single person.
subclass of: Computer
property:
  comment: A `PersonalComputer` shall have at least one inlet using the medium `Constituent-Electricity`.
  message: s223: A `PersonalComputer` shall have at least one inlet using the medium `Constituent-Electricity`.
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Inlet Connection Point
    node:
      property:
        class: Electricity
        path: has Medium

Photovoltaic module
type: Class
type: NodeShape
comment: A piece of equipment that converts sunlight into electricity.
subclass of: Equipment
property:
  comment: A `PhotovoltaicModule` shall have at least one inlet using the medium `EM-Light`.
  message: s223: A `PhotovoltaicModule` shall have at least one inlet using the medium `EM-Light`.
  min count: 1
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Inlet Connection Point
    node:
      property:
        class: Light
        path: has Medium
property:
  comment: A `PhotovoltaicModule` shall have at least one outlet using the medium `Constituent-Electricity`.
  message: s223: A `PhotovoltaicModule` shall have at least one outlet using the medium `Constituent-Electricity`.
  min count: 1
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Outlet Connection Point
    node:
      property:
        class: Electricity
        path: has Medium

Pipe
type: Class
type: NodeShape
comment: A `Connection` that is used primarily to transport liquids and gases such as water, sewage, natural gas, and compressed air.
subclass of: Connection

Power over ethernet switch
type: Class
type: NodeShape
comment: A piece of `Equipment` that connects and is capable of powering electrical equipment, such as `Computers` and Wi-Fi access points, to an Ethernet network so they can communicate with each other and, optionally, to the Internet.
subclass of: Equipment
property:
  comment: A `PowerOverEthernetSwitch` shall have at least one `BidirectionalConnectionPoint` using the medium `PowerAndSignal-PoE`.
  message: s223: A `PowerOverEthernetSwitch` shall have at least one `BidirectionalConnectionPoint` using the medium `PowerAndSignal-PoE`.
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Bidirectional Connection Point
    node:
      property:
        class: Power over Ethernet
        path: has Medium
property:
  comment: A `PowerOverEthernetSwitch` shall have at least one inlet using the medium `Constituent-Electricity`.
  message: s223: A `PowerOverEthernetSwitch` shall have at least one inlet using the medium `Constituent-Electricity`.
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Inlet Connection Point
    node:
      property:
        class: Electricity
        path: has Medium

Pump
type: Class
type: NodeShape
comment: A piece of `Equipment` that imparts energy to a fluid, drawing a fluid into itself through an inlet port, and forcing the fluid out through an outlet port.
subclass of: Equipment
property:
  comment: The non-electrical `ConnectionPoint`s of a `Pump` must have compatible Media.
  path: has connection point
  sparql: SPARQLConstraint
    comment: The non-electrical `ConnectionPoint`s of a `Pump` must have compatible Media.
    message: s223: {?cpa} and {?cpb} on the `Pump` {$this} have incompatible Media {$mediuma} and {$mediumb}.
    prefixes: all
    select: SELECT $this ?cpa ?cpb ?mediuma ?mediumb WHERE { $this s223:hasConnectionPoint ?cpa . $this s223:hasConnectionPoint ?cpb . FILTER (?cpa != ?cpb) . ?cpa s223:hasMedium ?mediuma . FILTER (NOT EXISTS {?mediuma a/rdfs:subClassOf* s223:Constituent-Electricity}) . ?cpb s223:hasMedium ?mediumb . FILTER (NOT EXISTS {?mediumb a/rdfs:subClassOf* s223:Constituent-Electricity}) . FILTER (?mediuma != ?mediumb) . FILTER (NOT EXISTS {?mediumb a/rdfs:subClassOf* ?mediuma}) . FILTER (NOT EXISTS {?mediuma a/rdfs:subClassOf* ?mediumb}) . }
property:
  comment: A `Pump` shall have at least one inlet using the medium `Fluid-Water`, `Fluid-Oil` or `Fluid-Refrigerant`.
  message: s223: A `Pump` shall have at least one inlet using the medium `Fluid-Water`, `Fluid-Oil` or `Fluid-Refrigerant`.
  min count: 1
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Inlet Connection Point
    node:
      comment: A `Pump` shall have at least one inlet using the medium `Fluid-Water`, `Fluid-Oil` or `Fluid-Refrigerant`.
      message: s223: A `Pump` shall have at least one inlet using the medium `Fluid-Water`, `Fluid-Oil` or `Fluid-Refrigerant`.
      severity: Warning
property:
  comment: A `Pump` shall have at least one outlet using the medium `Fluid-Water`, `Fluid-Oil` or `Fluid-Refrigerant`.
  message: s223: A `Pump` shall have at least one outlet using the medium `Fluid-Water`, `Fluid-Oil` or `Fluid-Refrigerant`.
  min count: 1
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Outlet Connection Point
    node:
      comment: A `Pump` shall have at least one outlet using the medium `Fluid-Water`, `Fluid-Oil` or `Fluid-Refrigerant`.
      message: s223: A `Pump` shall have at least one outlet using the medium `Fluid-Water`, `Fluid-Oil` or `Fluid-Refrigerant`.
      severity: Warning

QuantifiablePropertyShape
type: NodeShape
rule: SPARQLRule
  comment: Infer the `hasAspect s223:Aspect-Setpoint` for properties referred to by `hasSetpoint`
  construct: CONSTRUCT {?y s223:hasAspect s223:Aspect-Setpoint} WHERE { ?prop s223:hasSetpoint ?y . FILTER NOT EXISTS {?y s223:hasAspect s223:Aspect-Setpoint} }
  prefixes: all
rule: SPARQLRule
  comment: Infer the `hasAspect s223:Aspect-Threshold` for properties referred to by `hasThreshold`
  construct: CONSTRUCT {?y s223:hasAspect s223:Aspect-Threshold} WHERE { ?prop s223:hasThreshold ?y . FILTER NOT EXISTS {?y s223:hasAspect s223:Aspect-Threshold} }
  prefixes: all
rule: SPARQLRule
  comment: Infer the `hasQuantityKind` relation if it is unambiguous.
  construct: CONSTRUCT { $this qudt:hasQuantityKind ?uniqueqk } WHERE { { SELECT $this (COUNT (DISTINCT (?qk)) AS ?count) WHERE { FILTER (NOT EXISTS {$this qudt:hasQuantityKind ?something}) . $this qudt:hasUnit/qudt:hasQuantityKind ?qk . } GROUP BY $this } FILTER (?count = 1) $this qudt:hasUnit/qudt:hasQuantityKind ?uniqueqk . }
  prefixes: all
rule: SPARQLRule
  comment: Infer the `hasAspect s223:Aspect-Deadband` for properties referred to by `hasDeadband`
  construct: CONSTRUCT {?y s223:hasAspect s223:Aspect-Deadband} WHERE { ?prop s223:hasDeadband ?y . FILTER NOT EXISTS {?y s223:hasAspect s223:Aspect-Deadband} }
  prefixes: all
target class: Quantifiable Property

RF outlet
type: Class
type: NodeShape
comment: A piece of `Equipment` that contains one or more receptacles for connecting electrical equipment to a radio frequency (RF) communication network, via, for example, a coaxial cable.
subclass of: Equipment
property:
  comment: A `RFOutlet` shall have exactly one inlet using the medium `RF-Signal`.
  message: s223: A `RFOutlet` shall have exactly one inlet using the medium `RF-Signal`.
  min count: 1
  path: has connection point
  qualified max count: 1
  qualified min count: 1
  qualified value shape:
    class: Inlet Connection Point
    node:
      property:
        class: RF-Signal
        path: has Medium
property:
  comment: A `RFOutlet` shall have at least one outlet using the medium `RF-Signal`.
  message: s223: A `RFOutlet` shall have at least one outlet using the medium `RF-Signal`.
  min count: 1
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Outlet Connection Point
    node:
      property:
        class: RF-Signal
        path: has Medium

Radiator
type: NodeShape
comment: A `Radiator` shall have at least one inlet using the medium Electricity or inlet and outlet of Water.
message: s223: A `Radiator` shall have at least one inlet using the medium Electricity or inlet and outlet of Water.
severity: Warning
target class: Radiator
xone:
  property:
    comment: A `Radiator` shall have at least one inlet using the medium Electricity or inlet and outlet of Water.
    min count: 1
    path: has connection point
    qualified min count: 1
    qualified value shape:
      class: Inlet Connection Point
xone:
  property:
    comment: A `Radiator` shall have at least one inlet using the medium Electricity or Water.
    min count: 1
    path: has connection point
    qualified min count: 1
    qualified value shape:
      class: Inlet Connection Point
  property:
    comment: A `Radiator` shall have at least one outlet using the medium Water.
    min count: 1
    path: has connection point
    qualified min count: 1
    qualified value shape:
      class: Outlet Connection Point

Refrigerator
type: Class
type: NodeShape
comment: A piece of `Equipment` that maintains an internal temperature below the surrounding ambient temperature but above the freezing point of water.
subclass of: Equipment
property:
  comment: A `Refrigerator` shall have at least one inlet using the medium `Constituent-Electricity`.
  message: s223: A `Refrigerator` shall have at least one inlet using the medium `Constituent-Electricity`.
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Inlet Connection Point
    node:
      property:
        class: Electricity
        path: has Medium

RelationWithInverseShape
type: NodeShape
rule: SPARQLRule
  comment: Declare the inverse triples for relations that have defined inverse relations
  construct: CONSTRUCT { ?o ?invP $this . } WHERE { $this ?p ?o . ?p s223:inverseOf ?invP . }
  prefixes: all
target class: Concept

RequiredCommentsShape1
type: NodeShape
severity: Info
sparql: SPARQLConstraint
  comment: Every SPARQLConstraint must have an rdfs:comment.
  message: s223: The SPARQLConstraint for path {?path} for Class {$this} must have an rdfs:comment.
  prefixes: all
  select: SELECT $this ?path WHERE { $this sh:property ?propshape . ?propshape sh:sparql ?sparqlconstraint . ?propshape sh:path ?path . FILTER NOT EXISTS {?sparqlconstraint rdfs:comment ?comment} . }
target class: Class

RequiredCommentsShape2
type: NodeShape
severity: Info
sparql: SPARQLConstraint
  comment: Every SHACL property shape must have an rdfs:comment.
  message: s223: The property shape with path {?path} for Class {$this} must have an rdfs:comment.
  prefixes: all
  select: SELECT $this ?path WHERE { $this sh:property ?propshape . ?propshape sh:path ?path . FILTER NOT EXISTS {?propshape rdfs:comment ?comment} . }
target class: Class

RequiredCommentsShape3
type: NodeShape
severity: Info
sparql: SPARQLConstraint
  comment: Every SPARQLRule must have an rdfs:comment.
  message: s223: Every SPARQLRule for Class {$this} must have an rdfs:comment.
  prefixes: all
  select: SELECT $this WHERE { $this sh:rule ?rule . ?rule a sh:SPARQLRule . FILTER NOT EXISTS {?rule rdfs:comment ?comment} . }
target class: Class

RequiredCommentsShape4
type: NodeShape
severity: Info
sparql: SPARQLConstraint
  comment: Every TripleRule must have an rdfs:comment.
  message: s223: The TripleRule inferring {?pred} for Class {$this} must have an rdfs:comment.
  prefixes: all
  select: SELECT $this ?pred WHERE { $this sh:rule ?rule . ?rule a sh:TripleRule . ?rule sh:predicate ?pred . FILTER NOT EXISTS {?rule rdfs:comment ?comment} . }
target class: Class

RequiredCommentsShape5
type: NodeShape
severity: Info
sparql: SPARQLConstraint
  comment: Every class of the 223 standard must have an rdfs:comment.
  message: s223: Class {$this} must have an rdfs:comment.
  prefixes: all
  select: SELECT $this WHERE { FILTER NOT EXISTS {$this rdfs:comment ?comment} . }
target class: Class

RequiredConceptShape
type: NodeShape
severity: Info
sparql: SPARQLConstraint
  comment: Every class of the 223 standard must be a direct or indirect subclass of s223:Concept.
  message: s223: Class {$this} must be within the rdfs:subClassOf hierarchy under s223:Concept.
  prefixes: all
  select: SELECT $this WHERE { FILTER NOT EXISTS {$this rdfs:subClassOf* rdf:Property} . FILTER NOT EXISTS {$this rdfs:subClassOf* s223:Concept} . }
target class: Class

RequiredNodeShape
type: NodeShape
severity: Info
sparql: SPARQLConstraint
  comment: Every class of the 223 standard must also be an instance of sh:NodeShape.
  message: s223: Class {$this} must be declared as an instance of sh:NodeShape.
  prefixes: all
  select: SELECT $this WHERE { FILTER NOT EXISTS {$this a sh:NodeShape} . }
target class: Class

Valve
type: NodeShape
comment: A `Sensor` shall be associated with exactly 1 of `Connectable`, `Connection`, or `ConnectionPoint` using the relation `hasObservationLocation`.
message: s223: A `Sensor` shall be associated with exactly 1 of `Connectable`, `Connection`, or `ConnectionPoint` using the relation `hasObservationLocation`.
target class: Sensor
xone:
  property:
    comment: A `Sensor` shall be associated with exactly 1 of `Connectable`, `Connection`, or `ConnectionPoint` using the relation `hasObservationLocation`.
    class: Connectable
    max count: 1
    min count: 1
    path: has observation location
xone:
  property:
    comment: A `Sensor` shall be associated with exactly 1 of `Connectable`, `Connection`, or `ConnectionPoint` using the relation `hasObservationLocation`.
    class: Connection
    max count: 1
    min count: 1
    path: has observation location
xone:
  property:
    comment: A `Sensor` shall be associated with exactly 1 of `Connectable`, `Connection`, or `ConnectionPoint` using the relation `hasObservationLocation`.
    class: ConnectionPoint
    max count: 1
    min count: 1
    path: has observation location

Valve
type: NodeShape
comment: A `Sensor` shall be associated with exactly 1 of `QuantifiableObservableProperty` or `EnumeratedObservableProperty` using the relation `observes`.
message: s223: A `Sensor` shall be associated with exactly 1 of `QuantifiableObservableProperty` or `EnumeratedObservableProperty` using the relation `observes`.
target class: Sensor
xone:
  property:
    comment: A `Sensor` shall be associated with exactly 1 of `QuantifiableObservableProperty` or `EnumeratedObservableProperty` using the relation `observes`.
    class: Quantifiable Observable Property
    max count: 1
    min count: 1
    path: observes
xone:
  property:
    comment: A `Sensor` shall be associated with exactly 1 of `QuantifiableObservableProperty` or `EnumeratedObservableProperty` using the relation `observes`.
    class: Enumerated observable property
    max count: 1
    min count: 1
    path: observes

Valve
type: NodeShape
comment: A `Sensor` can be associated with a maximum of one `Connectable`, `Connection`, or `ConnectionPoint` using the relation `hasReferenceLocation`.
message: s223: A `Sensor` can be associated with a maximum of one `Connectable`, `Connection`, or `ConnectionPoint` using the relation `hasReferenceLocation`.
or:
  property:
    comment: A `Sensor` can be associated with a maximum of one `Connectable`, `Connection`, or `ConnectionPoint` using the relation `hasReferenceLocation`.
    class: Connectable
    path: has reference location
or:
  property:
    comment: A `Sensor` can be associated with a maximum of one `Connectable`, `Connection`, or `ConnectionPoint` using the relation `hasReferenceLocation`.
    class: Connection
    path: has reference location
or:
  property:
    comment: A `Sensor` can be associated with a maximum of one `Connectable`, `Connection`, or `ConnectionPoint` using the relation `hasReferenceLocation`.
    class: ConnectionPoint
    path: has reference location
property:
  comment: A `Sensor` can be associated with a maximum of one `Connectable`, `Connection`, or `ConnectionPoint` using the relation `hasReferenceLocation`.
  max count: 1
  path: has reference location
target class: Sensor

SensorShape
type: NodeShape
rule: SPARQLRule
  comment: Infer the `hasObservationLocation` relation for a `Sensor` from the `Property` that it is observing, only if that `Property` is associated with a single entity.
  construct: CONSTRUCT {$this s223:hasObservationLocation ?something .} WHERE { { SELECT ?prop (COUNT (DISTINCT ?measurementLocation) AS ?count) $this WHERE { FILTER (NOT EXISTS {$this s223:hasObservationLocation ?anything}) . $this s223:observes ?prop . ?measurementLocation s223:hasProperty ?prop . } GROUP BY ?prop $this } FILTER (?count = 1) . ?something s223:hasProperty ?prop . {?something a/rdfs:subClassOf* s223:Connectable} UNION {?something a/rdfs:subClassOf* s223:Connection} UNION {?something a/rdfs:subClassOf* s223:ConnectionPoint} }
  name: InferredMeasurementLocation
  prefixes: all
target class: Sensor

Server computer
type: Class
type: NodeShape
comment: A `Computer` that is primarily used by multiple people, or for the execution of tasks not directly coupled to human interaction.
subclass of: Computer
property:
  comment: A `ServerComputer` shall have at least one inlet using the medium `Constituent-Electricity`.
  message: s223: A `ServerComputer` shall have at least one inlet using the medium `Constituent-Electricity`.
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Inlet Connection Point
    node:
      property:
        class: Electricity
        path: has Medium

Shower
type: Class
type: NodeShape
comment: A piece of `Equipment` for showering that receives as an input hot or cold water dispensed from one or two `Faucet`s, and is designed to hold a specific volume of water and release the held water through a `Drain`.
subclass of: Equipment
property:
  comment: A `Shower` shall have at least one outlet using the medium `Fluid-Water`.
  message: s223: A `Shower` shall have at least one outlet using the medium `Fluid-Water`.
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Outlet Connection Point
    node:
      property:
        class: Water
        path: has Medium
property:
  comment: A `Shower` shall have at least one inlet using the medium `Fluid-Water`.
  message: s223: A `Shower` shall have at least one inlet using the medium `Fluid-Water`.
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Inlet Connection Point
    node:
      property:
        class: Water
        path: has Medium

Single duct terminal.
type: Class
type: NodeShape
comment: A `TerminalUnit` unit that has one ducted air inlet and a damper for regulating the flow of air.
subclass of: Terminal unit
property:
  comment: A `SingleDuctTerminal` shall be associated with at least one `Damper` using the relation `contains`.
  message: s223: A `SingleDuctTerminal` shall be associated with at least one `Damper` using the relation `contains`.
  min count: 1
  path: contains
  qualified min count: 1
  qualified value shape:
    class: Damper

Sink
type: Class
type: NodeShape
comment: A piece of `Equipment` for manually washing hands, dishes, or other items that receives as an input hot or cold water dispensed from one or two `Faucet`s, and is designed to hold a specific volume of water and release the held water through a `Drain`.
subclass of: Equipment
property:
  comment: A `Sink` shall have at least one inlet using the medium `Fluid-Water`.
  message: s223: A `Sink` shall have at least one inlet using the medium `Fluid-Water`.
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Inlet Connection Point
    node:
      property:
        class: Water
        path: has Medium
property:
  comment: A `Sink` shall have at least one outlet using the medium `Fluid-Water`.
  message: s223: A `Sink` shall have at least one outlet using the medium `Fluid-Water`.
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Outlet Connection Point
    node:
      property:
        class: Water
        path: has Medium

Solar thermal collector
type: Class
type: NodeShape
comment: A piece of `Equipment` that converts sunlight into thermal energy.
subclass of: Equipment
property:
  comment: A `SolarThermalCollector` shall have at least one inlet using the medium `EM-Light`.
  message: s223: A `SolarThermalCollector` shall have at least one inlet using the medium `EM-Light`.
  min count: 1
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Inlet Connection Point
    node:
      property:
        class: Light
        path: has Medium
property:
  comment: A `SolarThermalCollector` shall have at least one outlet using the medium `FLuid-Water`.
  message: s223: A `SolarThermalCollector` shall have at least one outlet using the medium `Fluid-Water`.
  min count: 1
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Outlet Connection Point
    node:
      property:
        class: Water
        path: has Medium

SymmetricRelationShape
type: NodeShape
rule: SPARQLRule
  comment: Declare the inverse triples for symmetric relations
  construct: CONSTRUCT { ?o ?p $this . } WHERE { $this ?p ?o . ?p a s223:SymmetricRelation . }
  prefixes: all
target class: Concept

SystemShape
type: NodeShape
rule: SPARQLRule
  comment: Infer the `hasBoundaryConnectionPoint` relation using `hasOptionalConnectionPoint`.
  construct: CONSTRUCT {$this s223:hasBoundaryConnectionPoint ?thing .} WHERE { $this s223:hasOptionalConnectionPoint ?thing . }
  name: InferredSystemToBoundaryConnectionPointFromOptional
  prefixes: all
target class: System

Television
type: Class
type: NodeShape
comment: An `ElectronicDisplay` that is designed primarily for the output of visual information supplied by a media broadcaster, and that typically has an integral tuner that is capable of selecting a single channel for display from the available input channel range.
subclass of: Electronic display

Temperature Sensor
type: Class
type: NodeShape
comment: A `Sensor` that `observes` a `QuantifiableObservableProperty` that represents a measure of temperature.
subclass of: Sensor
property:
  comment: A `TemperatureSensor` shall always observe a `QuantifiableObservableProperty` that has a `QuantityKind` of `Temperature`.
  message: s223: A `TemperatureSensor` shall always observe a `QuantifiableObservableProperty` that has a `QuantityKind` of `Temperature`.
  path: observes
  qualified min count: 1
  qualified value shape:
    class: Property
    node:
      property:
        has value: Temperature
        path: hasQuantityKind

Thermal energy storage unit
type: Class
type: NodeShape
comment: A device that stores thermal energy.
subclass of: Equipment
property:
  comment: A Thermal Energy Storage Unit shall have at least two connection points.
  class: ConnectionPoint
  message: s223: A Thermal Energy Storage Unit shall have at least two connection points.
  min count: 2
  path: has connection point

Thermostat
type: Class
type: NodeShape
comment: A piece of `Equipment` that maintains temperature at a fixed or adjustable setpoint.
subclass of: Equipment

Three way valve
type: Class
type: NodeShape
comment: A `Valve` that can divert a fluid in one of three directions.
subclass of: Valve
property:
  comment: A `ThreeWayValve` shall have at least three `ConnectionPoint`s using the relation `hasConnectionPoint`.
  message: s223: A `ThreeWayValve` shall have at least three `ConnectionPoint`s using the relation `hasConnectionPoint`.
  min count: 3
  path: has connection point

Turbine
type: Class
type: NodeShape
comment: A piece of `Equipment` that converts mechanical energy into electric energy.
subclass of: Equipment
property:
  comment: A `Turbine` shall have at least one outlet using the medium `Constituent-Electricity`.
  class: Outlet Connection Point
  message: s223: A `Turbine` shall have at least one outlet using the medium `Constituent-Electricity`.
  min count: 1
  node:
    property:
      class: Electricity
      path: has Medium
  path: has connection point
property:
  comment: A `Turbine` shall be associated with at least one `ConnectionPoint` using the relation `hasConnectionPoint`.
  message: s223: A `Turbine` shall be associated with at least one `ConnectionPoint` using the relation `hasConnectionPoint`.
  min count: 1
  path: has connection point

Two way valve
type: Class
type: NodeShape
comment: A `Valve` that can divert a fluid in one of two directions.
subclass of: Valve
property:
  comment: A `TwoWayValve` shall have at least one inlet.
  message: s223: A `TwoWayValve` shall have at least one inlet.
  min count: 1
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Inlet Connection Point
property:
  comment: A `TwoWayValve` shall have at least one outlet.
  message: s223: A `TwoWayValve` shall have at least one outlet.
  min count: 1
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Outlet Connection Point

USB outlet
type: Class
type: NodeShape
comment: A piece of `Equipment` that contains one or more receptacles for connecting electrical equipment to a USB communication network, typically via a USB cable.
subclass of: Equipment
property:
  comment: A `USBOutlet` shall have at least one outlet using the medium `Signal-USB`.
  message: s223: A `USBOutlet` shall have at least one outlet using the medium `Signal-USB`.
  min count: 1
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Outlet Connection Point
    node:
      property:
        class: USB
        path: has Medium
property:
  comment: A `USBOutlet` shall have exactly one inlet using the medium `Signal-USB`.
  message: s223: A `USBOutlet` shall have exactly one inlet using the medium `Signal-USB`.
  min count: 1
  path: has connection point
  qualified max count: 1
  qualified min count: 1
  qualified value shape:
    class: Inlet Connection Point
    node:
      property:
        class: USB
        path: has Medium

Valve
type: NodeShape
comment: A `Valve` shall have at least one inlet and one outlet or two bidirectional connection points.
message: s223: A `Valve` shall have at least one inlet and one outlet or two bidirectional connection points.
or:
  property:
    comment: A `Valve` shall have at least one inlet and one outlet or two bidirectional connection points.
    min count: 1
    path: has connection point
    qualified min count: 1
    qualified value shape:
      class: Outlet Connection Point
    qualified value shapes disjoint: true
  property:
    comment: A `Valve` shall have at least one inlet and one outlet or two bidirectional connection points.
    min count: 1
    path: has connection point
    qualified min count: 1
    qualified value shape:
      class: Inlet Connection Point
    qualified value shapes disjoint: true
or:
  property:
    comment: A `Valve` shall have at least one inlet and one outlet or two bidirectional connection points.
    min count: 2
    path: has connection point
    qualified min count: 2
    qualified value shape:
      class: Bidirectional Connection Point
    qualified value shapes disjoint: true
severity: Warning
target class: Valve

Variable frequency drive
type: Class
type: NodeShape
comment: A piece of `Equipment` that varies its output frequency to vary the rotating speed and torque of a motor, given a fixed input frequency. Used with fans or pumps to vary the flow in the system as a function of a maintained pressure.
subclass of: Equipment
property:
  comment: A `VariableFrequencyDrive` shall have at least one outlet using the medium `Constituent-Electricity`.
  message: s223: A `VariableFrequencyDrive` shall have at least one outlet using the medium `Constituent-Electricity`.
  min count: 1
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Outlet Connection Point
    node:
      property:
        class: Electricity
        path: has Medium
property:
  comment: A `VariableFrequencyDrive` shall have at least one inlet using the medium `Constituent-Electricity`.
  message: s223: A `VariableFrequencyDrive` shall have at least one inlet using the medium `Constituent-Electricity`.
  min count: 1
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Inlet Connection Point
    node:
      property:
        class: Electricity
        path: has Medium
  severity: Warning
property:
  comment: If the relation `connectedTo` is present it shall associate the `VariableFrequencyDrive` with a `Equipment`.
  class: Equipment
  message: s223: If the relation `connectedTo` is present it shall associate the `VariableFrequencyDrive` with a `Equipment`.
  path: connected to

Water outlet
type: Class
type: NodeShape
comment: A piece of `Equipment` that contains one or more pipe fittings for connecting plumbing equipment (e.g., `Faucet`) to a plumbing system.
subclass of: Equipment
property:
  comment: A `WaterOutlet` shall have exactly one inlet using the medium `Fluid-Water`.
  message: s223: A `WaterOutlet` shall have exactly one inlet using the medium `Fluid-Water`.
  min count: 1
  path: has connection point
  qualified max count: 1
  qualified min count: 1
  qualified value shape:
    class: Inlet Connection Point
    node:
      property:
        class: Water
        path: has Medium
property:
  comment: A `WaterOutlet` shall have at least one outlet using the medium `Fluid-Water`.
  message: s223: A `WaterOutlet` shall have at least one outlet using the medium `Fluid-Water`.
  min count: 1
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Outlet Connection Point
    node:
      property:
        class: Water
        path: has Medium

Water to air heat pump
type: Class
type: NodeShape
comment: A `HeatPump` that transfers thermal energy between air and a body of water.
subclass of: Heat pump
property:
  comment: A `WaterToAirHeatPump` shall have at least one outlet using the medium `Fluid-Air`.
  message: s223: A `WaterToAirHeatPump` shall have at least one outlet using the medium `Fluid-Air`.
  min count: 1
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Outlet Connection Point
    node:
      property:
        class: Air
        path: has Medium
property:
  comment: A `WaterToAirHeatPump` shall have at least one inlet using the medium `Fluid-Air`.
  message: s223: A `WaterToAirHeatPump` shall have at least one inlet using the medium `Fluid-Air`.
  min count: 1
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Inlet Connection Point
    node:
      property:
        class: Air
        path: has Medium
property:
  comment: A `WaterToAirHeatPump` shall have at least one outlet using the medium `Fluid-Water`
  message: s223: A `WaterToAirHeatPump` shall have at least one outlet using the medium `Fluid-Water`.
  min count: 1
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Outlet Connection Point
    node:
      property:
        class: Water
        path: has Medium
property:
  comment: A `WaterToAirHeatPump` shall have at least one inlet using the medium `Fluid-Water`.
  message: s223: A `WaterToAirHeatPump` shall have at least one inlet using the medium `Fluid-Water`.
  min count: 1
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Inlet Connection Point
    node:
      property:
        class: Water
        path: has Medium

Water to water heat pump
type: Class
type: NodeShape
comment: A `HeatPump` that transfers thermal energy between two flows of water.
subclass of: Heat pump
property:
  comment: A `WaterToWaterHeatPump` shall have at least two outlets using the medium `Fluid-Water`.
  message: s223: A `WaterToWaterHeatPump` shall have at least two outlets using the medium `Fluid-Water`.
  min count: 2
  path: has connection point
  qualified min count: 2
  qualified value shape:
    class: Outlet Connection Point
    node:
      property:
        class: Water
        path: has Medium
property:
  comment: A `WaterToWaterHeatPump` shall have at least two inlets using the medium `Fluid-Water`.
  message: s223: A `WaterToWaterHeatPump` shall have at least two inlets using the medium `Fluid-Water`.
  min count: 2
  path: has connection point
  qualified min count: 2
  qualified value shape:
    class: Inlet Connection Point
    node:
      property:
        class: Water
        path: has Medium

Window shade
type: Class
type: NodeShape
comment: A piece of `Equipment` that can be adjusted to allow, regulate, or stop the flow of light through a `Window`.
subclass of: Equipment

Wired ethernet outlet
type: Class
type: NodeShape
comment: A piece of `Equipment` that contains one or more receptacles for connecting electrical equipment to an wired Ethernet communication network, typically via a wired Ethernet cable.
subclass of: Equipment
property:
  comment: A `WiredEthernetOutlet` shall have at least one outlet using the medium `Signal-WiredEthernet`.
  message: s223: A `WiredEthernetOutlet` shall have at least one outlet using the medium `Signal-WiredEthernet`.
  min count: 1
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Outlet Connection Point
    node:
      property:
        class: Wired Ethernet
        path: has Medium
property:
  comment: A `WiredEthernetOutlet` shall have exactly one inlet using the medium `Signal-WiredEthernet`.
  message: s223: A `WiredEthernetOutlet` shall have exactly one inlet using the medium `Signal-WiredEthernet`.
  min count: 1
  path: has connection point
  qualified max count: 1
  qualified min count: 1
  qualified value shape:
    class: Inlet Connection Point
    node:
      property:
        class: Wired Ethernet
        path: has Medium

ZoneGroupShape
type: NodeShape
rule: SPARQLRule
  comment: Infer a `hasDomain` relation by checking any enclosed `Zone`s to determine the domain.
  construct: CONSTRUCT {$this s223:hasDomain ?domain .} WHERE { $this s223:hasZone/s223:hasDomain ?domain . }
  prefixes: all
target class: Zone group

ZoneShape
type: NodeShape
rule: SPARQLRule
  comment: Infer a `hasDomain` relation by checking any enclosing `ZoneGroup` to determine the domain.
  construct: CONSTRUCT {$this s223:hasDomain ?domain .} WHERE { $this ^s223:hasZone/s223:hasDomain ?domain . }
  prefixes: all
rule: SPARQLRule
  comment: Infer a `hasDomain` relation by checking any enclosed `DomainSpace`s to determine the domain.
  construct: CONSTRUCT {$this s223:hasDomain ?domain .} WHERE { $this s223:hasDomainSpace/s223:hasDomain ?domain . }
  prefixes: all
target class: Zone

ChilledWaterCoilAnnotation
type: NodeShape
rule: TripleRule
  comment: If an instance of s223:CoolingCoil matches the constraints defined by g36:ChilledWaterCoil, it will be declared as an instance of that class.
  condition: ChilledWaterCoil
  object: ChilledWaterCoil
  predicate: type
  subject: this
target class: Cooling coil

ChilledWaterValveAnnotation
type: NodeShape
rule: TripleRule
  comment: If an instance of s223:Valve matches the constraints defined by g36:ChilledWaterValve, it will be declared as an instance of that class.
  condition: Chilled Water Valve
  condition: Chilled Water Valve Or Shape 1
  object: Chilled Water Valve
  predicate: type
  subject: this
target class: Valve

DamperAnnotation
type: NodeShape
rule: TripleRule
  comment: If an instance of s223:Damper matches the constraints defined by g36:Damper, it will be declared as an instance of that class.
  condition: Damper
  condition: Damper Or Shape 1
  object: Damper
  predicate: type
  subject: this
target class: Damper

ElectricHeatingCoilAnnotation
type: NodeShape
rule: TripleRule
  comment: If an instance of s223:ElectricResistanceElement matches the constraints defined by g36:ElectricHeatingCoil, it will be declared as an instance of that class.
  condition: Electric Heating Coil
  object: Electric Heating Coil
  predicate: type
  subject: this
target class: Electric resistance element

FanAnnotation
type: NodeShape
rule: TripleRule
  comment: If an instance of s223:Fan matches the constraints defined by g36:Fan, it will be declared as an instance of that class.
  condition: Fan
  object: Fan
  predicate: type
  subject: this
target class: Fan

FanWithVFDAnnotation
type: NodeShape
rule: TripleRule
  comment: If an instance of s223:Fan matches the constraints defined by g36:FanWithVFD, it will be declared as an instance of that class.
  condition: FanWithVFD
  object: FanWithVFD
  predicate: type
  subject: this
target class: Fan

HotWaterCoilAnnotation
type: NodeShape
rule: TripleRule
  comment: If an instance of s223:HeatingCoil matches the constraints defined by g36:HotWaterCoil, it will be declared as an instance of that class.
  condition: HotWater/ReheatCoil
  object: HotWater/ReheatCoil
  predicate: type
  subject: this
target class: Heating coil

HotWaterValveAnnotation
type: NodeShape
rule: TripleRule
  comment: If an instance of s223:Valve matches the constraints defined by g36:HotWaterValve, it will be declared as an instance of that class.
  condition: Hot Water Valve
  condition: Hot Water Valve Or Shape 1
  object: Hot Water Valve
  predicate: type
  subject: this
target class: Valve

TwoPositionDamperAnnotation
type: NodeShape
rule: TripleRule
  comment: If an instance of s223:Damper matches the constraints defined by g36:TwoPositionDamper, it will be declared as an instance of that class.
  condition: Two Position Damper
  object: Two Position Damper
  predicate: type
  subject: this
target class: Damper

ZoneAnnotation
type: NodeShape
rule: TripleRule
  comment: If an instance of `Zone` matches the constraints defined by g36:Zone, it will be declared as an instance of that class.
  condition: Zone
  object: Zone
  predicate: type
  subject: this
target class: Zone

ZoneGroupAnnotation
type: NodeShape
rule: TripleRule
  comment: If an instance of `ZoneGroup` matches the constraints defined by g36:ZoneGroup, it will be declared as an instance of that class.
  condition: Zone Group
  object: Zone Group
  predicate: type
  subject: this
target class: Zone group

core
version info: Created with TopBraid Composer

settings
comment: This file can be used to control which extensions are to be loaded with the 223 ontology by importing the appropriate graph(s). Options include: For validation of the schema, model, or data - http://data.ashrae.org/standard223/1.0/validation/schema (or model or data). For inferred relations - http://data.ashrae.org/standard223/1.0/inference/model-rules (and/or schema-rules, data-rules). For G36 extensions - http://data.ashrae.org/standard223/1.0/extensions/g36/core (and/or vav-terminal-unit, multiple-zone-vav-air-handling-unit, etc.).
version info: Created with TopBraid Composer

data-rules
version info: Created with TopBraid Composer

model-rules
version info: Created with TopBraid Composer

owl-subset
version info: Created with TopBraid Composer

core
version info: Created with TopBraid Composer

equipment
version info: Created with TopBraid Composer

data
version info: Created with TopBraid Composer

model
version info: Created with TopBraid Composer

schema
version info: Created with TopBraid Composer

enumeration
version info: Created with TopBraid Composer

Device Identifier
type: Property
comment: The Object_Identifier property of the device object within the BACnet device. See ASHRAE 135-2020 Clause 12.11.1.

Device Name
type: Property
comment: The name of the BACnet device being referenced, more formally the Object_Name property of the device object within the BACnet device. See ASHRAE 135-2020 Clause 12.11.2.

object-identifier
type: Property
comment: The Object_Identifier property of the object being referenced. For example, for the object identifier of an Analog Value Object, see ASHRAE 135-2020 Clause 12.4.1.

Object Name
type: Property
comment: The Object_Name property of the object being referenced. For example, for the object name of an Analog Value Object, see ASHRAE 135-2020 Clause 12.4.2.

Priority for Writing
type: Property
comment: This parameter shall be an integer in the range 1..16, which indicates the priority assigned to the WriteProperty service. If an attempt is made to write to a commandable property without specifying the bacnet:priority-for-writing, a default priority of 16 (the lowest priority) shall be assumed. If an attempt is made to write to a property that is not commandable with a specified priority, the priority shall be ignored. See ASHRAE 135-2020 Clause 15.9.1.1.5.

Property Array Index
type: Property
comment: If the property identified is of datatype array, this optional property of type Unsigned shall indicate the array index of the element of the `Property` referenced by the ReadProperty service or the Read Access Specification of the ReadPropertyMultiple service. If the bacnet:property-array-index is omitted, this shall mean that the entire array shall be referenced. See ASHRAE 135-2020 Clause 15.5.1.1.3 and Clause 15.7.1.1.1.

Property Identifier
type: Property
comment: The Object_Identifier `Property` of the object being referenced. For example, for the object identifier of an Analog Value Object, see ASHRAE 135-2020 Clause 12.4.1.

Negative 12VDC electricity
type: Class
type: NodeShape
hasVoltage: DCNegativeVoltage-12.0V
hasVoltage: DCVoltage-DCZeroVoltage
comment: 12V-Neg
subclass of: DC-12V electricity

Positive 12VDC electricity
type: Class
type: NodeShape
hasVoltage: DCPositiveVoltage-12.0V
hasVoltage: DCVoltage-DCZeroVoltage
comment: 12V-Pos
subclass of: DC-12V electricity

Negative 6VDC and Positive 6VDC electricity
type: Class
type: NodeShape
hasVoltage: DCNegativeVoltage-6.0V
hasVoltage: DCPositiveVoltage-6.0V
comment: 6V-Neg-6V-Pos
subclass of: DC-12V electricity

Negative 12VDC and Positive 12VDC electricity
type: Class
type: NodeShape
hasVoltage: DCNegativeVoltage-12.0V
hasVoltage: DCPositiveVoltage-12.0V
comment: 12V-Neg-12V-Pos
subclass of: DC-24V electricity

Negative 24VDC electricity
type: Class
type: NodeShape
hasVoltage: DCNegativeVoltage-24.0V
hasVoltage: DCVoltage-DCZeroVoltage
comment: 24V-Neg
subclass of: DC-24V electricity

Positive 24VDC electricity
type: Class
type: NodeShape
hasVoltage: DCPositiveVoltage-24.0V
hasVoltage: DCVoltage-DCZeroVoltage
comment: 24V-Pos
subclass of: DC-24V electricity

Negative 190VDC and Positive 190VDC electricity
type: Class
type: NodeShape
hasVoltage: DCNegativeVoltage-190.0V
hasVoltage: DCPositiveVoltage-190.0V
comment: 190V-Neg-190V-Pos
subclass of: DC-380V electricity

Negative 380VDC electricity
type: Class
type: NodeShape
hasVoltage: DCNegativeVoltage-380.0V
hasVoltage: DCVoltage-DCZeroVoltage
comment: 380V-Neg
subclass of: DC-380V electricity

Positive 380VDC electricity
type: Class
type: NodeShape
hasVoltage: DCPositiveVoltage-380.0V
hasVoltage: DCVoltage-DCZeroVoltage
comment: 380V-Pos
subclass of: DC-380V electricity

Negative 24VDC and Positive 24VDC electricity
type: Class
type: NodeShape
hasVoltage: DCNegativeVoltage-24.0V
hasVoltage: DCPositiveVoltage-24.0V
comment: 24V-Neg-24V-Pos
subclass of: DC-48V electricity

Negative 48VDC electricity
type: Class
type: NodeShape
hasVoltage: DCNegativeVoltage-48.0V
hasVoltage: DCVoltage-DCZeroVoltage
comment: 48V-Neg
subclass of: DC-48V electricity

Positive 48VDC electricity
type: Class
type: NodeShape
hasVoltage: DCPositiveVoltage-48.0V
hasVoltage: DCVoltage-DCZeroVoltage
comment: 48V-Pos
subclass of: DC-48V electricity

Negative 2.5VDC and Positive 2.5VDC electricity
type: Class
type: NodeShape
hasVoltage: DCNegativeVoltage-2.5V
hasVoltage: DCPositiveVoltage-2.5V
comment: 2.5V-Neg-2.5V-Pos
subclass of: DC-5V electricity

Negative 5VDC electricity
type: Class
type: NodeShape
hasVoltage: DCNegativeVoltage-5.0V
hasVoltage: DCVoltage-DCZeroVoltage
comment: 5V-Neg
subclass of: DC-5V electricity

Positive 5VDC electricity
type: Class
type: NodeShape
hasVoltage: DCPositiveVoltage-5.0V
hasVoltage: DCVoltage-DCZeroVoltage
comment: 5V-Pos
subclass of: DC-5V electricity

Negative 3VDC and Positive 3VDC electricity
type: Class
type: NodeShape
hasVoltage: DCNegativeVoltage-3.0V
hasVoltage: DCPositiveVoltage-3.0V
comment: 3V-Neg-3V-Pos
subclass of: DC-6V electricity

Negative 6VDC electricity
type: Class
type: NodeShape
hasVoltage: DCNegativeVoltage-6.0V
hasVoltage: DCVoltage-DCZeroVoltage
comment: 6V-Neg
subclass of: DC-6V electricity

Positive 6VDC electricity
type: Class
type: NodeShape
hasVoltage: DCPositiveVoltage-6.0V
hasVoltage: DCVoltage-DCZeroVoltage
comment: 6V-Pos
subclass of: DC-6V electricity

AC-10000VLL-1Ph-60Hz
type: Class
type: NodeShape
has frequency: 60 Hertz
has number of electrical phases: Single Phase AC Electricity
hasVoltage: 10000V Line-Line Voltage
comment: `AC-10000VLL-1Ph-60Hz`
subclass of: AC electricity

AC-10000VLL-3Ph-60Hz
type: Class
type: NodeShape
has frequency: 60 Hertz
has number of electrical phases: Three Phase AC Electricity
hasVoltage: 10000V Line-Line Voltage
comment: `AC-10000VLL-3Ph-60Hz`
subclass of: AC electricity

AC-10000VLL-5770VLN-1Ph-60Hz
type: Class
type: NodeShape
has frequency: 60 Hertz
has number of electrical phases: Single Phase AC Electricity
hasVoltage: 10000V Line-Line Voltage
hasVoltage: 5770V Line-Neutral Voltage
comment: `AC-10000VLL-5770VLN-1Ph-60Hz`
subclass of: AC electricity

AC-10000VLL-5770VLN-3Ph-60Hz
type: Class
type: NodeShape
has frequency: 60 Hertz
has number of electrical phases: Three Phase AC Electricity
hasVoltage: 10000V Line-Line Voltage
hasVoltage: 5770V Line-Neutral Voltage
comment: `AC-10000VLL-5770VLN-3Ph-60Hz`
subclass of: AC electricity

AC-110VLN-1Ph-50Hz
type: Class
type: NodeShape
has frequency: 50 Hertz
has number of electrical phases: Single Phase AC Electricity
hasVoltage: 110V Line-Neutral Voltage
comment: `AC-110VLN-1Ph-50Hz`
subclass of: AC electricity

AC-120VLN-1Ph-60Hz
type: Class
type: NodeShape
has frequency: 60 Hertz
has number of electrical phases: Single Phase AC Electricity
hasVoltage: 120V Line-Neutral Voltage
comment: `AC-120VLN-1Ph-60Hz`
subclass of: AC electricity

AC-127VLN-1Ph-50Hz
type: Class
type: NodeShape
has frequency: 50 Hertz
has number of electrical phases: Single Phase AC Electricity
hasVoltage: 127V Line-Neutral Voltage
comment: `AC-127VLN-1Ph-50Hz`
subclass of: AC electricity

AC-139VLN-1Ph-50Hz
type: Class
type: NodeShape
has frequency: 50 Hertz
has number of electrical phases: Single Phase AC Electricity
hasVoltage: 139V Line-Neutral Voltage
comment: `AC-139VLN-1Ph-50Hz`
subclass of: AC electricity

AC-1730VLN-1Ph-60Hz
type: Class
type: NodeShape
has frequency: 60 Hertz
has number of electrical phases: Single Phase AC Electricity
hasVoltage: 1730V Line-Neutral Voltage
comment: `AC-1730VLN-1Ph-60Hz`
subclass of: AC electricity

AC-1900VLN-1Ph-60Hz
type: Class
type: NodeShape
has frequency: 60 Hertz
has number of electrical phases: Single Phase AC Electricity
hasVoltage: 1900V Line-Neutral Voltage
comment: `AC-1900VLN-1Ph-60Hz`
subclass of: AC electricity

AC-190VLL-110VLN-1Ph-50Hz
type: Class
type: NodeShape
has frequency: 50 Hertz
has number of electrical phases: Single Phase AC Electricity
hasVoltage: 190V Line-Line Voltage
hasVoltage: 110V Line-Neutral Voltage
comment: `AC-190VLL-110VLN-1Ph-50Hz`
subclass of: AC electricity

AC-190VLL-110VLN-3Ph-50Hz
type: Class
type: NodeShape
has frequency: 50 Hertz
has number of electrical phases: Three Phase AC Electricity
hasVoltage: 190V Line-Line Voltage
hasVoltage: 110V Line-Neutral Voltage
comment: `AC-190VLL-110VLN-3Ph-50Hz`
subclass of: AC electricity

AC-190VLL-1Ph-50Hz
type: Class
type: NodeShape
has frequency: 50 Hertz
has number of electrical phases: Single Phase AC Electricity
hasVoltage: 190V Line-Line Voltage
comment: `AC-190VLL-1Ph-50Hz`
subclass of: AC electricity

AC-190VLL-3Ph-50Hz
type: Class
type: NodeShape
has frequency: 50 Hertz
has number of electrical phases: Three Phase AC Electricity
hasVoltage: 190V Line-Line Voltage
comment: `AC-190VLL-3Ph-50Hz`
subclass of: AC electricity

AC-208VLL-120VLN-1Ph-60Hz
type: Class
type: NodeShape
has frequency: 60 Hertz
has number of electrical phases: Single Phase AC Electricity
hasVoltage: 208V Line-Line Voltage
hasVoltage: 120V Line-Neutral Voltage
comment: `AC-208VLL-120VLN-1Ph-60Hz`
subclass of: AC electricity

AC-208VLL-120VLN-3Ph-60Hz
type: Class
type: NodeShape
has frequency: 60 Hertz
has number of electrical phases: Three Phase AC Electricity
hasVoltage: 208V Line-Line Voltage
hasVoltage: 120V Line-Neutral Voltage
comment: `AC-208VLL-120VLN-3Ph-60Hz`
subclass of: AC electricity

AC-208VLL-1Ph-60Hz
type: Class
type: NodeShape
has frequency: 60 Hertz
has number of electrical phases: Single Phase AC Electricity
hasVoltage: 208V Line-Line Voltage
comment: `AC-208VLL-1Ph-60Hz`
subclass of: AC electricity

AC-208VLL-3Ph-60Hz
type: Class
type: NodeShape
has frequency: 60 Hertz
has number of electrical phases: Three Phase AC Electricity
hasVoltage: 208V Line-Line Voltage
comment: `AC-208VLL-3Ph-60Hz`
subclass of: AC electricity

AC-208VLN-1Ph-60Hz
type: Class
type: NodeShape
has frequency: 60 Hertz
has number of electrical phases: Single Phase AC Electricity
hasVoltage: 208V Line-Neutral Voltage
comment: `AC-208VLN-1Ph-60Hz`
subclass of: AC electricity

AC-219VLN-1Ph-60Hz
type: Class
type: NodeShape
has frequency: 60 Hertz
has number of electrical phases: Single Phase AC Electricity
hasVoltage: 219V Line-Neutral Voltage
comment: `AC-219VLN-1Ph-60Hz`
subclass of: AC electricity

AC-220VLL-127VLN-1Ph-50Hz
type: Class
type: NodeShape
has frequency: 50 Hertz
has number of electrical phases: Single Phase AC Electricity
hasVoltage: 220V Line-Line Voltage
hasVoltage: 127V Line-Neutral Voltage
comment: `AC-220VLL-127VLN-1Ph-50Hz`
subclass of: AC electricity

AC-220VLL-127VLN-3Ph-50Hz
type: Class
type: NodeShape
has frequency: 50 Hertz
has number of electrical phases: Three Phase AC Electricity
hasVoltage: 220V Line-Line Voltage
hasVoltage: 127V Line-Neutral Voltage
comment: `AC-220VLL-127VLN-3Ph-50Hz`
subclass of: AC electricity

AC-220VLL-1Ph-50Hz
type: Class
type: NodeShape
has frequency: 50 Hertz
has number of electrical phases: Single Phase AC Electricity
hasVoltage: 220V Line-Line Voltage
comment: `AC-220VLL-1Ph-50Hz`
subclass of: AC electricity

AC-220VLL-3Ph-50Hz
type: Class
type: NodeShape
has frequency: 50 Hertz
has number of electrical phases: Three Phase AC Electricity
hasVoltage: 220V Line-Line Voltage
comment: `AC-220VLL-3Ph-50Hz`
subclass of: AC electricity

AC-230VLN-1Ph-50Hz
type: Class
type: NodeShape
has frequency: 50 Hertz
has number of electrical phases: Single Phase AC Electricity
hasVoltage: 230V Line-Neutral Voltage
comment: `AC-230VLN-1Ph-50Hz`
subclass of: AC electricity

AC-2400VLN-1Ph-60Hz
type: Class
type: NodeShape
has frequency: 60 Hertz
has number of electrical phases: Single Phase AC Electricity
hasVoltage: 2400V Line-Neutral Voltage
comment: `AC-2400VLN-1Ph-60Hz`
subclass of: AC electricity

AC-240VLL-120VLN-1Ph-60Hz
type: Class
type: NodeShape
has frequency: 60 Hertz
has number of electrical phases: Single Phase AC Electricity
hasVoltage: 240V Line-Line Voltage
hasVoltage: 120V Line-Neutral Voltage
comment: `AC-240VLL-120VLN-1Ph-60Hz`
subclass of: AC electricity

AC-240VLL-139VLN-1Ph-50Hz
type: Class
type: NodeShape
has frequency: 50 Hertz
has number of electrical phases: Single Phase AC Electricity
hasVoltage: 240V Line-Line Voltage
hasVoltage: 139V Line-Neutral Voltage
comment: `AC-240VLL-139VLN-1Ph-50Hz`
subclass of: AC electricity

AC-240VLL-139VLN-3Ph-50Hz
type: Class
type: NodeShape
has frequency: 50 Hertz
has number of electrical phases: Three Phase AC Electricity
hasVoltage: 240V Line-Line Voltage
hasVoltage: 139V Line-Neutral Voltage
comment: `AC-240VLL-139VLN-3Ph-50Hz`
subclass of: AC electricity

AC-240VLL-1Ph-50Hz
type: Class
type: NodeShape
has frequency: 50 Hertz
has number of electrical phases: Single Phase AC Electricity
hasVoltage: 240V Line-Line Voltage
comment: `AC-240VLL-1Ph-50Hz`
subclass of: AC electricity

AC-240VLL-1Ph-60Hz
type: Class
type: NodeShape
has frequency: 60 Hertz
has number of electrical phases: Single Phase AC Electricity
hasVoltage: 240V Line-Line Voltage
comment: `AC-240VLL-1Ph-60Hz`
subclass of: AC electricity

AC-240VLL-208VLN-120VLN-1Ph-60Hz
type: Class
type: NodeShape
has frequency: 60 Hertz
has number of electrical phases: Single Phase AC Electricity
hasVoltage: 240V Line-Line Voltage
hasVoltage: 120V Line-Neutral Voltage
hasVoltage: 208V Line-Neutral Voltage
comment: `AC-240VLL-208VLN-120VLN-1Ph-60Hz`
subclass of: AC electricity

AC-240VLL-208VLN-120VLN-3Ph-60Hz
type: Class
type: NodeShape
has frequency: 60 Hertz
has number of electrical phases: Three Phase AC Electricity
hasVoltage: 240V Line-Line Voltage
hasVoltage: 120V Line-Neutral Voltage
hasVoltage: 208V Line-Neutral Voltage
comment: `AC-240VLL-208VLN-120VLN-3Ph-60Hz`
subclass of: AC electricity

AC-240VLL-3Ph-50Hz
type: Class
type: NodeShape
has frequency: 50 Hertz
has number of electrical phases: Three Phase AC Electricity
hasVoltage: 240V Line-Line Voltage
comment: `AC-240VLL-3Ph-50Hz`
subclass of: AC electricity

AC-240VLL-3Ph-60Hz
type: Class
type: NodeShape
has frequency: 60 Hertz
has number of electrical phases: Three Phase AC Electricity
hasVoltage: 240V Line-Line Voltage
comment: `AC-240VLL-3Ph-60Hz`
subclass of: AC electricity

AC-240VLN-1Ph-50Hz
type: Class
type: NodeShape
has frequency: 50 Hertz
has number of electrical phases: Single Phase AC Electricity
hasVoltage: 240V Line-Neutral Voltage
comment: `AC-240VLN-1Ph-50Hz`
subclass of: AC electricity

AC-24VLN-1Ph-50Hz
type: Class
type: NodeShape
has frequency: 50 Hertz
has number of electrical phases: Single Phase AC Electricity
hasVoltage: 24V Line-Neutral Voltage
comment: `AC-24VLN-1Ph-50Hz`
subclass of: AC electricity

AC-24VLN-1Ph-60Hz
type: Class
type: NodeShape
has frequency: 60 Hertz
has number of electrical phases: Single Phase AC Electricity
hasVoltage: 24V Line-Neutral Voltage
comment: `AC-24VLN-1Ph-60Hz`
subclass of: AC electricity

AC-277VLN-1Ph-60Hz
type: Class
type: NodeShape
has frequency: 60 Hertz
has number of electrical phases: Single Phase AC Electricity
hasVoltage: 277V Line-Neutral Voltage
comment: `AC-277VLN-1Ph-60Hz`
subclass of: AC electricity

AC-3000VLL-1730VLN-1Ph-60Hz
type: Class
type: NodeShape
has frequency: 60 Hertz
has number of electrical phases: Single Phase AC Electricity
hasVoltage: 3000V Line-Line Voltage
hasVoltage: 1730V Line-Neutral Voltage
comment: `AC-3000VLL-1730VLN-1Ph-60Hz`
subclass of: AC electricity

AC-3000VLL-1730VLN-3Ph-60Hz
type: Class
type: NodeShape
has frequency: 60 Hertz
has number of electrical phases: Three Phase AC Electricity
hasVoltage: 3000V Line-Line Voltage
hasVoltage: 1730V Line-Neutral Voltage
comment: `AC-3000VLL-1730VLN-3Ph-60Hz`
subclass of: AC electricity

AC-3000VLL-1Ph-60Hz
type: Class
type: NodeShape
has frequency: 60 Hertz
has number of electrical phases: Single Phase AC Electricity
hasVoltage: 3000V Line-Line Voltage
comment: `AC-3000VLL-1Ph-60Hz`
subclass of: AC electricity

AC-3000VLL-3Ph-60Hz
type: Class
type: NodeShape
has frequency: 60 Hertz
has number of electrical phases: Three Phase AC Electricity
hasVoltage: 3000V Line-Line Voltage
comment: `AC-3000VLL-3Ph-60Hz`
subclass of: AC electricity

AC-3300VLL-1900VLN-1Ph-60Hz
type: Class
type: NodeShape
has frequency: 60 Hertz
has number of electrical phases: Single Phase AC Electricity
hasVoltage: 3300V Line-Line Voltage
hasVoltage: 1900V Line-Neutral Voltage
comment: `AC-3300VLL-1900VLN-1Ph-60Hz`
subclass of: AC electricity

AC-3300VLL-1900VLN-3Ph-60Hz
type: Class
type: NodeShape
has frequency: 60 Hertz
has number of electrical phases: Three Phase AC Electricity
hasVoltage: 3300V Line-Line Voltage
hasVoltage: 1900V Line-Neutral Voltage
comment: `AC-3300VLL-1900VLN-3Ph-60Hz`
subclass of: AC electricity

AC-3300VLL-1Ph-60Hz
type: Class
type: NodeShape
has frequency: 60 Hertz
has number of electrical phases: Single Phase AC Electricity
hasVoltage: 3300V Line-Line Voltage
comment: `AC-3300VLL-1Ph-60Hz`
subclass of: AC electricity

AC-3300VLL-3Ph-60Hz
type: Class
type: NodeShape
has frequency: 60 Hertz
has number of electrical phases: Three Phase AC Electricity
hasVoltage: 3300V Line-Line Voltage
comment: `AC-3300VLL-3Ph-60Hz`
subclass of: AC electricity

AC-3460VLN-1Ph-60Hz
type: Class
type: NodeShape
has frequency: 60 Hertz
has number of electrical phases: Single Phase AC Electricity
hasVoltage: 3460V Line-Neutral Voltage
comment: `AC-3460VLN-1Ph-60Hz`
subclass of: AC electricity

AC-347VLN-1Ph-60Hz
type: Class
type: NodeShape
has frequency: 60 Hertz
has number of electrical phases: Single Phase AC Electricity
hasVoltage: 347V Line-Neutral Voltage
comment: `AC-347VLN-1Ph-60Hz`
subclass of: AC electricity

AC-380VLL-1Ph-60Hz
type: Class
type: NodeShape
has frequency: 60 Hertz
has number of electrical phases: Single Phase AC Electricity
hasVoltage: 380V Line-Line Voltage
comment: `AC-380VLL-1Ph-60Hz`
subclass of: AC electricity

AC-380VLL-219VLN-1Ph-60Hz
type: Class
type: NodeShape
has frequency: 60 Hertz
has number of electrical phases: Single Phase AC Electricity
hasVoltage: 380V Line-Line Voltage
hasVoltage: 219V Line-Neutral Voltage
comment: `AC-380VLL-219VLN-1Ph-60Hz`
subclass of: AC electricity

AC-380VLL-219VLN-3Ph-60Hz
type: Class
type: NodeShape
has frequency: 60 Hertz
has number of electrical phases: Three Phase AC Electricity
hasVoltage: 380V Line-Line Voltage
hasVoltage: 219V Line-Neutral Voltage
comment: `AC-380VLL-219VLN-3Ph-60Hz`
subclass of: AC electricity

AC-380VLL-3Ph-60Hz
type: Class
type: NodeShape
has frequency: 60 Hertz
has number of electrical phases: Three Phase AC Electricity
hasVoltage: 380V Line-Line Voltage
comment: `AC-380VLL-3Ph-60Hz`
subclass of: AC electricity

AC-3810VLN-1Ph-60Hz
type: Class
type: NodeShape
has frequency: 60 Hertz
has number of electrical phases: Single Phase AC Electricity
hasVoltage: 3810V Line-Neutral Voltage
comment: `AC-3810VLN-1Ph-60Hz`
subclass of: AC electricity

AC-400VLL-1Ph-50Hz
type: Class
type: NodeShape
has frequency: 50 Hertz
has number of electrical phases: Single Phase AC Electricity
hasVoltage: 400V Line-Line Voltage
comment: `AC-400VLL-1Ph-50Hz`
subclass of: AC electricity

AC-400VLL-230VLN-1Ph-50Hz
type: Class
type: NodeShape
has frequency: 50 Hertz
has number of electrical phases: Single Phase AC Electricity
hasVoltage: 400V Line-Line Voltage
hasVoltage: 230V Line-Neutral Voltage
comment: `AC-400VLL-230VLN-1Ph-50Hz`
subclass of: AC electricity

AC-400VLL-230VLN-3Ph-50Hz
type: Class
type: NodeShape
has frequency: 50 Hertz
has number of electrical phases: Three Phase AC Electricity
hasVoltage: 400V Line-Line Voltage
hasVoltage: 230V Line-Neutral Voltage
comment: `AC-400VLL-230VLN-3Ph-50Hz`
subclass of: AC electricity

AC-400VLL-3Ph-50Hz
type: Class
type: NodeShape
has frequency: 50 Hertz
has number of electrical phases: Three Phase AC Electricity
hasVoltage: 400V Line-Line Voltage
comment: `AC-400VLL-3Ph-50Hz`
subclass of: AC electricity

AC-415VLL-1Ph-50Hz
type: Class
type: NodeShape
has frequency: 50 Hertz
has number of electrical phases: Single Phase AC Electricity
hasVoltage: 415V Line-Line Voltage
comment: `AC-415VLL-1Ph-50Hz`
subclass of: AC electricity

AC-415VLL-240VLN-1Ph-50Hz
type: Class
type: NodeShape
has frequency: 50 Hertz
has number of electrical phases: Single Phase AC Electricity
hasVoltage: 415V Line-Line Voltage
hasVoltage: 240V Line-Neutral Voltage
comment: `AC-415VLL-240VLN-1Ph-50Hz`
subclass of: AC electricity

AC-415VLL-240VLN-3Ph-50Hz
type: Class
type: NodeShape
has frequency: 50 Hertz
has number of electrical phases: Three Phase AC Electricity
hasVoltage: 415V Line-Line Voltage
hasVoltage: 240V Line-Neutral Voltage
comment: `AC-415VLL-240VLN-3Ph-50Hz`
subclass of: AC electricity

AC-415VLL-3Ph-50Hz
type: Class
type: NodeShape
has frequency: 50 Hertz
has number of electrical phases: Three Phase AC Electricity
hasVoltage: 415V Line-Line Voltage
comment: `AC-415VLL-3Ph-50Hz`
subclass of: AC electricity

AC-4160VLL-1Ph-60Hz
type: Class
type: NodeShape
has frequency: 60 Hertz
has number of electrical phases: Single Phase AC Electricity
hasVoltage: 4160V Line-Line Voltage
comment: `AC-4160VLL-1Ph-60Hz`
subclass of: AC electricity

AC-4160VLL-2400VLN-1Ph-60Hz
type: Class
type: NodeShape
has frequency: 60 Hertz
has number of electrical phases: Single Phase AC Electricity
hasVoltage: 4160V Line-Line Voltage
hasVoltage: 2400V Line-Neutral Voltage
comment: `AC-4160VLL-2400VLN-1Ph-60Hz`
subclass of: AC electricity

AC-4160VLL-2400VLN-3Ph-60Hz
type: Class
type: NodeShape
has frequency: 60 Hertz
has number of electrical phases: Three Phase AC Electricity
hasVoltage: 4160V Line-Line Voltage
hasVoltage: 2400V Line-Neutral Voltage
comment: `AC-4160VLL-2400VLN-3Ph-60Hz`
subclass of: AC electricity

AC-4160VLL-3Ph-60Hz
type: Class
type: NodeShape
has frequency: 60 Hertz
has number of electrical phases: Three Phase AC Electricity
hasVoltage: 4160V Line-Line Voltage
comment: `AC-4160VLL-3Ph-60Hz`
subclass of: AC electricity

AC-480VLL-1Ph-60Hz
type: Class
type: NodeShape
has frequency: 60 Hertz
has number of electrical phases: Single Phase AC Electricity
hasVoltage: 480V Line-Line Voltage
comment: `AC-480VLL-1Ph-60Hz`
subclass of: AC electricity

AC-480VLL-277VLN-1Ph-60Hz
type: Class
type: NodeShape
has frequency: 60 Hertz
has number of electrical phases: Single Phase AC Electricity
hasVoltage: 480V Line-Line Voltage
hasVoltage: 277V Line-Neutral Voltage
comment: `AC-480VLL-277VLN-1Ph-60Hz`
subclass of: AC electricity

AC-480VLL-277VLN-3Ph-60Hz
type: Class
type: NodeShape
has frequency: 60 Hertz
has number of electrical phases: Three Phase AC Electricity
hasVoltage: 480V Line-Line Voltage
hasVoltage: 277V Line-Neutral Voltage
comment: `AC-480VLL-277VLN-3Ph-60Hz`
subclass of: AC electricity

AC-480VLL-3Ph-60Hz
type: Class
type: NodeShape
has frequency: 60 Hertz
has number of electrical phases: Three Phase AC Electricity
hasVoltage: 480V Line-Line Voltage
comment: `AC-480VLL-3Ph-60Hz`
subclass of: AC electricity

AC-5770VLN-1Ph-60Hz
type: Class
type: NodeShape
has frequency: 60 Hertz
has number of electrical phases: Single Phase AC Electricity
hasVoltage: 5770V Line-Neutral Voltage
comment: `AC-5770VLN-1Ph-60Hz`
subclass of: AC electricity

AC-6000VLL-1Ph-60Hz
type: Class
type: NodeShape
has frequency: 60 Hertz
has number of electrical phases: Single Phase AC Electricity
hasVoltage: 6000V Line-Line Voltage
comment: `AC-6000VLL-1Ph-60Hz`
subclass of: AC electricity

AC-6000VLL-3460VLN-1Ph-60Hz
type: Class
type: NodeShape
has frequency: 60 Hertz
has number of electrical phases: Single Phase AC Electricity
hasVoltage: 6000V Line-Line Voltage
hasVoltage: 3460V Line-Neutral Voltage
comment: `AC-6000VLL-3460VLN-1Ph-60Hz`
subclass of: AC electricity

AC-6000VLL-3460VLN-3Ph-60Hz
type: Class
type: NodeShape
has frequency: 60 Hertz
has number of electrical phases: Three Phase AC Electricity
hasVoltage: 6000V Line-Line Voltage
hasVoltage: 3460V Line-Neutral Voltage
comment: `AC-6000VLL-3460VLN-3Ph-60Hz`
subclass of: AC electricity

AC-6000VLL-3Ph-60Hz
type: Class
type: NodeShape
has frequency: 60 Hertz
has number of electrical phases: Three Phase AC Electricity
hasVoltage: 6000V Line-Line Voltage
comment: `AC-6000VLL-3Ph-60Hz`
subclass of: AC electricity

AC-600VLL-1Ph-60Hz
type: Class
type: NodeShape
has frequency: 60 Hertz
has number of electrical phases: Single Phase AC Electricity
hasVoltage: 600V Line-Line Voltage
comment: `AC-600VLL-1Ph-60Hz`
subclass of: AC electricity

AC-600VLL-347VLN-1Ph-60Hz
type: Class
type: NodeShape
has frequency: 60 Hertz
has number of electrical phases: Single Phase AC Electricity
hasVoltage: 600V Line-Line Voltage
hasVoltage: 347V Line-Neutral Voltage
comment: `AC-600VLL-347VLN-1Ph-60Hz`
subclass of: AC electricity

AC-600VLL-347VLN-3Ph-60Hz
type: Class
type: NodeShape
has frequency: 60 Hertz
has number of electrical phases: Three Phase AC Electricity
hasVoltage: 600V Line-Line Voltage
hasVoltage: 347V Line-Neutral Voltage
comment: `AC-600VLL-347VLN-3Ph-60Hz`
subclass of: AC electricity

AC-600VLL-3Ph-60Hz
type: Class
type: NodeShape
has frequency: 60 Hertz
has number of electrical phases: Three Phase AC Electricity
hasVoltage: 600V Line-Line Voltage
comment: `AC-600VLL-3Ph-60Hz`
subclass of: AC electricity

AC-6600VLL-1Ph-60Hz
type: Class
type: NodeShape
has frequency: 60 Hertz
has number of electrical phases: Single Phase AC Electricity
hasVoltage: 6600V Line-Line Voltage
comment: `AC-6600VLL-1Ph-60Hz`
subclass of: AC electricity

AC-6600VLL-3810VLN-1Ph-60Hz
type: Class
type: NodeShape
has frequency: 60 Hertz
has number of electrical phases: Single Phase AC Electricity
hasVoltage: 6600V Line-Line Voltage
hasVoltage: 3810V Line-Neutral Voltage
comment: `AC-6600VLL-3810VLN-1Ph-60Hz`
subclass of: AC electricity

AC-6600VLL-3810VLN-3Ph-60Hz
type: Class
type: NodeShape
has frequency: 60 Hertz
has number of electrical phases: Three Phase AC Electricity
hasVoltage: 6600V Line-Line Voltage
hasVoltage: 3810V Line-Neutral Voltage
comment: `AC-6600VLL-3810VLN-3Ph-60Hz`
subclass of: AC electricity

AC-6600VLL-3Ph-60Hz
type: Class
type: NodeShape
has frequency: 60 Hertz
has number of electrical phases: Three Phase AC Electricity
hasVoltage: 6600V Line-Line Voltage
comment: `AC-6600VLL-3Ph-60Hz`
subclass of: AC electricity

Air heat exchanger
type: Class
type: NodeShape
comment: A piece of `Equipment` that transfers heat from one air stream to another while keeping the two media separate.
subclass of: Equipment
property:
  comment: An `AirHeatExchanger` shall have at least two air outlets, each paired with an inlet.
  message: s223: An `AirHeatExchanger` shall have at least two air outlets, each paired with an inlet.
  path: has connection point
  qualified min count: 2
  qualified value shape:
    class: Outlet Connection Point
    node:
      property:
        class: Inlet Connection Point
        min count: 1
        path: paired connection point
      property:
        class: Air
        path: has Medium
property:
  comment: An `AirHeatExchanger` shall have no `BidirectionalConnectionPoint`s.
  message: s223: An `AirHeatExchanger` shall have no `BidirectionalConnectionPoint`s.
  path: has connection point
  qualified value shape:
    class: Bidirectional Connection Point
    message: s223: An `AirHeatExchanger` shall have no `BidirectionalConnectionPoint`s.
    qualified max count: 0
property:
  comment: An `AirHeatExchanger` shall have at least two air inlets, each paired with an outlet.
  message: s223: An `AirHeatExchanger` shall have at least two air inlets, each paired with an outlet.
  path: has connection point
  qualified min count: 2
  qualified value shape:
    class: Inlet Connection Point
    node:
      property:
        class: Air
        path: has Medium
      property:
        class: Outlet Connection Point
        min count: 1
        path: paired connection point

Alarm
type: Class
type: NodeShape
comment: The property value indicates whether an alarm condition is active or provides details about an active alarm.
subclass of: Aspect

Catalog Number
type: Class
type: NodeShape
comment: The property value is a name or other identifier of the product's manufacturer.
subclass of: Aspect

Deadband
type: Class
type: NodeShape
comment: The property value is a range around a setpoint where no control action is taken to avoid unnecessary corrections.
subclass of: Aspect

Delta
type: Class
type: NodeShape
comment: The property value is a differential value (e.g., pressure difference) instead of an absolute value.
subclass of: Aspect

Fault
type: Class
type: NodeShape
comment: The property value is a fault indicator or code that signals a malfunction or issue with the system or equipment.
subclass of: Aspect

High limit
type: Class
type: NodeShape
comment: The property value is an upper threshold used in a control or alarm detection algorithm.
subclass of: Aspect

Low limit
type: Class
type: NodeShape
comment: The property value is a lower threshold used in a control or alarm detection algorithm.
subclass of: Aspect

Manufacturer
type: Class
type: NodeShape
comment: The property value is a name or other identifier of the product’s manufacturer.
subclass of: Aspect

Maximum
type: Class
type: NodeShape
comment: The property value is a highest specified or observed value. (Examples: upper limit of the specified operating voltage range; maximum measured temperature.)
subclass of: Aspect

Minimum
type: Class
type: NodeShape
comment: The property value is a lowest specified or observed value. (Examples: lower limit of the specified operating voltage range; minimum measured temperature.)
subclass of: Aspect

Model
type: Class
type: NodeShape
comment: The property value is a model identifier of the product.
subclass of: Aspect

Nominal
type: Class
type: NodeShape
comment: The property value is a value that is expected or desired under normal operating conditions, but may not reflect the actual value at all times. (Example: nominal voltage.)
subclass of: Aspect

Operating mode
type: Class
type: NodeShape
comment: The property value is the current intended mode of operation, such as 'Automatic', 'On', or 'Off'.
subclass of: Aspect

Operating status
type: Class
type: NodeShape
comment: The property value is the current operational status of the system or equipment, such as 'Running,' 'Stopped,' or 'Maintenance Mode.'
subclass of: Aspect

Rated
type: Class
type: NodeShape
comment: The property value indicates a limit for continuous safe operation set by the manufacturer, but may not reflect the actual value at all times (Example: rated voltage)
subclass of: Aspect

Serial number
type: Class
type: NodeShape
comment: The property value is the serial number assigned by the manufacturer to the system or equipment.
subclass of: Aspect

Setpoint
type: Class
type: NodeShape
comment: The property value is a target value for a control algorithm.
subclass of: Aspect

Threshold
type: Class
type: NodeShape
comment: The property value is a threshold used in a control algorithm.
subclass of: Aspect

BACnetExternalReference
type: Class
type: NodeShape
comment: An `ExternalReference` that contains BACnet protocol parameter values necessary to associate a `Property` with a value.
subclass of: ExternalReference

Battery
type: Class
type: NodeShape
comment: A piece of `Equipment` that stores a defined amount of chemical energy that can be converted to electrical energy via a chemical process. This process, typically referred to as discharging, produces a specific electrical voltage and current.
subclass of: Equipment

Conductor
type: Class
type: NodeShape
comment: A `Connection` that represents one or more wires used to convey electricity, with the electricity conceptualized as flowing through a `Conductor` like water through a pipe. Each instance of `Conductor` applies to no more than one electrical circuit.
subclass of: Connection
property:
  comment: If the relation `hasElectricalPhase` is present it shall associate the `Conductor` with a single ElectricalPhaseIdentifier or ElectricalVoltagePhases value.
  max count: 1
  message: s223: If the relation `hasElectricalPhase` is present it shall associate the `Conductor` with a single ElectricalPhaseIdentifier or ElectricalVoltagePhases value.
  or:
    class: Electrical phase identifier
  or:
    class: Electrical voltage phase pairs
  path: has electrical phase
property:
  comment: Ensure the electrical phase is the same as all connected `ConnectionPoint`s
  path: has electrical phase
  sparql: SPARQLConstraint
    comment: Ensure the electrical phase is the same as all connected `ConnectionPoint`s
    message: s223: {$this} has an electrical phase of {?myphase} which is different from {?cpPhase} for `ConnectionPoint` {?cp}.
    prefixes: all
    select: SELECT $this ?myphase ?cp ?cpPhase WHERE { $this s223:hasElectricalPhase ?myphase . $this s223:connectsAt ?cp . ?cp s223:hasElectricalPhase ?cpPhase . FILTER (?myphase != ?cpPhase) . }
property:
  comment: A `Conductor` shall be associated with exactly one `Constituent-Electricity` using the relation `hasMedium`.
  class: Electricity
  max count: 1
  message: s223: A `Conductor` shall be associated with exactly one `Constituent-Electricity` using the relation `hasMedium`.
  min count: 1
  path: has Medium

Methane
type: Class
type: NodeShape
comment: `Constituent-CH4`
subclass of: Constituent

Carbon monoxide
type: Class
type: NodeShape
comment: `Constituent-CO`
subclass of: Constituent

Hydrogen sulfide
type: Class
type: NodeShape
comment: `Constituent-H2S`
subclass of: Constituent

Ozone
type: Class
type: NodeShape
comment: `Constituent-O3`
subclass of: Constituent

Radon
type: Class
type: NodeShape
comment: `Constituent-Radon`
subclass of: Constituent

Sulfur dioxide
type: Class
type: NodeShape
comment: `Constituent-SO2`
subclass of: Constituent

Volatile organic compounds
type: Class
type: NodeShape
comment: `Constituent-VolatileOrganicCompounds`
subclass of: Constituent

Conveyance systems domain
type: Class
type: NodeShape
comment: The domain that represents equipment that moves people or things within a building. Example `Domain-ConveyanceSystems` equipment include `Elevator` and `Escalator`.
subclass of: Domain

Electrical domain
type: Class
type: NodeShape
comment: The domain that represents equipment that distributes and monitors electrical power within a building. Example `Domain-Electrical` equipment include `ElectricBreaker`, `ElectricEnergyConverter`, and `ElectricityMeter`.
subclass of: Domain

Fire protection domain
type: Class
type: NodeShape
comment: The domain that represents equipment that detect and mitigate the spread of fire within a building. Example `Domain-FireProtection` equipment include smoke detectors, alarms, and emergency public address systems.
subclass of: Domain

Lighting domain
type: Class
type: NodeShape
comment: The domain that represents equipment that illuminate and manage the distribution of light within or outside of a building. Example `Domain-Lighting` equipment include `Luminaire`, `LightSensor`, and `WindowShade`.
subclass of: Domain

Networking domain
type: Class
type: NodeShape
comment: The domain that represents equipment that distributes and manages the flow of communication signals within a building. Example `Domain-Networking` equipment include `EthernetSwitch` and `PowerOverEthernetSwitch`
subclass of: Domain

Occupancy domain
type: Class
type: NodeShape
comment: The domain that represents equipment that determine whether and how many people are moving or present within a building. Example `Domain-Occupancy` equipment include `OccupantMotionSensor`, `OccupantPresenceSensor` and `OccupantCountSensor`
subclass of: Domain

Physical security domain
type: Class
type: NodeShape
comment: The domain that represents equipment that control and monitor physical access to spaces within or outside of a building. Example `Domain-PhysicalSecurity` equipment include cameras, keycard sensors, and biometric scanners.
subclass of: Domain

Plumbing domain
type: Class
type: NodeShape
comment: The domain that represents equipment that distributes, holds, removes and monitors water within or outside of a building. Example `Domain-Plumbing` equipment include `Faucet`, `Sink`, and `FlushToilet`.
subclass of: Domain

Refrigeration domain
type: Class
type: NodeShape
comment: The domain that represents equipment that maintain internal temperatures below the surrounding ambient temperature with a building. Example `Domain-Refrigeration` equipment include `Refrigerator` and `Freezer`
subclass of: Domain

Microwave
type: Class
type: NodeShape
comment: `EM-Microwave`
subclass of: Electromagnetic energy

Electric Current Sensor
type: Class
type: NodeShape
comment: A `Sensor` that `observes` a `QuantifiableObservableProperty` that represents a measure of electric current.
subclass of: Sensor
property:
  comment: An `ElectricCurrentSensor` shall always `observe` a `QuantifiableObservableProperty` that has a `QuantityKind` of `ElectricCurrent`.
  message: s223: An `ElectricCurrentSensor` shall always `observe` a `QuantifiableObservableProperty` that has a `QuantityKind` of `ElectricCurrent`.
  path: observes
  path: hasQuantityKind
  value: ElectricCurrent

Electric oven
type: Class
type: NodeShape
comment: A piece of `Equipment` with an enclosed chamber designed for baking, roasting, and other cooking methods that rely on circulating heat.
subclass of: Equipment
property:
  comment: A `ElectricOven` shall have at least one inlet using the medium `Constituent-Electricity`.
  message: s223: A `ElectricOven` shall have at least one inlet using the medium `Constituent-Electricity`.
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Inlet Connection Point
    node:
      property:
        class: Electricity
        path: has Medium

Electrical Phase Identifier A
type: Class
type: NodeShape
comment: The value of the associated `Property` identifies the electrical phase A of the `Connection`.
subclass of: Electrical phase identifier

Electrical Phase Identifier AB
type: Class
type: NodeShape
comment: The value of the associated `Property` identifies the electrical phase AB of the `Connection`.
subclass of: Electrical phase identifier

Electrical Phase Identifier ABC
type: Class
type: NodeShape
comment: The value of the associated `Property` identifies the electrical phase ABC of the `Connection`.
subclass of: Electrical phase identifier

Electrical Phase Identifier B
type: Class
type: NodeShape
comment: The value of the associated `Property` identifies the electrical phase B of the `Connection`.
subclass of: Electrical phase identifier

Electrical Phase Identifier BC
type: Class
type: NodeShape
comment: The value of the associated `Property` identifies the electrical phase BC of the `Connection`.
subclass of: Electrical phase identifier

Electrical Phase Identifier C
type: Class
type: NodeShape
comment: The value of the associated `Property` identifies the electrical phase C of the `Connection`.
subclass of: Electrical phase identifier

Electrical Phase Identifier CA
type: Class
type: NodeShape
comment: The value of the associated `Property` identifies the electrical phase CA of the `Connection`.
subclass of: Electrical phase identifier

ElectricalVoltagePhases-ABLineLineVoltage
type: Class
type: NodeShape
comment: Identifies the Line-to-line voltage is between phases A and B
subclass of: Electrical voltage phase pairs

ElectricalVoltagePhases-ANLineNeutralVoltage
type: Class
type: NodeShape
comment: Identifies the Line-to-neutral voltage is between phases A and N
subclass of: Electrical voltage phase pairs

ElectricalVoltagePhases-BCLineLineVoltage
type: Class
type: NodeShape
comment: Identifies the Line-to-line voltage is between phases B and C
subclass of: Electrical voltage phase pairs

ElectricalVoltagePhases-BNLineNeutralVoltage
type: Class
type: NodeShape
comment: Identifies the Line-to-neutral voltage is between phases B and N
subclass of: Electrical voltage phase pairs

ElectricalVoltagePhases-CALineLineVoltage
type: Class
type: NodeShape
comment: Identifies the Line-to-line voltage is between phases C and A
subclass of: Electrical voltage phase pairs

ElectricalVoltagePhases-CNLineNeutralVoltage
type: Class
type: NodeShape
comment: Identifies the Line-to-neutral voltage is between phases C and N
subclass of: Electrical voltage phase pairs

Electricity-Earth
type: Class
type: NodeShape
comment: `Electricity-Earth`
subclass of: Electricity

Electricity-Neutral
type: Class
type: NodeShape
comment: `Electricity-Neutral`
subclass of: Electricity

Fiber Ethernet OM1
type: Class
type: NodeShape
comment: FiberEthernet-OM1
subclass of: Fiber Ethernet

Fiber Ethernet OM2
type: Class
type: NodeShape
comment: FiberEthernet-OM2
subclass of: Fiber Ethernet

Fiber Ethernet OM3
type: Class
type: NodeShape
comment: FiberEthernet-OM3
subclass of: Fiber Ethernet

Fibe Ethernet OM4
type: Class
type: NodeShape
comment: FiberEthernet-OM4
subclass of: Fiber Ethernet

Fiber Ethernet OM5
type: Class
type: NodeShape
comment: FiberEthernet-OM5
subclass of: Fiber Ethernet

Fiber Ethernet OS1
type: Class
type: NodeShape
comment: FiberEthernet-OS1
subclass of: Fiber Ethernet

Fiber Ethernet OS2
type: Class
type: NodeShape
comment: FiberEthernet-OS2
subclass of: Fiber Ethernet

Superheated gas
type: Class
type: NodeShape
comment: Gas-SuperHeated
subclass of: Gas phase

15 percent glycol solution
type: Class
type: NodeShape
composed of: Water concentration
  type: Quantifiable Property
  hasValue: 85.0
  of constituent: H2O i.e., pure water
  has quantity kind: VolumeFraction
  has unit: PERCENT
composed of: Glycol concentration
  type: Quantifiable Property
  hasValue: 15.0
  of constituent: Glycol
  has quantity kind: VolumeFraction
  has unit: PERCENT
has freezing point: Freezing point
  type: Quantifiable Property
  has quantity kind: Temperature
comment: `GlycolSolution-15Percent`
subclass of: Water-Glycol solution

30 percent glycol solution
type: Class
type: NodeShape
composed of: Glycol concentration
  type: Quantifiable Property
  hasValue: 30.0
  of constituent: Glycol
  has quantity kind: VolumeFraction
  has unit: PERCENT
composed of: Water concentration
  type: Quantifiable Property
  hasValue: 70.0
  of constituent: H2O i.e., pure water
  has quantity kind: VolumeFraction
  has unit: PERCENT
has freezing point: Freezing point
  type: Quantifiable Property
  has quantity kind: Temperature
comment: `GlycolSolution-30Percent`
subclass of: Water-Glycol solution

Hydronic heat exchanger
type: Class
type: NodeShape
comment: A piece of equipment that transfers heat from one liquid stream to another while keeping the two media separate.
subclass of: Equipment
property:
  comment: A `HydronicHeatExchanger` shall have at least two liquid outlets, each paired with an inlet.
  message: s223: A `HydronicHeatExchanger` shall have at least two liquid outlets, each paired with an inlet.
  path: has connection point
  qualified min count: 2
  qualified value shape:
    class: Outlet Connection Point
    node:
      property:
        class: Inlet Connection Point
        min count: 1
        path: paired connection point
      property:
        class: Fluid mixture
        path: has Medium
property:
  comment: A `HydronicHeatExchanger` shall have no `ConnectionPoint`s using the medium `Fluid-Air`.
  class: ConnectionPoint
  message: s223: A `HydronicHeatExchanger` shall have no `ConnectionPoint`s using the medium `Fluid-Air`.
  path: has connection point
  qualified max count: 0
  qualified value shape:
    property:
      class: Air
      path: has Medium
property:
  comment: A `HydronicHeatExchanger` shall have no `BidirectionalConnectionPoint`s.
  message: s223: A `HydronicHeatExchanger` shall have no `BidirectionalConnectionPoint`s.
  path: has connection point
  qualified value shape:
    class: Bidirectional Connection Point
    message: s223: A `HydronicHeatExchanger` shall have no `BidirectionalConnectionPoint`s.
    qualified max count: 0
property:
  comment: A `HydronicHeatExchanger` shall have at least two liquid inlets, each paired with an outlet.
  message: s223: A `HydronicHeatExchanger` shall have at least two liquid inlets, each paired with an outlet.
  path: has connection point
  qualified min count: 2
  qualified value shape:
    class: Inlet Connection Point
    node:
      property:
        class: Fluid mixture
        path: has Medium
      property:
        class: Outlet Connection Point
        min count: 1
        path: paired connection point

Ultraviolet light
type: Class
type: NodeShape
comment: `Light-Ultraviolet`
subclass of: Light

Visible light
type: Class
type: NodeShape
comment: `Light-Visible`
subclass of: Light

Subcooled liquid
type: Class
type: NodeShape
comment: Liquid-SubCooled
subclass of: Liquid phase

Logical false
type: Class
type: NodeShape
comment: Logical-False
subclass of: Logical enumerations

Logical true
type: Class
type: NodeShape
comment: Logical-True
subclass of: Logical enumerations

Modulated 0-10V
type: Class
type: NodeShape
comment: Modulated-0-10V
subclass of: Modulated signal

Modulated 4-20mA
type: Class
type: NodeShape
comment: Modulated-4-20mA
subclass of: Modulated signal

Motion-False
type: Class
type: NodeShape
comment: `Motion-False`
subclass of: Occupancy motion

Motion-True
type: Class
type: NodeShape
comment: `Motion-True`
subclass of: Occupancy motion

Nitric oxide (NO)
type: Class
type: NodeShape
comment: `NOX-NO`
subclass of: Nitrogen oxide

Nitrogen dioxide (NO2)
type: Class
type: NodeShape
comment: `NOX-NO2`
subclass of: Nitrogen oxide

Occupied
type: Class
type: NodeShape
comment: Occupancy-Occupied
subclass of: Occupancy

Unoccupied
type: Class
type: NodeShape
comment: Occupancy-Unoccupied
subclass of: Occupancy

Off
type: Class
type: NodeShape
comment: OnOff-Off
subclass of: On and Off enumerations

On
type: Class
type: NodeShape
comment: OnOff-On
subclass of: On and Off enumerations

PM1.0
type: Class
type: NodeShape
comment: Particulate-PM1.0
subclass of: Particulate

PM10.0
type: Class
type: NodeShape
comment: Particulate-PM10.0
subclass of: Particulate

PM2.5
type: Class
type: NodeShape
comment: Particulate-PM2.5
subclass of: Particulate

PoE-802.3af-1
type: Class
type: NodeShape
hasVoltage: DCPositiveVoltage-PoE
comment: PoE-802.3af-1
subclass of: DC-PoE electricity

PoE-802.3at-2
type: Class
type: NodeShape
hasVoltage: DCPositiveVoltage-PoE
comment: PoE-802.3at-2
subclass of: DC-PoE electricity

PoE-802.3bt-3
type: Class
type: NodeShape
hasVoltage: DCPositiveVoltage-PoE
comment: PoE-802.3bt-3
subclass of: DC-PoE electricity

PoE-802.3bt-4
type: Class
type: NodeShape
hasVoltage: DCPositiveVoltage-PoE
comment: PoE-802.3bt-4
subclass of: DC-PoE electricity

Closed
type: Class
type: NodeShape
comment: Position-Closed
subclass of: Binary position enumerations

Open
type: Class
type: NodeShape
comment: Position-Open
subclass of: Binary position enumerations

Presence not detected
type: Class
type: NodeShape
comment: `Presence-False`
subclass of: Occupancy presence

Presence detected
type: Class
type: NodeShape
comment: `Presence-True`
subclass of: Occupancy presence

Pressure sensor
type: Class
type: NodeShape
comment: A `Sensor` that `observes` a `QuantifiableObservableProperty` that represents a measure of pressure.
subclass of: Sensor
property:
  comment: A `PressureSensor` shall always `observe` a `QuantifiableObservableProperty` that has a `QuantityKind` of Pressure.
  message: s223: A `PressureSensor` shall always `observe` a `QuantifiableObservableProperty` that has a `QuantityKind` of Pressure.
  path: observes
  path: hasQuantityKind
  value: Pressure

Radiant heater
type: Class
type: NodeShape
comment: A piece of `Equipment` with heating or cooling surface that delivers 50% or more of its heat transfer by radiation. A `RadiantHeater` shall: - Have the role `Role-Heating`. - Have at least one outlet connection point using the medium `Light-Infrared`. - Conform to exactly one of the following patterns: - **Pattern 1:** - Exactly one inlet connection point using the medium `Constituent-Electricity` or `Fluid-NaturalGas`. - **Pattern 2:** - Exactly one inlet connection point using the medium `Fluid-Water`. - Exactly one outlet connection point using the medium Fluid-Water.
subclass of: Equipment
property:
  comment: A `RadiantHeater` shall have at least one outlet connection point using the medium `Light-Infrared`.
  message: s223: A `RadiantHeater` shall have at least one outlet connection point using the medium `Light-Infrared`.
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Outlet Connection Point
    node:
      property:
        class: Infrared light
        path: has Medium
property:
  comment: A radiant heater shall have the role `Role-Heating`.
  message: s223: A radiant heater shall have the role `Role-Heating`.
  path: hasRole
  qualified min count: 1
  qualified value shape:
    class: Heating role
xone:
  property:
    comment: Pattern 1: A radiant heater shall have at least one inlet using the medium `Constituent-Electricity` or `Fluid-NaturalGas`.
    message: s223: Pattern 1: A radiant heater shall have at least one inlet using the medium `Constituent-Electricity` or `Fluid-NaturalGas`.
    min count: 1
    path: has connection point
    qualified min count: 1
    qualified value shape:
      class: Inlet Connection Point
xone:
  property:
    comment: Pattern 2: A radiant heater shall have an outlet using the medium `Fluid-Water`.
    message: s223: Pattern 2: A radiant heater shall have an outlet using the medium `Fluid-Water`.
    min count: 1
    path: has connection point
    qualified min count: 1
    qualified value shape:
      class: Outlet Connection Point
  property:
    comment: Pattern 2: A radiant heater shall have an inlet using the medium `Fluid-Water`.
    message: s223: Pattern 2: A radiant heater shall have an inlet using the medium `Fluid-Water`.
    min count: 1
    path: has connection point
    qualified min count: 1
    qualified value shape:
      class: Inlet Connection Point

Refrigerant R-123
type: Class
type: NodeShape
comment: `Refrigerant-R-123`
subclass of: Refrigerant

Refrigerant R-134A
type: Class
type: NodeShape
comment: `Refrigerant-R-134A`
subclass of: Refrigerant

Refrigerant R-22
type: Class
type: NodeShape
comment: `Refrigerant-R-22`
subclass of: Refrigerant

Refrigerant R-290
type: Class
type: NodeShape
comment: `Refrigerant-R-290`
subclass of: Refrigerant

Refrigerant R-404A
type: Class
type: NodeShape
comment: `Refrigerant-R-404A`
subclass of: Refrigerant

Refrigerant R-407C
type: Class
type: NodeShape
comment: `Refrigerant-R-407C`
subclass of: Refrigerant

Refrigerant R-410A
type: Class
type: NodeShape
comment: `Refrigerant-R-410A`
subclass of: Refrigerant

Refrigerant R-600A
type: Class
type: NodeShape
comment: `Refrigerant-R-600A`
subclass of: Refrigerant

Refrigerant R-717
type: Class
type: NodeShape
comment: `Refrigerant-R-717`
subclass of: Refrigerant

Refrigerant R-744
type: Class
type: NodeShape
comment: `Refrigerant-R-744`
subclass of: Refrigerant

Condenser role
type: Class
type: NodeShape
comment: `Role-Condenser`
subclass of: Role

Dehumidifying role
type: Class
type: NodeShape
comment: `Role-Dehumidifying`
subclass of: Role

Discharge role
type: Class
type: NodeShape
comment: `Role-Discharge`
subclass of: Role

Economizer role
type: Class
type: NodeShape
comment: `Role-Economizer`
subclass of: Role

Evaporator role
type: Class
type: NodeShape
comment: `Role-Evaporator`
subclass of: Role

Exhaust role
type: Class
type: NodeShape
comment: `Role-Exhaust`
subclass of: Role

Expansion role
type: Class
type: NodeShape
comment: `Role-Expansion`
subclass of: Role

Generator role
type: Class
type: NodeShape
comment: `Role-Generator`
subclass of: Role

Heat recovery role
type: Class
type: NodeShape
comment: Role-HeatRecovery
subclass of: Role

Load role
type: Class
type: NodeShape
comment: `Role-Load`
subclass of: Role

Outdoor air intake role
type: Class
type: NodeShape
comment: `Role-OutdoorAirIntake`
subclass of: Role
property:
  comment: `Role-OutdoorAirIntake` should only be associated with a `Connectable` directly connecting to Outdoor Air.
  path: has Medium
  severity: Warning
  sparql: SPARQLConstraint
    comment: Ensure that `Role-OutdoorAirIntake` is associated with a `Connectable` directly connecting to Outdoor Air.
    message: s223: {?this} is associated with {$entity}, which does not directly connect to outdoor air.
    prefixes: all
    select: SELECT $this ?entity WHERE { ?entity (s223:hasRole | (s223:hasProperty/s223:hasAspect)) $this . ?outdoorSpace a/rdfs:subClassOf* s223:OutdoorPhysicalSpace . ?outdoorSpace s223:encloses ?outdoorAir . ?outdoorAir s223:hasDomain s223:Domain-HVAC . FILTER NOT EXISTS {?entity s223:connectedFrom ?outdoorAir} . }

Primary role
type: Class
type: NodeShape
comment: `Role-Primary`
subclass of: Role

Recirculating role
type: Class
type: NodeShape
comment: `Role-Recirculating`
subclass of: Role

Relief role
type: Class
type: NodeShape
comment: `Role-Relief`
subclass of: Role

Return role
type: Class
type: NodeShape
comment: `Role-Return`
subclass of: Role

Secondary role
type: Class
type: NodeShape
comment: `Role-Secondary`
subclass of: Role

Supply role
type: Class
type: NodeShape
comment: `Role-Supply`
subclass of: Role

Ventilating role
type: Class
type: NodeShape
comment: `Role-Ventilating`
subclass of: Role

EIA485
type: Class
type: NodeShape
comment: Signal EIA485
subclass of: Electrical signal

IEC14908
type: Class
type: NodeShape
comment: Signal IEC14908
subclass of: Electrical signal

Solid phase
type: Class
type: NodeShape
comment: `ThermodynamicPhase-Solid`
subclass of: Thermodynamic phase

Vapor phase
type: Class
type: NodeShape
comment: `ThermodynamicPhase-Vapor`
subclass of: Thermodynamic phase

Voltage Sensor
type: Class
type: NodeShape
comment: A `Sensor` that `observes` a `QuantifiableObservableProperty` that represents a measure of voltage.
subclass of: Sensor
property:
  comment: A `VoltageSensor` shall always `observe` a `QuantifiableObservableProperty` that has a `QuantityKind` of Voltage.
  message: s223: A `VoltageSensor` shall always `observe` a `QuantifiableObservableProperty` that has a `QuantityKind` of Voltage.
  path: observes
  path: hasQuantityKind
  value: Voltage

Chilled water
type: Class
type: NodeShape
composed of: Water concentration
  type: Quantifiable Property
  of constituent: H2O i.e., pure water
  has quantity kind: VolumeFraction
  has unit: PERCENT
comment: Water-Chilled water
subclass of: Water

Hot water
type: Class
type: NodeShape
composed of: Water concentration
  type: Quantifiable Property
  of constituent: H2O i.e., pure water
  has quantity kind: VolumeFraction
  has unit: PERCENT
comment: Water-Hot water
subclass of: Water

Steam
type: Class
type: NodeShape
composed of: Water concentration
  type: Quantifiable Property
  of constituent: H2O i.e., pure water
  has quantity kind: VolumeFraction
  has unit: PERCENT
comment: Water-Steam
subclass of: Water

Friday
type: Class
type: NodeShape
comment: Weekday-Friday
subclass of: Weekday

Monday
type: Class
type: NodeShape
comment: Weekday-Monday
subclass of: Weekday

Thursday
type: Class
type: NodeShape
comment: Weekday-Thursday
subclass of: Weekday

Tuesday
type: Class
type: NodeShape
comment: Weekday-Tuesday
subclass of: Weekday

Wednesday
type: Class
type: NodeShape
comment: Weekday-Wednesday
subclass of: Weekday

Saturday
type: Class
type: NodeShape
comment: Weekend-Saturday
subclass of: Weekend

Sunday
type: Class
type: NodeShape
comment: Weekend-Sunday
subclass of: Weekend

Window
type: Class
type: NodeShape
comment: A piece of `Equipment` that provides a pathway for `EM-Light` or `Fluid-Air` (or both) to flow from a room to another room or the building exterior through a vertical or nearly vertical area of the room envelope.
subclass of: Equipment
property:
  comment: A `Window` shall have at least one inlet using the medium `EM-Light` or `Fluid-Air`.
  message: s223: A `Window` shall have at least one inlet using the medium `EM-Light` or `Fluid-Air`.
  min count: 1
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Inlet Connection Point
    node:
      severity: Warning
property:
  comment: A `Window` shall have at least one outlet using the medium `EM-Light` or `Fluid-Air`.
  message: s223: A `Window` shall have at least one outlet using the medium `EM-Light` or `Fluid-Air`.
  min count: 1
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Outlet Connection Point
    node:
      severity: Warning

Wired Ethernet Cat1
type: Class
type: NodeShape
comment: WiredEthernet-Cat1
subclass of: Wired Ethernet

Wired Ethernet Cat2
type: Class
type: NodeShape
comment: WiredEthernet-Cat2
subclass of: Wired Ethernet

Wired Ethernet Cat3
type: Class
type: NodeShape
comment: WiredEthernet-Cat3
subclass of: Wired Ethernet

Wired Ethernet Cat4
type: Class
type: NodeShape
comment: WiredEthernet-Cat4
subclass of: Wired Ethernet

Wired Ethernet Cat5
type: Class
type: NodeShape
comment: WiredEthernet-Cat5
subclass of: Wired Ethernet

Wired Ethernet Cat5e
type: Class
type: NodeShape
comment: WiredEthernet-Cat5e
subclass of: Wired Ethernet

Wired Ethernet Cat6
type: Class
type: NodeShape
comment: WiredEthernet-Cat6
subclass of: Wired Ethernet

Wired Ethernet Cat6a
type: Class
type: NodeShape
comment: WiredEthernet-Cat6a
subclass of: Wired Ethernet

Wired Ethernet Cat7
type: Class
type: NodeShape
comment: WiredEthernet-Cat7
subclass of: Wired Ethernet

Wired Ethernet Cat7a
type: Class
type: NodeShape
comment: WiredEthernet-Cat7a
subclass of: Wired Ethernet

Wired Ethernet Cat8
type: Class
type: NodeShape
comment: WiredEthernet-Cat8
subclass of: Wired Ethernet

actuates
type: Relation
type: Property
comment: A `Relation` that associates an `Actuator` with the `Equipment` that it actuates.

connected
type: Symmetric relation
type: Property
comment: The relation `connected` indicates that two connectable things are `connected` without regard to the direction of flow.

connected through
type: Relation
type: Property
comment: A `Relation` that associates a `Connectable` thing with a `Connection`, without regard to the direction of flow. It is used to discover what connection links two connectable things.

connects from
type: Relation
type: Property
comment: A `Relation` that associates a `Connectable` thing with a `Connection`, with an implied direction of flow. B `connectsFrom` A indicates a flow from A to B.

connects to
type: Relation
type: Property
comment: A `Relation` that associates a `Connection` with a `Connectable` thing, with an implied direction of flow. A `connectsTo` B indicates a flow from A to B.

hasAlarmStatus
type: Relation
type: Property
comment: A `Relation` that associates an `EnumerableProperty` that describes an Alarm or Status with a `QuantifiableProperty`.

has Boundary Connection Point
type: Relation
type: Property
comment: The `hasBoundaryConnectionPoint` relation means the `ConnectionPoint` represents the boundary of a `System` (see {s223:System}) defined by the modeler, such as a model fragment provided by the vendor of a collection of equipment intended for integration with another model. The presence of this relation is used to indicate that such a "dangling connection point" should not generate a validation error in a non-integrated context but should generate an error in a integrated context.

has deadband
type: Relation
type: Property
comment: This relation binds a control setpoint to the `QuantifiableProperty` indicating the range of values within which a sensed variable can vary without indicating a condition has changed.

has domain space
type: Relation
type: Property
comment: A `Relation` that associates a `Zone` with its component `DomainSpaces`.

has external reference
type: Relation
type: Property
comment: A `Relation` that associates a `Property` with an external telemetry source.

has measurement resolution
type: Relation
type: Property
comment: A `Relation` that associates a `Sensor` with the `QuantifiableProperty` whose value indicates the smallest recognizable change in engineering units that the `Sensor` is able to measure.

has member
type: Relation
type: Property
comment: A `Relation` that associates a `System` with its component `Equipment` and/or `System`s.

has number of electrical phases
type: Relation
type: Property
comment: A `Relation` that associates an AC electricity `Medium` with its number of electrical phases.

has Optional Connection Point
type: Relation
type: Property
comment: The `hasOptionalConnectionPoint` relation means the `ConnectionPoint` represents the boundary of a `System` (see {s223:System}) defined by the modeler, such as a model fragment provided by the vendor of a collection of equipment intended for integration with another model. The presence of this relation is used to indicate that such a "dangling connection point" should not generate a validation error in an integrated or non-integrated context.

has Physical Location
type: Relation
type: Property
comment: A `Relation` that associates a piece of `Equipment` with its physical location (i.e., in a `PhysicalSpace`. The physical location of a piece of `Equipment` is not necessarily the same as the location affected by the operation of the `Equipment`. For example, an air handler may physically be located on the roof, but its effect is to provide conditioned air to a `Zone` or `DomainSpace` within the building. By following the path of connections, it can be determined what other equipment or spaces are possibly impacted by the `Equipment`.

has threshold
type: Relation
type: Property
comment: A `Relation` that associates a threshold with the `QuantifiableProperty` indicating a specific value at which an action may be taken, distinguished from an offset or a range.

has zone
type: Relation
type: Property
comment: A `Relation` that associates a `ZoneGroup` with its component `Zone`s.

inverse of
type: Relation
type: Property
comment: A `Relation` that associates `Relation`s that are inverses of one another, such as `connectedTo` and `connectedFrom`.

of medium
type: Relation
type: Property
comment: A `Relation` that associates a `Property` with the specific Medium it describes. A `Property` corresponding to the temperature of a medium would be associated with this medium using the relation `ofMedium`.

Control parameter aspect
title: Control Parameters
comment: These aspects are used on properties that define the limits for control and alarm algorithms. These aspects are used on properties of type `QuantifiableActuatableProperty`. : Aspect Control Parameters Enumerations | Enumeration | Description | |:-----------|:-------------| | `Aspect-Deadband` | {s223:Aspect-Deadband/rdfs:comment} | | `Aspect-HighLimit` | {s223:Aspect-HighLimit/rdfs:comment} | | `Aspect-LowLimit` | {s223:Aspect-LowLimit/rdfs:comment} | | `Aspect-Setpoint` | {s223:Aspect-Setpoint/rdfs:comment} | | `Aspect-Threshold` | {s223:Aspect-Threshold/rdfs:comment} |

Delta quantity aspect
title: Delta Quantities
comment: These aspects are used on properties to modify the quantity kind. These aspects are used on properties of type `QuantifiableProperty` and subtypes thereof. : Aspect Delta Quantities Enumerations | Enumeration | Description | |:-----------|:-------------| | `Aspect-Delta` | {s223:Aspect-Delta/rdfs:comment} |

Equipment information aspect
title: Equipment Information
comment: These aspects are used on properties that provide static information about something e.g., a `System`, or `Equipment`. These aspects are typically used on properties of type `Property`. The property value is typically stored as a string. : Aspect Equipment Information Enumerations | Enumeration | Description | |:-----------|:-------------| | `Aspect-CatalogNumber` | {s223:Aspect-CatalogNumber/rdfs:comment} | | `Aspect-Manufacturer` | {s223:Aspect-Manufacturer/rdfs:comment} | | `Aspect-Model` | {s223:Aspect-Model/rdfs:comment} | | `Aspect-SerialNumber` | {s223:Aspect-SerialNumber/rdfs:comment} |

Equipment operation aspect
title: Equipment Operation
comment: These aspects are used on properties that provide dynamic information about something e.g., a `System`, or `Equipment`. These aspects are typically used on properties of type `EnumeratedProperty` and subtypes thereof. : Aspect Equipment Operation Enumerations | Enumeration | Description | |:-----------|:-------------| | `Aspect-Alarm` | {s223:Aspect-Alarm/rdfs:comment} | | `Aspect-Fault` | {s223:Aspect-Fault/rdfs:comment} | | `Aspect-OperatingMode` | {s223:Aspect-OperatingMode/rdfs:comment} | | `Aspect-OperatingStatus` | {s223:Aspect-OperatingStatus/rdfs:comment} |

Operational limits aspect
title: Operational Limits
comment: These aspects are used on properties that define the range of another `Property`. These aspects are used on properties of type `QuantifiableObservableProperty`. : Aspect Operational Limits Enumerations | Enumeration | Description | |:-----------|:-------------| | `Aspect-Maximum` | {s223:Aspect-Maximum/rdfs:comment} | | `Aspect-Minimum` | {s223:Aspect-Minimum/rdfs:comment} | | `Aspect-Nominal` | {s223:Aspect-Nominal/rdfs:comment} | | `Aspect-Rated` | {s223:Aspect-Rated/rdfs:comment} |

Chilled beam
type: Class
type: NodeShape
comment: A piece of `Equipment` with a colder surface temperature where air passes through, and air movement is induced in the room to achieve cooling. Cooling medium is generally water.
subclass of: Equipment
property:
  comment: A `ChilledBeam` shall have at least one inlet using the medium `Fluid-Water`.
  message: s223: A `ChilledBeam` shall have at least one inlet using the medium `Fluid-Water`.
  min count: 1
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Inlet Connection Point
    node:
      property:
        class: Water
        path: has Medium
property:
  comment: A `ChilledBeam` shall have at least one bidirectional connection point using the medium `Fluid-Air`.
  message: s223: A `ChilledBeam` shall have at least one bidirectional connection point using the medium `Fluid-Air`.
  min count: 1
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Bidirectional Connection Point
    node:
      property:
        class: Air
        path: has Medium
property:
  comment: A `ChilledBeam` shall be associated with the `Role-Cooling` using the relation `hasRole`
  message: s223: A `ChilledBeam` shall be associated with the `Role-Cooling` using the relation `hasRole`
  min count: 1
  path: hasRole
  qualified min count: 1
  qualified value shape:
    class: Cooling role
property:
  comment: A `ChilledBeam` shall have at least one outlet using the medium `Fluid-Water`.
  message: s223: A `ChilledBeam` shall have at least one outlet using the medium `Fluid-Water`.
  min count: 1
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Outlet Connection Point
    node:
      property:
        class: Water
        path: has Medium

Computer
type: Class
type: NodeShape
comment: A piece of `Equipment` that can be programmed to automatically carry out sequences of arithmetic or logical operations (computation). Modern digital electronic computers can perform generic sets of operations known as programs. These programs enable computers to perform a wide range of tasks.
subclass of: Equipment
property:
  comment: A `Computer` shall have at least one inlet using the medium `Constituent-Electricity`.
  message: s223: A `Computer` shall have at least one inlet using the medium `Constituent-Electricity`.
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Inlet Connection Point
    node:
      property:
        class: Electricity
        path: has Medium

Carbon dioxide
type: Class
type: NodeShape
comment: `Constituent-CO2`
subclass of: Constituent

DCNegativeVoltage-190.0V
type: Class
type: NodeShape
hasVoltage: 190V
has quantity kind: Voltage
has unit: http://qudt.org/vocab/unit/V
comment: DCNegativeVoltage-190.0V
subclass of: DCVoltage-DCNegativeVoltage

DCNegativeVoltage-2.5V
type: Class
type: NodeShape
hasVoltage: 2V
has quantity kind: Voltage
has unit: http://qudt.org/vocab/unit/V
comment: DCNegativeVoltage-2.5V
subclass of: DCVoltage-DCNegativeVoltage

DCNegativeVoltage-3.0V
type: Class
type: NodeShape
hasVoltage: 3V
has quantity kind: Voltage
has unit: http://qudt.org/vocab/unit/V
comment: DCNegativeVoltage-3.0V
subclass of: DCVoltage-DCNegativeVoltage

DCNegativeVoltage-380.0V
type: Class
type: NodeShape
hasVoltage: 380V
has quantity kind: Voltage
has unit: http://qudt.org/vocab/unit/V
comment: DCNegativeVoltage-380.0V
subclass of: DCVoltage-DCNegativeVoltage

DCNegativeVoltage-48.0V
type: Class
type: NodeShape
hasVoltage: 48V
has quantity kind: Voltage
has unit: http://qudt.org/vocab/unit/V
comment: DCNegativeVoltage-48.0V
subclass of: DCVoltage-DCNegativeVoltage

DCNegativeVoltage-5.0V
type: Class
type: NodeShape
hasVoltage: 5V
has quantity kind: Voltage
has unit: http://qudt.org/vocab/unit/V
comment: DCNegativeVoltage-5.0V
subclass of: DCVoltage-DCNegativeVoltage

DCPositiveVoltage-190.0V
type: Class
type: NodeShape
hasVoltage: 190V
has quantity kind: Voltage
has unit: http://qudt.org/vocab/unit/V
comment: DCPositiveVoltage-190.0V
subclass of: DCVoltage-DCPositiveVoltage

DCPositiveVoltage-2.5V
type: Class
type: NodeShape
hasVoltage: 2V
has quantity kind: Voltage
has unit: http://qudt.org/vocab/unit/V
comment: DCPositiveVoltage-2.5V
subclass of: DCVoltage-DCPositiveVoltage

DCPositiveVoltage-3.0V
type: Class
type: NodeShape
hasVoltage: 3V
has quantity kind: Voltage
has unit: http://qudt.org/vocab/unit/V
comment: DCPositiveVoltage-3.0V
subclass of: DCVoltage-DCPositiveVoltage

DCPositiveVoltage-380.0V
type: Class
type: NodeShape
hasVoltage: 380V
has quantity kind: Voltage
has unit: http://qudt.org/vocab/unit/V
comment: DCPositiveVoltage-380.0V
subclass of: DCVoltage-DCPositiveVoltage

DCPositiveVoltage-48.0V
type: Class
type: NodeShape
hasVoltage: 48V
has quantity kind: Voltage
has unit: http://qudt.org/vocab/unit/V
comment: DCPositiveVoltage-48.0V
subclass of: DCVoltage-DCPositiveVoltage

DCPositiveVoltage-5.0V
type: Class
type: NodeShape
hasVoltage: 5V
has quantity kind: Voltage
has unit: http://qudt.org/vocab/unit/V
comment: DCPositiveVoltage-5.0V
subclass of: DCVoltage-DCPositiveVoltage

Electronic display
type: Class
type: NodeShape
comment: A piece of `Equipment` that receives an input electrical signal and outputs information, typically text and/or graphics, in a visual form.
subclass of: Equipment
property:
  comment: A `ElectronicDisplay` shall have at least one inlet using the medium `Constituent-Electricity`.
  message: s223: A `ElectronicDisplay` shall have at least one inlet using the medium `Constituent-Electricity`.
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Inlet Connection Point
    node:
      property:
        class: Electricity
        path: has Medium
  qualified value shapes disjoint: true
property:
  comment: A `ElectronicDisplay` shall have at least one inlet using the medium `Electricity-Signal`.
  message: s223: A `ElectronicDisplay` shall have at least one inlet using the medium `Electricity-Signal`.
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Inlet Connection Point
    node:
      property:
        class: Electrical signal
        path: has Medium
  qualified value shapes disjoint: true

ExternalReference
type: Class
type: NodeShape
comment: `ExternalReference` is an abstract class that represents a thing that contains API or protocol parameter values necessary to associate a `Property` with a value.
subclass of: Concept

Natural gas
type: Class
type: NodeShape
comment: Fluid-NaturalGas.
subclass of: Fluid mixture

Power over Ethernet
type: Class
type: NodeShape
composed of: Unspecified
  type: Property
  of constituent: Wired Ethernet
composed of: Unspecified
  type: Property
  of constituent: DC-PoE electricity
comment: PowerAndSignal-PoE.
subclass of: Power and signal mixture
property:
  comment: One of the constituents of `PowerAndSignal-PoE` shall be `Signal-WiredEthernet` or one of its subclasses.
  path: composed of
  qualified min count: 1
  qualified value shape:
    class: Property
    node:
      property:
        comment: One of the constituents of `PowerAndSignal-PoE` shall be `Signal-WiredEthernet` or one of its subclasses.
        class: Wired Ethernet
        path: of constituent
property:
  comment: One of the constituents of `PowerAndSignal-PoE` shall be `DC-PoE` or one of its subclasses.
  path: composed of
  qualified min count: 1
  qualified value shape:
    class: Property
    node:
      property:
        comment: One of the constituents of `PowerAndSignal-PoE` shall be `DC-PoE` or one of its subclasses.
        class: DC-PoE electricity
        path: of constituent
property:
  comment: There shall be at least two Properties that characterize the constituents of Power over Ethernet.
  class: Property
  min count: 2
  path: composed of

Radiator
type: Class
type: NodeShape
comment: A piece of `Equipment` that provides primarily convective heating to a room using electricity, steam or water (e.g., electric baseboard heaters, heated floors, or traditional radiators).
subclass of: Equipment
property:
  comment: A `Radiator` shall have at least one bidirectional connection point using the medium `Fluid-Air`.
  message: s223: A `Radiator` shall have at least one bidirectional connection point using the medium `Fluid-Air`.
  min count: 1
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Bidirectional Connection Point
    node:
      property:
        class: Air
        path: has Medium
property:
  comment: Radiators shall have the role `Role-Heating`.
  message: s223: Radiators shall have the role `Role-Heating`.
  min count: 1
  path: hasRole
  qualified min count: 1
  qualified value shape:
    class: Heating role

Heat transfer role
type: Class
type: NodeShape
comment: Role-HeatTransfer
subclass of: Role

Soot
type: Class
type: NodeShape
comment: Carbon particles resulting from the incomplete combustion of hydrocarbons. Soot is considered a hazardous substance with carcinogenic properties.
subclass of: Substance

System
type: Class
type: NodeShape
comment: A logical grouping of one or more `Equipment` or other `System`s for some functional purpose.
subclass of: Concept
property:
  comment: If the relation `hasRole` is present, it shall associate the `System` with an `EnumerationKind-Role`.
  class: Role
  message: s223: If the relation `hasRole` is present, it shall associate the `System` with an `EnumerationKind-Role`.
  path: hasRole
property: PropertyShape
  comment: A `System` shall be associated with at least one instance of `Equipment` or `System` using the relation `hasMember`.
  message: s223: A `System` shall be associated with at least one instance of `Equipment` or `System` using the relation `hasMember`.
  min count: 1
  or:
    class: Equipment
  or:
    class: System
  path: has member
  severity: Warning
property:
  comment: A `System` may be defined with a number of connection points that are the "boundary" of the equipment. The `hasOptionalConnectionPoint` relation is used to reference those connection points of its equipment that may not be connected, the "dangling connection point" should not generate a validation error.
  class: ConnectionPoint
  message: s223: A `System` may be defined with a number of connection points that are the "boundary" of the equipment. The `hasOptionalConnectionPoint` relation is used to reference those connection points of its equipment that may not be connected, the "dangling connection point" should not generate a validation error.
  path: has Optional Connection Point
property:
  comment: A `System` may be defined with a number of connection points that are the "boundary" of the equipment. The `hasBoundaryConnectionPoint` relation is used to reference those connection points of its equipment that must be connected, but in the context of validating the model with the system by itself, the "dangling connection point" should not generate a validation error.
  class: ConnectionPoint
  message: s223: A `System` may be defined with a number of connection points that are the "boundary" of the equipment. The `hasBoundaryConnectionPoint` relation is used to reference those connection points of its equipment that must be connected, but in the context of validating the model with the system by itself, the "dangling connection point" should not generate a validation error.
  path: has Boundary Connection Point
sparql: SPARQLConstraint
  comment: Ensure that the boundary `ConnectionPoint`s of a `System` belong to only members of that `System`
  message: s223: `System` {$this} `hasBoundaryConnectionPoint` {?cp}, belonging to {?con} that is not a member of {?this}.
  prefixes: all
  select: SELECT $this ?cp ?con WHERE { $this s223:hasBoundaryConnectionPoint ?cp . ?cp s223:isConnectionPointOf ?con . FILTER NOT EXISTS {$this s223:hasMember+ ?con} }

0V
type: Class
type: NodeShape
hasValue: 0.0
has quantity kind: Voltage
has unit: http://qudt.org/vocab/unit/V
comment: Voltage-0V
subclass of: Voltage

10000V
type: Class
type: NodeShape
hasValue: 10000.0
has quantity kind: Voltage
has unit: http://qudt.org/vocab/unit/V
comment: Voltage-10000V
subclass of: Voltage

110V
type: Class
type: NodeShape
hasValue: 110.0
has quantity kind: Voltage
has unit: http://qudt.org/vocab/unit/V
comment: Voltage-110V
subclass of: Voltage

120V
type: Class
type: NodeShape
hasValue: 120.0
has quantity kind: Voltage
has unit: http://qudt.org/vocab/unit/V
comment: Voltage-120V
subclass of: Voltage

127V
type: Class
type: NodeShape
hasValue: 127.0
has quantity kind: Voltage
has unit: http://qudt.org/vocab/unit/V
comment: Voltage-127V
subclass of: Voltage

139V
type: Class
type: NodeShape
hasValue: 139.0
has quantity kind: Voltage
has unit: http://qudt.org/vocab/unit/V
comment: Voltage-139V
subclass of: Voltage

1730V
type: Class
type: NodeShape
hasValue: 1730.0
has quantity kind: Voltage
has unit: http://qudt.org/vocab/unit/V
comment: Voltage-1730V
subclass of: Voltage

1900V
type: Class
type: NodeShape
hasValue: 1900.0
has quantity kind: Voltage
has unit: http://qudt.org/vocab/unit/V
comment: Voltage-1900V
subclass of: Voltage

219V
type: Class
type: NodeShape
hasValue: 219.0
has quantity kind: Voltage
has unit: http://qudt.org/vocab/unit/V
comment: Voltage-219V
subclass of: Voltage

220V
type: Class
type: NodeShape
hasValue: 220.0
has quantity kind: Voltage
has unit: http://qudt.org/vocab/unit/V
comment: Voltage-220V
subclass of: Voltage

230V
type: Class
type: NodeShape
hasValue: 230.0
has quantity kind: Voltage
has unit: http://qudt.org/vocab/unit/V
comment: Voltage-230V
subclass of: Voltage

2400V
type: Class
type: NodeShape
hasValue: 2400.0
has quantity kind: Voltage
has unit: http://qudt.org/vocab/unit/V
comment: Voltage-2400V
subclass of: Voltage

277V
type: Class
type: NodeShape
hasValue: 277.0
has quantity kind: Voltage
has unit: http://qudt.org/vocab/unit/V
comment: Voltage-277V
subclass of: Voltage

3000V
type: Class
type: NodeShape
hasValue: 3000.0
has quantity kind: Voltage
has unit: http://qudt.org/vocab/unit/V
comment: Voltage-3000V
subclass of: Voltage

3300V
type: Class
type: NodeShape
hasValue: 3300.0
has quantity kind: Voltage
has unit: http://qudt.org/vocab/unit/V
comment: Voltage-3300V
subclass of: Voltage

3460V
type: Class
type: NodeShape
hasValue: 3460.0
has quantity kind: Voltage
has unit: http://qudt.org/vocab/unit/V
comment: Voltage-3460V
subclass of: Voltage

347V
type: Class
type: NodeShape
hasValue: 347.0
has quantity kind: Voltage
has unit: http://qudt.org/vocab/unit/V
comment: Voltage-347V
subclass of: Voltage

3810V
type: Class
type: NodeShape
hasValue: 3810.0
has quantity kind: Voltage
has unit: http://qudt.org/vocab/unit/V
comment: Voltage-3810V
subclass of: Voltage

400V
type: Class
type: NodeShape
hasValue: 400.0
has quantity kind: Voltage
has unit: http://qudt.org/vocab/unit/V
comment: Voltage-400V
subclass of: Voltage

415V
type: Class
type: NodeShape
hasValue: 415.0
has quantity kind: Voltage
has unit: http://qudt.org/vocab/unit/V
comment: Voltage-415V
subclass of: Voltage

4160V
type: Class
type: NodeShape
hasValue: 4160.0
has quantity kind: Voltage
has unit: http://qudt.org/vocab/unit/V
comment: Voltage-4160V
subclass of: Voltage

480V
type: Class
type: NodeShape
hasValue: 480.0
has quantity kind: Voltage
has unit: http://qudt.org/vocab/unit/V
comment: Voltage-480V
subclass of: Voltage

5770V
type: Class
type: NodeShape
hasValue: 5770.0
has quantity kind: Voltage
has unit: http://qudt.org/vocab/unit/V
comment: Voltage-5770V
subclass of: Voltage

6000V
type: Class
type: NodeShape
hasValue: 6000.0
has quantity kind: Voltage
has unit: http://qudt.org/vocab/unit/V
comment: Voltage-6000V
subclass of: Voltage

600V
type: Class
type: NodeShape
hasValue: 600.0
has quantity kind: Voltage
has unit: http://qudt.org/vocab/unit/V
comment: Voltage-600V
subclass of: Voltage

6600V
type: Class
type: NodeShape
hasValue: 6600.0
has quantity kind: Voltage
has unit: http://qudt.org/vocab/unit/V
comment: Voltage-6600V
subclass of: Voltage

encloses
type: Relation
type: Property
comment: A `Relation` that associates a `PhysicalSpace` with one or more `DomainSpace`s.

executes
type: Relation
type: Property
comment: A `Relation` that associates a `Controller` (see {s223:Controller}) with the `Function`s (see {s223:Function}) that it executes.

has freezing point
type: Relation
type: Property
comment: The relation `hasFreezingPoint` is used to associate a freezing point with a glycol solution, but could be used with other Mediums as appropriate.

has frequency
type: Relation
type: Property
comment: A `Relation` that associates an AC electricity `Medium with its electrical frequency.

has input
type: Relation
type: Property
comment: A `Relation` that associates a `Function` (see {s223:Function}) with a `Property` (see {s223:Property}) that is used as input to the `Function`.

has setpoint
type: Relation
type: Property
comment: A `Relation` that associates a control setpoint with the `QuantifiableProperty` indicating the desired value which the control process is trying to maintain.

has thermodynamic phase
type: Relation
type: Property
comment: A `Relation` that associates a Medium with its thermodynamic phases.

is connection point of
type: Inverse relation
type: Property
inverse of: has connection point
comment: One of two `Relation`s that associates a `ConnectionPoint` with a `Connectable` thing. It is the inverse of the relation `hasConnectionPoint` (see {s223:hasConnectionPoint}).

Cooling coil
type: Class
type: NodeShape
comment: A `Coil` that is specifically used to cool air.
subclass of: Coil
property:
  comment: A cooling coil shall be related to the role '`Role-Cooling`' using the relation '`hasRole`'.
  has value: Cooling role
  message: s223: A cooling coil shall be related to the role '`Role-Cooling`' using the relation '`hasRole`'.
  min count: 1
  path: hasRole

DCNegativeVoltage-12.0V
type: Class
type: NodeShape
hasVoltage: 12V
has quantity kind: Voltage
has unit: http://qudt.org/vocab/unit/V
comment: DCNegativeVoltage-12.0V
subclass of: DCVoltage-DCNegativeVoltage

DCNegativeVoltage-24.0V
type: Class
type: NodeShape
hasVoltage: 24V
has quantity kind: Voltage
has unit: http://qudt.org/vocab/unit/V
comment: DCNegativeVoltage-24.0V
subclass of: DCVoltage-DCNegativeVoltage

DCNegativeVoltage-6.0V
type: Class
type: NodeShape
hasVoltage: 6V
has quantity kind: Voltage
has unit: http://qudt.org/vocab/unit/V
comment: DCNegativeVoltage-6.0V
subclass of: DCVoltage-DCNegativeVoltage

DCPositiveVoltage-12.0V
type: Class
type: NodeShape
hasVoltage: 12V
has quantity kind: Voltage
has unit: http://qudt.org/vocab/unit/V
comment: DCPositiveVoltage-12.0V
subclass of: DCVoltage-DCPositiveVoltage

DCPositiveVoltage-24.0V
type: Class
type: NodeShape
hasVoltage: 24V
has quantity kind: Voltage
has unit: http://qudt.org/vocab/unit/V
comment: DCPositiveVoltage-24.0V
subclass of: DCVoltage-DCPositiveVoltage

DCPositiveVoltage-6.0V
type: Class
type: NodeShape
hasVoltage: 6V
has quantity kind: Voltage
has unit: http://qudt.org/vocab/unit/V
comment: DCPositiveVoltage-6.0V
subclass of: DCVoltage-DCPositiveVoltage

HVAC domain
type: Class
type: NodeShape
comment: The domain that represents equipment that condition and ventilate spaces within a building. Example `Domain-HVAC` equipment include `Fan`, `Pump`, and `AirHandlingUnit`.
subclass of: Domain

Domain Space
type: Class
type: NodeShape
comment: A `DomainSpace` represents some portion of a `PhysicalSpace` that is affected by a building service associated with a domain. `DomainSpace`s may represent an entire `PhysicalSpace` or any portion of a `PhysicalSpace` (see {s223:PhysicalSpace}). Multiple `DomainSpace`s of the same domain may overlap, and `DomainSpace`s of different domains may also overlap. `DomainSpace`s may be grouped into `Zone`s using the relation `hasDomainSpace` (see {s223:hasDomainSpace}).
subclass of: Connectable
property:
  comment: A `DomainSpace` shall be associated with exactly one `EnumerationKind-Domain` using the relation `hasDomain`.
  class: Domain
  max count: 1
  message: s223: A `DomainSpace` shall be associated with exactly one `EnumerationKind-Domain` using the relation `hasDomain`.
  min count: 1
  path: has domain
property:
  comment: A `DomainSpace` must be enclosed by a `PhysicalSpace`.
  message: s223: A `DomainSpace` must be enclosed by a `PhysicalSpace`.
  min count: 1
  path:
    inverse path: encloses
  severity: Info

RF
type: Class
type: NodeShape
comment: This class and its enumerated subclasses represent the use electromagnetic energy in the radio frequency range for multiple purposes, including communication signals. : EM-RF Enumerations | Enumeration | |:-----------| | `RF-Signal` |
subclass of: Electromagnetic energy

Electric energy converter
type: Class
type: NodeShape
comment: A piece of `Equipment` that converts one form of electric power to another form of electric power.
subclass of: Equipment
property:
  comment: A `ElectricEnergyConverter` shall have at least two connection points using the medium `Constituent-Electricity`.
  message: s223: A `ElectricEnergyConverter` shall have at least two connection points using the the medium `Constituent-Electricity`.
  min count: 2
  path: has connection point
  qualified min count: 2
  qualified value shape:
    class: ConnectionPoint
    node:
      property:
        class: Electricity
        path: has Medium

Electric resistance element
type: Class
type: NodeShape
comment: A piece of `Equipment` that provides electrical resistance heating, for example an electric heating coil within a Fan Coil Unit. It shall have one electricity `InletConnectionPoint`, and fit one of the following two patterns: - Pattern 1: An `ElectricResistanceElement` shall have exactly one Bidirectional `ConnectionPoint` using the medium `Mix-Fluid`. - Pattern 2: An `ElectricResistanceElement` shall have one inlet and one outlet using the medium `Mix-Fluid`.
subclass of: Equipment
message: s223: An `ElectricResistanceElement` shall have one electricity `InletConnectionPoint`, plus fit one of the following two patterns: Pattern 1: An `ElectricResistanceElement` shall have exactly one Bidirectional `ConnectionPoint` using the medium `Mix-Fluid`. Pattern 2: An `ElectricResistanceElement` shall have one inlet and one outlet using the medium `Mix-Fluid`.
property:
  comment: An `ElectricResistanceElement` shall have the role `Role-Heating`.
  message: s223: An `ElectricResistanceElement` shall have the role `Role-Heating`.
  path: hasRole
  qualified min count: 1
  qualified value shape:
    class: Heating role
property:
  comment: An `ElectricResistanceElement` shall have at least one inlet using the medium `Constituent-Electricity`.
  message: s223: An `ElectricResistanceElement` shall have at least one inlet using the medium `Constituent-Electricity`.
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Inlet Connection Point
    node:
      property:
        class: Electricity
        path: has Medium
xone:
  property:
    comment: Pattern 1: An `ElectricResistanceElement` shall have exactly one Bidirectional `ConnectionPoint` using the medium `Mix-Fluid`.
    message: s223: Pattern 1: An `ElectricResistanceElement` requires exactly one `BidirectionalConnectionPoint` using the medium `Mix-Fluid`.
    path: has connection point
    qualified max count: 1
    qualified min count: 1
    qualified value shape:
      class: Bidirectional Connection Point
    qualified value shapes disjoint: true
xone:
  property:
    comment: Pattern 2: An `ElectricResistanceElement` shall have one outlet using the medium `Mix-Fluid`.
    path: has connection point
    qualified max count: 1
    qualified min count: 1
    qualified value shape:
      class: Outlet Connection Point
    qualified value shapes disjoint: true
  property:
    comment: Pattern 2: An `ElectricResistanceElement` shall have one inlet using the medium `Mix-Fluid`.
    path: has connection point
    qualified max count: 1
    qualified min count: 1
    qualified value shape:
      class: Inlet Connection Point
    qualified value shapes disjoint: true

Enumerable Property
type: Class
type: NodeShape
comment: An `EnumerableProperty` is a `Property` with an enumerated (fixed) set of possible values.
subclass of: Property
property:
  comment: Checks for valid enumeration value consistent with the stated `EnumerationKind`.
  path: hasValue
  sparql: SPARQLConstraint
    comment: Checks for valid enumeration value consistent with the stated `EnumerationKind`.
    message: s223: {$this} has an enumeration value of {?value} which is not a valid {?kind}.
    prefixes: all
    select: SELECT $this ?value ?kind WHERE { $this s223:hasValue ?value . $this s223:hasEnumerationKind ?kind . FILTER (NOT EXISTS {?value a/rdfs:subClassOf* ?kind}) . }
property:
  comment: An `EnumerableProperty` shall be associated with exactly one `EnumerationKind` using the relation `hasEnumerationKind`.
  class: Enumeration kind
  max count: 1
  message: s223: An `EnumerableProperty` shall be associated with exactly one `EnumerationKind` using the relation `hasEnumerationKind`.
  min count: 1
  path: has enumeration kind

Day of week
type: Class
type: NodeShape
subclauses: Weekday
subclauses: Weekend
comment: This class and its enumerated subclasses represent the days of the week, according to the Gregorian calendar i.e., Monday, Tuesday, Wednesday, Thursday, Friday, Saturday and Sunday. The Weekend and Weekday EnumerationKinds define subsets of this `EnumerationKind` for Mon-Fri and Sat, Sun, respectively. : EnumerationKind-DayOfWeek Enumerations | Enumeration | |:-----------| | `DayOfWeek-Weekday` | | `DayOfWeek-Weekend` |
subclass of: Enumeration kind

Oil
type: Class
type: NodeShape
comment: Fluid-Oil.
subclass of: Fluid mixture

Heating coil
type: Class
type: NodeShape
comment: A `Coil` that is specifically used to heat air.
subclass of: Coil
property:
  comment: A heating coil shall be related to the role '`Role-Heating`' using the relation '`hasRole`'.
  has value: Heating role
  message: s223: A heating coil shall be related to the role '`Role-Heating`' using the relation '`hasRole`'.
  min count: 1
  path: hasRole

Infrared signal
type: Class
type: NodeShape
subclauses: Fiber Ethernet
comment: This class and its enumerated subclasses represent common infrared communication protocols. : Infrared-Signal Enumerations | Enumeration | |:-----------| | `Signal-FiberEthernet` (see {s223:Signal-FiberEthernet})|
subclass of: Infrared light

Junction
type: Class
type: NodeShape
comment: A `Junction` is a modeling construct used when a branching point within a `Connection` (see {s223:Connection}) is of significance, such as specifying the observation location of a `Sensor`, or when a modeler wants to expose a branch point within a containing piece of `Equipment`. When a `Junction` is used, what might have been modeled as a single, branched `Connection` is separated into three or more separate connections, all tied together with the `Junction` and its associated connection points. `Junction` is a subClassOf `Connectable`, which gives it the ability to have connection points, but unlike Equipment (and like Connection) it is not allowed to change the Medium that passes through it. This is why `Junction` is a sibling class to `Equipment` and not a subclass. This constraint to maintain compatible mediums among a `Junction` and all of its associated `ConnectionPoint`s gives rise to multiple validation test cases, where the specified medium might be a pure medium, or a mixture with constituents. See {s223:Substance-Medium} for more details.
subclass of: Connectable
property:
  comment: Incompatible Medium. Case 2: A `Junction` with constituents and an associated `ConnectionPoint` with a pure medium.
  name: Test for compatible declared Medium
  path: has Medium
  sparql: SPARQLConstraint
    comment: Incompatible Medium. Case 2: A `Junction` with constituents and an associated `ConnectionPoint` with a pure medium.
    message: s223: `Junction` {$this} with Medium {?m2} is incompatible with {?cp} with Medium {?m1}.
    prefixes: all
    select: SELECT $this ?m2 ?cp ?m1 WHERE { $this s223:cnx ?cp . ?cp a/rdfs:subClassOf* s223:ConnectionPoint . ?cp s223:hasMedium ?m1 . $this s223:hasMedium ?m2 . ?m2 s223:composedOf/s223:ofConstituent ?s2 . FILTER NOT EXISTS {?m1 s223:composedOf ?c1} . FILTER NOT EXISTS { ?m2 s223:composedOf/s223:ofConstituent ?s12 . {?s12 rdfs:subClassOf* ?m1} UNION {?m1 rdfs:subClassOf* ?s12} . } }
property:
  comment: Incompatible Medium. Case4: `Junction` with constituents and an associated `ConnectionPoint` with constituents.
  name: Test for compatible declared Medium
  path: has Medium
  sparql: SPARQLConstraint
    comment: Incompatible Medium. Case 4: `Junction` with constituents and an associated `ConnectionPoint` with constituents.
    message: s223: `Junction` {$this} with Medium {?m2} is incompatible with {?cp} with Medium {?m1}.
    prefixes: all
    select: SELECT $this ?m2 ?cp ?m1 WHERE { $this s223:cnx ?cp . ?cp a/rdfs:subClassOf* s223:ConnectionPoint . ?cp s223:hasMedium ?m1 . $this s223:hasMedium ?m2 . ?m1 s223:composedOf/s223:ofConstituent ?s1 . ?m2 s223:composedOf/s223:ofConstituent ?s2 . FILTER NOT EXISTS { ?m1 s223:composedOf/s223:ofConstituent ?s11 . ?m2 s223:composedOf/s223:ofConstituent ?s12 . FILTER (?s11 = ?s12) . } FILTER NOT EXISTS { ?m1 s223:composedOf/s223:ofConstituent ?s21 . ?m2 s223:composedOf/s223:ofConstituent ?s22 . {?s22 rdfs:subClassOf* ?s21} UNION {?s21 rdfs:subClassOf* ?s22} . } }
property:
  comment: Incompatible Medium. Case5: Two `ConnectionPoint`s with pure mediums.
  name: Test for compatible declared Medium
  path: has Medium
  sparql: SPARQLConstraint
    comment: Incompatible Medium. Case 5: Two `ConnectionPoint`s with pure mediums.
    message: s223: {?cp1} with Medium {?m1} is incompatible with {?cp2} with Medium {?m2}.
    prefixes: all
    select: SELECT $this ?cp1 ?m1 ?cp2 ?m2 WHERE { $this s223:cnx ?cp1 . ?cp1 a/rdfs:subClassOf* s223:ConnectionPoint . ?cp1 s223:hasMedium ?m1 . $this s223:cnx ?cp2 . ?cp2 a/rdfs:subClassOf* s223:ConnectionPoint . FILTER (?cp1 != ?cp2 ) . ?cp2 s223:hasMedium ?m2 . FILTER (?m1 != ?m2 ) . FILTER NOT EXISTS {?m1 s223:composedOf ?c1} . FILTER NOT EXISTS {?m2 s223:composedOf ?c2} FILTER (NOT EXISTS {?m2 rdfs:subClassOf* ?m1}) . FILTER (NOT EXISTS {?m1 rdfs:subClassOf* ?m2}) . }
property:
  comment: Incompatible Medium. Case 6: Two `ConnectionPoint`s, one with a medium with constituents and one a pure medium.
  name: Test for compatible declared Medium
  path: has Medium
  sparql: SPARQLConstraint
    comment: Incompatible Medium. Case 6: Two `ConnectionPoint`s with a medium with constituents and a pure medium.
    message: s223: {?cp1} with Medium {?m1} is incompatible with {?cp2} with Medium {?m2}.
    prefixes: all
    select: SELECT $this ?cp1 ?m1 ?cp2 ?m2 WHERE { $this s223:cnx ?cp1 . ?cp1 a/rdfs:subClassOf* s223:ConnectionPoint . ?cp1 s223:hasMedium ?m1 . $this s223:cnx ?cp2 . ?cp2 a/rdfs:subClassOf* s223:ConnectionPoint . ?cp2 s223:hasMedium ?m2 . ?m2 s223:composedOf/s223:ofConstituent ?s2 . FILTER NOT EXISTS {?m1 s223:composedOf ?c1} . FILTER NOT EXISTS { ?m2 s223:composedOf/s223:ofConstituent ?s12 . {?s12 rdfs:subClassOf* ?m1} UNION {?m1 rdfs:subClassOf* ?s12} . } }
property:
  comment: Incompatible Medium. Case 7: Two `ConnectionPoint`s with mediums with constituents.
  name: Test for compatible declared Medium
  path: has Medium
  sparql: SPARQLConstraint
    comment: Incompatible Medium. Case 7: Two `ConnectionPoint`s with mediums with constituents.
    message: s223: {?cp1} with Medium {?m1} is incompatible with {?cp2} with Medium {?m2}.
    prefixes: all
    select: SELECT $this ?cp1 ?m1 ?cp2 ?m2 WHERE { $this s223:cnx ?cp1 . ?cp1 a/rdfs:subClassOf* s223:ConnectionPoint . ?cp1 s223:hasMedium ?m1 . $this s223:cnx ?cp2 . ?cp2 a/rdfs:subClassOf* s223:ConnectionPoint . ?cp2 s223:hasMedium ?m2 . ?m1 s223:composedOf/s223:ofConstituent ?s1 . ?m2 s223:composedOf/s223:ofConstituent ?s2 . FILTER NOT EXISTS { ?m1 s223:composedOf/s223:ofConstituent ?s11 . ?m2 s223:composedOf/s223:ofConstituent ?s12 . FILTER (?s11 = ?s12) . } FILTER NOT EXISTS { ?m1 s223:composedOf/s223:ofConstituent ?s21 . ?m2 s223:composedOf/s223:ofConstituent ?s22 . {?s22 rdfs:subClassOf* ?s21} UNION {?s21 rdfs:subClassOf* ?s22} . } }
property:
  comment: A `Junction` shall be associated with exactly one `Substance-Medium` using the relation `hasMedium`.
  class: Medium
  max count: 1
  message: s223: A `Junction` shall be associated with exactly one `Substance-Medium` using the relation `hasMedium`.
  min count: 1
  path: has Medium
property:
  comment: Incompatible Medium. Case1: A `Junction` with a pure medium and an associated `ConnectionPoint` with a pure medium.
  name: Test for compatible declared Medium
  path: has Medium
  sparql: SPARQLConstraint
    comment: Incompatible Medium. Case 1: Two pure mediums.
    message: s223: `Junction` {$this} with Medium {?m2} is incompatible with {?cp} with Medium {?m1}.
    prefixes: all
    select: SELECT $this ?m2 ?cp ?m1 WHERE { $this s223:cnx ?cp . ?cp a/rdfs:subClassOf* s223:ConnectionPoint . ?cp s223:hasMedium ?m1 . $this s223:hasMedium ?m2 . FILTER (?m1 != ?m2 ) . FILTER NOT EXISTS {?m1 s223:composedOf ?c1} . FILTER NOT EXISTS {?m2 s223:composedOf ?c2} FILTER (NOT EXISTS {?m2 rdfs:subClassOf* ?m1}) . FILTER (NOT EXISTS {?m1 rdfs:subClassOf* ?m2}) . }
property:
  comment: Incompatible Medium. Case 3: `Junction` with a pure medium and an associated `ConnectionPoint` with constituents
  name: Test for compatible declared Medium
  path: has Medium
  sparql: SPARQLConstraint
    comment: Incompatible Medium. Case 3: `Junction` with a pure medium and an associated `ConnectionPoint` with constituents.
    message: s223: `Junction` {$this} with Medium {?m1} is incompatible with {?cp} with Medium {?m2}.
    prefixes: all
    select: SELECT $this ?m2 ?cp ?m1 WHERE { $this s223:cnx ?cp . ?cp a/rdfs:subClassOf* s223:ConnectionPoint . ?cp s223:hasMedium ?m2 . $this s223:hasMedium ?m1 . ?m2 s223:composedOf/s223:ofConstituent ?s2 . FILTER NOT EXISTS {?m1 s223:composedOf ?c1} . FILTER NOT EXISTS { ?m2 s223:composedOf/s223:ofConstituent ?s12 . {?s12 rdfs:subClassOf* ?m1} UNION {?m1 rdfs:subClassOf* ?s12} . } }

Light sensor
type: Class
type: NodeShape
comment: A `Sensor` that `observes` a `QuantifiableObservableProperty` that represents an attribute of light, as specified by the `QuantityKind` of the `Property` being observed, as described below.
subclass of: Sensor

24V Line-Neutral Voltage
type: Class
type: NodeShape
hasVoltage: 24V
has quantity kind: Voltage
has unit: http://qudt.org/vocab/unit/V
comment: 24V Line-Neutral Voltage
subclass of: Line-Neutral Voltage

Power and signal mixture
type: Class
type: NodeShape
comment: This class and its enumerated subclasses represent substances that are used to convey the combination of electrical power and electrical communication signals. : Mix-PowerAndSignal Enumerations | Enumeration | |:-----------| | `PowerAndSignal-PoE` |
subclass of: Mixed medium

Observable Property
type: Class
type: NodeShape
comment: The term "observable" implies that reading the `ObservableProperty` value will return the result of a physical observation, usually by a `Sensor`. In contrast, the term "actuatable" (see {s223:ActuatableProperty}) implies that writing to the `ActuatableProperty` value will directly trigger a physical actuation.
subclass of: Property
property:
  comment: An `ObservableProperty` is usually referred to by a `Sensor` using the relation `observes`.
  class: Sensor
  message: s223: An `ObservableProperty` is usually referred to by a `Sensor` using the relation `observes`.
  min count: 1
  path:
    inverse path: observes
  severity: Warning

Occupancy sensor
type: Class
type: NodeShape
comment: A `Sensor` that `observes` an `ObservableProperty` that represents an attribute of occupancy in a space.
subclass of: Sensor

Physical Space
type: Class
type: NodeShape
comment: A `PhysicalSpace` is an architectural concept representing a room, a part of a room, a collection of rooms, or any other physical region in a building. PhysicalSpaces may be grouped to define larger `PhysicalSpace`s using the relation `contains` (see {s223:contains}).
subclass of: Concept
property:
  comment: If the relation `contains` is present it shall associate the `PhysicalSpace` with a `PhysicalSpace`.
  class: Physical Space
  message: s223: If the relation `contains` is present it shall associate the `PhysicalSpace` with a `PhysicalSpace`.
  path: contains
property:
  comment: If the relation `encloses` is present it shall associate the `PhysicalSpace` with a `DomainSpace`.
  class: Domain Space
  message: s223: If the relation `encloses` is present it shall associate the `PhysicalSpace` with a `DomainSpace`.
  path: encloses

USB
type: Class
type: NodeShape
comment: Signal USB
subclass of: Electrical signal

Terminal unit
type: Class
type: NodeShape
comment: A piece of `Equipment` that modulates the volume of air delivered to a space.
subclass of: Equipment
property:
  comment: A `TerminalUnit` shall have at least one outlet `ConnectionPoint` using the medium `Fluid-Air`.
  message: s223: A `TerminalUnit` shall have at least one outlet `ConnectionPoint` using the medium `Fluid-Air`.
  min count: 1
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Outlet Connection Point
    node:
      property:
        class: Air
        path: has Medium
property:
  comment: A `TerminalUnit` shall have at least one inlet `ConnectionPoint` using the medium `Fluid-Air`.
  message: s223: A `TerminalUnit` shall have at least one inlet `ConnectionPoint` using the medium `Fluid-Air`.
  min count: 1
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Inlet Connection Point
    node:
      property:
        class: Air
        path: has Medium

Gas phase
type: Class
type: NodeShape
comment: This class and its enumerated subclasses represent gas in various thermodynamic states. : ThermodynamicPhase-Gas Enumerations | Enumeration | |:-----------| | `Gas-SuperHeated` |
subclass of: Thermodynamic phase

Liquid phase
type: Class
type: NodeShape
comment: This class and its enumerated subclasses represent liquid in various thermodynamic states. : ThermodynamicPhase-Liquid Enumerations | Enumeration | |:-----------| | `Liquid-SubCooled` |
subclass of: Thermodynamic phase

208V
type: Class
type: NodeShape
hasValue: 208.0
has quantity kind: Voltage
has unit: http://qudt.org/vocab/unit/V
comment: Voltage-208V
subclass of: Voltage

240V
type: Class
type: NodeShape
hasValue: 240.0
has quantity kind: Voltage
has unit: http://qudt.org/vocab/unit/V
comment: Voltage-240V
subclass of: Voltage

2V
type: Class
type: NodeShape
hasValue: 2.0
has quantity kind: Voltage
has unit: http://qudt.org/vocab/unit/V
comment: Voltage-2V
subclass of: Voltage

3V
type: Class
type: NodeShape
hasValue: 3.0
has quantity kind: Voltage
has unit: http://qudt.org/vocab/unit/V
comment: Voltage-3V
subclass of: Voltage

PoE Voltage
type: Class
type: NodeShape
has quantity kind: Voltage
has unit: http://qudt.org/vocab/unit/V
comment: This class represents the standardized 44-57VDC range that is produced by PoE Power Sourcing Equipment
subclass of: Voltage

Zone group
type: Class
type: NodeShape
comment: A logical grouping of one or more `Zone`s (e.g., to define a supervisory building control strategy that overrides one or more system controls).
subclass of: Concept
property:
  comment: A `ZoneGroup` shall be associated with at least one `Zone` using the relation `hasZone`.
  class: Zone
  message: s223: A `ZoneGroup` shall be associated with at least one `Zone` using the relation `hasZone`.
  min count: 1
  path: has zone
property:
  comment: A `ZoneGroup` shall be associated with exactly one `EnumerationKind-Domain` using the relation `hasDomain`.
  class: Domain
  max count: 1
  message: s223: A `ZoneGroup` shall be associated with exactly one `EnumerationKind-Domain` using the relation `hasDomain`.
  min count: 1
  path: has domain

commanded by Property
type: Relation
type: Property
comment: A `Relation` that associates a piece of `Equipment` with the `ActuatableProperty` that it responds to. If the `Equipment` is an `Actuator` (a subclass of `Equipment`), `actuatedByProperty` is a required relation. An `Actuator` may also identify another piece of `Equipment` being actuated. (see {s223:actuates}).

connected from
type: Inverse relation
type: Property
inverse of: connected to
comment: The relation `connectedFrom` indicates that connectable things are `connected` with a specific direction of flow. B is `connectedFrom` A, means that the direction of flow is from A to B. The inverse direction is indicated by `connectedTo` (see {s223:connectedTo}).
domain: Equipment

connects through
type: Inverse relation
type: Property
inverse of: connects at
comment: A `Relation` that associates a `ConnectionPoint` with a `Connection`, without regard to the direction of flow.

has internal reference
type: Relation
type: Property
comment: A `Relation` that associates a `Property` with another equivalent `Property`. For example, a `Property` that represents a `Zone` temperature could have at most one `hasInternalReference` relation to another `Property` that is a temperature measurement from one room in the zone (see Figure 11-2). ![Zone Internal Reference.](figures/Figure_11-2_Zone_Internal_Reference.svg) Another use of `hasInternalReference` is to make a `Property` of a piece of equipment visible as a `Property` of a piece of containing equipment (see {pub:equipment-containment}). This is illustrated in Figure 11-3. ![Equipment Containment.](figures/Figure_11-3_Equipment_Contains_3.svg) Note that the hasInternalReference relation is transitive.

has output
type: Relation
type: Property
comment: A `Relation` that associates a `Function` (see {s223:Function}) with a `Property` (see {s223:Property}) that is calculated by the `Function`.

of substance
type: Relation
type: Property
comment: A `Relation` that associates a `Property` being observed by a `Sensor` with the `Substance` it characterizes within a specific `Medium`. For example, to denote the concentration of a `Substance` in a `Medium`, `ofSubstance` is used. Typically, there is also an `ofMedium` relation between the observed `Property` and the `Medium`, (see Figures 10-9 and 10-10). For example, to represent the concentration of CO2 in air, we use `ofSubstance` to relate to CO2 and `ofMedium` to relate to air. The term `ofSubstance` is broad enough to include situations where a sensor is used to detect constituents that should not be present in a medium, such as ammonia in air. Therefore, `ofSubstance` is used to indicate the substance of interest, while `ofConstituent` would indicate a constituent that is normally present in the composition of the mix.

Logical enumerations
type: Class
type: NodeShape
comment: This class has and its enumerated subclasses represent the possible values of a logical `Property` i.e., True or False. : Binary-Logical Enumerations | Enumeration | |:-----------| | `Logical-True` | | `Logical-False` |
subclass of: Binary value

Coil
type: Class
type: NodeShape
comment: A piece of `Equipment` consisting of a pipe or tube that is formed into a helical or serpentine shape, may or may not be finned, and is used in cooling or heating equipment. A `Coil` shall conform to exactly one of the following patterns: - **Pattern 1:** - The `Coil` has exactly two inlet connection points using the medium `Mix-Fluid`, with exactly one being `Fluid-Air`. - The `Coil` has exactly two outlet connection points using the medium `Mix-Fluid`, with exactly one being `Fluid-Air`. - **Pattern 2:** - The Coil has exactly one inlet connection point using the medium `Mix-Fluid`. - The Coil has exactly one outlet connection point using the medium `Mix-Fluid`. - The Coil has one or two bidirectional connection points using the medium `Mix-Fluid` or `Medium-ThermalContact`. - **Pattern 3:** - The Coil has exactly three bidirectional connection points using the medium `Mix-Fluid` or `Medium-ThermalContact`.
subclass of: Equipment
message: s223: A `Coil` shall fit one of the following patterns of `ConnectionPoint`s: 1: Two inlets and two outlets using the medium `Mix-Fluid`. 2: One inlet and one outlet using the medium `Mix-Fluid`, and one or two bidirectionals using the medium `Mix-Fluid` or `Medium-ThermalContact`. 3: Three bidirectionals using the medium `Mix-Fluid` or `Medium-ThermalContact`.
xone:
  property:
    comment: Pattern 1: A `Coil` shall have two outlets using the medium `Mix-Fluid`.
    path: has connection point
    qualified max count: 2
    qualified min count: 2
    qualified value shape:
      class: Outlet Connection Point
  property:
    comment: Pattern 1: A `Coil` shall have two inlets using the medium `Mix-Fluid`.
    path: has connection point
    qualified max count: 2
    qualified min count: 2
    qualified value shape:
      class: Inlet Connection Point
  property:
    comment: Pattern 1: For one of the two outlets the Fluid is Air.
    path: has connection point
    qualified max count: 1
    qualified min count: 1
    qualified value shape:
      class: Outlet Connection Point
  property:
    comment: Pattern 1: For one of the two inlets the Fluid is Air.
    path: has connection point
    qualified max count: 1
    qualified min count: 1
    qualified value shape:
      class: Inlet Connection Point
xone:
  property:
    comment: Pattern 2: A `Coil` shall have one inlet using the medium `Mix-Fluid`.
    path: has connection point
    qualified max count: 1
    qualified min count: 1
    qualified value shape:
      class: Inlet Connection Point
  property:
    comment: Pattern 2: A `Coil` shall have one or two bidirectionals using the medium `MixFluid` or `Medium-ThermalContact`.
    path: has connection point
    qualified max count: 2
    qualified min count: 1
    qualified value shape:
      class: Bidirectional Connection Point
    qualified value shapes disjoint: true
  property:
    comment: Pattern 2: A `Coil` shall have one outlet using the medium `Mix-Fluid`.
    path: has connection point
    qualified max count: 1
    qualified min count: 1
    qualified value shape:
      class: Outlet Connection Point
xone:
  property:
    comment: Pattern 3: A `Coil` shall have three bidirectionals using the medium `Mix-Fluid` or `Medium-ThermalContact`.
    path: has connection point
    qualified max count: 3
    qualified min count: 3
    qualified value shape:
      class: Bidirectional Connection Point
    qualified value shapes disjoint: true

Nitrogen oxide
type: Class
type: NodeShape
comment: This class and its enumerated subclasses represent common Nitrogen Oxides (NOx). : Constituent-NOX Enumerations | Enumeration | |:-----------| | `NOX-NO` | | `NOX-NO2` |
subclass of: Constituent

Weekend
type: Class
type: NodeShape
comment: This class and its enumerated subclasses represent weekend days, according to the Gregorian calendar i.e., Saturday and Sunday. : DayOfWeek-Weekend Enumerations | Enumeration | |:-----------| | `Weekend-Saturday` | | `Weekend-Sunday` |
subclass of: Day of week

Function
type: Class
type: NodeShape
comment: A `Function` is used to model transfer and/or transformation of information (i.e. `Property`). It has relations to input Properties and output Properties. The actual algorithms that perform the transformations are described in CDL and are out of scope of the 223 standard.
subclass of: Concept
property:
  comment: If the relation `hasInput` is present it shall associate a `Function` with a `Property`.
  class: Property
  message: s223: If the relation `hasInput` is present it shall associate a `Function` with a `Property`.
  path: has input
property:
  comment: If the relation `hasOutput` is present it shall associate a `Function` with a `Property`.
  class: Property
  message: s223: If the relation `hasOutput` is present it shall associate a `Function` with a `Property`.
  path: has output

Heat pump
type: Class
type: NodeShape
comment: A piece of `Equipment` that heats or cools spaces by transferring thermal energy from one thermal environment to another using a reversible refrigeration cycle.
subclass of: Equipment

Infrared light
type: Class
type: NodeShape
subclauses: Infrared signal
comment: This class and its enumerated subclasses represent the use of electromagnetic energy in the infrared frequency range for multiple purposes, including communication signals. : Light-Infrared Enumerations | Enumeration | |:-----------| | `Infrared-Signal` (see {s223:Infrared-Signal}) |
subclass of: Light

110V Line-Neutral Voltage
type: Class
type: NodeShape
hasVoltage: 110V
has quantity kind: Voltage
has unit: http://qudt.org/vocab/unit/V
comment: 110V Line-Neutral Voltage
subclass of: Line-Neutral Voltage

127V Line-Neutral Voltage
type: Class
type: NodeShape
hasVoltage: 127V
has quantity kind: Voltage
has unit: http://qudt.org/vocab/unit/V
comment: 127V Line-Neutral Voltage
subclass of: Line-Neutral Voltage

139V Line-Neutral Voltage
type: Class
type: NodeShape
hasVoltage: 139V
has quantity kind: Voltage
has unit: http://qudt.org/vocab/unit/V
comment: 139V Line-Neutral Voltage
subclass of: Line-Neutral Voltage

1730V Line-Neutral Voltage
type: Class
type: NodeShape
hasVoltage: 1730V
has quantity kind: Voltage
has unit: http://qudt.org/vocab/unit/V
comment: 1730V Line-Neutral Voltage
subclass of: Line-Neutral Voltage

1900V Line-Neutral Voltage
type: Class
type: NodeShape
hasVoltage: 1900V
has quantity kind: Voltage
has unit: http://qudt.org/vocab/unit/V
comment: 1900V Line-Neutral Voltage
subclass of: Line-Neutral Voltage

208V Line-Neutral Voltage
type: Class
type: NodeShape
hasVoltage: 208V
has quantity kind: Voltage
has unit: http://qudt.org/vocab/unit/V
comment: 208V Line-Neutral Voltage
subclass of: Line-Neutral Voltage

219V Line-Neutral Voltage
type: Class
type: NodeShape
hasVoltage: 219V
has quantity kind: Voltage
has unit: http://qudt.org/vocab/unit/V
comment: 219V Line-Neutral Voltage
subclass of: Line-Neutral Voltage

230V Line-Neutral Voltage
type: Class
type: NodeShape
hasVoltage: 230V
has quantity kind: Voltage
has unit: http://qudt.org/vocab/unit/V
comment: 230V Line-Neutral Voltage
subclass of: Line-Neutral Voltage

2400V Line-Neutral Voltage
type: Class
type: NodeShape
hasVoltage: 2400V
has quantity kind: Voltage
has unit: http://qudt.org/vocab/unit/V
comment: 2400V Line-Neutral Voltage
subclass of: Line-Neutral Voltage

240V Line-Neutral Voltage
type: Class
type: NodeShape
hasVoltage: 240V
has quantity kind: Voltage
has unit: http://qudt.org/vocab/unit/V
comment: 240V Line-Neutral Voltage
subclass of: Line-Neutral Voltage

277V Line-Neutral Voltage
type: Class
type: NodeShape
hasVoltage: 277V
has quantity kind: Voltage
has unit: http://qudt.org/vocab/unit/V
comment: 277V Line-Neutral Voltage
subclass of: Line-Neutral Voltage

3460V Line-Neutral Voltage
type: Class
type: NodeShape
hasVoltage: 3460V
has quantity kind: Voltage
has unit: http://qudt.org/vocab/unit/V
comment: 3460V Line-Neutral Voltage
subclass of: Line-Neutral Voltage

347V Line-Neutral Voltage
type: Class
type: NodeShape
hasVoltage: 347V
has quantity kind: Voltage
has unit: http://qudt.org/vocab/unit/V
comment: 347V Line-Neutral Voltage
subclass of: Line-Neutral Voltage

3810V Line-Neutral Voltage
type: Class
type: NodeShape
hasVoltage: 3810V
has quantity kind: Voltage
has unit: http://qudt.org/vocab/unit/V
comment: 3810V Line-Neutral Voltage
subclass of: Line-Neutral Voltage

5770V Line-Neutral Voltage
type: Class
type: NodeShape
hasVoltage: 5770V
has quantity kind: Voltage
has unit: http://qudt.org/vocab/unit/V
comment: 5770V Line-Neutral Voltage
subclass of: Line-Neutral Voltage

Mixed medium
type: Class
type: NodeShape
subclauses: Fluid mixture
subclauses: Power and signal mixture
comment: This class and its subclasses represent substances that are composed of constituents. The components of a `Medium-Mix` can be modeled using the relations `composedOf` and `ofConstituent`. See Figure 10-8a and Figure 10-8b. Figure 10-8a shows `GlycolSolution-30Percent`, itself a subclass of `Water-GlycolSolution`, `Fluid-Water`, and `Mix-Fluid`, with a _Water Concentration_ property referencing 70% `Constituent-H2O` by the relation `ofConstituent` and a _Glycol Concentration_ property referencing 30% `Constituent-Glycol` also `Property` referencing 70% `Constituent-Water` by the relation `ofConstituent` and a _Glycol Concentration_ `Property` referencing 30% `Constituent-Glycol` also by the relation `ofConstituent`. Figure 10-8b shows `PowerandSignal-PoE`, itself a subclass of `Mix-PowerAndSignal`, composed of a _Power_ `Property` referencing `Fluid-DC` and a _Communications_ `Property` referencing `Signal-WiredEthernet`. : Medium-Mix Enumerations | Enumeration | |:-----------| | `Mix-Fluid` (see {s223:Mix-Fluid}) | | `Mix-PowerAndSignal` (see {s223:Mix-PowerAndSignal}) | ![ ](figures/Figure_10-8_Substance.svg)
subclass of: Medium

Thermal contact
type: Class
type: NodeShape
comment: This class represents the transfer of thermodynamic energy at `ConnectionPoint`s or through `Connection`s that does not involve electricity or moving a fluid such as air or water.
subclass of: Medium

Modulated signal
type: Class
type: NodeShape
comment: This class and its enumerated subclasses represent common analog communication protocols. : Signal-Modulated Enumerations | Enumeration | |:-----------| | `Modulated-0-10V` | | `Modulated-4-20mA` |
subclass of: Electrical signal

12V
type: Class
type: NodeShape
hasValue: 12.0
has quantity kind: Voltage
has unit: http://qudt.org/vocab/unit/V
comment: Voltage-12V
subclass of: Voltage

190V
type: Class
type: NodeShape
hasValue: 190.0
has quantity kind: Voltage
has unit: http://qudt.org/vocab/unit/V
comment: Voltage-190V
subclass of: Voltage

48V
type: Class
type: NodeShape
hasValue: 48.0
has quantity kind: Voltage
has unit: http://qudt.org/vocab/unit/V
comment: Voltage-48V
subclass of: Voltage

5V
type: Class
type: NodeShape
hasValue: 5.0
has quantity kind: Voltage
has unit: http://qudt.org/vocab/unit/V
comment: Voltage-5V
subclass of: Voltage

6V
type: Class
type: NodeShape
hasValue: 6.0
has quantity kind: Voltage
has unit: http://qudt.org/vocab/unit/V
comment: Voltage-6V
subclass of: Voltage

Water-Glycol solution
type: Class
type: NodeShape
composed of: Unspecified
  type: Quantifiable Property
  of constituent: H2O i.e., pure water
  has quantity kind: VolumeFraction
  has unit: PERCENT
composed of: Unspecified
  type: Quantifiable Property
  of constituent: Glycol
  has quantity kind: VolumeFraction
  has unit: PERCENT
has freezing point: Freezing point
  type: Quantifiable Property
  has quantity kind: Temperature
subclauses: has freezing point
comment: This class and its enumerated subclasses represent common concentrations of water-glycol solution. : Water-GlycolSolution Enumerations | Enumeration | |:-----------| | `GlycolSolution-15Percent` | | `GlycolSolution-30Percent` |
subclass of: Water
property:
  comment: One of the constituents of a `Water-GlycolSolution` shall be `Constituent-H2O`.
  path: composed of
  qualified min count: 1
  qualified value shape:
    class: Quantifiable Property
    node:
      property:
        comment: The `QuantityKind` of the constituent shall be `VolumeFraction`.
        has value: VolumeFraction
        path: hasQuantityKind
      property:
        comment: One of the constituents of a `Water-GlycolSolution` shall be `Constituent-H2O`.
        has value: H2O i.e., pure water
        path: of constituent
property:
  comment: There shall be at least two QuantifiableProperties that characterize the constituents of a `Water-GlycolSolution`.
  class: Quantifiable Property
  min count: 2
  path: composed of
property:
  comment: One of the constituents of a `Water-GlycolSolution` shall be `Constituent-Glycol`.
  path: composed of
  qualified min count: 1
  qualified value shape:
    class: Quantifiable Property
    node:
      property:
        comment: One of the constituents of a `Water-GlycolSolution` shall be `Constituent-Glycol`.
        has value: Glycol
        path: of constituent
      property:
        comment: The `QuantityKind` of the constituent shall be `VolumeFraction`.
        has value: VolumeFraction
        path: hasQuantityKind
property:
  comment: If the relation `hasFreezingPoint` is used, the object shall be a `QuantifiableProperty` with a `QuantityKind` of `Temperature`.
  class: Quantifiable Property
  message: s223: If the relation `hasFreezingPoint` is used, the object shall be a `QuantifiableProperty` with a `QuantityKind` of `Temperature`.
  node:
    property:
      has value: Temperature
      path: hasQuantityKind
  path: has freezing point

Zone
type: Class
type: NodeShape
comment: A logical grouping of one or more `DomainSpace`s for a specific domain for some building service or control-related purpose. Zones may be grouped into ZoneGroups (see {s223:ZoneGroup}).
subclass of: Concept
property:
  comment: A `Zone` shall be associated with exactly one `EnumerationKind-Domain` using the relation `hasDomain`.
  class: Domain
  max count: 1
  message: s223: A `Zone` shall be associated with exactly one `EnumerationKind-Domain` using the relation `hasDomain`.
  min count: 1
  path: has domain
property:
  comment: The associated domain of a `Zone` and the Domain of the `DomainSpace`s it `contains` must be the same.
  path: has domain
  sparql: SPARQLConstraint
    comment: The associated `EnumerationKind-Domain` of a `Zone` and the `EnumerationKind-Domain` of the `DomainSpace`s it contains must be the same.
    message: s223: `Zone` {$this} has a Domain of {?domain}, but it contains a `DomainSpace` {?ds} which has a Domain of {?dsdomain}. These should be the same.
    prefixes: all
    select: SELECT DISTINCT $this ?domain ?ds ?dsdomain WHERE { $this a s223:Zone . $this s223:hasDomain ?domain . $this s223:contains ?ds . ?ds s223:hasDomain ?dsdomain . FILTER (?domain != ?dsdomain) }
property:
  comment: A `Zone` shall be associated with at least one `DomainSpace` using the relation `hasDomainSpace`.
  class: Domain Space
  message: s223: A `Zone` shall be associated with at least one `DomainSpace` using the relation `hasDomainSpace`.
  min count: 1
  path: has domain space

has electrical phase
type: Relation
type: Property
comment: A `Relation` that associates an AC electricity `Medium` with its electrical phase identifier.

Actuatable Property
type: Class
type: NodeShape
comment: The term "actuatable" implies that writing to the `ActuatableProperty` value will directly trigger a physical actuation by either an `Actuator` or `Equipment`. In contrast, the term "observable" (see {s223:ObservableProperty}) implies that reading the `ObservableProperty` value will return the result of a physical observation.
subclass of: Property

Electromagnetic energy
type: Class
type: NodeShape
subclauses: Light
subclauses: RF
comment: This class and its enumerated subclasses represent electromagnetic energy at commonly defined frequency ranges. : Constituent-EM Enumerations | Enumeration | |:-----------| | `EM-Light` (see {s223:EM-Light})| | `EM-Microwave` | | `EM-RF` (see {s223:EM-RF})|
subclass of: Constituent

Glycol
type: Class
type: NodeShape
comment: `Constituent-Glycol`
subclass of: Constituent

DC-12V electricity
type: Class
type: NodeShape
hasVoltage: 12V
comment: This class and its enumerated subclasses represent all polarities of 12 volt DC electricity. : DC-12V Enumerations | Enumeration | |:-----------| | `12V-12V-Neg` | | `12V-12V-Pos` | | `12V-6V-Neg-6V-Pos` |
subclass of: DC electricity

DC-24V electricity
type: Class
type: NodeShape
hasVoltage: 24V
comment: This class and its enumerated subclasses represent all polarities of 24 volt DC electricity. : DC-24V Enumerations | Enumeration | |:-----------| | `24V-12V-Neg-12V-Pos` | | `24V-24V-Neg` | | `24V-24V-Pos` |
subclass of: DC electricity

DC-380V electricity
type: Class
type: NodeShape
hasVoltage: 380V
comment: This class and its enumerated subclasses represent all polarities of 380 volt DC electricity. : DC-380V Enumerations | Enumeration | |:-----------| | `380V-190V-Neg-190V-Pos` | | `380V-380V-Neg` | | `380V-380V-Pos` |
subclass of: DC electricity

DC-48V electricity
type: Class
type: NodeShape
hasVoltage: 48V
comment: This class and its enumerated subclasses represent all polarities of 48 volt DC electricity. : DC-48V Enumerations | Enumeration | |:-----------| | `48V-24V-Neg-24V-Pos` | | `48V-48V-Neg` | | `48V-48V-Pos` |
subclass of: DC electricity

DC-5V electricity
type: Class
type: NodeShape
hasVoltage: 5V
comment: This class and its enumerated subclasses represent all polarities of 5 volt DC electricity. : DC-5V Enumerations | Enumeration | |:-----------| | `5V-2.5V-Neg-2.5V-Pos` | | `5V-5V-Neg` | | `5V-5V-Pos` |
subclass of: DC electricity

DC-6V electricity
type: Class
type: NodeShape
hasVoltage: 6V
comment: This class and its enumerated subclasses represent all polarities of 6 volt DC electricity. : DC-6V Enumerations | Enumeration | |:-----------| | `6V-3V-Neg-3V-Pos` | | `6V-6V-Neg` | | `6V-6V-Pos` |
subclass of: DC electricity

Damper
type: Class
type: NodeShape
comment: A piece of `Equipment` inserted into an air distribution system permitting modification of the air resistance of the system and consequently changing the airflow rate or shutting off the airflow.
subclass of: Equipment
property:
  comment: A `Damper` shall have at least one outlet using the medium `Fluid-Air`.
  message: s223: A `Damper` shall have at least one outlet using the medium `Fluid-Air`.
  min count: 1
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Outlet Connection Point
    node:
      property:
        class: Air
        path: has Medium
property:
  comment: A `Damper` shall have at least one inlet using the medium `Fluid-Air`.
  message: s223: A `Damper` shall have at least one inlet using the medium `Fluid-Air`.
  min count: 1
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Inlet Connection Point
    node:
      property:
        class: Air
        path: has Medium

Enumerated actuatable property
type: Class
type: NodeShape
comment: An `EnumeratedActuatableProperty` is a `Property` with an enumerated (fixed) set of possible values that can be changed (actuated).
subclass of: Actuatable Property
subclass of: Enumerable Property

Enumerated observable property
type: Class
type: NodeShape
comment: An `EnumeratedObservableProperty` is a `Property` with an enumerated (fixed) set of possible values that cannot be changed (can only be observed).
subclass of: Enumerable Property
subclass of: Observable Property

Substance
type: Class
type: NodeShape
subclauses: Medium
subclauses: Particulate
subclauses: Soot
comment: This class and its enumerated subclasses represent things that are produced, conveyed, sensed, controlled, or consumed. Its enumerated subclasses differentate between mediums, particulates, and soot. : EnumberationKind-Substance Enumerations | Enumeration | |:-----------| | `Substance-Medium` (see {s223:Substance-Medium}) | | `Substance-Particulate` (see {s223:Substance-Particulate}) | | `Substance-Soot` (see {s223:Substance-Soot}) |
subclass of: Enumeration kind
property:
  comment: If a substance has a constituent, that constituent may not itself have constituents.
  path: composed of
  sparql: SPARQLConstraint
    comment: If a substance has a constituent, that constituent may not itself have constituents.
    message: s223: This substance {$this} has a constituent {?constituent} that itself composed ofs {?nextConstituent}. Create new substance with only atomic constituents.
    prefixes: all
    select: SELECT $this ?constituent ?nextConstituent WHERE { $this s223:composedOf ?constituent . ?constituent s223:ofConstituent/s223:composedOf ?nextConstituent . }
property:
  comment: If the relation `composedOf` is present, it shall associate an `EnumerationKind-Substance` with one or more Properties that identify and characterize its constituents. The `Property` identifies the constituent using the relation `ofConstituent`. If appropriate, a `QuantifiableProperty` may be used to also specify the amount of the constituent using the relations `qudt:hasQuantityKind`, `qudt:hasUnit`, and `qudt:hasValue`. For example, see {s223:Water-GlycolSolution}.
  class: Property
  path: composed of

Fan
type: Class
type: NodeShape
comment: A piece of `Equipment` that causes a gas (e.g., air) to flow.
subclass of: Equipment
property:
  comment: A `Fan` shall have at least one inlet using the medium `Fluid-Air`.
  message: s223: A `Fan` shall have at least one inlet using the medium `Fluid-Air`.
  min count: 1
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Inlet Connection Point
    node:
      property:
        class: Air
        path: has Medium
property:
  comment: A `Fan` shall have at least one outlet using the medium `Fluid-Air`.
  message: s223: A `Fan` shall have at least one outlet using the medium `Fluid-Air`.
  min count: 1
  path: has connection point
  qualified min count: 1
  qualified value shape:
    class: Outlet Connection Point
    node:
      property:
        class: Air
        path: has Medium

10000V Line-Line Voltage
type: Class
type: NodeShape
hasVoltage: 10000V
has quantity kind: Voltage
has unit: http://qudt.org/vocab/unit/V
comment: 10000V Line-Line Voltage
subclass of: Line-Line Voltage

190V Line-Line Voltage
type: Class
type: NodeShape
hasVoltage: 190V
has quantity kind: Voltage
has unit: http://qudt.org/vocab/unit/V
comment: 190V Line-Line Voltage
subclass of: Line-Line Voltage

208V Line-Line Voltage
type: Class
type: NodeShape
hasVoltage: 208V
has quantity kind: Voltage
has unit: http://qudt.org/vocab/unit/V
comment: 208V Line-Line Voltage
subclass of: Line-Line Voltage

220V Line-Line Voltage
type: Class
type: NodeShape
hasVoltage: 220V
has quantity kind: Voltage
has unit: http://qudt.org/vocab/unit/V
comment: 220V Line-Line Voltage
subclass of: Line-Line Voltage

3000V Line-Line Voltage
type: Class
type: NodeShape
hasVoltage: 3000V
has quantity kind: Voltage
has unit: http://qudt.org/vocab/unit/V
comment: 3000V Line-Line Voltage
subclass of: Line-Line Voltage

3300V Line-Line Voltage
type: Class
type: NodeShape
hasVoltage: 3300V
has quantity kind: Voltage
has unit: http://qudt.org/vocab/unit/V
comment: 3300V Line-Line Voltage
subclass of: Line-Line Voltage

380V Line-Line Voltage
type: Class
type: NodeShape
hasVoltage: 380V
has quantity kind: Voltage
has unit: http://qudt.org/vocab/unit/V
comment: 380V Line-Line Voltage
subclass of: Line-Line Voltage

400V Line-Line Voltage
type: Class
type: NodeShape
hasVoltage: 400V
has quantity kind: Voltage
has unit: http://qudt.org/vocab/unit/V
comment: 400V Line-Line Voltage
subclass of: Line-Line Voltage

415V Line-Line Voltage
type: Class
type: NodeShape
hasVoltage: 415V
has quantity kind: Voltage
has unit: http://qudt.org/vocab/unit/V
comment: 415V Line-Line Voltage
subclass of: Line-Line Voltage

4160V Line-Line Voltage
type: Class
type: NodeShape
hasVoltage: 4160V
has quantity kind: Voltage
has unit: http://qudt.org/vocab/unit/V
comment: 4160V Line-Line Voltage
subclass of: Line-Line Voltage

480V Line-Line Voltage
type: Class
type: NodeShape
hasVoltage: 480V
has quantity kind: Voltage
has unit: http://qudt.org/vocab/unit/V
comment: 480V Line-Line Voltage
subclass of: Line-Line Voltage

6000V Line-Line Voltage
type: Class
type: NodeShape
hasVoltage: 6000V
has quantity kind: Voltage
has unit: http://qudt.org/vocab/unit/V
comment: 6000V Line-Line Voltage
subclass of: Line-Line Voltage

600V Line-Line Voltage
type: Class
type: NodeShape
hasVoltage: 600V
has quantity kind: Voltage
has unit: http://qudt.org/vocab/unit/V
comment: 600V Line-Line Voltage
subclass of: Line-Line Voltage

6600V Line-Line Voltage
type: Class
type: NodeShape
hasVoltage: 6600V
has quantity kind: Voltage
has unit: http://qudt.org/vocab/unit/V
comment: 6600V Line-Line Voltage
subclass of: Line-Line Voltage

Occupancy motion
type: Class
type: NodeShape
comment: This class and its enumerated subclasses represent the detection of motion in a space. : Occupancy-Motion Enumerations | Enumeration | |:-----------| | `Motion-False` | | `Motion-True` |
subclass of: Occupancy

Occupancy presence
type: Class
type: NodeShape
comment: This class and its enumerated subclasses represent the detection of physical presence in a space. : Occupancy-Presence Enumerations | Enumeration | |:-----------| | `Presence-False` | | `Presence-True` |
subclass of: Occupancy

Quantifiable Actuatable Property
type: Class
type: NodeShape
comment: This class is for instances of `QuantifiableProperty` for which numerical values are specified to be modifiable by a user or a machine outside of the model, like a setpoint.
subclass of: Actuatable Property
subclass of: Quantifiable Property

Quantifiable Observable Property
type: Class
type: NodeShape
comment: This class is for instances of `QuantifiableProperty` for which numerical values are observed, like a temperature reading or a voltage measure.
subclass of: Observable Property
subclass of: Quantifiable Property
property:
  comment: A `QuantifiableObservableProperty` can be associated with zero or more `QuantifiableProperty`(s) indicating the desired value(s) which the control process is trying to maintain using the relation `hasSetpoint`.
  class: Quantifiable Property
  message: s223: A `QuantifiableObservableProperty` can be associated with zero or more `QuantifiableProperty`(s) indicating the desired value(s) which the control process is trying to maintain using the relation `hasSetpoint`.
  path: has setpoint

24V
type: Class
type: NodeShape
hasValue: 24.0
has quantity kind: Voltage
has unit: http://qudt.org/vocab/unit/V
comment: Voltage-24V
subclass of: Voltage

380V
type: Class
type: NodeShape
hasValue: 380.0
has quantity kind: Voltage
has unit: http://qudt.org/vocab/unit/V
comment: Voltage-380V
subclass of: Voltage

Voltage-DCVoltage
type: Class
type: NodeShape
hasVoltage: Voltage
has quantity kind: Voltage
has unit: http://qudt.org/vocab/unit/V
subclauses: DCVoltage-DCNegativeVoltage
subclauses: DCVoltage-DCPositiveVoltage
comment: This class and its enumerated subclasses represent all possible DC voltage polarities (i.e., positive, negative, and zero) for DC electricity service. : Voltage-DCVoltage Enumerations | Enumeration | |:-----------| | `DCVoltage-DCNegativeVoltage` (see {s223:DCVoltage-DCNegativeVoltage}) | | `DCVoltage-DCPositiveVoltage` (see {s223:DCVoltage-DCPositiveVoltage}) | | `DCVoltage-DCZeroVoltage` |
subclass of: Voltage
property:
  comment: A DC-Voltage shall have a `Numerical-Voltage`
  class: Voltage
  min count: 1
  path: hasVoltage

connects at
type: Inverse relation
type: Property
inverse of: connects through
comment: A `Relation` that associates a `Connection` with a specific `ConnectionPoint`.

has reference location
type: Relation
type: Property
comment: A `Relation` that associates a differential sensor with the topological location of the baseline (reference) `Property` (see {s223:observes}).

hasValue
type: Relation
type: Property
comment: A `Relation` that associates something with a fixed value, as opposed to a computed, measured, or externally derived value.

On and Off enumerations
type: Class
type: NodeShape
comment: This class and its enumerated subclasses represent basic operational states i.e., On and Off. : Binary-OnOff Enumerations | Enumeration | |:-----------| | `OnOff-Off` | | `OnOff-On` |
subclass of: Binary value

DCPositiveVoltage-PoE
type: Class
type: NodeShape
hasVoltage: PoE Voltage
has quantity kind: Voltage
has unit: http://qudt.org/vocab/unit/V
comment: DCPositiveVoltage-PoE
subclass of: DCVoltage-DCPositiveVoltage

EnumerationKind Numerical
type: Class
type: NodeShape
has quantity kind: Unknown
has unit: UNKNOWN
subclauses: AC electricity frequency
subclauses: Line-Line Voltage
subclauses: Line-Neutral Voltage
subclauses: Number of Electrical Phases
subclauses: Voltage
subclauses: has frequency
subclauses: hasVoltage
comment: Numerical enumeration kinds are used to support the definitions of the Electricity medium. The enumerations instances in these classes have names that are recognizable by humans but are just a string for a computer application. To avoid the need to parse strings, each of these enumeration kinds have properties associated with the enumeration that represent electrical phase, voltage, and frequency. The purpose of these properties is to enable a machine to query them and obtain the same information that a person would associate with the string.
subclass of: Enumeration kind
property:
  comment: An `EnumerationKind-Numerical` can be associated with a decimal value using the relation `hasValue`.
  datatype: decimal
  path: hasValue
property:
  comment: An `EnumerationKind-Numerical` shall be associated with at least one Unit using the relation `hasUnit`.
  class: Unit
  min count: 1
  path: hasUnit
  severity: Info
property:
  comment: An `EnumerationKind-Numerical` shall be associated with at least one QuantityKind using the relation `hasQuantityKind`.
  class: QuantityKind
  min count: 1
  path: hasQuantityKind

Occupancy
type: Class
type: NodeShape
subclauses: Occupancy motion
subclauses: Occupancy presence
comment: This class and its enumerated subclasses represent the occupancy status of a space within a building, i.e., the state of being used or occupied by a human being. Some occupancy enumerations have subclasses for more specific use. : EnumerationKind-Occupancy Enumerations | Enumeration | |:-----------| | `Occupancy-Occupied` | | `Occupancy-Unoccupied` |
subclass of: Enumeration kind

Thermodynamic phase
type: Class
type: NodeShape
subclauses: Gas phase
subclauses: Liquid phase
subclauses: has thermodynamic phase
comment: This class and its enumerated subclasses represent thermodynamic phases, also referred to as states of matter. : EnumerationKind-Thermodynamic-Phase Enumerations | Enumeration | |:-----------| | `ThermodynamicPhase-Gas` (see {s223:ThermodynamicPhase-Gas}) | | `ThermodynamicPhase-Liquid` (see {s223:ThermodynamicPhase-Liquid}) | | `ThermodynamicPhase-Solid` | | `ThermodynamicPhase-Vapor` |
subclass of: Enumeration kind

AC electricity frequency
type: Class
type: NodeShape
has quantity kind: Frequency
has unit: HZ
comment: This class and its enumerated subclasses represent common frequencies for AC electricity service. : Numerical-Frequency Enumerations | Enumeration | |:-----------| | `Frequency-50Hz` | | `Frequency-60Hz` |
subclass of: EnumerationKind Numerical
property:
  comment: A `Numerical-Frequency` shall have a `Unit` of `Hertz`
  has value: HZ
  path: hasUnit
property:
  comment: A `Numerical-Frequency` shall have a `QuantityKind` of `Frequency`
  has value: Frequency
  path: hasQuantityKind

Number of Electrical Phases
type: Class
type: NodeShape
has quantity kind: Dimensionless
has unit: NUM
comment: This class and its enumerated subclasses represent all possible service phases for AC electricty service i.e., one or single-phase, and three-phase. The `s223:hasNumberOfElectricalPhases` relation points to one of the values of this enumeration. : Numerical-NumberOfElectricalPhases Enumerations | Enumeration | |:-----------| | `NumberOfElectricalPhases-SinglePhase` | | `NumberOfElectricalPhases-ThreePhase` |
subclass of: EnumerationKind Numerical

Cooling role
type: Class
type: NodeShape
comment: `Role-Cooling`
subclass of: Role

Particulate
type: Class
type: NodeShape
comment: This class and its enumerated subclasses represent common size thresholds of interest for particulate matter that is suspended in a medium in a way that maintains the physical and chemical properties of the medium. ![Particulate Concentration](figures/Figure_x-y_Particulate_Concentration.svg) Figure 10-9 shows an instance of a `Connection` with `hasMedium` referencing `Fluid-Air` that has a `Property` _Particulate Concentration_ of particles with a diameter of 2.5 micrometres (0.0025 mm) or smaller in units of micrograms per cubic meter. ![Carbon Monoxide Concentration](figures/Figure_x-y_Medium_Concentration.svg) Figure 10-10 shows an instance of a `Property` _CO Concentration_ with `ofSubstance` referencing carbon monoxide `Constituent-CO` and `ofMedium` referencing `Fluid-Air` measured in parts-per-million. This figure also shows that the value of this `Property` can be obtained by using the BACnet protocol via the external reference to get the `present-value` of `analog-value,67` in the device with an instance number `12345`. : Substance-Particulate Enumerations | Enumeration | |:-----------| | `Particulate-PM1.0` | | `Particulate-PM10.0` | | `Particulate-PM2.5` |
subclass of: Substance

cnx
type: Symmetric relation
type: Property
comment: A `Relation` that associates adjacent entities in a connection path, comprised of Equipment-ConnectionPoint-Connection-ConnectionPoint-Equipment sequences.

connected to
type: Inverse relation
type: Property
inverse of: connected from
comment: The relation `connectedTo` indicates that connectable things are `connected` with a specific direction of flow. A is `connectedTo` B, means a direction of flow from A to B. The inverse direction is indicated by `connectedFrom` (see {s223:connectedFrom}).
domain: Equipment

has domain
type: Relation
type: Property
comment: A `Relation` that associates a `Zone` or `DomainSpace` with an `EnumerationKind-Domain` (e.g., `Domain-HVAC`, `Domain-Lighting`).

hasVoltage
type: Relation
type: Property
comment: A `Relation` that associates an electricity `Medium` with an electrical voltage.

of constituent
type: Relation
type: Property
comment: A `Relation` that associates a `Property` that characterizes a `Medium-Mix` with one of the constituents of that mix. (ex. `Fluid-Water` `composedOf` `Property` `ofConstituent` `Constituent-H2O`.

Weekday
type: Class
type: NodeShape
comment: This class and its enumerated subclasses represent weekdays, according to the Gregorian calendar i.e., Monday, Tuesday, Wednesday, Thursday, and Friday. : DayOfWeek-Weekday Enumerations | Enumeration | |:-----------| | `Weekday-Friday` | | `Weekday-Monday` | | `Weekday-Thursday` | | `Weekday-Tuesday` | | `Weekday-Wednesday` |
subclass of: Day of week

120V Line-Neutral Voltage
type: Class
type: NodeShape
hasVoltage: 120V
has quantity kind: Voltage
has unit: http://qudt.org/vocab/unit/V
comment: 120V Line-Neutral Voltage
subclass of: Line-Neutral Voltage

Heating role
type: Class
type: NodeShape
comment: `Role-Heating`
subclass of: Role

has observation location
type: Relation
type: Property
comment: A `Relation` that associates a `Sensor` with the topological location where it is observing a `Property` (see {s223:observes}). The observation location shall be a `Connectable` (see {s223:Connectable}), `Connection` (see {s223:Connection}), or `ConnectionPoint` (see {s223:ConnectionPoint}).

paired connection point
type: Symmetric relation
comment: A `Relation` that associates two `ConnectionPoint`s where an `InletConnectionPoint` shares the same `Medium` with an `OutletConnectionPoint`.

DC-PoE electricity
type: Class
type: NodeShape
hasVoltage: DCPositiveVoltage-PoE
comment: This class and its enumerated subclasses represent standardized types of PoE DC electricity. : DC-PoE Enumerations | Enumeration | |:-----------| | `PoE-802.3af-1` | | `PoE-802.3at-2` | | `PoE-802.3bt-3` | | `PoE-802.3bt-4` |
subclass of: DC electricity

Binary value
type: Class
type: NodeShape
subclauses: Logical enumerations
subclauses: On and Off enumerations
subclauses: Binary position enumerations
comment: This class and its enumerated subclasses represent common binary values. : EnumerationKind-Binary Enumerations | Enumeration | |:-----------| | `Binary-Logical` | | `Binary-OnOff` | | `Binary-Position` |
subclass of: Enumeration kind

composed of
type: Relation
type: Property
comment: The relation `composedOf` is used to indicate what substances constitute a material. Allowable values are instances of `Property` that in turn identify constituents defined in `Medium-Constituent` (see {s223:Medium-Constituent}) via the relation `ofConstituent`.

H2O i.e., pure water
type: Class
type: NodeShape
comment: `Constituent-H2O`
subclass of: Constituent

Electrical signal
type: Class
type: NodeShape
subclauses: Wired Ethernet
subclauses: Modulated signal
comment: This class and its enumerated subclasses represent the use of electricity for creating communication signals, and common communication protocols. : Electricity-Signal Enumerations | Enumeration | |:-----------| | `Signal-EIA485` | | `Signal-WiredEthernet` (see {s223:Signal-WiredEthernet})| | `Signal-IEC14908` | | `Signal-Modulated` (see {s223:Signal-Modulated}) | | `Signal-USB` |
subclass of: Electricity

Electrical voltage phase pairs
type: Class
type: NodeShape
comment: This class and its enumerated subclasses represent all possible phase pairs for AC electricity service voltages. : EnumerationKind-ElectricalVoltagePhases Enumerations | Enumeration | |:-----------| | `ElectricalVoltagePhases-ABLineLineVoltage` | | `ElectricalVoltagePhases-ANLineNeutralVoltage` | | `ElectricalVoltagePhases-BCLineLineVoltage` | | `ElectricalVoltagePhases-BNLineNeutralVoltage` | | `ElectricalVoltagePhases-CALineLineVoltage` | | `ElectricalVoltagePhases-CNLineNeutralVoltage` |
subclass of: Enumeration kind

Medium
type: Class
type: NodeShape
subclauses: Constituent
subclauses: Mixed medium
comment: This class and its enumerated subclasses represent substances that facilitate the conveyance of matter, energy, or information. It is used to qualify `Connection`s and `ConnectionPoint`s with the relation `hasMedium` (see {s223:hasMedium}). `Substance-Medium` is also the root of the medium hierarchy that is used to ensure compatibility of different medium designations. For example, `Fluid-Water` and `Water-ChilledWater` are alternative but compatible ways of identifying what is flowing in a pipe, using different degrees of specificity. `Water-ChilledWater` and `Water-HotWater` are not compatible. Compatibility is determined by testing if one medium is a subclass of the other. This gets a bit more complicated in the case of mixtures, where at least one of the constituents of a mixture must be compatible with at least one of the constituents of the other medium. Testing for medium compatibility is done in the context of entities that have a `hasMedium` relation, such as * `Connection` and its associated `ConnectionPoint`s. See {s223:Connection}. * `Junction` and its associated `ConnectionPoint`s See {s223:Junction}. * `Filter` and its associated `ConnectionPoint`s. See {s223:Filter}. * Any `Concept` that has a `hasMedium` relation, compared with an associated `Property` with an `ofMedium` relation. See {s223:Concept}. These tests are listed in the constraint tables for the respective classes listed above, identified as Case 1, Case 2, etc. : Substance-Medium Enumerations | Enumeration | |:-----------| | `Medium-Constituent` (see {s223:Medium-Constituent}) | | `Medium-Mix` (see {s223:Medium-Mix}) | | `Medium-ThermalContact` |
subclass of: Substance

Valve
type: Class
type: NodeShape
comment: A piece of `Equipment` that can be adjusted to allow, regulate or stop the flow of fluid in a pipe or a duct.
subclass of: Equipment

has aspect
type: Relation
type: Property
comment: `hasAspect` is used to establish the context of a `Property`. The value must be an instance of `EnumerationKind`. For example, if a `Property` has a Temperature value of 45.3, the `hasAspect` relation is used to state what that represents, such as a Temperature limit during working hours, etc. A `Property` can have any number of `hasAspect` relations, as needed to establish the context.

Light
type: Class
type: NodeShape
subclauses: Infrared light
comment: This class and its enumerated subclasses represent light at commonly defined frequency or wavelength ranges. : EM-Light Enumerations | Enumeration | |:-----------| | `Light-Infrared` (see {s223:Light-Infrared}) | | `Light-Ultraviolet` | | `Light-Visible` |
subclass of: Electromagnetic energy

Electrical phase identifier
type: Class
type: NodeShape
subclauses: has electrical phase
comment: This class and its enumerated subclasses represent all possible electrical phases for AC electricity service. : EnumerationKind-ElectricalPhaseIdentifier Enumerations | Enumeration | |:-----------| | `ElectricalPhaseIdentifier-A` | | `ElectricalPhaseIdentifier-AB` | | `ElectricalPhaseIdentifier-ABC` | | `ElectricalPhaseIdentifier-B` | | `ElectricalPhaseIdentifier-BC` | | `ElectricalPhaseIdentifier-C` | | `ElectricalPhaseIdentifier-CA` |
subclass of: Enumeration kind

240V Line-Line Voltage
type: Class
type: NodeShape
hasVoltage: 240V
has quantity kind: Voltage
has unit: http://qudt.org/vocab/unit/V
comment: 240V Line-Line Voltage
subclass of: Line-Line Voltage

has enumeration kind
type: Relation
type: Property
comment: A `Relation` that associates an `EnumerableProperty` with a class of enumeration values. This is used to, for example, identify what kind of substance is transported along a `Connection` or which day of the week a setpoint is active.

mapsTo
type: Relation
type: Property
comment: A `Relation` that associates a `ConnectionPoint` of a `Connectable` with a corresponding `ConnectionPoint` of the one containing it (see {pub:equipment-containment}). The associated `ConnectionPoint`s shall have the same direction (see {s223:EnumerationKind-Direction}) and compatible medium (see {s223:Substance-Medium}).

Binary position enumerations
type: Class
type: NodeShape
comment: This class and its enumerated subclasses represent basic positional states i.e., Closed and Open. : Binary-Position Enumerations | Enumeration | |:-----------| | `Position-Closed` | | `Position-Open` |
subclass of: Binary value

Connection
type: Class
type: NodeShape
comment: A `Connection` is the modeling construct used to represent the thing (e.g., pipe, duct, conductor, or free space) that is used to convey some Medium (e.g., water, air, electricity, light, wi-fi) between two connectable things. All connections have two or more connection points bound to either `Equipment` (see {s223:Equipment}), `DomainSpace` (see {s223:DomainSpace}), or `Junction` (see {s223:Junction}) See Figure 6-2. If the direction of flow is constrained, that constraint is indicated by using one or more `InletConnectionPoint`s (see {s223:InletConnectionPoint}) to represent the inflow points and `OutletConnectionPoint`s (see {s223:OutletConnectionPoint}) to represent the outflow points. A `Connection` may contain branches or intersections. These may be modeled using `Junction`s if it is necessary to identify a specific intersection. (see {s223:Junction}). The constraint to maintain compatible mediums among a `Connection` and all of its associated `ConnectionPoint`s gives rise to multiple validation test cases, where the specified medium might be a pure medium, or a mixture with constituents. See {s223:Substance-Medium} for more details. ![Graphical Depiction of Connection.](figures/Figure_5-3_Connection.svg)
subclass of: Concept
property:
  comment: If the relation `connectsFrom` is present it shall associate the `Connection` with a `Connectable`.
  class: Connectable
  message: s223: If the relation `connectsFrom` is present it shall associate the `Connection` with a `Connectable`.
  name: ConnectionToUpstreamConnectableShape
  path: connects from
property:
  comment: Incompatible Medium. Case 5: Two `ConnectionPoint`s with pure mediums.
  name: Test for compatible declared Medium
  path: has Medium
  sparql: SPARQLConstraint
    comment: Incompatible Medium. Case 5: Two `ConnectionPoint`s with pure mediums.
    message: s223: {?cp1} with medium {?m1} is incompatible with {?cp2} with medium {?m2}.
    prefixes: all
    select: SELECT $this ?cp1 ?m1 ?cp2 ?m2 WHERE { $this s223:cnx ?cp1 . ?cp1 a/rdfs:subClassOf* s223:ConnectionPoint . ?cp1 s223:hasMedium ?m1 . $this s223:cnx ?cp2 . ?cp2 a/rdfs:subClassOf* s223:ConnectionPoint . ?cp2 s223:hasMedium ?m2 . FILTER (?m1 != ?m2 ) . FILTER NOT EXISTS {?m1 s223:composedOf ?c1} . FILTER NOT EXISTS {?m2 s223:composedOf ?c2} FILTER (NOT EXISTS {?m2 rdfs:subClassOf* ?m1}) . FILTER (NOT EXISTS {?m1 rdfs:subClassOf* ?m2}) . }
property:
  comment: If the relation `hasRole` is present it shall associate the `Connection` with an `EnumerationKind-Role`.
  class: Role
  message: s223: If the relation `hasRole` is present it shall associate the `Connection` with an `EnumerationKind-Role`.
  path: hasRole
property:
  comment: A `Connection` shall be associated with exactly one `Substance-Medium` using the relation `hasMedium`.
  class: Medium
  max count: 1
  message: s223: A `Connection` shall be associated with exactly one `Substance-Medium` using the relation `hasMedium`.
  min count: 1
  name: Connection medium
  path: has Medium
property:
  comment: Incompatible Medium. Case 3: `Connection` with a pure medium and an associated `ConnectionPoint` with constituents.
  name: Test for compatible declared Medium
  path: has Medium
  sparql: SPARQLConstraint
    comment: Incompatible Medium. Case 3: `Connection` with a pure medium and an associated `ConnectionPoint` with constituents.
    message: s223: `Connection` {$this} with medium {?m2} is incompatible with {?cp} with medium {?m1}.
    prefixes: all
    select: SELECT $this ?m2 ?cp ?m1 WHERE { $this s223:cnx ?cp . ?cp a/rdfs:subClassOf* s223:ConnectionPoint . ?cp s223:hasMedium ?m2 . $this s223:hasMedium ?m1 . ?m2 s223:composedOf/s223:ofConstituent ?s2 . FILTER NOT EXISTS {?m1 s223:composedOf ?c1} . FILTER NOT EXISTS { ?m2 s223:composedOf/s223:ofConstituent ?s12 . {?s12 rdfs:subClassOf* ?m1} UNION {?m1 rdfs:subClassOf* ?s12} . } }
property:
  comment: A `Connection` must only have a `cnx` relation with a `ConnectionPoint`
  path: cnx
  sparql: SPARQLConstraint
    comment: A `Connection` must only have a `cnx` relation with a `ConnectionPoint`
    message: s223: {$this} cannot have a s223:cnx relation to {?something}, because {?something} is not a `ConnectionPoint`.
    prefixes: all
    select: SELECT $this ?something WHERE { $this s223:cnx ?something . FILTER NOT EXISTS {?something a/rdfs:subClassOf* s223:ConnectionPoint} . }
property:
  comment: A `Connection` shall have two or more `cnx` relations to connection points
  class: ConnectionPoint
  message: s223: A `Connection` shall have two or more `cnx` relations to connection points
  path: cnx
property:
  comment: Incompatible Medium. Case 6: Two `ConnectionPoint`s, one with a medium with constituents and one with a pure medium.
  name: Test for compatible declared Medium
  path: has Medium
  sparql: SPARQLConstraint
    comment: Incompatible Medium. Case 6: A medium with constituents and a pure medium.
    message: s223: {?cp1} with medium {?m1} is incompatible with {?cp2} with medium {?m2}.
    prefixes: all
    select: SELECT $this ?cp1 ?m1 ?cp2 ?m2 WHERE { $this s223:cnx ?cp1 . ?cp1 a/rdfs:subClassOf* s223:ConnectionPoint . ?cp1 s223:hasMedium ?m1 . $this s223:cnx ?cp2 . ?cp2 a/rdfs:subClassOf* s223:ConnectionPoint . FILTER (?cp1 != ?cp2 ) . ?cp2 s223:hasMedium ?m2 . ?m2 s223:composedOf/s223:ofConstituent ?s2 . FILTER NOT EXISTS {?m1 s223:composedOf ?c1} . FILTER NOT EXISTS { ?m2 s223:composedOf/s223:ofConstituent ?s12 . {?s12 rdfs:subClassOf* ?m1} UNION {?m1 rdfs:subClassOf* ?s12} . } }
property:
  comment: Incompatible Medium. Case 2: A `Connection` with constituents and an associated `ConnectionPoint` with a pure medium.
  name: Test for compatible declared Medium
  path: has Medium
  sparql: SPARQLConstraint
    comment: Incompatible Medium. Case 2: A `Connection` with constituents and an associated `ConnectionPoint` with a pure medium.
    message: s223: `Connection` {$this} with medium {?m2} is incompatible with {?cp} with medium {?m1}.
    prefixes: all
    select: SELECT $this ?m2 ?cp ?m1 WHERE { $this s223:cnx ?cp . ?cp a/rdfs:subClassOf* s223:ConnectionPoint . ?cp s223:hasMedium ?m1 . $this s223:hasMedium ?m2 . ?m2 s223:composedOf/s223:ofConstituent ?s2 . FILTER NOT EXISTS {?m1 s223:composedOf ?c1} . FILTER NOT EXISTS { ?m2 s223:composedOf/s223:ofConstituent ?s12 . {?s12 rdfs:subClassOf* ?m1} UNION {?m1 rdfs:subClassOf* ?s12} . } }
property:
  comment: If the relation `hasThermodynamicPhase` is present it shall associate the `Connection` with at most one `EnumerationKind-ThermodynamicPhase`.
  class: Thermodynamic phase
  max count: 1
  message: s223: If the relation `hasThermodynamicPhase` is present it shall associate the `Connection` with at most one `EnumerationKind-ThermodynamicPhase`.
  path: has thermodynamic phase
property:
  comment: Incompatible Medium. Case 7: Two `ConnectionPoint`s with mediums with constituents.
  name: Test for compatible declared Medium
  path: has Medium
  sparql: SPARQLConstraint
    comment: Incompatible Medium. Case 7: Two `ConnectionPoint`s with mediums with constituents.
    message: s223: {?cp1} with medium {?m2} is incompatible with {?cp2} with medium {?m1}.
    prefixes: all
    select: SELECT $this ?cp1 ?m1 ?cp2 ?m2 WHERE { $this s223:cnx ?cp1 . ?cp1 a/rdfs:subClassOf* s223:ConnectionPoint . ?cp1 s223:hasMedium ?m2 . $this s223:cnx ?cp2 . ?cp2 a/rdfs:subClassOf* s223:ConnectionPoint . FILTER (?cp1 != ?cp2 ) . ?cp2 s223:hasMedium ?m1 . ?m1 s223:composedOf/s223:ofConstituent ?s1 . ?m2 s223:composedOf/s223:ofConstituent ?s2 . FILTER NOT EXISTS { ?m1 s223:composedOf/s223:ofConstituent ?s11 . ?m2 s223:composedOf/s223:ofConstituent ?s12 . FILTER (?s11 = ?s12) . } FILTER NOT EXISTS { ?m1 s223:composedOf/s223:ofConstituent ?s21 . ?m2 s223:composedOf/s223:ofConstituent ?s22 . {?s22 rdfs:subClassOf* ?s21} UNION {?s21 rdfs:subClassOf* ?s22} . } }
property:
  comment: If the relation `connectsTo` is present it shall associate the `Connection` with a `Connectable`.
  class: Connectable
  message: s223: If the relation `connectsTo` is present it shall associate the `Connection` with a `Connectable`.
  name: ConnectionToDownstreamConnectableShape
  path: connects to
property:
  comment: Incompatible Medium. Case 4: A `Connection` with constituents and an associated `ConnectionPoint` with constituents.
  name: Test for compatible declared Medium
  path: has Medium
  sparql: SPARQLConstraint
    comment: Incompatible Medium. Case 4: A `Connection` with constituents and an associated `ConnectionPoint` with constituents.
    message: s223: `Connection` {$this} with medium {?m2} is incompatible with {?cp} with medium {?m1}.
    prefixes: all
    select: SELECT $this ?m2 ?cp ?m1 WHERE { $this s223:cnx ?cp . ?cp a/rdfs:subClassOf* s223:ConnectionPoint . ?cp s223:hasMedium ?m2 . $this s223:hasMedium ?m1 . ?m1 s223:composedOf/s223:ofConstituent ?s1 . ?m2 s223:composedOf/s223:ofConstituent ?s2 . FILTER NOT EXISTS { ?m1 s223:composedOf/s223:ofConstituent ?s11 . ?m2 s223:composedOf/s223:ofConstituent ?s12 . FILTER (?s11 = ?s12) . } FILTER NOT EXISTS { ?m1 s223:composedOf/s223:ofConstituent ?s21 . ?m2 s223:composedOf/s223:ofConstituent ?s22 . {?s22 rdfs:subClassOf* ?s21} UNION {?s21 rdfs:subClassOf* ?s22} . } }
property:
  comment: A `Connection` shall have two or more `connectsAt` relations to connection points
  class: ConnectionPoint
  message: s223: A `Connection` shall have two or more `connectsAt` relations to connection points
  min count: 2
  path: connects at
  severity: Warning
property:
  comment: Incompatible Medium. Case 1: A `Connection` with a pure medium and an associated `ConnectionPoint` with a pure medium.
  name: Test for compatible declared Medium
  path: has Medium
  sparql: SPARQLConstraint
    comment: Incompatible Medium. Case 1: Two pure mediums.
    message: s223: `Connection` {$this} with medium {?m2} is incompatible with {?cp} with medium {?m1}.
    prefixes: all
    select: SELECT $this ?m2 ?cp ?m1 WHERE { $this s223:cnx ?cp . ?cp a/rdfs:subClassOf* s223:ConnectionPoint . ?cp s223:hasMedium ?m1 . $this s223:hasMedium ?m2 . FILTER (?m1 != ?m2 ) . FILTER NOT EXISTS {?m1 s223:composedOf ?c1} . FILTER NOT EXISTS {?m2 s223:composedOf ?c2} FILTER (NOT EXISTS {?m2 rdfs:subClassOf* ?m1}) . FILTER (NOT EXISTS {?m1 rdfs:subClassOf* ?m2}) . }

DCVoltage-DCNegativeVoltage
type: Class
type: NodeShape
hasVoltage: Voltage
has quantity kind: Voltage
has unit: http://qudt.org/vocab/unit/V
comment: This class and its enumerated subclasses represent common negative voltages for DC electricity service. : DCVoltage-DCNegativeVoltage Enumerations | Enumeration | |:-----------| | `DCNegativeVoltage-12.0V` | | `DCNegativeVoltage-190.0V` | | `DCNegativeVoltage-2.5V` | | `DCNegativeVoltage-24.0V` | | `DCNegativeVoltage-3.0V` | | `DCNegativeVoltage-380.0V` | | `DCNegativeVoltage-48.0V` | | `DCNegativeVoltage-5.0V` | | `DCNegativeVoltage-6.0V` |
subclass of: Voltage-DCVoltage

DC electricity
type: Class
type: NodeShape
hasVoltage: Voltage
subclauses: DC-12V electricity
subclauses: DC-24V electricity
subclauses: DC-380V electricity
subclauses: DC-48V electricity
subclauses: DC-5V electricity
subclauses: DC-6V electricity
subclauses: DC-PoE electricity
comment: This class and its enumerated subclasses represent common DC electricity services. : Electricity-DC Enumerations | Enumeration | |:-----------| | `DC-12V` | | `DC-24V` | | `DC-380V` | | `DC-48V` | | `DC-5V` | | `DC-6V` | | `DC-PoE` |
subclass of: Electricity
property:
  comment: A DC electricity medium shall have one or two reference voltages.
  class: Voltage
  max count: 2
  min count: 1
  path: hasVoltage

Fiber Ethernet
type: Class
type: NodeShape
comment: This class and its enumerated subclasses represent common fiber Ethernet communication protocols. : Signal-FiberEthernet Enumerations | Enumeration | |:-----------| | `FiberEthernet-OM1` | | `FiberEthernet-OM2` | | `FiberEthernet-OM3` | | `FiberEthernet-OM4` | | `FiberEthernet-OM5` | | `FiberEthernet-OS1` | | `FiberEthernet-OS2` |
comment: `Signal-FiberEthernet`
subclass of: Infrared signal

hasUnit
comment: A reference to the unit of measure of a `QuantifiableProperty` of interest.

DCVoltage-DCPositiveVoltage
type: Class
type: NodeShape
hasVoltage: Voltage
has quantity kind: Voltage
has unit: http://qudt.org/vocab/unit/V
comment: This class and its enumerated subclasses represent common positive voltages for DC electricity service. : DCVoltage-DCPositiveVoltage Enumerations | Enumeration | |:-----------| | `DCPositiveVoltage-12.0V` | | `DCPositiveVoltage-190.0V` | | `DCPositiveVoltage-2.5V` | | `DCPositiveVoltage-24.0V` | | `DCPositiveVoltage-3.0V` | | `DCPositiveVoltage-380.0V` | | `DCPositiveVoltage-48.0V` | | `DCPositiveVoltage-5.0V` | | `DCPositiveVoltage-6.0V` | | `DCPositiveVoltage-PoE` |
subclass of: Voltage-DCVoltage

Connectable
type: Class
type: NodeShape
comment: `Connectable` is an abstract class representing a thing such as, `Equipment` (see {s223:Equipment}), `DomainSpace` (see {s223:DomainSpace}), or `Junction` (see {s223:Junction}) that can be `connected` via connection points and connections.
subclass of: Concept
property:
  comment: If the relation `connectedTo` is present it shall associate the `Connectable` with a `Connectable`.
  class: Connectable
  message: s223: If the relation `connectedTo` is present it shall associate the `Connectable` with a `Connectable`.
  name: ConnectableToConnectableShape
  path: connected to
property:
  comment: If the relation `connectedFrom` is present it shall associate the `Connectable` with a `Connectable`.
  class: Connectable
  message: s223: If the relation `connectedFrom` is present it shall associate the `Connectable` with a `Connectable`.
  path: connected from
property:
  comment: If a `Connectable` has `connected` or `connectedTo` (i.e. high-level connection specification), it must also have the supporting `cnx` relations (low-level connection specification).
  path: cnx
  severity: Warning
  sparql: SPARQLConstraint
    comment: If a `Connectable` has the relation`connected` or `connectedTo` (i.e. high-level connection specification), it must also have the supporting `cnx` relations (low-level connection specification).
    message: s223: {$this} is s223:connected (high-level) to {?otherC} but not connected at the cnx-level.
    prefixes: all
    select: SELECT $this ?otherC WHERE { $this s223:connected ?otherC . FILTER NOT EXISTS {$this s223:cnx+ ?otherC} }
property:
  comment: If the relation `cnx` is present it shall associate the `Connectable` with a `ConnectionPoint`.
  class: ConnectionPoint
  message: s223: If the relation `cnx` is present it shall associate the `Connectable` with a `ConnectionPoint`.
  path: cnx
property:
  comment: If the relation `connected` is present it shall associate the `Connectable` with a `Connectable`.
  class: Connectable
  message: s223: If the relation `connected` is present it shall associate the `Connectable` with a `Connectable`.
  name: SymmetricConnectableToConnectableShape
  path: connected
property:
  comment: If the relation `connectedThrough` is present it shall associate the `Connectable` with a `Connection`.
  class: Connection
  message: s223: If the relation `connectedThrough` is present it shall associate the `Connectable` with a `Connection`.
  name: EquipmentToConnectionShape
  path: connected through
property:
  comment: If the relation `hasConnectionPoint` is present it shall associate the `Connectable` with a `ConnectionPoint`.
  class: ConnectionPoint
  message: s223: If the relation `hasConnectionPoint` is present it shall associate the `Connectable` with a `ConnectionPoint`.
  name: EquipmentToConnectionPointShape
  path: has connection point

DCVoltage-DCZeroVoltage
type: Class
type: NodeShape
hasVoltage: 0V
has quantity kind: Voltage
has unit: http://qudt.org/vocab/unit/V
comment: DCVoltage-DCZero voltage
subclass of: Voltage-DCVoltage

Enumeration kind
type: Class
type: NodeShape
comment: This is the encapsulating class for all EnumerationKinds. EnumerationKinds define the (closed) set of permissible values for a given purpose. For example, the DayOfWeek `EnumerationKind` enumerates the days of the week and allows no other values. EnumerationKinds are arranged in a class hierarchy tree, with the root class named `EnumerationKind`. Each subclass is named starting with its immediate superclass, followed by a hyphen and a name that is unique among the sibling classes. Each class is also an instance of itself. This unusual modeling pattern was used to achieve: - The ability to set an EnumerationKind value that is more general, or not yet fully specified at the time of modeling, such as s223:Electricity-AC without having to state exactly what voltage or frequency it is. - The ability to use the sh:class SHACL predicate at any level in the EnumerationKind hierarchy to constrain a value in the s223 specification, even if it is a more general one such as s223:Electricity-AC in the above example. Certain validation constraints exist in the standard that evaluate compatibility of EnumerationKinds. Two values are deemed compatible if they are the same, if one is a direct ancestor (or descendant) of the other, or if they are mixtures sharing at least one constituent.
subclass of: Concept

Domain
type: Class
type: NodeShape
comment: This class and its enumerated subclasses represent building systems and services e.g., HVAC, Lighting, and Plumbing. : EnumerationKind-Domain Enumerations | Enumeration | |:-----------| | `Domain-ConveyanceSystems` | | `Domain-Electrical` | | `Domain-FireProtection` | | `Domain-HVAC` | | `Domain-Lighting` | | `Domain-Networking` | | `Domain-Occupancy` | | `Domain-PhysicalSecurity` | | `Domain-Plumbing` | | `Domain-Refrigeration` |
subclass of: Enumeration kind

Refrigerant
type: Class
type: NodeShape
comment: This class and its enumerated subclasses represent commonly used refrigerants. : Fluid-Refrigerant Enumerations | Enumeration | |:-----------| | `Refrigerant-R-123` | | `Refrigerant-R-134A` | | `Refrigerant-R-22` | | `Refrigerant-R-290` | | `Refrigerant-R-404A` | | `Refrigerant-R-407C` | | `Refrigerant-R-410A` | | `Refrigerant-R-600A` | | `Refrigerant-R-717` | | `Refrigerant-R-744` |
subclass of: Fluid mixture

contains
type: Relation
type: Property
comment: A `Relation` that associates a piece of `Equipment` with its component pieces of `Equipment`, or a `PhysicalSpace` (see {s223:PhysicalSpace}) with its component `PhysicalSpace`s.

Constituent
type: Class
type: NodeShape
subclauses: Electricity
subclauses: Electromagnetic energy
subclauses: Nitrogen oxide
comment: This class and its enumerated subclasses represent substances that may be combined to form a `Medium-Mix`. Constituents are distinguished from `Medium-Mix` and its subclasses in that constituents cannot use the `composedOf` relation to reference a concentration of other constituents. : Medium-Constituent Enumerations | Enumeration | |:-----------| | `Constituent-CO2` | | `Constituent-CO` | | `Constituent-Electricity` (see {s223:Constituent-Electricity}) | | `Constituent-EM` (see {s223:Constituent-EM}) | | `Constituent-Glycol` | | `Constituent-H2O` | | `Constituent-H2S` | | `Constituent-CH4` | | `Constituent-NOX` (see {s223:Constituent-NOX}) | | `Constituent-O3` | | `Constituent-Radon` | | `Constituent-SO2` | | `Constituent-VolatileOrganicCompounds` |
subclass of: Medium

Sensor
type: Class
type: NodeShape
comment: A `Sensor` `observes` an `ObservableProperty` (see {s223:ObservableProperty}) which may be quantifiable (see {s223:QuantifiableObservableProperty}), such as a temperature, flow, or concentration, or enumerable (see {s223:EnumeratedObservableProperty}), such as an occupancy state. If a `Sensor` observes a `QuantifiableObservableProperty` relative to an assumed or common reference point, it can be modeled with only an observation location. For example: ``` @prefix : <http://example.com/> . :example1 a s223:TemperatureSensor ; s223:hasObservationLocation :location1 ; qudt:hasQuantityKind quantitykind:Temperature ; . ``` If a `Sensor` observes a `QuantifiableObservableProperty` relative to a unique or specified reference point, it can be modeled with an observation location and a reference location, and indicating the difference between two values by setting `isDeltaQuantity` to `true`. For example: ``` @prefix : <http://example.com/> . :example2 a s223:TemperatureSensor ; s223:hasObservationLocation :location1 ; s223:hasReferenceLocation :location2 ; qudt:hasQuantityKind quantitykind:Temperature ; qudt:isDeltaQuantity true ; . ```
subclass of: Equipment
property:
  comment: If a `Sensor` measures a differential property, it shall be associated with exactly 1 of `Connectable`, `Connection`, or `ConnectionPoint` using the relation `hasReferenceLocation`.
  max count: 1
  message: s223: If a `Sensor` measures a differential property, it shall be associated with exactly 1 of `Connectable`, `Connection`, or `ConnectionPoint` using the relation `hasReferenceLocation`.
  path: has reference location
property:
  comment: A `Sensor` shall be associated with exactly one location using the relation `hasObservationLocation`.
  max count: 1
  message: s223: A `Sensor` shall be associated with exactly one location using the relation `hasObservationLocation`.
  min count: 1
  path: has observation location
property:
  comment: s223: If the `hasReferenceLocation` relation exists, the observed `Property` shall have isDeltaQuantity true.
  path: observes
  sparql: SPARQLConstraint
    comment: s223: If the `hasReferenceLocation` relation exists, the observed `Property` shall have isDeltaQuantity true.
    message: s223: `Sensor` {$this} has a reference location, but its `Property` lacks isDeltaQuantity true.
    prefixes: all
    select: SELECT $this WHERE { $this s223:hasReferenceLocation ?y . $this s223:observes ?x . ?x a/rdfs:subClassOf* s223:QuantifiableProperty . FILTER NOT EXISTS {$this s223:observes/qudt:isDeltaQuantity true} }
property:
  comment: s223: If the observed `Property` has isDeltaQuantity true, the `Sensor` shall have a `hasReferenceLocation` relation.
  path: observes
  sparql: SPARQLConstraint
    comment: s223: If the observed `Property` has isDeltaQuantity true, the `Sensor` shall have a `hasReferenceLocation` relation.
    message: s223: `Sensor` {$this} has `Property` {?x} with isDeltaQuantity true, but the `Sensor` lacks a reference location.
    prefixes: all
    select: SELECT $this ?x WHERE { $this s223:observes/qudt:isDeltaQuantity true . $this s223:observes ?x . ?x a/rdfs:subClassOf* s223:QuantifiableProperty . FILTER NOT EXISTS {$this s223:hasReferenceLocation ?y} }
property:
  comment: If the relation `hasMeasurementResolution` is present it shall associate a `Sensor` with a `QuantifiableProperty`.
  class: Quantifiable Property
  message: s223: If the relation `hasMeasurementResolution` is present it shall associate a `Sensor` with a `QuantifiableProperty`.
  path: has measurement resolution
property:
  comment: A `Sensor` shall be associated with exactly one `ObservableProperty` using the relation `observes`.
  class: Observable Property
  max count: 1
  message: s223: A `Sensor` shall be associated with exactly one `ObservableProperty` using the relation `observes`.
  min count: 1
  path: observes

hasRole
type: Relation
type: Property
comment: A `Relation` that associates a role with of a piece of `Equipment`, a `Connection`, `ConnectionPoint`, or `System` within a building (e.g., a heating coil might be associated with `Role-Heating`). Possible values are defined in `EnumerationKind-Role` (see {s223:EnumerationKind-Role}).

has Property
type: Relation
type: Property
comment: A `Relation` that associates a `Concept` with a `Property`.

Wired Ethernet
type: Class
type: NodeShape
comment: This class and its enumerated subclasses represent common wired Ethernet protocols. : Signal-WiredEthernet Enumerations | Enumeration | |:-----------| | `WiredEthernet-Cat1` | | `WiredEthernet-Cat2` | | `WiredEthernet-Cat3` | | `WiredEthernet-Cat4` | | `WiredEthernet-Cat5` | | `WiredEthernet-Cat5e` | | `WiredEthernet-Cat6` | | `WiredEthernet-Cat6a` | | `WiredEthernet-Cat7` | | `WiredEthernet-Cat7a` | | `WiredEthernet-Cat8` |
subclass of: Electrical signal

Fluid mixture
type: Class
type: NodeShape
subclauses: Refrigerant
subclauses: Water
comment: This class and its enumerated subclasses represent substances that are commonly used to convey liquids or gases. : Mix-Fluid Enumerations | Enumeration | |:-----------| | `Fluid-Air` | | `Fluid-NaturalGas` | | `Fluid-Oil` | | `Fluid-Refrigerant` (see {s223:Fluid-Refrigerant}) | | `Fluid-Water` (see {s223:Fluid-Water}) |
subclass of: Mixed medium

Line-Line Voltage
type: Class
type: NodeShape
hasVoltage: Voltage
has quantity kind: Voltage
has unit: http://qudt.org/vocab/unit/V
comment: This class and its enumerated instances represent common line-line voltages for AC electricity service. : Numerical-LineLineVoltage Enumerations | Enumeration | |:-----------| | `LineLineVoltage-10000V` | | `LineLineVoltage-190V` | | `LineLineVoltage-208V` | | `LineLineVoltage-220V` | | `LineLineVoltage-240V` | | `LineLineVoltage-3000V` | | `LineLineVoltage-3300V` | | `LineLineVoltage-380V` | | `LineLineVoltage-400V` | | `LineLineVoltage-415V` | | `LineLineVoltage-4160V` | | `LineLineVoltage-480V` | | `LineLineVoltage-6000V` | | `LineLineVoltage-600V` | | `LineLineVoltage-6600V` |
subclass of: EnumerationKind Numerical
property:
  comment: A Numerical-LineLineVoltage shall have a `Numerical-Voltage`
  class: Voltage
  min count: 1
  path: hasVoltage

Bidirectional Connection Point
type: Class
type: NodeShape
comment: A `BidirectionalConnectionPoint` is a `ConnectionPoint` for which a medium (`Substance-Medium`) is expected to flow either into or out of the associated `Connectable`.
subclass of: ConnectionPoint
property:
  comment: If the relation `mapsTo` is present it shall associate the `BidirectionalConnectionPoint` with a `BidirectionalConnectionPoint`.
  class: Bidirectional Connection Point
  message: s223: If the relation `mapsTo` is present it shall associate the `BidirectionalConnectionPoint` with a `BidirectionalConnectionPoint`.
  path: mapsTo
property:
  comment: If the relation `pairedConnectionPoint` is present it shall associate the `BidirectionalConnectionPoint` with a `ConnectionPoint`.
  class: ConnectionPoint
  message: s223: If the relation `pairedConnectionPoint` is present it shall associate the `BidirectionalConnectionPoint` with a `ConnectionPoint`.
  path: paired connection point

Aspect
type: Class
type: NodeShape
subclauses: Equipment information aspect
subclauses: Equipment operation aspect
subclauses: Operational limits aspect
subclauses: Control parameter aspect
subclauses: Delta quantity aspect
comment: Aspect enumerations provide context to the meaning of a `Property` that would otherwise not be apparent.
subclass of: Enumeration kind

Line-Neutral Voltage
type: Class
type: NodeShape
hasVoltage: Voltage
has quantity kind: Voltage
has unit: http://qudt.org/vocab/unit/V
comment: This class and its enumerated subclasses represent common line-neutral voltages for AC electricity service. : Numerical-LineNeutralVoltage Enumerations | Enumeration | |:-----------| | `LineNeutralVoltage-110V` | | `LineNeutralVoltage-120V` | | `LineNeutralVoltage-127V` | | `LineNeutralVoltage-139V` | | `LineNeutralVoltage-1730V` | | `LineNeutralVoltage-1900V` | | `LineNeutralVoltage-208V` | | `LineNeutralVoltage-219V` | | `LineNeutralVoltage-230V` | | `LineNeutralVoltage-2400V` | | `LineNeutralVoltage-240V` | | `LineNeutralVoltage-24V` | | `LineNeutralVoltage-277V` | | `LineNeutralVoltage-3460V` | | `LineNeutralVoltage-347V` | | `LineNeutralVoltage-3810V` | | `LineNeutralVoltage-5770V` |
subclass of: EnumerationKind Numerical
property:
  comment: A Numerical-LineNeutralVoltage shall have a `Numerical-Voltage`
  class: Voltage
  min count: 1
  path: hasVoltage

Property
type: Class
type: NodeShape
comment: An attribute, quality, or characteristic of a feature of interest. The `Property` class is the parent of all variations of a `Property`, which are: `ActuatableProperty` - subclass of `Property` that can be modified by user or machine outside of the model (typically command); `ObservableProperty` - subclass of `Property` that are observed (typically measures); `EnumerableProperty` - subclass of `Property` defined by `EnumerationKind`; `QuantifiableProperty` - subclass of `Property` defined by numerical values. And their subclass combinations : `QuantifiableActuatableProperty`, `QuantifiableObservableProperty`, `EnumeratedObservableProperty`, `EnumeratedActuatableProperty`. A `QuantifiableProperty` (or subClass thereof) shall always be associated with a `Unit` and a `QuantityKind`, either explicitly from the `Property`, or through the associated Value. If the `Unit` is defined, the SHACL reasoner (if invoked) will figure out and assert a `QuantityKind` if it is unambiguous. Enumerable properties shall be associated with an `EnumerationKind`. Different flavors of properties are shown in Figure 11-1. ![Different flavors of Properties](figures/Figure_11-1_Flavors_of_Properties.svg) A `Property` instance that is not an instance of one of the subclasses is unconstrained with respect to its value.
subclass of: Concept
property:
  comment: If the relation `hasExternalReference` is present it shall associate the `Property` with an `ExternalReference`.
  class: ExternalReference
  message: s223: If the relation `hasExternalReference` is present it shall associate the `Property` with an `ExternalReference`.
  path: has external reference
property:
  comment: A `Property` must not have both a `hasExternalReference` and a `hasValue` relation.
  path: hasValue
  sparql: SPARQLConstraint
    comment: A `Property` must not have both a `hasExternalReference` and a `hasValue` relation.
    message: s223: {$this} cannot have both a `hasExternalReference` and a `hasValue` relation.
    prefixes: all
    select: SELECT $this WHERE { $this s223:hasExternalReference ?ext . $this s223:hasValue ?val . }
property:
  comment: A `Property` must not have both a `hasInternalReference` and a `hasExternalReference` relation.
  path: has internal reference
  sparql: SPARQLConstraint
    comment: A `Property` must not have both a `hasInternalReference` and a `hasExternalReference` relation.
    message: s223: {$this} cannot have both a `hasInternalReference` and a `hasExternalReference` relation.
    prefixes: all
    select: SELECT $this WHERE { $this s223:hasInternalReference ?int . $this s223:hasExternalReference ?ext . }
property:
  comment: A `Property` can be associated with at most one `EnumerationKind-Substance` using the relation `ofSubstance`.
  class: Substance
  max count: 1
  message: s223: A `Property` can be associated with at most one `EnumerationKind-Substance` using the relation `ofSubstance`.
  path: of substance
property:
  comment: If a `Property` has an `ofSubstance` relation, it should also have an `ofMedium` relation.
  path: of substance
  sparql: SPARQLConstraint
    comment: If a `Property` has an `ofSubstance` relation, it should also have an `ofMedium` relation.
    message: s223: Since Property {$this} has an `ofSubstance` relation, it should also have an `ofMedium` relation.
    prefixes: all
    select: SELECT $this WHERE { $this s223:ofSubstance ?substance . FILTER NOT EXISTS {$this s223:ofMedium ?medium} . }
property:
  comment: A `Property` can be associated with at most one `Function` using the inverse relation `hasOutput`.
  class: Function
  max count: 1
  message: s223: A `Property` can be associated with at most one `Function` using the inverse relation `hasOutput`.
  path:
    inverse path: has output
property:
  comment: A `Property` can be associated with at most one `Substance-Medium` using the relation `ofMedium`.
  class: Medium
  max count: 1
  message: s223: A `Property` can be associated with at most one `Substance-Medium` using the relation `ofMedium`.
  path: of medium
property:
  comment: A `Property` can use at most one relation `hasValue` if it is required to provide a static value in the model. It is not meant for real-time value (see {s223:hasExternalReference}).
  max count: 1
  message: s223: A `Property` can use at most one relation `hasValue` if it is required to provide a static value in the model. It is not meant for real-time value (see {s223:hasExternalReference}).
  path: hasValue
property:
  comment: If the relation `hasAspect` is present, it shall associate the `Property` with an `EnumerationKind`.
  class: Enumeration kind
  message: s223: If the relation `hasAspect` is present, it shall associate the `Property` with an `EnumerationKind`.
  path: has aspect
property:
  path: of constituent
  sparql: SPARQLConstraint
    comment: If an incoming relation `composedOf` exists, then the `Property` must have a declared substance using the relation `ofConstituent`.
    message: s223: `Property` {$this} is referred to by {?something} with s223:composedOf, but the `Property` has no value for s223:ofConstituent.
    prefixes: all
    select: SELECT $this ?something WHERE { ?something s223:composedOf $this . FILTER NOT EXISTS {$this s223:ofConstituent ?someSubstance} . }
property:
  comment: A `Property` must not have both a `hasInternalReference` and a `hasValue` relation.
  path: has internal reference
  sparql: SPARQLConstraint
    comment: A `Property` must not have both a `hasInternalReference` and a `hasValue` relation.
    message: s223: {$this} cannot have both a `hasInternalReference` and a `hasValue` relation.
    prefixes: all
    select: SELECT $this WHERE { $this s223:hasInternalReference ?int . $this s223:hasValue ?val . }
property:
  comment: If the relation `hasInternalReference` is present it shall associate the `Property` with at most one other `Property`.
  class: Property
  max count: 1
  message: s223: If the relation `hasInternalReference` is present it shall associate the `Property` with at most one other `Property`.
  path: has internal reference
property:
  comment: A `Property` must not be observed (set) by more than one entity.
  max count: 1
  message: s223: A `Property` must not be observed (set) by more than one entity.
  path:
    inverse path: observes
sparql: SPARQLConstraint
  comment: A `Property` cannot be declared an instance of both an `ActuatableProperty` and an `ObservableProperty`.
  message: s223: {$this} cannot be declared an instance of both an `ActuatableProperty` and an `ObservableProperty`.
  prefixes: all
  select: SELECT $this WHERE { $this a/rdfs:subClassOf* s223:ActuatableProperty . $this a/rdfs:subClassOf* s223:ObservableProperty . }

observes
type: Relation
type: Property
comment: A `Relation` that associates a `Sensor` with one `ObservableProperty` (see {s223:ObservableProperty}) which is used by the sensor to generate a measurement value (e.g. a temperature) or a simple observation of a stimulus causing a reaction (e.g. a current binary switch that closes a dry contact when a fan is powered on).

ConnectionPoint
type: Class
type: NodeShape
comment: A `ConnectionPoint` is an abstract modeling construct used to represent the fact that one connectable thing can be connected to another connectable thing using a `Connection`. It is the abstract representation of the flange, wire terminal, or other physical feature where a connection is made. `Equipment`, `DomainSpace`s and `Junction`s can have one or more `ConnectionPoint`s (see {s223:Connectable}). A `ConnectionPoint` is constrained to relate to a specific medium such as air, water, or electricity which determines what other things can be connected to it. For example, constraining a ConnectionPoint to be for air means it cannot be used for an electrical connection. A `ConnectionPoint` belongs to exactly one connectable thing (see {s223:Connectable}). `ConnectionPoint`s are represented graphically in this standard by a triangle with the point indicating a direction of flow, or a diamond in the case of a bidirectional flow as shown in Figure 6-1. ![Graphical Representation of a ConnectionPoint.](figures/Figure_5-2_Graphical_Depiciton_of_Connection_Points.svg)
subclass of: Concept
property:
  comment: If a `ConnectionPoint` lacks a `connectsThrough` and `mapsTo` relation, and is not associated with a `Junction` or `Equipment` that is contained by an `Equipment`, then suggest that the `ConnectionPoint` probably needs an association with a `Connection`.
  path: connects through
  severity: Info
  sparql: SPARQLConstraint
    comment: If a `ConnectionPoint` lacks a `connectsThrough` and `mapsTo` relation, and is not associated with a `Junction` or `Equipment` that is contained by an `Equipment`, then suggest that the `ConnectionPoint` probably needs an association with a `Connection`.
    message: s223: `ConnectionPoint` {$this} probably needs an association with a `Connection`, or use of `hasOptionalConnectionPoint` or `hasBoundaryConnectionPoint` qualifiers.
    prefixes: all
    select: SELECT $this WHERE { FILTER NOT EXISTS {?sys1 s223:hasBoundaryConnectionPoint $this} . FILTER NOT EXISTS {?sys2 s223:hasOptionalConnectionPoint $this} . FILTER NOT EXISTS {$this s223:connectsThrough ?anything1} . FILTER NOT EXISTS {$this s223:mapsTo ?anything2} . $this s223:isConnectionPointOf ?equipment . FILTER NOT EXISTS {?containerEquipment s223:contains ?equipment} . }
property:
  comment: If the relation `hasElectricalPhase` is present it shall associate the `ConnectionPoint` with an ElectricalPhaseIdentifier or ElectricalVoltagePhases.
  message: s223: If the relation `hasElectricalPhase` is present it shall associate the `ConnectionPoint` with an ElectricalPhaseIdentifier or ElectricalVoltagePhases.
  or:
    class: Electrical phase identifier
  or:
    class: Electrical voltage phase pairs
  path: has electrical phase
property:
  comment: A `ConnectionPoint` shall be associated with at most one `Connection` using the relation `connectsThrough`.
  class: Connection
  max count: 1
  message: s223: This `ConnectionPoint` shall be associated with at most one `Connection`.
  name: ConnectionPointToConnectionShape
  path: connects through
  severity: Info
property:
  comment: A `ConnectionPoint` can be associated with at most one other `ConnectionPoint` using the inverse of relation `mapsTo`
  class: ConnectionPoint
  max count: 1
  message: s223: A `ConnectionPoint` can be associated with at most one other `ConnectionPoint` using the inverse of relation `mapsTo`
  path:
    inverse path: mapsTo
property:
  comment: Ensure that the Medium identified by a `ConnectionPoint` via the `hasMedium` relation is compatible with the Medium identified by the entity identified by the `mapsTo` relation.
  name: Test for compatible declared Medium
  path: has Medium
  sparql: SPARQLConstraint
    comment: Ensure that the Medium identified by a `ConnectionPoint` via the `hasMedium` relation is compatible with the Medium identified by the entity identified by the `mapsTo` relation.
    message: s223: {$this} declares a medium of {?a}, but the medium of {?b} is declared by {?target} pointed to by the `mapsTo` relation.
    prefixes: all
    select: SELECT DISTINCT $this ?a ?b ?target WHERE { $this s223:hasMedium ?a . $this s223:mapsTo+ ?target . ?target s223:hasMedium ?b . ?a a/rdfs:subClassOf* s223:Substance-Medium . ?b a/rdfs:subClassOf* s223:Substance-Medium . FILTER (?a != ?b ) . FILTER (NOT EXISTS {?b a/rdfs:subClassOf* ?a}) . FILTER (NOT EXISTS {?a a/rdfs:subClassOf* ?b}) . }
property:
  comment: If a `ConnectionPoint` `mapsTo` another `ConnectionPoint`, the respective `Equipment` should have a `contains` relation.
  path: mapsTo
  sparql: SPARQLConstraint
    comment: If a `ConnectionPoint` `mapsTo` another `ConnectionPoint`, the respective `Equipment` should have a `contains` relation.
    message: s223: {?otherEquipment} should contain {?equipment} because `ConnectionPoint` {$this} has a `mapsTo` relation.
    prefixes: all
    select: SELECT $this ?equipment ?otherEquipment WHERE { $this s223:mapsTo ?otherCP . ?equipment s223:hasConnectionPoint $this . ?otherEquipment s223:hasConnectionPoint ?otherCP . FILTER NOT EXISTS {?otherEquipment s223:contains ?equipment} }
property:
  comment: If the relation `hasRole` is present it shall associate the `ConnectionPoint` with an `EnumerationKind-Role`.
  class: Role
  message: s223: If the relation `hasRole` is present it shall associate the `ConnectionPoint` with an `EnumerationKind-Role`.
  path: hasRole
property:
  comment: A `ConnectionPoint` shall be associated with exactly one `Substance-Medium` using the relation `hasMedium`.
  class: Medium
  max count: 1
  message: s223: A `ConnectionPoint` shall be associated with exactly one `Substance-Medium` using the relation `hasMedium`.
  min count: 1
  name: ConnectionPoint medium
  path: has Medium
property:
  comment: A `ConnectionPoint` shall be associated with at most one `Connectable` using the `cnx` relation.
  message: s223: A `ConnectionPoint` shall be associated with at most one `Connectable` using the `cnx` relation.
  path: cnx
  qualified max count: 1
  qualified value shape:
    class: Connectable
  qualified value shapes disjoint: true
property:
  comment: A `ConnectionPoint` shall be associated with exactly one `Connectable` using the relation `isConnectionPointOf`.
  class: Connectable
  max count: 1
  message: s223: A `ConnectionPoint` shall be associated with exactly one `Connectable` using the relation `isConnectionPointOf`.
  min count: 1
  name: ConnectionPointToEquipmentShape
  path: is connection point of
property:
  comment: A `ConnectionPoint` shall be associated with at most one `Connection` using the `cnx` relation
  message: s223: A `ConnectionPoint` shall be associated with at most one `Connection` using the `cnx` relation
  path: cnx
  qualified max count: 1
  qualified value shape:
    class: Connection
  qualified value shapes disjoint: true
property:
  comment: A `ConnectionPoint` can be associated with at most one other `ConnectionPoint` using the relation `mapsTo`
  class: ConnectionPoint
  max count: 1
  message: s223: A `ConnectionPoint` can be associated with at most one other `ConnectionPoint` using the relation `mapsTo`
  path: mapsTo
property:
  comment: A `ConnectionPoint` must not have both a `mapsTo` and a `connectsThrough` relation.
  path: mapsTo
  sparql: SPARQLConstraint
    comment: A `ConnectionPoint` must not have both a `mapsTo` and a `connectsThrough` relation.
    message: s223: {$this} cannot have both a `mapsTo` {?uppercp} and a `connectsThrough` {?connection}.
    prefixes: all
    select: SELECT $this ?uppercp ?connection WHERE { $this s223:mapsTo ?uppercp . $this s223:connectsThrough ?connection . ?connection a/rdfs:subClassOf* s223:Connection . }
property:
  comment: If a `ConnectionPoint` lacks a `connectsThrough` and `mapsTo` relation, but is associated with a `Junction` or `Equipment` that is contained by an `Equipment`, then suggest that the `ConnectionPoint` might need a `mapsTo` relation to a `ConnectionPoint` of the containing `Equipment`.
  path: mapsTo
  severity: Info
  sparql: SPARQLConstraint
    comment: If a `ConnectionPoint` lacks a `connectsThrough` and `mapsTo` relation, but is associated with a `Junction` or `Equipment` that is contained by an `Equipment`, then suggest that the `ConnectionPoint` might need a `mapsTo` relation to a `ConnectionPoint` of the containing `Equipment`.
    message: s223: `ConnectionPoint` {$this} could be missing a `mapsTo` relation to a `ConnectionPoint` of {?containerEquipment} because it is associated with a `Junction` or `Equipment` that is contained by {?containerEquipment}.
    prefixes: all
    select: SELECT $this ?containerEquipment WHERE { FILTER NOT EXISTS {$this s223:connectsThrough ?anything1} . FILTER NOT EXISTS {$this s223:mapsTo ?anything2} . FILTER NOT EXISTS {?anything3 s223:hasBoundaryConnectionPoint $this} . $this s223:isConnectionPointOf ?equipment . ?containerEquipment s223:contains ?equipment . }
sparql: SPARQLConstraint
  comment: Subclasses of ConnectionPoint are Disjoint. An instance of a subclass of ConnectionPoint cannot be an instance of multiple such subclasses.
  message: s223: `ConnectionPoint` {$this} cannot be an instance of both {?subclass1} and {?subclass2}.
  prefixes: all
  select: SELECT $this ?subclass1 ?subclass2 WHERE { $this a ?subclass1, ?subclass2 . ?subclass1 rdfs:subClassOf s223:ConnectionPoint . ?subclass2 rdfs:subClassOf s223:ConnectionPoint . FILTER(?subclass1 != ?subclass2) }

Quantifiable Property
type: Class
type: NodeShape
comment: This class is for quantifiable values that describe an object (`System`, `Equipment`, etc.) that are typically static (`hasValue`). That is, they are neither measured nor specified in the course of operations.
subclass of: Property
property:
  comment: A `QuantifiableProperty` can be associated with a`QuantifiableProperty` using the relation `hasThreshold`.
  class: Quantifiable Property
  message: s223: A `QuantifiableProperty` can be associated with a`QuantifiableProperty` using the relation `hasThreshold`.
  path: has threshold
property:
  comment: This `QuantifiableProperty` and the associated setpoint use non-commensurate `Unit`s.
  path: hasUnit
  sparql: SPARQLConstraint
    comment: This `QuantifiableProperty` and the associated setpoint use non-commensurate `Unit`s.
    message: s223: {$this} uses `Unit` {?punit}, while setpoint {?setpoint} uses `Unit` {?sunit}. These are non-commensurate.
    prefixes: all
    select: SELECT $this ?setpoint ?punit ?sunit WHERE { $this qudt:hasUnit ?punit . $this s223:hasSetpoint ?setpoint . ?setpoint qudt:hasUnit ?sunit . ?punit qudt:hasDimensionVector ?pdv . ?sunit qudt:hasDimensionVector ?sdv . FILTER (?punit != ?sunit) . FILTER (?pdv != ?sdv) . }
property:
  comment: Normally, a `QuantifiableProperty` is associated with a static decimal value using `hasValue`, along with a single `Unit` and `QuantityKind`. However, in some cases, a `QuantifiableProperty` may instead be associated with a `QuantityValue` using the relation `quantityValue`. This allows the `QuantityValue` to express multiple equivalent combinations of `Unit` and value.
  class: QuantityValue
  message: s223: Normally, a `QuantifiableProperty` is associated with a static decimal value using `hasValue`, along with a single `Unit` and `QuantityKind`. However, in some cases, a `QuantifiableProperty` may instead be associated with a `QuantityValue` using the relation `quantityValue`. This allows the `QuantityValue` to express multiple equivalent combinations of `Unit` and value.
  path: quantityValue
property:
  comment: A `QuantifiableProperty` shall be associated with a `QuantityKind` using the relation `hasQuantityKind`.
  class: QuantityKind
  max count: 1
  message: s223: A `QuantifiableProperty` shall be associated with a `QuantityKind` using the relation `hasQuantityKind`.
  min count: 1
  path: hasQuantityKind
property:
  comment: A `QuantifiableProperty` should use `s223:hasValue` instead of `qudt:value`.
  max count: 0
  message: s223: A `QuantifiableProperty` should use `s223:hasValue` instead of `qudt:value`.
  path: value
property:
  comment: A `QuantifiableProperty` can be associated with a `QuantifiableProperty` using the relation `hasDeadband`.
  class: Quantifiable Property
  message: s223: A `QuantifiableProperty` can be associated with a `QuantifiableProperty` using the relation `hasDeadband`.
  path: has deadband
property:
  comment: This `QuantifiableProperty` and the associated threshold use non-commensurate `Unit`s.
  path: hasUnit
  sparql: SPARQLConstraint
    comment: This `QuantifiableProperty` and the associated threshold use non-commensurate `Unit`s.
    message: s223: {$this} uses `Unit` {?punit}, while threshold {?threshold} uses `Unit` {?tunit}. These are non-commensurate.
    prefixes: all
    select: SELECT $this ?threshold ?punit ?tunit WHERE { $this qudt:hasUnit ?punit . $this s223:hasThreshold ?threshold . ?threshold qudt:hasUnit ?tunit . ?punit qudt:hasDimensionVector ?pdv . ?tunit qudt:hasDimensionVector ?tdv . FILTER (?punit != ?tunit) . FILTER (?pdv != ?tdv) . }
property:
  comment: This `QuantifiableProperty` and the associated deadband use non-commensurate `Unit`s.
  path: hasUnit
  sparql: SPARQLConstraint
    comment: This `QuantifiableProperty` and the associated deadband use non-commensurate `Unit`s.
    message: s223: {$this} uses `Unit` {?punit}, while deadband {?deadband} uses `Unit` {?dunit}. These are non-commensurate.
    prefixes: all
    select: SELECT $this ?deadband ?punit ?dunit WHERE { $this qudt:hasUnit ?punit . $this s223:hasDeadband ?deadband . ?deadband qudt:hasUnit ?dunit . ?punit qudt:hasDimensionVector ?pdv . ?dunit qudt:hasDimensionVector ?ddv . FILTER (?punit != ?dunit) . FILTER (?pdv != ?ddv) . }
property:
  comment: This `QuantifiableProperty` uses a different `Unit` than the threshold associated with it.
  path: hasUnit
  severity: Info
  sparql: SPARQLConstraint
    comment: This `QuantifiableProperty` uses a different `Unit` than the threshold associated with it.
    message: s223: {$this} uses `Unit` {?punit}, while threshold {?threshold} uses `Unit` {?tunit}. Be careful.
    prefixes: all
    select: SELECT $this ?threshold ?punit ?tunit WHERE { $this qudt:hasUnit ?punit . $this s223:hasThreshold ?threshold . ?threshold qudt:hasUnit ?tunit . ?punit qudt:hasDimensionVector ?pdv . ?tunit qudt:hasDimensionVector ?tdv . FILTER (?punit != ?tunit) . FILTER (?pdv = ?tdv) . }
property:
  comment: This `QuantifiableProperty` and the Setpoint associated with it have non-commensurate `QuantityKind`s.
  path: hasQuantityKind
  sparql: SPARQLConstraint
    comment: This `QuantifiableProperty` and the Setpoint associated with it have non-commensurate `QuantityKind`s.
    message: s223: {$this} uses `QuantityKind` {?pqk} with DimensionVector {?pdv}, while Setpoint {?setpoint} uses `QuantityKind` {?sqk} with DimensionVector {?sdv}. These are non-commensurate
    prefixes: all
    select: SELECT $this ?setpoint ?pqk ?sqk ?pdv ?sdv WHERE { $this qudt:hasQuantityKind ?pqk . $this s223:hasSetpoint ?setpoint . ?setpoint qudt:hasQuantityKind ?sqk . ?pqk qudt:hasDimensionVector ?pdv . ?sqk qudt:hasDimensionVector ?sdv . FILTER (?pqk != ?sqk) . FILTER (?pdv != ?sdv) . }
property:
  comment: This `QuantifiableProperty` uses a different `Unit` than the deadband associated with it.
  path: hasUnit
  severity: Info
  sparql: SPARQLConstraint
    comment: This `QuantifiableProperty` uses a different `Unit` than the deadband associated with it.
    message: s223: {$this} uses `Unit` {?punit}, while deadband {?deadband} uses `Unit` {?dunit}. Be careful.
    prefixes: all
    select: SELECT $this ?deadband ?punit ?dunit WHERE { $this qudt:hasUnit ?punit . $this s223:hasDeadband ?deadband . ?deadband qudt:hasUnit ?dunit . ?punit qudt:hasDimensionVector ?pdv . ?dunit qudt:hasDimensionVector ?ddv . FILTER (?punit != ?dunit) . FILTER (?pdv = ?ddv) . }
property:
  comment: This `QuantifiableProperty` cannot have a value without a `Unit`.
  path: hasValue
  sparql: SPARQLConstraint
    comment: This `QuantifiableProperty` cannot have a value without a `Unit`.
    message: s223: {$this} referenced by {?subject} has a value of {?v} but does not specify a `Unit`.
    prefixes: all
    select: SELECT $this ?v ?subject WHERE { $this s223:hasValue ?v . FILTER NOT EXISTS {$this qudt:hasUnit ?u} . ?subject ?p $this . }
property:
  comment: A `QuantifiableProperty` can be associated with at most one `Unit` using the relation `hasUnit`.
  class: Unit
  max count: 1
  message: s223: A `QuantifiableProperty` can be associated with at most one `Unit` using the relation `hasUnit`.
  path: hasUnit
property:
  comment: This `QuantifiableProperty` and the deadband associated with it have non-commensurate `QuantityKind`s.
  path: hasQuantityKind
  sparql: SPARQLConstraint
    comment: This `QuantifiableProperty` and the deadband associated with it have non-commensurate `QuantityKind`s.
    message: s223: {$this} uses `QuantityKind` {?pqk} with DimensionVector {?pdv}, while deadband {?deadband} uses `QuantityKind` {?dqk} with DimensionVector {?ddv}. These are non-commensurate
    prefixes: all
    select: SELECT $this ?deadband ?pqk ?dqk ?pdv ?ddv WHERE { $this qudt:hasQuantityKind ?pqk . $this s223:hasDeadband ?deadband . ?deadband qudt:hasQuantityKind ?dqk . ?pqk qudt:hasDimensionVector ?pdv . ?dqk qudt:hasDimensionVector ?ddv . FILTER (?pqk != ?dqk) . FILTER (?pdv != ?ddv) . }
property:
  comment: A `QuantifiableProperty` can be associated with an optional Boolean flag using the relation isDeltaQuantity. If the relation isDeltaQuantity has a value of true, the associated value should be interpreted as a difference reading, such as a temperature difference. This is needed to distinguish between a temperature reading and a temperature difference reading, which affects unit conversion calculations.
  datatype: boolean
  max count: 1
  message: s223: A `QuantifiableProperty` can be associated with an optional Boolean flag using the relation isDeltaQuantity. If the relation isDeltaQuantity has a value of true, the associated value should be interpreted as a difference reading, such as a temperature difference. This is needed to distinguish between a temperature reading and a temperature difference reading, which affects unit conversion calculations.
  path: isDeltaQuantity
property:
  comment: A `QuantifiableProperty` can be associated with an `EnumerableProperty` using the relation `hasAlarmStatus`.
  class: Enumerable Property
  message: s223: A `QuantifiableProperty` can be associated with an `EnumerableProperty` using the relation `hasAlarmStatus`.
  path: hasAlarmStatus
property:
  comment: This `QuantifiableProperty` uses a different `Unit` than the setpoint associated with it.
  path: hasUnit
  severity: Info
  sparql: SPARQLConstraint
    comment: This `QuantifiableProperty` uses a different `Unit` than the setpoint associated with it.
    message: s223: {$this} uses `Unit` {?punit}, while setpoint {?setpoint} uses `Unit` {?sunit}. Be careful.
    prefixes: all
    select: SELECT $this ?setpoint ?punit ?sunit WHERE { $this qudt:hasUnit ?punit . $this s223:hasSetpoint ?setpoint . ?setpoint qudt:hasUnit ?sunit . ?punit qudt:hasDimensionVector ?pdv . ?sunit qudt:hasDimensionVector ?sdv . FILTER (?punit != ?sunit) . FILTER (?pdv = ?sdv) . }
property:
  comment: A `QuantifiableProperty` can be associated with a `QuantifiableProperty` using the relation `hasSetpoint`.
  class: Quantifiable Property
  message: s223: A `QuantifiableProperty` can be associated with a `QuantifiableProperty` using the relation `hasSetpoint`.
  path: has setpoint
property:
  comment: This `QuantifiableProperty` and the threshold associated with it have non-commensurate `QuantityKind`s.
  path: hasQuantityKind
  sparql: SPARQLConstraint
    comment: This `QuantifiableProperty` and the threshold associated with it have non-commensurate `QuantityKind`s.
    message: s223: {$this} uses `QuantityKind` {?pqk} with DimensionVector {?pdv}, while threshold {?threshold} uses `QuantityKind` {?tqk} with DimensionVector {?tdv}. These are non-commensurate
    prefixes: all
    select: SELECT $this ?threshold ?pqk ?sqk ?pdv ?sdv WHERE { $this qudt:hasQuantityKind ?pqk . $this s223:hasThreshold ?threshold . ?threshold qudt:hasQuantityKind ?tqk . ?pqk qudt:hasDimensionVector ?pdv . ?tqk qudt:hasDimensionVector ?tdv . FILTER (?pqk != ?tqk) . FILTER (?pdv != ?tdv) . }
sparql: SPARQLConstraint
  comment: Checks for consistent dimension vectors for a `QuantityKind` and the `Unit`
  message: s223: Inconsistent dimensionalities among the `Property`'s `Unit` and `Property`'s `QuantityKind`
  prefixes: all
  select: SELECT $this WHERE { $this qudt:hasQuantityKind/qudt:hasDimensionVector ?qkdv1 . $this qudt:hasUnit/qudt:hasDimensionVector ?qkdv2 . FILTER (?qkdv1 != ?qkdv2) . }

Role
type: Class
type: NodeShape
comment: This class and its enumerated subclasses represent roles played by entities, such as cooling, generator, relief, and return. These enumeration kinds are intended to indicate the capability of an entity to play a given role, rather than the role being actively played at any given point in time. For example, a reversible piece of equipment might play a role of `Role-Cooling` at one time, and `Role-Heating` at another time. Such an entity would be modeled using the `hasRole` relation with both role values. The active role at a particular time can be modeled as a `Property` with an ExternalReference to telemetry data. : EnumerationKind-Role Enumerations | Enumeration | |:-----------| | `Role-Condenser` | | `Role-Cooling` | | `Role-Dehumidifying` | | `Role-Discharge` | | `Role-Economizer` | | `Role-Evaporator` | | `Role-Exhaust` | | `Role-Expansion` | | `Role-Generator` | | `Role-HeatRecovery` | | `Role-HeatTransfer` | | `Role-Heating` | | `Role-Load` | | `Role-OutdoorAirIntake` | | `Role-Primary` | | `Role-Recirculating` | | `Role-Relief` | | `Role-Return` | | `Role-Secondary` | | `Role-Supply` | | `Role-Ventilating` |
subclass of: Enumeration kind

50 Hertz
type: Class
type: NodeShape
hasValue: 50.0
has quantity kind: Frequency
has unit: HZ
comment: Frequency-50Hz
subclass of: AC electricity frequency

hasQuantityKind
comment: A reference to the `QuantityKind` of a `QuantifiableProperty` of interest, e.g. quantitykind:Temperature.

Air
type: Class
type: NodeShape
comment: Fluid-Air.
subclass of: Fluid mixture

Three Phase AC Electricity
type: Class
type: NodeShape
hasValue: 3.0
has quantity kind: Dimensionless
has unit: NUM
comment: Three Phase AC Electricity
subclass of: Number of Electrical Phases

Water
type: Class
type: NodeShape
composed of: H2O i.e., pure water concentration
  type: Quantifiable Property
  of constituent: H2O i.e., pure water
  has quantity kind: VolumeFraction
  has unit: PERCENT
subclauses: Water-Glycol solution
comment: This class and its enumerated subclasses represent water and aqueous solutions in various states. : Fluid-Water Enumerations | Enumeration | |:-----------| | `Water-ChilledWater` | | `Water-GlycolSolution` (see {s223:Water-GlycolSolution}) | | `Water-HotWater` | | `Water-Steam` |
subclass of: Fluid mixture

Electricity
type: Class
type: NodeShape
subclauses: AC electricity
subclauses: DC electricity
subclauses: Electrical signal
comment: This class and its enumerated subclasses represent common forms of electrical energy, including AC, DC and electrical communication signals. : Constituent-Electricity Enumerations | Enumeration | |:-----------| | `Electricity-AC` (see {s223:Electricity-AC})| | `Electricity-DC` (see {s223:Electricity-DC})| | `Electricity-Earth` | | `Electricity-Neutral` | | `Electricity-Signal` (see {s223:Electricity-Signal}) |
subclass of: Constituent

Single Phase AC Electricity
type: Class
type: NodeShape
hasValue: 1.0
has quantity kind: Dimensionless
has unit: NUM
comment: Single Phase AC Electricity
subclass of: Number of Electrical Phases

Voltage
type: Class
type: NodeShape
has quantity kind: Voltage
has unit: http://qudt.org/vocab/unit/V
subclauses: Voltage-DCVoltage
subclauses: PoE Voltage
comment: This class and its enumerated subclasses represent common voltages for electricty service. : Numerical-Voltage Enumerations | Enumeration | |:-----------| | `Voltage-0V` | | `Voltage-10000V` | | `Voltage-110V` | | `Voltage-120V` | | `Voltage-127V` | | `Voltage-12V` | | `Voltage-139V` | | `Voltage-1730V` | | `Voltage-1900V` | | `Voltage-190V` | | `Voltage-208V` | | `Voltage-219V` | | `Voltage-220V` | | `Voltage-230V` | | `Voltage-2400V` | | `Voltage-240V` | | `Voltage-24V` | | `Voltage-277V` | | `Voltage-2V` | | `Voltage-3000V` | | `Voltage-3300V` | | `Voltage-3460V` | | `Voltage-347V` | | `Voltage-380V` | | `Voltage-3810V` | | `Voltage-3V` | | `Voltage-400V` | | `Voltage-415V` | | `Voltage-4160V` | | `Voltage-480V` | | `Voltage-48V` | | `Voltage-5770V` | | `Voltage-5V` | | `Voltage-6000V` | | `Voltage-600V` | | `Voltage-6600V` | | `Voltage-6V` | | `Voltage-DCVoltage` (see {s223:Voltage-DCVoltage}) | | `Voltage-PoE` (see {s223:Voltage-PoE}) |
subclass of: EnumerationKind Numerical
property:
  comment: A `Numerical-Voltage` shall have a `QuantityKind` of `Voltage`
  has value: Voltage
  path: hasQuantityKind
property:
  comment: A `Numerical-Voltage` shall have a `Unit` of `Volts`
  has value: http://qudt.org/vocab/unit/V
  path: hasUnit

60 Hertz
type: Class
type: NodeShape
hasValue: 60.0
has quantity kind: Frequency
has unit: HZ
comment: Frequency-60Hz
subclass of: AC electricity frequency

Outlet Connection Point
type: Class
type: NodeShape
comment: An `OutletConnectionPoint` is a `ConnectionPoint` for which a medium (`Substance-Medium`) is expected to flow out of the associated `Connectable`.
subclass of: ConnectionPoint
property:
  comment: If the relation `pairedConnectionPoint` is present it shall associate the `OutletConnectionPoint` with an `InletConnectionPoint` or `BidirectionalConnectionPoint`.
  message: s223: If the relation `pairedConnectionPoint` is present it shall associate the `OutletConnectionPoint` with an `InletConnectionPoint` or `BidirectionalConnectionPoint`.
  or:
    class: Inlet Connection Point
  or:
    class: Bidirectional Connection Point
  path: paired connection point
property:
  comment: Ensure an `OutletConnectionPoint` has a `mapsTo` relation to its containing `Equipment` if it has an external `Connection`
  path: mapsTo
  sparql: SPARQLConstraint
    comment: Ensure an `OutletConnectionPoint` has a `mapsTo` relation to its containing `Equipment` if it has an external `Connection`
    message: s223: {$this} must have a `mapsTo` an `OutletConnectionPoint` of {?parentEquipment} and not an external `Connection` to {?destinationEquipment}.
    prefixes: all
    select: SELECT $this ?parentEquipment ?destinationEquipment WHERE { ?equipment s223:hasConnectionPoint $this . ?parentEquipment s223:contains ?equipment . $this s223:connectsThrough/s223:connectsTo ?destinationEquipment . FILTER NOT EXISTS {?parentEquipment s223:contains ?destinationEquipment} . FILTER NOT EXISTS {$this s223:mapsTo ?anything} . }
property:
  comment: If the relation `mapsTo` is present it shall associate the `OutletConnectionPoint` with an `OutletConnectionPoint`.
  class: Outlet Connection Point
  message: s223: If the relation `mapsTo` is present it shall associate the `OutletConnectionPoint` with an `OutletConnectionPoint`.
  path: mapsTo

Property
type: NodeShape
property:
  comment: Every `Property` must have a comment
  path: comment
  sparql: SPARQLConstraint
    message: s223: {$this} must have an rdfs:comment
    prefixes: all
    select: SELECT $this WHERE { BIND(REPLACE(STR($this), "^(.*)(/|#)([^#/]*)$", "$1") AS ?prop) . FILTER (?prop = "http://data.ashrae.org/standard223") . FILTER (NOT EXISTS {$this rdfs:comment ?something}) . }
property:
  comment: Every `Property` must have a label
  path: label
  sparql: SPARQLConstraint
    message: s223: {$this} must have an rdfs:label
    prefixes: all
    select: SELECT $this WHERE { BIND(REPLACE(STR($this), "^(.*)(/|#)([^#/]*)$", "$1") AS ?prop) . FILTER (?prop = "http://data.ashrae.org/standard223") . FILTER (NOT EXISTS {$this rdfs:label ?something}) . }

Equipment
type: Class
type: NodeShape
comment: `Equipment` is the modeling construct used to represent a thing designed to accomplish a specific task, or a complex thing that contains component pieces of `Equipment` that are connected to each other and work together to accomplish a task. `Equipment` can have `Connection`s and `ConnectionPoint`s through which one or more kinds of medium (see {s223:Substance-Medium}) might flow. Examples of possible `Equipment` include a `Pump`, `Fan`, `HeatExchanger`, `Luminaire`, and `Sensor`, as well as more complex things like a heat pump, a chilled water plant, or a utility meter. `Equipment` is distinct from a `System`, which is simply a logical grouping or collection of (only) `Equipment`. In common usage, terms like equipment and system have a variety of ambiguous and possibly conflicting interpretations. A semantic model is an attempt to eliminate such ambiguities and conflicts. If the thing being modeled involves `Connection`s and `ConnectionPoint`s, it must be modeled as `Equipment` and not a `System`. Thus, a model of a chilled water plant that includes external connections to things beyond the plant must be modeled as `Equipment`. Any contained `Equipment` within the chilled water plant (i.e., the pumps, valves, filters, and other things) may alternatively or in addition be logically grouped and modeled as a `System`. The graphical depiction of Equipment used in this document is a round-cornered rectangle as shown in Figure 5-1. ![Graphical Depiction of Equipment.](figures/Figure_5-1_Graphical_Depiciton_of_Equipment.svg)
subclass of: Connectable
property:
  comment: If the relation `executes` is present it shall associate the `Equipment` with a `Function`.
  class: Function
  message: s223: If the relation `executes` is present it shall associate the `Equipment` with a `Function`.
  path: executes
property:
  comment: If the relation `hasRole` is present it shall associate the `Equipment` with a `EnumerationKind-Role`.
  class: Role
  message: s223: If the relation `hasRole` is present it shall associate the `Equipment` with a `EnumerationKind-Role`.
  path: hasRole
property:
  comment: If the relation `hasPhysicalLocation` is present it shall associate the `Equipment` with a `PhysicalSpace`.
  class: Physical Space
  message: s223: If the relation `hasPhysicalLocation` is present it shall associate the `Equipment` with a `PhysicalSpace`.
  path: has Physical Location
property:
  comment: Disallow contained equipment from having external incoming connections.
  path: connected from
  sparql: SPARQLConstraint
    comment: Disallow contained equipment from having external incoming connections.
    message: s223: {$this} should not have a connection from external equipment {?otherDev} because {?container} contains {$this}.
    prefixes: all
    select: SELECT $this ?container ?otherDev WHERE { $this s223:connectedFrom ?otherDev . $this ^s223:contains ?container . ?container a/rdfs:subClassOf* s223:Equipment . FILTER NOT EXISTS {?container s223:contains ?otherDev .} }
property:
  comment: Warning about a subClass of `Equipment` of type A containing something that is in the same subClass branch.
  path: contains
  severity: Warning
  sparql: SPARQLConstraint
    comment: Warning about a subClass of `Equipment` of type A containing something that is in the same subClass branch.
    message: s223: {$this}, of type {?type1}, contains {?subEquip} of type {?type2}, that could result in double-counting items in the class hierarchy of {?type1}.
    prefixes: all
    select: SELECT $this ?subEquip ?type1 ?type2 WHERE { FILTER NOT EXISTS {$this a s223:Equipment} . $this s223:contains+ ?subEquip . FILTER NOT EXISTS {?subEquip a s223:Equipment} . $this a ?type1 . ?subEquip a ?type2 . { ?type2 rdfs:subClassOf* ?type1 . } UNION { ?type1 rdfs:subClassOf* ?type2 . } }
property: PropertyShape
  comment: If the relation `contains` is present it shall associate the `Equipment` with either `Equipment` or `Junction`.
  message: s223: If the relation `contains` is present it shall associate the `Equipment` with either `Equipment` or `Junction`.
  name: device contains shape
  or:
    class: Equipment
  or:
    class: Junction
  path: contains
property:
  comment: Disallow contained equipment from having external outgoing connections.
  path: connected to
  sparql: SPARQLConstraint
    comment: Disallow contained equipment from having external outgoing connections.
    message: s223: {$this} should not have a connection to external equipment {?otherDev} because {?container} contains {$this}.
    prefixes: all
    select: SELECT $this ?container ?otherDev WHERE { $this s223:connectedTo ?otherDev . $this ^s223:contains ?container . ?container a/rdfs:subClassOf* s223:Equipment . FILTER NOT EXISTS {?container s223:contains ?otherDev .} }
property:
  comment: If the relation `actuatedByProperty` is present it shall associate the `Equipment` with a `ActuatableProperty`. Note that any `Equipment` may use this relation, not just `Actuator`.
  class: Actuatable Property
  message: s223: If the relation `actuatedByProperty` is present it shall associate the `Equipment` with a `ActuatableProperty`. Note that any `Equipment` may use this relation, not just `Actuator`.
  path: commanded by Property

Inlet Connection Point
type: Class
type: NodeShape
comment: An `InletConnectionPoint` is a `ConnectionPoint` for which a medium (`Substance-Medium`) is expected to flow into the associated `Connectable`.
subclass of: ConnectionPoint
property:
  comment: If the relation `mapsTo` is present it shall associate the `InletConnectionPoint` with an `InletConnectionPoint`.
  class: Inlet Connection Point
  message: s223: If the relation `mapsTo` is present it shall associate the `InletConnectionPoint` with an `InletConnectionPoint`.
  path: mapsTo
property:
  comment: Ensure an `InletConnectionPoint` has a `mapsTo` relation to its containing `Equipment` if it has an external `Connection`
  path: mapsTo
  sparql: SPARQLConstraint
    comment: Ensure an `InletConnectionPoint` has a `mapsTo` relation to its containing `Equipment` if it has an external `Connection`
    message: s223: {$this} must have a `mapsTo` an `InletConnectionPoint` of {?parentEquipment} and not an external `Connection` from {?sourceEquipment}.
    prefixes: all
    select: SELECT $this ?parentEquipment ?sourceEquipment WHERE { ?equipment s223:hasConnectionPoint $this . ?parentEquipment s223:contains ?equipment . $this s223:connectsThrough/s223:connectsFrom ?sourceEquipment . FILTER NOT EXISTS {?parentEquipment s223:contains ?sourceEquipment} . FILTER NOT EXISTS {$this s223:mapsTo ?anything} . }
property:
  comment: If the relation `pairedConnectionPoint` is present it shall associate the `InletConnectionPoint` with an `OutletConnectionPoint` or `BidirectionalConnectionPoint`.
  message: s223: If the relation `pairedConnectionPoint` is present it shall associate the `InletConnectionPoint` with an `OutletConnectionPoint` or `BidirectionalConnectionPoint`.
  or:
    class: Outlet Connection Point
  or:
    class: Bidirectional Connection Point
  path: paired connection point

AC electricity
type: Class
type: NodeShape
has frequency: AC electricity frequency
has number of electrical phases: Number of Electrical Phases
hasVoltage: Voltage
comment: This class and its enumerated subclasses represent common AC electricity services. : Electricity-AC Enumerations | Enumeration | |:-----------| | `AC-10000VLL-1Ph-60Hz` | | `AC-10000VLL-3Ph-60Hz` | | `AC-10000VLL-5770VLN-1Ph-60Hz` | | `AC-10000VLL-5770VLN-3Ph-60Hz` | | `AC-110VLN-1Ph-50Hz` | | `AC-120VLN-1Ph-60Hz` | | `AC-127VLN-1Ph-50Hz` | | `AC-139VLN-1Ph-50Hz` | | `AC-1730VLN-1Ph-60Hz` | | `AC-1900VLN-1Ph-60Hz` | | `AC-190VLL-110VLN-1Ph-50Hz` | | `AC-190VLL-110VLN-3Ph-50Hz` | | `AC-190VLL-1Ph-50Hz` | | `AC-190VLL-3Ph-50Hz` | | `AC-208VLL-120VLN-1Ph-60Hz` | | `AC-208VLL-120VLN-3Ph-60Hz` | | `AC-208VLL-1Ph-60Hz` | | `AC-208VLL-3Ph-60Hz` | | `AC-208VLN-1Ph-60Hz` | | `AC-219VLN-1Ph-60Hz` | | `AC-220VLL-127VLN-1Ph-50Hz` | | `AC-220VLL-127VLN-3Ph-50Hz` | | `AC-220VLL-1Ph-50Hz` | | `AC-220VLL-3Ph-50Hz` | | `AC-230VLN-1Ph-50Hz` | | `AC-2400VLN-1Ph-60Hz` | | `AC-240VLL-120VLN-1Ph-60Hz` | | `AC-240VLL-139VLN-1Ph-50Hz` | | `AC-240VLL-139VLN-3Ph-50Hz` | | `AC-240VLL-1Ph-50Hz` | | `AC-240VLL-1Ph-60Hz` | | `AC-240VLL-208VLN-120VLN-1Ph-60Hz` | | `AC-240VLL-208VLN-120VLN-3Ph-60Hz` | | `AC-240VLL-3Ph-50Hz` | | `AC-240VLL-3Ph-60Hz` | | `AC-240VLN-1Ph-50Hz` | | `AC-24VLN-1Ph-50Hz` | | `AC-24VLN-1Ph-60Hz` | | `AC-277VLN-1Ph-60Hz` | | `AC-3000VLL-1730VLN-1Ph-60Hz` | | `AC-3000VLL-1730VLN-3Ph-60Hz` | | `AC-3000VLL-1Ph-60Hz` | | `AC-3000VLL-3Ph-60Hz` | | `AC-3300VLL-1900VLN-1Ph-60Hz` | | `AC-3300VLL-1900VLN-3Ph-60Hz` | | `AC-3300VLL-1Ph-60Hz` | | `AC-3300VLL-3Ph-60Hz` | | `AC-3460VLN-1Ph-60Hz` | | `AC-347VLN-1Ph-60Hz` | | `AC-380VLL-1Ph-60Hz` | | `AC-380VLL-219VLN-1Ph-60Hz` | | `AC-380VLL-219VLN-3Ph-60Hz` | | `AC-380VLL-3Ph-60Hz` | | `AC-3810VLN-1Ph-60Hz` | | `AC-400VLL-1Ph-50Hz` | | `AC-400VLL-230VLN-1Ph-50Hz` | | `AC-400VLL-230VLN-3Ph-50Hz` | | `AC-400VLL-3Ph-50Hz` | | `AC-415VLL-1Ph-50Hz` | | `AC-415VLL-240VLN-1Ph-50Hz` | | `AC-415VLL-240VLN-3Ph-50Hz` | | `AC-415VLL-3Ph-50Hz` | | `AC-4160VLL-1Ph-60Hz` | | `AC-4160VLL-2400VLN-1Ph-60Hz` | | `AC-4160VLL-2400VLN-3Ph-60Hz` | | `AC-4160VL…
subclass of: Electricity
property:
  comment: An AC electricity medium shall have a voltage.
  min count: 1
  or:
    class: Line-Line Voltage
  or:
    class: Line-Neutral Voltage
  or:
    class: Voltage
  path: hasVoltage
property:
  comment: An AC electricity medium shall have a frequency
  class: AC electricity frequency
  min count: 1
  path: has frequency
property:
  comment: An AC electricity medium shall have a number of electrical phases.
  class: Number of Electrical Phases
  min count: 1
  path: has number of electrical phases

all
type: Ontology
imports: constant
imports: unit
imports: shacl#
version info: Created with TopBraid Composer
declare:
  namespace: http://data.ashrae.org/standard223#
  prefix: s223
declare:
  namespace: http://qudt.org/vocab/quantitykind/
  prefix: qudtqk
declare:
  namespace: http://data.ashrae.org/standard223#
  prefix: s223
declare:
  namespace: http://qudt.org/schema/qudt/
  prefix: qudt
declare:
  namespace: http://www.w3.org/2000/01/rdf-schema#
  prefix: rdfs
declare:
  namespace: http://www.w3.org/2000/01/rdf-schema#
  prefix: rdfs
declare:
  namespace: http://data.ashrae.org/standard223#
  prefix: s223
declare:
  namespace: http://www.w3.org/ns/shacl#
  prefix: sh
declare:
  namespace: http://data.ashrae.org/standard223#
  prefix: s223
declare:
  namespace: http://data.ashrae.org/standard223#
  prefix: s223
declare:
  namespace: http://www.w3.org/2000/01/rdf-schema#
  prefix: rdfs
declare:
  namespace: http://www.w3.org/ns/shacl#
  prefix: sh
declare:
  namespace: http://www.w3.org/2000/01/rdf-schema#
  prefix: rdfs
declare:
  namespace: http://data.ashrae.org/standard223/1.0/vocab/role#
  prefix: role
declare:
  namespace: http://qudt.org/vocab/quantitykind/
  prefix: quantitykind
declare:
  namespace: http://www.w3.org/1999/02/22-rdf-syntax-ns#
  prefix: rdf
declare:
  namespace: http://qudt.org/schema/qudt/
  prefix: qudt
declare:
  namespace: http://www.w3.org/2000/01/rdf-schema#
  prefix: rdfs
declare:
  namespace: http://www.w3.org/1999/02/22-rdf-syntax-ns#
  prefix: rdf
declare:
  namespace: http://qudt.org/schema/qudt/
  prefix: qudt
declare:
  namespace: http://data.ashrae.org/standard223#
  prefix: s223
declare:
  namespace: http://data.ashrae.org/standard223#
  prefix: s223
declare:
  namespace: http://qudt.org/vocab/unit/
  prefix: unit
declare:
  namespace: http://qudt.org/schema/qudt/
  prefix: qudt
declare:
  namespace: http://www.w3.org/1999/02/22-rdf-syntax-ns#
  prefix: rdf
declare:
  namespace: http://www.w3.org/ns/shacl#
  prefix: sh
declare:
  namespace: http://qudt.org/schema/qudt/
  prefix: qudt

has connection point
type: Inverse relation
type: Property
inverse of: is connection point of
comment: One of two `Relation`s that associates `Connectable` thing with a `ConnectionPoint`. It is the inverse of the relation `isConnectionPointOf` (see {s223:isConnectionPointOf}).

has Medium
type: Relation
type: Property
comment: The relation `hasMedium` is used to indicate what medium is flowing through the connection (e.g., air, water, electricity). The possible values are defined in `Substance-Medium` (see {s223:Substance-Medium}).

has value: DimensionlessRatio
max count: 1
min count: 1
path: hasQuantityKind

has value: Binary position enumerations
max count: 1
min count: 1
path: has aspect

has value: Binary position enumerations
max count: 1
min count: 1
path: has aspect

has value: Binary value
max count: 1
min count: 1
path: has enumeration kind

has value: DimensionlessRatio
max count: 1
min count: 1
path: hasQuantityKind

has value: Binary position enumerations
max count: 1
min count: 1
path: has aspect

has value: Binary value
max count: 1
min count: 1
path: has enumeration kind

has value: Binary position enumerations
max count: 1
min count: 1
path: has aspect

has value: DimensionlessRatio
max count: 1
min count: 1
path: hasQuantityKind

has value: Binary position enumerations
max count: 1
min count: 1
path: has aspect

has value: Binary value
max count: 1
min count: 1
path: has enumeration kind

has value: Binary position enumerations
max count: 1
min count: 1
path: has aspect