Skip to content

Instantly share code, notes, and snippets.

@gtfierro
Last active September 3, 2023 09:20
Show Gist options
  • Save gtfierro/c7aa9817d41ce956fbfeb71622f8cad8 to your computer and use it in GitHub Desktop.
Save gtfierro/c7aa9817d41ce956fbfeb71622f8cad8 to your computer and use it in GitHub Desktop.
Building Models for Energies
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix tag: <https://brickschema.org/schema/1.1/BrickTag#> .
@prefix unit: <http://qudt.org/vocab/unit/> .
@prefix bot: <https://w3c-lbd-cg.github.io/> .
@prefix sosa: <http://www.w3.org/ns/sosa/> .
@prefix ssn: <http://www.w3.org/ns/ssn/> .
@prefix ex: <urn:bot#> .
# using best practices from https://www.researchgate.net/publication/325644558_The_Modular_SSN_Ontology_A_Joint_W3C_and_OGC_Standard_Specifying_the_Semantics_of_Sensors_Observations_Sampling_and_Actuation/citation/download
ex:Site a bot:Site ;
bot:hasBuilding ex:Building ;
.
ex:Building a bot:Building ;
bot:hasSorey ex:Floor ;
.
ex:Floor a bot:Storey ;
bot:containsZone ex:HVAC_Zone_1, ex:HVAC_Zone_2, ex:Lighting_Zone_OO1, ex:Lighting_Zone_OO2,
ex:Lighting_Zone_Bathroom, ex:Lighting_Zone_PO, ex:Lighting_Zone_Kitchenette,
ex:Lighting_Zone_Corridor ;
bot:hasSpace ex:Open_Office, ex:Bathroom, ex:Private_Office, ex:Kitchenette, ex:Corridor ;
.
ex:HVAC_Zone_1 a bot:Space ;
bot:hasSpace ex:Open_Office, ex:Bathroom, ex:Corridor, ex:Private_Office ;
bot:adjacentZone ex:HVAC_Zone_2 ;
.
ex:HVAC_Zone_2 a bot:Space ;
bot:hasSpace ex:Kitchenette, ex:Corridor ;
bot:adjacentZone ex:HVAC_Zone_1 ;
.
# graph-specific, so not generally usable
ex:Illuminance a sosa:ObservableProperty ;
ssn:isPropertyOf ex:Open_Office, ex:Bathroom, ex:Private_Office, ex:Kitchenette, ex:Corridor ;
.
ex:VAVDamperPostition a sosa:ActuatableProperty .
ex:SupplyFanFrequency a sosa:ActuatableProperty .
ex:ReturnFanFrequency a sosa:ActuatableProperty .
ex:ExhaustFanFrequency a sosa:ActuatableProperty .
ex:HeatingCoilValvePosition a sosa:ActuatableProperty .
ex:CoolingCoilValvePosition a sosa:ActuatableProperty .
ex:ExhaustDamperPostition a sosa:ActuatableProperty .
ex:MixedAirDamperPostition a sosa:ActuatableProperty .
ex:OutsideDamperPostition a sosa:ActuatableProperty .
ex:SupplyAirFlow a sosa:ObservableProperty .
ex:ReturnAirFlow a sosa:ObservableProperty .
ex:SupplyAirTemperature a sosa:ObservableProperty .
ex:OutsideAirTemperature a sosa:ObservableProperty .
ex:MixedAirTemperature a sosa:ObservableProperty .
ex:ReturnAirTemperature a sosa:ObservableProperty .
ex:SupplyAirFlowSensor a sosa:Sensor ;
sosa:observes ex:SupplyAirFlow ;
.
ex:ReturnAirFlowSensor a sosa:Sensor ;
sosa:observes ex:ReturnAirFlow ;
.
ex:SupplyAirTemperatureSensor a sosa:Sensor ;
sosa:observes ex:SupplyAirTemperature ;
.
ex:OutsideAirTemperatureSensor a sosa:Sensor ;
sosa:observes ex:OutsideAirTemperature ;
.
ex:MixedAirTemperatureSensor a sosa:Sensor ;
sosa:observes ex:MixedAirTemperature ;
.
ex:ReturnAirTemperatureSensor a sosa:Sensor ;
sosa:observes ex:ReturnAirTemperature ;
.
ex:SupplyAirTemperatureSetpoint a sosa:ActuatableProperty .
ex:SupplyAirFlowSetpoint a sosa:ActuatableProperty .
# While this follows the practice laid out in the paper, it does not
# allow for describing *which* illuminance is being observed. One alternative
# would be to have different ObservableProperty for each room, e.g.
# ex:OpenOfficeIlluminance a sosa:ObservableProperty
ex:OO_Lighting_1_Sensor a sosa:Sensor ;
sosa:observes ex:Illuminance ;
.
ex:OO_Lighting_2_Sensor a sosa:Sensor ;
sosa:observes ex:Illuminance ;
.
ex:Bathroom_Lighting_Sensor a sosa:Sensor ;
sosa:observes ex:Illuminance ;
.
ex:Private_Office_Lighting_Sensor a sosa:Sensor ;
sosa:observes ex:Illuminance ;
.
ex:Kitchenette_Lighting_Sensor a sosa:Sensor ;
sosa:observes ex:Illuminance ;
.
ex:Corridor_Lighting_Sensor a sosa:Sensor ;
sosa:observes ex:Illuminance ;
.
ex:Lighting_Zone_OO1 a bot:Space ;
bot:adjacentZone ex:Lighting_Zone_OO2 ;
.
ex:Lighting_Zone_OO2 a bot:Space ;
bot:adjacentZone ex:Lighting_Zone_OO1 ;
.
ex:Lighting_Zone_Bathroom a bot:Space ;
bot:adjacentZone ex:Lighting_Zone_Corridor ;
.
ex:Lighting_Zone_PO a bot:Space ;
bot:adjacentZone ex:Lighting_Zone_Corridor ;
.
ex:Lighting_Zone_Kitchenette a bot:Space ;
bot:adjacentZone ex:Lighting_Zone_Corridor ;
.
ex:Lighting_Zone_Corridor a bot:Space .
ex:Open_Office a bot:Space ;
bot:hasSpace ex:Lighting_Zone_OO2, ex:Lighting_Zone_OO2 ;
.
ex:Bathroom a bot:Space ;
bot:hasSpace ex:Lighting_Zone_Bathroom ;
.
ex:Private_Office a bot:Space ;
bot:hasSpace ex:Lighting_Zone_PO ;
.
ex:Kitchenette a bot:Space ;
bot:hasSpace ex:Lighting_Zone_Kitchenette ;
.
ex:Corridor a brick:Space ;
bot:hasSpace ex:Lighting_Zone_Corridor ;
.
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix tag: <https://brickschema.org/schema/1.1/BrickTag#> .
@prefix unit: <http://qudt.org/vocab/unit/> .
@prefix bot: <https://w3c-lbd-cg.github.io/> .
@prefix ex: <urn:bot#> .
ex:Site a bot:Site ;
bot:hasBuilding ex:Building ;
.
ex:Building a bot:Building ;
bot:hasSorey ex:Floor ;
.
ex:Floor a bot:Storey ;
bot:containsZone ex:HVAC_Zone_1, ex:HVAC_Zone_2, ex:Lighting_Zone_OO1, ex:Lighting_Zone_OO2,
ex:Lighting_Zone_Bathroom, ex:Lighting_Zone_PO, ex:Lighting_Zone_Kitchenette,
ex:Lighting_Zone_Corridor ;
bot:hasSpace ex:Open_Office, ex:Bathroom, ex:Private_Office, ex:Kitchenette, ex:Corridor ;
.
ex:HVAC_Zone_1 a bot:Space ;
bot:hasSpace ex:Open_Office, ex:Bathroom, ex:Corridor, ex:Private_Office ;
bot:adjacentZone ex:HVAC_Zone_2 ;
.
ex:HVAC_Zone_2 a bot:Space ;
bot:hasSpace ex:Kitchenette, ex:Corridor ;
bot:adjacentZone ex:HVAC_Zone_1 ;
.
ex:Lighting_Zone_OO1 a bot:Space ;
bot:adjacentZone ex:Lighting_Zone_OO2 ;
.
ex:Lighting_Zone_OO2 a bot:Space ;
bot:adjacentZone ex:Lighting_Zone_OO1 ;
.
ex:Lighting_Zone_Bathroom a bot:Space ;
bot:adjacentZone ex:Lighting_Zone_Corridor ;
.
ex:Lighting_Zone_PO a bot:Space ;
bot:adjacentZone ex:Lighting_Zone_Corridor ;
.
ex:Lighting_Zone_Kitchenette a bot:Space ;
bot:adjacentZone ex:Lighting_Zone_Corridor ;
.
ex:Lighting_Zone_Corridor a bot:Space .
ex:Open_Office a bot:Space ;
bot:hasSpace ex:Lighting_Zone_OO2, ex:Lighting_Zone_OO2 ;
.
ex:Bathroom a bot:Space ;
bot:hasSpace ex:Lighting_Zone_Bathroom ;
.
ex:Private_Office a bot:Space ;
bot:hasSpace ex:Lighting_Zone_PO ;
.
ex:Kitchenette a bot:Space ;
bot:hasSpace ex:Lighting_Zone_Kitchenette ;
.
ex:Corridor a brick:Space ;
bot:hasSpace ex:Lighting_Zone_Corridor ;
.
@prefix brick: <https://brickschema.org/schema/1.1/Brick#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix tag: <https://brickschema.org/schema/1.1/BrickTag#> .
@prefix unit: <http://qudt.org/vocab/unit/> .
@prefix ex: <urn:brick#> .
# Spatial elements
ex:Site a brick:Site ;
brick:hasPart ex:Building ;
.
ex:Building a brick:Building ;
brick:hasPart ex:Floor ;
.
ex:Floor a brick:Floor ;
brick:hasPart ex:HVAC_Zone_1, ex:HVAC_Zone_2, ex:Open_Office,
ex:Bathroom, ex:Private_Office, ex:Kitchenette, ex:Corridor,
ex:Lighting_Zone_OO1, ex:Lighting_Zone_OO2, ex:Lighting_Zone_Bathroom,
ex:Lighting_Zone_PO, ex:Lighting_Zone_Kitchenette, ex:Lighting_Zone_Corridor ;
.
ex:Open_Office a brick:Room .
ex:Bathroom a brick:Room .
ex:Private_Office a brick:Room .
ex:Kitchenette a brick:Room .
ex:Corridor a brick:Space .
ex:HVAC_Zone_1 a brick:HVAC_Zone ;
brick:hasPart ex:Open_Office, ex:Bathroom, ex:Corridor, ex:Private_Office ;
.
ex:HVAC_Zone_2 a brick:HVAC_Zone ;
brick:hasPart ex:Kitchenette, ex:Corridor ;
.
# Lighting elements
ex:OO_Lighting_1_Sensor a brick:Illuminance_Sensor .
ex:OO_Lighting_2_Sensor a brick:Illuminance_Sensor .
ex:Bathroom_Lighting_Sensor a brick:Illuminance_Sensor .
ex:Private_Office_Lighting_Sensor a brick:Illuminance_Sensor .
ex:Kitchenette_Lighting_Sensor a brick:Illuminance_Sensor .
ex:Corridor_Lighting_Sensor a brick:Illuminance_Sensor .
ex:OO_Lighting_1 a brick:Luminaire ;
brick:hasPoint ex:OO_Lighting_1_Sensor ;
.
ex:OO_Lighting_2 a brick:Luminaire ;
brick:hasPoint ex:OO_Lighting_2_Sensor ;
.
ex:Bathroom_Lighting a brick:Luminaire ;
brick:hasPoint ex:Bathroom_Lighting_Sensor ;
.
ex:Private_Office_Lighting a brick:Luminaire ;
brick:hasPoint ex:Private_Office_Lighting_Sensor ;
.
ex:Kitchenette_Lighting a brick:Luminaire ;
brick:hasPoint ex:Kitchenette_Lighting_Sensor ;
.
ex:Corridor_Lighting a brick:Luminaire ;
brick:hasPoint ex:Corridor_Lighting_Sensor ;
.
ex:Lighting_Zone_OO1 a brick:Lighting_Zone ;
brick:isFedBy ex:OO_Lighting_1 ;
brick:isPartOf ex:Open_Office ;
.
ex:Lighting_Zone_OO2 a brick:Lighting_Zone ;
brick:isFedBy ex:OO_Lighting_2 ;
brick:isPartOf ex:Open_Office ;
.
ex:Lighting_Zone_Bathroom a brick:Lighting_Zone ;
brick:isFedBy ex:Bathroom_Lighting ;
brick:isPartOf ex:Bathroom ;
.
ex:Lighting_Zone_Private_Office a brick:Lighting_Zone ;
brick:isFedBy ex:Private_Office_Lighting ;
brick:isPartOf ex:Private_Office ;
.
ex:Lighting_Zone_Kitchenette a brick:Lighting_Zone ;
brick:isFedBy ex:Kitchenette_Lighting ;
brick:isPartOf ex:Kitchenette ;
.
ex:Lighting_Zone_Corridor a brick:Lighting_Zone ;
brick:isFedBy ex:Corridor_Lighting ;
brick:isPartOf ex:Corridor ;
.
# VAVs
ex:VAV_Box_1 a brick:VAV ;
brick:hasPoint ex:SATS_1, ex:SATSP_1 ;
brick:hasPart ex:Damper_1, ex:Heating_Coil_1 ;
brick:feeds ex:HVAC_Zone_1 ;
.
ex:SATS_1 a brick:Supply_Air_Temperature_Sensor .
ex:SATSP_1 a brick:Supply_Air_Temperature_Setpoint .
ex:Damper_1 a brick:Damper ;
brick:hasPoint ex:Damper_1_Position ;
.
ex:Damper_1_Position a brick:Damper_Position_Command .
ex:Heating_Coil_1 a brick:Heating_Coil ;
brick:hasPart ex:Heating_Valve_1 ;
.
ex:Heating_Valve_1 a brick:Heating_Valve ;
brick:hasPoint ex:Valve_Command_1 ;
.
ex:Valve_Command_1 a brick:Valve_Command .
ex:VAV_Box_2 a brick:VAV ;
brick:hasPoint ex:SATS_2, ex:SATSP_2 ;
brick:hasPart ex:Damper_2, ex:Heating_Coil_2 ;
brick:feeds ex:HVAC_Zone_2 ;
.
ex:SATS_2 a brick:Supply_Air_Temperature_Sensor .
ex:SATSP_2 a brick:Supply_Air_Temperature_Setpoint .
ex:Damper_2 a brick:Damper ;
brick:hasPoint ex:Damper_2_Position ;
.
ex:Damper_2_Position a brick:Damper_Position_Command .
ex:Heating_Coil_2 a brick:Heating_Coil ;
brick:hasPart ex:Heating_Valve_2 ;
.
ex:Heating_Valve_2 a brick:Heating_Valve ;
brick:hasPoint ex:Valve_Command_2 ;
.
ex:Valve_Command_2 a brick:Valve_Command .
ex:Exhaust_Fan_1 a brick:Exhaust_Fan ;
brick:isFedBy ex:Bathroom ;
.
# AHU
ex:AHU a brick:AHU ;
brick:hasPart ex:Supply_Fan, ex:Return_Fan,
ex:Cooling_Coil, ex:Heating_Coil, ex:Filter,
ex:Outside_Damper, ex:Mixed_Damper, ex:Exhaust_Damper ;
brick:feeds ex:VAV_Box_1, ex:VAV_Box_2 ;
brick:isFedBy ex:HVAC_Zone_1 ;
brick:hasPoint ex:OATS, ex:RATS, ex:MATS, ex:SATS,
ex:pre_hc_temp, ex:pre_cc_temp,
ex:RAFS, ex:SAFS ;
.
ex:OATS a brick:Outside_Air_Temperature_Sensor .
ex:RATS a brick:Return_Air_Temperature_Sensor .
ex:MATS a brick:Mixed_Air_Temperature_Sensor .
ex:SATS a brick:Supply_Air_Temperature_Sensor .
ex:pre_hc_temp a brick:Temperature_Sensor .
ex:pre_cc_temp a brick:Temperature_Sensor .
ex:SAFS a brick:Supply_Air_Flow_Sensor .
ex:RAFS a brick:Return_Air_Flow_Sensor .
ex:Supply_Fan a brick:Supply_Fan ;
brick:hasPoint ex:SF_Speed ;
.
ex:SF_Speed a brick:Frequency_Command .
ex:Return_Fan a brick:Return_Fan ;
brick:hasPoint ex:SF_Speed ;
.
ex:RF_Speed a brick:Frequency_Command .
ex:Cooling_Coil a brick:Cooling_Coil ;
brick:hasPoint ex:CC_Valve ;
.
ex:CC_Valve a brick:Cooling_Valve ;
brick:hasPoint ex:CC_Valve_CMD ;
.
ex:CC_Valve_CMD a brick:Valve_Command ;
.
ex:Heating_Coil a brick:Heating_Coil ;
brick:hasPoint ex:HC_Valve ;
.
ex:HC_Valve a brick:Heating_Valve ;
brick:hasPoint ex:HC_Valve_CMD ;
.
ex:HC_Valve_CMD a brick:Valve_Command ;
.
ex:Filter a brick:Filter .
ex:Outside_Damper a brick:Damper ;
brick:hasPoint ex:Outside_Damper_Command ;
.
ex:Outside_Damper_Command a brick:Damper_Position_Command .
ex:Mixed_Damper a brick:Damper ;
brick:hasPoint ex:Mixed_Damper_Command ;
.
ex:Mixed_Damper_Command a brick:Damper_Position_Command .
ex:Exhaust_Damper a brick:Damper ;
brick:hasPoint ex:Exhaust_Damper_Command ;
.
ex:Exhaust_Damper_Command a brick:Damper_Position_Command .
# controller
ex:Controller a brick:Controller ;
brick:controls ex:RF_Speed ;
brick:hasInput ex:RAFS ;
.
# internal topology of AHU
ex:RATS brick:feeds ex:Return_Fan .
ex:Return_Fan brick:feeds ex:RAFS .
ex:RAFS brick:feeds ex:Exhaust_Damper, ex:Mixed_Damper .
ex:Mixed_Damper brick:feeds ex:MATS .
ex:Outside_Damper brick:feeds ex:MATS .
ex:MATS brick:feeds ex:Filter .
ex:Filter brick:feeds ex:pre_hc_temp .
ex:pre_hc_temp brick:feeds ex:Heating_Coil .
ex:Heating_Coil brick:feeds ex:pre_cc_temp .
ex:pre_cc_temp brick:feeds ex:Cooling_Coil .
ex:Cooling_Coil brick:feeds ex:SATS .
ex:SATS brick:feeds ex:Supply_Fan .
ex:Supply_Fan brick:feeds ex:SAFS .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix tag: <https://brickschema.org/schema/1.1/BrickTag#> .
@prefix unit: <http://qudt.org/vocab/unit/> .
@prefix core: <https://w3id.org/rec/core> .
@prefix bldg: <https://w3id.org/rec/building> .
@prefix dev: <https://w3id.org/rec/device> .
@prefix ex: <urn:rec#> .
# spatial components
ex:Site a core:RealEstate ;
core:hasRealEstatecomponent ex:Building ;
.
ex:Building a core:Building ;
core:hasBuildingComponent ex:Open_Office, ex:Bathroom, ex:Private_Office, ex:Kitchenette, ex:Corridor ;
.
ex:Open_Office a core:Room ;
core:hasType bldg:Office ;
.
ex:Bathroom a core:Room ;
core:hasType bldg:Bathroom ;
.
ex:Private_Office a core:Room ;
core:hasType bldg:Office ;
.
ex:Kitchenette a core:Room ;
core:hasType bldg:DishingRoom, bldg:CookingRoom ;
.
ex:Corridor a core:Room ;
core:hasType bldg:Hallway ;
.
# TODO: zones?
ex:HVAC_Zone_1 a bldg:VirtualBuildingComponent ;
core:hasBuildingComponent ex:Open_Office, ex:Bathroom, ex:Corridor, ex:Private_Office ;
.
ex:HVAC_Zone_2 a bldg:VirtualBuildingComponent ;
core:hasBuildingComponent ex:Kitchenette, ex:Corridor ;
.
# VAVs:
ex:VAV_Box_1 a core:Device ;
core:hasSubDevice ex:Damper_1, ex:Heating_Coil_1 ;
core:servesBuildingComponent ex:HVAC_Zone_1 ;
.
ex:Damper_1 a core:Device ;
dev:hasDeviceFunctionType dev:Damper ;
core:hasPlacementContext dev:SupplyAir ;
.
ex:Heating_Coil_1 a core:Device ;
core:hasType dev:Coil ;
dev:hasPlacementContext dev:HotWaterFlow, dev:SupplyAir ;
.
ex:VAV_Box_2 a core:Device ;
core:hasSubDevice ex:Damper_2, ex:Heating_Coil_2 ;
core:servesBuildingComponent ex:HVAC_Zone_2 ;
.
ex:Damper_2 a core:Device ;
core:hasType dev:Damper ;
core:hasPlacementContext dev:SupplyAir ;
.
ex:Heating_Coil_2 a core:Device ;
dev:hasDeviceFunctionType dev:Coil ;
dev:hasPlacementContext dev:HotWaterFlow, dev:SupplyAir ;
.
# AHU
ex:AHU a core:Device ;
dev:hasDeviceFunctionType dev:AirHandlingUnit ;
core:servesDevice ex:VAV_Box_1, ex:VAV_Box_2 ;
core:hasSubDevice ex:Supply_Fan, ex:Return_Fan,
ex:Cooling_Coil, ex:Heating_Coil, ex:Filter,
ex:Outside_Damper, ex:Mixed_Damper, ex:Exhaust_Damper ;
.
ex:Supply_Fan a core:Device ;
dev:hasDeviceFunctionType dev:Fan ;
core:hasPlacementContext dev:SupplyAir ;
.
ex:Return_Fan a core:Device ;
dev:hasDeviceFunctionType dev:Fan ;
# no return air in REC
# core:hasPlacementContext dev:ReturnAir ;
.
ex:Cooling_Coil a core:Device ;
dev:hasDeviceFunctionType dev:Coil ;
dev:hasPlacementContext dev:PrimaryCoolingFlow, dev:SupplyAir ;
.
ex:Heating_Coil a core:Device ;
dev:hasDeviceFunctionType dev:Coil ;
dev:hasPlacementContext dev:PrimaryHeatingFlow, dev:SupplyAir ;
.
ex:Filter a core:Device ;
dev:hasDeviceFunctionType dev:Filter ;
# circulation isn't quite mixed
dev:hasPlacementContext dev:CirculationAir ;
.
ex:Outside_Damper a core:Device ;
core:hasType dev:Damper ;
core:hasPlacementContext dev:OutdoorAir ;
.
# circulation isn't quite mixed
ex:Mixed_Damper a core:Device ;
core:hasType dev:Damper ;
core:hasPlacementContext dev:CirculationAir ;
.
ex:Exhaust_Damper a core:Device ;
core:hasType dev:Damper ;
core:hasPlacementContext dev:ExhaustAir ;
.
# internal topology
ex:Return_Fan core:servesDevice ex:Exhaust_Damper, ex:Mixed_Damper .
ex:Mixed_Damper core:servesDevice ex:Filter .
ex:Outside_Damper core:servesDevice ex:Filter .
ex:Filter core:servesDevice ex:Heating_Coil .
ex:Heating_Coil core:servesDevice ex:Cooling_Coil .
ex:Cooling_Coil core:servesDevice ex:Supply_Fan .
ex:Supply_Fan core:servesDevice ex:VAV_Box_1, ex:VAV_Box_2 .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix tag: <https://brickschema.org/schema/1.1/BrickTag#> .
@prefix unit: <http://qudt.org/vocab/unit/> .
@prefix sarefcore: <https://saref.etsi.org/core/> .
@prefix s4syst: <https://saref.etsi.org/saref4syst/> .
@prefix s4bldg: <https://saref.etsi.org/saref4bldg/> .
@prefix ex: <urn:saref#> .
ex:Building a s4bldg:Building ;
s4bldg:hasSpace ex:Floor ;
.
ex:Floor a s4bldg:BuildingSpace ;
s4bldg:hasSpace ex:HVAC_Zone_1, ex:HVAC_Zone_2, ex:Open_Office,
ex:Bathroom, ex:Private_Office, ex:Kitchenette, ex:Corridor,
ex:Lighting_Zone_OO1, ex:Lighting_Zone_OO2, ex:Lighting_Zone_Bathroom,
ex:Lighting_Zone_PO, ex:Lighting_Zone_Kitchenette, ex:Lighting_Zone_Corridor ;
.
ex:Open_Office a s4bldg:BuildingSpace .
ex:Bathroom a s4bldg:BuildingSpace .
ex:Private_Office a s4bldg:BuildingSpace .
ex:Kitchenette a s4bldg:BuildingSpace .
ex:Corridor a s4bldg:BuildingSpace .
ex:HVAC_Zone_1 a s4bldg:BuildingSpace ;
s4bldg:hasSpace ex:Open_Office, ex:Bathroom, ex:Corridor, ex:Private_Office ;
.
ex:Window_1 a s4bldg:ShadingDevice ;
s4bldg:shadingDeviceType "window" ;
s4bldg:isContainedIn ex:HVAC_Zone_1 ;
.
ex:Window_2 a s4bldg:ShadingDevice ;
s4bldg:shadingDeviceType "window" ;
s4bldg:isContainedIn ex:HVAC_Zone_1 ;
.
ex:HVAC_Zone_2 a s4bldg:BuildingSpace ;
s4bldg:hasSpace ex:Kitchenette, ex:Corridor ;
.
# lighting
ex:OO_Lighting_1 a s4bldg:Lamp .
ex:OO_Lighting_2 a s4bldg:Lamp .
ex:Bathroom_Lighting a s4bldg:Lamp .
ex:Private_Office_Lighting a s4bldg:Lamp .
ex:Kitchenette_Lighting a s4bldg:Lamp .
ex:Corridor_Lighting a s4bldg:Lamp .
# VAVs: there is no way in s4bldg to put one device "inside" another
ex:VAV_Box_1 a s4bldg:FlowTerminal .
ex:SATS_1 a sarefcore:TemperatureSensor .
ex:Damper_1 a s4bldg:Damper .
ex:Damper_1_Position a s4bldg:Actuator .
ex:Heating_Coil_1 a s4bldg:Coil .
ex:Valve_Command_1 a s4bldg:Actuator .
ex:VAV_Box_2 a s4bldg:FlowTerminal .
ex:SATS_2 a sarefcore:TemperatureSensor .
ex:Damper_2 a s4bldg:Damper .
ex:Damper_2_Position a s4bldg:Actuator .
ex:Heating_Coil_2 a s4bldg:Coil .
ex:Valve_Command_2 a s4bldg:Actuator .
ex:Exhaust_Fan_1 a s4bldg:Fan .
# AHU
ex:AHU a s4bldg:DistributionFlowDevice .
ex:Return_Fan a s4bldg:Fan .
ex:Supply_Fan a s4bldg:Fan .
ex:Filter a s4bldg:Filter .
ex:Outside_Damper a s4bldg:Damper .
ex:Mixed_Damper a s4bldg:Damper .
ex:Exhaust_Damper a s4bldg:Damper .
ex:Heating_Coil a s4bldg:Coil .
ex:Cooling_Coil a s4bldg:Coil .
ex:OATS a sarefcore:TemperatureSensor .
ex:RATS a sarefcore:TemperatureSensor .
ex:MATS a sarefcore:TemperatureSensor .
ex:SATS a sarefcore:TemperatureSensor .
ex:SF_Speed a s4bldg:Actuator .
ex:RF_Speed a s4bldg:Actuator .
ex:CC_Valve_CMD a s4bldg:Actuator .
ex:HC_Valve_CMD a s4bldg:Actuator .
ex:Controller a s4bldg:DistributionControlDevice .
@pained
Copy link

pained commented Jan 11, 2021

With sare4bldg is it possible to nest devices using the saref4syst extension? I was uncertain while reading the docs and writing up that section of our paper.

@gtfierro
Copy link
Author

saref4syst lets us connect devices and zones together, but it does not provide a property that places objects "inside" one another, or composes objects out of other objects

@pained
Copy link

pained commented Jan 11, 2021

Interesting. Seems like a weird thing to leave out. Regardless I'll update the text in the paper.

@pained
Copy link

pained commented Jan 11, 2021

When building the REC model did you consider the Virtual Building Component class to model Zones?

@gtfierro
Copy link
Author

I must have missed that! I'll add that

@pained
Copy link

pained commented Jan 11, 2021

Given how much of a mess their docs are things are easy to miss!

@pained
Copy link

pained commented Jan 12, 2021

I was just chatting with Marco. For the SSN/SOSA model you also leveraged BOT to be able to represent anything substantial from Marco's model I guess?

We were debating whether having the combination is in line with the goal of showing how little or how much any one of these ontologies can represent. Having a TTL file of just SSN/SOSA, without leveraging BOT, would leave huge gaps based on my understanding.

What are your thoughts?

@gtfierro
Copy link
Author

It should be fairly easy to separate out the SSN/SOSA stuff. I included them both in the same model because they are largely complementary, and the philosophy of these ontologies is such that you would probably use a "mix-n-match" approach to cover the full domain. SSN/SOSA and BOT are not trying to describe the full system here --- they are trying to provide a framework for one particular perspective on these kinds of systems, and evaluating them like they are trying to be complete isn't quite fair to them.

@pained
Copy link

pained commented Jan 12, 2021

Right that makes sense. I can see leaving them integrated and having more discussion about their complementarity as a good thing, as we've discussed before.

At the moment I'm working on figuring out how we should be referencing and incorporating these files in the paper.

@gtfierro
Copy link
Author

I was careful to use the same names for all of the "things" in each of the TTL files. While I haven't gone so far as to add what is fully expressible using each of the ontologies (i.e. adding numeric properties), we could adopt a graph visualization where the "things" are in a neutral color (like white), and we color the edges/nodes that are ascribed to each of the other ontologies. This would illustrate which parts of the building graph come from each ontology. Bushier parts of the graph show where a particular ontology can provide more detail. To make the visualization tractable, we could create figures for certain subparts of the figure: the Open Office, a VAV, the AHU, etc. I'll try to throw together an example

@pained
Copy link

pained commented Jan 12, 2021

That would be very helpful and likely would satisfy what Marco is looking for nicely

@pained
Copy link

pained commented Mar 30, 2021

Adding the building model Marco created that forms the basis of these TTL files.
MarcoBuildingModel

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment