The System Package Data Exchange® (SPDX®) is a standard format for communicating information about components associated with systems.
Components can include software, AI/ML models and dataset. More component types that make up modern systems are planned to be included in subsequent releases. See scope.
The prior version of this format was focused on Software, is an ISO/IEC standard (ISO/IEC 5962:2021) and has wide industry adoption as a standardized Software Bill of Materials (SBOM). All use cases supported by the prior version are supported here as well.
This repository holds the model for the information captured in SPDX version 3 standard.
The editable files inside model/
directory are written in a constrained
subset of Markdown, with specific headings for specific types of information,
and are stored in the main
branch.
The editable files are automatically processed by spec-parser and the following are generated:
- Input for MkDocs, which then generates the specification
- JSON-LD context file: spdx-context.jsonld
- Model SHACL and OWL files:
People who wish to read the current version of the information should be viewing the generated files, while anyone wanting to edit should be working on the editable files.
For the specification content other than the model, they are in the spdx-spec repository.
The SPDX model is described using profiles related to the software application. The profiles are organized as sub-directories under the ‘model’ directory. The model diagram is available in model.drawio file.
Note:
- The ‘Licensing’ profile has three categories (sub-directories): ‘Licensing’, ‘SimpleLicensing’, and ‘ExpandedLicensing’.
- The ‘extension’ namespace (sub-directory) provides for adding information about the software application which is not otherwise covered under the SPDX model.
The AI profile describes an AI component's capabilities for a specific system (domain, model type, industry standards). It details its usage within the application, limitations, training methods, data handling, explainability, and energy consumption.
The Build profile contains information about the build done for the software application. Fields include build type URI (of toolchain, platform, or infrastructure), locally unique build identifier assigned by the developer, entry point of creation of build, URI of the build configuration source if any, digest of build configuration source if any, build parameters, start time of the build, end time of the build, and the system’s environment variables at the time of the build.
The Core profile describes the foundational classes and properties that are used by all profiles of the SPDX model.
The Dataset profile describes a dataset's core aspects (type, size, collection method), access method, preparation (preprocessing, noise handling), intended use (e.g. hardware calibration, machine learning), and related considerations (data quality and privacy).
The Licensing profile describes the aspects of licensing for the software application under three categories (sub-directories) - Licensing, SimpleLicensing, and ExpandedLicensing.
- Licensing describes information about declared licenses and concluded (detected) licenses.
- SimpleLicensing describes information about text-formatted licenses.
- ExpandedLicensing describes information about parseable and machine-readable licenses.
The SPDX Lite profile defines a subset of the SPDX specification for use cases and workflows in some industries.
The Security profile contains information about vulnerabilities and their assessments based on CVSS (versions 2, 3, and 4), EPSS, Exploit Catalog, SSVC, and VEX (affected, not affected, under investigation, and fixed categories).
The Software profile contains information about files, packages, SBOMs, snippets, and artifacts of the software application.
See CHANGELOG.md for changes between versions.
For information about how to contribute to a specific profile, please see Contributing.md.
Feel free to join us and contribute!
The discussions are happening on the spdx-tech mailing list and during our regular meetings.
All the details are in: https://spdx.dev/participate/tech/