Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
8e1704b
adding some base types
gtfierro Dec 15, 2025
f52b00c
Merge remote-tracking branch 'origin/master' into gtf-setpoint-proposal
gtfierro Mar 12, 2026
e8d5b79
Replace TriggerDirection named individuals with punned enum hierarchy
gtfierro Mar 17, 2026
fc840f3
Move Alarm_Threshold to Parameter; add Deadband_Shift
gtfierro Mar 17, 2026
4ae0eff
Constrain hasParameter range to Parameter; broaden hasTrigger domain
gtfierro Mar 17, 2026
2c7977b
Update definitions for new setpoint/parameter concepts
gtfierro Mar 17, 2026
c3681ce
Add SHACL constraints for Threshold, Alarm_Threshold, and Alarm
gtfierro Mar 17, 2026
aa0d337
Classify Cooling/Heating temperature setpoints as Thresholds
gtfierro Mar 18, 2026
198721c
more point
gtfierro Mar 18, 2026
324216c
Remove Cooling/Heating_Temperature_Setpoint parents from deadband set…
gtfierro Mar 19, 2026
91a8e4a
Merge remote-tracking branch 'origin/master' into gtf-setpoint-proposal
gtfierro Mar 19, 2026
3e5f8ec
remove draft test
gtfierro Mar 19, 2026
c28da52
Move enumeration definitions to bricksrc/enumerations.py
gtfierro Mar 19, 2026
82d82ec
fix enumkind def
gtfierro Mar 19, 2026
9d14b7d
Move EnumerationKind label/comment to root_class_shapes.ttl
gtfierro Mar 19, 2026
5995371
remove draft test
gtfierro Mar 19, 2026
3aef91b
remove old abbrev
gtfierro Mar 19, 2026
7af4274
add ahulist example
gtfierro Mar 19, 2026
28fc1c5
add TODO
gtfierro Apr 2, 2026
02e9a88
rdfs prefix
gtfierro Apr 2, 2026
8d0bf26
Merge branch 'master' into gtf-setpoint-proposal
gtfierro Apr 2, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 17 additions & 2 deletions bricksrc/definitions.csv
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ https://brickschema.org/schema/Brick#Air_Wet_Bulb_Temperature_Sensor,,
https://brickschema.org/schema/Brick#Alarm,Alarm points are signals (either audible or visual) that alert an operator to an off-normal condition which requires some form of corrective action,https://terminology.ashrae.org/?term=alarm
https://brickschema.org/schema/Brick#Alarm_Delay_Parameter,A parameter determining how long to delay an alarm after sufficient conditions have been met,
https://brickschema.org/schema/Brick#Alarm_Sensitivity_Parameter,A parameter indicates the sensitivity to activate an alarm.,
https://brickschema.org/schema/Brick#Alarm_Threshold,A parameter that defines the threshold value at which an alarm condition is triggered,
https://brickschema.org/schema/Brick#Alternating_Current_Frequency,The frequency of the oscillations of alternating current,
https://brickschema.org/schema/Brick#Ammonia,Ammonia,
https://brickschema.org/schema/Brick#Ammonia_Sensor,,
Expand Down Expand Up @@ -231,7 +232,9 @@ https://brickschema.org/schema/Brick#Damper_Position_Setpoint,Sets the position
https://brickschema.org/schema/Brick#Damper_Position_Status,,
https://brickschema.org/schema/Brick#Data_Network_Equipment,,
https://brickschema.org/schema/Brick#Daylight_Sensor_Equipment,,
https://brickschema.org/schema/Brick#Deadband,The total size of the deadband around a setpoint (a delta quantity). A symmetric deadband is centered on the setpoint; use Deadband_Shift to indicate an asymmetric offset,
https://brickschema.org/schema/Brick#Deadband_Setpoint,Sets the size of a deadband,
https://brickschema.org/schema/Brick#Deadband_Shift,The offset of the deadband center from the setpoint value. Zero for a symmetric deadband; nonzero shifts the effective activation points asymmetrically,
https://brickschema.org/schema/Brick#Deceleration_Time_Setpoint,,
https://brickschema.org/schema/Brick#Dedicated_Outdoor_Air_System_Unit,"A device that conditions and delivers 100% outdoor air to its assigned spaces. It decouples air-conditioning of the outdoor air, usually used to provide minimum outdoor air ventilation, from conditioning of the internal loads.",
https://brickschema.org/schema/Brick#Dehumidification_Start_Stop_Status,,
Expand Down Expand Up @@ -399,6 +402,7 @@ https://brickschema.org/schema/Brick#Enthalpy_Sensor,Measures the total heat con
https://brickschema.org/schema/Brick#Enthalpy_Setpoint,Sets enthalpy,
https://brickschema.org/schema/Brick#Entity,,
https://brickschema.org/schema/Brick#EntityPropertyValue,,
https://brickschema.org/schema/Brick#EnumerationKind,Root class for punned enumerations. Each subclass is also an instance of itself enabling values at any level of specificity,
https://brickschema.org/schema/Brick#Equipment,"devices that serve all or part of the building and may include electric power, lighting, transportation, or service water heating, including, but not limited to, furnaces, boilers, air conditioners, heat pumps, chillers, water heaters, lamps, luminaires, ballasts, elevators, escalators, or other devices or installations.",
https://brickschema.org/schema/Brick#Ethernet_Port,,
https://brickschema.org/schema/Brick#Ethernet_Switch,,
Expand Down Expand Up @@ -655,7 +659,7 @@ https://brickschema.org/schema/Brick#Lighting_Correlated_Color_Temperature_Senso
https://brickschema.org/schema/Brick#Lighting_Equipment,,
https://brickschema.org/schema/Brick#Lighting_Level_Command,Controls the amount of the light provided by the device typically in percentages.,
https://brickschema.org/schema/Brick#Lighting_System,"The equipment, devices and interfaces that serve or are a part of the lighting subsystem in a building",
https://brickschema.org/schema/Brick#Limit,A parameter that places an upper or lower bound on the range of permitted values of another point,
https://brickschema.org/schema/Brick#Limit,Sets an upper or lower bound that should not be exceeded,
https://brickschema.org/schema/Brick#Liquid,"state of matter intermediate between crystalline substances and gases in which the volume of a substance, but not the shape, remains relatively constant.",
https://brickschema.org/schema/Brick#Liquid_CO2,Carbon Dioxide in the liquid phase,
https://brickschema.org/schema/Brick#Liquid_Detection_Alarm,,
Expand Down Expand Up @@ -955,8 +959,9 @@ https://brickschema.org/schema/Brick#Relay_Command,Commands to switch the relay,
https://brickschema.org/schema/Brick#Relief_Damper,"A damper that is a component of a Relief Air System, ensuring building doesn't become over-pressurised",
https://brickschema.org/schema/Brick#Relief_Fan,"A fan that is a component of a Relief Air System, ensuring building doesn't become over-pressurised",
https://brickschema.org/schema/Brick#Remotely_On_Off_Status,,
https://brickschema.org/schema/Brick#Request,"A point conveying a request signal (e.g., trim/response or load-based request) for higher-level control aggregation",
https://brickschema.org/schema/Brick#Reset_Command,"Commands that reset a flag, property or value to its default",
https://brickschema.org/schema/Brick#Reset_Setpoint,Setpoints used in reset strategies,
https://brickschema.org/schema/Brick#Reset_Setpoint,Value to which a setpoint is reset when conditions dictate,
https://brickschema.org/schema/Brick#Return_Air,"air removed from a space to be recirculated or exhausted. Air extracted from a space and totally or partially returned to an air conditioner, furnace, or other heating, cooling, or ventilating system.",
https://brickschema.org/schema/Brick#Return_Air_CO2_Sensor,Measures the concentration of CO2 in return air,
https://brickschema.org/schema/Brick#Return_Air_CO2_Setpoint,Sets some property of CO2 in Return Air,
Expand Down Expand Up @@ -991,6 +996,7 @@ https://brickschema.org/schema/Brick#Safety_Equipment,,
https://brickschema.org/schema/Brick#Safety_Shower,,
https://brickschema.org/schema/Brick#Safety_System,,
https://brickschema.org/schema/Brick#Sash_Position_Sensor,Measures the current position of a sash in terms of the percent of fully open,
https://brickschema.org/schema/Brick#Scale,A scaling factor applied to another point or calculation,
https://brickschema.org/schema/Brick#Schedule_Temperature_Setpoint,The current setpoint as indicated by the schedule,
https://brickschema.org/schema/Brick#Security_Equipment,,
https://brickschema.org/schema/Brick#Sensor,A Sensor is an input point that represents the value of a device or instrument designed to detect and measure a variable (ASHRAE Dictionary).,
Expand All @@ -1001,6 +1007,7 @@ https://brickschema.org/schema/Brick#Server,,
https://brickschema.org/schema/Brick#Setpoint,A Setpoint is an input value at which the desired property is set,https://terminology.ashrae.org/?term=setpoint
https://brickschema.org/schema/Brick#Shading_Equipment,,
https://brickschema.org/schema/Brick#Shading_System,Devices that can control daylighting through various means,
https://brickschema.org/schema/Brick#Shift,A shift applied to move a target value or curve,
https://brickschema.org/schema/Brick#Short_Cycle_Alarm,An alarm that indicates a short cycle occurred. A short cycle occurs when a cooling cycle is prevented from completing its full cycle,
https://brickschema.org/schema/Brick#Smoke_Alarm,An alarm that indicates the off-normal conditions associated with smoke.,
https://brickschema.org/schema/Brick#Smoke_Detection_Alarm,,
Expand Down Expand Up @@ -1133,6 +1140,7 @@ https://brickschema.org/schema/Brick#Thermostat,An automatic control device used
https://brickschema.org/schema/Brick#Thermostat_Equipment,,
https://brickschema.org/schema/Brick#Thermostat_Status,Status of a thermostat,
https://brickschema.org/schema/Brick#Thermostatic_Mixing_Valve,"A valve that blends hot water with cold water to ensure constant, safe shower and bath outlet temperatures, preventing scalding.",https://en.wikipedia.org/wiki/Thermostatic_mixing_valve
https://brickschema.org/schema/Brick#Threshold,A setpoint representing a one-sided boundary value used to trigger actions when crossed,
https://brickschema.org/schema/Brick#Time_Parameter,,
https://brickschema.org/schema/Brick#Time_Setpoint,,
https://brickschema.org/schema/Brick#Tint_Command,The target level of window tint.,
Expand All @@ -1143,6 +1151,11 @@ https://brickschema.org/schema/Brick#Touchpanel,A switch used to operate all or
https://brickschema.org/schema/Brick#Transfer_Fan,A fan that transfers air from a space to another space.,
https://brickschema.org/schema/Brick#Transfer_Switch,An electrical switch that switches a load between two (or more) sources.,
https://brickschema.org/schema/Brick#Transformer,"A Transformer is usually fed by a high-voltage source and then steps down the voltage to a lower-voltage feed for low-voltage application (such as lights). Transformers also can step up voltage, but this generally does not apply to in building distribution.",
https://brickschema.org/schema/Brick#TriggerDirection,Enumerates the direction a measured value crosses a threshold to trigger an action. Each subclass is also an instance of itself (punned enumeration),
https://brickschema.org/schema/Brick#TriggerDirection-Cooling,A rising trigger associated with cooling: cooling begins when the measured value rises above the threshold,
https://brickschema.org/schema/Brick#TriggerDirection-Falling,The threshold is triggered when the measured value falls below it,
https://brickschema.org/schema/Brick#TriggerDirection-Heating,A falling trigger associated with heating: heating begins when the measured value falls below the threshold,
https://brickschema.org/schema/Brick#TriggerDirection-Rising,The threshold is triggered when the measured value rises above it,
https://brickschema.org/schema/Brick#Underfloor_Air_Plenum,An open space between a structural concrete slab and the underside of a raised access floor system that connects to an air handling unit to receive conditioned and/or ventilating air before delivery to the room(s),
https://brickschema.org/schema/Brick#Underfloor_Air_Plenum_Static_Pressure_Sensor,Measures the outward push of air against the plenum surfaces and used to measure the resistance when air moves through the plenum,
https://brickschema.org/schema/Brick#Underfloor_Air_Plenum_Static_Pressure_Setpoint,Sets the underfloor air plenum static pressure,
Expand Down Expand Up @@ -1251,11 +1264,13 @@ https://brickschema.org/schema/Brick#hasAssociatedTag,The class is associated wi
https://brickschema.org/schema/Brick#hasInputSubstance,The subject receives the given substance as an input to its internal process,
https://brickschema.org/schema/Brick#hasLocation,Subject is physically located in the location given by the object,
https://brickschema.org/schema/Brick#hasOutputSubstance,The subject produces or exports the given substance from its internal process,
https://brickschema.org/schema/Brick#hasParameter,Relates a Point to another Point that configures constrains or qualifies it,
https://brickschema.org/schema/Brick#hasPart,The subject is composed in part of the entity given by the object,
https://brickschema.org/schema/Brick#hasPoint,The subject has a source of telemetry identified by the object. In some systems the source of telemetry may be represented as a digital/analog input/output point,
https://brickschema.org/schema/Brick#hasQUDTReference,Points to the relevant QUDT definition,
https://brickschema.org/schema/Brick#hasSubMeter,Indicates a submeter of this meter,
https://brickschema.org/schema/Brick#hasTag,The subject has the given tag,
https://brickschema.org/schema/Brick#hasTrigger,Indicates the trigger direction of a threshold setpoint,
https://brickschema.org/schema/Brick#hasUnit,The QUDT unit associated with this Brick entity (usually a Brick Point instance or Entity Property),
https://brickschema.org/schema/Brick#isAssociatedWith,The tag is associated with the given class,
https://brickschema.org/schema/Brick#isFedBy,,
Expand Down
43 changes: 43 additions & 0 deletions bricksrc/enumerations.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
from rdflib import Literal
from .namespaces import RDFS

enumeration_definitions = {
"TriggerDirection": {
RDFS.comment: Literal(
"Enumerates the direction a measured value crosses a threshold to trigger an action.",
lang="en",
),
"subclasses": {
"TriggerDirection-Rising": {
RDFS.comment: Literal(
"The threshold is triggered when the measured value rises above it.",
lang="en",
),
"subclasses": {
"TriggerDirection-Cooling": {
RDFS.comment: Literal(
"A rising trigger associated with cooling: cooling begins when "
"the measured value rises above the threshold.",
lang="en",
),
},
},
},
"TriggerDirection-Falling": {
RDFS.comment: Literal(
"The threshold is triggered when the measured value falls below it.",
lang="en",
),
"subclasses": {
"TriggerDirection-Heating": {
RDFS.comment: Literal(
"A falling trigger associated with heating: heating begins when "
"the measured value falls below the threshold.",
lang="en",
),
},
},
},
},
},
}
24 changes: 24 additions & 0 deletions bricksrc/parameter.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@
"Parameter": {
"tags": [TAG.Point, TAG.Parameter],
"subclasses": {
"Request": {
"tags": [TAG.Point, TAG.Request, TAG.Parameter],
},
"Delay_Parameter": {
"tags": [TAG.Point, TAG.Delay, TAG.Parameter],
"subclasses": {
Expand All @@ -13,6 +16,15 @@
},
},
},
"Deadband": {
"tags": [TAG.Point, TAG.Deadband, TAG.Parameter],
},
"Deadband_Shift": {
"tags": [TAG.Point, TAG.Deadband, TAG.Shift, TAG.Parameter],
},
"Alarm_Threshold": {
"tags": [TAG.Point, TAG.Alarm, TAG.Threshold, TAG.Parameter],
},
"Alarm_Sensitivity_Parameter": {
"tags": [TAG.Point, TAG.Alarm, TAG.Sensitivity, TAG.Parameter],
"subclasses": {
Expand All @@ -36,6 +48,18 @@
},
},
},
"Offset": {
"tags": [TAG.Point, TAG.Offset, TAG.Parameter],
},
"Reset_Setpoint": {
"tags": [TAG.Point, TAG.Reset, TAG.Setpoint, TAG.Parameter],
},
"Scale": {
"tags": [TAG.Point, TAG.Scale, TAG.Parameter],
},
"Shift": {
"tags": [TAG.Point, TAG.Shift, TAG.Parameter],
},
"Humidity_Parameter": {
"tags": [TAG.Point, TAG.Humidity, TAG.Parameter],
"subclasses": {
Expand Down
10 changes: 10 additions & 0 deletions bricksrc/point.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
from .namespaces import TAG

point_definitions = {
"Limit": {
"tags": [TAG.Point, TAG.Limit],
},
"Request": {
"tags": [TAG.Point, TAG.Request],
},
}
32 changes: 26 additions & 6 deletions bricksrc/relationships.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,30 @@
"range": [BRICK.Quantity, QUDT.QuantityKind],
"domain": BRICK.Point,
},
"hasParameter": {
A: [OWL.ObjectProperty],
RDFS.label: Literal("Has Parameter", lang="en"),
RDFS.comment: Literal(
"Relates a Point to a Parameter that configures, constrains, or qualifies it.",
lang="en",
),
RDFS.domain: BRICK.Point,
RDFS.range: BRICK.Parameter,
"range": BRICK.Parameter,
"domain": BRICK.Point,
},
"hasTrigger": {
A: [OWL.ObjectProperty],
RDFS.label: Literal("Has Trigger", lang="en"),
RDFS.comment: Literal(
"Indicates the trigger direction of a threshold or alarm threshold.",
lang="en",
),
RDFS.domain: BRICK.Point,
RDFS.range: BRICK.TriggerDirection,
"range": BRICK.TriggerDirection,
"domain": [BRICK.Setpoint, BRICK.Parameter],
},
"value": {
RDFS.subPropertyOf: QUDT.value,
RDFS.label: Literal("Value", lang="en"),
Expand Down Expand Up @@ -67,7 +91,7 @@
A: [OWL.ObjectProperty, OWL.AsymmetricProperty, OWL.IrreflexiveProperty],
OWL.inverseOf: BRICK["isLocationOf"],
"domain": BRICK.Entity,
"range":[BRICK.Location, REC.Architecture],
"range": [BRICK.Location, REC.Architecture],
RDFS.label: Literal("Has location", lang="en"),
},
"hasInputSubstance": {
Expand Down Expand Up @@ -103,11 +127,7 @@
A: [OWL.ObjectProperty, OWL.AsymmetricProperty, OWL.IrreflexiveProperty],
OWL.inverseOf: BRICK["hasPoint"],
"domain": BRICK.Point,
"range": [
BRICK.Equipment,
BRICK.Location,
REC.Architecture
],
"range": [BRICK.Equipment, BRICK.Location, REC.Architecture],
RDFS.label: Literal("Is point of", lang="en"),
},
"hasPart": {
Expand Down
29 changes: 29 additions & 0 deletions bricksrc/root_class_shapes.ttl
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,10 @@ brick:Point a sh:NodeShape;
] ;
.

brick:EnumerationKind
rdfs:label "Enumeration Kind" ;
rdfs:comment "Root class for punned enumerations: each subclass is also an instance of itself. This allows them to be used as values while still being referencable at multiple levels of granularity." .

brick:Collection a sh:NodeShape;
sh:node [sh:not [ sh:class brick:Equipment ] ; sh:message "Collection is an exclusive top class." ],
[sh:not [ sh:class brick:Location ] ; sh:message "Collection is an exclusive top class." ],
Expand Down Expand Up @@ -147,6 +151,31 @@ bsh:hasHotColdDeck
] ;
.

brick:Threshold a sh:NodeShape ;
sh:property [
sh:path brick:hasTrigger ;
sh:minCount 1 ;
sh:maxCount 1 ;
sh:class brick:TriggerDirection ;
sh:message "A Threshold must have exactly one hasTrigger of type TriggerDirection."
] .

brick:Alarm_Threshold a sh:NodeShape ;
sh:property [
sh:path brick:hasTrigger ;
sh:minCount 1 ;
sh:maxCount 1 ;
sh:class brick:TriggerDirection ;
sh:message "An Alarm_Threshold must have exactly one hasTrigger of type TriggerDirection."
] .

brick:Alarm a sh:NodeShape ;
sh:property [
sh:path brick:hasParameter ;
sh:class brick:Alarm_Threshold ;
sh:message "An Alarm's parameters must be Alarm_Thresholds."
] .

bsh:isPointOfShape a sh:PropertyShape ;
sh:targetClass brick:Point ;
sh:path brick:isPointOf ;
Expand Down
Loading
Loading