BIM Open Schema is an open formal specification of BIM data, including 3D geometry, that is optimized and designed for large-scale data and modern tools and pipelines that uses Parquet to store data in a compact and widely supported binary format.
This repository provides:
- Official specification - in the form of valid C# code.
- Sample test files - generated from the Autodesk sample files.
- BIM Open Schema Exporter - an exporter for Revit 2025 bundled with Ara 3D Studio.
Bim.Open.Schema.+.Ara.3D.Viewer.mp4
BIM Open Schema comes with an ecosystem of open-source tools in other repositories for
- Reading and querying BIM Open Schema (.BOS) files
- Data structures for querying and construction BIM Open Schema data
- Exporting BOS files from Revit
- Displaying BOS data in WPF Datagrid controls along with exporting to GLTF and Excel files
- Loading, Viewing, and Querying BOS files in the browser
- Querying BOS data in the browser via DuckDB
Parquet is a very compact, efficient, and widely supported binary format for tabular data.
It is self-describing and validating. Unlike with CSV or JSON, a Parquet importer can determine exactly how many rows and columns of data
there are and what data types are contained within.
BIM Open Schema files have the extension .bos and are zip archives containing several .parquet files.
You can rename the extension to a .zip and open the archive with Windows explorer and other common tools.
- analytics - pandas, Power BI
- databases - DuckDB, BIM Lakehouse, BIM Open Schema Reader
- serialization - Parquet
- interactive visualization - Ara 3D Studio, Ara 3D WebGL.
A schema describes the meaning, relationships, and structure of data. The BIM Open Schema project is agnostic of the specific serialization format (e.g. you could use JSON or FlatBuffer), but it is optimized for structured self-describing columnar binary data formats, particularly Parquet.
The schema is optimized for serialization to/from columnar and tabular data formats, such as those used by relational databases, but it is not tied to any one particular serialization format, and can be easily converted to many different formats for fast inspection in your tool of choice.
This project comes with C# code which acts as the official specification, but the schema is platform independent and language agnostic.
We welcome code contributions in any language.
The contents of the .bos archive are the following parquet files:
- Non Geometry Data
- Entities.parquet
- Descriptors.parquet
- Documents.parquet
- Points.parquet
- Strings.parquet
- DoubleParameters.parquet
- IntegerParameter.parquet
- PointParameters.parquet
- StringParameters.parquet
- Geometry Data
- Elements.parquet
- Transforms.parquet
- VertexBuffer.parquet
- IndexBuffer.parquet
- Materials.parquet
- Meshes.parquet
The bulk of the source code for this project, is actively maintained in a separate repository.
See source-code.md to find where the code is, learn how it is structured, and how to contribute to it.
Supporting and contributing to this project is as simple as providing feedback.
Some of the people who have contributed are (in alphabetical order):
- Ahmad Saleem Z - AnkerDB
- Christopher Diggins - Ara 3D
- Daryl Irvine - DG Jones and Partners
- Karim Daw - Gensler
- Pablo Derendinger - e-verse
- Tom van Diggelen - BIMcollab
- Tomo Sugeta - Cundall
- Valentin Noves - e-verse
- Yskert Schindel - Vyssuals
We have an active Discord server and discussion forum that you can join if you are interested. Just send us an email request
If you are interesting in professional help in leveraging the format and learning what you can do with it, reach out to us at info@ara3d.com.