Pragmatic BIM Data Contract¶
A pragmatic, graph-first LinkML data contract for BIM integration, querying, costing, and analysis workflows.
Why this exists¶
BIM data is hard to use.
Not because the data is missing, but because it is buried in complexity:
- IFC (Industry Foundation Classes) is powerful but:
- too complex (hundreds of entities and deep relationships)
- inconsistent across tools and projects
- difficult to query for real workflows
- mixes performance (what a product or assembly actually delivers) with requirements (what a project or regulation demands) in the same property sets and attributes, so compliance checks and product data stay entangled
- treats change as an afterthought: revisions are file swaps, not structured diff records you can query, aggregate, or feed into workflows
- IDS (Information Delivery Specification) focuses on data validation, but not on complex conditional validation logic (for example: if a building is below 25 m, staircase walls must be EI90).
- bSDD (buildingSMART Data Dictionary) focuses on classification, not workflows.
Result: teams cannot reliably build automation, dashboards, or simulations on top of BIM data without heavy preprocessing.
What this is¶
This project defines a pragmatic BIM data contract: a minimal, opinionated structure for BIM data designed for workflows, not modeling.
It acts as a layer between:
- complex source data (for example IFC)
- and real applications (QTO, simulations, dashboards, quality checks)
Core idea¶
Instead of trying to standardize everything, this contract:
- reduces complexity
- enforces consistency
- focuses on what is actually needed
- separates performance properties from requirement drivers so each can be queried, validated, and updated independently
- models change as first-class data (
Changeand its subclasses) rather than relying on opaque file diffs
It is intentionally limited.
Principles¶
1) Not a replacement for IFC¶
This contract does not compete with IFC.
IFC remains:
- the exchange format
- the source of truth
This contract exists to make IFC usable in day-to-day workflows.
2) Designed for workflows, not modeling¶
This contract is built for:
- querying data
- running calculations
- feeding simulations
- building applications
Not for:
- authoring models
- preserving full semantic richness
3) Opinionated by design¶
Flexibility is often the enemy of automation. This contract intentionally:
- limits structure
- enforces naming
- reduces ambiguity
If your use case requires full flexibility, use IFC directly.
4) Abstraction over completeness¶
This project intentionally ignores large parts of IFC.
Only data required for real decision workflows is included.
5) Consistency over universality¶
This is not a universal standard.
It is a consistent contract that enables:
- repeatable queries
- predictable pipelines
- reliable automation
What this enables¶
Using this contract, you can build:
- quantity takeoff pipelines
- room and space analysis
- simulation input models
- project dashboards
- validation workflows
Without having to:
- traverse complex IFC relationships
- handle inconsistent structures
- rebuild logic for every project
How it fits in a workflow¶
- Ingest BIM/IFC data with project-specific extraction logic.
- Map extracted entities to this schema.
- Store/query as graph or relational projections.
- Enrich with requirements, performance metrics, schedules, and cost/material metadata.
- Export, analyze, or feed application APIs.
Products that use it¶
Getting started¶
- Browse the Schema reference and download artifacts (JSON Schema, SHACL, CSV, Pydantic).
- Read Mappings to IFC for declarative ingestion from IFC.
- Explore Classifications for SKOS vocabularies and mapping bridges.
Governance¶
This contract is maintained by the Pragmatic BIM team. It is not governed by a formal standards body.
| Maintainer | Pragmatic BIM maintainers (GitHub) |
| Change process | GitHub issues for proposals; focused pull requests for changes |
| Release cadence | Semantic version tags (v*) publish schema releases to schema.pragmaticbim.ch |
How to participate
- Proposals: Open a GitHub issue — bugs, gaps, new entities, classification requests.
- Contributions: Pull requests welcome; keep changes focused and include documentation updates.
- Classifications: Abstract vocabularies live in pragmatic-bim-public-rules; project-specific schemes live in this repository.
Versioning
- Releases are tagged
vMAJOR.MINOR.PATCHon GitHub. - Each tag publishes versioned snapshots at
schema.pragmaticbim.ch/<version>/(for example/v0.0.7/). - Breaking schema changes bump the major or minor version; patch releases are fixes and non-breaking additions.
There is no separate steering committee or public RFC process at this stage. Input via GitHub issues is the primary channel for community feedback.