Skip to content

New Setpoint+Parameter Implementation#763

Open
gtfierro wants to merge 18 commits intomasterfrom
gtf-setpoint-proposal
Open

New Setpoint+Parameter Implementation#763
gtfierro wants to merge 18 commits intomasterfrom
gtf-setpoint-proposal

Conversation

@gtfierro
Copy link
Member

@gtfierro gtfierro commented Mar 19, 2026

Remove Cooling/Heating_Temperature_Setpoint parents from deadband setpoints

Deadband setpoints represent the size of a deadband, not a threshold trigger point. Remove parent links to Cooling/Heating_Temperature_Setpoint (and Cooling/Heating_Temperature_Setpoint itself) to prevent deadband setpoints from incorrectly inheriting Threshold status.

Update tests for new setpoint/threshold model

  • hasParameter range is now Parameter (not Point)
  • hasTrigger domain is now Point (not Setpoint)
  • TriggerDirection uses punned enum hierarchy (not NamedIndividuals)
  • Alarm_Threshold is under Parameter (not Threshold)
  • Add tests for Cooling/Heating setpoints as Thresholds
  • Add tests verifying deadband setpoints are NOT Thresholds

Add setpoint modeling example

fix ontoenv api

Add EnumerationKind as supertype for punned enumerations

Introduce brick:EnumerationKind (modeled after s223:EnumerationKind) as the root class for all punned enumerations. TriggerDirection is now a subclass of EnumerationKind instead of Entity directly.

Update validation.ttl to check EnumerationKind

gtfierro and others added 17 commits December 15, 2025 16:21
Model TriggerDirection after s223 EnumerationKinds: each class is also
an instance of itself, enabling values at any level of specificity.
Hierarchy: TriggerDirection > Rising/Falling > Cooling/Heating.

Also propagate pun_classes flag through recursive define_classes calls,
and add Limit to the mutually disjoint Point subclass set.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Remove Alarm_Threshold from under Threshold (Setpoint hierarchy)
- Add Alarm_Threshold as a Parameter subclass
- Add Deadband_Shift as a sibling of Deadband under Parameter

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- hasParameter range narrowed from Point to Parameter
- hasTrigger domain broadened to include Parameter (for Alarm_Threshold)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add TriggerDirection-Rising/Falling/Cooling/Heating definitions
- Remove old Rising/Falling named individual definitions
- Update Alarm_Threshold and Deadband descriptions
- Add Deadband_Shift definition

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Threshold: requires exactly one hasTrigger of type TriggerDirection
- Alarm_Threshold: requires exactly one hasTrigger of type TriggerDirection
- Alarm: hasParameter constrained to Alarm_Threshold

Defined in root_class_shapes.ttl alongside other root-level SHACL shapes.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Cooling_Temperature_Setpoint: subClassOf Threshold, hasTrigger Cooling
- Heating_Temperature_Setpoint: subClassOf Threshold, hasTrigger Heating
- Cooling_Zone_Air_Temperature_Setpoint: subClassOf Threshold, hasTrigger Cooling
- Heating_Zone_Air_Temperature_Setpoint: subClassOf Threshold, hasTrigger Heating

Subclasses (Effective_, Occupied_, Unoccupied_, Standby_ variants)
inherit Threshold status through the class hierarchy.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…points

Deadband setpoints represent the size of a deadband, not a threshold
trigger point. Remove parent links to Cooling/Heating_Temperature_Setpoint
(and Cooling/Heating_Temperature_Setpoint itself) to prevent deadband
setpoints from incorrectly inheriting Threshold status.

Update tests for new setpoint/threshold model

- hasParameter range is now Parameter (not Point)
- hasTrigger domain is now Point (not Setpoint)
- TriggerDirection uses punned enum hierarchy (not NamedIndividuals)
- Alarm_Threshold is under Parameter (not Threshold)
- Add tests for Cooling/Heating setpoints as Thresholds
- Add tests verifying deadband setpoints are NOT Thresholds

Add setpoint modeling example

Demonstrates two common HVAC setpoint arrangements:
- Single target setpoint with symmetric deadband and limits
- Dual heating/cooling setpoints with alarm threshold

fix ontoenv api

Add EnumerationKind as supertype for punned enumerations

Introduce brick:EnumerationKind (modeled after s223:EnumerationKind)
as the root class for all punned enumerations. TriggerDirection is now
a subclass of EnumerationKind instead of Entity directly.

Update validation.ttl to check rdfs:subClassOf* EnumerationKind
instead of hardcoding brick:TriggerDirection, so future enumeration
kinds are automatically recognized.
Extract TriggerDirection hierarchy from generate_brick.py into a
dedicated enumerations.py module, following the same pattern as
other bricksrc definition files (setpoint.py, parameter.py, etc.).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@github-actions
Copy link

The latest build of the Brick ontology on this PR is available here.

@github-actions
Copy link

The latest build of the Brick ontology on this PR is available here.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant