A community repository of non-normative SysML v2 / KerML extension libraries. They are maintained here and consumed by OpenSysML and any other SysML v2 tool. They are not part of the OMG standard library; some of them are proposed for standardization (DiagramLayout, IdentityMetadata and MigrationMetadata say so in their doc text).
A model that uses one of these libraries is valid SysML v2 that depends on a
non-normative OpenSysML library; other tools resolve it when given the
libraries/ folder (OpenSysML bundles the same files as its
OpenSysML Libraries folder).
| Library | File | Description | Portability |
|---|---|---|---|
| AnalysisRecords | AnalysisRecords.sysml | Metadata a run, sweep or sample records itself with: when it ran, the tool and command, verdicts and evaluations. | Executing engine |
| DiagramLayout | DiagramLayout.sysml | Diagram geometry: element placement, edge waypoints and the drawing extent. | Any SysML v2 tool |
| DocumentQueries | DocumentQueries.sysml | Calc definitions (OwnedElements, Descendants, Ancestors, …) that document views evaluate to select elements. | Executing engine |
| IdentityMetadata | IdentityMetadata.sysml | Binds notation to repository element identity. | Any SysML v2 tool |
| MOSA | MOSA.sysml | Modular Open Systems Approach (10 U.S.C. § 4401) vocabulary. | Any SysML v2 tool |
| MigrationMetadata | MigrationMetadata.sysml | What a migration from another modelling language had to make up because the source left it unstated. | Any SysML v2 tool |
| OOSEM | OOSEM.sysml | Object-Oriented Systems Engineering Method artefacts, viewpoints and product views. | Any SysML v2 tool |
| OpenSysMLMathFunctions | OpenSysMLMathFunctions.kerml | exp, ln, log, atan2, ceiling and the Integer quotient the Kernel Function Library omits. | Executing engine |
| RandomFunctions | RandomFunctions.kerml | Seeded random draws: uniform, uniformInteger, triangular, normal. | Executing engine |
| Simulation | Simulation.sysml | How a behavior is meant to be run: run count, draw resolution, clock, Monte Carlo. | Executing engine |
| StateMachines | StateMachines.sysml | Pseudostates (choice, junction, shallow/deep history) the grammar has no production for. | Executing engine |
| StateSpaceIntegration | StateSpaceIntegration.sysml | Fixed-step (Euler/RK4) running of StateSpaceRepresentation dynamics. | Executing engine |
| Stochastic | Stochastic.sysml | Probability metadata for branches; a tool unaware of it runs the branches as an unweighted choice. | Executing engine |
| SysMLValidation | SysMLValidation.sysml | KerML/SysML abstract-syntax validation constraints over the reflective metamodel. | Executing engine |
Portability "Executing engine" means an executing engine gives the library its behavior; the libraries still parse and resolve in any tool — only their behavior needs an engine.
libraries/ is flat: one library package per file, and the file stem equals
the package name. SysML resolves libraries by package name, not path, so any
tool can load the directory as-is. The folder these files used to live in,
OpenSysML Libraries/, was OpenSysML's library-tier folder; the history here
was imported from Open-MBEE/OpenSysML, and old #N references in commit
messages point at that repository.
Every tool also needs the OMG standard library (sysml.library).
- OMG pilot batch validator —
validate-sysml-batch --library <sysml.library> libraries <your model dir>(validate-sysml --library DIR [--root DIR] FILE|DIR...). The validator in this repository (./scripts/download-pilot-sysml-validator.sh) builds the same program. - Pilot Eclipse — import this repository into the workspace as a project
alongside
sysml.library, so the editor indexes it the same way. - SysON — import the
.sysmlfiles into the project, or into a library project it references if your SysON version supports that; see SysON's documentation. SysON does not execute behavior, so the portable libraries are the ones that matter there. - sysml-toolkit —
sysmlv2 check --lib <sysml.library> libraries/*.sysml libraries/*.kerml model.sysml, or pass the release.kpar(the CLI expands.kparinputs). - OpenSysML — bundled: it vendors a pinned copy at
internal/workspace/libs/stdlib/OpenSysML Libraries/, pinned byscripts/extension-libraries-pin.shand refreshed byscripts/sync-extension-libraries.sh. Edits land here first.
Releases are semver tags vX.Y.Z on main:
- MAJOR — removing or renaming a library or a public element, or changing its meaning.
- MINOR — adding a library or element.
- PATCH — documentation and doc-comment changes and fixes that keep names and meaning.
Each release attaches a .kpar project archive. Consumers pin a tag or
commit.
engine-contract.json lists the qualified names in libraries/ that
OpenSysML's engine binds to — the functions its runtime registry implements,
the metadata and features it reads, the DocumentQueries elements its document
and query plans compile, and the names the SysML v1 migrator writes into user
models. OpenSysML binds by qualified name, so those names are an API: removing,
renaming or changing an entry is a breaking change and needs contract
bumped, a coordinated Open-MBEE/OpenSysML pull request that re-pins its
vendored copy, and a MAJOR release. Additions are MINOR.
./scripts/check-engine-contract.sh validates the manifest and resolves every
entry against libraries/ on the pinned pilot; in pull requests it also diffs
the manifest against the base and fails on unannounced breaking changes.
./scripts/validate-libraries.sh runs the pinned OMG pilot batch validator
(scripts/pilot-pin.sh) over libraries/ and requires zero errors and zero
warnings. Four warnings are temporarily allow-listed in
validation/allowed-warnings.txt — the four files that still declare
standard library package; an upstream change to library package is being
ported and those entries will be deleted. The allow-list only shrinks.
Apache-2.0. Every library was authored in OpenSysML; no OMG material is redistributed here.