Asset & HVAC modelling
This guide continues building on our previous Spatial and Sensor modelling guides; to get the most out of it, please skim those guides first. The guide also borrows heavily from our friends at the Brick Schema consortium, and their guide describing HVAC systems.
In this continued scenario, the owner of the Costello Heights building wants their digital twin to include assets mounted inside the building. This includes equipment mounted in public areas, to keep track of installation and replacement dates, model and serial numbers, staff responsible for installation/maintenance, etc; but also HVAC equipment that service the building, and the interconnections between that equipment. The latter might enable automation of settings and other operations, and also allows querying for which areas will be affected by maintenance work and other disruptions.
For simplicity, the scenario is very small; it consists of:
- one door and one luminarie in the main entrance hall of the building
- one HVAC Air Handling Unit feeding a Variable Air Volume (VAV) box, in turn feeding air into an HVAC zone covering the public and maintenance spaces in the building.
Types used
In addition to the types from the previous two guides, this modelling task will include:
Relationships and Properties used
In addition to the Relationships and Properties that were already used in the previous guides, we now add:
- Asset.locatedIn -- Placing Assets, whether equipment systems or individual furniture/architectural assets, into the spatial topology. In this case, used to represent the placement of the door, luminarie, and AHU.
- Asset.hasPart -- Used to represent parthood within an Asset; in this case, that a VAV box contains within it a specific Damper.
- Equipment.feeds -- Used to describe interconnectedness of Equipment with other Equipment and with Spaces in the building; in this case, the feeding of air from an AHU through a VAV box and into a designated HVAC zone.
Properties
Graphical representation
RDF triples representation (SHACL models)
# Namespaces
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rec: <https://w3id.org/rec#> .
@prefix brick: <https://brickschema.org/schema/Brick#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix : <https://example.com#> .
# Type declarations.
# Spaces
:CostelloHeights rdf:type rec:Building .
:LowerFloor rdf:type rec:Level .
:UpperFloor rdf:type rec:Level .
:EntranceHall rdf:type rec:Room .
:MaintenanceRoom rdf:type rec:Room .
:HVACZone1 rdf:type rec:HVACZone .
# Assets
:EntranceCeilingLight rdf:type brick:Luminarie .
:EntranceDoor rdf:type rec:Door .
:AHU_Lower rdf:type brick:AHU .
:VAV1 rdf:type brick:Variable_Air_Volume_Box .
:Damp1 rdf:type brick:Damper .
# Spatial topology
:CostelloHeights rec:hasPart :LowerFloor .
:CostelloHeights rec:hasPart :UpperFloor .
:LowerFloor rec:hasPart :EntranceHall .
:LowerFloor rec:hasPart :MaintenanceRoom .
:HVACZone1 rec:hasPart :EntranceHall .
:HVACZone1 rec:hasPart :MaintenanceRoom .
# Asset placement
:EntranceCeilingLight rec:locatedIn :EntranceHall .
:EntranceDoor rec:locatedIn :EntranceHall .
:AHU_Lower rec:locatedIn :MaintenanceRoom .
# Equipment feeds and parthood
:AHU_Lower brick:feeds :VAV1 .
:VAV1 brick:feeds :HVACZone1 .
:VAV1 rec:hasPart :Damp1 .
# Points
:SATS1 rdf:type brick:Supply_Air_Temperature_Sensor .
:POS1 rdf:type brick:Position_Command .
:VAV1 brick:hasPoint :SATS1 .
:Damp1 brick:hasPoint :POS1 .
# Door values
:EntranceDoor rec:installationDate "2022-08-27"^^xsd:date .
:EntranceDoor rec:modelNuber "UltraDoor5000"^^xsd:string .
Azure Digital Twins JSON representation (DTDL models)
{
"digitalTwinsFileInfo": {
"fileVersion": "1.0.0"
},
"digitalTwinsGraph": {
"digitalTwins": [
{
"$dtId": "CostelloHeights",
"$etag": "W/\"ee7f9ac5-cde8-482e-9f3f-de4b3da170f8\"",
"geometry": "[[14.16, 57.77], ... , [14.16, 57.77]]",
"$metadata": {
"$model": "dtmi:org:w3id:rec:Building;1"
}
},
{
"$dtId": "UpperFloor",
"$etag": "W/\"3d904969-d842-4bf0-b1f6-7ff6b687460c\"",
"levelNumber": 2,
"$metadata": {
"$model": "dtmi:org:w3id:rec:Level;1"
}
},
{
"$dtId": "LowerFloor",
"$etag": "W/\"459c63ee-04d7-4031-91fb-e50e64a5d8b4\"",
"levelNumber": 1,
"geometry": "[[0.5, 0.5], ... , [15.5, 15.5]]",
"$metadata": {
"$model": "dtmi:org:w3id:rec:Level;1"
}
},
{
"$dtId": "AHU_Lower",
"$etag": "W/\"27be5719-9698-481d-baab-7933f9f0df19\"",
"$metadata": {
"$model": "dtmi:org:brickschema:schema:Brick:AHU;1"
}
},
{
"$dtId": "MaintenanceRoom",
"$etag": "W/\"a6d63da0-df6a-48d3-ab4c-047d792265b6\"",
"$metadata": {
"$model": "dtmi:org:w3id:rec:Room;1"
}
},
{
"$dtId": "EntranceHall",
"$etag": "W/\"33356145-00fa-4632-82b8-5d197821f58d\"",
"$metadata": {
"$model": "dtmi:org:w3id:rec:Room;1"
}
},
{
"$dtId": "EntranceCeilingLight",
"$etag": "W/\"5f80ef22-9156-4225-b064-70b37cc27f8e\"",
"$metadata": {
"$model": "dtmi:org:brickschema:schema:Brick:Luminaire;1"
}
},
{
"$dtId": "VAV1",
"$etag": "W/\"84e5c26d-d70b-4ca3-9257-252589cc9502\"",
"$metadata": {
"$model": "dtmi:org:brickschema:schema:Brick:Variable_Air_Volume_Box;1"
}
},
{
"$dtId": "Damp1",
"$etag": "W/\"6f182c1e-9f60-4242-834d-0f5325df0f81\"",
"$metadata": {
"$model": "dtmi:org:brickschema:schema:Brick:Damper;1"
}
},
{
"$dtId": "HVACZone1",
"$etag": "W/\"d61f2477-c3f4-4995-a65d-85871bf99529\"",
"$metadata": {
"$model": "dtmi:org:w3id:rec:HVACZone;1"
}
},
{
"$dtId": "EntranceDoor",
"$etag": "W/\"977675cc-4317-4ce8-9c6b-2b8c8933cc24\"",
"installationDate": "2022-08-27",
"modelNumber": "UltraDoor5000",
"$metadata": {
"$model": "dtmi:org:w3id:rec:Door;1"
}
},
{
"$dtId": "POS1",
"$etag": "W/\"85cd4899-f8ae-45c8-bce0-5d21f01c1c59\"",
"$metadata": {
"$model": "dtmi:org:brickschema:schema:Brick:Position_Command;1"
}
},
{
"$dtId": "SATS1",
"$etag": "W/\"ee751e9c-51c9-4aa4-89b7-6bfd57522fdc\"",
"$metadata": {
"$model": "dtmi:org:brickschema:schema:Brick:Supply_Air_Temperature_Sensor;1"
}
}
],
"relationships": [
{
"$relationshipId": "6fea7ce8-1827-4d6f-8773-dc42ffd124b5",
"$sourceId": "CostelloHeights",
"$targetId": "UpperFloor",
"$relationshipName": "hasPart",
"$etag": "W/\"fbbb0925-b5a2-4221-ad4e-4eb45e6311ef\""
},
{
"$relationshipId": "5451cb07-4a2c-4b0e-b2f8-a81f777e85c6",
"$sourceId": "CostelloHeights",
"$targetId": "LowerFloor",
"$relationshipName": "hasPart",
"$etag": "W/\"99b9f7b6-a150-4923-952f-f08f14bf08be\""
},
{
"$relationshipId": "7edb081a-9d5a-4a07-bbd9-5b84e635ff15",
"$sourceId": "LowerFloor",
"$targetId": "MaintenanceRoom",
"$relationshipName": "hasPart",
"$etag": "W/\"ed870e68-37bf-46c4-ae25-08b5aa6fdaf9\""
},
{
"$relationshipId": "c55efa4c-6ab4-492a-8c62-a58d9e7d1ffd",
"$sourceId": "LowerFloor",
"$targetId": "EntranceHall",
"$relationshipName": "hasPart",
"$etag": "W/\"6f076239-1eb0-45dc-804b-ad069904dfa9\""
},
{
"$relationshipId": "39a33709-abfc-4e7c-9fe5-c5490f276287",
"$sourceId": "AHU_Lower",
"$targetId": "MaintenanceRoom",
"$relationshipName": "locatedIn",
"$etag": "W/\"93efd1db-3c19-4a16-99b0-28bd11c91a1a\""
},
{
"$relationshipId": "91023d35-55f2-4398-8059-ce7e9c5a6d85",
"$sourceId": "AHU_Lower",
"$targetId": "VAV1",
"$relationshipName": "feeds",
"$etag": "W/\"4233f1eb-62aa-4227-a72c-b3b5709b0633\""
},
{
"$relationshipId": "53b2f9ad-6da7-4f6d-a453-36f7f73f76ab",
"$sourceId": "Damp1",
"$targetId": "POS1",
"$relationshipName": "hasPoint",
"$etag": "W/\"be8c7168-c034-44ca-8c81-e634e575b172\""
},
{
"$relationshipId": "53933323-e299-4bf7-9495-c2af39cd890b",
"$sourceId": "VAV1",
"$targetId": "SATS1",
"$relationshipName": "hasPoint",
"$etag": "W/\"7f2e1c4c-5c10-479b-8f71-63ad96a7a996\""
},
{
"$relationshipId": "1d5d2e5b-c0c5-480c-8048-cc3074541107",
"$sourceId": "HVACZone1",
"$targetId": "EntranceHall",
"$relationshipName": "hasPart",
"$etag": "W/\"81f77c68-0791-4430-a4fc-c67add5457b4\""
},
{
"$relationshipId": "5d5c63ff-1447-4dc5-91f5-5eb7ca35597f",
"$sourceId": "HVACZone1",
"$targetId": "MaintenanceRoom",
"$relationshipName": "hasPart",
"$etag": "W/\"fb8e6fac-8fc7-45b6-bc83-4fdf417cdcbc\""
},
{
"$relationshipId": "44631f88-9bcd-4b14-ada6-ac6128849d0c",
"$sourceId": "VAV1",
"$targetId": "Damp1",
"$relationshipName": "hasPart",
"$etag": "W/\"e38a224c-8184-4334-80a5-a74efcbc6167\""
},
{
"$relationshipId": "0732aa9d-0e62-4551-9609-2102e14b8888",
"$sourceId": "VAV1",
"$targetId": "HVACZone1",
"$relationshipName": "feeds",
"$etag": "W/\"e6e63b6f-c63a-4d1c-a71a-4d360e0bdf57\""
},
{
"$relationshipId": "fadee291-9a9d-4c28-994f-197d6554bb13",
"$sourceId": "EntranceDoor",
"$targetId": "EntranceHall",
"$relationshipName": "locatedIn",
"$etag": "W/\"196b27e3-2252-4110-a8bb-2ef8201ceb31\""
},
{
"$relationshipId": "7fe43a8d-b434-4c2e-807c-9af14f67f788",
"$sourceId": "EntranceCeilingLight",
"$targetId": "EntranceHall",
"$relationshipName": "locatedIn",
"$etag": "W/\"9abdead8-a12a-4477-a81c-9e9364d781bd\""
}
]
}
}