KHR_xmp_json_ld: Embedding Provenance and Copyright in glTF
The KHR_xmp_json_ld extension standardizes how 3D assets
carry identification, licensing, and digital history by embedding
Adobe’s Extensible Metadata Platform (XMP) data directly into glTF 2.0
files using JSON-LD (JavaScript Object Notation for Linked Data). By
translating traditional XML-based XMP schemas into semantic JSON, this
extension allows creators and automated pipelines to append immutable
copyright details, usage rights, authorship records, and
cryptographically verifiable provenance information across the entire
model or on individual components.
Structural Architecture in glTF
The extension introduces a centralized dictionary at the glTF root level:
{
"extensionsUsed": ["KHR_xmp_json_ld"],
"extensions": {
"KHR_xmp_json_ld": {
"packets": [
{
"@context": {
"dc": "http://purl.org/dc/elements/1.1/",
"xmpRights": "http://ns.adobe.com/xap/1.0/rights/"
},
"dc:creator": ["Jane Doe"],
"xmpRights:Marked": true,
"xmpRights:UsageTerms": "CC-BY-4.0"
}
]
}
}
}The packets array stores distinct metadata payloads.
Each packet is a self-contained JSON-LD block defining namespaces
(@context) that map standard semantic vocabularies to
explicit Uniform Resource Identifiers (URIs).
Granular Metadata Assignment
Rather than restricting metadata to the file as a single unit,
KHR_xmp_json_ld enables hierarchical, component-level
assignment. Specific parts of a glTF asset reference an entry in the
root packets array by its zero-based index:
- Asset Level: Stored in
asset.extensions.KHR_xmp_json_ld.packet, applying global terms to the entire scene. - Component Level: Attached to
scenes,nodes,meshes,materials,images, oranimations.
This granularity is critical for composite 3D models. For example, if a model contains third-party photogrammetry scans alongside custom procedural textures, the base mesh and specific image maps can point to different packets that specify distinct creators, source URLs, and licensing agreements.
Embedding Copyright and Legal Rights
Copyright and intellectual property declarations rely on established
semantic schemas, primarily Dublin Core (dc:) and XMP
Rights Management (xmpRights:):
- Authorship:
dc:creatorlists individuals or entities responsible for the asset. - Copyright Notices:
dc:rightsholds explicit copyright statements (e.g.,"Copyright 2024 Studio Name"). - Licensing Flags:
xmpRights:Markedaccepts a boolean indicating whether the asset is under public domain (false) or intellectual property protections (true). - Terms of Use:
xmpRights:UsageTermsandxmpRights:WebStatementpoint to human-readable terms or machine-readable URLs containing full license texts.
Provenance Tracking and Digital History
Provenance metadata captures how an asset was created, modified, and handled throughout its lifecycle:
- Origin Tracking: Fields such as
xmp:CreateDate,xmp:ModifyDate, andxmp:CreatorToolspecify when the model was generated and which software or pipeline exported it. - Derivation Chains: Using the XMP Media Management
schema (
xmpMM:), assets define their lineage.xmpMM:DocumentIDtracks the overall project identity,xmpMM:InstanceIDidentifies the specific revision, andxmpMM:DerivedFromreferences the unique identifier of an original source file prior to modification or optimization. - C2PA Integration: The Coalition for Content Provenance and Authenticity (C2PA) utilizes this extension to associate tamper-evident manifests with 3D assets. Hashes and cryptographic signatures can tie the JSON-LD packets to specific mesh geometries and textures, making unauthorized alterations or attribution stripping detectable.
Interoperability and Processing Efficiency
Traditional XMP implementations require parsing raw XML packets
embedded within binary or text streams. By defining the format strictly
as JSON-LD, KHR_xmp_json_ld allows native JavaScript
engines, WebGL runtimes, and digital asset management (DAM) platforms to
parse, validate, and index copyright and provenance information using
default JSON parsers without additional decoding overhead.