Skip to content

Extend the Current Masterdata

This guide describes the recommended contribution workflow for extending BAM masterdata definitions.

Contribution pipeline

1. Open an issue first

Start by opening an issue in GitHub:

In the issue, describe:

  • which entity types/properties/vocabularies you want to add or change,
  • why the change is needed,
  • expected impact on existing data/parsers,
  • and whether you will contribute Python modules or an Excel file.

2. Clone or fork the repository

Use either direct clone (if you have write access) or fork + clone:

git clone https://github.com/BAMresearch/bam-masterdata.git
cd bam-masterdata
git checkout -b <issue-number>-<short-topic>

3. Choose your implementation path

Path A: Edit the core BAM datamodel files

Modify the existing files in:

  • bam_masterdata/datamodel/object_types.py: for new Object Types
  • bam_masterdata/datamodel/vocabulary_types.py: for new Vocabularies

This is the direct path if you are proposing changes to the central BAM model.

Path B: Define a separate application datamodel folder

If you maintain an application-specific model, create a dedicated folder with your own modules (same structure and naming):

.
└── bam_masterdata/
    └── datamodel/
        ├── object_types.py
        ├── vocabulary_types.py
        └── <your-new-application-folder>/
            ├── object_types.py
            └── vocabulary_types.py

The CLI can process a directory of Python modules, so this folder can be validated and compared against the base definitions in the BAM Masterdata.

4. Validate before opening a PR

Run project tests:

python -m pytest -sv tests

If you created/updated a separate datamodel folder, run the checker in individual mode:

bam_masterdata checker \
  --file-path ./bam_masterdata/datamodel/<your-new-application-folder>/ \
  --mode individual \
  --datamodel-path ./bam_masterdata/datamodel

5. Submit a pull request for review

Create a PR linked to the issue and include:

  • a short change summary,
  • rationale for each new/changed type or property,
  • compatibility notes (especially renamed/removed fields),
  • and checker/test results.

Alternative: Submit only an Excel file

If you prefer not to edit Python modules directly, you can submit a masterdata.xlsx through the GitHub issue.

Maintainers (or you) can generate Python modules from that Excel file using:

bam_masterdata fill_masterdata \
  --excel-file /<path-to-your-excel-masterdata-file>/masterdata.xlsx \
  --export-dir ./bam_masterdata/datamodel/<your-new-application-folder>/ \
  --row-cell-info=True

This command converts Excel masterdata into Python *_types.py modules that can then be validated and reviewed in a PR.

Note

You can also export an existing model to Excel first (for templating/comparison) with:

bam_masterdata export_to_excel --export-dir ./artifacts

Planned transition in 2026

The current masterdata is expected to transition to a new BFO- and IAO-compliant version in Q3-Q4 2026 (approximately July 1, 2026 to December 31, 2026). If possible, when proposing changes now, include short mapping notes (e.g., inline comments) to ease migration to the upcoming ontology-aligned model.