The problem with explicit types
Without class hierarchy, querying building data means knowing every specific type you’re looking for:How is works
The is argument queries by Brick class and automatically includes all subtypes:
HVAC_Equipment in the Brick hierarchy. Add a new type next year? It automatically matches.
The class hierarchy
Brick organizes building concepts into a tree. Every class inherits from its parent, and querying a parent matches all descendants.Temperature_Sensor, you get all five subtypes. When you query for Sensor, you get temperature sensors plus humidity sensors, pressure sensors, CO2 sensors, and everything else. The hierarchy does the filtering for you.
Common hierarchies
Equipment
Points (sensors)
Points (setpoints and commands)
Narrow vs broad queries
is argument | What matches |
|---|---|
Point | Every sensor, setpoint, command, and status |
Sensor | All sensors (temperature, humidity, pressure, etc.) |
Temperature_Sensor | All temperature sensors (supply, return, zone, etc.) |
Supply_Air_Temperature_Sensor | Only supply air temperature sensors |
Query examples
All sensors on an AHU
All setpoints in a building
Combining is with other arguments
is composes with every other filter argument:
How it works under the hood
When you passis: "HVAC_Equipment", Tacit resolves the Brick class hierarchy to find all subclasses:
- Look up
HVAC_Equipmentin the Brick ontology - Find all classes where
X rdfs:subClassOf* HVAC_Equipment - Match any entity whose class is in that set
a/rdfs:subClassOf* performs, but expressed as a single argument in a GraphQL query.
Equivalent SPARQL
Theis argument replaces this SPARQL pattern:
Next steps
Relationships & traversal
Follow equipment chains with upstream and downstream queries.
GraphQL query reference
Full reference for all query arguments and return fields.
