Skip to main content

The problem with explicit types

Without class hierarchy, querying building data means knowing every specific type you’re looking for:
Miss a type? You miss data. Add a new equipment type next year? Every query breaks. This doesn’t scale.

How is works

The is argument queries by Brick class and automatically includes all subtypes:
This returns AHUs, VAVs, FCUs, heat exchangers, and every equipment type that is a subclass of HVAC_Equipment in the Brick hierarchy. Add a new type next year? It automatically matches.

Common hierarchies

Equipment

Points (sensors)

Points (setpoints and commands)

Query examples

All sensors on an AHU

Returns temperature sensors, humidity sensors, pressure sensors, flow sensors, and every other sensor type attached to this AHU.

All setpoints in a building

Narrow vs broad queries

The broader the class, the more results. Start broad to explore, narrow when you know what you need.

How it works under the hood

When you pass is: "HVAC_Equipment", Tacit resolves the Brick class hierarchy to find all subclasses:
  1. Look up HVAC_Equipment in the Brick ontology
  2. Find all classes where X rdfs:subClassOf* HVAC_Equipment
  3. Match any entity whose class is in that set
This is the same resolution that SPARQL’s a/rdfs:subClassOf* performs, but expressed as a single argument in a GraphQL query.

Combining is with other arguments

Invalid class names

If you pass an unknown class name, the query returns an empty result set. No entities match a class that doesn’t exist in the Brick ontology.

Equivalent SPARQL

The is argument replaces this SPARQL pattern:
Same resolution, expressed as a single argument instead of a property path.

Next steps

Relationships & traversal

Follow equipment chains with upstream and downstream queries.

Equipment reference

Full reference for equipment queries with class filtering.