AIBOM Format Field Map
CycloneDX and SPDX 3.0 can both describe an AI model, but they put the same fact in different places. The base model is pedigree.ancestors in CycloneDX and a descendantOf relationship in SPDX. This map lists 62 AIBOM concepts and the exact field for each in six formats and forms, with “—” where a format has nothing.
Who this is for: AppSec and AI-security engineers converting between AIBOM formats, and GRC teams mapping an AIBOM to Annex IV or the GPAI form. The full table is below. Pro adds the pair view, the gap check and the downloads.
What this tool is
- 62 AIBOM concepts in 12 sections, each mapped to the exact field or item in CycloneDX 1.6/1.7, SPDX 3.0.1 (AI and Dataset profiles), Croissant 1.1 with Croissant RAI, EU AI Act Annex IV, the GPAI Model Documentation Form and a Hugging Face model card.
- Each cell says Direct, Partial or "—". Partial means there is a place for the fact, but not with the same meaning or unit (for example, SPDX records dataset size in bytes; the GPAI form asks for a count of data points).
- Direct fields out of 62: CycloneDX 33, SPDX 32, Annex IV 33, GPAI form 27, Hugging Face card 20, Croissant 10 (datasets only).
- With Pro: pick the two formats you are converting between, filter by section, and run a gap check that lists what your target needs and your source lacks. Download the result as PDF, CSV, JPG or JSON.
- The worked values come from Northwind Health’s Triage Assistant v2.3, a fictional example used across the AIBOM Library.
The full crosswalk
Field names are as each source writes them. SPDX names use the JSON-LD serialization (ai_, dataset_ and software_ prefixes). Annex IV references are point numbers, so “2(d)” is point 2, letter (d). GPAI references are section › item in the Model Documentation Form. “Required” marks fields the spec itself makes mandatory.
The “Northwind” line under each concept is from a fictional example, Northwind Health’s Triage Assistant v2.3, a LoRA fine-tune of Mistral-7B-Instruct-v0.3. Metric values in it are made up for illustration.
Identity and versioning
| Concept | CycloneDX | SPDX 3.0 | Croissant | Annex IV | GPAI Form | HF card |
|---|---|---|---|---|---|---|
| Model name and identifierNorthwind: northwind/triage-assistant | component.name (+ group) on a component of type "machine-learning-model"required | name on ai_AIPackagerequired | — | 1(a) names the provider and the system version, not a model identifierpartial | General information › Model name | Repository id; card title "Model Card for {model_id}" |
| Model versionNorthwind: 2.3.0 | component.version | software_packageVersion (required on ai_AIPackage)required | — | 1(a) version of the system and its relation to previous versions | General information › Model name (list of publicly available versions covered) | No card field; the Hub revision (git commit) identifies a versionpartial |
| Package URL or persistent IDNorthwind: Base model: pkg:huggingface/mistralai/Mistral-7B-Instruct-v0.3@<commit> | component.purl, bom-ref (also omniborId, swhid) | spdxId (required) and software_packageUrlrequired | — | — | — | Repository id; purl type "huggingface" can be built from itpartial |
| Provider, supplier and authorsNorthwind: Northwind Health (fictional) | component.supplier, manufacturer, authors | suppliedBy (required on ai_AIPackage), originatedByrequired | — | 1(a) name of the provider | General information › Legal name for the model provider | Model Details › Developed by / Funded by / Shared by |
| Release dateNorthwind: Release date of v2.3.0 | component.releaseNotes.timestamp (no dedicated release-date field)partial | releaseTime (required on ai_AIPackage)required | — | — | General information › Release date; Union market release date | — |
| Who produced this document, when, with which specNorthwind: Generated in CI on each release | specVersion, serialNumber, version, metadata.timestamp, metadata.authors, metadata.tools | creationInfo: created, createdBy, createdUsing, specVersionrequired | dct:conformsTo (required), sdVersion (dataset metadata only)partial | — | Header: Date this document was last updated; Document version number | — |
Provenance and lineage
| Concept | CycloneDX | SPDX 3.0 | Croissant | Annex IV | GPAI Form | HF card |
|---|---|---|---|---|---|---|
| Base model (fine-tuned from)Northwind: mistralai/Mistral-7B-Instruct-v0.3 (Apache-2.0) | component.pedigree.ancestors[] | Relationship descendantOf / ancestorOf between the two ai_AIPackage elements | — | 2(a) recourse to pre-trained systems or tools from third parties and how they were used, integrated or modified | General information › Model dependencies | YAML base_model; Model Details › Finetuned from model |
| Type of modification (fine-tune, adapter, quantised, merge)Northwind: adapter (LoRA) | component.pedigree (ancestors, variants, descendants) + pedigree.notes; no typed fieldpartial | ai_informationAboutTraining (free text); hasVariant relationshippartial | — | 2(a) how pre-trained systems were used, integrated or modified (free text)partial | Model dependencies records that the model is a modification or fine-tune, not which kindpartial | YAML base_model_relation: adapter, merge, quantized or finetune |
| Training method and procedureNorthwind: LoRA fine-tune on support tickets | modelCard.modelParameters.approach.type; formulation[] for the processpartial | ai_informationAboutTraining | — | 2(a) methods and steps of development; 2(b) design specifications | Training process › Design specifications of the training process; Decision rationale | Training Details › Training Procedure; Training regime |
| HyperparametersNorthwind: LoRA rank, learning rate, epochs | No field; modelCard.properties[] (name/value) as a workaroundpartial | ai_hyperparameter (key/value list) | — | 2(b) relevance of the different parameterspartial | Design specifications of the training process mentions "the relevance of different parameters"partial | Training Details › Training Hyperparameters |
| Build or training provenance recordNorthwind: in-toto / SLSA provenance attestation from CI | formulation[] (workflows, tasks); externalReferences[] type "attestation" | build_Build (buildType, buildId, configSourceUri, parameter, environment) + hasInput / hasOutput | — | — | — | — |
Datasets
| Concept | CycloneDX | SPDX 3.0 | Croissant | Annex IV | GPAI Form | HF card |
|---|---|---|---|---|---|---|
| Training datasets usedNorthwind: northwind/support-tickets-2025 | modelCard.modelParameters.datasets[] (inline or ref to a "data" component) | Relationship trainedOn → dataset_DatasetPackage | The Croissant file describes the dataset itself; cr:TrainingSplit marks the training splitpartial | 2(d) training data sets used, with a general description | Information on the data used for training, testing, and validation | YAML datasets; Training Details › Training Data |
| Evaluation and test datasets usedNorthwind: northwind/triage-eval-v4 (1,200 labelled tickets) | Same modelCard.modelParameters.datasets[] list; no train/test flagpartial | Relationship testedOn → dataset_DatasetPackage | cr:TestSplit / cr:ValidationSplit inside a datasetpartial | 2(g) validation and testing data used and their main characteristics | Information on the data used for training, testing, and validation | Evaluation › Testing Data; model-index results[].dataset |
| Dataset name, version and locationNorthwind: support-tickets-2025, internal location | "data" component: name, version; data[].contents.url | name, software_packageVersion, software_downloadLocation (required)required | name, url (required); version (recommended); distribution[].contentUrlrequired | 2(d) general description of the data setspartial | Data provenance asks for categories of source, not named datasetspartial | YAML datasets takes Hub dataset ids; no versionpartial |
| Data source and collection processNorthwind: Northwind support system exports, de-identified | data[].governance (owners, custodians, stewards); no collection-process fieldpartial | dataset_dataCollectionProcess; originatedBy (required on dataset_DatasetPackage)required | rai:dataCollection, rai:dataCollectionType, rai:dataCollectionRawData; prov:wasDerivedFrom | 2(d) provenance, scope and main characteristics; how the data was obtained and selected | Data provenance; How data was obtained and selected | Training Data (free text)partial |
| Collection timeframeNorthwind: Jan–Dec 2025 | — | — | rai:dataCollectionTimeframe | — | — | — |
| Dataset sizeNorthwind: 48,210 tickets | — | dataset_datasetSize is measured in bytes, not recordspartial | contentSize per file (bytes by default); no dataset-level record countpartial | 2(d) scope and main characteristicspartial | Number of data points (with the unit, e.g. tokens or documents) | — |
| Preprocessing, cleaning and curationNorthwind: De-identification, deduplication | — | dataset_dataPreprocessing; ai_modelDataPreprocessing | rai:dataPreprocessingProtocol, rai:dataManipulationProtocol, rai:dataImputationProtocol | 2(d) data cleaning methodologies (e.g. outliers detection) | Data curation methodologies | Training Procedure › Preprocessing |
| Labelling and annotationNorthwind: 1,200 eval tickets labelled by support leads | — | — | rai:dataAnnotationProtocol, rai:dataAnnotationPlatform, rai:annotationsPerItem, rai:annotatorDemographics, rai:machineAnnotationTools | 2(d) labelling procedures (e.g. for supervised learning) | How data was obtained and selected (methods and resources used to annotate data) | — |
| Data type and modalityNorthwind: text | — | dataset_datasetType (e.g. text, image, audio, categorical; required)required | encodingFormat per file; field[].dataType | — | Data type/modality | — |
| Personal and sensitive dataNorthwind: No direct identifiers after de-identification | data[].sensitiveData[], data[].classification | dataset_hasSensitivePersonalInformation, dataset_anonymizationMethodUsed, dataset_confidentialityLevel; ai_useSensitivePersonalInformation | rai:personalSensitiveInformation | — | Measures to detect unsuitability of data sources (includes personal data leading to unlawful processing)partial | — |
Licensing and distribution
| Concept | CycloneDX | SPDX 3.0 | Croissant | Annex IV | GPAI Form | HF card |
|---|---|---|---|---|---|---|
| Model licenceNorthwind: Proprietary (base model Apache-2.0) | component.licenses[] (SPDX id, name or expression) | Relationship hasDeclaredLicense / hasConcludedLicense → license expression | — | — | Methods of distribution and licenses › License | YAML license (+ license_name, license_link); Model Details › License |
| Dataset licence and use conditionsNorthwind: Proprietary, internal use only | licenses[] on the "data" component | hasDeclaredLicense / hasConcludedLicense on dataset_DatasetPackage | license (required); usageInfo (DUO or ODRL terms)required | — | How data was obtained and selected (how rights to third-party data were obtained)partial | — |
| Distribution channels and accessNorthwind: Internal API only | externalReferences[] type "distribution"; services[].endpoints for an API | software_downloadLocation (required), software_homePage, availableFrom relationshiprequired | — | 1(d) all forms in which the system is placed on the market or put into service | Methods of distribution and licenses › Distribution channels (with level of access) | Model Sources › Repository / Demopartial |
Architecture and parameters
| Concept | CycloneDX | SPDX 3.0 | Croissant | Annex IV | GPAI Form | HF card |
|---|---|---|---|---|---|---|
| ArchitectureNorthwind: Decoder-only transformer (Mistral family) | modelCard.modelParameters.architectureFamily, modelArchitecture | — | — | 2(b) general logic of the system and the algorithms; 2(c) system architecturepartial | Model properties › Model architecture | Technical Specifications › Model Architecture and Objective |
| Learning approachNorthwind: supervised (fine-tune) | modelCard.modelParameters.approach.type | ai_typeOfModel | — | 2(b) design specifications and main classification choicespartial | Design specifications of the training process (training methodologies and techniques)partial | Model Details › Model type (free text)partial |
| TaskNorthwind: text-generation | modelCard.modelParameters.task | ai_domain (domain such as NLP, not a task)partial | — | 1(a) intended purposepartial | — | YAML pipeline_tag |
| Inputs and outputsNorthwind: Ticket text in, draft reply text out | modelCard.modelParameters.inputs[].format, outputs[].format | — | — | 2(b) expected output and output quality; 3 specifications on input data | Model properties › Input modalities; Output modalities (with maximum size) | Model Details › Language(s); YAML pipeline_tagpartial |
| Parameter count (model size)Northwind: Base model count plus adapter parameters | No field; modelCard.properties[] as a workaroundpartial | — | — | — | Model properties › Total model size (number of parameters) | Speeds, Sizes, Times (optional, free text)partial |
Evaluation and metrics
| Concept | CycloneDX | SPDX 3.0 | Croissant | Annex IV | GPAI Form | HF card |
|---|---|---|---|---|---|---|
| Performance metrics and resultsNorthwind: answer-accuracy 0.87 on triage-eval-v4 (fictional) | modelCard.quantitativeAnalysis.performanceMetrics[] (type, value, confidenceInterval) | ai_metric (key/value); ai_metricDecisionThreshold | — | 2(g) metrics used to measure accuracy and robustness; 3 accuracy; 4 appropriateness of the metrics | — | YAML model-index results[].metrics; Evaluation › Results |
| Performance by group or sliceNorthwind: Accuracy per ticket category | performanceMetrics[].slice | ai_metric keys can encode a slice; no slice fieldpartial | — | 3 degrees of accuracy for specific persons or groups of persons | — | Evaluation › Factors |
| Robustness and red-team resultsNorthwind: toxicity rate 0.2% on internal red-team set (fictional) | performanceMetrics[] can carry the number; no robustness typepartial | ai_metric (its definition lists robustness)partial | — | 2(g) metrics used to measure robustness | — | Model Examination (optional)partial |
| Test logs and signed test reportsNorthwind: CI test report per release | declarations (attestations with evidence) or externalReferences[] (e.g. "evidence")partial | hasTest / hasEvidence relationships to the reportpartial | — | 2(g) test logs and all test reports dated and signed by the responsible persons | — | — |
Intended use and limitations
| Concept | CycloneDX | SPDX 3.0 | Croissant | Annex IV | GPAI Form | HF card |
|---|---|---|---|---|---|---|
| Intended useNorthwind: Draft replies for a human agent to approve | modelCard.considerations.useCases[] | ai_informationAboutApplication (how the model is used in the software)partial | rai:dataUseCases (the dataset's intended uses)partial | 1(a) intended purpose | Use › Intended uses | Uses › Direct Use; Downstream Use |
| Intended usersNorthwind: Northwind support agents | modelCard.considerations.users[] | — | — | 2(b) persons or groups of persons on whom the system is intended to be used | — | — |
| Out-of-scope and prohibited usesNorthwind: Medical advice; autonomous sending | No field; considerations.technicalLimitations[] as a workaroundpartial | ai_limitation (free text)partial | rai:dataLimitations (non-recommended uses of the dataset)partial | 3 foreseeable unintended outcomespartial | Use › Intended uses (restricted or prohibited uses); Acceptable Use Policy | Uses › Out-of-Scope Use |
| Systems it can be integrated intoNorthwind: Internal support console | dependencies[] graph shows what uses it; no description fieldpartial | ai_informationAboutApplicationpartial | — | 1(b) how the system interacts with hardware or software, including other AI systems | Use › Type and nature of AI systems it can be integrated into; Technical means for model integration | Uses › Downstream Use; How to Get Started with the Modelpartial |
| Known limitations and trade-offsNorthwind: Weaker on tickets outside 2025 product lines | modelCard.considerations.technicalLimitations[], performanceTradeoffs[] | ai_limitation | rai:dataLimitations (dataset)partial | 3 capabilities and limitations in performance | — | Bias, Risks, and Limitations |
| Human oversight and autonomyNorthwind: Every reply approved by an agent (not autonomous) | — | ai_autonomyType (yes / no / noAssertion), not the oversight measurespartial | — | 2(e) human oversight measures under Article 14; 3 human oversight measures | — | — |
| Explainability and output interpretationNorthwind: Cited help-centre passages shown with each draft | — | ai_modelExplainability | — | 2(e) technical measures to facilitate interpretation of outputs (Article 13(3)(d)) | — | Model Examination (optional)partial |
Risk and bias
| Concept | CycloneDX | SPDX 3.0 | Croissant | Annex IV | GPAI Form | HF card |
|---|---|---|---|---|---|---|
| Ethical risks and mitigationsNorthwind: Wrong triage delays a customer; mitigated by human approval | modelCard.considerations.ethicalConsiderations[] (name, mitigationStrategy) | — | rai:dataSocialImpact (dataset)partial | 3 foreseeable unintended outcomes and sources of risk to health, safety, fundamental rights and discrimination | — | Bias, Risks, and Limitations › Recommendations |
| Fairness: groups at risk, harms, mitigationsNorthwind: Non-native English writers; tested per language | modelCard.considerations.fairnessAssessments[] (groupAtRisk, benefits, harms, mitigationStrategy) | — | — | 2(g) potentially discriminatory impacts; 3 discrimination | — | Bias, Risks, and Limitations (free text)partial |
| Known dataset biasNorthwind: Over-represents billing tickets | — | dataset_knownBias | rai:dataBiases | — | Measures to detect identifiable biases | Bias, Risks, and Limitations (free text)partial |
| Safety risk level and risk managementNorthwind: Internal risk assessment on file | externalReferences[] type "risk-assessment" (a link, not a level)partial | ai_safetyRiskAssessment (serious / high / medium / low, EU general product-safety method, not the AI Act tiers)partial | — | 5 risk management system under Article 9 | — | — |
Security, serialization and signing
| Concept | CycloneDX | SPDX 3.0 | Croissant | Annex IV | GPAI Form | HF card |
|---|---|---|---|---|---|---|
| File hashesNorthwind: SHA-256 of each safetensors shard | component.hashes[] (alg, content) | verifiedUsing → Hash (algorithm, hashValue) | sha256 on each FileObject (dataset files) | — | General information › Model authenticity (e.g. a secure hash) | — |
| Signature and authenticityNorthwind: Sigstore model signature from CI | signature (JSF) signs the BOM data, not the weights; link a model signature via externalReferences[] type "digital-signature"partial | — | — | — | Model authenticity: evidence of provenance and authenticity, where availablepartial | — |
| Model file format (serialization)Northwind: safetensors | component.mime-type or a properties[] entry; no dedicated fieldpartial | contentType (media type) on a software_File elementpartial | — | — | — | — |
| Known vulnerabilities and VEXNorthwind: vLLM advisories tracked per release | vulnerabilities[] with affects[].ref (and analysis for VEX) | security_Vulnerability + hasAssociatedVulnerability; Vex*VulnAssessmentRelationship | — | 2(h) cybersecurity measures put in placepartial | — | — |
| Cybersecurity measures and security reportsNorthwind: Threat model and pentest report for the triage API | externalReferences[] types "threat-model", "pentest-report", "security-contact"partial | externalRef types securityThreatModel, securityPenTestReport, securityPolicypartial | — | 2(h) cybersecurity measures put in place | — | — |
Runtime components
| Concept | CycloneDX | SPDX 3.0 | Croissant | Annex IV | GPAI Form | HF card |
|---|---|---|---|---|---|---|
| Serving stack and software dependenciesNorthwind: vLLM 0.6.x | components[] (framework, library, application) + dependencies[] | software_Package elements + dependsOn relationships | — | 1(c) versions of relevant software or firmware | Use › Required software (a requirement, not the deployed stack)partial | Technical Specifications › Software; YAML library_namepartial |
| Hardware requirementsNorthwind: Single-GPU inference nodes | A "device" or "platform" component in the dependency graphpartial | — | — | 1(e) hardware on which the system is intended to run | Use › Required hardware | Technical Specifications › Compute Infrastructure › Hardware |
| External services, APIs and tool servers (MCP)Northwind: ticketing-mcp (read/write tickets) | services[] (endpoints, authenticated, trustZone, data flows) | ai_informationAboutApplication (mentions third-party APIs); no service elementpartial | — | 1(b) interaction with software, including other AI systems, not part of the system | — | — |
| Retrieval index (RAG) dataNorthwind: northwind-helpcentre-index, refreshed weekly | A "data" component plus services[].data; no RAG-specific fieldpartial | dataset_DatasetPackage + dataset_datasetUpdateMechanism; no RAG-specific relationshippartial | Describe the corpus as a dataset; isLiveDataset for a refreshed indexpartial | 2(c) how components build on or feed into each otherpartial | — | — |
Energy and compute
| Concept | CycloneDX | SPDX 3.0 | Croissant | Annex IV | GPAI Form | HF card |
|---|---|---|---|---|---|---|
| Training energyNorthwind: Fine-tuning energy in kWh | environmentalConsiderations.energyConsumptions[] (activity "training" / "fine-tuning", activityEnergyCost in kWh) | ai_energyConsumption → ai_trainingEnergyConsumption / ai_finetuningEnergyConsumption | — | — | Energy consumption › Amount of energy used for training (MWh) + measurement methodology | Environmental Impact (hours, hardware, carbon), not energypartial |
| Inference energy and computeNorthwind: Energy per 1,000 drafts | energyConsumptions[] with activity "inference" | ai_inferenceEnergyConsumption | — | — | Benchmarked amount of computation used for inference (FLOPs, not energy)partial | — |
| Training compute and timeNorthwind: GPU-hours for the LoRA run | — | — | — | 2(c) computational resources used to develop, train, test and validate | Computational resources › Training time; Amount of computation used for training | Environmental Impact › Hardware Type, Hours used; Speeds, Sizes, Timespartial |
| Carbon emissionsNorthwind: tCO2eq for fine-tuning | energyConsumptions[].co2CostEquivalent, co2CostOffset (tCO2eq) | — | — | — | — | YAML co2_eq_emissions; Environmental Impact › Carbon Emitted |
Lifecycle
| Concept | CycloneDX | SPDX 3.0 | Croissant | Annex IV | GPAI Form | HF card |
|---|---|---|---|---|---|---|
| Change history between versionsNorthwind: v2.3.0: retrained on 2025 tickets | component.releaseNotes (type, title, timestamp, resolves, notes) | externalRef types releaseNotes, releaseHistory (links)partial | version (semantic versioning rules), dateModifiedpartial | 6 relevant changes made through the lifecycle; 1(a) relation to previous versions | Header: document version and last-updated datepartial | — |
| Pre-determined changes and update mechanismNorthwind: Weekly RAG index refresh | — | dataset_datasetUpdateMechanism (datasets only)partial | isLiveDataset; rai:dataReleaseMaintenancePlan (datasets only)partial | 2(f) pre-determined changes to the system and its performance; 1(c) requirements for version updates | — | — |
| Support status and end of lifeNorthwind: Supported until v2.4 ships | metadata.lifecycles[] phase "decommission"; no support fieldpartial | supportLevel (e.g. support, limitedSupport, endOfSupport), validUntilTime; externalRef eolNotice | — | — | — | — |
| Post-market monitoringNorthwind: Weekly sample review of approved drafts | — | — | — | 9 post-market monitoring system and plan under Article 72 | — | — |
| Standards applied and conformityNorthwind: ISO/IEC 42001 (management system) | definitions.standards + declarations (claims, attestations, affirmation) | ai_standardCompliance | — | 7 harmonised standards applied; 8 copy of the EU declaration of conformity | — | — |
What the map shows
- CycloneDX and SPDX are close. Direct fields: CycloneDX 33 of 62, SPDX 32 of 62. Neither is a superset. Converting CycloneDX to SPDX leaves 7 SPDX fields with no source value; the reverse leaves 9.
- Annex IV asks for things no BOM field holds. Only Annex IV has a direct place for: robustness and red-team results; test logs and signed test reports; human oversight and autonomy; safety risk level and risk management; cybersecurity measures and security reports; pre-determined changes and update mechanism; post-market monitoring.
- Some concepts are regulation-only. No machine-readable format here (CycloneDX, SPDX or Croissant) has any field for: training compute and time; post-market monitoring.
- Each format has a fact the others lack. Croissant RAI alone records the collection timeframe. A Hugging Face card alone types the modification (
base_model_relation: adapter, merge, quantized, finetune). The GPAI form alone asks for parameter count and a dataset size in data points. SPDX alone records support status. - Signing is thin everywhere. CycloneDX’s
signaturesigns the BOM data, not the weights file. SPDX 3.0.1 has hashes (verifiedUsing) but no signature property. Link the model signature (for example a Sigstore bundle) from the BOM instead.
How to use it in a conversion
- Pick your current format and your target. Read the Missing rows first: those values must come from another source (a model card, a dataset card, the training pipeline or a person).
- Read the Partial rows next. The fact exists, but in a different unit or as free text, so it usually needs rewriting rather than copying.
- Validate the result. For CycloneDX, run the AIBOM Validator; to build one from model metadata, use the CycloneDX ML-BOM Converter.
- For EU work, confirm which obligations apply first with the EU AI Act Role & Risk Classifier. Annex IV covers high-risk systems; the GPAI form covers general-purpose model providers.
New to AIBOMs? Start with what an AIBOM is, then the AIBOM parameters checklist and SBOM vs AIBOM vs MLBOM. Everything else is on the AIBOM Library hub.
Sources
Every mapping was checked against these on 29 October 2026. CycloneDX 1.7 is the current CycloneDX release; its ML fields are unchanged from 1.6. SPDX 3.0.1 is the current SPDX release.
- CycloneDX 1.7 JSON schema (modelCard, componentData, services, vulnerabilities)
- CycloneDX ML-BOM capability page
- SPDX 3.0.1 AI profile: AIPackage
- SPDX 3.0.1 Dataset profile: DatasetPackage
- SPDX 3.0.1 RelationshipType (trainedOn, testedOn, ancestorOf …)
- Croissant Format Specification 1.1 (MLCommons)
- Croissant RAI Specification 1.0
- EU AI Act Annex IV, AI Act Service Desk (European Commission)
- Regulation (EU) 2024/1689 on EUR-Lex
- General-Purpose AI Code of Practice: Transparency chapter and Model Documentation Form
- Hugging Face model card template
- Hugging Face model card metadata spec
Frequently asked questions
How do I map CycloneDX to SPDX 3.0 for an AI model?
Most model facts have a home in both, under different names. A model is a component of type machine-learning-model in CycloneDX and an ai_AIPackage in SPDX. The base model is pedigree.ancestors in CycloneDX and a descendantOf relationship in SPDX. Training data is modelCard.modelParameters.datasets in CycloneDX and a trainedOn relationship in SPDX. In this map, SPDX has a field for 49 of the 62 concepts; CycloneDX covers 27 of those directly, 15 partially and has no field for 7. Going the other way, CycloneDX has a field for 51; SPDX covers 28 directly, 14 partially and lacks 9.
CycloneDX vs SPDX for AI: which has more AIBOM fields?
They are close. Of the 62 concepts here, CycloneDX has a direct field for 33 and SPDX 3.0.1 for 32. CycloneDX is stronger on runtime services, fairness assessments and carbon cost; SPDX is stronger on dataset facts (collection process, bias, preprocessing, data type), hyperparameters, explainability and support status. Pick by what your consumers read, then fill the gaps from the other format’s list.
Does an AIBOM satisfy EU AI Act Annex IV?
No. Annex IV is technical documentation for a high-risk AI system, and much of it is narrative. A CycloneDX AIBOM covers 23 of the 44 Annex IV concepts in this map directly and 13 partially. Items such as robustness and red-team results; test logs and signed test reports; human oversight and autonomy; safety risk level and risk management have a direct place only in Annex IV. Use the AIBOM as the inventory and evidence behind the Annex IV document, not as the document.
What is the GPAI Model Documentation Form?
It is the form in the Transparency chapter of the General-Purpose AI Code of Practice, published by the European Commission on 10 July 2025. Providers of general-purpose AI models use it to document the model for the AI Office, national competent authorities and downstream providers: general information, model properties, distribution and licences, use, training process, training data, compute and energy. Each item is marked for which of the three audiences it is intended.
Can Croissant describe a model, or only a dataset?
Only a dataset. Croissant is MLCommons’ dataset metadata format, and the Croissant RAI vocabulary adds responsible-AI facts such as collection process, annotation, biases and personal information. Use it for the data section and reference the dataset from the CycloneDX or SPDX file that describes the model.
Is a Hugging Face model card an AIBOM?
Not on its own. A model card is mostly free text with a YAML header. In this map it has a direct field for 20 of 62 concepts and a partial one for 16. Mapping a card to the GPAI form, the card covers 14 of 37 items directly and has nothing for 11. It is a good source for intended use, limitations and evaluation; it has no place for hashes, signatures, vulnerabilities or runtime services.
More free security tools
The tools people use most on PlayCISO.
Catch injected instructions hiding in content your AI agent should only read.
Score your readiness against the first international standard for AI security threats.
Critical CVEs across 21 major vendors, month by month — and what the 2026 surge means.
Build an ordered ruleset, replay labelled packets and catch shadowed and any-to-any rules.
Self-assess all six Functions, from Govern to Recover, and see your weakest one.
Search 172 threat actors across Microsoft, CrowdStrike, Mandiant and community names.