Skip to content
Projects

ara3d/bim-open-schema

View on GitHub

ara3d/bim-open-schema has 55 GitHub stars and 10 forks. GitHot measured 0 stars in 24 hours. Last checked 2026-11-15 05:53 UTC. Last push 2026-10-11.

How these counts are measured

Measured star growth

in 24h
0
in 7 days
Collecting history
in 15 days
Collecting history
in 1 month
Collecting history

Net star changes over overlapping periods, not daily totals. Missing measurements are left blank. Stars measure attention, not software quality.

About

Representing BIM Data as Parquet

Data

README.md

Original
BIM Open Schema

BIM Open Schema

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.

👉 Get the Revit 2025 exporter here!

The official release comes with an exporter for Revit 2025 and Ara 3D Studio for viewing and exploring the contents of BIM Open Schema files.

Repository Contents

This repository provides:

  1. Official specification - the C# types that define the tables, columns, enums, and manifest. The project has no dependencies. See source-code.md.
  2. Sample test files - generated from the Autodesk sample files.
  3. BIM Open Schema Exporter - an exporter for Revit 2025 bundled with Ara 3D Studio.

The C# reference implementation (reading, writing, querying, converting from IFC and Revit) lives in BIM Open Toolkit.

https://github.com/user-attachments/assets/a02ae405-e3a1-484f-8f09-8601dbe5db72

Additional BIM Open Schema Tools and Resources

BIM Open Schema comes with an ecosystem of open-source tools in other repositories for

Absent Values

An index of -1 in any column that points into another table (a string, number, entity, document, descriptor, or point index) means the value is absent: the source had none. A reader shows it as missing (NULL in SQL, null in code), never as an empty string or 0. An entity's LocalId is -1 when it has no local id, and a parameter with no value has no row. An empty string from the source is a real value and is stored in the string table. Files written before this rule store an absent GlobalId or Name as the index of ""; readers treat that as absent too.

About Parquet

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.

The .bos File Extension

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.

Example Use Cases for Parquet Data

  1. analytics - pandas, Power BI
  2. databases - DuckDB, BIM Lakehouse, BIM Open Schema Reader
  3. serialization - Parquet
  4. interactive visualization - Ara 3D Studio, Ara 3D WebGL.

What is a Schema?

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.

Platform and Language Agnostic

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.

Parquet Files contained in the BOS Archive

The contents of the .bos archive are the following parquet files:

  • Non Geometry Data
    • Entities.parquet
    • Descriptors.parquet
    • Documents.parquet
    • Points.parquet
    • Strings.parquet
    • Numbers.parquet
    • Parameters.parquet
  • Geometry Data
    • Elements.parquet
    • Transforms.parquet
    • VertexBuffer.parquet
    • IndexBuffer.parquet
    • Materials.parquet
    • Meshes.parquet

Show me the Code

The specification itself is the C# project under src. See source-code.md for what each file defines, how to build it, and how to change a table.

The C# reference implementation, with its tests, lives in BIM Open Toolkit.

Contributors and Supporters

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

Project Ideas

If you have ideas for projects that we, or others could do please share them! We have some additional code on the side that we can provide to help accelerate your work (e.g., if you want to start a project in C++).

  • Blender to BIM Open Schema
  • Rhino to BIM Open Schema

Commercial Support and Services

If you are interesting in professional help in leveraging the format and learning what you can do with it, reach out to us at [email protected].