ISO 5962:2026(E)
ISO/TC ###/SC ##/WG #
Date: YYYY-MM-DD
Information Technology — SPDX® Specification V3.0
DIS stage
Attention Ballot Reviewers: This is a PAS submission. It does not completely adhere to the format and organization requirements of the ISO/IEC Directives Part 2, but that is no longer required. See “ISO/IEC Directives, Part 1, Consolidated JTC 1 Supplement 2024 — Procedures specific to JTC 1” F.3.4.2 and F.4.7.
© ISO 2026
All rights reserved. Unless otherwise specified, or required in the context of its implementation, no part of this publication may be reproduced or utilized otherwise in any form or by any means, electronic or mechanical, including photocopying, or posting on the internet or an intranet, without prior written permission. Permission can be requested from either ISO at the address below or ISO’s member body in the country of the requester.
ISO copyright office
CP 401 • Ch. de Blandonnet 8
CH-1214 Vernier, Geneva
Phone: +41 22 749 01 11
Email: copyright@iso.org
Website: www.iso.org
Published in Switzerland
Contents
5.1 Alternate notation for some conformance requirements 4
5.2 Introduction to profiles 5
5.3 Core profile compliance point 5
5.4 Software profile compliance point 5
5.5 Security profile compliance point 6
5.6 Licensing profile compliance point 6
5.7 Dataset profile compliance point 6
5.8 AI profile compliance point 6
5.9 Build profile compliance point 7
5.10 Lite profile compliance point 7
5.11 Extension profile compliance point 7
6.4 Serialization information 9
6.5 Serialization in SPDX 3 JSON 10
6.5.1 A strict subset of JSON-LD 10
7.2.16 LifecycleScopedRelationship 24
7.2.19 PackageVerificationCode 27
7.2.21 PositiveIntegerRange 29
7.3.21 externalIdentifierType 41
7.3.38 packageVerificationCodeExcludedFile 48
7.4.2 ExternalIdentifierType 56
7.4.7 ProfileIdentifierType 60
7.4.8 RelationshipCompleteness 61
8.3.5 contentIdentifierType 78
8.3.6 contentIdentifierValue 78
8.4.1 ContentIdentifierType 83
9.2.1 CvssV2VulnAssessmentRelationship 86
9.2.2 CvssV3VulnAssessmentRelationship 88
9.2.3 CvssV4VulnAssessmentRelationship 90
9.2.4 EpssVulnAssessmentRelationship 92
9.2.5 ExploitCatalogVulnAssessmentRelationship 94
9.2.6 SsvcVulnAssessmentRelationship 96
9.2.7 VexAffectedVulnAssessmentRelationship 97
9.2.8 VexFixedVulnAssessmentRelationship 99
9.2.9 VexNotAffectedVulnAssessmentRelationship 100
9.2.10 VexUnderInvestigationVulnAssessmentRelationship 102
9.2.11 VexVulnAssessmentRelationship 104
9.2.12 VulnAssessmentRelationship 105
9.4.4 VexJustificationType 119
11.1.1 SimpleLicensing profile 121
11.2.3 SimpleLicensingText 123
12.1.1 ExpandedLicensing profile 126
12.2.1 ConjunctiveLicenseSet 127
12.2.3 CustomLicenseAddition 129
12.2.4 DisjunctiveLicenseSet 130
12.2.6 IndividualLicensingInfo 131
12.2.10 ListedLicenseException 136
12.2.12 WithAdditionOperator 138
12.3.3 isDeprecatedAdditionId 140
12.3.4 isDeprecatedLicenseId 140
12.3.12 standardAdditionTemplate 144
12.3.13 standardLicenseHeader 145
12.3.14 standardLicenseTemplate 145
12.3.16 subjectExtendableLicense 146
13.3.1 anonymizationMethodUsed 150
13.3.2 confidentialityLevel 150
13.3.3 dataCollectionProcess 151
13.3.5 datasetAvailability 152
13.3.9 datasetUpdateMechanism 153
13.3.10 hasSensitivePersonalInformation 154
13.4.1 ConfidentialityLevelType 155
13.4.2 DatasetAvailabilityType 156
14.1.2 Profile conformance 157
14.2.3 EnergyConsumptionDescription 161
14.3.6 finetuningEnergyConsumption 164
14.3.8 inferenceEnergyConsumption 164
14.3.9 informationAboutApplication 165
14.3.10 informationAboutTraining 165
14.3.13 metricDecisionThreshold 167
14.3.14 modelDataPreprocessing 167
14.3.15 modelExplainability 168
14.3.16 safetyRiskAssessment 168
14.3.17 standardCompliance 169
14.3.18 trainingEnergyConsumption 169
14.3.20 useSensitivePersonalInformation 170
14.4.2 SafetyRiskAssessmentType 171
15.3.6 configSourceEntrypoint 176
17.2.1 CdxPropertiesExtension 179
Annex A (informative) RDF model definition and diagrams 183
Annex B (normative) SPDX license expressions 191
B.3 Simple license expressions 192
B.4 Composite license expressions 192
B.4.2 Disjunctive “OR” operator 192
B.4.3 Conjunctive “AND” operator 193
B.4.4 Additive “WITH” operator 193
B.4.5 Order of precedence and parentheses 193
Annex C (normative) SPDX License List matching guidelines and templates 195
C.1 SPDX License List matching guidelines 195
C.2 How these guidelines are applied 195
C.2.2 Guideline: official license headers 195
C.3.2 Guideline: verbatim text 195
C.3.3 Guideline: no additional text 195
C.3.4 Guideline: replaceable text 195
C.3.5 Guideline: omittable text 196
C.6.2 Guideline: punctuation 197
C.6.3 Guideline: hyphens, dashes 197
C.7 Code comment indicators or separators 197
C.7.3 Guideline: repeated characters 197
C.9 Varietal word spelling 198
C.12 License name or title 198
C.13 Extraneous text at the end of a license 199
C.15.2 License List XML format 199
C.15.3 Legacy Text Template format 199
Annex D (normative) SPDX Lite 201
D.1 Explanation of the Lite profile 201
D.2 Mandatory and recommended properties 201
D.2.5 /SimpleLicensing/LicenseExpression 203
D.2.6 /SimpleLicensing/SimpleLicensingText 203
D.2.7 /Core/Agent (createdBy, suppliedBy, originatedBy) 203
D.2.9 /Core/ExternalIdentifier 203
Annex E (normative) Package URL specification v1 205
E.4 Rules for each component 206
E.4.6 Rules for qualifiers 207
E.6 Known qualifiers key/value pairs 208
E.7 How to produce and consume purl data 208
E.7.1 How to build purl string from its components 208
E.7.2 How to parse a purl string to its components 210
ISO (the International Organization for Standardization) and IEC (the International Electrotechnical Commission) form the specialized system for worldwide standardization. National bodies that are members of ISO or IEC participate in the development of International Standards through technical committees established by the respective organization to deal with particular fields of technical activity. ISO and IEC technical committees collaborate in fields of mutual interest. Other international organizations, governmental and non-governmental, in liaison with ISO and IEC, also take part in the work.
The procedures used to develop this document and those intended for its further maintenance are described in the ISO/IEC Directives, Part 1. In particular, the different approval criteria needed for the different types of document should be noted (see www.iso.org/directives or www.iec.ch/members_experts/refdocs).
Attention is drawn to the possibility that some of the elements of this document may be the subject of patent rights. ISO and IEC shall not be held responsible for identifying any or all such patent rights. Details of any patent rights identified during the development of the document will be in the Introduction and/or on the ISO list of patent declarations received (see www.iso.org/patents) or the IEC list of patent declarations received (see patents.iec.ch).
Any trade name used in this document is information given for the convenience of users and does not constitute an endorsement.
For an explanation of the voluntary nature of standards, the meaning of ISO specific terms and expressions related to conformity assessment, as well as information about ISO’s adherence to the World Trade Organization (WTO) principles in the Technical Barriers to Trade (TBT), see www.iso.org/iso/foreword.html. In the IEC, see www.iec.ch/understanding-standards.
This document was prepared by The Linux Foundation and its Contributors under the SPDX Working Group (as SPDX® Specification v3.0) and drafted in accordance with its editorial rules. Its preparation and publication has been made in coordination with related efforts with the Object Management Group (OMG). It was adopted, under the JTC 1 PAS (“Publicly Available Specification”) procedure, by Joint Technical Committee ISO/IEC JTC 1, Information technology.
Any feedback or questions on this document should be directed to the user’s national standards body. A complete listing of these bodies can be found at www.iso.org/members.html and www.iec.ch/national-committees.
This specification replaces ISO/IEC 5962:2021, which described SPDX version 2.2.1.
Companies and organizations (collectively “Organizations”) are widely using and reusing open source and other software packages. Accurate identification of software is key for many supply chain processes. Vulnerability remediation starts with knowing the details of which version of software is in use on a system. Compliance with the associated licenses requires a set of analysis activities and due diligence that each Organization performs independently, which may include a manual and/or automated scan of software and identification of associated licenses followed by manual verification.
Software development teams across the globe use the same open source packages, but little infrastructure exists to facilitate collaboration on the analysis or share the results of these analysis activities. As a result, many groups are performing the same work leading to duplicated efforts and redundant information. With this document, the SPDX workgroup, a combined effort of the Linux Foundation SPDX group and the OMG/CISQ Tool-to-Tool effort, has created a data exchange format so that information about software packages and related content may be collected and shared in a common format with the goal of saving time and improving data accuracy.
The merged activities of the two groups slid together the beginning weeks of 2021 with activities generally moving forward but occasionally stalling while the larger group worked through issues that one or the other hadn’t discussed or had a different opinion about. Eventually, after releasing SPDX 2.3 in August of 2022 with updates that brought some of the concepts and capabilities slated for SPDX 3.0 to the community in preparation of the shift that SPDX 3.0 represents, the first release candidate of SPDX 3.0 was released in May of 2023. Within the SPDX community, which is both a standards creation organization as well as a community of open source developers, a release candidate offers an opportunity for implementors of SPDX, both new and old, to review the work and determine whether there were parts that were unclear or that would be extremely burdensome to implement.
Based on the comments and change requests from the initial candidate release several areas of the model were revised and reworked, resulting in a release candidate 2 of SPDX 3.0 in February of 2024. That release candidate gave tool creators and those who maintain the support libraries for working with SPDX time to start revising their projects in advance of the final version of the SPDX 3.0 specification. For those not following the inner workings, debates, and discussion of the combined 3T-SBOM and SPDX 3.0 working group for the last 3 years there has been a dramatic change in the SPDX model as it goes from SPDX 2.3 to SPDX 3.0, shifting the SPDX name from Software Package Data Exchange to System Package Data Exchange and expanding the scope of items it can now convey in a bill of materials from software, security, and licensing to many additional aspects like data sets, AI models, and build information.
Since the release of 3.0.0, the groups have gathered feedback on the level of documentation and minor errors in the model which have been addressed in the 3.0.1 release.
Information Technology — SPDX® Specification V3.0
1.0 Scope
The System Package Data Exchange™ (SPDX®) specification defines an open standard for communicating bill of materials (BOM) information for different topic areas.
SPDX defines an underlying data model as well as multiple serialization formats to encode that data model.
SPDX metadata includes details about creation and distribution, including the following:
- software composition, for collections of software (Packages), individual Files, and portions of files (Snippets)
- software build information
- artificial intelligence (AI) models
- datasets
- creator, supplier and distributor identity information
- provenance and integrity
- licenses and copyrights, including a curated list of licenses and exceptions
- security vulnerabilities, defects, and other quality data
- relationships between system elements
- software usage and lifecycle
- mechanisms to enable annotating SPDX elements and linking between multiple SPDX Documents
2.0 Normative references
The following documents are referred to in the text in such a way that some or all of their content constitutes requirements of this document. For dated references, only the edition cited applies. For undated references, the latest edition of the referenced document (including any amendments) applies.
Apache Maven, Apache Software Foundation, https://maven.apache.org/.
Bower API, https://bower.io/docs/api/#install.
Common Platform Enumeration (CPE) – Specification 2.2, The MITRE Corporation, https://cpe.mitre.org/files/cpe-specification_2.2.pdf.
Common Platform Enumeration (CPE): Naming Specification Version 2.3, NIST IR 7695, NIST, https://csrc.nist.gov/pubs/ir/7695/final.
Common Vulnerability Scoring System v3.0 (CVSS v3.0): Specification Document, Forum of Incident Response and Security Teams, Inc (FIRST), https://www.first.org/cvss/v3.0/specification-document.
Common Vulnerability Scoring System v3.1 (CVSS v3.1): Specification Document, Forum of Incident Response and Security Teams, Inc (FIRST), https://www.first.org/cvss/v3.1/specification-document.
Common Vulnerability Scoring System version 4.0 (CVSS v4.0): Specification Document, Forum of Incident Response and Security Teams, Inc (FIRST), https://www.first.org/cvss/v4.0/specification-document.
CVSS 3.0 schema, Forum of Incident Response and Security Teams, Inc (FIRST), https://www.first.org/cvss/cvss-v3.0.json.
CVSS 3.1 schema, Forum of Incident Response and Security Teams, Inc (FIRST), https://www.first.org/cvss/cvss-v3.1.json.
CVSS 4.0 schema, Forum of Incident Response and Security Teams, Inc (FIRST), https://www.first.org/cvss/cvss-v4.0.json.
EU general risk assessment methodology, European Commission, https://ec.europa.eu/docsroom/documents/17107.
npm-package.json, npm Inc., https://docs.npmjs.com/files/package.json.
NuGet documentation, Microsoft, https://docs.nuget.org/.
POSIX.1-2017 The Open Group Base Specifications Issue 7, 2018 edition, IEEE/Open Group, https://pubs.opengroup.org/onlinepubs/9699919799/.
Resource Description Framework (RDF), 2014-02-25, W3C, http://www.w3.org/standards/techs/rdf.
RFC 1319, The MD2 Message-Digest Algorithm, Internet Engineering Task Force, https://datatracker.ietf.org/doc/rfc1319/.
RFC 1320, The MD4 Message-Digest Algorithm, Internet Engineering Task Force, https://datatracker.ietf.org/doc/rfc1320/.
RFC 1321, The MD5 Message-Digest Algorithm, Internet Engineering Task Force, https://datatracker.ietf.org/doc/rfc1321/.
RFC 1950, ZLIB Compressed Data Format Specification version 3.3, Internet Engineering Task Force, https://datatracker.ietf.org/doc/rfc1950/.
RFC 2046, Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types, Internet Engineering Task Force, https://datatracker.ietf.org/doc/rfc2046/.
RFC 3174, US Secure Hash Algorithm 1 (SHA1), Internet Engineering Task Force, https://datatracker.ietf.org/doc/rfc3174/.
RFC 3696, Application Techniques for Checking and Transformation of Names, Internet Engineering Task Force, https://datatracker.ietf.org/doc/rfc3696/.
RFC 3874, A 224-bit One-way Hash Function: SHA-224, Internet Engineering Task Force, https://datatracker.ietf.org/doc/rfc3874/.
RFC 3986, Uniform Resource Identifier (URI): Generic Syntax, Internet Engineering Task Force, https://datatracker.ietf.org/doc/rfc3986/.
RFC 5234, Augmented BNF for Syntax Specifications: ABNF, Internet Engineering Task Force, https://datatracker.ietf.org/doc/rfc5234/.
RFC 6234, US Secure Hash Algorithms (SHA and SHA-based HMAC and HKDF), Internet Engineering Task Force, https://datatracker.ietf.org/doc/rfc6234/.
RFC 7405, Case-Sensitive String Support in ABNF, Internet Engineering Task Force, https://datatracker.ietf.org/doc/rfc7405/.
RFC 7693, The BLAKE2 Cryptographic Hash and Message Authentication Code (MAC), Internet Engineering Task Force, https://datatracker.ietf.org/doc/rfc7693/.
RFC 8259, The JavaScript Object Notation (JSON) Data Interchange Format, Internet Engineering Task Force, https://datatracker.ietf.org/doc/rfc8259/.
RFC 9393, Concise Software Identification Tags, Internet Engineering Task Force, https://datatracker.ietf.org/doc/rfc9393/.
Semantic Versioning 2.0.0, Tom Preston-Werner and SemVer contributors, https://semver.org.
SLSA Provenance v0.2, The Linux Foundation, https://slsa.dev/spec/v0.2/provenance.
SoftWare Heritage persistent IDentifiers (SWHIDs), in International Standard ISO/IEC 18670 Information technology — SoftWare Hash IDentifier (SWHID) Specification V1.2https://www.iso.org/standard/89985.html, also available at https://www.swhid.org/swhid-specification/v1.2/
SPDX and RDF Ontology, http://spdx.org/rdf/ontology/spdx-3-0
SPDX License List, The Linux Foundation, https://spdx.org/licenses/
SPDX License Exceptions, The Linux Foundation, https://spdx.org/licenses/exceptions-index.html
Stakeholder-Specific Vulnerability Categorization Guide, CISA, https://www.cisa.gov/stakeholder-specific-vulnerability-categorization-ssvc.
The EPSS Model, Forum of Incident Response and Security Teams, Inc (FIRST), https://www.first.org/epss/model.
Types of Software Bill of Material (SBOM) Documents, CISA, https://www.cisa.gov/sites/default/files/2023-04/sbom-types-document-508c.pdf.
3.0 Symbols
The following symbols and abbreviations are used throughout this document:
3T-SBOM | Tool-to-Tool Software Bill of Materials Exchange |
ABNF | Augmented Backus–Naur form |
AI | Artificial Intelligence |
BNF | Backus–Naur form |
BOM | Bill of Materials |
CISA | Cybersecurity and Infrastructure Security Agency |
CISQ | Consortium for Information & Software Quality |
CPE | Common Platform Enumeration |
CVE | Common Vulnerabilities and Exposures |
CVSS | Common Vulnerability Scoring System |
EPSS | Exploit Prediction Scoring System |
ISO | International Organization for Standardization |
JSON-LD | JavaScript Object Notation for Linking Data |
KEV | Known Exploited Vulnerabilities |
ML | Machine Learning |
NIST | National Institute of Standards and Technology |
NISTIR | NIST Internal or Interagency Report |
NTIA | National Telecommunications and Information Administration |
OSI | Open Source Initiative |
OWL | Web Ontology Language |
PAS | Publicly Available Specification |
POSIX | Portable Operating System Interface |
PTF | Platform Task Force |
PURL | Package URL |
RDF | Resource Description Framework |
RFC | Request For Comments |
SBOM | Software Bill of Materials |
SHA | Secure Hash Algorithms |
SHACL | Shapes Constraint Language |
SPDX | System Package Data Exchange (previously Software Package Data Exchange) |
SSVC | Stakeholder-Specific Vulnerability Categorization |
SWHID | SoftWare Hash IDentifier |
URI | Uniform Resource Identifier |
URL | Uniform Resource Locator |
VEX | Vulnerability Exploitability eXchange |
XML | Extensible Markup Language |
4.0 Terms and definitions
For the purposes of this document, the following terms and definitions apply.
ISO and IEC maintain terminological databases for use in standardization at the following addresses:
- ISO Online browsing platform: available at https://www.iso.org/obp
- IEC Electropedia: available at http://www.electropedia.org/
4.1
profile
a scope of usage for SPDX targeting support for particular use cases and scenarios (e.g., software, licensing, security, etc.) that identifies which particular SPDX namespaces, classes, and properties it leverages, along with any custom constraints unique to its use
5.0 Conformance
5.1 Alternate notation for some conformance requirements
This document contains more than a few cardinality assertions, each of which indicates the minimum and maximum number of times a property may appear. These are represented by using “minCount” and “maxCount” respectively. The absolute minimum number of occurrences is zero (0), while for an unbounded maximum number of occurrences a star (*) is being used.
Here are some examples:
- minCount: 1
- maxCount: *
- Cardinality: 0..1
- Cardinality: 0..*
- Cardinality: 1..1
- Cardinality: 1..*
Each of these assertions can easily be understood as to whether a feature is required, and if so, how many occurrences are required; also, whether a feature is permitted, and if so, in what number. As this is the format long familiar to the SPDX community, it has been preserved in this document.
5.1.1 Introduction to profiles
Profile is the term for a compliance point within the SPDX community across The Linux Foundation and OMG. This document defines the following nine compliance points, defined as “profiles”:
- Core profile
- Software profile
- Security profile
- Licensing profile
- Dataset profile
- AI profile
- Build profile
- Lite profile
- Extension profile
The Core profile is mandatory. All others are optional.
5.1.2 Core profile compliance point
The Core profile includes the definitions of classes properties and vocabularies usable by all SPDX profiles when producing or consuming SPDX content. Although the classes, properties and vocabularies are somewhat extensive, the required fields are rather minimal to allow maximum flexibility while meeting minimum SBOM requirements. Software that conforms to the SPDX specification at the Core profile compliance point shall be able to import and export serialized documents that conform with one of the defined SPDX serialization formats.
Conformance to the Core profile compliance point is mandatory for all other SPDX profiles.
This compliance point, in combination with the Software profile compliance point, provides a baseline of functionality that facilitates interchange of the bills of materials information produced by tools supporting SPDX.
5.1.3 Software profile compliance point
The Software profile includes the definitions of classes, properties and vocabularies for referring to and conveying information about software and is usable by all SPDX profiles when producing or consuming SPDX content.
Software that conforms to the SPDX specification at the Software profile compliance point shall be able to import and export serialized documents that conform with one of the SPDX serialization formats defined SPDX serialization formats.
Conformance to the Software profile compliance point does not entail support for the Licensing, Dataset, AI, Build, Lite, or Extension profiles of the SPDX.
This compliance point, in combination with the Core profile compliance point, provides a baseline of functionality that facilitates interchange of the bills of materials information produced by tools supporting SPDX.
5.1.4 Security profile compliance point
The Security profile captures security-related information when producing or consuming SPDX content.
Software that conforms to the SPDX specification at the security profile compliance point shall be able to import and export serialized documents that conform with one of the SPDX serialization formats defined SPDX serialization formats, including the properties and relationships specified in the security profile, which are in support of exchanging information about software vulnerabilities that may exist, the severity of those vulnerabilities, and a mechanism to express how a vulnerability may affect a specific software element including if a fix is available.
Conformance to the Security profile compliance point does not entail support for the Licensing, Dataset, AI, Build, Lite, or Extension profiles of the SPDX.
This compliance point facilitates interchange of the security information produced by tools supporting SPDX.
5.1.5 Licensing profile compliance point
The Licensing profile includes capturing details relevant to software licensing and intellectual property information when producing or consuming SPDX content. Specifically, software that conforms to the SPDX specification at the Licensing profile compliance point shall be able to import and export serialized documents that conform with one of the SPDX serialization formats defined SPDX serialization formats, including the classes and fields that comprise the SPDX License Expression syntax and that relate to the SPDX License List.
There are two associated profiles, the SimpleLicensing profile and the ExpandedLicensing profile. Both allow expression of the same information, albeit in different ways.
Conformance to the Licensing profile compliance point does not entail support for the Software, Security, Dataset, AI, Build, Lite, or Extension profiles of the SPDX.
This compliance point facilitates interchange of the licensing documents expressing which licenses and copyright notices are determined by persons or automated tooling to apply to distributions of software that are produced by tools supporting SPDX.
5.1.6 Dataset profile compliance point
The Dataset profile captures the relevant information about the datasets used in an AI system or other applications when producing or consuming SPDX content.
Software that conforms to the SPDX specification at the Dataset profile compliance point shall be able to import and export serialized documents that conform with one of the SPDX serialization formats defined SPDX serialization formats, including details such as dataset names, versions, sources, associated metadata, licensing information, and any other relevant attributes. The Dataset profile can covey a description or summary of a dataset, including metadata, characteristics, and statistical information about the data. The Dataset profile can convey insights into the structure, format, content, and properties of a dataset, helping users understand and analyze the data more effectively.
Conformance to the Dataset profile compliance point does not entail support for the Software, Licensing, Security, AI, Build, Lite, or Extension profiles of the SPDX.
This compliance point facilitates interchange of the information about datasets produced by tools supporting SPDX.
5.1.7 AI profile compliance point
The AI profile captures an inventory list of software components and dependencies associated with an AI system when producing or consuming SPDX content.
Software that conforms to the SPDX specification at the AI profile compliance point shall be able to import and export serialized documents that conform with one of the SPDX serialization formats defined SPDX serialization formats, including the information about software components and dependencies associated with artificial intelligence and machine learning (AI/ML) models and systems. This inventory includes the software frameworks, libraries, and other components used to build or deploy the AI system, along with relevant information about their versions, licenses, and useful security references including ethical and security information.
Conformance to the AI profile compliance point does not entail support for the Software, Licensing, Security, Dataset, Build, Lite, or Extension profiles of the SPDX.
This compliance point facilitates interchange of the AI model related information produced by tools supporting SPDX.
5.1.8 Build profile compliance point
The Build profile captures build-related information when producing or consuming SPDX content.
Software that conforms to the SPDX specification at the Build profile compliance point shall be able to import and export serialized documents that conform with one of the SPDX serialization formats defined SPDX serialization formats, including associated definitions to help express how software is generated and transformed. This includes encoding the inputs, outputs, procedures/instructions, environments and actors from the build process along with the associated evidence.
Conformance to the Build profile compliance point does not entail support for the Software, Licensing, Security, Dataset, AI, Lite, or Extension profiles of the SPDX.
This compliance point facilitates interchange of the build information produced by tools supporting SPDX.
5.1.9 Lite profile compliance point
The Lite profile captures the minimum set of information required for license compliance in the software supply chain for producing or consuming SPDX content.
Software that conforms to the SPDX specification at the Lite profile compliance point shall be able to import and export serialized documents that conform with one of the SPDX serialization formats defined SPDX serialization formats, including creation of the SBOM, package lists with licensing and other related items, and their relationships.
Conformance to the Lite profile compliance point does not entail support for the Software, Licensing, Security, Dataset, AI, Build, or Extension profiles of the SPDX.
This compliance point facilitates interchange of minimal licensing information when produced by tools supporting SPDX.
5.1.10 Extension profile compliance point
The Extension profile captures extended tailored information when producing or consuming non-standard SPDX content in three ways:
- Support profile-based extended characterization of Elements. Enables specification and expression of Element characterization extensions within any profile and namespace of SPDX without requiring changes to other profiles or namespaces and without requiring local subclassing of remote classes (which could inhibit ecosystem interoperability in some cases).
- Support extension of SPDX by adopting individuals or communities with Element characterization details uniquely specialized to their particular context. Enables adopting individuals or communities to utilize SPDX expressive capabilities along with expressing more arcane Element characterization details specific to them and not appropriate for standardization across SPDX.
- Support structured capture of expressive solutions for gaps in SPDX coverage from real-world use. Enables adopting individuals or communities to express Element characterization details they require that are not currently defined in SPDX but likely should be. Enables a practical pipeline that identifies gaps in SPDX that should be filled, expresses solutions to those gaps in a way that allows the identifying adopters to use the extended solutions with SPDX and does not conflict with current SPDX, can be clearly detected among the SPDX content exchange ecosystem, provides a clear and structured definition of gap solution that can be used as submission for revision to the SPDX standard.
Software that conforms to the SPDX specification at the Extension profile compliance point shall be able to import and export serialized documents that conform with one of the SPDX serialization formats defined SPDX serialization formats, including the abstract Extension class serving as the base for all defined Extension subclasses.
Conformance to the Extension profile compliance point does not entail support for the Licensing, Security, Dataset, AI, Build, or profiles of the SPDX but is expected to be used in combination with the other profiles to extend them.
This compliance point facilitates interchange of extended information that goes beyond the standard SPDX produced by tools supporting SPDX and is used between cooperating parties that understand the form of the extension and can produce and consume its non-standard content.
5.1.11 Trademark compliance
To be designated an SPDX document, a file shall comply with the requirements of the SPDX Trademark License, as stated in the SPDX Trademark Page.
The official copyright notice that shall be used with any verbatim reproduction and/or distribution of this SPDX Specification 3.0 is:
“Official SPDX® Specification 3.0 Copyright © 2010–2025 Linux Foundation and its Contributors. Licensed under the Community Specification License 1.0. All other rights are expressly reserved.”
The official copyright notice that shall be used with any non-verbatim reproduction and/or distribution of this SPDX Specification 3.0, including without limitation any partial use or combining this SPDX Specification with another work, is:
“This is not an official SPDX Specification. Portions herein have been reproduced from SPDX® Specification 3.0 found at spdx.dev. These portions are Copyright © 2010–2025 Linux Foundation and its Contributors, and are licensed under the Community Specification License 1.0 by the Linux Foundation and its Contributors. All other rights are expressly reserved by Linux Foundation and its Contributors.”
6.0 Model and serializations
6.1 Overview
This document defines the data model of the SPDX standard, describing every piece of information about systems with software components. The data model is based on the Resource Description Framework (RDF) extensible knowledge representation data model, which provides a flexible and extensible way to represent and exchange information.
The data may be serialized in a variety of formats for storage and transmission.
6.1.1 RDF serialization
Since the data model is based on RDF, any SPDX data can be serialized in any of the multiple RDF serialization formats, including but not limited to:
- JSON-LD format as defined in JSON-LD 1.1;
- Turtle (Terse RDF Triple Language) format as defined in RDF 1.1 Turtle;
- N-Triples format as defined in RDF 1.1 N-Triples; and
- RDF/XML format as defined in RDF 1.1 XML Syntax.
The SPDX specification is accompanied by a JSON-LD context definition file that can be used to serialize SPDX in a much simpler and more human-readable JSON-LD format.
6.1.2 Canonical serialization
Canonical serialization is a single, consistent, normalized, deterministic, and reproducible form.
Such a canonical form normalizes things like ordering and formatting.
The content of the canonical serialization is exactly the same as the JSON-LD serialization of RDF data, just represented in a consistent way.
Canonical serialization is in JSON format, as defined in RFC 8259 (IETF STD 90), with the following additional characteristics:
- No line breaks
- Key names shall be wrapped in double quotes
- No whitespace outside of strings
- true, false and null: the literal names shall be lowercase; no other literal names are allowed
- Integers: represented in base 10 using decimal digits. This designates an integer component that may be prefixed with an optional minus sign. Leading zeros are not allowed.
- Strings: UTF-8 representation without specific normalization. A string begins and ends with quotation marks (%x22). Any Unicode characters may be placed within the quotation marks, except for the two characters that shall be escaped by a reverse solidus: quotation mark, reverse solidus, and the control characters (U+0000 through U+001F).
- Arrays: An array structure is represented as square brackets surrounding zero or more items. Items are separated by commas.
- Objects: An object structure is represented as a pair of curly brackets surrounding zero or more name/value pairs (or members). A name is a string containing only ASCII characters (0x21-0x7F). The names within an object shall be unique. A single colon comes after each name, separating the name from the value. A single comma separates a value from a following name. The name/value pairs are ordered by name.
6.1.3 Serialization information
A collection of elements may be serialized in multiple formats.
An SpdxDocument element represents a collection of elements across all serialization data formats within the model.
The actual serialized bytes are represented by an Artifact element within the model.
A Relationship of type serializedInArtifact links an SpdxDocument to one or more serialized forms of itself.
When serializing a physical SpdxDocument, any property of the logical element that can be natively represented within the chosen serialization format (e.g., @context prefixes in JSON-LD instead of the namespaceMap) may utilize these native mechanisms. All remaining properties shall be serialized within the SpdxDocument element itself.
A serialization shall not contain more than one SpdxDocument.
A given instance of serialization shall not define more than one SpdxDocument element.
6.1.4 Serialization in SPDX 3 JSON
6.1.5 A strict subset of JSON-LD
The SPDX 3 JSON format is a strict subset of JSON-LD. It requires data to be serialized according to the defined serialization specification and validated against the SPDX 3 JSON Schema. It may be parsed – not serialized – using standard JSON-LD libraries.
6.1.6 JSON-LD context file
JSON-LD contexts allow JSON documents to use simple, human-readable, locally defined terms while ensuring data interoperability across different systems.
The SPDX global JSON-LD context file shall be used universally for all SPDX documents in JSON-LD format that adhere to a specific SPDX version.
SPDX global JSON-LD context file is available at: https://spdx.org/rdf/3.0/spdx-context.jsonld
All SPDX documents in JSON-LD format shall include a reference to the SPDX global context file at the top level. This reference is achieved using the following JSON construct:
{ "@context": "https://spdx.org/rdf/3.0/spdx-context.jsonld" }
The SPDX context file defines aliases for specific JSON-LD properties to improve compatibility with the SPDX model. These aliases are:
- spdxId: An alias for the @id property.
- type: An alias for the @type property.
Additional namespace mappings may be defined within a separate object within the context.
6.1.7 JSON-LD validation
An SPDX serialization in JSON-LD format is considered conformant to the SPDX specification if it adheres to the following two validation criteria:
- Structural validation: The JSON-LD document shall structurally validate against the SPDX JSON Schema. This schema defines the expected structure of the JSON-LD document, including the required elements, data types, and permissible values.
- Semantic validation: The JSON-LD document shall successfully validate against the SPDX OWL ontology. This ontology defines the expected relationships and constraints between SPDX elements. The SPDX OWL ontology also incorporates SHACL shape restrictions to further specify these constraints.
The SPDX 3 JSON Schema is available at: https://spdx.org/schema/3.0/spdx-json-schema.json
The SPDX 3 OWL ontology is available at: https://spdx.org/rdf/3.0/spdx-model.ttl
7.0 Core
7.1 Profile information
7.1.1 Core profile
Summary
The basis for all SPDX profiles.
Description
The Core namespace defines foundational concepts serving as the basis for all SPDX 3.0 profiles.
Metadata
https://spdx.org/rdf/3.0/terms/Core
Name | Core |
7.2 Classes
7.2.1 Agent
Summary
Agent represents anything with the potential to act on a system.
Description
The Agent class represents anything that has the potential to act on a system.
This could be a person, organization, software agent, etc.
This is not to be confused with tools that are used to perform tasks.
Metadata
https://spdx.org/rdf/3.0/terms/Core/Agent
Name | Agent |
Instantiability | Concrete |
SubclassOf | Element |
Class hierarchy
/Core/Element
/Core/Agent
All properties
Property | Type | minCount | maxCount |
|---|---|---|---|
comment | xsd:string | 0 | 1 |
creationInfo | CreationInfo | 1 | 1 |
description | xsd:string | 0 | 1 |
extension | Extension | 0 | * |
externalIdentifier | ExternalIdentifier | 0 | * |
externalRef | ExternalRef | 0 | * |
name | xsd:string | 0 | 1 |
spdxId | xsd:anyURI | 1 | 1 |
summary | xsd:string | 0 | 1 |
verifiedUsing | IntegrityMethod | 0 | * |
7.2.2 Annotation
Summary
An assertion made in relation to one or more elements.
Description
An Annotation is an assertion made in relation to one or more elements.
The contentType property describes the format of the statement property.
Metadata
https://spdx.org/rdf/3.0/terms/Core/Annotation
Name | Annotation |
Instantiability | Concrete |
SubclassOf | Element |
Class hierarchy
/Core/Element
/Core/Annotation
Properties
Property | Type | minCount | maxCount |
|---|---|---|---|
annotationType | AnnotationType | 1 | 1 |
contentType | MediaType | 0 | 1 |
statement | xsd:string | 0 | 1 |
subject | Element | 1 | 1 |
All properties
Property | Type | minCount | maxCount |
|---|---|---|---|
annotationType | AnnotationType | 1 | 1 |
comment | xsd:string | 0 | 1 |
contentType | MediaType | 0 | 1 |
creationInfo | CreationInfo | 1 | 1 |
description | xsd:string | 0 | 1 |
extension | Extension | 0 | * |
externalIdentifier | ExternalIdentifier | 0 | * |
externalRef | ExternalRef | 0 | * |
name | xsd:string | 0 | 1 |
spdxId | xsd:anyURI | 1 | 1 |
statement | xsd:string | 0 | 1 |
subject | Element | 1 | 1 |
summary | xsd:string | 0 | 1 |
verifiedUsing | IntegrityMethod | 0 | * |
7.2.3 Artifact
Summary
A distinct article or unit within the digital domain.
Description
An artifact is a distinct article or unit within the digital domain, such as an electronic file, a software package, a device or an element of data.
Metadata
https://spdx.org/rdf/3.0/terms/Core/Artifact
Name | Artifact |
Instantiability | Abstract |
SubclassOf | Element |
Class hierarchy
/Core/Element
/Core/Artifact
Properties
Property | Type | minCount | maxCount |
|---|---|---|---|
builtTime | DateTime | 0 | 1 |
originatedBy | Agent | 0 | * |
releaseTime | DateTime | 0 | 1 |
standardName | xsd:string | 0 | * |
suppliedBy | Agent | 0 | 1 |
supportLevel | SupportType | 0 | * |
validUntilTime | DateTime | 0 | 1 |
All properties
Property | Type | minCount | maxCount |
|---|---|---|---|
builtTime | DateTime | 0 | 1 |
comment | xsd:string | 0 | 1 |
creationInfo | CreationInfo | 1 | 1 |
description | xsd:string | 0 | 1 |
extension | Extension | 0 | * |
externalIdentifier | ExternalIdentifier | 0 | * |
externalRef | ExternalRef | 0 | * |
name | xsd:string | 0 | 1 |
originatedBy | Agent | 0 | * |
releaseTime | DateTime | 0 | 1 |
spdxId | xsd:anyURI | 1 | 1 |
standardName | xsd:string | 0 | * |
summary | xsd:string | 0 | 1 |
suppliedBy | Agent | 0 | 1 |
supportLevel | SupportType | 0 | * |
validUntilTime | DateTime | 0 | 1 |
verifiedUsing | IntegrityMethod | 0 | * |
7.2.4 Bom
Summary
A container for a grouping of SPDX 3.0 content characterizing details (provenance, composition, licensing, etc.) about a product.
Description
A Bill of Materials (BOM) is a container for a grouping of SPDX 3.0 content characterizing details about a product.
This could include details of the content and composition of the product, provenance details of the product and/or its composition, licensing information, known quality or security issues, etc.
Metadata
https://spdx.org/rdf/3.0/terms/Core/Bom
Name | Bom |
Instantiability | Concrete |
SubclassOf | Bundle |
Class hierarchy
/Core/Element
/Core/ElementCollection
/Core/Bundle
/Core/Bom
All properties
Property | Type | minCount | maxCount |
|---|---|---|---|
comment | xsd:string | 0 | 1 |
context | xsd:string | 0 | 1 |
creationInfo | CreationInfo | 1 | 1 |
description | xsd:string | 0 | 1 |
element | Element | 0 | * |
extension | Extension | 0 | * |
externalIdentifier | ExternalIdentifier | 0 | * |
externalRef | ExternalRef | 0 | * |
name | xsd:string | 0 | 1 |
profileConformance | ProfileIdentifierType | 0 | * |
rootElement | Element | 0 | * |
spdxId | xsd:anyURI | 1 | 1 |
summary | xsd:string | 0 | 1 |
verifiedUsing | IntegrityMethod | 0 | * |
7.2.5 Bundle
Summary
A collection of Elements that have a shared context.
Description
A bundle is a collection of Elements that have a shared context.
Metadata
https://spdx.org/rdf/3.0/terms/Core/Bundle
Name | Bundle |
Instantiability | Concrete |
SubclassOf | ElementCollection |
Class hierarchy
/Core/Element
/Core/ElementCollection
/Core/Bundle
Properties
Property | Type | minCount | maxCount |
|---|---|---|---|
context | xsd:string | 0 | 1 |
All properties
Property | Type | minCount | maxCount |
|---|---|---|---|
comment | xsd:string | 0 | 1 |
context | xsd:string | 0 | 1 |
creationInfo | CreationInfo | 1 | 1 |
description | xsd:string | 0 | 1 |
element | Element | 0 | * |
extension | Extension | 0 | * |
externalIdentifier | ExternalIdentifier | 0 | * |
externalRef | ExternalRef | 0 | * |
name | xsd:string | 0 | 1 |
profileConformance | ProfileIdentifierType | 0 | * |
rootElement | Element | 0 | * |
spdxId | xsd:anyURI | 1 | 1 |
summary | xsd:string | 0 | 1 |
verifiedUsing | IntegrityMethod | 0 | * |
7.2.6 CreationInfo
Summary
Provides information about the creation of the Element.
Description
The CreationInfo provides information about who created the Element, and when and how it was created.
The dateTime created is often the date of last change (e.g., a git commit date), not the date when the SPDX data was created, as doing so supports reproducible builds.
Metadata
https://spdx.org/rdf/3.0/terms/Core/CreationInfo
Name | CreationInfo |
Instantiability | Concrete |
Class hierarchy
/Core/CreationInfo
Properties
Property | Type | minCount | maxCount |
|---|---|---|---|
comment | xsd:string | 0 | 1 |
created | DateTime | 1 | 1 |
createdBy | Agent | 1 | * |
createdUsing | Tool | 0 | * |
specVersion | SemVer | 1 | 1 |
All properties
Property | Type | minCount | maxCount |
|---|---|---|---|
comment | xsd:string | 0 | 1 |
created | DateTime | 1 | 1 |
createdBy | Agent | 1 | * |
createdUsing | Tool | 0 | * |
specVersion | SemVer | 1 | 1 |
7.2.7 DictionaryEntry
Summary
A key with an associated value.
Description
The class used for implementing a generic string mapping (also known as associative array, dictionary, or hash map) in SPDX.
Each DictionaryEntry contains a key-value pair which maps the key to its associated value.
To implement a dictionary, this class is to be used in a collection with unique keys.
Metadata
https://spdx.org/rdf/3.0/terms/Core/DictionaryEntry
Name | DictionaryEntry |
Instantiability | Concrete |
Class hierarchy
/Core/DictionaryEntry
Properties
Property | Type | minCount | maxCount |
|---|---|---|---|
Key | xsd:string | 1 | 1 |
Value | xsd:string | 0 | 1 |
All properties
Property | Type | minCount | maxCount |
|---|---|---|---|
key | xsd:string | 1 | 1 |
value | xsd:string | 0 | 1 |
7.2.8 Element
Summary
Base domain class from which all other SPDX 3.0 domain classes derive.
Description
An Element is a representation of a fundamental concept either directly inherent to the Bill of Materials (BOM) domain or indirectly related to the BOM domain and necessary for contextually characterizing BOM concepts and relationships. Within SPDX 3.0 structure this is the base class acting as a consistent, unifying, and interoperable foundation for all explicit and inter-relatable content objects.
Metadata
https://spdx.org/rdf/3.0/terms/Core/Element
Name | Element |
Instantiability | Abstract |
Class hierarchy
/Core/Element
Properties
Property | Type | minCount | maxCount |
|---|---|---|---|
comment | xsd:string | 0 | 1 |
creationInfo | CreationInfo | 1 | 1 |
description | xsd:string | 0 | 1 |
extension | /Extension/Extension | 0 | * |
externalIdentifier | ExternalIdentifier | 0 | * |
externalRef | ExternalRef | 0 | * |
name | xsd:string | 0 | 1 |
spdxId | xsd:anyURI | 1 | 1 |
summary | xsd:string | 0 | 1 |
verifiedUsing | IntegrityMethod | 0 | * |
All properties
Property | Type | minCount | maxCount |
|---|---|---|---|
comment | xsd:string | 0 | 1 |
creationInfo | CreationInfo | 1 | 1 |
description | xsd:string | 0 | 1 |
extension | Extension | 0 | * |
externalIdentifier | ExternalIdentifier | 0 | * |
externalRef | ExternalRef | 0 | * |
name | xsd:string | 0 | 1 |
spdxId | xsd:anyURI | 1 | 1 |
summary | xsd:string | 0 | 1 |
verifiedUsing | IntegrityMethod | 0 | * |
7.2.9 ElementCollection
Summary
A collection of Elements, not necessarily with unifying context.
Description
An ElementCollection is a collection of Elements, not necessarily with unifying context.
Note that all ElementCollections shall conform to the Core profile even if the Core profile is not specified in the profileConformance property.
If the profileConformance property is not provided, “core” is to be assumed as the default.
Constraints
- If the ElementCollection has at least 1 element, it shall also have at least 1 rootElement.
- The element shall not be of type SpdxDocument.
- The rootElement shall not be of type SpdxDocument.
Metadata
https://spdx.org/rdf/3.0/terms/Core/ElementCollection
Name | ElementCollection |
Instantiability | Abstract |
SubclassOf | Element |
Class hierarchy
/Core/Element
/Core/ElementCollection
Properties
Property | Type | minCount | maxCount |
|---|---|---|---|
Element | Element | 0 | * |
profileConformance | ProfileIdentifierType | 0 | * |
rootElement | Element | 0 | * |
All properties
Property | Type | minCount | maxCount |
|---|---|---|---|
comment | xsd:string | 0 | 1 |
creationInfo | CreationInfo | 1 | 1 |
description | xsd:string | 0 | 1 |
element | Element | 0 | * |
extension | Extension | 0 | * |
externalIdentifier | ExternalIdentifier | 0 | * |
externalRef | ExternalRef | 0 | * |
name | xsd:string | 0 | 1 |
profileConformance | ProfileIdentifierType | 0 | * |
rootElement | Element | 0 | * |
spdxId | xsd:anyURI | 1 | 1 |
summary | xsd:string | 0 | 1 |
verifiedUsing | IntegrityMethod | 0 | * |
7.2.10 ExternalIdentifier
Summary
A reference to a resource identifier defined outside the scope of SPDX 3.0 content that uniquely identifies an Element.
Description
An ExternalIdentifier is a reference to a resource outside the scope of SPDX 3.0 content that provides a unique key within an established domain that can uniquely identify an Element.
Metadata
https://spdx.org/rdf/3.0/terms/Core/ExternalIdentifier
Name | ExternalIdentifier |
Instantiability | Concrete |
/Core/ExternalIdentifier
Property | Type | minCount | maxCount |
|---|---|---|---|
comment | xsd:string | 0 | 1 |
externalIdentifierType | ExternalIdentifierType | 1 | 1 |
identifier | xsd:string | 1 | 1 |
identifierLocator | xsd:anyURI | 0 | * |
issuingAuthority | xsd:string | 0 | 1 |
Property | Type | minCount | maxCount |
|---|---|---|---|
comment | xsd:string | 0 | 1 |
externalIdentifierType | ExternalIdentifierType | 1 | 1 |
identifier | xsd:string | 1 | 1 |
identifierLocator | xsd:anyURI | 0 | * |
issuingAuthority | xsd:string | 0 | 1 |
7.2.11 ExternalMap
Summary
A map of Element identifiers that are used within an SpdxDocument but defined external to that SpdxDocument.
Description
An external map is a map of Element identifiers that are used within an SpdxDocument but defined external to that SpdxDocument. The external map provides details about the externally defined Element such as its provenance, where to retrieve it, and how to verify its integrity.
Metadata
https://spdx.org/rdf/3.0/terms/Core/ExternalMap
Name | ExternalMap |
Instantiability | Concrete |
Class hierarchy
/Core/ExternalMap
Properties
Property | Type | minCount | maxCount |
|---|---|---|---|
definingArtifact | Artifact | 0 | 1 |
externalSpdxId | xsd:anyURI | 1 | 1 |
locationHint | xsd:anyURI | 0 | 1 |
verifiedUsing | IntegrityMethod | 0 | * |
All properties
Property | Type | minCount | maxCount |
|---|---|---|---|
definingArtifact | Artifact | 0 | 1 |
externalSpdxId | xsd:anyURI | 1 | 1 |
locationHint | xsd:anyURI | 0 | 1 |
verifiedUsing | IntegrityMethod | 0 | * |
7.2.12 ExternalRef
Summary
A reference to a resource outside the scope of SPDX 3.0 content related to an Element.
Description
An External Reference points to a general resource outside the scope of the SPDX 3.0 content that provides additional context, characteristics or related information about an Element.
Metadata
https://spdx.org/rdf/3.0/terms/Core/ExternalRef
Name | ExternalRef |
Instantiability | Concrete |
Class hierarchy
/Core/ExternalRef
Properties
Property | Type | minCount | maxCount |
|---|---|---|---|
Comment | xsd:string | 0 | 1 |
contentType | MediaType | 0 | 1 |
externalRefType | ExternalRefType | 0 | 1 |
Locator | xsd:string | 0 | * |
All properties
Property | Type | minCount | maxCount |
|---|---|---|---|
comment | xsd:string | 0 | 1 |
contentType | MediaType | 0 | 1 |
externalRefType | ExternalRefType | 0 | 1 |
locator | xsd:string | 0 | * |
7.2.13 Hash
Summary
A mathematically calculated representation of a grouping of data.
Description
A hash is a grouping of characteristics unique to the result of applying a mathematical algorithm that maps data of arbitrary size to a bit string (the hash) and is a one-way function, that is, a function which is practically infeasible to invert.
This is commonly used for integrity checking of data.
Please note that different profiles may also provide additional methods for verifying the integrity of specific subclasses of Elements.
Metadata
https://spdx.org/rdf/3.0/terms/Core/Hash
Name | Hash |
Instantiability | Concrete |
SubclassOf | IntegrityMethod |
Class hierarchy
/Core/IntegrityMethod
/Core/Hash
Properties
Property | Type | minCount | maxCount |
|---|---|---|---|
Algorithm | HashAlgorithm | 1 | 1 |
hashValue | xsd:string | 1 | 1 |
All properties
Property | Type | minCount | maxCount |
|---|---|---|---|
Algorithm | HashAlgorithm | 1 | 1 |
Comment | xsd:string | 0 | 1 |
hashValue | xsd:string | 1 | 1 |
7.2.14 IndividualElement
Summary
A concrete subclass of Element used by Individuals in the Core profile.
Description
Individuals, such as NoneElement and NoAssertionElement, need to reference a concrete subclass of Element.
This class provides the type used by the individuals defined in the Core profile.
Metadata
https://spdx.org/rdf/3.0/terms/Core/IndividualElement
Name | IndividualElement |
Instantiability | Concrete |
SubclassOf | Element |
Class hierarchy
/Core/Element
/Core/IndividualElement
All properties
Property | Type | minCount | maxCount |
|---|---|---|---|
comment | xsd:string | 0 | 1 |
creationInfo | CreationInfo | 1 | 1 |
description | xsd:string | 0 | 1 |
extension | Extension | 0 | * |
externalIdentifier | ExternalIdentifier | 0 | * |
externalRef | ExternalRef | 0 | * |
name | xsd:string | 0 | 1 |
spdxId | xsd:anyURI | 1 | 1 |
summary | xsd:string | 0 | 1 |
verifiedUsing | IntegrityMethod | 0 | * |
7.2.15 IntegrityMethod
Summary
Provides an independently reproducible mechanism that permits verification of a specific Element.
Description
An IntegrityMethod provides an independently reproducible mechanism that permits verification of a specific Element that correlates to the data in this SPDX document. This identifier enables a recipient to determine if anything in the original Element has been changed and eliminates confusion over which version or modification of a specific Element is referenced.
Please note that different profiles may also provide additional methods for verifying the integrity of specific subclasses of Elements.
Metadata
https://spdx.org/rdf/3.0/terms/Core/IntegrityMethod
Name | IntegrityMethod |
Instantiability | Abstract |
Class hierarchy
/Core/IntegrityMethod
Properties
Property | Type | minCount | maxCount |
|---|---|---|---|
Comment | xsd:string | 0 | 1 |
All properties
Property | Type | minCount | maxCount |
|---|---|---|---|
Comment | xsd:string | 0 | 1 |
7.2.16 LifecycleScopedRelationship
Summary
Provide context for a relationship that occurs in the lifecycle.
Description
Certain relationships are sensitive to where they occur in the lifecycle. This parameter lets us avoid a proliferation of relationships, by parameterizing this context information for a relationship.
Metadata
https://spdx.org/rdf/3.0/terms/Core/LifecycleScopedRelationship
Name | LifecycleScopedRelationship |
Instantiability | Concrete |
SubclassOf | Relationship |
Class hierarchy
/Core/Element
/Core/Relationship
/Core/LifecycleScopedRelationship
Properties
Type | minCount | maxCount | |
|---|---|---|---|
scope | LifecycleScopeType | 0 | 1 |
All properties
Type | minCount | maxCount | |
|---|---|---|---|
comment | xsd:string | 0 | 1 |
completeness | RelationshipCompleteness | 0 | 1 |
creationInfo | CreationInfo | 1 | 1 |
description | xsd:string | 0 | 1 |
endTime | DateTime | 0 | 1 |
extension | Extension | 0 | * |
externalIdentifier | ExternalIdentifier | 0 | * |
externalRef | ExternalRef | 0 | * |
from | Element | 1 | 1 |
name | xsd:string | 0 | 1 |
relationshipType | RelationshipType | 1 | 1 |
scope | LifecycleScopeType | 0 | 1 |
spdxId | xsd:anyURI | 1 | 1 |
startTime | DateTime | 0 | 1 |
summary | xsd:string | 0 | 1 |
to | Element | 1 | * |
verifiedUsing | IntegrityMethod | 0 | * |
7.2.17 NamespaceMap
Summary
A mapping between prefixes and namespace partial URIs.
Description
A namespace map allows the creator of a collection of serializable Elements to suggest shorter identifiers (“prefixes”) for specific namespace portions of Element IDs. This map is used in SPDX content serialization to provide a more human-readable and smaller serialized representation of the Elements.
For details of how NamespaceMap content is to be serialized refer to Clause 6 and the various serialization format-specific files within the spdx-3-model repository.
Namespace maps support a variety of relevant use cases such as:
- An SPDX content producer wishing to provide clarity of their serialization of an SPDX 2.X simple style collection where all content is newly minted and a single prefix-namespace is used. The consumer of SPDX content wishes to preserve the name space mapping provided by such a producer.
- In this case, the consumer would record the namespace map prefixes in the NamespaceMap such that subsequent serializations could reproduce the prefixes / namespaces in the native serialization format.
- An SPDX content producer wishing to maintain consistent prefix use and understanding across multiple different serialization formats of the produced content.
- For example, an SBOM producer wishes to share/publish the SBOM as JSON-LD and XML. The producer can specify the preferred prefix mappings in the native serialization format using information from a single NamespaceMap accessible local to the producer.
- An SPDX content consumer/producer wishing to maintain consistent prefix use while round tripping from SPDX content received, deserialized, modified/extended in some way, and then reserialized in the same serialization form.
- In this case the prefix-namespace mappings utilized in the content are transformed from the original native namespace/prefix into the in memory NamespaceMap then transformed from the NamespaceMap back into the resultant serialization native namespace / prefix format.
Metadata
https://spdx.org/rdf/3.0/terms/Core/NamespaceMap
Name | NamespaceMap |
Instantiability | Concrete |
Class hierarchy
/Core/NamespaceMap
Properties
Property | Type | minCount | maxCount |
|---|---|---|---|
namespace | xsd:anyURI | 1 | 1 |
Prefix | xsd:string | 1 | 1 |
All properties
Property | Type | minCount | maxCount |
|---|---|---|---|
namespace | xsd:anyURI | 1 | 1 |
prefix | xsd:string | 1 | 1 |
7.2.18 Organization
Summary
A group of people who work together in an organized way for a shared purpose.
Description
An Organization is a group of people who work together in an organized way for a shared purpose.
Metadata
https://spdx.org/rdf/3.0/terms/Core/Organization
Name | Organization |
Instantiability | Concrete |
SubclassOf | Agent |
Class hierarchy
/Core/Element
/Core/Agent
/Core/Organization
All properties
Property | Type | minCount | maxCount |
|---|---|---|---|
comment | xsd:string | 0 | 1 |
creationInfo | CreationInfo | 1 | 1 |
description | xsd:string | 0 | 1 |
extension | Extension | 0 | * |
externalIdentifier | ExternalIdentifier | 0 | * |
externalRef | ExternalRef | 0 | * |
name | xsd:string | 0 | 1 |
spdxId | xsd:anyURI | 1 | 1 |
summary | xsd:string | 0 | 1 |
verifiedUsing | IntegrityMethod | 0 | * |
7.2.19 PackageVerificationCode
Summary
An SPDX version 2.X compatible verification method for software packages.
Description
This verification method is provided for compatibility with SPDX 2.X.
Use of this verification code method is discouraged except for scenarios where the contentIdentifier property on Artifact cannot be used.
This verification method provides an independently reproducible mechanism identifying specific contents of a package based on the actual files (except the SPDX document itself, if it is included in the package) that make up each package and that correlates to the data in this SPDX document.
This identifier enables a recipient to determine if any file in the original package (that the analysis was done on) has been changed and permits inclusion of an SPDX document as part of a package.
Algorithm:
templist = ""
for all files in the package {
if file is a packageVerificationCodeExcludedFile
skip it /* exclude SPDX analysis file */
else
append "algorithm(file)/n" to templist
}
sort templist in ascending order by value
/* remove separators from ordered sequence */
valueslist = remove "/n"s from templist
if valueslist is empty
hashValue = 0
else
hashValue = algorithm(valueslist)
where algorithm(string) applies a hash algorithm on a string and returns the result in lowercase hexadecimal digits.
Required sort order: ‘0’, ‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ‘6’, ‘7’, ‘8’, ‘9’, ‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘f’ (ASCII order)
Metadata
https://spdx.org/rdf/3.0/terms/Core/PackageVerificationCode
Name | PackageVerificationCode |
Instantiability | Concrete |
SubclassOf | /Core/IntegrityMethod |
Class hierarchy
/Core/IntegrityMethod
/Core/PackageVerificationCode
Properties
Property | Type | minCount | maxCount |
|---|---|---|---|
algorithm | HashAlgorithm | 1 | 1 |
hashValue | xsd:string | 1 | 1 |
packageVerificationCodeExcludedFile | xsd:string | 0 | * |
All properties
Property | Type | minCount | maxCount |
|---|---|---|---|
Algorithm | HashAlgorithm | 1 | 1 |
Comment | xsd:string | 0 | 1 |
hashValue | xsd:string | 1 | 1 |
packageVerificationCodeExcludedFile | xsd:string | 0 | * |
7.2.20 Person
Summary
An individual human being.
Description
A Person is an individual human being.
Metadata
https://spdx.org/rdf/3.0/terms/Core/Person
Name | Person |
Instantiability | Concrete |
SubclassOf | Agent |
Class hierarchy
/Core/Element
/Core/Agent
/Core/Person
All properties
Property | Type | minCount | maxCount |
|---|---|---|---|
comment | xsd:string | 0 | 1 |
creationInfo | CreationInfo | 1 | 1 |
description | xsd:string | 0 | 1 |
extension | Extension | 0 | * |
externalIdentifier | ExternalIdentifier | 0 | * |
externalRef | ExternalRef | 0 | * |
name | xsd:string | 0 | 1 |
spdxId | xsd:anyURI | 1 | 1 |
summary | xsd:string | 0 | 1 |
verifiedUsing | IntegrityMethod | 0 | * |
7.2.21 PositiveIntegerRange
Summary
A tuple of two positive integers that define a range.
Description
PositiveIntegerRange is a tuple of two positive integers that define a range. “beginIntegerRange” shall be less than or equal to “endIntegerRange”.
Metadata
https://spdx.org/rdf/3.0/terms/Core/PositiveIntegerRange
Name | PositiveIntegerRange |
Instantiability | Concrete |
Class hierarchy
/Core/PositiveIntegerRange
Properties
Property | Type | minCount | maxCount |
|---|---|---|---|
beginIntegerRange | xsd:positiveInteger | 1 | 1 |
endIntegerRange | xsd:positiveInteger | 1 | 1 |
All properties
Property | Type | minCount | maxCount |
|---|---|---|---|
beginIntegerRange | xsd:positiveInteger | 1 | 1 |
endIntegerRange | xsd:positiveInteger | 1 | 1 |
7.2.22 Relationship
Summary
Describes a relationship between one or more elements.
Description
A Relationship is a grouping of characteristics unique to an assertion that one Element is related to one or more other Elements in some way.
To explicitly assert that no such relationships exist, the to property shall contain the NoneElement individual and no other elements.
A relationship that contains NoneElement and additional elements in the to property is not valid.
To explicitly assert that no assertions are being made regarding the existence of such relationships, the to property shall contain the NoAssertionElement individual.
Metadata
https://spdx.org/rdf/3.0/terms/Core/Relationship
Name | Relationship |
Instantiability | Concrete |
SubclassOf | Element |
Class hierarchy
/Core/Element
/Core/Relationship
Properties
Property | Type | minCount | maxCount |
|---|---|---|---|
completeness | RelationshipCompleteness | 0 | 1 |
endTime | DateTime | 0 | 1 |
from | Element | 1 | 1 |
relationshipType | RelationshipType | 1 | 1 |
startTime | DateTime | 0 | 1 |
to | Element | 1 | * |
All properties
Property | Type | minCount | maxCount |
|---|---|---|---|
comment | xsd:string | 0 | 1 |
completeness | RelationshipCompleteness | 0 | 1 |
creationInfo | CreationInfo | 1 | 1 |
description | xsd:string | 0 | 1 |
endTime | DateTime | 0 | 1 |
extension | Extension | 0 | * |
externalIdentifier | ExternalIdentifier | 0 | * |
externalRef | ExternalRef | 0 | * |
from | Element | 1 | 1 |
name | xsd:string | 0 | 1 |
relationshipType | RelationshipType | 1 | 1 |
spdxId | xsd:anyURI | 1 | 1 |
startTime | DateTime | 0 | 1 |
summary | xsd:string | 0 | 1 |
to | Element | 1 | * |
verifiedUsing | IntegrityMethod | 0 | * |
7.2.23 SoftwareAgent
Summary
A software agent.
Description
A SoftwareAgent is a software program that is given the authority (similar to a user’s authority) to act on a system.
Metadata
https://spdx.org/rdf/3.0/terms/Core/SoftwareAgent
Name | SoftwareAgent |
Instantiability | Concrete |
SubclassOf | Agent |
Class hierarchy
/Core/Element
/Core/Agent
/Core/SoftwareAgent
All properties
Property | Type | minCount | maxCount |
|---|---|---|---|
comment | xsd:string | 0 | 1 |
creationInfo | CreationInfo | 1 | 1 |
description | xsd:string | 0 | 1 |
extension | Extension | 0 | * |
externalIdentifier | ExternalIdentifier | 0 | * |
externalRef | ExternalRef | 0 | * |
name | xsd:string | 0 | 1 |
spdxId | xsd:anyURI | 1 | 1 |
summary | xsd:string | 0 | 1 |
verifiedUsing | IntegrityMethod | 0 | * |
7.2.24 SpdxDocument
Summary
A collection of SPDX Elements that could potentially be serialized.
Description
The SpdxDocument provides a convenient way to express information about collections of SPDX Elements that could potentially be serialized as complete units (e.g., all in-scope SPDX data within a single JSON-LD file).
SpdxDocument is independent of any particular serialization format or instance.
Information we wish to preserve about a specific instance of serialization of this SPDX content is NOT expressed using the SpdxDocument but rather using an associated Artifact representing a particular instance of SPDX data physical serialization.
Any instance of serialization of SPDX data shall not contain more than one SpdxDocument element definition.
Metadata
https://spdx.org/rdf/3.0/terms/Core/SpdxDocument
Name | SpdxDocument |
Instantiability | Concrete |
SubclassOf | ElementCollection |
Class hierarchy
/Core/Element
/Core/ElementCollection
/Core/SpdxDocument
Properties
Property | Type | minCount | maxCount |
|---|---|---|---|
dataLicense | /SimpleLicensing/AnyLicenseInfo | 0 | 1 |
Import | ExternalMap | 0 | * |
namespaceMap | NamespaceMap | 0 | * |
All properties
Property | Type | minCount | maxCount |
|---|---|---|---|
comment | xsd:string | 0 | 1 |
creationInfo | CreationInfo | 1 | 1 |
dataLicense | AnyLicenseInfo | 0 | 1 |
description | xsd:string | 0 | 1 |
element | Element | 0 | * |
extension | Extension | 0 | * |
externalIdentifier | ExternalIdentifier | 0 | * |
externalRef | ExternalRef | 0 | * |
import | ExternalMap | 0 | * |
name | xsd:string | 0 | 1 |
namespaceMap | NamespaceMap | 0 | * |
profileConformance | ProfileIdentifierType | 0 | * |
rootElement | Element | 0 | * |
spdxId | xsd:anyURI | 1 | 1 |
summary | xsd:string | 0 | 1 |
verifiedUsing | IntegrityMethod | 0 | * |
7.2.25 Tool
Summary
An element of hardware and/or software utilized to carry out a particular function.
Description
A Tool is an element of hardware and/or software utilized to carry out a particular function.
Metadata
https://spdx.org/rdf/3.0/terms/Core/Tool
Name | Tool |
Instantiability | Concrete |
SubclassOf | Element |
Class hierarchy
/Core/Element
/Core/Tool
All properties
Property | Type | minCount | maxCount |
|---|---|---|---|
comment | xsd:string | 0 | 1 |
creationInfo | CreationInfo | 1 | 1 |
description | xsd:string | 0 | 1 |
extension | Extension | 0 | * |
externalIdentifier | ExternalIdentifier | 0 | * |
externalRef | ExternalRef | 0 | * |
name | xsd:string | 0 | 1 |
spdxId | xsd:anyURI | 1 | 1 |
summary | xsd:string | 0 | 1 |
verifiedUsing | IntegrityMethod | 0 | * |
7.3 Properties
7.3.1 algorithm
Summary
Specifies the algorithm used for calculating the hash value.
Description
The algorithm used for calculating the hash value.
Metadata
https://spdx.org/rdf/3.0/terms/Core/algorithm
Name | algorithm |
Nature | ObjectProperty |
Range | HashAlgorithm |
Referenced
- /Core/Hash
- /Core/PackageVerificationCode
7.3.2 annotationType
Summary
Describes the type of annotation.
Description
An annotationType describes the type of an annotation.
Metadata
https://spdx.org/rdf/3.0/terms/Core/annotationType
Name | annotationType |
Nature | ObjectProperty |
Range | AnnotationType |
Referenced
- /Core/Annotation
7.3.3 beginIntegerRange
Summary
Defines the beginning of a range.
Description
beginIntegerRange is a positive integer that defines the beginning of a range.
Metadata
https://spdx.org/rdf/3.0/terms/Core/beginIntegerRange
Name | beginIntegerRange |
Nature | DataProperty |
Range | xsd:positiveInteger |
Referenced
- /Core/PositiveIntegerRange
7.3.4 builtTime
Summary
Specifies the time an artifact was built.
Description
A builtTime specifies the time an artifact was built.
Metadata
https://spdx.org/rdf/3.0/terms/Core/builtTime
Name | builtTime |
Nature | DataProperty |
Range | DateTime |
Referenced
- /Core/Artifact
7.3.5 comment
Summary
Provide consumers with comments by the creator of the Element about the Element.
Description
A comment is an optional field for creators of the Element to provide comments to the readers/reviewers of the document.
Metadata
https://spdx.org/rdf/3.0/terms/Core/comment
Name | comment |
Nature | DataProperty |
Range | xsd:string |
Referenced
- /Core/CreationInfo
- /Core/Element
- /Core/ExternalIdentifier
- /Core/ExternalRef
- /Core/IntegrityMethod
7.3.6 completeness
Summary
Provides information about the completeness of relationships.
Description
Completeness gives information about whether the provided relationships are complete, known to be incomplete or if no assertion is made either way.
Metadata
https://spdx.org/rdf/3.0/terms/Core/completeness
Name | completeness |
Nature | ObjectProperty |
Range | RelationshipCompleteness |
Referenced
- /Core/Relationship
7.3.7 contentType
Summary
Provides information about the content type of an Element or a property.
Description
This field is a reasonable estimation of the content type of the Element or the property, from a creator perspective.
Content type is intrinsic to the Element or the property, independent of how it is being used.
Metadata
https://spdx.org/rdf/3.0/terms/Core/contentType
Name | contentType |
Nature | DataProperty |
Range | MediaType |
Referenced
- /Core/Annotation
- /Core/ExternalRef
- /Software/File
7.3.8 context
Summary
Gives information about the circumstances or unifying properties that Elements of the bundle have been assembled under.
Description
A context gives information about the circumstances or unifying properties that Elements of the bundle have been assembled under.
Metadata
https://spdx.org/rdf/3.0/terms/Core/context
Name | context |
Nature | DataProperty |
Range | xsd:string |
Referenced
- /Core/Bundle
7.3.9 created
Summary
Identifies when the Element was originally created.
Description
Created is a date that identifies when the Element was originally created.
The time stamp can serve as an indication as to whether the analysis needs to be updated.
This is often the date of last change (e.g., a git commit date), not the date when the SPDX data was created, as doing so supports reproducible builds.
Metadata
https://spdx.org/rdf/3.0/terms/Core/created
Name | created |
Nature | DataProperty |
Range | DateTime |
Referenced
- /Core/CreationInfo
7.3.10 createdBy
Summary
Identifies who or what created the Element.
Description
CreatedBy identifies who or what created the Element.
The generation method will assist the recipient of the Element in assessing the general reliability/accuracy of the analysis information.
Metadata
https://spdx.org/rdf/3.0/terms/Core/createdBy
Name | createdBy |
Nature | ObjectProperty |
Range | Agent |
Referenced
- /Core/CreationInfo
7.3.11 createdUsing
Summary
Identifies the tooling that was used during the creation of the Element.
Description
CreatedUsing identifies the tooling that was used during the creation of the Element.
The generation method will assist the recipient of the Element in assessing the general reliability/accuracy of the analysis information.
Metadata
https://spdx.org/rdf/3.0/terms/Core/createdUsing
Name | createdUsing |
Nature | ObjectProperty |
Range | Tool |
Referenced
- /Core/CreationInfo
7.3.12 creationInfo
Summary
Provides information about the creation of the Element.
Description
CreationInfo provides information about the creation of the Element.
Metadata
https://spdx.org/rdf/3.0/terms/Core/creationInfo
Name | creationInfo |
Nature | ObjectProperty |
Range | CreationInfo |
Referenced
- /Core/Element
7.3.13 dataLicense
Summary
Provides the license under which the SPDX documentation of the Element can be used.
Description
The data license provides the license under which the SPDX documentation of the Element can be used.
This is to alleviate any concern that content (the data or database) in an SPDX file is subject to any form of intellectual property right that could restrict the re-use of the information or the creation of another SPDX file for the same project(s).
This approach avoids intellectual property and related restrictions over the SPDX file; however, individuals can still contract with each other to restrict release of specific collections of SPDX files (which map to software bill of materials) and the identification of the supplier of SPDX files.
Compliance with this document includes populating the SPDX fields therein with data related to such fields (“SPDX-Metadata”).
This document contains numerous fields where an SPDX file creator may provide relevant explanatory text in SPDX-Metadata. Without opining on the lawfulness of “database rights” (in jurisdictions where applicable), such explanatory text is copyrightable subject matter in most Berne Convention countries.
By using the SPDX specification, or any portion hereof, you hereby agree that any copyright rights (as determined by your jurisdiction) in any SPDX-Metadata, including without limitation explanatory text, shall be subject to the terms of the Creative Commons CC0 1.0 Universal license.
For SPDX-Metadata not containing any copyright rights, you hereby agree and acknowledge that the SPDX-Metadata is provided to you “as-is” and without any representations or warranties of any kind concerning the SPDX-Metadata, express, implied, statutory or otherwise, including without limitation warranties of title, merchantability, fitness for a particular purpose, non-infringement, or the absence of latent or other defects, accuracy, or the presence or absence of errors, whether or not discoverable, all to the greatest extent permissible under applicable law.
Metadata
https://spdx.org/rdf/3.0/terms/Core/dataLicense
Name | dataLicense |
Nature | ObjectProperty |
Range | /SimpleLicensing/AnyLicenseInfo |
Referenced
- /Core/SpdxDocument
7.3.14 definingArtifact
Summary
Artifact representing a serialization instance of SPDX data containing the definition of a particular Element.
Description
A definingArtifact property is used to link the Element identifier for an Element defined external to a given SpdxDocument to an Artifact Element representing the SPDX serialization instance which contains the definition for the Element.
Metadata
https://spdx.org/rdf/3.0/terms/Core/definingArtifact
Name | definingArtifact |
Nature | ObjectProperty |
Range | Artifact |
Referenced
- /Core/ExternalMap
7.3.15 description
Summary
Provides a detailed description of the Element.
Description
This field is a detailed description of the Element. It may also be extracted from the Element itself.
The intent is to provide recipients of the SPDX file with a detailed technical explanation of the functionality, anticipated use, and anticipated implementation of the Element.
This field may also include a description of improvements over prior versions of the Element.
Metadata
https://spdx.org/rdf/3.0/terms/Core/description
Name | description |
Nature | DataProperty |
Range | xsd:string |
Referenced
- /Core/Element
7.3.16 element
Summary
Refers to one or more Elements that are part of an ElementCollection.
Description
This field refers to one or more Elements that are part of an ElementCollection.
Metadata
https://spdx.org/rdf/3.0/terms/Core/element
Name | element |
Nature | ObjectProperty |
Range | Element |
Referenced
- /Core/ElementCollection
7.3.17 endIntegerRange
Summary
Defines the end of a range.
Description
endIntegerRange is a positive integer that defines the end of a range.
Metadata
https://spdx.org/rdf/3.0/terms/Core/endIntegerRange
Name | endIntegerRange |
Nature | DataProperty |
Range | xsd:positiveInteger |
Referenced
- /Core/PositiveIntegerRange
7.3.18 endTime
Summary
Specifies the time from which an element is no longer applicable / valid.
Description
An endTime specifies the time from which element is no longer applicable / valid.
Metadata
https://spdx.org/rdf/3.0/terms/Core/endTime
Name | endTime |
Nature | DataProperty |
Range | DateTime |
Referenced
- /Core/Relationship
7.3.19 extension
Summary
Specifies an Extension characterization of some aspect of an Element.
Description
extension specifies an Extension-based characterization of a particular aspect of an Element.
Metadata
https://spdx.org/rdf/3.0/terms/Core/extension
Name | extension |
Nature | ObjectProperty |
Range | /Extension/Extension |
Referenced
- /Core/Element
7.3.20 externalIdentifier
Summary
Provides a reference to a resource outside the scope of SPDX 3.0 content that uniquely identifies an Element.
Description
ExternalIdentifier points to a resource outside the scope of SPDX 3.0 content that uniquely identifies an Element.
Metadata
https://spdx.org/rdf/3.0/terms/Core/externalIdentifier
Name | externalIdentifier |
Nature | ObjectProperty |
Range | ExternalIdentifier |
Referenced
- /Core/Element
7.3.21 externalIdentifierType
Summary
Specifies the type of the external identifier.
Description
An externalIdentifierType specifies the type of the external identifier.
Metadata
https://spdx.org/rdf/3.0/terms/Core/externalIdentifierType
Name | externalIdentifierType |
Nature | ObjectProperty |
Range | ExternalIdentifierType |
Referenced
- /Core/ExternalIdentifier
7.3.22 externalRef
Summary
Points to a resource outside the scope of the SPDX 3.0 content that provides additional characteristics of an Element.
Description
This field points to a resource outside the scope of the SPDX 3.0 content that provides additional characteristics of an Element.
Metadata
https://spdx.org/rdf/3.0/terms/Core/externalRef
Name | externalRef |
Nature | ObjectProperty |
Range | ExternalRef |
Referenced
- /Core/Element
7.3.23 externalRefType
Summary
Specifies the type of the external reference.
Description
An externalRefType specifies the type of the external reference.
Metadata
https://spdx.org/rdf/3.0/terms/Core/externalRefType
Name | externalRefType |
Nature | ObjectProperty |
Range | ExternalRefType |
Referenced
- /Core/ExternalRef
7.3.24 externalSpdxId
Summary
Identifies an external Element used within an SpdxDocument but defined external to that SpdxDocument.
Description
An externalSpdxId identifies an external Element used within an SpdxDocument but defined external to that SpdxDocument.
Metadata
https://spdx.org/rdf/3.0/terms/Core/externalSpdxId
Name | externalSpdxId |
Nature | DataProperty |
Range | xsd:anyURI |
Referenced
- /Core/ExternalMap
7.3.25 from
Summary
References the Element on the left-hand side of a relationship.
Description
This field references the Element on the left-hand side of a relationship.
Metadata
https://spdx.org/rdf/3.0/terms/Core/from
Name | from |
Nature | ObjectProperty |
Range | Element |
Referenced
- /Core/Relationship
7.3.26 hashValue
Summary
The result of applying a hash algorithm to an Element.
Description
A hashValue is the result of applying a hash algorithm to an Element.
Metadata
https://spdx.org/rdf/3.0/terms/Core/hashValue
Name | hashValue |
Nature | DataProperty |
Range | xsd:string |
Referenced
- /Core/Hash
- /Core/PackageVerificationCode
7.3.27 identifier
Summary
Uniquely identifies an external element.
Description
An identifier uniquely identifies an external element.
Metadata
https://spdx.org/rdf/3.0/terms/Core/identifier
Name | identifier |
Nature | DataProperty |
Range | xsd:string |
Referenced
- /Core/ExternalIdentifier
7.3.28 identifierLocator
Summary
Provides the location for more information regarding an external identifier.
Description
Identifiers are not always structured as URIs. An identifierLocator is a location hint (a URL) that provides contextual information relevant to the identifier.
Metadata
https://spdx.org/rdf/3.0/terms/Core/identifierLocator
Name | identifierLocator |
Nature | DataProperty |
Range | xsd:anyURI |
Referenced
- /Core/ExternalIdentifier
7.3.29 import
Summary
Provides an ExternalMap of Element identifiers.
Description
An import provides an ExternalMap of an Element identifier that is used within a document but defined external to that document.
Metadata
https://spdx.org/rdf/3.0/terms/Core/import
Name | import |
Nature | ObjectProperty |
Range | ExternalMap |
Referenced
- /Core/SpdxDocument
7.3.30 issuingAuthority
Summary
An entity that is authorized to issue identification credentials.
Description
An issuingAuthority is an entity that is authorized to issue identification credentials.
The entity may be a government, non-profit, educational institution, or commercial enterprise.
The string provides a unique identifier for the issuing authority.
Metadata
https://spdx.org/rdf/3.0/terms/Core/issuingAuthority
Name | issuingAuthority |
Nature | DataProperty |
Range | xsd:string |
Referenced
- /Core/ExternalIdentifier
7.3.31 key
Summary
A key used in a generic key-value pair.
Description
A key used in generic a key-value pair.
A key-value pair can be used to implement a dictionary which associates a key with a value.
Metadata
https://spdx.org/rdf/3.0/terms/Core/key
Name | key |
Nature | DataProperty |
Range | xsd:string |
Referenced
- /Core/DictionaryEntry
7.3.32 locationHint
Summary
Provides an indication of where to retrieve an external Element.
Description
A locationHint provides an indication of where to retrieve an external Element.
Metadata
https://spdx.org/rdf/3.0/terms/Core/locationHint
Name | locationHint |
Nature | DataProperty |
Range | xsd:anyURI |
Referenced
- /Core/ExternalMap
7.3.33 locator
Summary
Provides the location of an external reference.
Description
A locator provides the location of an external reference.
Metadata
https://spdx.org/rdf/3.0/terms/Core/locator
Name | locator |
Nature | DataProperty |
Range | xsd:string |
Referenced
- /Core/ExternalRef
7.3.34 name
Summary
Identifies the name of an Element as designated by the creator.
Description
This field identifies the name of an Element as designated by the creator.
The name of an Element is an important convention and easier to refer to than the URI.
Metadata
https://spdx.org/rdf/3.0/terms/Core/name
Name | name |
Nature | DataProperty |
Range | xsd:string |
Referenced
- /Core/Element
7.3.35 namespace
Summary
Provides an unambiguous mechanism for conveying a URI fragment portion of an Element ID.
Description
A namespace provides an unambiguous mechanism for conveying a URI fragment portion of an Element ID.
Metadata
https://spdx.org/rdf/3.0/terms/Core/namespace
Name | namespace |
Nature | DataProperty |
Range | xsd:anyURI |
Referenced
- /Core/NamespaceMap
7.3.36 namespaceMap
Summary
Provides a NamespaceMap of prefixes and associated namespace partial URIs applicable to an SpdxDocument and independent of any specific serialization format or instance.
Description
This field provides a NamespaceMap of prefixes and associated namespace partial URIs applicable to an SpdxDocument and independent of any specific serialization format or instance.
Metadata
https://spdx.org/rdf/3.0/terms/Core/namespaceMap
Name | namespaceMap |
Nature | ObjectProperty |
Range | NamespaceMap |
Referenced
- /Core/SpdxDocument
7.3.37 originatedBy
Summary
Identifies from where or whom the Element originally came.
Description
An originatedBy identifies from where or whom the Element originally came.
Metadata
https://spdx.org/rdf/3.0/terms/Core/originatedBy
Name | originatedBy |
Nature | ObjectProperty |
Range | Agent |
Referenced
- /Core/Artifact
7.3.38 packageVerificationCodeExcludedFile
Summary
The relative file name of a file to be excluded from the PackageVerificationCode.
Description
A relative filename with the root of the package archive or directory referencing a file to be excluded from the PackageVerificationCode.
Every filename is preceded with a ./.
Metadata
https://spdx.org/rdf/3.0/terms/Core/packageVerificationCodeExcludedFile
Name | packageVerificationCodeExcludedFile |
Nature | DataProperty |
Range | xsd:string |
Referenced
- /Core/PackageVerificationCode
7.3.39 prefix
Summary
A substitute for a URI.
Description
A prefix is a substitute for a URI.
Metadata
https://spdx.org/rdf/3.0/terms/Core/prefix
Name | prefix |
Nature | DataProperty |
Range | xsd:string |
Referenced
- /Core/NamespaceMap
7.3.40 profileConformance
Summary
Describes one a profile which the creator of this ElementCollection intends to conform to.
Description
Describes a profile to which the creator of this ElementCollection intends to conform.
The profileConformance will apply to all Elements contained within the collection as well as the collection itself.
Conformance to a profile is defined by the additional restrictions documented in the profile specific documentation and schema files.
Use of this property allows the creator of an ElementCollection to communicate to consumers their intent to adhere to the profile additional restrictions.
The profileConformance has a default value of “core” if no other profileConformance is specified since all ElementCollections and Element shall adhere to the Core profile.
Metadata
https://spdx.org/rdf/3.0/terms/Core/profileConformance
Name | profileConformance |
Nature | ObjectProperty |
Range | ProfileIdentifierType |
Referenced
- /Core/ElementCollection
7.3.41 relationshipType
Summary
Information about the relationship between two Elements.
Description
This field provides information about the relationship between two Elements.
For example, you can represent a relationship between two different Files, between a Package and a File, between two Packages, or between one SpdxDocument and another SpdxDocument.
Metadata
https://spdx.org/rdf/3.0/terms/Core/relationshipType
Name | relationshipType |
Nature | ObjectProperty |
Range | RelationshipType |
Referenced
- /Core/Relationship
7.3.42 releaseTime
Summary
Specifies the time an artifact was released.
Description
A releaseTime specifies the time an artifact was released.
Metadata
https://spdx.org/rdf/3.0/terms/Core/releaseTime
Name | releaseTime |
Nature | DataProperty |
Range | DateTime |
Referenced
- /Core/Artifact
7.3.43 rootElement
Summary
This property is used to denote the root Element(s) of a tree of elements contained in a BOM.
Description
This property is used to denote the root Element(s) of a tree of elements contained in a BOM. The tree consists of other elements directly and indirectly related through properties or Relationships from the root.
Metadata
https://spdx.org/rdf/3.0/terms/Core/rootElement
Name | rootElement |
Nature | ObjectProperty |
Range | Element |
Referenced
- /Core/ElementCollection
7.3.44 scope
Summary
Capture the scope of information about a specific relationship between elements.
Description
A scope is additional context about a relationship, that clarifies the relationship between elements.
Metadata
https://spdx.org/rdf/3.0/terms/Core/scope
Name | scope |
Nature | ObjectProperty |
Range | LifecycleScopeType |
Referenced
- /Core/LifecycleScopedRelationship
7.3.45 spdxId
Summary
Identifies an Element to be referenced by other Elements.
Description
An spdxId uniquely identifies an Element which may thereby be referenced by other Elements. These references may be internal or external. While there may be several versions of the same Element, each one needs to be able to be referred to uniquely so that relationships between Elements can be clearly articulated.
Metadata
https://spdx.org/rdf/3.0/terms/Core/spdxId
Name | spdxId |
Nature | DataProperty |
Range | xsd:anyURI |
Referenced
- /Core/Element
7.3.46 specVersion
Summary
Provides a reference number that can be used to understand how to parse and interpret an Element.
Description
The specVersion provides a reference number that can be used to understand how to parse and interpret an Element. It will enable both future changes to the specification and to support backward compatibility.
The major version number shall be incremented when incompatible changes between versions are made (one or more sections are created, modified or deleted). The minor version number shall be incremented when backwards compatible changes are made. The patch version number shall be incremented when backward compatible bug fixes are made.
Here, parties exchanging information in accordance with the SPDX specification need to provide 100% transparency as to which SPDX specification version such information is conforming to.
Metadata
https://spdx.org/rdf/3.0/terms/Core/specVersion
Name | specVersion |
Nature | DataProperty |
Range | SemVer |
Referenced
- /Core/CreationInfo
7.3.47 standardName
Summary
The name of a relevant standard that may apply to an artifact.
Description
Various standards may be relevant or useful to capture for specific artifacts.
Metadata
https://spdx.org/rdf/3.0/terms/Core/standardName
Name | standardName |
Nature | DataProperty |
Range | xsd:string |
Referenced
- /Core/Artifact
7.3.48 startTime
Summary
Specifies the time from which an element is applicable / valid.
Description
A startTime specifies the time from which an element is applicable / valid.
Metadata
https://spdx.org/rdf/3.0/terms/Core/startTime
Name | startTime |
Nature | DataProperty |
Range | DateTime |
Referenced
- /Core/Relationship
7.3.49 statement
Summary
Commentary on an assertion that an annotator has made.
Description
A statement is a commentary on an assertion that an annotator has made.
Metadata
https://spdx.org/rdf/3.0/terms/Core/statement
Name | statement |
Nature | DataProperty |
Range | xsd:string |
Referenced
- /Core/Annotation
7.3.50 subject
Summary
An Element an annotator has made an assertion about.
Description
A subject is an Element an annotator has made an assertion about.
Metadata
https://spdx.org/rdf/3.0/terms/Core/subject
Name | subject |
Nature | ObjectProperty |
Range | Element |
Referenced
- /Core/Annotation
7.3.51 summary
Summary
A short description of an Element.
Description
A summary is a short description of an Element. Here, the intent is to allow the Element creator to provide concise information about the function or use of the Element.
Metadata
https://spdx.org/rdf/3.0/terms/Core/summary
Name | summary |
Nature | DataProperty |
Range | xsd:string |
Referenced
- /Core/Element
7.3.52 suppliedBy
Summary
Identifies who or what supplied the artifact or VulnAssessmentRelationship referenced by the Element.
Description
Identify the actual distribution source for the artifact (e.g., snippet, file, package, vulnerability) or VulnAssessmentRelationship being referenced.
This may or may not be different from the originating distribution source for the artifact (e.g., snippet, file, package, vulnerability) or VulnAssessmentRelationship.
Metadata
https://spdx.org/rdf/3.0/terms/Core/suppliedBy
Name | suppliedBy |
Nature | ObjectProperty |
Range | Agent |
Referenced
- /Core/Artifact
- /Security/VulnAssessmentRelationship
7.3.53 supportLevel
Summary
Specifies the level of support associated with an artifact.
Description
supportLevel provides an indication of what support expectations that the supplier of an artifact is providing to the user.
Metadata
https://spdx.org/rdf/3.0/terms/Core/supportLevel
Name | supportLevel |
Nature | ObjectProperty |
Range | SupportType |
Referenced
- /Core/Artifact
7.3.54 to
Summary
References an Element on the right-hand side of a relationship.
Description
This field references an Element on the right-hand side of a relationship.
If it is not provided, it indicates that there are no known relationships of the given type.
Metadata
https://spdx.org/rdf/3.0/terms/Core/to
Name | to |
Nature | ObjectProperty |
Range | Element |
Referenced
- /Core/Relationship
7.3.55 validUntilTime
Summary
Specifies until when the artifact can be used before its usage needs to be reassessed.
Description
A validUntilTime specifies until when the artifact can be used before its usage needs to be reassessed.
Metadata
https://spdx.org/rdf/3.0/terms/Core/validUntilTime
Name | validUntilTime |
Nature | DataProperty |
Range | DateTime |
Referenced
- /Core/Artifact
7.3.56 value
Summary
A value used in a generic key-value pair.
Description
A value used in a generic key-value pair.
A key-value pair can be used to implement a dictionary which associates a key with a value.
Metadata
https://spdx.org/rdf/3.0/terms/Core/value
Name | value |
Nature | DataProperty |
Range | xsd:string |
Referenced
- /Core/DictionaryEntry
7.3.57 verifiedUsing
Summary
Provides an IntegrityMethod with which the integrity of an Element can be asserted.
Description
A verifiedUsing provides an IntegrityMethod with which the integrity of an Element can be asserted.
Please note that different profiles may also provide additional methods for verifying the integrity of specific subclasses of Elements.
Metadata
https://spdx.org/rdf/3.0/terms/Core/verifiedUsing
Name | verifiedUsing |
Nature | ObjectProperty |
Range | IntegrityMethod |
Referenced
- /Core/Element
- /Core/ExternalMap
7.4 Vocabularies
7.4.1 AnnotationType
Summary
Specifies the type of an annotation.
Description
AnnotationType specifies the type of an annotation.
Metadata
https://spdx.org/rdf/3.0/terms/Core/AnnotationType
Name | AnnotationType |
Entries
- other: Used to store extra information about an Element which is not part of a review (e.g. extra information provided during the creation of the Element).
- review: Used when someone reviews the Element.
7.4.2 ExternalIdentifierType
Summary
Specifies the type of an external identifier.
Description
ExternalIdentifierType specifies the type of an external identifier.
Metadata
https://spdx.org/rdf/3.0/terms/Core/ExternalIdentifierType
Name | ExternalIdentifierType |
Entries
- cpe22: Common Platform Enumeration Specification 2.2
- cpe23: Common Platform Enumeration: Naming Specification Version 2.3
- cve: Common Vulnerabilities and Exposures identifiers, an identifier for a specific software flaw defined within the official CVE Dictionary and that conforms to the CVE specification.
- email: Email address, as defined in RFC 3696 Section 3.
- gitoid: Gitoid, stands for Git Object ID. A gitoid of type blob is a unique hash of a binary artifact. A gitoid may represent either an Artifact Identifier for the software artifact or an Input Manifest Identifier for the software artifact’s associated Artifact Input Manifest; this ambiguity exists because the Artifact Input Manifest is itself an artifact, and the gitoid of that artifact is its valid identifier. Gitoids calculated on software artifacts (Snippet, File, or Package Elements) should be recorded in the SPDX 3.0 SoftwareArtifact’s contentIdentifier property. Gitoids calculated on the Artifact Input Manifest (Input Manifest Identifier) should be recorded in the SPDX 3.0 Element’s externalIdentifier property. See OmniBOR Specification, a minimalistic specification for describing software Artifact Dependency Graphs.
- other: Used when the type does not match any of the other options.
- packageUrl: Package URL, as defined in Annex E.
- securityOther: Used when there is a security related identifier of unspecified type.
- swhid: SoftWare Hash IDentifier, a persistent intrinsic identifier for digital artifacts, such as files, trees (also known as directories or folders), commits, and other objects typically found in version control systems. The format of the identifiers is defined in the SWHID specification (ISO/IEC DIS 18670). They typically look like swh:1:cnt:94a9ed024d3859793618152ea559a168bbcbb5e2.
- swid: Concise Software Identification (CoSWID) tag, as defined in RFC 9393 Section 2.3.
- urlScheme: Uniform Resource Identifier (URI) Schemes. The scheme used in order to locate a resource.
7.4.3 ExternalRefType
Summary
Specifies the type of an external reference.
Description
ExternalRefType specifies the type of an external reference.
Metadata
https://spdx.org/rdf/3.0/terms/Core/ExternalRefType
Name | ExternalRefType |
Entries
- altDownloadLocation: A reference to an alternative download location.
- altWebPage: A reference to an alternative web page.
- binaryArtifact: A reference to binary artifacts related to a package.
- bower: A reference to a Bower package. The package locator format, looks like package#version, is defined in the “install” section of Bower API documentation.
- buildMeta: A reference build metadata related to a published package.
- buildSystem: A reference build system used to create or publish the package.
- certificationReport: A reference to a certification report for a package from an accredited/independent body.
- chat: A reference to the instant messaging system used by the maintainer for a package.
- componentAnalysisReport: A reference to a Software Composition Analysis (SCA) report.
- cwe: Common Weakness Enumeration. A reference to a source of software flaw defined within the official CWE List that conforms to the CWE specification.
- documentation: A reference to the documentation for a package.
- dynamicAnalysisReport: A reference to a dynamic analysis report for a package.
- eolNotice: A reference to the End Of Sale (EOS) and/or End Of Life (EOL) information related to a package.
- exportControlAssessment: A reference to an export control assessment for a package.
- funding: A reference to funding information related to a package.
- issueTracker: A reference to the issue tracker for a package.
- license: A reference to additional license information related to an artifact.
- mailingList: A reference to the mailing list used by the maintainer for a package.
- mavenCentral: A reference to a Maven repository artifact. The artifact locator format is defined in the Maven documentation and looks like groupId:artifactId[:version].
- metrics: A reference to metrics related to package such as OpenSSF scorecards.
- npm: A reference to an npm package. The package locator format is defined in the npm documentation and looks like package@version.
- nuget: A reference to a NuGet package. The package locator format is defined in the NuGet documentation and looks like package/version.
- other: Used when the type does not match any of the other options.
- privacyAssessment: A reference to a privacy assessment for a package.
- productMetadata: A reference to additional product metadata such as reference within organization’s product catalog.
- purchaseOrder: A reference to a purchase order for a package.
- qualityAssessmentReport: A reference to a quality assessment for a package.
- releaseHistory: A reference to a published list of releases for a package.
- releaseNotes: A reference to the release notes for a package.
- riskAssessment: A reference to a risk assessment for a package.
- runtimeAnalysisReport: A reference to a runtime analysis report for a package.
- secureSoftwareAttestation: A reference to information assuring that the software is developed using security practices as defined by NIST SP 800-218 Secure Software Development Framework (SSDF) Version 1.1 or CISA Secure Software Development Attestation Form.
- securityAdversaryModel: A reference to the security adversary model for a package.
- securityAdvisory: A reference to a published security advisory (where advisory as defined per ISO 29147:2018) that may affect one or more elements, e.g., vendor advisories or specific NVD entries.
- securityFix: A reference to the patch or source code that fixes a vulnerability.
- securityOther: A reference to related security information of unspecified type.
- securityPenTestReport: A reference to a penetration test report for a package.
- securityPolicy: A reference to instructions for reporting newly discovered security vulnerabilities for a package.
- securityThreatModel: A reference the security threat model for a package.
- socialMedia: A reference to a social media channel for a package.
- sourceArtifact: A reference to an artifact containing the sources for a package.
- staticAnalysisReport: A reference to a static analysis report for a package.
- support: A reference to the software support channel or other support information for a package.
- vcs: A reference to a version control system related to a software artifact.
- vulnerabilityDisclosureReport: A reference to a Vulnerability Disclosure Report (VDR) which provides the software supplier’s analysis and findings describing the impact (or lack of impact) that reported vulnerabilities have on packages or products in the supplier’s SBOM as defined in NIST SP 800-161 Cybersecurity Supply Chain Risk Management Practices for Systems and Organizations.
- vulnerabilityExploitabilityAssessment: A reference to a Vulnerability Exploitability eXchange (VEX) statement which provides information on whether a product is impacted by a specific vulnerability in an included package and, if affected, whether there are actions recommended to remediate. See also NTIA VEX one-page summary.
7.4.4 HashAlgorithm
Summary
A mathematical algorithm that maps data of arbitrary size to a bit string.
Description
A HashAlgorithm is a mathematical algorithm that maps data of arbitrary size to a bit string (the hash) and is a one-way function, that is, a function which is practically infeasible to invert.
Metadata
https://spdx.org/rdf/3.0/terms/Core/HashAlgorithm
Name | HashAlgorithm |
Entries
- adler32: Adler-32 checksum is part of the widely used zlib compression library as defined in RFC 1950 Section 2.3.
- blake2b256: BLAKE2b algorithm with a digest size of 256, as defined in RFC 7693 Section 4.
- blake2b384: BLAKE2b algorithm with a digest size of 384, as defined in RFC 7693 Section 4.
- blake2b512: BLAKE2b algorithm with a digest size of 512, as defined in RFC 7693 Section 4.
- blake3: BLAKE3
- crystalsDilithium: Dilithium
- crystalsKyber: Kyber
- falcon: FALCON
- md2: MD2 message-digest algorithm, as defined in RFC 1319.
- md4: MD4 message-digest algorithm, as defined in RFC 1186.
- md5: MD5 message-digest algorithm, as defined in RFC 1321.
- md6: MD6 hash function
- other: any hashing algorithm that does not exist in this list of entries
- sha1: SHA-1, a secure hashing algorithm, as defined in RFC 3174.
- sha224: SHA-2 with a digest length of 224, as defined in RFC 3874.
- sha256: SHA-2 with a digest length of 256, as defined in RFC 6234.
- sha384: SHA-2 with a digest length of 384, as defined in RFC 6234.
- sha3_224: SHA-3 with a digest length of 224, as defined in FIPS 202.
- sha3_256: SHA-3 with a digest length of 256, as defined in FIPS 202.
- sha3_384: SHA-3 with a digest length of 384, as defined in FIPS 202.
- sha3_512: SHA-3 with a digest length of 512, as defined in FIPS 202.
- sha512: SHA-2 with a digest length of 512, as defined in RFC 6234.
7.4.5 LifecycleScopeType
Summary
Provide an enumerated set of lifecycle phases that can provide context to relationships.
Description
This enumeration summarizes common phases when dependency and other relationships, have different implications, based on their context. For example, a build dependency, may have different implications than an operational dependency.
Metadata
https://spdx.org/rdf/3.0/terms/Core/LifecycleScopeType
Name | LifecycleScopeType |
Entries
- build: A relationship has specific context implications during an element’s build phase, during development.
- design: A relationship has specific context implications during an element’s design.
- development: A relationship has specific context implications during development phase of an element.
- other: A relationship has other specific context information necessary to capture that the above set of enumerations does not handle.
- runtime: A relationship has specific context implications during the execution phase of an element.
- test: A relationship has specific context implications during an element’s testing phase, during development.
7.4.6 PresenceType
Summary
Categories of presence or absence.
Description
This type is used to indicate if a given field is present or absent or unknown.
Metadata
https://spdx.org/rdf/3.0/terms/Core/PresenceType
Name | PresenceType |
Entries
- no: Indicates absence of the field.
- noAssertion: Makes no assertion about the field.
- yes: Indicates presence of the field.
7.4.7 ProfileIdentifierType
Summary
Enumeration of the valid profiles.
Description
There are a set of profiles that have been defined by a profile team.
A profile consists of a namespace that may add properties and classes to the Core profile unique to the domain covered by the profile.
The profile may also contain additional restrictions on existing properties and classes defined in other profiles.
If the creator of an SPDX collection of elements includes a profile in the list of profileConformance, they are claiming that all contained elements conform to all restrictions defined for that profile.
Metadata
https://spdx.org/rdf/3.0/terms/Core/ProfileIdentifierType
Name | ProfileIdentifierType |
Entries
- ai: The element follows the AI profile specification.
- build: The element follows the Build profile specification.
- core: The element follows the Core profile specification.
- dataset: The element follows the Dataset profile specification.
- expandedLicensing: The element follows the ExpandedLicensing profile specification.
- extension: The element follows the Extension profile specification.
- lite: The element follows the Lite profile specification.
- security: The element follows the Security profile specification.
- simpleLicensing: The element follows the SimpleLicensing profile specification.
- software: The element follows the Software profile specification.
7.4.8 RelationshipCompleteness
Summary
Indicates whether a relationship is known to be complete, incomplete, or if no assertion is made with respect to relationship completeness.
Description
RelationshipCompleteness indicates whether the provided relationship is known to be complete, known to be incomplete, or if no assertion is made by the relationship creator.
Metadata
https://spdx.org/rdf/3.0/terms/Core/RelationshipCompleteness
Name | RelationshipCompleteness |
Entries
- complete: The relationship is known to be exhaustive.
- incomplete: The relationship is known not to be exhaustive.
- noAssertion: No assertion can be made about the completeness of the relationship.
7.4.9 RelationshipType
Summary
Information about the relationship between two Elements.
Description
Provides information about the relationship between two Elements. For example, you can represent a relationship between two different Files, between a Package and a File, between two Packages, or between one SpdxDocument and another SpdxDocument.
Relationship names should be descriptive enough to easily deduce the correct direction from their name. The best way to do this is to make sure that the relationship name completes the sentence:
from (is) (a) RELATIONSHIP to
Metadata
https://spdx.org/rdf/3.0/terms/Core/RelationshipType
Name | RelationshipType |
Entries
- affects: The from Vulnerability affects each to Element. The use of the affects type is constrained to VexAffectedVulnAssessmentRelationship classed relationships.
- amendedBy: The from Element is amended by each to Element.
- ancestorOf: The from Element is an ancestor of each to Element.
- availableFrom: The from Element is available from the additional supplier described by each to Element.
- configures: The from Element is a configuration applied to each to Element, during a LifecycleScopeType period.
- contains: The from Element contains each to Element.
- coordinatedBy: The from Vulnerability is coordinatedBy the to Agent(s) (vendor, researcher, or consumer agent).
- copiedTo: The from Element has been copied to each to Element.
- delegatedTo: The from Agent is delegating an action to the Agent of the to Relationship (which shall be of type invokedBy), during a LifecycleScopeType (e.g. the to invokedBy Relationship is being done on behalf of from).
- dependsOn: The from Element depends on each to Element, during a LifecycleScopeType period.
- descendantOf: The from Element is a descendant of each to Element.
- describes: The from Element describes each to Element. To denote the root(s) of a tree of elements in a collection, the rootElement property shall be used.
- doesNotAffect: The from Vulnerability has no impact on each to Element. The use of the doesNotAffect is constrained to VexNotAffectedVulnAssessmentRelationship classed relationships.
- expandsTo: The from archive expands out as an artifact described by each to Element.
- exploitCreatedBy: The from Vulnerability has had an exploit created against it by each to Agent.
- fixedBy: Designates a from Vulnerability has been fixed by the to Agent(s).
- fixedIn: A from Vulnerability has been fixed in each to Element. The use of the fixedIn type is constrained to VexFixedVulnAssessmentRelationship classed relationships.
- foundBy: Designates a from Vulnerability was originally discovered by the to Agent(s).
- generates: The from Element generates each to Element.
- hasAddedFile: Every to Element is a file added to the from Element (from hasAddedFile to).
- hasAssessmentFor: Relates a from Vulnerability and each to Element with a security assessment. To be used with VulnAssessmentRelationship types.
- hasAssociatedVulnerability: Used to associate a from Artifact with each to Vulnerability.
- hasConcludedLicense: The from SoftwareArtifact is concluded by the SPDX data creator to be governed by each to license.
- hasDataFile: The from Element treats each to Element as a data file. A data file is an artifact that stores data required or optional for the from Element’s functionality. A data file can be a database file, an index file, a log file, an AI model file, a calibration data file, a temporary file, a backup file, and more. For AI training dataset, test dataset, test artifact, configuration data, build input data, and build output data, please consider using the more specific relationship types: trainedOn, testedOn, hasTest, configures, hasInput, and hasOutput, respectively. This relationship does not imply dependency.
- hasDeclaredLicense: The from SoftwareArtifact was discovered to actually contain each to license, for example as detected by use of automated tooling.
- hasDeletedFile: Every to Element is a file deleted from the from Element (from hasDeletedFile to).
- hasDependencyManifest: The from Element has manifest files that contain dependency information in each to Element.
- hasDistributionArtifact: The from Element is distributed as an artifact in each to Element (e.g. an RPM or archive file).
- hasDocumentation: The from Element is documented by each to Element.
- hasDynamicLink: The from Element dynamically links in each to Element, during a LifecycleScopeType period.
- hasEvidence: Every to Element is considered as evidence for the from Element (from hasEvidence to).
- hasExample: Every to Element is an example for the from Element (from hasExample to).
- hasHost: The from Build was run on the to Element during a LifecycleScopeType period (e.g. the host that the build runs on).
- hasInput: The from Build has each to Element as an input, during a LifecycleScopeType period.
- hasMetadata: Every to Element is metadata about the from Element (from hasMetadata to).
- hasOptionalComponent: Every to Element is an optional component of the from Element (from hasOptionalComponent to).
- hasOptionalDependency: The from Element optionally depends on each to Element, during a LifecycleScopeType period.
- hasOutput: The from Build element generates each to Element as an output, during a LifecycleScopeType period.
- hasPrerequisite: The from Element has a prerequisite on each to Element, during a LifecycleScopeType period.
- hasProvidedDependency: The from Element has a dependency on each to Element, dependency is not in the distributed artifact, but assumed to be provided, during a LifecycleScopeType period.
- hasRequirement: The from Element has a requirement on each to Element, during a LifecycleScopeType period.
- hasSpecification: Every to Element is a specification for the from Element (from hasSpecification to), during a LifecycleScopeType period.
- hasStaticLink: The from Element statically links in each to Element, during a LifecycleScopeType period.
- hasTest: Every to Element is a test artifact for the from Element (from hasTest to), during a LifecycleScopeType period.
- hasTestCase: Every to Element is a test case for the from Element (from hasTestCase to).
- hasVariant: Every to Element is a variant the from Element (from hasVariant to).
- invokedBy: The from Element was invoked by the to Agent, during a LifecycleScopeType period (for example, a Build element that describes a build step).
- modifiedBy: The from Element is modified by each to Element.
- other: Every to Element is related to the from Element where the relationship type is not described by any of the SPDX relationship types (this relationship is directionless).
- packagedBy: Every to Element is a packaged instance of the from Element (from packagedBy to).
- patchedBy: Every to Element is a patch for the from Element (from patchedBy to).
- publishedBy: Designates a from Vulnerability was made available for public use or reference by each to Agent.
- reportedBy: Designates a from Vulnerability was first reported to a project, vendor, or tracking database for formal identification by each to Agent.
- republishedBy: Designates a from Vulnerability’s details were tracked, aggregated, and/or enriched to improve context (i.e. NVD) by each to Agent.
- serializedInArtifact: The from SpdxDocument can be found in a serialized form in each to Artifact.
- testedOn: The from Element has been tested on the to Element(s).
- trainedOn: The from Element has been trained on the to Element(s).
- underInvestigationFor: The from Vulnerability impact is being investigated for each to Element. The use of the underInvestigationFor type is constrained to VexUnderInvestigationVulnAssessmentRelationship classed relationships.
- usesTool: The from Element uses each to Element as a tool, during a LifecycleScopeType period.
7.4.10 SupportType
Summary
Indicates the type of support that is associated with an artifact.
Description
SupportType is an enumeration of the various types of support commonly found for artifacts in the software supply chain. Specific details of what that support entails are provided by agreements between the producer and consumer of the artifact.
Metadata
https://spdx.org/rdf/3.0/terms/Core/SupportType
Name | SupportType |
Entries
- deployed: In addition to being supported by the supplier, the software is known to have been deployed and is in use. For a software as a service provider, this implies the software is now available as a service.
- development: The artifact is in active development and is not considered ready for formal support from the supplier.
- endOfSupport: There is a defined end of support for the artifact from the supplier. This may also be referred to as end of life. There is a validUntilDate that can be used to signal when support ends for the artifact.
- limitedSupport: The artifact has been released, and there is limited support available from the supplier. There is a validUntilDate that can provide additional information about the duration of support.
- noAssertion: No assertion about the type of support is made. This is considered the default if no other support type is used.
- noSupport: There is no support for the artifact from the supplier, consumer assumes any support obligations.
- support: The artifact has been released and is supported from the supplier. There is a validUntilDate that can provide additional information about the duration of support.
7.5 Individuals
7.5.1 NoAssertionElement
Summary
An Individual Value for Element representing a set of Elements of unknown identity or cardinality (number).
Description
NoAssertionElement shall be used if
- the SPDX creator has attempted to but cannot reach a reasonable objective determination;
- the SPDX creator has made no attempt to determine this field; or
- the SPDX creator has intentionally provided no information (no meaning shall be implied by doing so).
For example, a Relationship with relationshipType=“ancestorOf”, from=Element1, and to=NoAssertionElement is explicitly expressing that no assertion is being made about any potential descendants of Element1.
Metadata
https://spdx.org/rdf/3.0/terms/Core/NoAssertionElement
Name | NoAssertionElement |
Type | IndividualElement |
IRI | https://spdx.org/rdf/3.0/terms/Core/NoAssertionElement |
7.5.2 NoneElement
Summary
An Individual Value for Element representing a set of Elements with cardinality (number/count) of zero.
Description
NoneElement shall be used if the SPDX creator desires to assert that there are NO elements for the given context of use.
For example, a Relationship with relationshipType=“ancestorOf”, from=Element1, and to=NoneElement is explicitly expressing an assertion that Element1 has no descendants.
Metadata
https://spdx.org/rdf/3.0/terms/Core/NoneElement
Name | NoneElement |
Type | IndividualElement |
IRI | https://spdx.org/rdf/3.0/terms/Core/NoneElement |
7.5.3 SpdxOrganization
Summary
An Organization representing the SPDX Project.
Description
SpdxOrganization is an Organization representing the SPDX Project. It is by definition the creator of all Element type individuals defined by the SPDX Project. These individuals include licenses and exceptions defined in the SPDX License List, as well as individuals defined in the specification.
Metadata
https://spdx.org/rdf/3.0/terms/Core/SpdxOrganization
Name | SpdxOrganization |
Type | Organization |
IRI | https://spdx.org/ |
7.6 Datatypes
7.6.1 DateTime
Summary
A string representing a specific date and time.
Description
A DateTime is a string representation of a specific date and time.
It has resolution of seconds and is always expressed in UTC time zone.
The specific format is one of the most commonly used ISO-8601 formats.
Metadata
https://spdx.org/rdf/3.0/terms/Core/DateTime
Name | DateTime |
SubclassOf | xsd:dateTimeStamp |
Format pattern
^\d\d\d\d-\d\d-\d\dT\d\d:\d\d:\d\dZ$
7.6.2 MediaType
Summary
Standardized way of indicating the type of content of an Element or a property. A string constrained to the RFC 2046 specification.
Description
A MediaType is a string constrained to the RFC 2046 MIME Part Two: Media Types. It provides a standardized way of indicating the type of content of an Element or a Property.
Example
- application/java-archive
- application/vcard+json
- application/vnd.oasis.opendocument.text
- image/avif
- text/csv;charset=UTF-8
- text/javascript
- text/spdx
A list of all possible media types is available at IANA Protocol Registries.
Metadata
https://spdx.org/rdf/3.0/terms/Core/MediaType
Name | MediaType |
SubclassOf | xsd:string |
Format pattern
^[^\/]+\/[^\/]+$
7.6.3 SemVer
Summary
A string constrained to the SemVer 2.0.0 specification.
Description
A semantic version is a string that is following the specification of Semantic Versioning 2.0.0.
Metadata
https://spdx.org/rdf/3.0/terms/Core/SemVer
Name | SemVer |
SubclassOf | xsd:string |
Format pattern
^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$
8.0 Software
8.1 Profile information
8.1.1 Software profile
Summary
Everything having to do with software.
Description
The Software namespace defines concepts related to software artifacts.
Metadata
https://spdx.org/rdf/3.0/terms/Software
Name | Software |
8.2 Classes
8.2.1 ContentIdentifier
Summary
A canonical, unique, immutable identifier.
Description
A ContentIdentifier is a canonical, unique, immutable identifier of the content of a software artifact, such as a package, a file, or a snippet.
It can be used for verifying its identity and integrity.
Metadata
https://spdx.org/rdf/3.0/terms/Software/ContentIdentifier
Name | ContentIdentifier |
Instantiability | Concrete |
SubclassOf | /Core/IntegrityMethod |
Class hierarchy
/Core/IntegrityMethod
/Software/ContentIdentifier
Properties
Property | Type | minCount | maxCount |
|---|---|---|---|
contentIdentifierType | ContentIdentifierType | 1 | 1 |
contentIdentifierValue | xsd:anyURI | 1 | 1 |
All properties
Property | Type | minCount | maxCount |
|---|---|---|---|
comment | xsd:string | 0 | 1 |
contentIdentifierType | ContentIdentifierType | 1 | 1 |
contentIdentifierValue | xsd:anyURI | 1 | 1 |
8.2.2 File
Summary
Refers to any object that stores content on a computer.
Description
Refers to any object that stores content on a computer. The type of content can optionally be provided in the contentType property.
The fileKind property can be set to directory to indicate the file represents a directory and all content stored in that directory.
Metadata
https://spdx.org/rdf/3.0/terms/Software/File
Name | File |
Instantiability | Concrete |
SubclassOf | /Software/SoftwareArtifact |
Class hierarchy
/Core/Element
/Core/Artifact
/Software/SoftwareArtifact
/Software/File
Properties
Property | Type | minCount | maxCount |
|---|---|---|---|
/Core/contentType | /Core/MediaType | 0 | 1 |
fileKind | FileKindType | 0 | 1 |
External properties cardinality updates
Property | minCount | maxCount |
|---|---|---|
name from /Core/Element | 1 |
All properties
Property | Type | minCount | maxCount |
|---|---|---|---|
additionalPurpose | SoftwarePurpose | 0 | * |
attributionText | xsd:string | 0 | * |
builtTime | DateTime | 0 | 1 |
comment | xsd:string | 0 | 1 |
contentIdentifier | ContentIdentifier | 0 | * |
contentType | MediaType | 0 | 1 |
copyrightText | xsd:string | 0 | 1 |
creationInfo | CreationInfo | 1 | 1 |
description | xsd:string | 0 | 1 |
extension | Extension | 0 | * |
externalIdentifier | ExternalIdentifier | 0 | * |
externalRef | ExternalRef | 0 | * |
fileKind | FileKindType | 0 | 1 |
name | xsd:string | 1 | 1 |
originatedBy | Agent | 0 | * |
primaryPurpose | SoftwarePurpose | 0 | 1 |
releaseTime | DateTime | 0 | 1 |
spdxId | xsd:anyURI | 1 | 1 |
standardName | xsd:string | 0 | * |
summary | xsd:string | 0 | 1 |
suppliedBy | Agent | 0 | 1 |
supportLevel | SupportType | 0 | * |
validUntilTime | DateTime | 0 | 1 |
verifiedUsing | IntegrityMethod | 0 | * |
8.2.3 Package
Summary
Refers to any unit of content that can be associated with a distribution of software.
Description
A package refers to any unit of content that can be associated with a distribution of software.
Typically, a package is composed of one or more files.
Any of the following non-limiting examples may be (but are not required to be) represented in SPDX as a package:
- a tarball, zip file or other archive
- a directory or sub-directory
- a separately distributed piece of software which another Package or File uses or depends upon (e.g., a Python package, a Go module, …)
- a container image, and/or each image layer within a container image
- a collection of one or more sub-packages
- a Git repository snapshot from a particular point in time
Note that some of these could be represented in SPDX as a file as well.
Metadata
https://spdx.org/rdf/3.0/terms/Software/Package
Name | Package |
Instantiability | Concrete |
SubclassOf | /Software/SoftwareArtifact |
Class hierarchy
/Core/Element
/Core/Artifact
/Software/SoftwareArtifact
/Software/Package
Properties
Property | Type | minCount | maxCount |
|---|---|---|---|
downloadLocation | xsd:anyURI | 0 | 1 |
homePage | xsd:anyURI | 0 | 1 |
packageUrl | xsd:anyURI | 0 | 1 |
packageVersion | xsd:string | 0 | 1 |
sourceInfo | xsd:string | 0 | 1 |
External properties cardinality updates
Property | minCount | maxCount |
|---|---|---|
name from /Core/Element | 1 |
All properties
Property | Type | minCount | maxCount |
|---|---|---|---|
additionalPurpose | SoftwarePurpose | 0 | * |
attributionText | xsd:string | 0 | * |
builtTime | DateTime | 0 | 1 |
comment | xsd:string | 0 | 1 |
contentIdentifier | ContentIdentifier | 0 | * |
copyrightText | xsd:string | 0 | 1 |
creationInfo | CreationInfo | 1 | 1 |
description | xsd:string | 0 | 1 |
downloadLocation | xsd:anyURI | 0 | 1 |
extension | Extension | 0 | * |
externalIdentifier | ExternalIdentifier | 0 | * |
externalRef | ExternalRef | 0 | * |
homePage | xsd:anyURI | 0 | 1 |
name | xsd:string | 1 | 1 |
originatedBy | Agent | 0 | * |
packageUrl | xsd:anyURI | 0 | 1 |
packageVersion | xsd:string | 0 | 1 |
primaryPurpose | SoftwarePurpose | 0 | 1 |
releaseTime | DateTime | 0 | 1 |
sourceInfo | xsd:string | 0 | 1 |
spdxId | xsd:anyURI | 1 | 1 |
standardName | xsd:string | 0 | * |
summary | xsd:string | 0 | 1 |
suppliedBy | Agent | 0 | 1 |
supportLevel | SupportType | 0 | * |
validUntilTime | DateTime | 0 | 1 |
verifiedUsing | IntegrityMethod | 0 | * |
8.2.4 Sbom
Summary
A collection of SPDX Elements describing a single package.
Description
A Software Bill of Materials (SBOM) is a collection of SPDX Elements describing a single package.
This could include details of the content and composition of the product, provenance details of the product and/or its composition, licensing information, known quality or security issues, etc.
Metadata
https://spdx.org/rdf/3.0/terms/Software/Sbom
Name | Sbom |
Instantiability | Concrete |
SubclassOf | /Core/Bom |
Class hierarchy
/Core/Element
/Core/ElementCollection
/Core/Bundle
/Core/Bom
/Software/Sbom
Properties
Property | Type | minCount | maxCount |
|---|---|---|---|
sbomType | SbomType | 0 | * |
All properties
Property | Type | minCount | maxCount |
|---|---|---|---|
Comment | xsd:string | 0 | 1 |
Context | xsd:string | 0 | 1 |
creationInfo | CreationInfo | 1 | 1 |
description | xsd:string | 0 | 1 |
Element | Element | 0 | * |
Extension | Extension | 0 | * |
externalIdentifier | ExternalIdentifier | 0 | * |
externalRef | ExternalRef | 0 | * |
name | xsd:string | 0 | 1 |
profileConformance | ProfileIdentifierType | 0 | * |
rootElement | Element | 0 | * |
sbomType | SbomType | 0 | * |
spdxId | xsd:anyURI | 1 | 1 |
summary | xsd:string | 0 | 1 |
verifiedUsing | IntegrityMethod | 0 | * |
8.2.5 Snippet
Summary
Describes a certain part of a file.
Description
A Snippet describes a certain part of a file and can be used when the file is known to have some content that has been included from another original source.
Snippets are useful for denoting when part of a file may have been originally created under another license or copied from a place with a known vulnerability.
Metadata
https://spdx.org/rdf/3.0/terms/Software/Snippet
Name | Snippet |
Instantiability | Concrete |
SubclassOf | /Software/SoftwareArtifact |
Class hierarchy
/Core/Element
/Core/Artifact
/Software/SoftwareArtifact
/Software/Snippet
Properties
Property | Type | minCount | maxCount |
|---|---|---|---|
byteRange | /Core/PositiveIntegerRange | 0 | 1 |
lineRange | /Core/PositiveIntegerRange | 0 | 1 |
snippetFromFile | File | 1 | 1 |
All properties
Property | Type | minCount | maxCount |
|---|---|---|---|
additionalPurpose | SoftwarePurpose | 0 | * |
attributionText | xsd:string | 0 | * |
builtTime | DateTime | 0 | 1 |
byteRange | PositiveIntegerRange | 0 | 1 |
comment | xsd:string | 0 | 1 |
contentIdentifier | ContentIdentifier | 0 | * |
copyrightText | xsd:string | 0 | 1 |
creationInfo | CreationInfo | 1 | 1 |
description | xsd:string | 0 | 1 |
extension | Extension | 0 | * |
externalIdentifier | ExternalIdentifier | 0 | * |
externalRef | ExternalRef | 0 | * |
lineRange | PositiveIntegerRange | 0 | 1 |
name | xsd:string | 0 | 1 |
originatedBy | Agent | 0 | * |
primaryPurpose | SoftwarePurpose | 0 | 1 |
releaseTime | DateTime | 0 | 1 |
snippetFromFile | File | 1 | 1 |
spdxId | xsd:anyURI | 1 | 1 |
standardName | xsd:string | 0 | * |
summary | xsd:string | 0 | 1 |
suppliedBy | Agent | 0 | 1 |
supportLevel | SupportType | 0 | * |
validUntilTime | DateTime | 0 | 1 |
verifiedUsing | IntegrityMethod | 0 | * |
8.2.6 SoftwareArtifact
Summary
A distinct article or unit related to Software.
Description
A software artifact is a distinct article or unit related to software such as a package, a file, or a snippet.
Metadata
https://spdx.org/rdf/3.0/terms/Software/SoftwareArtifact
Name | SoftwareArtifact |
Instantiability | Abstract |
SubclassOf | /Core/Artifact |
Class hierarchy
/Core/Element
/Core/Artifact
/Software/SoftwareArtifact
Properties
Property | Type | minCount | maxCount |
|---|---|---|---|
additionalPurpose | SoftwarePurpose | 0 | * |
attributionText | xsd:string | 0 | * |
contentIdentifier | ContentIdentifier | 0 | * |
copyrightText | xsd:string | 0 | 1 |
primaryPurpose | SoftwarePurpose | 0 | 1 |
All properties
Property | Type | minCount | maxCount |
|---|---|---|---|
additionalPurpose | SoftwarePurpose | 0 | * |
attributionText | xsd:string | 0 | * |
builtTime | DateTime | 0 | 1 |
comment | xsd:string | 0 | 1 |
contentIdentifier | ContentIdentifier | 0 | * |
copyrightText | xsd:string | 0 | 1 |
creationInfo | CreationInfo | 1 | 1 |
description | xsd:string | 0 | 1 |
extension | Extension | 0 | * |
externalIdentifier | ExternalIdentifier | 0 | * |
externalRef | ExternalRef | 0 | * |
name | xsd:string | 0 | 1 |
originatedBy | Agent | 0 | * |
primaryPurpose | SoftwarePurpose | 0 | 1 |
releaseTime | DateTime | 0 | 1 |
spdxId | xsd:anyURI | 1 | 1 |
standardName | xsd:string | 0 | * |
summary | xsd:string | 0 | 1 |
suppliedBy | Agent | 0 | 1 |
supportLevel | SupportType | 0 | * |
validUntilTime | DateTime | 0 | 1 |
verifiedUsing | IntegrityMethod | 0 | * |
8.3 Properties
8.3.1 additionalPurpose
Summary
Provides additional purpose information of the software artifact.
Description
An additionalPurpose provides information about the additional purpose of the software artifact in addition to the primaryPurpose.
Metadata
https://spdx.org/rdf/3.0/terms/Software/additionalPurpose
Name | additionalPurpose |
Nature | ObjectProperty |
Range | SoftwarePurpose |
Referenced
- /Software/SoftwareArtifact
8.3.2 attributionText
Summary
Provides a place for the SPDX data creator to record acknowledgement text for a software Package, File or Snippet.
Description
An attributionText for a software Package, File or Snippet provides a consumer of SPDX data with acknowledgement content, to assist redistributors of the Package, File or Snippet with reproducing those acknowledgements.
For example, this field may include a statement that is required by a particular license to be reproduced in end-user documentation, advertising materials, or another form.
This field may describe where, or in which contexts, the acknowledgements need to be reproduced, but it is not required to do so. The SPDX data creator may also explain elsewhere (such as in a comment field) how they intend for data in this field to be used.
An attributionText is not meant to include the software Package, File or Snippet’s actual complete license text. Use hasConcludedLicense to identify the corresponding license.
Metadata
https://spdx.org/rdf/3.0/terms/Software/attributionText
Name | attributionText |
Nature | DataProperty |
Range | xsd:string |
Referenced
- /Software/SoftwareArtifact
8.3.3 byteRange
Summary
Defines the byte range in the original host file that the snippet information applies to.
Description
This field defines the byte range in the original host file that the snippet information applies to.
A range of bytes is independent of various formatting concerns, and the most accurate way of referring to the differences. The choice was made to start the numbering of the byte range at 1 to be consistent with the W3C pointer method vocabulary.
Metadata
https://spdx.org/rdf/3.0/terms/Software/byteRange
Name | byteRange |
Nature | DataProperty |
Range | /Core/PositiveIntegerRange |
Referenced
- /Software/Snippet
8.3.4 contentIdentifier
Summary
A canonical, unique, immutable identifier of the artifact content, that may be used for verifying its identity and/or integrity.
Description
A contentIdentifier is a canonical, unique, immutable identifier of the content of a software artifact, such as a package, a file, or a snippet.
It may be used for verifying its identity and/or integrity.
Metadata
https://spdx.org/rdf/3.0/terms/Software/contentIdentifier
Name | contentIdentifier |
Nature | DataProperty |
Range | ContentIdentifier |
Referenced
- /Software/SoftwareArtifact
8.3.5 contentIdentifierType
Summary
Specifies the type of the content identifier.
Description
A contentIdentifierType specifies the type of the content identifier.
Metadata
https://spdx.org/rdf/3.0/terms/Software/contentIdentifierType
Name | contentIdentifierType |
Nature | ObjectProperty |
Range | ContentIdentifierType |
Referenced
- /Software/ContentIdentifier
8.3.6 contentIdentifierValue
Summary
Specifies the value of the content identifier.
Description
A contentIdentifierValue specifies the value of a content identifier.
Metadata
https://spdx.org/rdf/3.0/terms/Software/contentIdentifierValue
Name | contentIdentifierValue |
Nature | DataProperty |
Range | xsd:anyURI |
Referenced
- /Software/ContentIdentifier
8.3.7 copyrightText
Summary
Identifies the text of one or more copyright notices for a software Package, File or Snippet, if any.
Description
A copyrightText consists of the text(s) of the copyright notice(s) found for a software Package, File or Snippet, if any.
If a copyrightText contains text, then it may contain any text related to one or more copyright notices (even if not complete) for that software Package, File or Snippet.
If a copyrightText has a “NONE” value, this indicates that the software Package, File or Snippet contains no copyright notice whatsoever.
If a copyrightText has a “NOASSERTION” value, this indicates that one of the following applies:
- the SPDX data creator has attempted to but cannot reach a reasonable objective determination;
- the SPDX data creator has made no attempt to determine this field; or
- the SPDX data creator has intentionally provided no information (no meaning shall be implied by doing so).
If a copyrightText is present, but consists of solely an empty string or a string with no substantive content (e.g., a string that contains only whitespace), then this shall be interpreted as equivalent to a “NOASSERTION” value as described above.
Metadata
https://spdx.org/rdf/3.0/terms/Software/copyrightText
Name | copyrightText |
Nature | DataProperty |
Range | xsd:string |
Referenced
- /Software/SoftwareArtifact
8.3.8 downloadLocation
Summary
Identifies the download Uniform Resource Identifier for the package at the time that the document was created.
Description
A downloadLocation identifies the download Uniform Resource Identifier for the package at the time that the document was created.
Where and how to download the exact package being referenced is critical for verification and tracking data.
Metadata
https://spdx.org/rdf/3.0/terms/Software/downloadLocation
Name | downloadLocation |
Nature | DataProperty |
Range | xsd:anyURI |
Referenced
- /Software/Package
8.3.9 fileKind
Summary
Describes if a given file is a directory or non-directory kind of file.
Description
An SPDX file may represent a specific file or a directory of files.
In the future, this may be extended to other kinds (e.g., network-based files).
Metadata
https://spdx.org/rdf/3.0/terms/Software/fileKind
Name | fileKind |
Nature | ObjectProperty |
Range | FileKindType |
Referenced
- /Software/File
8.3.10 homePage
Summary
A place for the SPDX document creator to record a website that serves as the package’s home page.
Description
A homePage is a place for the SPDX document creator to record a website that serves as the package’s home page.
This saves the recipient of the SPDX document who is looking for more info from having to search for and verify a match between the package and the associated project home page.
This link can also be used to reference further information about the package referenced by the SPDX document creator.
Metadata
https://spdx.org/rdf/3.0/terms/Software/homePage
Name | homePage |
Nature | DataProperty |
Range | xsd:anyURI |
Referenced
- /Software/Package
8.3.11 lineRange
Summary
Defines the line range in the original host file that the snippet information applies to.
Description
This field defines the line range in the original host file that the snippet information applies to.
If there is a disagreement between the byte range and line range, the byte range values will take precedence.
A range of lines is a convenient reference for those files where there is a known line delimiter. The choice was made to start the numbering of the lines at 1 to be consistent with the W3C pointer method vocabulary.
Metadata
https://spdx.org/rdf/3.0/terms/Software/lineRange
Name | lineRange |
Nature | DataProperty |
Range | /Core/PositiveIntegerRange |
Referenced
- /Software/Snippet
8.3.12 packageUrl
Summary
Provides a place for the SPDX data creator to record the package URL string (in accordance with the Package URL specification) for a software Package.
Description
A package URL (commonly pronounced and referred to as “purl”) is an attempt to standardize package representations in order to reliably identify and locate software packages. A packageUrl is a URL string which represents a package in a mostly universal and uniform way across programming languages, package managers, packaging conventions, tools, APIs and databases.
A packageUrl is composed of seven components:
scheme:type/namespace/name@version?qualifiers#subpath
The definition for each component can be found in Annex E. Known type definitions can be found in the Package URL type definitions.
Components are designed such that they form a hierarchy from the most significant on the left to the least significant components on the right.
Metadata
https://spdx.org/rdf/3.0/terms/Software/packageUrl
Name | packageUrl |
Nature | DataProperty |
Range | xsd:anyURI |
Referenced
- /Software/Package
8.3.13 packageVersion
Summary
Identify the version of a package.
Description
A packageVersion is useful for identification purposes and for indicating later changes of the package version.
Metadata
https://spdx.org/rdf/3.0/terms/Software/packageVersion
Name | packageVersion |
Nature | DataProperty |
Range | xsd:string |
Referenced
- /Software/Package
8.3.14 primaryPurpose
Summary
Provides information about the primary purpose of the software artifact.
Description
primaryPurpose provides information about the primary purpose of the software artifact.
Metadata
https://spdx.org/rdf/3.0/terms/Software/primaryPurpose
Name | primaryPurpose |
Nature | ObjectProperty |
Range | SoftwarePurpose |
Referenced
- /Software/SoftwareArtifact
8.3.15 sbomType
Summary
Provides information about the type of an SBOM.
Description
This field is a reasonable estimation of the type of SBOM created from a creator perspective.
It is intended to be used to give guidance on the elements that may be contained within it.
Aligning with the guidance produced in Types of Software Bill of Material (SBOM) Documents.
Metadata
https://spdx.org/rdf/3.0/terms/Software/sbomType
Name | sbomType |
Nature | ObjectProperty |
Range | SbomType |
Referenced
- /Software/Sbom
8.3.16 snippetFromFile
Summary
Defines the original host file that the snippet information applies to.
Description
The field identifies the file which contains the snippet.
Metadata
https://spdx.org/rdf/3.0/terms/Software/snippetFromFile
Name | snippetFromFile |
Nature | ObjectProperty |
Range | File |
Referenced
- /Software/Snippet
8.3.17 sourceInfo
Summary
Records any relevant background information or additional comments about the origin of the package.
Description
A sourceInfo records any relevant background information or additional comments about the origin of the package.
For example, this field can include comments indicating whether the package was pulled from a source code management system or has been repackaged.
The creator can provide additional information to describe any anomalies or discoveries in the determination of the origin of the package.
Metadata
https://spdx.org/rdf/3.0/terms/Software/sourceInfo
Name | sourceInfo |
Nature | DataProperty |
Range | xsd:string |
Referenced
- /Software/Package
8.4 Vocabularies
8.4.1 ContentIdentifierType
Summary
Specifies the type of a content identifier.
Description
ContentIdentifierType specifies the type of a content identifier.
Metadata
https://spdx.org/rdf/3.0/terms/Software/ContentIdentifierType
Name | ContentIdentifierType |
Entries
- gitoid: Gitoid, stands for Git Object ID. A gitoid of type blob is a unique hash of a binary artifact. A gitoid may represent either an Artifact Identifier for the software artifact or an Input Manifest Identifier for the software artifact’s associated Artifact Input Manifest; this ambiguity exists because the Artifact Input Manifest is itself an artifact, and the gitoid of that artifact is its valid identifier. Gitoids calculated on software artifacts (Snippet, File, or Package Elements) should be recorded in the SPDX 3.0 SoftwareArtifact’s contentIdentifier property. Gitoids calculated on the Artifact Input Manifest (Input Manifest Identifier) should be recorded in the SPDX 3.0 Element’s externalIdentifier property. See OmniBOR Specification, a minimalistic specification for describing software Artifact Dependency Graphs.
- swhid: SoftWare Hash IDentifier, a persistent intrinsic identifier for digital artifacts, such as files, trees (also known as directories or folders), commits, and other objects typically found in version control systems. The format of the identifiers is defined in the SWHID specification (ISO/IEC DIS 18670). They typically look like swh:1:cnt:94a9ed024d3859793618152ea559a168bbcbb5e2.
8.4.2 FileKindType
Summary
Enumeration of the different kinds of SPDX file.
Description
An SPDX file may represent a file on disk or a directory of files.
In the future, this may be extended to other kinds (e.g. network based files).
Metadata
https://spdx.org/rdf/3.0/terms/Software/FileKindType
Name | FileKindType |
Entries
- directory: The file represents a directory and all content stored in that directory.
- file: The file represents a single file (default).
8.4.3 SbomType
Summary
Provides a set of values to be used to describe the common types of SBOMs that tools may create.
Description
The set of SBOM types with definitions as defined in Types of Software Bill of Material (SBOM) Documents, published on April 21, 2023.
An SBOM type describes the most likely type of an SBOM from the producer perspective, so that consumers can draw conclusions about the data inside an SBOM.
A single SBOM can have multiple SBOM document types associated with it.
Metadata
https://spdx.org/rdf/3.0/terms/Software/SbomType
Name | SbomType |
Entries
- analyzed: SBOM generated through analysis of artifacts (e.g., executables, packages, containers, and virtual machine images) after its build. Such analysis generally requires a variety of heuristics. In some contexts, this may also be referred to as a “3rd party” SBOM.
- build: SBOM generated as part of the process of building the software to create a releasable artifact (e.g., executable or package) from data such as source files, dependencies, built components, build process ephemeral data, and other SBOMs.
- deployed: SBOM provides an inventory of software that is present on a system. This may be an assembly of other SBOMs that combines analysis of configuration options, and examination of execution behavior in a (potentially simulated) deployment environment.
- design: SBOM of intended, planned software project or product with included components (some of which may not yet exist) for a new software artifact.
- runtime: SBOM generated through instrumenting the system running the software, to capture only components present in the system, as well as external call-outs or dynamically loaded components. In some contexts, this may also be referred to as an “Instrumented” or “Dynamic” SBOM.
- source: SBOM created directly from the development environment, source files, and included dependencies used to build a product artifact.
8.4.4 SoftwarePurpose
Summary
Provides information about the primary purpose of an Element.
Description
This field provides information about the primary purpose of an Element.
Software Purpose is intrinsic to how the Element is being used rather than the content of the Element.
This field is a reasonable estimate of the most likely usage of the Element from the producer and consumer perspective from which both parties can draw conclusions about the context in which the Element exists.
Metadata
https://spdx.org/rdf/3.0/terms/Software/SoftwarePurpose
Name | SoftwarePurpose |
Entries
- application: The Element is a software application.
- archive: The Element is an archived collection of one or more files (.tar, .zip, etc.).
- bom: The Element is a bill of materials.
- configuration: The Element is configuration data.
- container: The Element is a container image which can be used by a container runtime application.
- data: The Element is data.
- device: The Element refers to a chipset, processor, or electronic board.
- deviceDriver: The Element represents software that controls hardware devices.
- diskImage: The Element refers to a disk image that can be written to a disk, booted in a VM, etc. A disk image typically contains most or all of the components necessary to boot, such as bootloaders, kernels, firmware, userspace, etc.
- documentation: The Element is documentation.
- evidence: The Element is the evidence that a specification or requirement has been fulfilled.
- executable: The Element is an Artifact that can be run on a computer.
- file: The Element is a single file which can be independently distributed (configuration file, statically linked binary, Kubernetes deployment, etc.).
- filesystemImage: The Element is a file system image that can be written to a disk (or virtual) partition.
- firmware: The Element provides low level control over a device’s hardware.
- framework: The Element is a software framework.
- install: The Element is used to install software on disk.
- library: The Element is a software library.
- manifest: The Element is a software manifest.
- model: The Element is a machine learning or artificial intelligence model.
- module: The Element is a module of a piece of software.
- operatingSystem: The Element is an operating system.
- other: The Element doesn’t fit into any of the other categories.
- patch: The Element contains a set of changes to update, fix, or improve another Element.
- platform: The Element represents a runtime environment.
- requirement: The Element provides a requirement needed as input for another Element.
- source: The Element is a single or a collection of source files.
- specification: The Element is a plan, guideline or strategy how to create, perform or analyze an application.
- test: The Element is a test used to verify functionality on a software element.
9.0 Security
9.1 Profile information
9.1.1 Security profile
Summary
The Security profile captures security related information.
Description
The Security profile captures security related information.
Metadata
https://spdx.org/rdf/3.0/terms/Security
Name | Security |
9.2 Classes
9.2.1 CvssV2VulnAssessmentRelationship
Summary
Provides a CVSS version 2.0 assessment for a vulnerability.
Description
A CvssV2VulnAssessmentRelationship relationship describes the determined score and vector of a vulnerability as defined in A Complete Guide to the Common Vulnerability Scoring System Version 2.0.
It is intended to communicate the results of using a CVSS calculator.
Constraints
- The relationship type shall be set to hasAssessmentFor.
Example
{
"type": "security_CvssV2VulnAssessmentRelationship",
"spdxId": "urn:spdx.dev:cvssv2-cve-2020-28498",
"relationshipType": "hasAssessmentFor",
"security_score": "4.3",
"security_vectorString": "AV:N/AC:M/Au:N/C:P/I:N/A:N",
"from": "urn:spdx.dev:vuln-cve-2020-28498",
"to": ["urn:product-acme-application-1.3"],
"security_assessedElement": "urn:npm-elliptic-6.5.2",
"externalRef": [
{
"type": "ExternalRef",
"externalRefType": "securityAdvisory",
"locator": "https://nvd.nist.gov/vuln/detail/CVE-2020-28498"
},
{
"type": "ExternalRef",
"externalRefType": "securityAdvisory",
"locator": "https://snyk.io/vuln/SNYK-JS-ELLIPTIC-1064899"
},
{
"type": "ExternalRef",
"externalRefType": "securityFix",
"locator": "https://github.com/indutny/elliptic/commit/441b742"
}
],
"suppliedBy": "urn:spdx.dev:agent-my-security-vendor",
"security_publishedTime": "2023-05-06T10:06:13Z"
},
{
"type": "Relationship",
"spdxId": "urn:spdx.dev:vulnAgentRel-1",
"relationshipType": "publishedBy",
"from": "urn:spdx.dev:cvssv2-cve-2020-28498",
"to": ["urn:spdx.dev:agent-snyk"],
"startTime": "2021-03-08T16:06:50Z"
}
Metadata
https://spdx.org/rdf/3.0/terms/Security/CvssV2VulnAssessmentRelationship
Name | CvssV2VulnAssessmentRelationship |
Instantiability | Concrete |
SubclassOf | VulnAssessmentRelationship |
Class hierarchy
/Core/Element
/Core/Relationship
/Security/VulnAssessmentRelationship
/Security/CvssV2VulnAssessmentRelationship
Properties
Property | Type | minCount | maxCount |
|---|---|---|---|
Score | xsd:decimal | 1 | 1 |
vectorString | xsd:string | 1 | 1 |
All properties
Property | Type | minCount | maxCount |
|---|---|---|---|
assessedElement | SoftwareArtifact | 0 | 1 |
Comment | xsd:string | 0 | 1 |
completeness | RelationshipCompleteness | 0 | 1 |
creationInfo | CreationInfo | 1 | 1 |
description | xsd:string | 0 | 1 |
endTime | DateTime | 0 | 1 |
extension | Extension | 0 | * |
externalIdentifier | ExternalIdentifier | 0 | * |
externalRef | ExternalRef | 0 | * |
from | Element | 1 | 1 |
modifiedTime | DateTime | 0 | 1 |
name | xsd:string | 0 | 1 |
publishedTime | DateTime | 0 | 1 |
relationshipType | RelationshipType | 1 | 1 |
score | xsd:decimal | 1 | 1 |
spdxId | xsd:anyURI | 1 | 1 |
startTime | DateTime | 0 | 1 |
summary | xsd:string | 0 | 1 |
suppliedBy | Agent | 0 | 1 |
to | Element | 1 | * |
vectorString | xsd:string | 1 | 1 |
verifiedUsing | IntegrityMethod | 0 | * |
withdrawnTime | DateTime | 0 | 1 |
9.2.2 CvssV3VulnAssessmentRelationship
Summary
Provides a CVSS version 3 assessment for a vulnerability.
Description
A CvssV3VulnAssessmentRelationship relationship describes the determined score, severity, and vector of a vulnerability as defined in Common Vulnerability Scoring System v3.0: Specification Document or Common Vulnerability Scoring System v3.1: Specification Document.
It is intended to communicate the results of using a CVSS calculator.
Constraints
- The relationship type shall be set to hasAssessmentFor.
Example
{
"type": "security_CvssV3VulnAssessmentRelationship",
"spdxId": "urn:spdx.dev:cvssv3-cve-2020-28498",
"relationshipType": "hasAssessmentFor",
"security_score": "6.8",
"security_severity": "medium",
"security_vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:H/I:N/A:N",
"from": "urn:spdx.dev:vuln-cve-2020-28498",
"to": ["urn:product-acme-application-1.3"],
"security_assessedElement": "urn:npm-elliptic-6.5.2",
"externalRef": [
{
"type": "ExternalRef",
"externalRefType": "securityAdvisory",
"locator": "https://nvd.nist.gov/vuln/detail/CVE-2020-28498"
},
{
"type": "ExternalRef",
"externalRefType": "securityAdvisory",
"locator": "https://snyk.io/vuln/SNYK-JS-ELLIPTIC-1064899"
},
{
"type": "ExternalRef",
"externalRefType": "securityFix",
"locator": "https://github.com/indutny/elliptic/commit/441b742"
}
],
"suppliedBy": "urn:spdx.dev:agent-my-security-vendor",
"security_publishedTime": "2023-05-06T10:06:13Z"
},
{
"type": "Relationship",
"spdxId": "urn:spdx.dev:vulnAgentRel-1",
"relationshipType": "publishedBy",
"from": "urn:spdx.dev:cvssv3-cve-2020-28498",
"to": ["urn:spdx.dev:agent-snyk"],
"startTime": "2021-03-08T16:06:50Z"
}
Metadata
https://spdx.org/rdf/3.0/terms/Security/CvssV3VulnAssessmentRelationship
Name | CvssV3VulnAssessmentRelationship |
Instantiability | Concrete |
SubclassOf | VulnAssessmentRelationship |
Class hierarchy
/Core/Element
/Core/Relationship
/Security/VulnAssessmentRelationship
/Security/CvssV3VulnAssessmentRelationship
Properties
Property | Type | minCount | maxCount |
|---|---|---|---|
Score | xsd:decimal | 1 | 1 |
Severity | CvssSeverityType | 1 | 1 |
vectorString | xsd:string | 1 | 1 |
All properties
Property | Type | minCount | maxCount |
|---|---|---|---|
assessedElement | SoftwareArtifact | 0 | 1 |
comment | xsd:string | 0 | 1 |
completeness | RelationshipCompleteness | 0 | 1 |
creationInfo | CreationInfo | 1 | 1 |
description | xsd:string | 0 | 1 |
endTime | DateTime | 0 | 1 |
extension | Extension | 0 | * |
externalIdentifier | ExternalIdentifier | 0 | * |
externalRef | ExternalRef | 0 | * |
from | Element | 1 | 1 |
modifiedTime | DateTime | 0 | 1 |
name | xsd:string | 0 | 1 |
publishedTime | DateTime | 0 | 1 |
relationshipType | RelationshipType | 1 | 1 |
score | xsd:decimal | 1 | 1 |
severity | CvssSeverityType | 1 | 1 |
spdxId | xsd:anyURI | 1 | 1 |
startTime | DateTime | 0 | 1 |
summary | xsd:string | 0 | 1 |
suppliedBy | Agent | 0 | 1 |
to | Element | 1 | * |
vectorString | xsd:string | 1 | 1 |
verifiedUsing | IntegrityMethod | 0 | * |
withdrawnTime | DateTime | 0 | 1 |
9.2.3 CvssV4VulnAssessmentRelationship
Summary
Provides a CVSS version 4 assessment for a vulnerability.
Description
A CvssV4VulnAssessmentRelationship relationship describes the determined score, severity, and vector of a vulnerability as defined in Common Vulnerability Scoring System version 4.0: Specification Document.
It is intended to communicate the results of using a CVSS calculator.
Constraints
- The relationship type shall be set to hasAssessmentFor.
Example
{
"type": "security_CvssV4VulnAssessmentRelationship",
"spdxId": "urn:spdx.dev:cvssv4-cve-2021-44228",
"relationshipType": "hasAssessmentFor",
"security_severity": "critical",
"security_score": "10.0",
"security_vectorString": "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:N/SC:N/SI:N/SA:N",
"from": "urn:spdx.dev:vuln-cve-2021-44228",
"to": ["urn:product-acme-application-1.3"],
"security_assessedElement": "urn:apache-log4j-2.14.1",
"externalRef": [
{
"type": "ExternalRef",
"externalRefType": "securityAdvisory",
"locator": "https://nvd.nist.gov/vuln/detail/CVE-2021-44228"
},
{
"type": "ExternalRef",
"externalRefType": "securityAdvisory",
"locator": "https://logging.apache.org/log4j/2.x/security.html"
},
{
"type": "ExternalRef",
"externalRefType": "securityOther",
"locator": "https://www.first.org/cvss/v4.0/examples#Apache-log4j-Vulnerability-CVE-2021-44228"
},
],
"suppliedBy": "urn:spdx.dev:agent-my-security-vendor",
"security_publishedTime": "2023-10-05T23:09:13Z"
},
{
"type": "Relationship",
"spdxId": "urn:spdx.dev:vulnAgentRel-1",
"relationshipType": "publishedBy",
"from": "urn:spdx.dev:cvssv4-cve-2021-44228",
"to": ["urn:spdx.dev:agent-apache.org"],
"startTime": "2021-12-11T18:39:00Z"
}
Metadata
https://spdx.org/rdf/3.0/terms/Security/CvssV4VulnAssessmentRelationship
Name | CvssV4VulnAssessmentRelationship |
Instantiability | Concrete |
SubclassOf | VulnAssessmentRelationship |
Class hierarchy
/Core/Element
/Core/Relationship
/Security/VulnAssessmentRelationship
/Security/CvssV4VulnAssessmentRelationship
Properties
Property | Type | minCount | maxCount |
|---|---|---|---|
Score | xsd:decimal | 1 | 1 |
Severity | CvssSeverityType | 1 | 1 |
vectorString | xsd:string | 1 | 1 |
All properties
Property | Type | minCount | maxCount |
|---|---|---|---|
assessedElement | SoftwareArtifact | 0 | 1 |
comment | xsd:string | 0 | 1 |
completeness | RelationshipCompleteness | 0 | 1 |
creationInfo | CreationInfo | 1 | 1 |
description | xsd:string | 0 | 1 |
endTime | DateTime | 0 | 1 |
extension | Extension | 0 | * |
externalIdentifier | ExternalIdentifier | 0 | * |
externalRef | ExternalRef | 0 | * |
from | Element | 1 | 1 |
modifiedTime | DateTime | 0 | 1 |
name | xsd:string | 0 | 1 |
publishedTime | DateTime | 0 | 1 |
relationshipType | RelationshipType | 1 | 1 |
score | xsd:decimal | 1 | 1 |
severity | CvssSeverityType | 1 | 1 |
spdxId | xsd:anyURI | 1 | 1 |
startTime | DateTime | 0 | 1 |
summary | xsd:string | 0 | 1 |
suppliedBy | Agent | 0 | 1 |
to | Element | 1 | * |
vectorString | xsd:string | 1 | 1 |
verifiedUsing | IntegrityMethod | 0 | * |
withdrawnTime | DateTime | 0 | 1 |
9.2.4 EpssVulnAssessmentRelationship
Summary
Provides an EPSS assessment for a vulnerability.
Description
An EpssVulnAssessmentRelationship relationship describes the likelihood or probability that a vulnerability will be exploited in the wild, and the percentile ranking of probability relative to all other vulnerabilities’ EPSS scores, using the Exploit Prediction Scoring System (EPSS) as defined at The EPSS Model.
Constraints
- The relationship type shall be set to hasAssessmentFor.
- The probability shall be between 0 and 1.
- The percentile shall be between 0 and 1.
Example
{
"type": "security_EpssVulnAssessmentRelationship",
"spdxId": "urn:spdx.dev:epss-CVE-2020-28498",
"relationshipType": "hasAssessmentFor",
"security_probability": "0.00105",
"security_percentile": "0.42356",
"from": "urn:spdx.dev:vuln-cve-2020-28498",
"to": ["urn:product-acme-application-1.3"],
"suppliedBy": "urn:spdx.dev:agent-jane-doe",
"security_publishedTime": "2023-10-05T00:00:30Z"
}
Metadata
https://spdx.org/rdf/3.0/terms/Security/EpssVulnAssessmentRelationship
Name | EpssVulnAssessmentRelationship |
Instantiability | Concrete |
SubclassOf | VulnAssessmentRelationship |
Class hierarchy
/Core/Element
/Core/Relationship
/Security/VulnAssessmentRelationship
/Security/EpssVulnAssessmentRelationship
Properties
Property | Type | minCount | maxCount |
|---|---|---|---|
Percentile | xsd:decimal | 1 | 1 |
probability | xsd:decimal | 1 | 1 |
External properties cardinality updates
Property | minCount | maxCount |
|---|---|---|
publishedTime from /Security/VulnAssessmentRelationship | 1 |
All properties
Property | Type | minCount | maxCount |
|---|---|---|---|
assessedElement | SoftwareArtifact | 0 | 1 |
comment | xsd:string | 0 | 1 |
completeness | RelationshipCompleteness | 0 | 1 |
creationInfo | CreationInfo | 1 | 1 |
description | xsd:string | 0 | 1 |
endTime | DateTime | 0 | 1 |
extension | Extension | 0 | * |
externalIdentifier | ExternalIdentifier | 0 | * |
externalRef | ExternalRef | 0 | * |
from | Element | 1 | 1 |
modifiedTime | DateTime | 0 | 1 |
name | xsd:string | 0 | 1 |
percentile | xsd:decimal | 1 | 1 |
probability | xsd:decimal | 1 | 1 |
publishedTime | DateTime | 1 | 1 |
relationshipType | RelationshipType | 1 | 1 |
spdxId | xsd:anyURI | 1 | 1 |
startTime | DateTime | 0 | 1 |
summary | xsd:string | 0 | 1 |
suppliedBy | Agent | 0 | 1 |
to | Element | 1 | * |
verifiedUsing | IntegrityMethod | 0 | * |
withdrawnTime | DateTime | 0 | 1 |
9.2.5 ExploitCatalogVulnAssessmentRelationship
Summary
Provides an exploit assessment of a vulnerability.
Description
An ExploitCatalogVulnAssessmentRelationship describes if a vulnerability is listed in any exploit catalog such as the CISA Known Exploited Vulnerabilities (KEV) Catalog.
Constraints
- The relationship type shall be set to hasAssessmentFor.
Example
{
"type": "security_ExploitCatalogVulnAssessmentRelationship",
"spdxId": "urn:spdx.dev:exploit-catalog-1",
"relationshipType": "hasAssessmentFor",
"security_catalogType": "kev",
"locator": "https://www.cisa.gov/known-exploited-vulnerabilities-catalog",
"security_exploited": "true",
"from": "urn:spdx.dev:vuln-cve-2023-2136",
"to": ["urn:product-google-chrome-112.0.5615.136"],
"suppliedBy": "urn:spdx.dev:agent-jane-doe",
"security_publishedTime": "2021-03-09T11:04:53Z"
}
Metadata
https://spdx.org/rdf/3.0/terms/Security/ExploitCatalogVulnAssessmentRelationship
Name | ExploitCatalogVulnAssessmentRelationship |
Instantiability | Concrete |
SubclassOf | VulnAssessmentRelationship |
Class hierarchy
/Core/Element
/Core/Relationship
/Security/VulnAssessmentRelationship
/Security/ExploitCatalogVulnAssessmentRelationship
Properties
Property | Type | minCount | maxCount |
|---|---|---|---|
catalogType | ExploitCatalogType | 1 | 1 |
Exploited | xsd:boolean | 1 | 1 |
Locator | xsd:anyURI | 1 | 1 |
All properties
Property | Type | minCount | maxCount |
|---|---|---|---|
assessedElement | SoftwareArtifact | 0 | 1 |
catalogType | ExploitCatalogType | 1 | 1 |
comment | xsd:string | 0 | 1 |
completeness | RelationshipCompleteness | 0 | 1 |
creationInfo | CreationInfo | 1 | 1 |
description | xsd:string | 0 | 1 |
endTime | DateTime | 0 | 1 |
exploited | xsd:boolean | 1 | 1 |
extension | Extension | 0 | * |
externalIdentifier | ExternalIdentifier | 0 | * |
externalRef | ExternalRef | 0 | * |
from | Element | 1 | 1 |
locator | xsd:anyURI | 1 | 1 |
modifiedTime | DateTime | 0 | 1 |
name | xsd:string | 0 | 1 |
publishedTime | DateTime | 0 | 1 |
relationshipType | RelationshipType | 1 | 1 |
spdxId | xsd:anyURI | 1 | 1 |
startTime | DateTime | 0 | 1 |
summary | xsd:string | 0 | 1 |
suppliedBy | Agent | 0 | 1 |
to | Element | 1 | * |
verifiedUsing | IntegrityMethod | 0 | * |
withdrawnTime | DateTime | 0 | 1 |
9.2.6 SsvcVulnAssessmentRelationship
Summary
Provides an SSVC assessment for a vulnerability.
Description
An SsvcVulnAssessmentRelationship describes the decision made using the Stakeholder-Specific Vulnerability Categorization (SSVC) decision tree as defined by CISA Stakeholder-Specific Vulnerability Categorization Guide.
It is intended to communicate the results of using the CISA SSVC Calculator.
Constraints
- The relationship type shall be set to hasAssessmentFor.
Example
{
"type": "security_SsvcVulnAssessmentRelationship",
"spdxId": "urn:spdx.dev:ssvc-1",
"relationshipType": "hasAssessmentFor",
"security_decisionType": "act",
"from": "urn:spdx.dev:vuln-cve-2020-28498",
"to": ["urn:product-acme-application-1.3"],
"security_assessedElement": "urn:npm-elliptic-6.5.2",
"suppliedBy": "urn:spdx.dev:agent-jane-doe",
"security_publishedTime": "2021-03-09T11:04:53Z"
}
Metadata
https://spdx.org/rdf/3.0/terms/Security/SsvcVulnAssessmentRelationship
Name | SsvcVulnAssessmentRelationship |
Instantiability | Concrete |
SubclassOf | VulnAssessmentRelationship |
Class hierarchy
/Core/Element
/Core/Relationship
/Security/VulnAssessmentRelationship
/Security/SsvcVulnAssessmentRelationship
Properties
Property | Type | minCount | maxCount |
|---|---|---|---|
decisionType | SsvcDecisionType | 1 | 1 |
All properties
Property | Type | minCount | maxCount |
|---|---|---|---|
assessedElement | SoftwareArtifact | 0 | 1 |
comment | xsd:string | 0 | 1 |
completeness | RelationshipCompleteness | 0 | 1 |
creationInfo | CreationInfo | 1 | 1 |
decisionType | SsvcDecisionType | 1 | 1 |
description | xsd:string | 0 | 1 |
endTime | DateTime | 0 | 1 |
extension | Extension | 0 | * |
externalIdentifier | ExternalIdentifier | 0 | * |
externalRef | ExternalRef | 0 | * |
from | Element | 1 | 1 |
modifiedTime | DateTime | 0 | 1 |
name | xsd:string | 0 | 1 |
publishedTime | DateTime | 0 | 1 |
relationshipType | RelationshipType | 1 | 1 |
spdxId | xsd:anyURI | 1 | 1 |
startTime | DateTime | 0 | 1 |
summary | xsd:string | 0 | 1 |
suppliedBy | Agent | 0 | 1 |
to | Element | 1 | * |
verifiedUsing | IntegrityMethod | 0 | * |
withdrawnTime | DateTime | 0 | 1 |
9.2.7 VexAffectedVulnAssessmentRelationship
Summary
Connects a vulnerability and an element designating the element as a product affected by the vulnerability.
Description
VexAffectedVulnAssessmentRelationship connects a vulnerability and a number of elements. The relationship marks these elements as products affected by the vulnerability. This relationship corresponds to the VEX affected status.
Constraints
When linking elements using a VexAffectedVulnAssessmentRelationship, the following requirements shall be observed:
- Elements linked with a VulnVexAffectedAssessmentRelationship are constrained to the affects relationship type.
Example
{
"type": "security_VexAffectedVulnAssessmentRelationship",
"spdxId": "urn:spdx.dev:vex-affected-1",
"relationshipType": "affects",
"from": "urn:spdx.dev:vuln-cve-2020-28498",
"to": ["urn:product-acme-application-1.3"],
"security_assessedElement": "urn:npm-elliptic-6.5.2",
"security_actionStatement": "Upgrade to version 1.4 of ACME application.",
"suppliedBy": "urn:spdx.dev:agent-jane-doe",
"security_publishedTime": "2021-03-09T11:04:53Z"
}
Metadata
https://spdx.org/rdf/3.0/terms/Security/VexAffectedVulnAssessmentRelationship
Name | VexAffectedVulnAssessmentRelationship |
Instantiability | Concrete |
SubclassOf | VexVulnAssessmentRelationship |
Class hierarchy
/Core/Element
/Core/Relationship
/Security/VulnAssessmentRelationship
/Security/VexVulnAssessmentRelationship
/Security/VexAffectedVulnAssessmentRelationship
Properties
Property | Type | minCount | maxCount |
|---|---|---|---|
actionStatement | xsd:string | 1 | 1 |
actionStatementTime | /Core/DateTime | 0 | 1 |
All properties
Property | Type | minCount | maxCount |
|---|---|---|---|
actionStatement | xsd:string | 1 | 1 |
actionStatementTime | DateTime | 0 | 1 |
assessedElement | SoftwareArtifact | 0 | 1 |
comment | xsd:string | 0 | 1 |
completeness | RelationshipCompleteness | 0 | 1 |
creationInfo | CreationInfo | 1 | 1 |
description | xsd:string | 0 | 1 |
endTime | DateTime | 0 | 1 |
extension | Extension | 0 | * |
externalIdentifier | ExternalIdentifier | 0 | * |
externalRef | ExternalRef | 0 | * |
from | Element | 1 | 1 |
modifiedTime | DateTime | 0 | 1 |
name | xsd:string | 0 | 1 |
publishedTime | DateTime | 0 | 1 |
relationshipType | RelationshipType | 1 | 1 |
spdxId | xsd:anyURI | 1 | 1 |
startTime | DateTime | 0 | 1 |
statusNotes | xsd:string | 0 | 1 |
summary | xsd:string | 0 | 1 |
suppliedBy | Agent | 0 | 1 |
to | Element | 1 | * |
verifiedUsing | IntegrityMethod | 0 | * |
vexVersion | xsd:string | 0 | 1 |
withdrawnTime | DateTime | 0 | 1 |
9.2.8 VexFixedVulnAssessmentRelationship
Summary
Links a vulnerability and elements representing products (in the VEX sense) where a fix has been applied and are no longer affected.
Description
VexFixedVulnAssessmentRelationship links a vulnerability to a number of elements representing VEX products where a vulnerability has been fixed and are no longer affected. It represents the VEX fixed status.
Constraints
When linking elements using a VexFixedVulnAssessmentRelationship, the following requirements shall be observed:
- Elements linked with a VulnVexFixedAssessmentRelationship are constrained to using the fixedIn relationship type.
Example
{
"type": "security_VexFixedVulnAssessmentRelationship",
"spdxId": "urn:spdx.dev:vex-fixed-in-1",
"relationshipType": "fixedIn",
"from": "urn:spdx.dev:vuln-cve-2020-28498",
"to": ["urn:product-acme-application-1.3"],
"security_assessedElement": "urn:npm-elliptic-6.5.4",
"suppliedBy": "urn:spdx.dev:agent-jane-doe",
"security_publishedTime": "2021-03-09T11:04:53Z"
}
Metadata
https://spdx.org/rdf/3.0/terms/Security/VexFixedVulnAssessmentRelationship
Name | VexFixedVulnAssessmentRelationship |
Instantiability | Concrete |
SubclassOf | VexVulnAssessmentRelationship |
Class hierarchy
/Core/Element
/Core/Relationship
/Security/VulnAssessmentRelationship
/Security/VexVulnAssessmentRelationship
/Security/VexFixedVulnAssessmentRelationship
All properties
Property | Type | minCount | maxCount |
|---|---|---|---|
assessedElement | SoftwareArtifact | 0 | 1 |
comment | xsd:string | 0 | 1 |
completeness | RelationshipCompleteness | 0 | 1 |
creationInfo | CreationInfo | 1 | 1 |
description | xsd:string | 0 | 1 |
endTime | DateTime | 0 | 1 |
extension | Extension | 0 | * |
externalIdentifier | ExternalIdentifier | 0 | * |
externalRef | ExternalRef | 0 | * |
from | Element | 1 | 1 |
modifiedTime | DateTime | 0 | 1 |
name | xsd:string | 0 | 1 |
publishedTime | DateTime | 0 | 1 |
relationshipType | RelationshipType | 1 | 1 |
spdxId | xsd:anyURI | 1 | 1 |
startTime | DateTime | 0 | 1 |
statusNotes | xsd:string | 0 | 1 |
summary | xsd:string | 0 | 1 |
suppliedBy | Agent | 0 | 1 |
to | Element | 1 | * |
verifiedUsing | IntegrityMethod | 0 | * |
vexVersion | xsd:string | 0 | 1 |
withdrawnTime | DateTime | 0 | 1 |
9.2.9 VexNotAffectedVulnAssessmentRelationship
Summary
Links a vulnerability and one or more elements designating the latter as products not affected by the vulnerability.
Description
VexNotAffectedVulnAssessmentRelationship connects a vulnerability and a number of elements designating them as products not affected by the vulnerability. This relationship corresponds to the VEX not_affected status.
Constraints
When linking elements using a VexNotVulnAffectedAssessmentRelationship, the following requirements shall be observed:
- Relating elements with a VexNotAffectedVulnAssessmentRelationship is restricted to the doesNotAffect relationship type.
- Both impactStatement and justificationType properties have a cardinality of 0..1 making them optional. Nevertheless, to produce a valid VEX not_affected statement, one of them shall be defined. This is specified in the Minimum Elements for VEX.
Example
{
"type": "security_VexNotAffectedVulnAssessmentRelationship",
"spdxId": "urn:spdx.dev:vex-not-affected-1",
"relationshipType": "doesNotAffect",
"from": "urn:spdx.dev:vuln-cve-2020-28498",
"to": ["urn:product-acme-application-1.3"],
"security_assessedElement": "urn:npm-elliptic-6.5.2",
"security_justificationType": "componentNotPresent",
"security_impactStatement": "Not using this vulnerable part of this library.",
"suppliedBy": "urn:spdx.dev:agent-jane-doe",
"security_publishedTime": "2021-03-09T11:04:53Z"
}
Metadata
https://spdx.org/rdf/3.0/terms/Security/VexNotAffectedVulnAssessmentRelationship
Name | VexNotAffectedVulnAssessmentRelationship |
Instantiability | Concrete |
SubclassOf | VexVulnAssessmentRelationship |
Class hierarchy
/Core/Element
/Core/Relationship
/Security/VulnAssessmentRelationship
/Security/VexVulnAssessmentRelationship
/Security/VexNotAffectedVulnAssessmentRelationship
Properties
Property | Type | minCount | maxCount |
|---|---|---|---|
impactStatement | xsd:string | 0 | 1 |
impactStatementTime | /Core/DateTime | 0 | 1 |
justificationType | VexJustificationType | 0 | 1 |
All properties
Property | Type | minCount | maxCount |
|---|---|---|---|
assessedElement | SoftwareArtifact | 0 | 1 |
comment | xsd:string | 0 | 1 |
completeness | RelationshipCompleteness | 0 | 1 |
creationInfo | CreationInfo | 1 | 1 |
description | xsd:string | 0 | 1 |
endTime | DateTime | 0 | 1 |
extension | Extension | 0 | * |
externalIdentifier | ExternalIdentifier | 0 | * |
externalRef | ExternalRef | 0 | * |
from | Element | 1 | 1 |
impactStatement | xsd:string | 0 | 1 |
impactStatementTime | DateTime | 0 | 1 |
justificationType | VexJustificationType | 0 | 1 |
modifiedTime | DateTime | 0 | 1 |
name | xsd:string | 0 | 1 |
publishedTime | DateTime | 0 | 1 |
relationshipType | RelationshipType | 1 | 1 |
spdxId | xsd:anyURI | 1 | 1 |
startTime | DateTime | 0 | 1 |
statusNotes | xsd:string | 0 | 1 |
summary | xsd:string | 0 | 1 |
suppliedBy | Agent | 0 | 1 |
to | Element | 1 | * |
verifiedUsing | IntegrityMethod | 0 | * |
vexVersion | xsd:string | 0 | 1 |
withdrawnTime | DateTime | 0 | 1 |
9.2.10 VexUnderInvestigationVulnAssessmentRelationship
Summary
Designates elements as products where the impact of a vulnerability is being investigated.
Description
VexUnderInvestigationVulnAssessmentRelationship links a vulnerability to a number of products stating the vulnerability’s impact on them is being investigated. It represents the VEX under_investigation status.
Constraints
When linking elements using a VexUnderInvestigationVulnAssessmentRelationship the following requirements shall be observed:
- Elements linked with a VexUnderInvestigationVulnAssessmentRelationship are constrained to using the underInvestigationFor relationship type.
Example
{
"type": "security_VexUnderInvestigationVulnAssessmentRelationship",
"spdxId": "urn:spdx.dev:vex-underInvestigation-1",
"relationshipType": "underInvestigationFor",
"from": "urn:spdx.dev:vuln-cve-2020-28498",
"to": ["urn:product-acme-application-1.3"],
"security_assessedElement": "urn:npm-elliptic-6.5.2",
"suppliedBy": "urn:spdx.dev:agent-jane-doe",
"security_publishedTime": "2021-03-09T11:04:53Z"
}
Metadata
https://spdx.org/rdf/3.0/terms/Security/VexUnderInvestigationVulnAssessmentRelationship
Name | VexUnderInvestigationVulnAssessmentRelationship |
Instantiability | Concrete |
SubclassOf | VexVulnAssessmentRelationship |
Class hierarchy
/Core/Element
/Core/Relationship
/Security/VulnAssessmentRelationship
/Security/VexVulnAssessmentRelationship
/Security/VexUnderInvestigationVulnAssessmentRelationship
All properties
Property | Type | minCount | maxCount |
|---|---|---|---|
assessedElement | SoftwareArtifact | 0 | 1 |
comment | xsd:string | 0 | 1 |
completeness | RelationshipCompleteness | 0 | 1 |
creationInfo | CreationInfo | 1 | 1 |
description | xsd:string | 0 | 1 |
endTime | DateTime | 0 | 1 |
extension | Extension | 0 | * |
externalIdentifier | ExternalIdentifier | 0 | * |
externalRef | ExternalRef | 0 | * |
from | Element | 1 | 1 |
modifiedTime | DateTime | 0 | 1 |
name | xsd:string | 0 | 1 |
publishedTime | DateTime | 0 | 1 |
relationshipType | RelationshipType | 1 | 1 |
spdxId | xsd:anyURI | 1 | 1 |
startTime | DateTime | 0 | 1 |
statusNotes | xsd:string | 0 | 1 |
summary | xsd:string | 0 | 1 |
suppliedBy | Agent | 0 | 1 |
to | Element | 1 | * |
verifiedUsing | IntegrityMethod | 0 | * |
vexVersion | xsd:string | 0 | 1 |
withdrawnTime | DateTime | 0 | 1 |
9.2.11 VexVulnAssessmentRelationship
Summary
Abstract ancestor class for all VEX relationships.
Description
VexVulnAssessmentRelationship is an abstract subclass that defined the common properties shared by all the SPDX-VEX status relationships.
Constraints
When linking elements using a VexVulnAssessmentRelationship, the following requirements shall be observed:
- The to: end shall point to elements representing the VEX products.
To specify a different element where the vulnerability was detected, the VEX relationship can optionally specify subcomponents using the assessedElement property.
VEX inherits information from the document level down to its statements. When a statement is missing information it can be completed by reading the equivalent field from the containing document. For example, if a VEX relationship is missing data in its createdBy property, tools shall consider the entity listed in the CreationInfo section of the document as the VEX author. In the same way, when a VEX relationship does not have a created property, the document’s date shall be considered as authoritative.
Metadata
https://spdx.org/rdf/3.0/terms/Security/VexVulnAssessmentRelationship
Name | VexVulnAssessmentRelationship |
Instantiability | Abstract |
SubclassOf | VulnAssessmentRelationship |
Class hierarchy
/Core/Element
/Core/Relationship
/Security/VulnAssessmentRelationship
/Security/VexVulnAssessmentRelationship
Properties
Property | Type | minCount | maxCount |
|---|---|---|---|
statusNotes | xsd:string | 0 | 1 |
vexVersion | xsd:string | 0 | 1 |
All properties
Property | Type | minCount | maxCount |
|---|---|---|---|
assessedElement | SoftwareArtifact | 0 | 1 |
comment | xsd:string | 0 | 1 |
completeness | RelationshipCompleteness | 0 | 1 |
creationInfo | CreationInfo | 1 | 1 |
description | xsd:string | 0 | 1 |
endTime | DateTime | 0 | 1 |
extension | Extension | 0 | * |
externalIdentifier | ExternalIdentifier | 0 | * |
externalRef | ExternalRef | 0 | * |
from | Element | 1 | 1 |
modifiedTime | DateTime | 0 | 1 |
name | xsd:string | 0 | 1 |
publishedTime | DateTime | 0 | 1 |
relationshipType | RelationshipType | 1 | 1 |
spdxId | xsd:anyURI | 1 | 1 |
startTime | DateTime | 0 | 1 |
statusNotes | xsd:string | 0 | 1 |
summary | xsd:string | 0 | 1 |
suppliedBy | Agent | 0 | 1 |
to | Element | 1 | * |
verifiedUsing | IntegrityMethod | 0 | * |
vexVersion | xsd:string | 0 | 1 |
withdrawnTime | DateTime | 0 | 1 |
9.2.12 VulnAssessmentRelationship
Summary
Abstract ancestor class for all vulnerability assessments.
Description
VulnAssessmentRelationship is the ancestor class common to all vulnerability assessment relationships. It factors out the common properties shared by them.
Metadata
https://spdx.org/rdf/3.0/terms/Security/VulnAssessmentRelationship
Name | VulnAssessmentRelationship |
Instantiability | Abstract |
SubclassOf | /Core/Relationship |
Class hierarchy
/Core/Element
/Core/Relationship
/Security/VulnAssessmentRelationship
Properties
Property | Type | minCount | maxCount |
|---|---|---|---|
/Core/suppliedBy | /Core/Agent | 0 | 1 |
assessedElement | /Software/SoftwareArtifact | 0 | 1 |
modifiedTime | /Core/DateTime | 0 | 1 |
publishedTime | /Core/DateTime | 0 | 1 |
withdrawnTime | /Core/DateTime | 0 | 1 |
All properties
Property | Type | minCount | maxCount |
|---|---|---|---|
assessedElement | SoftwareArtifact | 0 | 1 |
comment | xsd:string | 0 | 1 |
completeness | RelationshipCompleteness | 0 | 1 |
creationInfo | CreationInfo | 1 | 1 |
description | xsd:string | 0 | 1 |
endTime | DateTime | 0 | 1 |
extension | Extension | 0 | * |
externalIdentifier | ExternalIdentifier | 0 | * |
externalRef | ExternalRef | 0 | * |
from | Element | 1 | 1 |
modifiedTime | DateTime | 0 | 1 |
name | xsd:string | 0 | 1 |
publishedTime | DateTime | 0 | 1 |
relationshipType | RelationshipType | 1 | 1 |
spdxId | xsd:anyURI | 1 | 1 |
startTime | DateTime | 0 | 1 |
summary | xsd:string | 0 | 1 |
suppliedBy | Agent | 0 | 1 |
to | Element | 1 | * |
verifiedUsing | IntegrityMethod | 0 | * |
withdrawnTime | DateTime | 0 | 1 |
9.2.13 Vulnerability
Summary
Specifies a vulnerability and its associated information.
Description
Specifies a vulnerability and its associated information.
Example
{
"type": "security_Vulnerability",
"spdxId": "urn:spdx.dev:vuln-1",
"summary": "Use of a Broken or Risky Cryptographic Algorithm",
"description": "The package `elliptic` before version 6.5.4 are vulnerable to ...",
"security_modifiedTime": "2021-03-08T16:06:43Z",
"security_publishedTime": "2021-03-08T16:02:50Z",
"externalIdentifier": [
{
"type": "ExternalIdentifier",
"externalIdentifierType": "cve",
"identifier": "CVE-2020-2849",
"identifierLocator": [
"https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-28498",
"https://www.cve.org/CVERecord?id=CVE-2020-28498"
],
"issuingAuthority": "urn:spdx.dev:agent-cve.org"
},
{
"type": "ExternalIdentifier",
"externalIdentifierType": "securityOther",
"identifier": "GHSA-r9p9-mrjm-926w",
"identifierLocator": [
"https://github.com/advisories/GHSA-r9p9-mrjm-926w"
]
},
{
"type": "ExternalIdentifier",
"externalIdentifierType": "securityOther",
"identifier": "SNYK-JS-ELLIPTIC-1064899",
"identifierLocator": [
"https://security.snyk.io/vuln/SNYK-JS-ELLIPTIC-1064899"
]
}
],
"externalRef": [
{
"type": "ExternalRef",
"externalRefType": "securityAdvisory",
"locator": [
"https://nvd.nist.gov/vuln/detail/CVE-2020-28498"
]
},
{
"type": "ExternalRef",
"externalRefType": "securityAdvisory",
"locator": [
"https://ubuntu.com/security/CVE-2020-28498"
]
},
{
"type": "ExternalRef",
"externalRefType": "securityOther",
"locator": [
"https://github.com/indutny/elliptic/pull/244/commits"
]
},
{
"type": "ExternalRef",
"externalRefType": "securityOther",
"locator": [
"https://github.com/christianlundkvist/blog/2020_05_26_secp256k1_twist_attacks.md"
]
}
]
},
{
"type": "Relationship",
"spdxId": "urn:spdx.dev:vulnRelationship-1",
"relationshipType": "hasAssociatedVulnerability",
"from": "urn:npm-elliptic-6.5.2",
"to": [
"urn:spdx.dev:vuln-1"
],
"startTime": "2021-03-08T16:06:50Z"
},
{
"type": "Relationship",
"spdxId": "urn:spdx.dev:vulnAgentRel-1",
"relationshipType": "publishedBy",
"from": "urn:spdx.dev:vuln-1",
"to": [
"urn:spdx.dev:agent-snyk"
],
"startTime": "2021-03-08T16:06:50Z"
}
Metadata
https://spdx.org/rdf/3.0/terms/Security/Vulnerability
Name | Vulnerability |
Instantiability | Concrete |
SubclassOf | /Core/Artifact |
Class hierarchy
/Core/Element
/Core/Artifact
/Security/Vulnerability
Properties
Property | Type | minCount | maxCount |
|---|---|---|---|
modifiedTime | /Core/DateTime | 0 | 1 |
publishedTime | /Core/DateTime | 0 | 1 |
withdrawnTime | /Core/DateTime | 0 | 1 |
All properties
Property | Type | minCount | maxCount |
|---|---|---|---|
builtTime | DateTime | 0 | 1 |
comment | xsd:string | 0 | 1 |
creationInfo | CreationInfo | 1 | 1 |
description | xsd:string | 0 | 1 |
extension | Extension | 0 | * |
externalIdentifier | ExternalIdentifier | 0 | * |
externalRef | ExternalRef | 0 | * |
modifiedTime | DateTime | 0 | 1 |
name | xsd:string | 0 | 1 |
originatedBy | Agent | 0 | * |
publishedTime | DateTime | 0 | 1 |
releaseTime | DateTime | 0 | 1 |
spdxId | xsd:anyURI | 1 | 1 |
standardName | xsd:string | 0 | * |
summary | xsd:string | 0 | 1 |
suppliedBy | Agent | 0 | 1 |
supportLevel | SupportType | 0 | * |
validUntilTime | DateTime | 0 | 1 |
verifiedUsing | IntegrityMethod | 0 | * |
withdrawnTime | DateTime | 0 | 1 |
9.3 Properties
9.3.1 actionStatement
Summary
Provides advise on how to mitigate or remediate a vulnerability when a VEX product is affected by it.
Description
When an element is referenced with a VexAffectedVulnAssessmentRelationship, the relationship shall include one actionStatement that should describe actions to remediate or mitigate the vulnerability.
Metadata
https://spdx.org/rdf/3.0/terms/Security/actionStatement
Name | actionStatement |
Nature | DataProperty |
Range | xsd:string |
Referenced
- /Security/VexAffectedVulnAssessmentRelationship
9.3.2 actionStatementTime
Summary
Records the time when a recommended action was communicated in a VEX statement to mitigate a vulnerability.
Description
When a VEX statement communicates an affected status, the author shall include an action statement with a recommended action to help mitigate the vulnerability’s impact. The actionStatementTime property records the time when the action statement was first communicated.
Metadata
https://spdx.org/rdf/3.0/terms/Security/actionStatementTime
Name | actionStatementTime |
Nature | DataProperty |
Range | /Core/DateTime |
Referenced
- /Security/VexAffectedVulnAssessmentRelationship
9.3.3 assessedElement
Summary
Specifies an Element contained in a piece of software where a vulnerability was found.
Description
Specifies subpackages, files or snippets referenced by a security assessment to specify the precise location where a vulnerability was found.
Metadata
https://spdx.org/rdf/3.0/terms/Security/assessedElement
Name | assessedElement |
Nature | ObjectProperty |
Range | /Software/SoftwareArtifact |
Referenced
- /Security/VulnAssessmentRelationship
9.3.4 catalogType
Summary
Specifies the exploit catalog type.
Description
A catalogType is a mandatory value and shall select one of the existing entries in the ExploitCatalogType vocabulary.
Metadata
https://spdx.org/rdf/3.0/terms/Security/catalogType
Name | catalogType |
Nature | ObjectProperty |
Range | ExploitCatalogType |
Referenced
- /Security/ExploitCatalogVulnAssessmentRelationship
9.3.5 decisionType
Summary
Provide the enumeration of possible decisions in the Stakeholder-Specific Vulnerability Categorization (SSVC) decision tree.
Description
A decisionType is a mandatory value and shall select one of the four entries in the SsvcDecisionType vocabulary.
Metadata
https://spdx.org/rdf/3.0/terms/Security/decisionType
Name | decisionType |
Nature | ObjectProperty |
Range | SsvcDecisionType |
Referenced
- /Security/SsvcVulnAssessmentRelationship
9.3.6 exploited
Summary
Describe that a CVE is known to have an exploit because it’s been listed in an exploit catalog.
Description
This field is set when a CVE is listed in an exploit catalog.
Metadata
https://spdx.org/rdf/3.0/terms/Security/exploited
Name | exploited |
Nature | DataProperty |
Range | xsd:boolean |
Referenced
- /Security/ExploitCatalogVulnAssessmentRelationship
9.3.7 impactStatement
Summary
Explains why a VEX product is not affected by a vulnerability. It is an alternative in VexNotAffectedVulnAssessmentRelationship to the machine-readable justification label.
Description
When a VEX product element is related with a VexNotAffectedVulnAssessmentRelationship and a machine-readable justification label is not provided, then an impactStatement that further explains how or why the product(s) are not affected by the vulnerability shall be provided.
Metadata
https://spdx.org/rdf/3.0/terms/Security/impactStatement
Name | impactStatement |
Nature | DataProperty |
Range | xsd:string |
Referenced
- /Security/VexNotAffectedVulnAssessmentRelationship
9.3.8 impactStatementTime
Summary
Timestamp of impact statement.
Description
Specifies the time when the impact statement was recorded.
Metadata
https://spdx.org/rdf/3.0/terms/Security/impactStatementTime
Name | impactStatementTime |
Nature | DataProperty |
Range | /Core/DateTime |
Referenced
- /Security/VexNotAffectedVulnAssessmentRelationship
9.3.9 justificationType
Summary
Impact justification label to be used when linking a vulnerability to an element representing a VEX product with a VexNotAffectedVulnAssessmentRelationship relationship.
Description
When stating that an element is not affected by a vulnerability, the VexNotAffectedVulnAssessmentRelationship shall include a justification from the machine-readable labels catalog informing the reason the element is not impacted.
impactStatement which is a string with English prose can be used instead or as complementary to the justification label, but one of both shall be defined.
Metadata
https://spdx.org/rdf/3.0/terms/Security/justificationType
Name | justificationType |
Nature | ObjectProperty |
Range | VexJustificationType |
Referenced
- /Security/VexNotAffectedVulnAssessmentRelationship
9.3.10 locator
Summary
Provides the location of an exploit catalog.
Description
A locator provides the location of an exploit catalog.
Metadata
https://spdx.org/rdf/3.0/terms/Security/locator
Name | locator |
Nature | DataProperty |
Range | xsd:anyURI |
Referenced
- /Security/ExploitCatalogVulnAssessmentRelationship
9.3.11 modifiedTime
Summary
Specifies a time when a vulnerability assessment was modified
Description
Specifies a time when a vulnerability assessment was last modified.
Metadata
https://spdx.org/rdf/3.0/terms/Security/modifiedTime
Name | modifiedTime |
Nature | DataProperty |
Range | /Core/DateTime |
Referenced
- /Security/VulnAssessmentRelationship
- /Security/Vulnerability
9.3.12 percentile
Summary
The percentile of the current probability score.
Description
The percentile between 0 and 1 (0 and 100%) of the current probability score, the proportion of all scored vulnerabilities with the same or a lower probability score. The definition follows “percentile” in EPSS Data.
Metadata
https://spdx.org/rdf/3.0/terms/Security/percentile
Name | percentile |
Nature | DataProperty |
Range | xsd:decimal |
Referenced
- /Security/EpssVulnAssessmentRelationship
9.3.13 probability
Summary
A probability score between 0 and 1 of a vulnerability being exploited.
Description
The probability score between 0 and 1 (0 and 100%) estimating the likelihood of exploitation in the wild in the next 30 days (following score publication). The definition follows “epss” in EPSS Data.
Metadata
https://spdx.org/rdf/3.0/terms/Security/probability
Name | probability |
Nature | DataProperty |
Range | xsd:decimal |
Referenced
- /Security/EpssVulnAssessmentRelationship
9.3.14 publishedTime
Summary
Specifies the time when a vulnerability was published.
Description
Specifies the time when a vulnerability was first published.
Metadata
https://spdx.org/rdf/3.0/terms/Security/publishedTime
Name | publishedTime |
Nature | DataProperty |
Range | /Core/DateTime |
Referenced
- /Security/VulnAssessmentRelationship
- /Security/Vulnerability
9.3.15 score
Summary
Provides a numerical (0-10) representation of the severity of a vulnerability.
Description
The score provides information on the severity of a vulnerability per the Common Vulnerability Scoring System as defined by Forum of Incident Response and Security Teams.
Metadata
https://spdx.org/rdf/3.0/terms/Security/score
Name | score |
Nature | DataProperty |
Range | xsd:decimal |
Referenced
- /Security/CvssV2VulnAssessmentRelationship
- /Security/CvssV3VulnAssessmentRelationship
- /Security/CvssV4VulnAssessmentRelationship
9.3.16 severity
Summary
Specifies the CVSS qualitative severity rating of a vulnerability in relation to a piece of software.
Description
The severity field provides a human readable string of the resulting numerical CVSS score.
Metadata
https://spdx.org/rdf/3.0/terms/Security/severity
Name | severity |
Nature | ObjectProperty |
Range | CvssSeverityType |
Referenced
- /Security/CvssV3VulnAssessmentRelationship
- /Security/CvssV4VulnAssessmentRelationship
9.3.17 statusNotes
Summary
Conveys information about how VEX status was determined.
Description
A VEX statement may convey information about how status was determined and may reference other VEX information.
Metadata
https://spdx.org/rdf/3.0/terms/Security/statusNotes
Name | statusNotes |
Nature | DataProperty |
Range | xsd:string |
Referenced
- /Security/VexVulnAssessmentRelationship
9.3.18 vectorString
Summary
Specifies the CVSS vector string for a vulnerability.
Description
Specifies any combination of the CVSS Base, Temporal, Threat, Environmental, and/or Supplemental vector string values for a vulnerability.
Supports vectorStrings specified in all CVSS versions.
Constraints
String values for the vectorString range shall only include the abbreviated form of metric names specified in CVSS specifications, e.g. Common Vulnerability Scoring System Vector String.
Metadata
https://spdx.org/rdf/3.0/terms/Security/vectorString
Name | vectorString |
Nature | DataProperty |
Range | xsd:string |
Referenced
- /Security/CvssV2VulnAssessmentRelationship
- /Security/CvssV3VulnAssessmentRelationship
- /Security/CvssV4VulnAssessmentRelationship
9.3.19 vexVersion
Summary
Specifies the version of a VEX statement.
Description
The statement version default value is zero. When any VEX-related content changes, the version shall be incremented.
Metadata
https://spdx.org/rdf/3.0/terms/Security/vexVersion
Name | vexVersion |
Nature | DataProperty |
Range | xsd:string |
Referenced
- /Security/VexVulnAssessmentRelationship
9.3.20 withdrawnTime
Summary
Specified the time and date when a vulnerability was withdrawn.
Description
Specified the time and date when a vulnerability was withdrawn.
Metadata
https://spdx.org/rdf/3.0/terms/Security/withdrawnTime
Name | withdrawnTime |
Nature | DataProperty |
Range | /Core/DateTime |
Referenced
- /Security/VulnAssessmentRelationship
- /Security/Vulnerability
9.4 Vocabularies
9.4.1 CvssSeverityType
Summary
Specifies the CVSS base, temporal, threat, or environmental severity type.
Description
CvssSeverityType specifies the Common Vulnerability Scoring System (CVSS) severity type, defined in the CVSS specifications as the textual representation of the numeric CVSS score.
The severity type entries are inclusive of and applicable to enumerations found in Common Vulnerability Scoring System v3.0: Specification Document and Common Vulnerability Scoring System version 4.0: Specification Document.
CvssSeverityType is a mandatory field because baseSeverity is required in the CVSS 3.0 schema, CVSS 3.1 schema, and CVSS 4.0 schema.
The field can be used to document the base, temporal, threat, or environmental severity.
Metadata
https://spdx.org/rdf/3.0/terms/Security/CvssSeverityType
Name | CvssSeverityType |
Entries
- critical: When a CVSS score is between 9.0 - 10.0.
- high: When a CVSS score is between 7.0 - 8.9.
- low: When a CVSS score is between 0.1 - 3.9.
- medium: When a CVSS score is between 4.0 - 6.9.
- none: When a CVSS score is 0.0.
9.4.2 ExploitCatalogType
Summary
Specifies the exploit catalog type.
Description
ExploitCatalogType specifies the type of exploit catalog that a vulnerability is listed in.
Metadata
https://spdx.org/rdf/3.0/terms/Security/ExploitCatalogType
Name | ExploitCatalogType |
Entries
- kev: CISA’s Known Exploited Vulnerability (KEV) catalog.
- other: Other exploit catalogs.
9.4.3 SsvcDecisionType
Summary
Specifies the SSVC decision type.
Description
SsvcDecisionType specifies the type of decision that’s been made according to the Stakeholder-Specific Vulnerability Categorization (SSVC).
Metadata
https://spdx.org/rdf/3.0/terms/Security/SsvcDecisionType
Name | SsvcDecisionType |
Entries
- act: The vulnerability requires attention from the organization’s internal, supervisory-level and leadership-level individuals. Necessary actions include requesting assistance or information about the vulnerability, as well as publishing a notification either internally and/or externally. Typically, internal groups would meet to determine the overall response and then execute agreed upon actions. CISA recommends remediating Act vulnerabilities as soon as possible.
- attend: The vulnerability requires attention from the organization’s internal, supervisory-level individuals. Necessary actions include requesting assistance or information about the vulnerability, and may involve publishing a notification either internally and/or externally. CISA recommends remediating Attend vulnerabilities sooner than standard update timelines.
- track: The vulnerability does not require action at this time. The organization would continue to track the vulnerability and reassess it if new information becomes available. CISA recommends remediating Track vulnerabilities within standard update timelines.
- trackStar: (“Track*” in the SSVC spec) The vulnerability contains specific characteristics that may require closer monitoring for changes. CISA recommends remediating Track* vulnerabilities within standard update timelines.
9.4.4 VexJustificationType
Summary
Specifies the VEX justification type.
Description
VexJustificationType specifies the type of Vulnerability Exploitability eXchange (VEX) justification.
Metadata
https://spdx.org/rdf/3.0/terms/Security/VexJustificationType
Name | VexJustificationType |
Entries
- componentNotPresent: The software is not affected because the vulnerable component is not in the product.
- inlineMitigationsAlreadyExist: Built-in inline controls or mitigations prevent an adversary from leveraging the vulnerability.
- vulnerableCodeCannotBeControlledByAdversary: The vulnerable component is present, and the component contains the vulnerable code. However, vulnerable code is used in such a way that an attacker cannot mount any anticipated attack.
- vulnerableCodeNotInExecutePath: The affected code is not reachable through the execution of the code, including non-anticipated states of the product.
- vulnerableCodeNotPresent: The product is not affected because the code underlying the vulnerability is not present in the product.
10.0 Licensing
10.1 Profile information
10.1.1 Licensing profile
Summary
The Licensing profile defines a minimum set of license information to facilitate compliance with typical license use cases.
Description
The Licensing profile only contains the additional requirement that any Software Artifact shall have a Relationship of type hasConcludedLicense.
Classes and property restrictions are defined in the SimpleLicensing profile (classes and properties associated with license expression strings; see Annex B) and in the ExpandedLicensing profile (classes and properties used for a fully parsed syntax tree of license expressions).
There are 2 relationship types related to licensing - hasDeclaredLicense and hasConcludedLicense.
If the hasConcludedLicense for a Software Artifact is not the same as its hasDeclaredLicense, a written explanation should be provided in the hasConcludedLicense relationship comment field.
A written explanation of a relationship to a NoAssertionLicense may be provided in the comment field for the relationship.
hasDeclaredLicense
A hasDeclaredLicense identifies the license information actually found in the Software Artifact, for example as detected by use of automated tooling.
This field is not intended to capture license information obtained from an external source, such as a package’s website. Such information can be included, as needed, in the hasConcludedLicense field.
A hasDeclaredLicense may be expressed differently in practice for different types of Software Artifacts. For example:
- for Packages, it would include license info for the Package as a whole, found in the Package itself (e.g., LICENSE file, README file, metadata in the Package, etc.), but it would not include any license information that is not in the Package itself (e.g., license information from the project’s website or from a third party repository or website).
- for Files, it would include license info found in the File itself (e.g., license header or notice, comments indicating the license, SPDX-License-Identifier expression), but it would not include license info found in a different file (e.g., LICENSE file in the top directory of a repository).
- for Snippets, it would include license info found in the Snippet itself (e.g., license notice, comments, SPDX-License-Identifier expression), but it would not include license info found elsewhere in the File or in a different File (e.g., comment at top of File if it is not within the Snippet, LICENSE file in the top directory of a repository).
A hasDeclaredLicense relationship to NoneLicense indicates that the corresponding Package, File or Snippet contains no license information whatsoever.
A hasDeclaredLicense relationship to NoAssertionLicense indicates that one of the following applies:
- the SPDX data creator has attempted to but cannot reach a reasonable objective determination;
- the SPDX data creator has made no attempt to determine this field; or
- the SPDX data creator has intentionally provided no information (no meaning should be implied by doing so).
If a hasDeclaredLicense relationship is not present, no assumptions can be made about whether or not a hasDeclaredLicense exists.
Note that a missing hasDeclaredLicense is not the same as a relationship to NoAssertionLicense since the latter is a “known unknown” whereas no assumptions can be made from a missing hasDeclaredLicense relationship.
hasConcludedLicense
A hasConcludedLicense is the license identified by the SPDX data creator, based on analyzing the license information in the Software Artifact and other information to arrive at a reasonably objective conclusion as to what license governs the Software Artifact.
A hasConcludedLicense relationship to NoneLicense indicates that the SPDX data creator has looked and did not find any license information for this Software Artifact.
A hasConcludedLicense relationship to NoAssertionLicense indicates that one of the following applies:
- the SPDX data creator has attempted to but cannot reach a reasonable objective determination;
- the SPDX data creator has made no attempt to determine this field; or
- the SPDX data creator has intentionally provided no information (no meaning should be implied by doing so).
If a hasConcludedLicense is not present, no assumptions can be made about whether or not a hasConcludedLicense exists.
Note that a missing hasConcludedLicense is not the same as a relationship to a NoAssertionLicense since the latter is a “known unknown” whereas no assumptions can be made from a missing hasConcludedLicense relationship.
Metadata
https://spdx.org/rdf/3.0/terms/Licensing
Name | Licensing |
Profile conformance
For an element collection to be conformant with this profile, the following has to hold:
- for every /Software/SoftwareArtifact there shall exist exactly one /Core/Relationship of type hasConcludedLicense having that element as its from property and a /SimpleLicensing/AnyLicenseInfo as its to property.
11.0 SimpleLicensing
11.1 Profile information
11.1.1 SimpleLicensing profile
Summary
Additional metadata relating to software licensing.
Description
The SimpleLicensing profile provides classes and properties to express licenses as a license expression string (see Annex B).
It also provides the base abstract class, AnyLicenseInfo, used for references to license information.
The SimpleLicensingText class provides a place to record any license text found that does not match a license on the SPDX License List.
The ExpandedLicensing profile can be used to represent the complete parsed license expressions.
Metadata
https://spdx.org/rdf/3.0/terms/SimpleLicensing
Name | SimpleLicensing |
11.2 Classes
11.2.1 AnyLicenseInfo
Summary
Abstract class representing a license combination consisting of one or more licenses.
Description
AnyLicenseInfo is an abstract class representing a license combination consisting of one or more licenses (optionally including additional text), which may be combined according to the SPDX license expression syntax (see Annex B).
An AnyLicenseInfo is used by licensing properties of software artifacts.
It can be:
- a NoneLicense;
- a NoAssertionLicense;
- a single license (either on the SPDX License List or a custom-defined license (see 12.2.2));
- a single license with an “or later” operator applied;
- the foregoing with additional text applied; or
- a set of licenses combined by applying “AND” and “OR” operators recursively.
Metadata
https://spdx.org/rdf/3.0/terms/SimpleLicensing/AnyLicenseInfo
Name | AnyLicenseInfo |
Instantiability | Abstract |
SubclassOf | /Core/Element |
Class hierarchy
/Core/Element
/SimpleLicensing/AnyLicenseInfo
All properties
Property | Type | minCount | maxCount |
|---|---|---|---|
comment | xsd:string | 0 | 1 |
creationInfo | CreationInfo | 1 | 1 |
description | xsd:string | 0 | 1 |
extension | Extension | 0 | * |
externalIdentifier | ExternalIdentifier | 0 | * |
externalRef | ExternalRef | 0 | * |
name | xsd:string | 0 | 1 |
spdxId | xsd:anyURI | 1 | 1 |
summary | xsd:string | 0 | 1 |
verifiedUsing | IntegrityMethod | 0 | * |
11.2.2 LicenseExpression
Summary
An SPDX Element containing an SPDX license expression string.
Description
A LicenseExpression enables the representation, in a single string, of a combination of one or more licenses, together with additions such as license exceptions.
The syntax for a licenseExpression string is set forth in Annex B. A licenseExpression string is not valid if it does not conform to the grammar set forth in that Annex.
The ExpandedLicensing profile can be used to represent the complete parsed license expression as a combination of license objects.
Metadata
https://spdx.org/rdf/3.0/terms/SimpleLicensing/LicenseExpression
Name | LicenseExpression |
Instantiability | Concrete |
SubclassOf | AnyLicenseInfo |
Class hierarchy
/Core/Element
/SimpleLicensing/AnyLicenseInfo
/SimpleLicensing/LicenseExpression
Properties
Property | Type | minCount | maxCount |
|---|---|---|---|
customIdToUri | /Core/DictionaryEntry | 0 | * |
licenseExpression | xsd:string | 1 | 1 |
licenseListVersion | /Core/SemVer | 0 | 1 |
All properties
Property | Type | minCount | maxCount |
|---|---|---|---|
comment | xsd:string | 0 | 1 |
creationInfo | CreationInfo | 1 | 1 |
customIdToUri | DictionaryEntry | 0 | * |
description | xsd:string | 0 | 1 |
extension | Extension | 0 | * |
externalIdentifier | ExternalIdentifier | 0 | * |
externalRef | ExternalRef | 0 | * |
licenseExpression | xsd:string | 1 | 1 |
licenseListVersion | SemVer | 0 | 1 |
name | xsd:string | 0 | 1 |
spdxId | xsd:anyURI | 1 | 1 |
summary | xsd:string | 0 | 1 |
verifiedUsing | IntegrityMethod | 0 | * |
11.2.3 SimpleLicensingText
Summary
A license or addition that is not listed on the SPDX License List.
Description
A SimpleLicensingText represents a License or Addition that is not listed on the SPDX License List, and is therefore defined by an SPDX data creator.
Metadata
https://spdx.org/rdf/3.0/terms/SimpleLicensing/SimpleLicensingText
Name | SimpleLicensingText |
Instantiability | Concrete |
SubclassOf | /Core/Element |
Class hierarchy
/Core/Element
/SimpleLicensing/SimpleLicensingText
Properties
Property | Type | minCount | maxCount |
|---|---|---|---|
licenseText | xsd:string | 1 | 1 |
All properties
Property | Type | minCount | maxCount |
|---|---|---|---|
comment | xsd:string | 0 | 1 |
creationInfo | CreationInfo | 1 | 1 |
description | xsd:string | 0 | 1 |
extension | Extension | 0 | * |
externalIdentifier | ExternalIdentifier | 0 | * |
externalRef | ExternalRef | 0 | * |
licenseText | xsd:string | 1 | 1 |
name | xsd:string | 0 | 1 |
spdxId | xsd:anyURI | 1 | 1 |
summary | xsd:string | 0 | 1 |
verifiedUsing | IntegrityMethod | 0 | * |
11.3 Properties
11.3.1 customIdToUri
Summary
Maps a LicenseRef or AdditionRef string for a Custom License or a Custom License Addition to its URI ID.
Description
Within a License Expression, references can be made to a Custom License or a Custom License Addition.
The License Expression syntax (see Annex B) dictates any reference starting with a “LicenseRef-” or “AdditionRef-” refers to license or addition text not found in the official SPDX License List.
These custom licenses shall be a CustomLicense, a CustomLicenseAddition, or a SimpleLicensingText which are identified with a unique URI identifier.
The key for the DictionaryEntry is the string used in the license expression and the value is the URI for the corresponding CustomLicense, CustomLicenseAddition, or SimpleLicensingText.
Metadata
https://spdx.org/rdf/3.0/terms/SimpleLicensing/customIdToUri
Name | customIdToUri |
Nature | ObjectProperty |
Range | /Core/DictionaryEntry |
Referenced
- /SimpleLicensing/LicenseExpression
11.3.2 licenseExpression
Summary
A string in the license expression format.
Description
A licenseExpression enables the representation, in a single string, of a combination of one or more licenses, together with additions such as license exceptions.
The syntax for a licenseExpression string is set forth in Annex B. A licenseExpression string is not valid if it does not conform to the grammar set forth in that Annex.
The ExpandedLicensing profile can be used to represent the complete parsed license expression as a combination of license objects.
Metadata
https://spdx.org/rdf/3.0/terms/SimpleLicensing/licenseExpression
Name | licenseExpression |
Nature | DataProperty |
Range | xsd:string |
Referenced
- /SimpleLicensing/LicenseExpression
11.3.3 licenseListVersion
Summary
The version of the SPDX License List used in the license expression.
Description
Recognizing that licenses are added to the SPDX License List with each subsequent version, the intent is to provide consumers with the version of the SPDX License List used.
This anticipates that in the future, license expression can used a version of the SPDX License List that is older than the then current one.
The specified version of the SPDX License List shall include all listed licenses and exceptions referenced in the expression.
Metadata
https://spdx.org/rdf/3.0/terms/SimpleLicensing/licenseListVersion
Name | licenseListVersion |
Nature | DataProperty |
Range | /Core/SemVer |
Referenced
- /SimpleLicensing/LicenseExpression
11.3.4 licenseText
Summary
Identifies the full text of a License or Addition.
Description
A licenseText contains the plain text of the License or Addition, without templating or other similar markup.
Users of the licenseText for a License can apply the SPDX License List Matching Guidelines (see Annex C) when comparing it to another text for matching purposes.
Metadata
https://spdx.org/rdf/3.0/terms/SimpleLicensing/licenseText
Name | licenseText |
Nature | DataProperty |
Range | xsd:string |
Referenced
- /ExpandedLicensing/License
- /SimpleLicensing/SimpleLicensingText
12.0 ExpandedLicensing
12.1 Profile information
12.1.1 ExpandedLicensing profile
Summary
Fully expanded license expressions.
Description
This profile supports representing a fully expanded license expression (see Annex B) in object form.
Metadata
https://spdx.org/rdf/3.0/terms/ExpandedLicensing
Name | ExpandedLicensing |
12.2 Classes
12.2.1 ConjunctiveLicenseSet
Summary
Portion of an AnyLicenseInfo representing a set of licensing information where all elements apply.
Description
A ConjunctiveLicenseSet indicates that each of its subsidiary AnyLicenseInfos apply. In other words, a ConjunctiveLicenseSet of two or more licenses represents a licensing situation where all of the specified licenses are to be complied with. It is represented in the SPDX License Expression Syntax by the AND operator.
It is syntactically correct to specify a ConjunctiveLicenseSet where the subsidiary AnyLicenseInfos may be “incompatible” according to a particular interpretation of the corresponding Licenses. The SPDX License Expression Syntax in Annex B does not take into account interpretation of license texts, which is left to the consumer of SPDX data to determine for themselves.
Metadata
https://spdx.org/rdf/3.0/terms/ExpandedLicensing/ConjunctiveLicenseSet
Name | ConjunctiveLicenseSet |
Instantiability | Concrete |
SubclassOf | /SimpleLicensing/AnyLicenseInfo |
Class hierarchy
/Core/Element
/SimpleLicensing/AnyLicenseInfo
/ExpandedLicensing/ConjunctiveLicenseSet
Properties
Property | Type | minCount | maxCount |
|---|---|---|---|
Member | /SimpleLicensing/AnyLicenseInfo | 2 | * |
All properties
Property | Type | minCount | maxCount |
|---|---|---|---|
Comment | xsd:string | 0 | 1 |
creationInfo | CreationInfo | 1 | 1 |
description | xsd:string | 0 | 1 |
Extension | Extension | 0 | * |
externalIdentifier | ExternalIdentifier | 0 | * |
externalRef | ExternalRef | 0 | * |
Member | AnyLicenseInfo | 2 | * |
Name | xsd:string | 0 | 1 |
spdxId | xsd:anyURI | 1 | 1 |
Summary | xsd:string | 0 | 1 |
verifiedUsing | IntegrityMethod | 0 | * |
12.2.2 CustomLicense
Summary
A license that is not listed on the SPDX License List.
Description
A CustomLicense represents a License that is not listed on the SPDX License List, and is therefore defined by an SPDX data creator.
Metadata
https://spdx.org/rdf/3.0/terms/ExpandedLicensing/CustomLicense
Name | CustomLicense |
Instantiability | Concrete |
SubclassOf | License |
Class hierarchy
/Core/Element
/SimpleLicensing/AnyLicenseInfo
/ExpandedLicensing/ExtendableLicense
/ExpandedLicensing/License
/ExpandedLicensing/CustomLicense
All properties
Property | Type | minCount | maxCount |
|---|---|---|---|
Comment | xsd:string | 0 | 1 |
creationInfo | CreationInfo | 1 | 1 |
description | xsd:string | 0 | 1 |
Extension | Extension | 0 | * |
externalIdentifier | ExternalIdentifier | 0 | * |
externalRef | ExternalRef | 0 | * |
isDeprecatedLicenseId | xsd:boolean | 0 | 1 |
isFsfLibre | xsd:boolean | 0 | 1 |
isOsiApproved | xsd:boolean | 0 | 1 |
licenseText | xsd:string | 1 | 1 |
licenseXml | xsd:string | 0 | 1 |
Name | xsd:string | 0 | 1 |
obsoletedBy | xsd:string | 0 | 1 |
seeAlso | xsd:anyURI | 0 | * |
spdxId | xsd:anyURI | 1 | 1 |
standardLicenseHeader | xsd:string | 0 | 1 |
standardLicenseTemplate | xsd:string | 0 | 1 |
Summary | xsd:string | 0 | 1 |
verifiedUsing | IntegrityMethod | 0 | * |
12.2.3 CustomLicenseAddition
Summary
A license addition that is not listed on the SPDX Exceptions List.
Description
A CustomLicenseAddition represents an addition to a License that is not listed on the SPDX License Exceptions, and is therefore defined by an SPDX data creator.
It is intended to represent additional language which is meant to be added to a License, but which is not itself a standalone License.
Metadata
https://spdx.org/rdf/3.0/terms/ExpandedLicensing/CustomLicenseAddition
Name | CustomLicenseAddition |
Instantiability | Concrete |
SubclassOf | LicenseAddition |
Class hierarchy
/Core/Element
/ExpandedLicensing/LicenseAddition
/ExpandedLicensing/CustomLicenseAddition
All properties
Property | Type | minCount | maxCount |
|---|---|---|---|
additionText | xsd:string | 1 | 1 |
Comment | xsd:string | 0 | 1 |
creationInfo | CreationInfo | 1 | 1 |
description | xsd:string | 0 | 1 |
Extension | Extension | 0 | * |
externalIdentifier | ExternalIdentifier | 0 | * |
externalRef | ExternalRef | 0 | * |
isDeprecatedAdditionId | xsd:boolean | 0 | 1 |
licenseXml | xsd:string | 0 | 1 |
Name | xsd:string | 0 | 1 |
obsoletedBy | xsd:string | 0 | 1 |
seeAlso | xsd:anyURI | 0 | * |
spdxId | xsd:anyURI | 1 | 1 |
standardAdditionTemplate | xsd:string | 0 | 1 |
Summary | xsd:string | 0 | 1 |
verifiedUsing | IntegrityMethod | 0 | * |
12.2.4 DisjunctiveLicenseSet
Summary
Portion of an AnyLicenseInfo representing a set of licensing information where only one of the elements applies.
Description
A DisjunctiveLicenseSet indicates that only one of its subsidiary AnyLicenseInfos is required to apply. In other words, a DisjunctiveLicenseSet of two or more licenses represents a licensing situation where only one of the specified licenses are to be complied with.
A consumer of SPDX data would typically understand this to permit the recipient of the licensed content to choose which of the corresponding license they would prefer to use. It is represented in the SPDX License Expression Syntax by the OR operator.
Metadata
https://spdx.org/rdf/3.0/terms/ExpandedLicensing/DisjunctiveLicenseSet
Name | DisjunctiveLicenseSet |
Instantiability | Concrete |
SubclassOf | /SimpleLicensing/AnyLicenseInfo |
Class hierarchy
/Core/Element
/SimpleLicensing/AnyLicenseInfo
/ExpandedLicensing/DisjunctiveLicenseSet
Properties
Property | Type | minCount | maxCount |
|---|---|---|---|
Member | /SimpleLicensing/AnyLicenseInfo | 2 | * |
All properties
Property | Type | minCount | maxCount |
|---|---|---|---|
Comment | xsd:string | 0 | 1 |
creationInfo | CreationInfo | 1 | 1 |
description | xsd:string | 0 | 1 |
Extension | Extension | 0 | * |
externalIdentifier | ExternalIdentifier | 0 | * |
externalRef | ExternalRef | 0 | * |
Member | AnyLicenseInfo | 2 | * |
Name | xsd:string | 0 | 1 |
spdxId | xsd:anyURI | 1 | 1 |
Summary | xsd:string | 0 | 1 |
verifiedUsing | IntegrityMethod | 0 | * |
12.2.5 ExtendableLicense
Summary
Abstract class representing a License or an OrLaterOperator.
Description
The WithAdditionOperator can have a License or an OrLaterOperator as the license property value. This class is used for the value.
Metadata
https://spdx.org/rdf/3.0/terms/ExpandedLicensing/ExtendableLicense
Name | ExtendableLicense |
Instantiability | Abstract |
SubclassOf | /SimpleLicensing/AnyLicenseInfo |
Class hierarchy
/Core/Element
/SimpleLicensing/AnyLicenseInfo
/ExpandedLicensing/ExtendableLicense
All properties
Property | Type | minCount | maxCount |
|---|---|---|---|
Comment | xsd:string | 0 | 1 |
creationInfo | CreationInfo | 1 | 1 |
description | xsd:string | 0 | 1 |
Extension | Extension | 0 | * |
externalIdentifier | ExternalIdentifier | 0 | * |
externalRef | ExternalRef | 0 | * |
Name | xsd:string | 0 | 1 |
spdxId | xsd:anyURI | 1 | 1 |
Summary | xsd:string | 0 | 1 |
verifiedUsing | IntegrityMethod | 0 | * |
12.2.6 IndividualLicensingInfo
Summary
A concrete subclass of AnyLicenseInfo used by Individuals in the ExpandedLicensing profile.
Description
Individuals, such as NoneLicense and NoAssertionLicense, need to reference a concrete subclass of AnyLicenseInfo.
This class provides the type used by the individuals.
Metadata
https://spdx.org/rdf/3.0/terms/ExpandedLicensing/IndividualLicensingInfo
Name | IndividualLicensingInfo |
Instantiability | Concrete |
SubclassOf | /SimpleLicensing/AnyLicenseInfo |
Class hierarchy
/Core/Element
/SimpleLicensing/AnyLicenseInfo
/ExpandedLicensing/IndividualLicensingInfo
All properties
Property | Type | minCount | maxCount |
|---|---|---|---|
Comment | xsd:string | 0 | 1 |
creationInfo | CreationInfo | 1 | 1 |
description | xsd:string | 0 | 1 |
Extension | Extension | 0 | * |
externalIdentifier | ExternalIdentifier | 0 | * |
externalRef | ExternalRef | 0 | * |
name | xsd:string | 0 | 1 |
spdxId | xsd:anyURI | 1 | 1 |
summary | xsd:string | 0 | 1 |
verifiedUsing | IntegrityMethod | 0 | * |
12.2.7 License
Summary
Abstract class for the portion of an AnyLicenseInfo representing a license.
Description
A License represents a license text, whether listed on the SPDX License List (ListedLicense) or defined by an SPDX data creator (CustomLicense).
Metadata
https://spdx.org/rdf/3.0/terms/ExpandedLicensing/License
Name | License |
Instantiability | Abstract |
SubclassOf | ExtendableLicense |
Class hierarchy
/Core/Element
/SimpleLicensing/AnyLicenseInfo
/ExpandedLicensing/ExtendableLicense
/ExpandedLicensing/License
Properties
Property | Type | minCount | maxCount |
|---|---|---|---|
/SimpleLicensing/licenseText | xsd:string | 1 | 1 |
isDeprecatedLicenseId | xsd:boolean | 0 | 1 |
isFsfLibre | xsd:boolean | 0 | 1 |
isOsiApproved | xsd:boolean | 0 | 1 |
licenseXml | xsd:string | 0 | 1 |
obsoletedBy | xsd:string | 0 | 1 |
seeAlso | xsd:anyURI | 0 | * |
standardLicenseHeader | xsd:string | 0 | 1 |
standardLicenseTemplate | xsd:string | 0 | 1 |
All properties
Property | Type | minCount | maxCount |
|---|---|---|---|
Comment | xsd:string | 0 | 1 |
creationInfo | CreationInfo | 1 | 1 |
description | xsd:string | 0 | 1 |
Extension | Extension | 0 | * |
externalIdentifier | ExternalIdentifier | 0 | * |
externalRef | ExternalRef | 0 | * |
isDeprecatedLicenseId | xsd:boolean | 0 | 1 |
isFsfLibre | xsd:boolean | 0 | 1 |
isOsiApproved | xsd:boolean | 0 | 1 |
licenseText | xsd:string | 1 | 1 |
licenseXml | xsd:string | 0 | 1 |
Name | xsd:string | 0 | 1 |
obsoletedBy | xsd:string | 0 | 1 |
seeAlso | xsd:anyURI | 0 | * |
spdxId | xsd:anyURI | 1 | 1 |
standardLicenseHeader | xsd:string | 0 | 1 |
standardLicenseTemplate | xsd:string | 0 | 1 |
Summary | xsd:string | 0 | 1 |
verifiedUsing | IntegrityMethod | 0 | * |
12.2.8 LicenseAddition
Summary
Abstract class for additional text intended to be added to a License, but which is not itself a standalone License.
Description
A LicenseAddition represents text which is intended to be added to a License as additional text, but which is not itself intended to be a standalone License.
It may be an exception which is listed on the SPDX License Exceptions (ListedLicenseException), or may be any other additional text (as an exception or otherwise) which is defined by an SPDX data creator (CustomLicenseAddition).
Metadata
https://spdx.org/rdf/3.0/terms/ExpandedLicensing/LicenseAddition
Name | LicenseAddition |
Instantiability | Abstract |
SubclassOf | /Core/Element |
Class hierarchy
/Core/Element
/ExpandedLicensing/LicenseAddition
Properties
Property | Type | minCount | maxCount |
|---|---|---|---|
additionText | xsd:string | 1 | 1 |
isDeprecatedAdditionId | xsd:boolean | 0 | 1 |
licenseXml | xsd:string | 0 | 1 |
obsoletedBy | xsd:string | 0 | 1 |
seeAlso | xsd:anyURI | 0 | * |
standardAdditionTemplate | xsd:string | 0 | 1 |
All properties
Property | Type | minCount | maxCount |
|---|---|---|---|
additionText | xsd:string | 1 | 1 |
Comment | xsd:string | 0 | 1 |
creationInfo | CreationInfo | 1 | 1 |
description | xsd:string | 0 | 1 |
Extension | Extension | 0 | * |
externalIdentifier | ExternalIdentifier | 0 | * |
externalRef | ExternalRef | 0 | * |
isDeprecatedAdditionId | xsd:boolean | 0 | 1 |
licenseXml | xsd:string | 0 | 1 |
Name | xsd:string | 0 | 1 |
obsoletedBy | xsd:string | 0 | 1 |
seeAlso | xsd:anyURI | 0 | * |
spdxId | xsd:anyURI | 1 | 1 |
standardAdditionTemplate | xsd:string | 0 | 1 |
Summary | xsd:string | 0 | 1 |
verifiedUsing | IntegrityMethod | 0 | * |
12.2.9 ListedLicense
Summary
A license that is listed on the SPDX License List.
Description
A ListedLicense represents a License that is listed on the SPDX License List.
Metadata
https://spdx.org/rdf/3.0/terms/ExpandedLicensing/ListedLicense
Name | ListedLicense |
Instantiability | Concrete |
SubclassOf | License |
Class hierarchy
/Core/Element
/SimpleLicensing/AnyLicenseInfo
/ExpandedLicensing/ExtendableLicense
/ExpandedLicensing/License
/ExpandedLicensing/ListedLicense
Properties
Property | Type | minCount | maxCount |
|---|---|---|---|
deprecatedVersion | xsd:string | 0 | 1 |
listVersionAdded | xsd:string | 0 | 1 |
All properties
Property | Type | minCount | maxCount |
|---|---|---|---|
Comment | xsd:string | 0 | 1 |
creationInfo | CreationInfo | 1 | 1 |
deprecatedVersion | xsd:string | 0 | 1 |
description | xsd:string | 0 | 1 |
Extension | Extension | 0 | * |
externalIdentifier | ExternalIdentifier | 0 | * |
externalRef | ExternalRef | 0 | * |
isDeprecatedLicenseId | xsd:boolean | 0 | 1 |
isFsfLibre | xsd:boolean | 0 | 1 |
isOsiApproved | xsd:boolean | 0 | 1 |
licenseText | xsd:string | 1 | 1 |
licenseXml | xsd:string | 0 | 1 |
listVersionAdded | xsd:string | 0 | 1 |
Name | xsd:string | 0 | 1 |
obsoletedBy | xsd:string | 0 | 1 |
seeAlso | xsd:anyURI | 0 | * |
spdxId | xsd:anyURI | 1 | 1 |
standardLicenseHeader | xsd:string | 0 | 1 |
standardLicenseTemplate | xsd:string | 0 | 1 |
Summary | xsd:string | 0 | 1 |
verifiedUsing | IntegrityMethod | 0 | * |
12.2.10 ListedLicenseException
Summary
A license exception that is listed on the SPDX Exceptions list.
Description
A ListedLicenseException represents an exception to a License (in other words, an exception to a license condition or an additional permission beyond those granted in a License) which is listed on the SPDX License Exceptions.
Metadata
https://spdx.org/rdf/3.0/terms/ExpandedLicensing/ListedLicenseException
Name | ListedLicenseException |
Instantiability | Concrete |
SubclassOf | LicenseAddition |
Class hierarchy
/Core/Element
/ExpandedLicensing/LicenseAddition
/ExpandedLicensing/ListedLicenseException
Properties
Property | Type | minCount | maxCount |
|---|---|---|---|
deprecatedVersion | xsd:string | 0 | 1 |
listVersionAdded | xsd:string | 0 | 1 |
All properties
Property | Type | minCount | maxCount |
|---|---|---|---|
additionText | xsd:string | 1 | 1 |
Comment | xsd:string | 0 | 1 |
creationInfo | CreationInfo | 1 | 1 |
deprecatedVersion | xsd:string | 0 | 1 |
description | xsd:string | 0 | 1 |
Extension | Extension | 0 | * |
externalIdentifier | ExternalIdentifier | 0 | * |
externalRef | ExternalRef | 0 | * |
isDeprecatedAdditionId | xsd:boolean | 0 | 1 |
licenseXml | xsd:string | 0 | 1 |
listVersionAdded | xsd:string | 0 | 1 |
Name | xsd:string | 0 | 1 |
obsoletedBy | xsd:string | 0 | 1 |
seeAlso | xsd:anyURI | 0 | * |
spdxId | xsd:anyURI | 1 | 1 |
standardAdditionTemplate | xsd:string | 0 | 1 |
Summary | xsd:string | 0 | 1 |
verifiedUsing | IntegrityMethod | 0 | * |
12.2.11 OrLaterOperator
Portion of an AnyLicenseInfo representing this version, or any later version, of the indicated License.
An OrLaterOperator indicates that this portion of the AnyLicenseInfo represents either (1) the specified version of the corresponding License, or (2) any later version of that License. It is represented in the SPDX License Expression Syntax by the + operator.
It is context-dependent, and unspecified by SPDX, as to what constitutes a “later version” of any particular License. Some Licenses may not be versioned, or may not have clearly defined ordering for versions. The consumer of SPDX data will need to determine for themselves what meaning to attribute to a “later version” operator for a particular License.
Metadata
https://spdx.org/rdf/3.0/terms/ExpandedLicensing/OrLaterOperator
Name | OrLaterOperator |
Instantiability | Concrete |
SubclassOf | ExtendableLicense |
Class hierarchy
/Core/Element
/SimpleLicensing/AnyLicenseInfo
/ExpandedLicensing/ExtendableLicense
/ExpandedLicensing/OrLaterOperator
Properties
Property | Type | minCount | maxCount |
|---|---|---|---|
subjectLicense | License | 1 | 1 |
All properties
Property | Type | minCount | maxCount |
|---|---|---|---|
Comment | xsd:string | 0 | 1 |
creationInfo | CreationInfo | 1 | 1 |
description | xsd:string | 0 | 1 |
Extension | Extension | 0 | * |
externalIdentifier | ExternalIdentifier | 0 | * |
externalRef | ExternalRef | 0 | * |
Name | xsd:string | 0 | 1 |
spdxId | xsd:anyURI | 1 | 1 |
subjectLicense | License | 1 | 1 |
Summary | xsd:string | 0 | 1 |
verifiedUsing | IntegrityMethod | 0 | * |
12.2.12 WithAdditionOperator
Summary
Portion of an AnyLicenseInfo representing a License which has additional text applied to it.
Description
A WithAdditionOperator indicates that the designated License is subject to the designated LicenseAddition, which can be a license exception on the SPDX License Exceptions (ListedLicenseException) or may be other additional text (CustomLicenseAddition). It is represented in the SPDX License Expression Syntax by the WITH operator.
Metadata
https://spdx.org/rdf/3.0/terms/ExpandedLicensing/WithAdditionOperator
Name | WithAdditionOperator |
Instantiability | Concrete |
SubclassOf | /SimpleLicensing/AnyLicenseInfo |
Class hierarchy
/Core/Element
/SimpleLicensing/AnyLicenseInfo
/ExpandedLicensing/WithAdditionOperator
Properties
Property | Type | minCount | maxCount |
|---|---|---|---|
subjectAddition | LicenseAddition | 1 | 1 |
subjectExtendableLicense | ExtendableLicense | 1 | 1 |
All properties
Property | Type | minCount | maxCount |
|---|---|---|---|
Comment | xsd:string | 0 | 1 |
creationInfo | CreationInfo | 1 | 1 |
description | xsd:string | 0 | 1 |
Extension | Extension | 0 | * |
externalIdentifier | ExternalIdentifier | 0 | * |
externalRef | ExternalRef | 0 | * |
Name | xsd:string | 0 | 1 |
spdxId | xsd:anyURI | 1 | 1 |
subjectAddition | LicenseAddition | 1 | 1 |
subjectExtendableLicense | ExtendableLicense | 1 | 1 |
Summary | xsd:string | 0 | 1 |
verifiedUsing | IntegrityMethod | 0 | * |
12.3 Properties
12.3.1 additionText
Summary
Identifies the full text of a LicenseAddition.
Description
An additionText contains the plain text of the LicenseAddition, without templating or other similar markup.
Users of the additionText for a License can apply the SPDX License List Matching Guidelines (see Annex C) when comparing it to another text for matching purposes.
Metadata
https://spdx.org/rdf/3.0/terms/ExpandedLicensing/additionText
Name | additionText |
Nature | DataProperty |
Range | xsd:string |
Referenced
- /ExpandedLicensing/LicenseAddition
12.3.2 deprecatedVersion
Summary
Specifies the SPDX License List version in which this license or exception identifier was deprecated.
Description
A deprecatedVersion, for a ListedLicense on the SPDX License List or a ListedLicenseException on the SPDX License Exceptions, specifies which version release of the License List was the first one in which it was marked as deprecated.
Metadata
https://spdx.org/rdf/3.0/terms/ExpandedLicensing/deprecatedVersion
Name | deprecatedVersion |
Nature | DataProperty |
Range | xsd:string |
Referenced
- /ExpandedLicensing/ListedLicense
- /ExpandedLicensing/ListedLicenseException
12.3.3 isDeprecatedAdditionId
Summary
Specifies whether an additional text identifier has been marked as deprecated.
Description
The isDeprecatedAdditionId property specifies whether an identifier for a LicenseAddition has been marked as deprecated. If the property is not defined, then it is presumed to be false (i.e., not deprecated).
If the LicenseAddition is included on the SPDX License Exceptions, then the deprecatedVersion property indicates on which version release of the Exceptions List it was first marked as deprecated.
“Deprecated” in this context refers to deprecating the use of the identifier, not the underlying license addition. In other words, even if a LicenseAddition’s author or steward has stated that a particular LicenseAddition generally should not be used, that would not mean that the LicenseAddition’s identifier is “deprecated.” Rather, a LicenseAddition operator is typically marked as “deprecated” when it is determined that use of another identifier is preferable.
Metadata
https://spdx.org/rdf/3.0/terms/ExpandedLicensing/isDeprecatedAdditionId
Name | isDeprecatedAdditionId |
Nature | DataProperty |
Range | xsd:boolean |
Referenced
- /ExpandedLicensing/LicenseAddition
12.3.4 isDeprecatedLicenseId
Summary
Specifies whether a license or additional text identifier has been marked as deprecated.
Description
The isDeprecatedLicenseId property specifies whether an identifier for a License or LicenseAddition has been marked as deprecated. If the property is not defined, then it is presumed to be false (i.e., not deprecated).
If the License or LicenseAddition is included on the SPDX License List, then the deprecatedVersion property indicates on which version release of the License List it was first marked as deprecated.
“Deprecated” in this context refers to deprecating the use of the identifier, not the underlying license. In other words, even if a License’s author or steward has stated that a particular License generally should not be used, that would not mean that the License’s identifier is “deprecated.” Rather, a License or LicenseAddition operator is typically marked as “deprecated” when it is determined that use of another identifier is preferable.
Metadata
https://spdx.org/rdf/3.0/terms/ExpandedLicensing/isDeprecatedLicenseId
Name | isDeprecatedLicenseId |
Nature | DataProperty |
Range | xsd:boolean |
Referenced
- /ExpandedLicensing/License
12.3.5 isFsfLibre
Summary
Specifies whether the License is listed as free by the Free Software Foundation (FSF).
Description
isFsfLibre specifies whether the Free Software Foundation (FSF) has listed this License as “free” in their commentary on licenses, located at the time of this writing at Various Licenses and Comments about Them.
A value of “true” indicates that the license is in the list of licenses that FSF publishes as libre.
A value of “false” indicates that the license is explicitly not in the corresponding list of FSF libre licenses (e.g., FSF has the license on a non-free list).
If the isFsfLibre field is not specified, the SPDX data creator makes no assertions about whether the License is listed in the FSF’s commentary.
Metadata
https://spdx.org/rdf/3.0/terms/ExpandedLicensing/isFsfLibre
Name | isFsfLibre |
Nature | DataProperty |
Range | xsd:boolean |
Referenced
- /ExpandedLicensing/License
12.3.6 isOsiApproved
Summary
Specifies whether the License is listed as approved by the Open Source Initiative (OSI).
Description
isOsiApproved specifies whether the Open Source Initiative (OSI) has listed this License as “approved” in their list of OSI Approved Licenses, located at the time of this writing at OSI Approved Licenses.
A value of “true” indicates that the license is in the list of licenses that OSI publishes as approved.
A value of “false” indicates that the license is explicitly not in the corresponding list of OSI licenses (e.g., OSI has stated publicly that a license is not approved).
If the isOsiApproved field is not specified, the SPDX data creator makes no assertions about whether the License is approved by the OSI.
Metadata
https://spdx.org/rdf/3.0/terms/ExpandedLicensing/isOsiApproved
Name | isOsiApproved |
Nature | DataProperty |
Range | xsd:boolean |
Referenced
- /ExpandedLicensing/License
12.3.7 licenseXml
Summary
Identifies all the text and metadata associated with a license in the license XML format.
Description
The license XML format is defined and used by the SPDX legal team.
The formal schema definition is available at SPDX License List XML Schema.
For a text description of the XML fields, see XML template fields.
Metadata
https://spdx.org/rdf/3.0/terms/ExpandedLicensing/licenseXml
Name | licenseXml |
Nature | DataProperty |
Range | xsd:string |
Referenced
- /ExpandedLicensing/License
- /ExpandedLicensing/LicenseAddition
12.3.8 listVersionAdded
Summary
Specifies the SPDX License List version in which this ListedLicense or ListedLicenseException identifier was first added.
Description
A listVersionAdded for a ListedLicense or ListedLicenseException on the SPDX License List specifies which version release of the License List was the first one in which it was included.
Metadata
https://spdx.org/rdf/3.0/terms/ExpandedLicensing/listVersionAdded
Name | listVersionAdded |
Nature | DataProperty |
Range | xsd:string |
Referenced
- /ExpandedLicensing/ListedLicense
- /ExpandedLicensing/ListedLicenseException
12.3.9 member
Summary
A license expression participating in a license set.
Description
A member is a license expression participating in a conjunctive (of type ConjunctiveLicenseSet) or a disjunctive (of type DisjunctiveLicenseSet) license set.
Metadata
https://spdx.org/rdf/3.0/terms/ExpandedLicensing/member
Name | member |
Nature | ObjectProperty |
Range | /SimpleLicensing/AnyLicenseInfo |
Referenced
- /ExpandedLicensing/ConjunctiveLicenseSet
- /ExpandedLicensing/DisjunctiveLicenseSet
12.3.10 obsoletedBy
Summary
Specifies the licenseId that is preferred to be used in place of a deprecated License or LicenseAddition.
Description
An obsoletedBy value for a deprecated License or LicenseAddition specifies the licenseId of the replacement License or LicenseAddition that is preferred to be used in its place. It shall use the same format as specified for a licenseId.
The License’s or LicenseAddition’s comment value may include more information about the reason why the licenseId specified in the obsoletedBy value is preferred.
Metadata
https://spdx.org/rdf/3.0/terms/ExpandedLicensing/obsoletedBy
Name | obsoletedBy |
Nature | DataProperty |
Range | xsd:string |
Referenced
- /ExpandedLicensing/License
- /ExpandedLicensing/LicenseAddition
12.3.11 seeAlso
Summary
Contains a URL where the License or LicenseAddition can be found in use.
Description
A seeAlso defines a cross-reference with a URL where the License or LicenseAddition can be found in use by one or a few projects.
If applicable, it should include a URL where the license text is posted by the license steward, particularly if the license steward has made available a “canonical” primary URL for the license text.
If the license is OSI approved, a seeAlso should be included with the URL for the license’s listing on the OSI website.
The seeAlso URL may refer to a previously available URL for the License or LicenseAddition which is no longer active.
Where applicable, the seeAlso URL should include the license text in its native language. seeAlso URLs to English or other translations may be included where multiple, equivalent official translations exist.
Metadata
https://spdx.org/rdf/3.0/terms/ExpandedLicensing/seeAlso
Name | seeAlso |
Nature | DataProperty |
Range | xsd:anyURI |
Referenced
- /ExpandedLicensing/License
- /ExpandedLicensing/LicenseAddition
12.3.12 standardAdditionTemplate
Summary
Identifies the full text of a LicenseAddition, in SPDX templating format.
Description
A standardAdditionTemplate contains a license addition template which describes sections of the LicenseAddition text which can be varied.
See the Legacy Text Template format section of the SPDX License List Matching Guidelines (see Annex C) for format information.
It is recommended to use licenseXml (see 12.3.7) instead, as it can capture all the text and metadata associated with a license.
Metadata
https://spdx.org/rdf/3.0/terms/ExpandedLicensing/standardAdditionTemplate
Name | standardAdditionTemplate |
Nature | DataProperty |
Range | xsd:string |
Referenced
- /ExpandedLicensing/LicenseAddition
12.3.13 standardLicenseHeader
Summary
Provides a License author’s preferred text to indicate that a file is covered by the License.
Description
A standardLicenseHeader contains the plain text of the License author’s preferred wording to be used, typically in a source code file’s header comments or similar location, to indicate that the file is subject to the specified License.
Metadata
https://spdx.org/rdf/3.0/terms/ExpandedLicensing/standardLicenseHeader
Name | standardLicenseHeader |
Nature | DataProperty |
Range | xsd:string |
Referenced
- /ExpandedLicensing/License
12.3.14 standardLicenseTemplate
Summary
Identifies the full text of a License, in SPDX templating format.
Description
A standardLicenseTemplate contains a license template which describes sections of the License text which can be varied.
See the Legacy Text Template format section of the SPDX License List Matching Guidelines (see Annex C) for format information.
It is recommended to use licenseXml (see 12.3.7) instead, as it can capture all the text and metadata associated with a license.
Metadata
https://spdx.org/rdf/3.0/terms/ExpandedLicensing/standardLicenseTemplate
Name | standardLicenseTemplate |
Nature | DataProperty |
Range | xsd:string |
Referenced
- /ExpandedLicensing/License
12.3.15 subjectAddition
Summary
A LicenseAddition participating in a ‘with addition’ model.
Description
A subjectAddition is a LicenseAddition which is subject to a ‘with additional text’ effect (WithAdditionOperator).
Metadata
https://spdx.org/rdf/3.0/terms/ExpandedLicensing/subjectAddition
Name | subjectAddition |
Nature | ObjectProperty |
Range | LicenseAddition |
Referenced
- /ExpandedLicensing/WithAdditionOperator
12.3.16 subjectExtendableLicense
Summary
A License participating in a ‘with addition’ model.
Description
A subjectExtendableLicense is a License which is subject to a ‘with additional text’ effect (WithAdditionOperator).
Metadata
https://spdx.org/rdf/3.0/terms/ExpandedLicensing/subjectExtendableLicense
Name | subjectExtendableLicense |
Nature | ObjectProperty |
Range | ExtendableLicense |
Referenced
- /ExpandedLicensing/WithAdditionOperator
12.3.17 subjectLicense
Summary
A License participating in an ‘or later’ model.
Description
A subjectLicense is a License which is subject an ‘or later’ effect (OrLaterOperator).
Metadata
https://spdx.org/rdf/3.0/terms/ExpandedLicensing/subjectLicense
Name | subjectLicense |
Nature | ObjectProperty |
Range | License |
Referenced
- /ExpandedLicensing/OrLaterOperator
12.4 Individuals
12.4.1 NoAssertionLicense
Summary
An Individual Value for License when no assertion can be made about its actual value.
Description
NoAssertionLicense shall be used if
- the SPDX creator has attempted to but cannot reach a reasonable objective determination;
- the SPDX creator has made no attempt to determine this field; or
- the SPDX creator has intentionally provided no information (no meaning shall be implied by doing so).
Metadata
https://spdx.org/rdf/3.0/terms/ExpandedLicensing/NoAssertionLicense
Name | NoAssertionLicense |
Type | IndividualLicensingInfo |
IRI | https://spdx.org/rdf/3.0/terms/Licensing/NoAssertion |
12.4.2 NoneLicense
Summary
An Individual Value for License where the SPDX data creator determines that no license is present.
Description
NoneLicense shall be used if the SPDX creator determines there is no license available for this Artifact.
Metadata
https://spdx.org/rdf/3.0/terms/ExpandedLicensing/NoneLicense
Name | NoneLicense |
Type | IndividualLicensingInfo |
IRI | https://spdx.org/rdf/3.0/terms/Licensing/None |
13.0 Dataset
13.1 Profile information
13.1.1 Dataset profile
Summary
The Dataset profile provides additional metadata, based on Software profile, that is useful for datasets.
Description
The Dataset namespace defines concepts related to dataset, including its preparation process, its characteristics, and its access methods.
Metadata
https://spdx.org/rdf/3.0/terms/Dataset
Name | Dataset |
Profile conformance
For an element collection to be conformant with this profile, the following has to hold:
- for every /Dataset/DatasetPackage there shall exist exactly one /Core/Relationship of type hasConcludedLicense having that element as its from property and a /SimpleLicensing/AnyLicenseInfo as its to property.
- for every /Dataset/DatasetPackage there shall exist exactly one /Core/Relationship of type hasDeclaredLicense having that element as its from property and a /SimpleLicensing/AnyLicenseInfo as its to property.
13.2 Classes
13.2.1 DatasetPackage
Summary
Specifies a data package and its associated information.
Description
Metadata information that can be added to a dataset that may be used in a software or to train/test an AI package.
Metadata
https://spdx.org/rdf/3.0/terms/Dataset/DatasetPackage
Name | DatasetPackage |
Instantiability | Concrete |
SubclassOf | /Software/Package |
Class hierarchy
/Core/Element
/Core/Artifact
/Software/SoftwareArtifact
/Software/Package
/Dataset/DatasetPackage
Properties
Property | Type | minCount | maxCount |
|---|---|---|---|
anonymizationMethodUsed | xsd:string | 0 | * |
confidentialityLevel | ConfidentialityLevelType | 0 | 1 |
dataCollectionProcess | xsd:string | 0 | 1 |
dataPreprocessing | xsd:string | 0 | * |
datasetAvailability | DatasetAvailabilityType | 0 | 1 |
datasetNoise | xsd:string | 0 | 1 |
datasetSize | xsd:nonNegativeInteger | 0 | 1 |
datasetType | DatasetType | 1 | * |
datasetUpdateMechanism | xsd:string | 0 | 1 |
hasSensitivePersonalInformation | /Core/PresenceType | 0 | 1 |
intendedUse | xsd:string | 0 | 1 |
knownBias | xsd:string | 0 | * |
sensor | /Core/DictionaryEntry | 0 | * |
External properties cardinality updates
Property | minCount | maxCount |
|---|---|---|
builtTime from /Core/Artifact | 1 | |
originatedBy from /Core/Artifact | 1 | 1 |
releaseTime from /Core/Artifact | 1 | |
downloadLocation from /Software/Package | 1 | |
primaryPurpose from /Software/SoftwareArtifact | 1 |
All properties
Property | Type | minCount | maxCount |
|---|---|---|---|
additionalPurpose | SoftwarePurpose | 0 | * |
anonymizationMethodUsed | xsd:string | 0 | * |
attributionText | xsd:string | 0 | * |
builtTime | DateTime | 1 | 1 |
comment | xsd:string | 0 | 1 |
confidentialityLevel | ConfidentialityLevelType | 0 | 1 |
contentIdentifier | ContentIdentifier | 0 | * |
copyrightText | xsd:string | 0 | 1 |
creationInfo | CreationInfo | 1 | 1 |
dataCollectionProcess | xsd:string | 0 | 1 |
dataPreprocessing | xsd:string | 0 | * |
datasetAvailability | DatasetAvailabilityType | 0 | 1 |
datasetNoise | xsd:string | 0 | 1 |
datasetSize | xsd:nonNegativeInteger | 0 | 1 |
datasetType | DatasetType | 1 | * |
datasetUpdateMechanism | xsd:string | 0 | 1 |
description | xsd:string | 0 | 1 |
downloadLocation | xsd:anyURI | 1 | 1 |
extension | Extension | 0 | * |
externalIdentifier | ExternalIdentifier | 0 | * |
externalRef | ExternalRef | 0 | * |
hasSensitivePersonalInformation | PresenceType | 0 | 1 |
homePage | xsd:anyURI | 0 | 1 |
intendedUse | xsd:string | 0 | 1 |
knownBias | xsd:string | 0 | * |
name | xsd:string | 1 | 1 |
originatedBy | Agent | 1 | 1 |
packageUrl | xsd:anyURI | 0 | 1 |
packageVersion | xsd:string | 0 | 1 |
primaryPurpose | SoftwarePurpose | 1 | 1 |
releaseTime | DateTime | 1 | 1 |
sensor | DictionaryEntry | 0 | * |
sourceInfo | xsd:string | 0 | 1 |
spdxId | xsd:anyURI | 1 | 1 |
standardName | xsd:string | 0 | * |
summary | xsd:string | 0 | 1 |
suppliedBy | Agent | 0 | 1 |
supportLevel | SupportType | 0 | * |
validUntilTime | DateTime | 0 | 1 |
verifiedUsing | IntegrityMethod | 0 | * |
13.3 Properties
13.3.1 anonymizationMethodUsed
Summary
Describes the anonymization methods used.
Description
A free-form text that describes the methods used to anonymize the dataset or fields in the dataset.
Metadata
https://spdx.org/rdf/3.0/terms/Dataset/anonymizationMethodUsed
Name | anonymizationMethodUsed |
Nature | DataProperty |
Range | xsd:string |
Referenced
- /Dataset/DatasetPackage
13.3.2 confidentialityLevel
Summary
Describes the confidentiality level of the data points contained in the dataset.
Description
Describes the levels of confidentiality of the data points contained in the dataset.
Metadata
https://spdx.org/rdf/3.0/terms/Dataset/confidentialityLevel
Name | confidentialityLevel |
Nature | ObjectProperty |
Range | ConfidentialityLevelType |
Referenced
- /Dataset/DatasetPackage
13.3.3 dataCollectionProcess
Summary
Describes how the dataset was collected.
Description
A free-form text that describes how a dataset was collected.
Examples include the sources from which a dataset was scrapped and the interview protocol that was used for data collection.
Metadata
https://spdx.org/rdf/3.0/terms/Dataset/dataCollectionProcess
Name | dataCollectionProcess |
Nature | DataProperty |
Range | xsd:string |
Referenced
- /Dataset/DatasetPackage
13.3.4 dataPreprocessing
Summary
Describes the preprocessing steps that were applied to the raw data to create the given dataset.
Description
A free-form text that describes the various preprocessing steps that were applied to the raw data to create the dataset.
Examples include standardization, normalization, deduplication, tokenization, and removal of tokens.
Metadata
https://spdx.org/rdf/3.0/terms/Dataset/dataPreprocessing
Name | dataPreprocessing |
Nature | DataProperty |
Range | xsd:string |
Referenced
- /Dataset/DatasetPackage
13.3.5 datasetAvailability
Summary
The field describes the availability of a dataset.
Description
Some datasets are publicly available and can be downloaded directly. Others are only accessible behind a clickthrough, or after filling a registration form. This field will describe the dataset availability from that perspective.
Metadata
https://spdx.org/rdf/3.0/terms/Dataset/datasetAvailability
Name | datasetAvailability |
Nature | ObjectProperty |
Range | DatasetAvailabilityType |
Referenced
- /Dataset/DatasetPackage
13.3.6 datasetNoise
Summary
Describes potentially noisy elements of the dataset.
Description
Describes what kinds of noises a dataset can encompass.
The free-form text specifies fields or samples that can be noisy.
Alternatively, it can also be used to describe various noises that can impact the whole dataset.
Metadata
https://spdx.org/rdf/3.0/terms/Dataset/datasetNoise
Name | datasetNoise |
Nature | DataProperty |
Range | xsd:string |
Referenced
- /Dataset/DatasetPackage
13.3.7 datasetSize
Summary
Captures the size of the dataset.
Description
Captures how large a dataset is.
The size is to be measured in bytes.
Metadata
https://spdx.org/rdf/3.0/terms/Dataset/datasetSize
Name | datasetSize |
Nature | DataProperty |
Range | xsd:nonNegativeInteger |
Referenced
- /Dataset/DatasetPackage
13.3.8 datasetType
Summary
Describes the type of the given dataset.
Description
Describes the datatype contained in the dataset.
For example, a dataset can be an image dataset for computer vision applications, a text dataset such as the contents of a book or Wikipedia article, or sometimes a multimodal dataset that contains multiple types of data.
Metadata
https://spdx.org/rdf/3.0/terms/Dataset/datasetType
Name | datasetType |
Nature | ObjectProperty |
Range | DatasetType |
Referenced
- /Dataset/DatasetPackage
13.3.9 datasetUpdateMechanism
Summary
Describes a mechanism to update the dataset.
Description
A free-form text that describes a mechanism to update the dataset.
Metadata
https://spdx.org/rdf/3.0/terms/Dataset/datasetUpdateMechanism
Name | datasetUpdateMechanism |
Nature | DataProperty |
Range | xsd:string |
Referenced
- /Dataset/DatasetPackage
13.3.10 hasSensitivePersonalInformation
Summary
Describes if any sensitive personal information is present in the dataset.
Description
Indicates the presence of sensitive personal data or information that allows drawing conclusions about a person’s identity.
Related: useSensitivePersonalInformation in /AI/AIPackage
Metadata
https://spdx.org/rdf/3.0/terms/Dataset/hasSensitivePersonalInformation
Name | hasSensitivePersonalInformation |
Nature | ObjectProperty |
Range | /Core/PresenceType |
Referenced
- /Dataset/DatasetPackage
13.3.11 intendedUse
Summary
Describes what the given dataset should be used for.
Description
A free-form text that describes what the given dataset should be used for.
Some datasets are collected to be used only for particular purposes.
For example, medical data collected from a specific demography should only be applicable for training machine learning models to make predictions for that demography. In such a case, the intendedUse field would capture this information. Similarly, if a dataset is collected for building a facial recognition model, the intendedUse field would specify that.
Metadata
https://spdx.org/rdf/3.0/terms/Dataset/intendedUse
Name | intendedUse |
Nature | DataProperty |
Range | xsd:string |
Referenced
- /Dataset/DatasetPackage
13.3.12 knownBias
Summary
Records the biases that the dataset is known to encompass.
Description
A free-form text that describes the different biases that the dataset encompasses.
Metadata
https://spdx.org/rdf/3.0/terms/Dataset/knownBias
Name | knownBias |
Nature | DataProperty |
Range | xsd:string |
Referenced
- /Dataset/DatasetPackage
13.3.13 sensor
Summary
Describes a sensor used for collecting the data.
Description
Describes a sensor that was used for collecting the data and its calibration value as a key-value pair.
Metadata
https://spdx.org/rdf/3.0/terms/Dataset/sensor
Name | sensor |
Nature | ObjectProperty |
Range | /Core/DictionaryEntry |
Referenced
- /Dataset/DatasetPackage
13.4 Vocabularies
13.4.1 ConfidentialityLevelType
Summary
Categories of confidentiality level.
Description
Describes the different confidentiality levels as given by the Traffic Light Protocol.
Metadata
https://spdx.org/rdf/3.0/terms/Dataset/ConfidentialityLevelType
Name | ConfidentialityLevelType |
Entries
- amber: Data points in the dataset can be shared only with specific organizations and their clients on a need to know basis.
- clear: Dataset may be distributed freely, without restriction.
- green: Dataset can be shared within a community of peers and partners.
- red: Data points in the dataset are highly confidential and can only be shared with named recipients.
13.4.2 DatasetAvailabilityType
Summary
Availability of dataset.
Description
Describes the possible types of availability of a dataset, indicating whether the dataset can be directly downloaded, can be assembled using a script for scraping the data, is only available after a clickthrough or a registration form.
Metadata
https://spdx.org/rdf/3.0/terms/Dataset/DatasetAvailabilityType
Name | DatasetAvailabilityType |
Entries
- clickthrough: Dataset is not publicly available and can only be accessed after affirmatively accepting terms on a clickthrough webpage.
- directDownload: Dataset is publicly available and can be downloaded directly.
- query: Dataset is publicly available, but not all at once, and can only be accessed through queries which return parts of the dataset.
- registration: Dataset is not publicly available and an email registration is required before accessing the dataset, although without an affirmative acceptance of terms.
- scrapingScript: Dataset provider is not making available the underlying data and the dataset shall be reassembled, typically using the provided script for scraping the data.
13.4.3 DatasetType
Summary
Enumeration of dataset types.
Description
Describes the different structures of data within a given dataset. A dataset can have multiple types of data, or even a single type of data but still match multiple types, for example sensor data could also be timeseries or labeled image data could also be considered categorical.
Metadata
https://spdx.org/rdf/3.0/terms/Dataset/DatasetType
Name | DatasetType |
Entries
- audio: Data is audio based, such as a collection of music from the 80s.
- categorical: Data that is classified into a discrete number of categories, such as the eye color of a population of people.
- graph: Data is in the form of a graph where entries are somehow related to each other through edges, such a social network of friends.
- image: Data is a collection of images such as pictures of animals.
- noAssertion: Data type is not known.
- numeric: Data consists only of numeric entries.
- other: Data is of a type not included in this list.
- sensor: Data is recorded from a physical sensor, such as a thermometer reading or biometric device.
- structured: Data is stored in tabular format or retrieved from a relational database.
- syntactic: Data describes the syntax or semantics of a language or text, such as a parse tree used for natural language processing.
- text: Data consists of unstructured text, such as a book, a Wikipedia article (without images), or a transcript.
- timeseries: Data is recorded in an ordered sequence of timestamped entries, such as the price of a stock over the course of a day.
- timestamp: Data is recorded with a timestamp for each entry, but not necessarily ordered or at specific intervals, such as when a taxi ride starts and ends.
- video: Data is video based, such as a collection of movie clips featuring Tom Hanks.
14.0 AI
14.1 Profile information
14.1.1 AI profile
Summary
The AI profile is designed to provide a standardized way of documenting and sharing information about AI software packages (i.e. systems).
Description
The AI namespace defines a set of concepts and data elements related to AI system and model artifacts. These artifacts are the tangible outputs of the AI development process, such as software packages, models, and datasets.
Metadata
https://spdx.org/rdf/3.0/terms/AI
Name | AI |
14.1.2 Profile conformance
For an element collection to be conformant with this profile, the following has to hold:
- for every /AI/AIPackage there shall exist exactly one /Core/Relationship of type hasConcludedLicense having that element as its from property and a /SimpleLicensing/AnyLicenseInfo as its to property.
- for every /AI/AIPackage there shall exist exactly one /Core/Relationship of type hasDeclaredLicense having that element as its from property and a /SimpleLicensing/AnyLicenseInfo as its to property.
14.2 Classes
14.2.1 AIPackage
Summary
Specifies an AI package and its associated information.
Description
Metadata information that can be added to a package to describe an AI application or trained AI model.
Metadata
https://spdx.org/rdf/3.0/terms/AI/AIPackage
Name | AIPackage |
Instantiability | Concrete |
SubclassOf | /Software/Package |
Class hierarchy
/Core/Element
/Core/Artifact
/Software/SoftwareArtifact
/Software/Package
/AI/AIPackage
Properties
Property | Type | minCount | maxCount |
|---|---|---|---|
autonomyType | /Core/PresenceType | 0 | 1 |
domain | xsd:string | 0 | * |
energyConsumption | EnergyConsumption | 0 | 1 |
hyperparameter | /Core/DictionaryEntry | 0 | * |
informationAboutApplication | xsd:string | 0 | 1 |
informationAboutTraining | xsd:string | 0 | 1 |
limitation | xsd:string | 0 | 1 |
metric | /Core/DictionaryEntry | 0 | * |
metricDecisionThreshold | /Core/DictionaryEntry | 0 | * |
modelDataPreprocessing | xsd:string | 0 | * |
modelExplainability | xsd:string | 0 | * |
safetyRiskAssessment | SafetyRiskAssessmentType | 0 | 1 |
standardCompliance | xsd:string | 0 | * |
typeOfModel | xsd:string | 0 | * |
useSensitivePersonalInformation | /Core/PresenceType | 0 | 1 |
External properties cardinality updates
Property | minCount | maxCount |
|---|---|---|
releaseTime from /Core/Artifact | 1 | |
suppliedBy from /Core/Artifact | 1 | |
downloadLocation from /Software/Package | 1 | |
packageVersion from /Software/Package | 1 | |
primaryPurpose from /Software/SoftwareArtifact | 1 |
All properties
Property | Type | minCount | maxCount |
|---|---|---|---|
additionalPurpose | SoftwarePurpose | 0 | * |
attributionText | xsd:string | 0 | * |
autonomyType | PresenceType | 0 | 1 |
builtTime | DateTime | 0 | 1 |
comment | xsd:string | 0 | 1 |
contentIdentifier | ContentIdentifier | 0 | * |
copyrightText | xsd:string | 0 | 1 |
creationInfo | CreationInfo | 1 | 1 |
description | xsd:string | 0 | 1 |
domain | xsd:string | 0 | * |
downloadLocation | xsd:anyURI | 1 | 1 |
energyConsumption | EnergyConsumption | 0 | 1 |
extension | Extension | 0 | * |
externalIdentifier | ExternalIdentifier | 0 | * |
externalRef | ExternalRef | 0 | * |
homePage | xsd:anyURI | 0 | 1 |
hyperparameter | DictionaryEntry | 0 | * |
informationAboutApplication | xsd:string | 0 | 1 |
informationAboutTraining | xsd:string | 0 | 1 |
limitation | xsd:string | 0 | 1 |
metric | DictionaryEntry | 0 | * |
metricDecisionThreshold | DictionaryEntry | 0 | * |
modelDataPreprocessing | xsd:string | 0 | * |
modelExplainability | xsd:string | 0 | * |
name | xsd:string | 1 | 1 |
originatedBy | Agent | 0 | * |
packageUrl | xsd:anyURI | 0 | 1 |
packageVersion | xsd:string | 1 | 1 |
primaryPurpose | SoftwarePurpose | 1 | 1 |
releaseTime | DateTime | 1 | 1 |
safetyRiskAssessment | SafetyRiskAssessmentType | 0 | 1 |
sourceInfo | xsd:string | 0 | 1 |
spdxId | xsd:anyURI | 1 | 1 |
standardCompliance | xsd:string | 0 | * |
standardName | xsd:string | 0 | * |
summary | xsd:string | 0 | 1 |
suppliedBy | Agent | 1 | 1 |
supportLevel | SupportType | 0 | * |
typeOfModel | xsd:string | 0 | * |
useSensitivePersonalInformation | PresenceType | 0 | 1 |
validUntilTime | DateTime | 0 | 1 |
verifiedUsing | IntegrityMethod | 0 | * |
14.2.2 EnergyConsumption
Summary
A class for describing the energy consumption incurred by an AI model in different stages of its lifecycle.
Description
A class to denote the known or estimated energy consumption of an AI model during its training, fine-tuning, and inference stages.
Example
{
"type": "ai_EnergyConsumption",
"ai_trainingEnergyConsumption": [
{
"type": "ai_EnergyConsumptionDescription",
"ai_energyQuantity": "36.5",
"ai_energyUnit": "kilowattHour"
}
],
"ai_inferenceEnergyConsumption": [
{
"type": "ai_EnergyConsumptionDescription",
"ai_energyQuantity": "0.042",
"ai_energyUnit": "kilowattHour"
}
]
}
Metadata
https://spdx.org/rdf/3.0/terms/AI/EnergyConsumption
Name | EnergyConsumption |
Instantiability | Concrete |
Class hierarchy
/AI/EnergyConsumption
Properties
Property | Type | minCount | maxCount |
|---|---|---|---|
finetuningEnergyConsumption | EnergyConsumptionDescription | 0 | * |
inferenceEnergyConsumption | EnergyConsumptionDescription | 0 | * |
trainingEnergyConsumption | EnergyConsumptionDescription | 0 | * |
All properties
Property | Type | minCount | maxCount |
|---|---|---|---|
finetuningEnergyConsumption | EnergyConsumptionDescription | 0 | * |
inferenceEnergyConsumption | EnergyConsumptionDescription | 0 | * |
trainingEnergyConsumption | EnergyConsumptionDescription | 0 | * |
14.2.3 EnergyConsumptionDescription
Summary
The class that helps note down the quantity of energy consumption and the unit used for measurement.
Description
This class is designed to store energy consumption data, including the quantity and the unit of measurement.
The energyQuantity property stores the amount of energy consumed, and the energyUnit property stores the unit used for measurement.
For example, 0.042 kilowatt-hour of energy will have 0.042 as a value for property energyQuantity, and "kilowattHour" as a value for property energyUnit.
Example
{
"type": "ai_EnergyConsumptionDescription",
"ai_energyQuantity": "0.042",
"ai_energyUnit": "kilowattHour"
}
Metadata
https://spdx.org/rdf/3.0/terms/AI/EnergyConsumptionDescription
Name | EnergyConsumptionDescription |
Instantiability | Concrete |
Class hierarchy
/AI/EnergyConsumptionDescription
Properties
Property | Type | minCount | maxCount |
|---|---|---|---|
energyQuantity | xsd:decimal | 1 | 1 |
energyUnit | EnergyUnitType | 1 | 1 |
All properties
Property | Type | minCount | maxCount |
|---|---|---|---|
energyQuantity | xsd:decimal | 1 | 1 |
energyUnit | EnergyUnitType | 1 | 1 |
14.3 Properties
14.3.1 autonomyType
Summary
Indicates whether the system can perform a decision or action without human involvement or guidance.
Description
Indicates if the system is fully automated or a human is involved in any of the decisions of the AI system.
- yes: Indicates that the system is fully automated.
- no: Indicates that a human is involved in any of the decisions of the AI system.
- noAssertion: Makes no assertion about the autonomy.
Metadata
https://spdx.org/rdf/3.0/terms/AI/autonomyType
Name | autonomyType |
Nature | ObjectProperty |
Range | /Core/PresenceType |
Referenced
- /AI/AIPackage
14.3.2 domain
Summary
Captures the domain in which the AI package can be used.
Description
A free-form text that describes the domain where the AI model contained in the AI software can be expected to operate successfully.
Examples include computer vision, natural language processing, etc.
Metadata
https://spdx.org/rdf/3.0/terms/AI/domain
Name | domain |
Nature | DataProperty |
Range | xsd:string |
Referenced
- /AI/AIPackage
14.3.3 energyConsumption
Summary
Indicates the amount of energy consumption incurred by an AI model.
Description
Captures the energy consumption of an AI model, either known or estimated.
In the absence of direct measurements, an SPDX data creator may choose to estimate the energy consumption based on information about computational resources (e.g., number of floating-point operations), training time, and other relevant training details.
Metadata
https://spdx.org/rdf/3.0/terms/AI/energyConsumption
Name | energyConsumption |
Nature | ObjectProperty |
Range | EnergyConsumption |
Referenced
- /AI/AIPackage
14.3.4 energyQuantity
Summary
Represents the energy quantity.
Description
Provides the quantity information of the energy.
Metadata
https://spdx.org/rdf/3.0/terms/AI/energyQuantity
Name | energyQuantity |
Nature | DataProperty |
Range | xsd:decimal |
Referenced
- /AI/EnergyConsumptionDescription
14.3.5 energyUnit
Summary
Specifies the unit in which energy is measured.
Description
Provides the unit information of the energy.
Metadata
https://spdx.org/rdf/3.0/terms/AI/energyUnit
Name | energyUnit |
Nature | ObjectProperty |
Range | EnergyUnitType |
Referenced
- /AI/EnergyConsumptionDescription
14.3.6 finetuningEnergyConsumption
Summary
Specifies the amount of energy consumed when finetuning the AI model that is being used in the AI system.
Description
The field specifies the amount of energy consumed when finetuning the AI model that is being used in the AI system.
Metadata
https://spdx.org/rdf/3.0/terms/AI/finetuningEnergyConsumption
Name | finetuningEnergyConsumption |
Nature | ObjectProperty |
Range | EnergyConsumptionDescription |
Referenced
- /AI/EnergyConsumption
14.3.7 hyperparameter
Summary
Records a hyperparameter used to build the AI model contained in the AI package.
Description
Records a hyperparameter value.
Hyperparameters are settings defined before the training process that control the learning algorithm’s behavior. They differ from model parameters, which are learned from the data during training. Developers typically set hyperparameters manually or through a process of hyperparameter tuning (also known as trial and error).
Examples of hyperparameters include learning rate, batch size, and the number of layers in a neural network.
Metadata
https://spdx.org/rdf/3.0/terms/AI/hyperparameter
Name | hyperparameter |
Nature | ObjectProperty |
Range | /Core/DictionaryEntry |
Referenced
- /AI/AIPackage
14.3.8 inferenceEnergyConsumption
Summary
Specifies the amount of energy consumed during inference time by an AI model that is being used in the AI system.
Description
The field specifies the amount of energy consumed during inference time by an AI model that is being used in the AI system.
Metadata
https://spdx.org/rdf/3.0/terms/AI/inferenceEnergyConsumption
Name | inferenceEnergyConsumption |
Nature | ObjectProperty |
Range | EnergyConsumptionDescription |
Referenced
- /AI/EnergyConsumption
14.3.9 informationAboutApplication
Summary
Provides relevant information about the AI software, not including the model description.
Description
A free-form text description of how the AI model is used within the software.
It should include any relevant information, such as pre-processing steps, third-party APIs, and other pertinent details.
It can also include:
- Functionality provided by the AI model within the software application, including: any specific tasks or decisions it is designed to perform; any pre-processing steps that are applied to the input data before it is fed into the AI model for inference, such as data cleaning, normalization, or feature extraction; and any third-party APIs or services that are used in conjunction with the AI model, such as data sources, cloud services, or other AI models.
- Description of any dependencies or requirements needed to run the AI model within the software application, including the following: specific hardware, software libraries, and operating systems.
Metadata
https://spdx.org/rdf/3.0/terms/AI/informationAboutApplication
Name | informationAboutApplication |
Nature | DataProperty |
Range | xsd:string |
Referenced
- /AI/AIPackage
14.3.10 informationAboutTraining
Summary
Describes relevant information about different steps of the training process.
Description
A detailed explanation of the training process, including the specific techniques, algorithms, and methods employed.
Examples include:
- training data used to train the AI model, along with any relevant details about its source, quality, and pre-processing steps;
- specific training algorithms employed, including stochastic gradient descent, backpropagation, and reinforcement learning;
- specific training techniques used to improve the performance or accuracy of the AI model, such as transfer learning, fine-tuning, or active learning; and
- any evaluation metrics used to assess the performance of the AI model during the training process, including accuracy, precision, recall, and F1 score.
Metadata
https://spdx.org/rdf/3.0/terms/AI/informationAboutTraining
Name | informationAboutTraining |
Nature | DataProperty |
Range | xsd:string |
Referenced
- /AI/AIPackage
14.3.11 limitation
Summary
Captures a limitation of the AI software.
Description
A free-form text that captures a limitation of the AI package (or of the AI models present in the AI package).
Note that this is not guaranteed to be exhaustive.
For instance, a limitation can be that the AI package is having poor accuracy for a certain demography.
Metadata
https://spdx.org/rdf/3.0/terms/AI/limitation
Name | limitation |
Nature | DataProperty |
Range | xsd:string |
Referenced
- /AI/AIPackage
14.3.12 metric
Summary
Records the measurement of prediction quality of the AI model.
Description
Records the measurement with which the AI model was evaluated.
This makes statements about the prediction quality including uncertainty, accuracy, characteristics of the tested population, quality, fairness, explainability, robustness etc.
Metadata
https://spdx.org/rdf/3.0/terms/AI/metric
Name | metric |
Nature | ObjectProperty |
Range | /Core/DictionaryEntry |
Referenced
- /AI/AIPackage
14.3.13 metricDecisionThreshold
Summary
Captures the threshold that was used for computation of a metric described in the metric field.
Description
Each metric can be computed based on a decision threshold.
For instance, precision or recall is typically computed by checking if the probability of the outcome is larger than 0.5.
Each decision threshold shall match with a metric field defined in the AI package.
Metadata
https://spdx.org/rdf/3.0/terms/AI/metricDecisionThreshold
Name | metricDecisionThreshold |
Nature | ObjectProperty |
Range | /Core/DictionaryEntry |
Referenced
- /AI/AIPackage
14.3.14 modelDataPreprocessing
Summary
Describes all the preprocessing steps applied to the training data before the model training.
Description
A free-form text that describes the preprocessing steps applied to the training data before training of the model(s) contained in the AI software.
Metadata
https://spdx.org/rdf/3.0/terms/AI/modelDataPreprocessing
Name | modelDataPreprocessing |
Nature | DataProperty |
Range | xsd:string |
Referenced
- /AI/AIPackage
14.3.15 modelExplainability
Summary
Describes methods that can be used to explain the results from the AI model.
Description
A free-form text that lists the different explainability mechanisms and how they can be used to explain the results from the AI model.
The mechanisms can be model-agnostic methods, such as SHapley Additive exPlanations (SHAP) and Local Interpretable Model-agnostic Explanations (LIME), and model-specific methods that applied to a limited category of models.
Metadata
https://spdx.org/rdf/3.0/terms/AI/modelExplainability
Name | modelExplainability |
Nature | DataProperty |
Range | xsd:string |
Referenced
- /AI/AIPackage
14.3.16 safetyRiskAssessment
Summary
Records the results of general safety risk assessment of the AI system.
Description
Records the results of general safety risk assessment of the AI system.
Using categorization according to the EU general risk assessment methodology. The methodology implements Article 20 of Regulation (EC) No 765/2008 and is intended to assist authorities when they assess general product safety compliance.
It is important to note that this categorization differs from the one proposed in the EU AI Act’s provisional agreement.
Metadata
https://spdx.org/rdf/3.0/terms/AI/safetyRiskAssessment
Name | safetyRiskAssessment |
Nature | ObjectProperty |
Range | SafetyRiskAssessmentType |
Referenced
- /AI/AIPackage
14.3.17 standardCompliance
Summary
Captures a standard that is being complied with.
Description
A free-form text that captures a standard that the AI software complies with.
This includes both published and unpublished standards, such as those developed by ISO, IEEE, and ETSI.
The standard may, but is not necessarily required to, satisfy a legal or regulatory requirement.
Metadata
https://spdx.org/rdf/3.0/terms/AI/standardCompliance
Name | standardCompliance |
Nature | DataProperty |
Range | xsd:string |
Referenced
- /AI/AIPackage
14.3.18 trainingEnergyConsumption
Summary
Specifies the amount of energy consumed when training the AI model that is being used in the AI system.
Description
The field specifies the amount of energy consumed when training the AI model that is being used in the AI system.
Metadata
https://spdx.org/rdf/3.0/terms/AI/trainingEnergyConsumption
Name | trainingEnergyConsumption |
Nature | ObjectProperty |
Range | EnergyConsumptionDescription |
Referenced
- /AI/EnergyConsumption
14.3.19 typeOfModel
Summary
Records the type of the model used in the AI software.
Description
A free-form text that records the type of the AI model(s) used in the software.
For instance, if it is a supervised model, unsupervised model, reinforcement learning model or a combination of those.
Metadata
https://spdx.org/rdf/3.0/terms/AI/typeOfModel
Name | typeOfModel |
Nature | DataProperty |
Range | xsd:string |
Referenced
- /AI/AIPackage
14.3.20 useSensitivePersonalInformation
Summary
Records if sensitive personal information is used during model training or could be used during the inference.
Description
Notes if sensitive personal information is used in the training or inference of the AI models.
This can include biometric data, addresses or other data that can be used to infer a person’s identity.
Related: hasSensitivePersonalInformation in /Dataset/DatasetPackage
Metadata
https://spdx.org/rdf/3.0/terms/AI/useSensitivePersonalInformation
Name | useSensitivePersonalInformation |
Nature | ObjectProperty |
Range | /Core/PresenceType |
Referenced
- /AI/AIPackage
14.4 Vocabularies
14.4.1 EnergyUnitType
Summary
Specifies the unit of energy consumption.
Description
List the different acceptable units for measuring energy consumption.
If the unit in which the energy consumption has been recorded is not listed here, please select “other”.
Metadata
https://spdx.org/rdf/3.0/terms/AI/EnergyUnitType
Name | EnergyUnitType |
Entries
- kilowattHour: Kilowatt-hour.
- megajoule: Megajoule.
- other: Any other units of energy measurement.
14.4.2 SafetyRiskAssessmentType
Summary
Specifies the safety risk level.
Description
Lists the different general safety risk levels that can be used to describe the general safety risk of an AI system.
Using categorization according to the EU general risk assessment methodology. The methodology implements Article 20 of Regulation (EC) No 765/2008 and is intended to assist authorities when they assess general product safety compliance.
Metadata
https://spdx.org/rdf/3.0/terms/AI/SafetyRiskAssessmentType
Name | SafetyRiskAssessmentType |
Entries
- high: The second-highest level of risk posed by an AI system.
- low: Low/no risk is posed by an AI system.
- medium: The third-highest level of risk posed by an AI system.
- serious: The highest level of risk posed by an AI system.
15.0 Build
15.1 Profile information
15.1.1 Build profile
Summary
The Build profile defines the set of information required to describe an instance of a Software Build.
Description
A Software Build is defined here as the act of converting software inputs into software artifacts using software build tools. Inputs can include source code, config files, artifacts that are build environments, and build tools. Outputs can include intermediate artifacts to other build inputs or the final artifacts.
The Build profile provides a subclass of Element called Build.
It also provides a minimum set of required Relationship Types from the Core profile:
- hasInput: Describes the relationship from the Build element to its inputs.
- hasOutput: Describes the relationship from the Build element to its outputs.
- invokedBy: Describes the relationship from the Build element to the Agent that invoked it.
In addition, the following Relationship Types may be used to describe a Build.
- hasHost: Describes the relationship from the Build element to the build stage or host.
- configures: Describes the relationship from a configuration to the Build element.
- ancestorOf: Describes a relationship from a Build element to Build elements that describe its child builds.
- descendantOf: Describes a relationship from a child Build element to its parent.
- usesTool: Describes a relationship from a Build element to a build tool.
All relationships in the Build profile are scoped to the “build” LifecycleScopeType period.
The hasInput relationship can be applied to a config file or a build tool if the nature of these inputs are not known at the creation of an SPDX document.
Metadata
https://spdx.org/rdf/3.0/terms/Build
Name | Build |
Profile conformance
Conformance to the Build profile requires one or more instances of the Build class. In addition, there shall be at least three instances Relationships with type LifecycleScopedRelationship, where the “scope” property shall be “build” and the “from” property shall be the Build instance.
At the minimum, the Build profile shall contain a hasInput, hasOutput, and invokedBy relationshipType. If an input is known to be a build configuration or a build tool, the hasInput relationshipType can be replaced by a configures or usesTool relationshipType.
15.2 Classes
15.2.1 Build
Summary
Class that describes a build instance of software/artifacts.
Description
A build is a representation of the process in which a piece of software or artifact is built. It encapsulates information related to a build process and provides an element from which relationships can be created to describe the build’s inputs, outputs, and related entities (e.g. builders, identities, etc.).
ExternalIdentifier of type “urlScheme” may be used to identify build logs. In this case, the comment of the ExternalIdentifier shall be “LogReference”.
Note that buildStartTime and buildEndTime are optional, and may be omitted to simplify creating reproducible builds.
Metadata
https://spdx.org/rdf/3.0/terms/Build/Build
Name | Build |
Instantiability | Concrete |
SubclassOf | /Core/Element |
Class hierarchy
/Core/Element
/Build/Build
Properties
Property | Type | minCount | maxCount |
|---|---|---|---|
buildEndTime | /Core/DateTime | 0 | 1 |
buildId | xsd:string | 0 | 1 |
buildStartTime | /Core/DateTime | 0 | 1 |
buildType | xsd:anyURI | 1 | 1 |
configSourceDigest | /Core/Hash | 0 | * |
configSourceEntrypoint | xsd:string | 0 | * |
configSourceUri | xsd:anyURI | 0 | * |
environment | /Core/DictionaryEntry | 0 | * |
parameter | /Core/DictionaryEntry | 0 | * |
All properties
Property | Type | minCount | maxCount |
|---|---|---|---|
buildEndTime | DateTime | 0 | 1 |
buildId | xsd:string | 0 | 1 |
buildStartTime | DateTime | 0 | 1 |
buildType | xsd:anyURI | 1 | 1 |
comment | xsd:string | 0 | 1 |
configSourceDigest | Hash | 0 | * |
configSourceEntrypoint | xsd:string | 0 | * |
configSourceUri | xsd:anyURI | 0 | * |
creationInfo | CreationInfo | 1 | 1 |
description | xsd:string | 0 | 1 |
environment | DictionaryEntry | 0 | * |
extension | Extension | 0 | * |
externalIdentifier | ExternalIdentifier | 0 | * |
externalRef | ExternalRef | 0 | * |
name | xsd:string | 0 | 1 |
parameter | DictionaryEntry | 0 | * |
spdxId | xsd:anyURI | 1 | 1 |
summary | xsd:string | 0 | 1 |
verifiedUsing | IntegrityMethod | 0 | * |
15.3 Properties
15.3.1 buildEndTime
Summary
Property that describes the time at which a build stops.
Description
buildEndTime describes the time at which a build stops or finishes.
This value is typically recorded by the builder.
Metadata
https://spdx.org/rdf/3.0/terms/Build/buildEndTime
Name | buildEndTime |
Nature | DataProperty |
Range | /Core/DateTime |
Referenced
- /Build/Build
15.3.2 buildId
Summary
A buildId is a locally unique identifier used by a builder to identify a unique instance of a build produced by it.
Description
A buildId is a locally unique identifier to identify a unique instance of a build, according to the buildType.
This identifier differs based on build toolchain, platform, or naming convention used by an organization or standard.
Metadata
https://spdx.org/rdf/3.0/terms/Build/buildId
Name | buildId |
Nature | DataProperty |
Range | xsd:string |
Referenced
- /Build/Build
15.3.3 buildStartTime
Summary
Property describing the start time of a build.
Description
buildStartTime is the time at which a build is triggered.
The builder typically records this value.
Metadata
https://spdx.org/rdf/3.0/terms/Build/buildStartTime
Name | buildStartTime |
Nature | DataProperty |
Range | /Core/DateTime |
Referenced
- /Build/Build
15.3.4 buildType
Summary
A buildType is a hint that is used to indicate the toolchain, platform, or infrastructure that the build was invoked on.
Description
A buildType is an IRI expressing the toolchain, platform, or infrastructure that the build was invoked on.
The buildType is used to interpret the meaning of other build parameters by defining the “type” of build; if the same buildType is seen in different Build elements, it means they are the same kind of build, but difference instances and possible with different configurations.
If you are not using a well-known buildType, it should be namespaced to a domain you own to prevent conflicts with other buildType IRIs.
Examples of a buildType can be:
- A GitHub action workflow
- A step in a GitHub actions pipeline
- An invocation of a compiler or other tool
- A script that orchestrates builds at a higher level
Keep in mind that builds can be “nested” using the ancestorOf relationship.
If the buildType IRI is not recognized, it is still possible to inspect other properties of the build, but it may not be possible to derive deeper meaning from them.
For more information, see the SLSA definition of buildType.
Metadata
https://spdx.org/rdf/3.0/terms/Build/buildType
Name | buildType |
Nature | DataProperty |
Range | xsd:anyURI |
Referenced
- /Build/Build
15.3.5 configSourceDigest
Summary
Property that describes the digest of the build configuration file used to invoke a build.
Description
configSourceDigest is the checksum of the build configuration file used by a builder to execute a build, according to the buildType.
This property uses the Core model’s Hash class.
Metadata
https://spdx.org/rdf/3.0/terms/Build/configSourceDigest
Name | configSourceDigest |
Nature | ObjectProperty |
Range | /Core/Hash |
Referenced
- /Build/Build
15.3.6 configSourceEntrypoint
Summary
Property describes the invocation entrypoint of a build.
Description
A build entrypoint is the invoked executable of a build which always runs when the build is triggered, according to the buildType.
For example, when a build is triggered by running a shell script, the entrypoint is script.sh.
In terms of a declared build, the entrypoint is the position in a configuration file or a build declaration which is always run when the build is triggered.
For example, in the following configuration file, the entrypoint of the build is publish.
name: Publish packages to PyPI
on:
create:
tags: "*"
jobs:
publish:
runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/tags/')
steps:
...
Metadata
https://spdx.org/rdf/3.0/terms/Build/configSourceEntrypoint
Name | configSourceEntrypoint |
Nature | DataProperty |
Range | xsd:string |
Referenced
- /Build/Build
15.3.7 configSourceUri
Summary
Property that describes the URI of the build configuration source file.
Description
If a build configuration exists for the toolchain or platform performing the build, the configSourceUri of a build is the URI of that build configuration, according to the buildType.
For example, a build triggered by a GitHub Action is defined by a build configuration YAML file. In this case, the configSourceUri is the URL of that YAML file.
Metadata
https://spdx.org/rdf/3.0/terms/Build/configSourceUri
Name | configSourceUri |
Nature | DataProperty |
Range | xsd:anyURI |
Referenced
- /Build/Build
15.3.8 environment
Summary
Property describing the session in which a build is invoked.
Description
environment is a map of environment variables and values that are set during a build session, according to the buildType.
This is different from the parameter property (see 15.3.9) in that it describes the environment variables set before a build is invoked rather than the variables provided to the builder.
Metadata
https://spdx.org/rdf/3.0/terms/Build/environment
Name | environment |
Nature | ObjectProperty |
Range | /Core/DictionaryEntry |
Referenced
- /Build/Build
15.3.9 parameter
Summary
Property describing a parameter used in an instance of a build.
Description
parameter is a key-value of a build parameter and its value that was provided to the builder for a build instance, according to the buildType.
This is different from the environment property in that the key and value are provided as command line arguments or a configuration file to the builder.
Metadata
https://spdx.org/rdf/3.0/terms/Build/parameter
Name | parameter |
Nature | ObjectProperty |
Range | /Core/DictionaryEntry |
Referenced
- /Build/Build
16.0 Lite
16.1 Profile information
16.1.1 Lite profile
Summary
The SPDX Lite profile defines a simple view of SPDX data, from the point of view of use cases in some industries.
Description
The SPDX Lite profile consists of mandatory and recommended information.
The mandatory data in SPDX Lite is basic but useful for complying with licenses. It is easy to understand licensing information by reading an SPDX Lite file.
SPDX Lite aims at a balance between the full SPDX data model and actual workflows in some industries.
An SPDX Lite document can also be used in parallel with other SPDX documents in software supply chains.
Metadata
https://spdx.org/rdf/3.0/terms/Lite
Name | Lite |
Profile conformance
In addition to the following mandatory requirements, please refer to Annex D for elements that shall be included as part of a document conforming to the Lite profile.
For a /Software/Package to be conformant with this profile, the following has to hold:
- The minCount for copyrightText is 1
- The minCount for packageVersion is 1
- The minCount for suppliedBy is 1
- At least one of downloadLocation or packageUrl shall be present
Additionally:
- for every /Software/Package there shall exist exactly one /Core/Relationship of type hasConcludedLicense having that element as its from property and a /SimpleLicensing/AnyLicenseInfo as its to property.
- for every /Software/Package there shall exist exactly one /Core/Relationship of type hasDeclaredLicense having that element as its from property and a /SimpleLicensing/AnyLicenseInfo as its to property.
For a /Core/SpdxDocument to be conformant with this profile, the following has to hold:
- The minCount for element is 1
- The minCount for rootElement is 1
For a /Software/Sbom to be conformant with this profile, the following has to hold:
- The minCount for element is 1
- The minCount for rootElement is 1
Finally, for a /Core/Agent to be conformant with this profile, the following has to hold:
- The minCount for name is 1
17.0 Extension
17.1 Profile information
17.1.1 Extension profile
Summary
Everything having to do with SPDX extensions.
Description
The Extension namespace defines the abstract Extension class serving as the base for all defined extension subclasses.
Metadata
https://spdx.org/rdf/3.0/terms/Extension
Name | Extension |
17.2 Classes
17.2.1 CdxPropertiesExtension
Summary
A type of extension consisting of a list of name value pairs.
Description
This extension provides a more structured extension using a name-value approach.
Unlike key-value stores, properties in CdxPropertiesExtension support duplicate names, each potentially having different values.
This is intended to be compatible with the CycloneDX property properties.
Metadata
https://spdx.org/rdf/3.0/terms/Extension/CdxPropertiesExtension
Name | CdxPropertiesExtension |
Instantiability | Concrete |
SubclassOf | Extension |
Class hierarchy
/Extension/Extension
/Extension/CdxPropertiesExtension
Properties
Property | Type | minCount | maxCount |
|---|---|---|---|
cdxProperty | CdxPropertyEntry | 1 | * |
All properties
Property | Type | minCount | maxCount |
|---|---|---|---|
cdxProperty | CdxPropertyEntry | 1 | * |
17.2.2 CdxPropertyEntry
Summary
A property name with an associated value.
Description
Each CdxPropertyEntry contains a name-value pair which maps the name to its associated value.
Unlike key-value stores, properties in CdxPropertiesExtension support duplicate names, each potentially having different values.
This class can be used to implement CycloneDX compatible properties.
Metadata
https://spdx.org/rdf/3.0/terms/Extension/CdxPropertyEntry
Name | CdxPropertyEntry |
Instantiability | Concrete |
Class hierarchy
/Extension/CdxPropertyEntry
Properties
Property | Type | minCount | maxCount |
|---|---|---|---|
cdxPropName | xsd:string | 1 | 1 |
cdxPropValue | xsd:string | 0 | 1 |
All properties
Property | Type | minCount | maxCount |
|---|---|---|---|
cdxPropName | xsd:string | 1 | 1 |
cdxPropValue | xsd:string | 0 | 1 |
17.2.3 Extension
Summary
A characterization of some aspect of an Element that is associated with the Element in a generalized fashion.
Description
An Extension is a characterization of some aspect of an Element that is associated with the Element in a generalized fashion.
Rather than being associated with a particular Element through the typical use of a purpose-specific object property an Extension is associated with the Element it characterizes using a single common generalized object property.
This approach serves multiple purposes:
- Support profile-based extended characterization of Elements. Enables specification and expression of Element characterization extensions within any profile and namespace of SPDX without requiring changes to other profiles or namespaces and without requiring local subclassing of remote classes (which could inhibit ecosystem interoperability in some cases).
- Support extension of SPDX by adopting individuals or communities with Element characterization details uniquely specialized to their particular context. Enables adopting individuals or communities to utilize SPDX expressive capabilities along with expressing more arcane Element characterization details specific to them and not appropriate for standardization across SPDX.
- Support structured capture of expressive solutions for gaps in SPDX coverage from real-world use. Enables adopting individuals or communities to express Element characterization details they require that are not currently defined in SPDX but likely should be. Enables a practical pipeline that:
- identifies gaps in SPDX that should be filled,
- expresses solutions to those gaps in a way that allows the identifying adopters to use the extended solutions with SPDX and does not conflict with current SPDX,
- can be clearly detected among the SPDX content exchange ecosystem,
- provides a clear and structured definition of gap solution that can be used as submission for revision to SPDX standard
Metadata
https://spdx.org/rdf/3.0/terms/Extension/Extension
Name | Extension |
Instantiability | Abstract |
Class hierarchy
/Extension/Extension
17.3 Properties
17.3.1 cdxPropName
Summary
A name used in a CdxPropertyEntry name-value pair.
Description
A cdxPropName is used in a CdxPropertyEntry name-value pair.
Unlike key-value stores, properties in CdxPropertiesExtension support duplicate names, each potentially having different values.
Metadata
https://spdx.org/rdf/3.0/terms/Extension/cdxPropName
Name | cdxPropName |
Nature | DataProperty |
Range | xsd:string |
Referenced
- /Extension/CdxPropertyEntry
17.3.2 cdxPropValue
Summary
A value used in a CdxPropertyEntry name-value pair.
Description
A cdxPropValue is used in a CdxPropertyEntry name-value pair.
Unlike key-value stores, properties in CdxPropertiesExtension support duplicate names, each potentially having different values.
Metadata
https://spdx.org/rdf/3.0/terms/Extension/cdxPropValue
Name | cdxPropValue |
Nature | DataProperty |
Range | xsd:string |
Referenced
- /Extension/CdxPropertyEntry
17.3.3 cdxProperty
Summary
Provides a map of a property name to a value.
Description
This field provides a mapping of a name to a value.
This is intended to be compatible with the CycloneDX property properties.
Unlike key-value stores, properties in CdxPropertiesExtension support duplicate names, each potentially having different values.
Metadata
https://spdx.org/rdf/3.0/terms/Extension/cdxProperty
Name | cdxProperty |
Nature | ObjectProperty |
Range | CdxPropertyEntry |
Referenced
- /Extension/CdxPropertiesExtension
The SPDX RDF ontology is expressed in RDF/OWL/SHACL format and is published in online at SPDX 3.0 model.
Often a single license can be used to represent the licensing terms of a source code or binary file, but there are situations where a single license identifier is not sufficient. A common example is when software is offered under a choice of one or more licenses (e.g., GPL-2.0-only OR BSD-3-Clause). Another example is when a set of licenses is needed to represent a binary program constructed by compiling and linking two (or more) different source files each governed by different licenses (e.g., LGPL-2.1-only AND BSD-3-Clause).
SPDX License Expressions provide a way for one to construct expressions that more accurately represent the licensing terms typically found in open source software source code. A license expression could be a single license identifier found on the SPDX License List; a user defined license reference denoted by the “LicenseRef-(idstring)”; a license identifier combined with an SPDX exception; or some combination of license identifiers, license references and exceptions constructed using a small set of defined operators (e.g., “AND”, “OR”, “WITH” and “+”). We provide the definition of what constitutes a valid SPDX License Expression in this section.
The general format of license expressions is described below in ABNF, as defined in RFC 5234 and expanded in RFC 7405.
idstring = 1*(ALPHA / DIGIT / "-" / "." )
license-id = <short form license identifier from SPDX License List>
license-exception-id = <short form license exception identifier from SPDX License List>
license-ref = ["DocumentRef-"(idstring)":"]"LicenseRef-"(idstring)
addition-ref = ["DocumentRef-"(idstring)":"]"AdditionRef-"(idstring)
simple-expression = license-id / license-id"+" / license-ref / "NONE" / "NOASSERTION"
addition-expression = license-exception-id / addition-ref
compound-expression = (simple-expression /
simple-expression "WITH" addition-expression /
compound-expression "AND" compound-expression /
compound-expression "OR" compound-expression /
"(" compound-expression ")" )
license-expression = (simple-expression / compound-expression)
In the following sections we describe in more detail <license-expression> construct, a licensing expression string that enables a more accurate representation of the licensing terms of modern-day software.
A valid <license-expression> string consists of either:
- a simple license expression, such as a single license identifier; or
- a more complex expression constructed by combining smaller valid expressions using Boolean license operators.
There shall not be any space between a license-id and any following “+”. This supports easy parsing and backwards compatibility.
There shall be at least one space on either side of the operators “AND”, “OR”, and “WITH”.
A license expression shall be on a single line, and shall not include a line break in the middle of the expression.
In SPDX 3, license expressions are completely case-insensitive.
That includes the operators (“AND”, “OR”, “WITH”), the special identifiers (“NONE” and “NOASSERTION”), as well as the license identifiers, including the user-defined ones.
For example, the expressions MIT AND NOASSERTION AND (BSD-3-Clause OR LicenseRef-Name) and mit aNd NoaSSerTion AnD (bSd-3-clausE OR licenseref-NAME) are equivalent.
However, please be aware that it is often important to note the case of the canonical identifier on the SPDX License List. This is because the canonical identifier’s case is used in the URL of the license’s or exception’s entry on the List, and because the canonical identifier is translated to a URI in RDF documents.
A simple <license-expression> is composed one of the following:
- An SPDX License List Short Form Identifier. For example: CDDL-1.0
- An SPDX License List Short Form Identifier with a unary “+” operator suffix to represent the current version of the license or any later version. For example: CDDL-1.0+
- One of the special identifiers “NONE” or “NOASSERTION”
- A user defined license reference: ["DocumentRef-"(idstring)":"]"LicenseRef-"(idstring). For example: LicenseRef-23, LicenseRef-MIT-Style-1, and DocumentRef-spdx-tool-1.2:LicenseRef-MIT-Style-2
The current set of valid license identifiers can be found in the SPDX License List.
More expressive composite license expressions can be constructed using “OR”, “AND”, and “WITH” operators similar to constructing mathematical expressions using arithmetic operators.
Any license expression that consists of more than one license identifier and/or LicenseRef, may optionally be encapsulated by parentheses: “( )”.
Nested parentheses can also be used to specify an order of precedence which is discussed in more detail below.
If presented with a choice between two or more licenses, use the disjunctive binary “OR” operator to construct a new license expression, where both the left and right operands are valid license expression values.
For example, when given a choice between the LGPL-2.1-only or MIT licenses, a valid expression would be:
LGPL-2.1-only OR MIT
The “OR” operator is commutative, meaning that the above expression should be considered equivalent to:
MIT OR LGPL-2.1-only
An example representing a choice between three different licenses would be:
LGPL-2.1-only OR MIT OR BSD-3-Clause
The special identifiers “NONE” or “NOASSERTION” shall not be used with the “OR” operator.
If required to simultaneously comply with two or more licenses, use the conjunctive binary “AND” operator to construct a new license expression, where both the left and right operands are valid license expression values.
For example, when one is required to comply with both the LGPL-2.1-only and MIT licenses, a valid expression would be:
LGPL-2.1-only AND MIT
The “AND” operator is commutative, meaning that the above expression should be considered equivalent to:
MIT AND LGPL-2.1-only
An example where three different licenses apply would be:
LGPL-2.1-only AND MIT AND BSD-2-Clause
The “AND” operator is the only operator that can be used in conjunction with the special identifiers “NONE” or “NOASSERTION”.
Sometimes license texts are found with additional text, which might or might not modify the original license terms.
In this case, use the binary “WITH” operator to construct a new license expression to represent the special situation. A valid <license-expression> is where the left operand is a <simple-expression> value and the right operand is a <addition-expression> that represents the additional text.
The <addition-expression> can be either a <license-exception-id> from the SPDX License List, or a user defined addition reference in the form ["DocumentRef-"(idstring)":"]"AdditionRef-"(idstring).
For example, when the Bison exception is to be applied to GPL-2.0-or-later, the expression would be:
GPL-2.0-or-later WITH Bison-exception-2.2
The current set of valid license exceptions identifiers can be found in spdx.org/licenses.
The special identifiers “NONE” or “NOASSERTION” shall not be used with the “WITH” operator.
The order of application of the operators in an expression matters (similar to mathematical operators). The default operator order of precedence of a <license-expression> is:
+
WITH
AND
OR
where a lower order operator is applied before a higher order operator.
For example, the following expression:
LGPL-2.1-only OR BSD-3-Clause AND MIT
represents a license choice between either LGPL-2.1-only or the expression “BSD-3-Clause AND MIT” because the “AND” operator takes precedence over (is applied before) the “OR” operator.
When required to express an order of precedence that is different from the default order a <license-expression> can be encapsulated in pairs of parentheses: ( ), to indicate that the operators found inside the parentheses takes precedence over operators outside. This is also similar to the use of parentheses in an algebraic expression e.g., (5+7)/2.
For instance, the following expression:
(LGPL-2.1-or-later OR BSD-3-Clause) AND MIT
states the “OR” operator should be applied before the “AND” operator. That is, one should first select between the LGPL-2.1-or-later or the BSD-3-Clause license before applying the MIT license.
The complete syntax of license expressions, including precedence and whitespace, is described by the following ABNF:
; ABNF Grammar for License Expressions
SPSX-license-expression = (or-operand *( required-ws "OR" required-ws or-operand )) / special-identifier
or-operand = (term required-ws "AND" required-ws term *( required-ws "AND" required-ws term )) / base-term
term = base-term / special-identifier
base-term = with-expression / identifier / parenthesized-expression
with-expression = identifier required-ws "WITH" required-ws addition-identifier
addition-identifier = license-exception-id / addition-ref
identifier = license-id / or-later-expression / license-ref
or-later-expression = license-id PLUS
parenthesized-expression = LPAREN optional-ws expression optional-ws RPAREN
special-identifier = "NONE" / "NOASSERTION"
; --- SPDX License List contents ---
license-id = <short form license identifier from SPDX License List>
license-exception-id = <short form license exception identifier from SPDX License List>
; --- User-defined identifiers ---
license-ref = [ "DocumentRef-" idstring ":" ] "LicenseRef-" idstring
addition-ref = [ "DocumentRef-" idstring ":" ] "AdditionRef-" idstring
idstring = *id-char alnum *id-char
idchar = alnum / DOT / DASH
alnum = ALPHA / DIGIT
; --- Whitespace and characters ---
optional-ws = *SPACE ; Optional whitespace (zero or more spaces)
required-ws = 1*SPACE ; Required whitespace (one or more spaces)
SPACE = %x20 ; Space character
LPAREN = %x28 ; ( - Left parenthesis
RPAREN = %x29 ; ) - Right parenthesis
PLUS = %2B ; + - Plus
DASH = %2D ; - - Dash, hyphen
DOT = %2E ; . - Dot, fullstop, period
ALPHA = %x41-5A / %x61-7A ; A-Z / a-z
DIGIT = %x30-39 ; 0-9
The SPDX License List Matching Guidelines provide guidelines to be used for the purposes of matching licenses and license exceptions against those included on the SPDX License List. There is no intent here to make a judgment or interpretation, but merely to ensure that when one SPDX user identifies a license as “BSD-3-Clause,” for example, it is indeed the same license as what someone else identifies as “BSD-3-Clause” and the same license as what is listed on the SPDX License List. As noted here, some of the matching guidelines are implemented in the XML files of the SPDX License List repository.
To ensure consistent results by different SPDX document creators when matching license information that will be included in SPDX data. SPDX document creators or tools may match on the license or exception text itself, the official license header, or the SPDX License List short identifier.
The matching guidelines apply to license and exception text, as well as official license headers. Official license headers are defined by the SPDX License List as specific text specified within the license itself to be put in the header of files. (see explanation of SPDX License List fields for more info).
The following XML tag is used to implement this guideline: <standardLicenseHeader>
To ensure that when matching licenses and exceptions to the SPDX License List, there is an appropriate balance between matching against the substantive text and disregarding parts of the text that do not alter the substantive text or legal meaning. Further guidelines of what can be disregarded or considered replaceable for purposes of matching are listed below here and in the subsequent specific guidelines. A conservative approach is taken in regard to rules relating to disregarded or replaceable text.
License and exception text shall be the same verbatim text (except for the guidelines stated here). The text shall be in the same order, e.g., differently ordered paragraphs shall not be considered a match.
Matched text shall only include that found in the vetted license or exception text. Where a license or exception found includes additional text or clauses, this shall not be considered a match.
Some licenses include text that refers to the specific copyright holder or author, yet the rest of the license is exactly the same. The intent here is to avoid the inclusion of a specific name in one part of the license resulting in a non-match where the license is otherwise an exact match to the legally substantive terms (e.g., the third clause and disclaimer in the BSD licenses, or the third, fourth, and fifth clauses of Apache-1.1). In these cases, there shall be a positive license match.
The text indicated as such can be replaced with similar values (e.g., a different name or generic term; different date) and still be considered a positive match. This rule also applies to text-matching in official license headers, see C.2.2.
The following XML tag is used to implement this guideline. <alt> with 2 attributes:
- match - a POSIX extended regular expression (ERE) to match the replaceable text
- name - an identifier for the variable text unique to the license XML document
The original text is enclosed within the beginning and ending alt tags.
For example: <alt match="(?i:copyright.{0,200})." name="copyright1">Copyright The Linux Foundation</alt>
The original replaceable text appears on the SPDX License List webpage in red text.
Some licenses have text that can simply be ignored. The intent here is to avoid the inclusion of certain text that is superfluous or irrelevant in regard to the substantive license text resulting in a non-match where the license is otherwise an exact match (e.g., directions on how to apply the license or other similar exhibits). In these cases, there shall be a positive license match.
The license shall be considered a match if the text indicated is present and matches or the text indicated is missing altogether.
The following XML tag is used to implement this guideline: <optional>
For example: <optional>Apache License Version 2.0, January 2004 http://www.apache.org/licenses/</optional>
Omittable text appears on the SPDX License List webpage in blue text.
To avoid the possibility of a non-match due to different spacing of words, line breaks, or paragraphs.
All whitespace shall be treated as a single blank space.
XML files do not require specific markup to implement this guideline.
To avoid the possibility of a non-match due to lowercase or uppercase letters in otherwise the same words.
All uppercase and lowercase letters shall be treated as lowercase letters.
XML files do not require specific markup to implement this guideline.
Because punctuation can change the meaning of a sentence, punctuation needs to be included in the matching process.
XML files do not require specific markup to implement this guideline, unless to indicate an exception to the guideline.
Punctuation shall be matched, unless otherwise stated in these guidelines or unless specific markup is added.
Any hyphen, dash, en dash, em dash, or other variation shall be considered equivalent.
Any variation of quotations (single, double, curly, etc.) shall be considered equivalent.
To avoid the possibility of a non-match due to the existence or absence of code comment indicators placed within the license text, e.g., at the start of each line of text, or repetitive characters to establish a separation of text, e.g., ---, ===, ___, or ***.
Any kind of code comment indicator or prefix which occurs at the beginning of each line in a matchable section shall be ignored for matching purposes.
XML files do not require specific markup to implement this guideline.
A non-letter character repeated 3 or more times to establish a visual separation shall be ignored for matching purposes.
XML files do not require specific markup to implement this guideline.
To avoid the possibility of a non-match due to the otherwise same license using bullets instead of numbers, number instead of letter, or no bullets instead of bullet, etc., for a list of clauses.
Where a line starts with a bullet, number, letter, or some form of a list item (determined where list item is followed by a space, then the text of the sentence), ignore the list item for matching purposes.
The following XML tag is used to implement this guideline: <bullet>
For example: <bullet>1.0</bullet>
English uses different spelling for some words. By identifying the spelling variations for words found or likely to be found in licenses, we avoid the possibility of a non-match due to the same word being spelled differently. This list is not meant to be an exhaustive list of all spelling variations, but meant to capture the words most likely to be found in open source software licenses.
The words in each line of the text file available at the equivalent words list are considered equivalent and interchangeable.
XML files do not require specific markup to implement this guideline.
By having a rule regarding the use of “©”, “(c)”, or “copyright”, we avoid the possibility of a mismatch based on these variations.
“©”, “(C)”, “(c)”, or “Copyright” shall be considered equivalent and interchangeable.
XML files do not require specific markup to implement this guideline. The copyright symbol is part of the copyright notice, see implementation of that guideline in C.11.
To avoid a license mismatch merely because the copyright notice (usually found above the actual license or exception text) is different. The copyright notice is important information to be recorded elsewhere in the SPDX document, but for the purposes of matching a license to the SPDX License List, it shall be ignored because it is not part of the substantive license text.
Ignore copyright notices. A copyright notice consists of the following elements, for example: “2012 Copyright, John Doe. All rights reserved.” or “(c) 2012 John Doe.”
The following XML tag is used to implement this guideline: <copyrightText>
For example: <copyrightText>Copyright 2022 The Linux Foundation</copyrightText>
To avoid a license mismatch merely because the name or title of the license is different than how the license is usually referred to or different than the SPDX full name. This also avoids a mismatch if the title or name of the license is simply not included.
Ignore the license name or title for matching purposes, so long as what ignored is the title only and there is no additional substantive text added here.
The following XML tag is used to implement this guideline: <titleText>
For example: <titleText>Attribution Assurance License</titleText>
To avoid a license mismatch merely because extraneous text that appears at the end of the terms of a license is different or missing. This also avoids a mismatch if the extraneous text merely serves as a license notice example and includes a specific copyright holder’s name.
Ignore any text that occurs after the obvious end of the license and does not include substantive text of the license, for example: text that occurs after a statement such as, “END OF TERMS AND CONDITIONS,” or an exhibit or appendix that includes an example or instructions on to how to apply the license to your code. Do not apply this guideline or ignore text that is comprised of additional license terms (e.g., permitted additional terms under GPL-3.0, section 7).
To implement this guideline, use the <optional> XML element tag as described in C.3.5.
To avoid a license mismatch due to a difference in a hyperlink protocol (e.g. HTTP vs. HTTPS).
http:// and https:// shall be considered equivalent.
XML files do not require specific markup to implement this guideline.
The license XML can be accessed in the license-list-data repository under the license-list-XML directory. Although the license list XML files can also be found in the license-list-XML repository, users are encouraged to use the published versions in the license-list-data repository. The license-list-data repository is tagged by release. Only tagged released versions of the license list are considered stable.
A full schema for the License List XML can be found at SPDX License List XML Schema.
Prior to the XML format, a text template was used to express variable and optional text in licenses. This text template is still supported, however, users are encouraged to use the more expressive XML format.
A legacy template is composed of text with zero or more rules embedded in it.
A rule is a variable section of a license wrapped between double angle brackets <<>> and is composed of 4 fields. Each field is separated with a semi-colon (;). Rules shall not be embedded within other rules. Rule fields begin with a case sensitive tag followed by an equal sign (=).
Rule fields:
- type: indicates whether the text is replaceable or omittable as per C.3.
- Indicated by <<var; . . . >> or
- Indicated by <<beginOptional; . . .>> and <<endOptional>> respectively.
- This field is the first field and is required.
- name: name of the field in the template.
- This field is unique within each license template.
- This field is required.
- original: the original text of the rule.
- This field is required for a rule type: <<var; . . . >>
- match: a POSIX extended regular expression (ERE).
- This field is required for a rule type: <<var; . . . >>
The POSIX ERE in the match field has the following restrictions and extensions:
- Semicolons are escaped with \;
- POSIX Bracket Extensions are not allowed
For example: <<var;name=organizationClause3;original=the copyright holder;match=.+>>
The Lite profile is designed to make it quick and easy to start a Software Bill of Materials in situations where a company may have limited capacity for introducing new items into their processes.
The Lite profile captures the minimum set of information required for license compliance in the software supply chain. It contains information about the creation of the SBOM, package lists with licensing and other related information, and their relationships.
All elements in Lite profile are essential for complying with licenses. It is easy to use an SPDX document with the Lite profile for anyone who does not have enough knowledge about licensing information and easy to import license information from former versions of SPDX Lite format files.
The Lite profile offers the flexibility to be used either alone or in combination with other SPDX profiles as an SPDX document in the software supply chain.
The Lite profile specifies that some properties shall be present, and some others should be present, as much as possible.
The following lists collect and present this information for every class present in the SPDX data, in a concise and easy-to-follow format. The lists of properties are in alphabetical order, for easy reference.
- Mandatory
- creationInfo
- element (may be multiple), shall have at least one /Software/Sbom object
- rootElement (may be multiple), should be objects of type /Software/Sbom
- spdxId
- Recommended
- Mandatory
- creationInfo
- element (may be multiple), shall have at least one /Software/Package object
- rootElement (may be multiple), should be objects of type /Software/Package
- spdxId
- Recommended
- Mandatory
- copyrightText
- creationInfo
- name
- packageVersion
- spdxId
- suppliedBy, should be an object of type /Core/Agent
- Recommended
- attributionText (may be multiple)
- builtTime
- comment
- downloadLocation
- homepage
- originatedBy (may be multiple), should be objects of type /Core/Agent
- packageUrl
- releaseTime
- supportLevel (may be multiple)
- validUntilTime
- verifiedUsing (may be multiple), should be objects of type /Core/Hash
However, there shall be at least a “downloadLocation” or “packageUrl” property.
Additionally:
- for every /Software/Package object shall exist exactly one /Core/Relationship object of type hasConcludedLicense having that element as its from property and a /SimpleLicensing/AnyLicenseInfo object as its to property.
- for every /Software/Package object shall exist exactly one /Core/Relationship object of type hasDeclaredLicense having that element as its from property and a /SimpleLicensing/AnyLicenseInfo object as its to property.
- Mandatory
- algorithm
- hashValue
- Recommended
- Mandatory
- creationInfo
- licenseExpression
- spdxId
- Recommended
- Mandatory
- creationInfo
- licenseText
- spdxId
- Recommended
- Mandatory
- creationInfo, should be “BlankNode”
- name
- spdxId
- Recommended
- Mandatory
- created
- createdBy (may be multiple), should be objects of type /Core/Agent
- specVersion, shall be a fixed string, “3.0.n” - where n is any supported patch version of the SPDX specification
- Recommended
- Mandatory
- Mandatory
- Mandatory
- creationInfo
- from
- relationshipType
- spdxId
- to (may be multiple)
The Package URL core specification defines a versioned and formalized format, syntax, and rules used to represent and validate package URLs.
A package URL or purl is an attempt to standardize existing approaches to reliably identify the location of software packages.
A purl is a URL string used to identify the location of a software package in a mostly universal and uniform way across programming languages, package managers, packaging conventions, tools, APIs and databases.
Such a package URL is useful to reliably reference the same software package using a simple and expressive syntax and conventions based on familiar URLs.
purl stands for package URL.
A purl is a URL composed of seven components:
scheme:type/namespace/name@version?qualifiers#subpath
Components are separated by a specific character for unambiguous parsing.
The definition for each component is:
- scheme: this is the URL scheme with the constant value of “pkg”. One of the primary reason for this single scheme is to facilitate the future official registration of the “pkg” scheme for package URLs. Required.
- type: the package type or package protocol such as maven, npm, nuget, gem, pypi, etc. Required.
- namespace: some name prefix such as a Maven groupid, a Docker image owner, a GitHub user or organization. Optional and type-specific.
- name: the name of the package. Required.
- version: the version of the package. Optional.
- qualifiers: extra qualifying data for a package such as an OS, architecture, a distribution, etc. Optional and type-specific.
- subpath: extra subpath within a package, relative to the package root. Optional.
Components are designed such that they form a hierarchy from the most significant on the left to the least significant components on the right.
A purl is a valid URL and URI that conforms to the URL definitions and specifications in RFC 3986 https://datatracker.ietf.org/doc/rfc3986/.
A purl shall not contain a URL Authority i.e. there is no support for username, password, host and port components. A namespace segment may sometimes look like a host but its interpretation is specific to a type.
The purl components are mapped to the following URL components:
- purl scheme: this is a URL scheme with a constant value: pkg
- purl type, namespace, name and version components: these are collectively mapped to a URL path
- purl qualifiers: this maps to a URL query
- purl subpath: this is a URL fragment
For clarity and simplicity a purl is always an ASCII string. To ensure that there is no ambiguity when parsing a purl, separator characters and non-ASCII characters shall be encoded in UTF-8, and then percent-encoded as defined in RFC 3986 https://datatracker.ietf.org/doc/rfc3986/.
Use these rules for percent-encoding and decoding purl components:
- the type shall not be encoded and shall not contain separators
- the #, ?, @ and : characters shall not be encoded when used as separators. They may need to be encoded elsewhere
- the : scheme and type separator does not need to and shall not be encoded. It is unambiguous unencoded everywhere
- the / used as type/namespace/name and subpath segments separator does not need to and shall not be percent-encoded. It is unambiguous unencoded everywhere
- the @ version separator shall be encoded as %40 elsewhere
- the ? qualifiers separator shall be encoded as %3F elsewhere
- the = qualifiers key/value separator shall not be encoded
- the # subpath separator shall be encoded as %23 elsewhere
- All non-ASCII characters shall be encoded as UTF-8 and then percent-encoded
It is OK to percent-encode any purl components, except for the type. Producers and consumers of purl data shall always percent-decode and percent-encode components and component segments as explained in the “How to produce and consume purl data” section.
A purl string is an ASCII URL string composed of seven components.
Some components are allowed to use other characters beyond ASCII: these components shall then be UTF-8-encoded strings and percent-encoded as defined in the “Character encoding” section.
The rules for each component are:
- The scheme is a constant with the value “pkg”
- Since a purl never contains a URL Authority, its scheme shall not be suffixed with double slash as in pkg:// and should use instead pkg:.
- purl parsers shall accept URLs such as ‘pkg://’ and shall ignore the ‘//’.
- purl builders shall not create invalid URLs with such double slash ‘//’.
- The scheme is followed by a ‘:’ separator.
For example, the two purls pkg:gem/ruby-advisory-db-check@0.12.4 and pkg://gem/ruby-advisory-db-check@0.12.4 are strictly equivalent. The first is in canonical form while the second is an acceptable purl but is an invalid URI/URL per RFC 3986.
- The package type is composed only of ASCII letters and numbers, ., + and - (period, plus, and dash).
- The type cannot start with a number.
- The type cannot contain spaces.
- The type shall not be percent-encoded.
- The type is case insensitive, with the canonical form being lowercase.
- The optional namespace contains zero or more segments, separated by slash /.
- Leading and trailing slashes / are not significant and should be stripped in the canonical form. They are not part of the namespace.
- Each namespace segment shall be a percent-encoded string.
- When percent-decoded, a segment shall not contain a slash / and shall not be empty.
- A URL host or Authority shall not be used as a namespace. Use instead a repository_url qualifier. Note however that for some types, the namespace may look like a host.
- The name is prefixed by a slash / separator when the namespace is not empty.
- This slash / is not part of the name.
- A name shall be a percent-encoded string.
- The version is prefixed by a at-sign @ separator when not empty.
- This at-sign @ is not part of the version.
- A version shall be a percent-encoded string.
- A version is a plain and opaque string. Some package types use versioning conventions such as SemVer for NPMs or NEVRA conventions for RPMS. A type may define a procedure to compare and sort versions, but there is no reliable and uniform way to do such comparison consistently.
- The qualifiers string is prefixed by a ? separator when not empty.
- This ? is not part of the qualifiers.
- This is a string composed of zero or more key=value pairs each separated by an ampersand &. A key and value are separated by an equal = character.
- These & are not part of the key=value pairs.
- Each key shall be unique within the keys of the qualifiers string.
- A value shall not be an empty string; a key=value pair with an empty value is the same as no key/value at all for this key.
- Each key shall be composed only of ASCII letters and numbers, ., - and \_ (period, dash and underscore).
- A key shall not start with a number.
- A key shall not be percent-encoded.
- A key is case insensitive, with the canonical form being lowercase.
- A key shall not contain spaces.
- A value shall be a percent-encoded string.
- The = separator is neither part of the key nor of the value.
- The subpath string is prefixed by a # separator when not empty.
- This # is not part of the subpath.
- The subpath contains zero or more segments, separated by slash /.
- Leading and trailing slashes / are not significant and shall be stripped in the canonical form.
- Each subpath segment shall be a percent-encoded string.
- When percent-decoded, a segment shall not contain a /, shall not be any of .. or ., and shall not be empty.
- The subpath shall be interpreted as relative to the root of the package.
There are several known purl package type definitions. The current list of known types is: alpm, apk, bitbucket, bitnami, cargo, cocoapods, composer, conan, conda, cpan, cran, deb, docker, gem, generic, github, golang, hackage, hex, huggingface, luarocks, maven, mlflow, npm, nuget, oci, pub, pypi, qpkg, rpm, swid, and swift.
The list, with definitions for each type, is maintained in the file named PURL-TYPES.rst in the online repository https://github.com/package-url/purl-spec.
Qualifiers should be limited to the bare minimum for proper package identification, to ensure that a purl stays compact and readable in most cases. Separate external attributes stored outside of a purl are the preferred mechanism to convey extra-long and optional information. API, database or web form.
The following keys are valid for use in all package types:
- repository_url is an extra URL for an alternative, non-default package repository or registry. The default repository or registry of each type is documented in the “Known types” section.
- download_url is an extra URL for a direct package web download URL.
- vcs_url is an extra URL for a package version control system URL.
- file_name is an extra file name of a package archive.
- checksum is a qualifier for one or more checksums stored as a comma-separated list. Each item in the list is in form of algorithm:hex_value (all lowercase), such as sha1:ad9503c3e994a4f611a4892f2e67ac82df727086.
The following provides rules to be followed when building or deconstructing purl instances.
Building a purl ASCII string works from left to right, from type to subpath.
To build a purl string from its components:
- Start a purl string with the “pkg:” scheme as a lowercase ASCII string
- Append the type string to the purl as a lowercase ASCII string
- Append / to the purl
- If the namespace is not empty:
- Strip the namespace from leading and trailing /
- Split on / as segments
- Apply type-specific normalization to each segment, if needed
- Encode each segment in UTF-8-encoding
- Percent-encode each segment
- Join the segments with /
- Append this to the purl
- Append / to the purl
- Strip the name from leading and trailing /
- Apply type-specific normalization to the name, if needed
- Encode the name in UTF-8-encoding
- Percent-encode the name
- Append the percent-encoded name to the purl
- If the version is not empty:
- Append @ to the purl
- Encode the version in UTF-8-encoding
- Percent-encode the version
- Append the percent-encoded version to the purl
- If the qualifiers are not empty and not composed only of key/value pairs where the value is empty:
- Append ? to the purl
- Discard any pair where the value is empty
- Encode each value in UTF-8-encoding
- If the key is checksum and there is more than one checksum, join the list with , to create the qualifier value
- Create each qualifier string by joining the lowercased key, the equal = sign, and the percent-encoded value
- Sort this list of qualifier strings lexicographically
- Join this list of sorted qualifier strings with &
- Append this string to the purl
- If the subpath is not empty and not composed only of empty, ., and .. segments:
- Append # to the purl
- Strip the subpath from leading and trailing /
- Split the subpath on / as a list of segments
- Discard empty, ., and .. segments
- Encode each segment in UTF-8-encoding
- Percent-encode each segment
- Join the segments with /
- Append this string to the purl
Parsing a purl ASCII string into its components works by splitting the string on different characters.
To parse a purl string in its components:
- Split the purl string once from right on #, if present; the left side is the remainder.
- If the right side is not empty, it contains subpath information:
- Strip it from leading and trailing /.
- Split this on / in a list of segments.
- Discard empty, ., and .. segments.
- Percent-decode each segment.
- UTF-8-decode each of these.
- Join segments with /.
- This is the subpath.
- Split the remainder once from right on ?, if present; the left side is the remainder.
- If the right side is not empty, it contains qualifiers information:
- Split it on & in a list of key=value pairs.
- Split each pair once from left on = in key and value parts.
- The key is the lowercase left side.
- Percent-decode the right side.
- UTF-8-decode this to get the value.
- Discard any key/value pairs where the value is empty.
- If the key is checksum, split the value on , to create a list of checksums.
- This list of keys/values is the qualifiers.
- Split the remainder once from left on :; the right side is the remainder.
- The left side lowercased is the scheme. It shall be exactly “pkg:”.
- Strip the remainder from leading and trailing /.
- Split this once from left on /; the right side is the remainder.
- The left side lowercased is the type.
- Split the remainder once from right on @, if present; the left side is the remainder.
- If the right side is not empty, it contains version information:
- Percent-decode the string.
- UTF-8-decode this.
- This is the version.
- Split the remainder once from right on /, if present; the left side is the remainder.
- The right side contains name information.
- Percent-decode the name string.
- UTF-8-decode this.
- Apply type-specific normalization, if needed.
- This is the name.
- If the remainder is not empty, it contains namespace information:
The following list includes some valid purl examples:
- pkg:bitbucket/birkenfeld/pygments-main@244fd47e07d1014f0aed9c
- pkg:deb/debian/curl@7.50.3-1?arch=i386&distro=jessie
- pkg:gem/ruby-advisory-db-check@0.12.4
- pkg:github/package-url/purl-spec@244fd47e07d1004f0aed9c
- pkg:golang/google.golang.org/genproto#googleapis/api/annotations
- pkg:maven/org.apache.xmlgraphics/batik-anim@1.9.1?packaging=sources
- pkg:npm/foobar@12.3.1
- pkg:nuget/EnterpriseLibrary.Common@6.0.1304
- pkg:pypi/django@1.11.1
- pkg:rpm/fedora/curl@7.50.3-1.fc25?arch=i386&distro=fedora-25
This document is based on the texts published in the https://github.com/package-url/purl-spec online repository. The original license and attribution are reproduced below:
Copyright (c) the purl authors
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
