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, or animations.

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.

Copyright and intellectual property declarations rely on established semantic schemas, primarily Dublin Core (dc:) and XMP Rights Management (xmpRights:):

  • Authorship: dc:creator lists individuals or entities responsible for the asset.
  • Copyright Notices: dc:rights holds explicit copyright statements (e.g., "Copyright 2024 Studio Name").
  • Licensing Flags: xmpRights:Marked accepts a boolean indicating whether the asset is under public domain (false) or intellectual property protections (true).
  • Terms of Use: xmpRights:UsageTerms and xmpRights:WebStatement point 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:

  1. Origin Tracking: Fields such as xmp:CreateDate, xmp:ModifyDate, and xmp:CreatorTool specify when the model was generated and which software or pipeline exported it.
  2. Derivation Chains: Using the XMP Media Management schema (xmpMM:), assets define their lineage. xmpMM:DocumentID tracks the overall project identity, xmpMM:InstanceID identifies the specific revision, and xmpMM:DerivedFrom references the unique identifier of an original source file prior to modification or optimization.
  3. 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.