{ "X3D": {
    "encoding":"UTF-8",
    "@profile":"Immersive",
    "@version":"4.0",
    "@xsd:noNamespaceSchemaLocation":"https://www.web3d.org/specifications/x3d-4.0.xsd",
    "JSON schema":"https://www.web3d.org/specifications/x3d-4.0-JSONSchema.autogenerated.json",
    "head": {
        "-children":[
          {
            "#comment":"of note is that name values for these document meta terms are defined by Dublin Core"
          },
          {
            "#comment":"Wikipedia example RDF XML plus Protege conversion to Turtle .ttl"
          }
        ],
        "meta": [
          {
            "@name":"title",
            "@content":"XmpMetadataEmbedded.x3d"
          },
          {
            "@name":"description",
            "@content":"Simple XMP sidecar example: Hello XMP metadata!"
          },
          {
            "@name":"created",
            "@content":"29 April 2021"
          },
          {
            "@name":"modified",
            "@content":"15 July 2025"
          },
          {
            "@name":"creator",
            "@content":"Don Brutzman, Vince Marchetti, Jakub Flotynski, Dick Puk"
          },
          {
            "@name":"warning",
            "@content":"Source model assumes default containerField=value for X3D4 Metadata nodes, specification resolution needed"
          },
          {
            "@name":"reference",
            "@content":"Summary presentation XmpMetadataSupportX3D.pptx"
          },
          {
            "@name":"reference",
            "@content":"XmpMetadataSidecar.xml"
          },
          {
            "@name":"reference",
            "@content":"XmpMetadataSidecar.rdf"
          },
          {
            "@name":"reference",
            "@content":"XmpMetadataSidecar.ttl"
          },
          {
            "@name":"generator",
            "@content":"Protege https://protege.stanford.edu"
          },
          {
            "@name":"Image",
            "@content":"XmpMetadataEmbeddedX3dComparison.png"
          },
          {
            "@name":"reference",
            "@content":"https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/core.html#MetadataSet"
          },
          {
            "@name":"reference",
            "@content":"XmpMetadataExampleWikipedia.xml"
          },
          {
            "@name":"reference",
            "@content":"XmpMetadataExampleWikipedia.ttl"
          },
          {
            "@name":"reference",
            "@content":"https://wwwimages2.adobe.com/content/dam/acom/en/devnet/xmp/pdfs/XMP%20SDK%20Release%20cc-2016-08/XMPSpecificationPart1.pdf"
          },
          {
            "@name":"TODO",
            "@content":"Once pattern OK, write conversion stylesheets XmpToX3dMetadata.xslt and X3dMetadataToXmp.xslt"
          },
          {
            "@name":"info",
            "@content":"X3D support for xml:lang attribute not provided in X3D XML Schema, instead use MetadataString as best practice."
          },
          {
            "@name":"reference",
            "@content":"Wikipedia XMP https://en.wikipedia.org/wiki/Extensible_Metadata_Platform"
          },
          {
            "@name":"reference",
            "@content":"Wikipedia Metadata https://en.wikipedia.org/wiki/Metadata"
          },
          {
            "@name":"reference",
            "@content":"https://en.wikipedia.org/wiki/Sidecar"
          },
          {
            "@name":"reference",
            "@content":"https://experienceleague.adobe.com/docs/experience-manager-64/assets/administer/xmp.html"
          },
          {
            "@name":"reference",
            "@content":"https://en.wikipedia.org/wiki/Ontology_for_Media_Resources"
          },
          {
            "@name":"reference",
            "@content":"https://en.wikipedia.org/wiki/Multimedia_Web_Ontology_Language"
          },
          {
            "@name":"reference",
            "@content":"W3C Ontology for Media Resources 1.0 https://www.w3.org/TR/mediaont-10"
          },
          {
            "@name":"reference",
            "@content":"ISO XMP ISO 16684-1:2019Part 1: Data model, serialization and core properties https://www.iso.org/standard/75163.html"
          },
          {
            "@name":"reference",
            "@content":"ISO XMP 16684-2:2014 Part 2: Description of XMP schemas using RELAX NG https://www.iso.org/standard/57422.html"
          },
          {
            "@name":"reference",
            "@content":"Adobe XMP https://www.adobe.com/devnet/xmp.html"
          },
          {
            "@name":"reference",
            "@content":"Adobe XMP https://www.adobe.com/products/xmp.html"
          },
          {
            "@name":"reference",
            "@content":"ExifTool XMP Tags https://exiftool.org/TagNames/XMP.html"
          },
          {
            "@name":"identifier",
            "@content":"https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/Chapter15Metadata/XmpMetadataEmbedded.x3d"
          },
          {
            "@name":"license",
            "@content":"https://www.web3d.org/x3d/content/examples/license.html"
          },
          {
            "@name":"generator",
            "@content":"X3D-Edit 4.0, https://www.web3d.org/x3d/tools/X3D-Edit"
          },
          {
            "@name":"translated",
            "@content":"17 April 2026"
          },
          {
            "@name":"generator",
            "@content":"X3dToJson.xslt, https://www.web3d.org/x3d/stylesheets/X3dToJson.html"
          },
          {
            "@name":"reference",
            "@content":"X3D JSON encoding: https://www.web3d.org/wiki/index.php/X3D_JSON_Encoding"
          }
        ]
    },
    "Scene": {
        "-children":[
          {
            "#comment":"Design considerations:"
          },
          {
            "#comment":"a. avoid containerField='metadata' and containerField='value' wherever possible, note X3D4 XML schema revision is needed"
          },
          {
            "#comment":"b. literal XMP values wherever possible, lossless"
          },
          {
            "#comment":"c. avoid nested quotes/apostrophes by using MetadataString name/value pairs"
          },
          {
            "#comment":"d. map XMP parent elements to MetadataSet, otherwise have typed Metadata* values wherever possible"
          },
          {
            "#comment":"e. push shared properties as high as possible in MetadataSet hierarchy, since they apply to all children"
          },
          {
            "#comment":"f. assumptions: unquoted MFString values equal a single SFString array element, default Metadata* node containerField='value'"
          },
          {
            "#comment":"g. MetadataSet nodes contain other Metadata* nodes as the /value/ field, thus producing tree-like structured metadata information"
          },
          { "WorldInfo":
            {
              "@title":"XmpMetadataEmbedded.x3d"
            }
          },
          { "Background":
            {
              "@skyColor":[0,0.439216,0.760784]
            }
          },
          {
            "#comment":"Sample (partial) XMP sidecar file XmpMetadataSidecar.xml generated manually by Vince Marchetti as part of the STEP Geometry Services Pilot Project"
          },
          { "MetadataSet":
            {
              "@name":"rdf:RDF",
              "@reference":"TODO refer to XMP ISO specification document",
              "-value":[
                { "MetadataSet":
                  {
                    "@name":"namespaces",
                    "-value":[
                      { "MetadataString":
                        {
                          "@name":"xmlns:rdf",
                          "@value":["http://www.w3.org/1999/02/22-rdf-syntax-ns#"]
                        }
                      },
                      { "MetadataString":
                        {
                          "@name":"xmlns:dc",
                          "@value":["http://purl.org/dc/elements/1.1/"]
                        }
                      },
                      { "MetadataString":
                        {
                          "@name":"xmlns:xmp",
                          "@value":["http://ns.adobe.com/xap/1.0/"]
                        }
                      }
                    ]
                  }
                },
                { "MetadataSet":
                  {
                    "@name":"rdf:Description",
                    "-value":[
                      { "MetadataString":
                        {
                          "@name":"rdf:about",
                          "@value":["https://kshell.com/sgs/example_uri_0001/"]
                        }
                      },
                      { "MetadataSet":
                        {
                          "@name":"dc:description",
                          "-value":[
                            { "MetadataSet":
                              {
                                "@name":"rdf:Alt",
                                "-value":[
                                  { "MetadataString":
                                    {
                                      "@name":"rdf:li",
                                      "@value":["VRML visualization"],
                                      "-children":[
                                        {
                                          "#comment":"discouraging direct use of xml:lang='en' as an attribute, since that is legal XML but invalid X3D"
                                        }
                                      ],
                                      "-metadata":
                                        { "MetadataString":
                                          {
                                            "@name":"xml:lang",
                                            "@reference":"prefer using MetadataString to indicate xml:lang values",
                                            "@value":["en"]
                                          }
                                        }
                                    }
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      },
                      { "MetadataString":
                        {
                          "@name":"dc:format",
                          "@value":["model/x3d-vrml"]
                        }
                      },
                      { "MetadataString":
                        {
                          "@name":"dc:rights",
                          "@reference":"https://www.dublincore.org/specifications/dublin-core/dcmi-terms/terms/rights/",
                          "@value":["open source"]
                        }
                      },
                      { "MetadataSet":
                        {
                          "@name":"dc:title",
                          "-value":[
                            { "MetadataSet":
                              {
                                "@name":"rdf:Alt",
                                "-value":[
                                  { "MetadataString":
                                    {
                                      "@name":"rdf:li",
                                      "@reference":"xml:lang='en'",
                                      "@value":["l-bracket_20120725.134815"],
                                      "-metadata":
                                        { "MetadataString":
                                          {
                                            "@name":"xml:lang",
                                            "@value":["en"]
                                          }
                                        }
                                    }
                                  },
                                  { "MetadataString":
                                    {
                                      "@name":"rdf:li",
                                      "@reference":"xml:lang='gr'",
                                      "@value":["aristsirra-bracket_20120725.134815"],
                                      "-metadata":
                                        { "MetadataString":
                                          {
                                            "@name":"xml:lang",
                                            "@reference":"prefer using MetadataString to indicate xml:lang values",
                                            "@value":["en"]
                                          }
                                        }
                                    }
                                  }
                                ]
                              }
                            },
                            { "MetadataSet":
                              {
                                "@name":"dc:creator",
                                "-value":[
                                  { "MetadataSet":
                                    {
                                      "@name":"rdf:Seq",
                                      "-value":[
                                        { "MetadataString":
                                          {
                                            "@name":"rdf:li",
                                            "@value":["vmarchetti@kshell.com"]
                                          }
                                        }
                                      ]
                                    }
                                  }
                                ]
                              }
                            },
                            { "MetadataString":
                              {
                                "@name":"xmp:CreateDate",
                                "@value":["10 February 2021"]
                              }
                            }
                          ]
                        }
                      }
                    ]
                  }
                }
              ]
            }
          },
          { "Viewpoint":
            {
              "@description":"View scene source to see metadata examples",
              "@position":[0,0,9]
            }
          },
          { "Anchor":
            {
              "@description":"Load scene index page",
              "@parameter":["target=_blank"],
              "@url":["XmpMetadataEmbeddedIndex.html","https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/Chapter15Metadata/XmpMetadataEmbeddedIndex.html"],
              "-children":[
                { "Shape":
                  {
                    "-geometry":
                      { "Text":
                        {
                          "@string":["View scene source","to see","XmpMetadataEmbedded","example"],
                          "-fontStyle":
                            { "FontStyle":
                              {
                                "@justify":["MIDDLE","MIDDLE"]
                              }
                            }
                        }
                      },
                    "-appearance":
                      { "Appearance":
                        {
                          "-material":
                            { "Material":
                              {
                                "@diffuseColor":[1,0.992157,0.039216]
                              }
                            }
                        }
                      }
                  }
                }
              ]
            }
          }
        ]
    }
  }
}