lcabim is the Blender/Bonsai reference prototype developed in the
LCA to BIM research project. It demonstrates how Linked Data can connect
life-cycle assessment (LCA) information with Building Information Modeling
(BIM) workflows without tying the approach to a proprietary authoring tool or
LCA backend. This repository implements the software prototype.
The prototype:
- searches material- and construction-related EPD data;
- assigns selected environmental data to IFC elements and assignment groups;
- checks whether model quantities and mappings are ready for calculation;
- calculates environmental impacts and stores results in IFC property sets; and
- visualizes influential elements in the BIM model.
The project’s LCABIM ontology provides the common semantic layer for connecting heterogeneous BIM and LCA concepts. It is the basis of the RDF query datastore used by this prototype. Developers should consult the ontology documentation when changing graph structures, identifiers, mappings, or SPARQL queries.
The extension uses a local JSON API backed by Apache Jena Fuseki. The extension package does not distribute the private RDF datastore or IFC models.
The prototype has been tested with this exact configuration. Compatibility with other versions has not been verified.
- Windows 10 or Windows 11 x64
- Blender 4.2.1 LTS
- Bonsai 0.8.1-alpha240925 with IfcOpenShell 0.8.1-alpha240925
- pandas 2.2.3 in Blender
- Apache Jena Fuseki 5.3.0
- OpenJDK 21.0.9
- Python 3.11.15 in a Conda-managed development environment
Create the development environment:
conda env create -f environment.yml
conda activate lcabim-devPrivate RDF data and user IFC models must not be committed. The approved test model documented below is the only public IFC exception.
Place the generated lean query store at:
.other/generated/query_store_combined.ttl
The complete canonical RDF source is needed only when regenerating the lean store. If it is available locally, place it at:
.other/lcabim_knowledge_graph.ttl
Regenerate the lean store with:
python tools/build_query_datastore.py `
--source ".other/lcabim_knowledge_graph.ttl" `
--output-dir ".other/generated"Start Fuseki with the private lean datastore:
$repoRoot = (Resolve-Path '.').Path
$queryStore = Join-Path $repoRoot '.other\generated\query_store_combined.ttl'
Set-Location $env:FUSEKI_HOME
.\fuseki-server.bat --localhost --port 3030 `
--file="$queryStore" `
/EPD_RDFSet FUSEKI_HOME locally to your Fuseki installation directory. Machine-specific
paths belong in ignored local files, not in the repository.
Start the JSON API from the repository root:
conda run -n lcabim-dev python -m uvicorn epd_api.app:app `
--host 127.0.0.1 --port 8000Smoke-test both services:
Invoke-RestMethod `
-Uri 'http://localhost:3030/EPD_RDF/sparql' `
-Method Post `
-Headers @{Accept='application/sparql-results+json'} `
-ContentType 'application/sparql-query' `
-Body 'ASK { ?s ?p ?o }'
Invoke-RestMethod -Uri 'http://localhost:8000/api/v1/health'Build and validate the Blender extension:
.\tools\build_extension.ps1Install the resulting ZIP from Blender using
Edit > Preferences > Get Extensions > Install from Disk. Enable
LCA BIM for Bonsai, open an IFC project in Bonsai, and select the
GEOMETRY tab. The LCA BIM panel appears in the Scene properties.
- Start Fuseki and the JSON API.
- Open an IFC model in Bonsai. The repository includes
examples/lcabim_test_model.ifcfor prototype testing. - Use
Scan Model Sourcesand review the available DIN and quantity sources. - Select EPD filters and run
Find EPDs. - Review EPD, BKI, and IFC mapping results.
- Assign an EPD to an IFC element or an assignment group.
- Run the LCA readiness check and resolve missing mappings or quantities.
- Calculate environmental impacts.
- Store results in the
lcabim_*IFC property sets. - Use hotspot visualization and export an enriched IFC copy when required.
IFC files created or exported during testing must remain outside Git. The included test model is the only approved public IFC fixture.
Run the normal test suite:
conda run -n lcabim-dev python -m pytest -q