Versioning & releases
How versions are numbered, where release notes live, and how a release is cut.
Table of contents
- Versioning scheme
- Release notes
- How a release is cut
- Updating the plugin registry (Check for plugins)
- Finding a specific version
Versioning scheme
Protégé MCP aims to follow Semantic Versioning: MAJOR.MINOR.PATCH.
| Bump | When | Example |
|---|---|---|
| PATCH | Bug fixes and behaviour-preserving improvements. | 0.3.2 → 0.3.3 |
| MINOR | New, backward-compatible capability (typically new tools or a new subsystem). | 0.3.0 added the Ontology Assistant; 0.3.2 added SPARQL. |
| MAJOR | Backward-incompatible changes. | — |
The project is pre-1.0, so a MINOR release can carry sizeable new features (e.g. the whole Ontology Assistant landed in
0.3.0). The tool count is called out in each release’s notes.
The Maven project version in pom.xml is the
single source of truth for the current version, and the release tag must match it (see below).
Release notes
All notable changes are recorded in
CHANGELOG.md, following the
Keep a Changelog format. The same content is mirrored on this
site’s Changelog page.
Each release’s ## [x.y.z] section is published verbatim as the body of its
GitHub release — so the changelog, the GitHub release
notes, and this site all say the same thing.
How a release is cut
Releases are automated by the
Release workflow.
Pushing a tag of the form vX.Y.Z triggers it:
- Checkout the tag.
- Verify the tag matches the Maven version — the tag must equal
v+pom.xml’s<version>, or the workflow fails. This guarantees the tag, the jar name, and the code all agree. - Build and test with
mvn -B clean packageon JDK 17. - Extract the release notes — the
## [X.Y.Z]section ofCHANGELOG.mdbecomes the release body (falling back to auto-generated notes if that section is missing). - Publish the GitHub release titled
protege-mcp vX.Y.Z, attachingprotege-mcp-X.Y.Z.jar.
You can also run it manually from the Actions tab (workflow_dispatch) with a tag input.
Updating the plugin registry (Check for plugins)
For Protégé’s File ▸ Check for plugins to offer an update, bump
update.properties:
versionmust be a valid OSGi version (major.minor.micro[.qualifier]) and strictly greater than the installed bundle version, or Protégé will not offer it.downloadmust point at the new release’s jar asset.
OSGi orders an empty qualifier before a non-empty one, so
0.1.0 < 0.1.0.SNAPSHOT. To update over an installed dev/SNAPSHOT build, bump the micro/minor rather than relying on a qualifier.