Core Concepts — how DAQS sees Revit data
Before writing advanced filters or validations, you need to understand how DAQS represents Revit data and where information actually lives.
Most mistakes in DAQS rules do not come from JSONata syntax. They come from incorrect assumptions about the Revit data model.
This chapter fixes that.
Why this chapter exists
If you skip this section, you will still be able to:
- Copy example rules
- Get “some” results
- Produce output
But you will also:
- Filter at the wrong level
- Miss data that should be validated
- Hide errors instead of reporting them
- Write rules that break as soon as the model changes
The goal of this chapter is not to teach syntax.
The goal is to teach the correct mental model.
How to read this chapter
This section is conceptual, not procedural.
- Read it top to bottom once
- Come back to individual pages when something feels unclear
- Use it as a reference when debugging rules that “look right but behave wrong”
You do not need to memorise everything. You do need to understand the principles.
Core concepts covered
Revit object hierarchy
Understand the fundamental Revit objects and their relationships:
- Family
- FamilySymbol (Type)
- FamilyInstance
- Parameter
This explains why rules are often multi-step.
→ revit_object_hierarchy.md
Where data lives (and where it does not)
Not all data is stored where users expect it to be.
This section explains:
- Why category and Assembly Code live on the type
- Why instance filters often fail
- Why some parameters appear “missing”
→ where_data_lives.md
The DAQS data model
DAQS does not mirror the Revit UI.
This section explains:
- Why DAQS uses a flat, relational JSON structure
- How
idandparent.idreplace nesting - Why this makes rules safer and more scalable
→ daqs_data_model.md
Identity vs value
Learn the difference between:
- What an object is (identity)
- What an object has (values)
This distinction is critical for correct filtering and validation.
→ identity_vs_value.md
Filtering vs validation
Filters and validations serve different purposes and must never be mixed.
This section explains:
- What filters are allowed to do
- What validations must never do
- Why hiding incorrect data is worse than reporting it
→ filtering_vs_validation.md
Why two-step filtering exists
Many DAQS rules filter:
- FamilySymbols
- FamilyInstances
This is not a workaround — it is a direct result of the Revit data model.
→ two_step_filtering.md
Defensive rule writing
Real-world models are messy.
This section introduces principles for writing rules that:
- Do not break when data is missing
- Do not assume correct bindings
- Remain stable across projects
→ defensive_rules.md
When to move on
You are ready to continue when:
- You know which object level to filter for a given rule
- You can explain why a rule is split into multiple steps
- You understand why some data must be validated, not filtered
Once these concepts are clear, the following chapters will feel logical instead of magical.
Next
Continue with:
→ Filtering Patterns
→ 03_filtering_patterns/index.md