An Application Domain Extension (ADE) for CityGML 2.0 extending Energy ADE 3.0 (beta 8) that introduces Life Cycle Assessment (LCA) specific elements and attributes to facilitate the inclusion of environmental data within city models according to EN 15978.
The CityGML LCA ADE 1.0 extends CityGML models with environmental parameters. Rather than embedding impact matrices inside spatial models, the LCA ADE provides references pointing directly to external EPD databases (such as Sweden's Boverket Klimatdatabas or Germany's Ökobaudat), sets reference service lives for component replacement cycles, and establishes a uniform reference study period for urban scenarios.
Developed at Chalmers University of Technology (Department of Architecture and Civil Engineering):
- Alexander Hollberg
- Sanjay Somanath
- Haitham Abu Ghaida
- Jorge Gil
| Setting | Value |
|---|---|
| Target Namespace URI | http://sb.chalmers.se/ade/lca/1.0 |
| Preferred Prefix | lca |
| Host Standard | CityGML Core 2.0 |
| Extension Dependency | Energy ADE 3.0 (beta 8) |
| Version | 1.0 beta |
| Release Date | 2026-08 |
- Description: Closed enumeration of supported Environmental Product Declaration (EPD) databases.
- Supported Values:
boverket: Boverket Klimatdatabas (Sweden)oekobaudat: Ökobaudat EPD database (Germany / EU)
- Description: Reference to an EPD record in an external database.
- Content: Database-specific record ID:
- Boverket: 10-digit integer ResourceId (e.g.,
"6000000029") - Ökobaudat: UUID (e.g.,
"fe91b985-60da-...")
- Boverket: 10-digit integer ResourceId (e.g.,
- Attribute:
source(optional) to identify the database using theEPDSourceValuecodelist.
- Description: Top-level LCA scenario city object.
-
Element:
<lca:LCAScenario> -
Properties:
-
referenceStudyPeriod: System boundary horizon in years (uom="a"), applied uniformly to every building in the city model for replacement cycle calculations:$$\text{replacements} = \left\lceil \frac{\text{referenceStudyPeriod}}{\text{referenceServiceLife}} \right\rceil - 1$$
-
- Description: EPD database record identifier for this object used to resolve environmental impact factors.
- Coverage:
core:_CityObjectsubclasses via formal hook:nrg3:AbstractDevicesubclasses (12 concrete types)nrg3:AbstractMaterialsubclasses (e.g.SolidMaterial,Gas)nrg3:AbstractLayeredConstructionsubclassesnrg3:AbstractResourcesubclassesbldg:BuildingInstallationbldg:IntBuildingInstallation
- Element:
<lca:environmentalId>
- Description: Reference Service Life (RSL) in years (
uom="a") driving module B4 replacement cycle calculations in EN 15978 LCA. - Coverage: Same as
environmentalId; omitted for operational resource flows (AbstractResourcesubclasses) which have no service life concept. - Element:
<lca:referenceServiceLife>
| Category | Target Class | Added Parameter(s) | Attachment Mechanism | EN 15978 Scope |
|---|---|---|---|---|
| General | LCAScenario (new) |
referenceStudyPeriod |
Top-Level Object | Assessment Horizon (B/C) |
| Embodied | AbstractDevice (12 types) |
environmentalId, referenceServiceLife |
Formal Hook [F] |
A1–A5, B4, C1–C4, D |
| Embodied | BuildingInstallation |
environmentalId, referenceServiceLife |
Formal Hook [F] |
A1–A5, B4, C1–C4, D |
| Embodied | IntBuildingInstallation |
environmentalId, referenceServiceLife |
Formal Hook [F] |
A1–A5, B4, C1–C4, D |
| Embodied | AbstractLayeredConstruction subclasses |
environmentalId, referenceServiceLife |
Formal Hook [F] |
A1–A5, B4, C1–C4, D |
| Embodied | AbstractMaterial subclasses (e.g. SolidMaterial, Gas) |
environmentalId, referenceServiceLife |
Formal Hook [F] |
A1–A5, B4, C1–C4, D |
| Operational | AbstractResource subclasses |
environmentalId |
Formal Hook [F] |
B6, B7 |
For subclasses of core:AbstractCityObjectType (e.g., nrg3:AbstractDevice, bldg:BuildingInstallation, bldg:IntBuildingInstallation), LCA properties substitute the native core:_GenericApplicationPropertyOfCityObject placeholder.
Element Ordering Requirement (
xs:sequence): Becausecore:AbstractCityObjectTypeusesxs:sequence, the_GenericApplicationPropertyOfCityObjectslot falls after core-level properties (creationDate,terminationDate, ...) and before any Energy ADE-specific child elements.Correct element order inside an
nrg3:AbstractDeviceelement:
gml:description,gml:name, ...core:creationDate, ...<lca:environmentalId>$\leftarrow$ substitution group slot<lca:referenceServiceLife>$\leftarrow$ substitution group slotnrg3:model,nrg3:deviceOperation, ...
├── docs/
│ └── UML/
│ └── CityGML_LCA_ADE_v1.pdf # Enterprise Architect UML diagrams
├── models/ # Local working directory (gitignored)
│ ├── <raw-energy-ade-model>.gml # Downloaded input model from Energy ADE sources
│ └── <lca-model-output>.gml # Output generated by inject_lca.py
├── scripts/
│ ├── databases/
│ │ ├── boverket.py # Boverket API / JSON resolution driver
│ │ └── oekobaudat.py # Ökobaudat API / JSON resolution driver
│ ├── calculate_lca.py # EN 15978 LCA calculation engine
│ └── inject_lca.py # Sequence-aware GML property injector
├── xsd/
│ ├── codelists/
│ │ └── EPDSourceValue.xml # GML CodeList dictionary (boverket, oekobaudat)
│ ├── LCA_ADE_1.0.xsd # XML Schema Definition
│ └── ShapeChangeConfiguration.xml # ShapeChange target configuration
└── README.md
To inspect and explore CityGML/Energy ADE/LCA ADE models interactively, use the CityGML Browser app:
Model files are intentionally excluded from version control. Download a raw Energy ADE model locally, place it in models/, and use the workflow below.
To use this ADE in your CityGML project:
- Download a Raw Energy ADE Model: Get a source model from a public Energy ADE dataset/repository and store it locally, for example:
models/raw-energy-ade-model.gml
- Inject LCA Properties:
Use the sequence-aware script to inject
LCAScenarioand LCA properties into a new output file:
python scripts/inject_lca.py models/raw-energy-ade-model.gml models/model-with-lca.gml
- Calculate Lifecycle Impact: Run the calculation engine to resolve external EPD identifiers against database records and compute EN 15978 impacts:
PYTHONPATH=. python scripts/calculate_lca.py models/model-with-lca.gml
- Validate Schema Compliance:
Ensure
LCA_ADE_1.0.xsdand dependencies (CityGML Core and Energy ADE) are included, and validate usingcitygml-tools:
citygml-tools validate --schema xsd/LCA_ADE_1.0.xsd models/model-with-lca.gml
