Connections#

Note

This feature is new in Brick v1.4 and relies on the ASHRAE 223P standard

Brick itself does not include connections (e.g., pipes, ducts, and wires) but as of Brick 1.4, it is possible to model connections using the related ASHRAE 223 ontology. This mechanism allows more detailed descriptions of the topology of building equipment and subsystems, and permits the association of Brick Points with the connections themselves, as well as where those connections attach to equipment and other entities.

223P Connections Overview#

Note

Text borrowed from the 223p documentation

ASHRAE 223 can be used to describe the topology of the equipment and spaces in a building, but not the geometric details. Topology refers to the way entities are connected and how some media (e.g. water, air, or electricity) is conveyed between them. There are several different classes used to describe which entities participate in connections and how they connect: Connectables, which include the entities that are capable of connecting to each other; ConnectionPoints, which model where Connectables can be connected; and Connections, which describe physical things through which the medium is conveyed, like pipes or ducts. These Mediums (e.g. gas, electricity, water) are defined as an EnumerationKind in the standard. There are also multiple relations used to describe the details of these connections, and how the multiple entities involved in a connection relate to each other. The figure below summarizes these relations.

../_images/connection-relationships.png

Though there are many relations to describe different perspectives of a connection, only s223:cnx needs to be manually added to the model, and the rest can be automatically added to the model through the process of model inference.

Note that the s223:connectedTo relationship is equivalent to brick:feeds because it shows a directional “flow” relationship from one entity to another.

Here is what to remember about modeling connections with 223P. Equipment can have ConnectionPoints associated with them, using the s223:hasConnectionPoint relationship. ConnectionPoints have a direction (InletConnectionPoint, OutletConnectionPoint) but can also be bidirectional (BidirectionalConnectionPoint). ConnectionPoints also have a medium associated with them, which is the medium that flows through the connection point.

Warning

The current 223P pre-release has changed the name of Medium instances to use “Fluid” where appropriate. Our examples below are temporarily out of date and will be updated soon. For example, s223:Medium-Air should be s223:Fluid-Air.

Any ConnectionPoint should be associated with an equipment and an instance of Connection; there are substance-specific versions here, like s223:Pipe (water), s223:Duct (air), and s223:Wire (electricity). The s223:cnx relationship is used to connect two ConnectionPoints, and the direction of the connection is inferred from the direction of the ConnectionPoints.

Connections on Brick Entities#

Brick Equipment are now subclasses of s223:Equipment in the Brick ontology. This means that they can have ConnectionPoints and Connections associated with them.

Common Connection Constructs#

Here is a model of a Duct between a brick AHU and a brick VAV

@prefix brick: <https://brickschema.org/schema/Brick#> .
@prefix s223: <http://data.ashrae.org/standard223#> .

# Define the AHU and VAV
:ahu  a  brick:AHU ;
    rdfs:label "AHU" .
:vav  a  brick:VAV ;
    rdfs:label "VAV" .

# air flow sensor
:air_flow_sensor  a  brick:Air_Flow_Sensor ;
    rdfs:label "Air Flow Sensor" .

# Define the duct
:duct  a  s223:Duct ;
    rdfs:label "duct" ;
    s223:hasMedium s223:Medium-Air ;
    brick:hasPoint  :air_flow_sensor ; # put a sensor in the duct!
    s223:connectsFrom  :ahu ;
    s223:connectsTo  :vav .

Here, we need to use connectsFrom/connectsTo to specify the direction of the connection.

We can also augment this model with connection points which are the physical locations where connections can be made.

@prefix brick: <https://brickschema.org/schema/Brick#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix s223: <http://data.ashrae.org/standard223#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix : <urn:duct_example/> .

<urn:duct_example> a owl:Ontology ;
    owl:imports <https://brickschema.org/schema/1.4/Brick>,
                <https://brickschema.org/extension/s223extension> .

:saf1  a  brick:Supply_Air_Flow_Sensor ;
    rdfs:label "Supply Air Flow Sensor" .

# define the AHU with a air supply connection point
:ahu  a  brick:AHU ;
    rdfs:label "AHU" ;
    s223:hasConnectionPoint  :ahu_air_supply .

:ahu_air_supply  a  s223:OutletConnectionPoint ;
    rdfs:label "AHU air supply" ;
    s223:hasRole s223:Role-Supply ;
    brick:hasPoint :saf1 ; # put the supply air flow sensor at the outlet of the AHU
    s223:hasMedium s223:Medium-Air .

# define the VAV with a air inlet connection point
:vav  a  brick:VAV ;
    rdfs:label "VAV" ;
    s223:hasConnectionPoint  :vav_air_inlet .
:vav_air_inlet  a  s223:InletConnectionPoint ;
    rdfs:label "VAV air inlet" ;
    s223:hasMedium s223:Medium-Air .

# now that we have connection points, we can define the duct using s223:cnx,
# which will infer the rest of the relationship and the correct direction
# of the connection
:duct  a  s223:Duct ;
    rdfs:label "duct" ;
    s223:hasMedium s223:Medium-Air ;
    s223:cnx  :ahu_air_supply, :vav_air_inlet .

Example: Reheat VAV with Hot Water Coil#

Here is an example of a reheat VAV with a hot water coil. Notice that we can attach water as well as air connection points to the VAV, and then use pipes to connect the coil inlet/outlet to the boiler.

@prefix brick: <https://brickschema.org/schema/Brick#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix s223: <http://data.ashrae.org/standard223#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix : <urn:rvav_example/> .


<urn:rvav_example> a owl:Ontology ;
    owl:imports <https://brickschema.org/schema/1.4/Brick>,
                <https://brickschema.org/extension/s223extension> .

# define the VAV with air and water connection points
:vav  a  brick:VAV ;
    rdfs:label "VAV" ;
    brick:hasPart :coil, :damper ;
    s223:hasConnectionPoint  :vav_air_inlet, :vav_air_outlet, :vav_water_inlet, :vav_water_outlet .

:vav_air_inlet  a  s223:InletConnectionPoint ;
    rdfs:label "VAV air inlet" ;
    s223:hasMedium s223:Medium-Air .

:vav_air_outlet  a  s223:OutletConnectionPoint ;
    rdfs:label "VAV air outlet" ;
    s223:hasMedium s223:Medium-Air .

:vav_water_inlet  a  s223:InletConnectionPoint ;
    rdfs:label "VAV water inlet" ;
    s223:hasMedium s223:Medium-Water .

:vav_water_outlet  a  s223:OutletConnectionPoint ;
    rdfs:label "VAV water outlet" ;
    s223:hasMedium s223:Medium-Water .


# define the coil with water connection points
:coil  a  brick:Hot_Water_Coil ;
    rdfs:label "Heating Coil" ;
    s223:hasConnectionPoint  :coil_water_inlet, :coil_water_outlet .

:coil_water_inlet  a  s223:InletConnectionPoint ;
    rdfs:label "Coil water inlet" ;
    s223:mapsTo  :vav_water_inlet ;
    s223:hasMedium s223:Medium-Water .

:coil_water_outlet  a  s223:OutletConnectionPoint ;
    rdfs:label "Coil water outlet" ;
    s223:mapsTo  :vav_water_outlet ;
    s223:hasMedium s223:Medium-Water .

# define the damper
:damper  a  brick:Damper ;
    rdfs:label "Damper" .

# define the boiler
:boiler  a  brick:Boiler ;
    rdfs:label "Boiler" ;
    s223:hasConnectionPoint  :boiler_water_supply, :boiler_water_return .

:boiler_water_supply  a  s223:OutletConnectionPoint ;
    rdfs:label "Boiler water supply" ;
    s223:hasMedium s223:Medium-Water .

:boiler_water_return  a  s223:InletConnectionPoint ;
    rdfs:label "Boiler water return" ;
    s223:hasMedium s223:Medium-Water .

# define the pipes
:pipe1  a  s223:Pipe ;
    rdfs:label "Pipe 1" ;
    s223:hasMedium s223:Medium-Water ;
    s223:cnx  :boiler_water_supply, :coil_water_inlet .

:pipe2  a  s223:Pipe ;
    rdfs:label "Pipe 2" ;
    s223:hasMedium s223:Medium-Water ;
    s223:cnx  :coil_water_outlet, :boiler_water_return .

The mapsTo relation is used to indicate that the connection point on the coil is the same as the connection point on the VAV. This is a form of encapsulation, which can simplify reuse of the model components.