<div dir="ltr"><div dir="ltr"><div dir="ltr"><div>Once again: "Later this spring we will be looking carefully at several potential JSON schema designs for X3D." This is not an activity that I can support at the present time.</div><div><div dir="ltr" class="gmail_signature"><div dir="ltr"><div style="color:rgb(34,34,34)"><font face="monospace"><br></font></div><div style="color:rgb(34,34,34)"><font face="monospace">all the best, Don</font></div><div style="color:rgb(34,34,34)"><font face="monospace">-- </font></div><div style="color:rgb(34,34,34)"><font face="monospace">X3D Graphics, Maritime Robotics, Distributed Simulation</font></div><div style="color:rgb(34,34,34)"><font face="monospace">Relative Motion Consulting <a href="https://RelativeMotion.info" target="_blank">https://RelativeMotion.info</a></font></div></div></div></div><br></div></div></div><br><div class="gmail_quote gmail_quote_container"><div dir="ltr" class="gmail_attr">On Thu, Feb 19, 2026 at 10:18 AM John Carlson <<a href="mailto:yottzumm@gmail.com">yottzumm@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">Great, Don,<div><br></div><div>Here's a set of subschema's I've arrived at for @geoSchema, note that this is very different from Roy's version, and has been updated for latest JSON schema standards. If this can be auto-generated from X3DUOM, great! Maybe an array of patterns? Note that I need to look at online test cases. I'll be looking at converting the archive with X3dToJson.xslt or Holger's x3d-tidy, unless you;'ve got a set of JSON files handy? Thanks!</div><div><br></div><div>For example, this command seems to present some errors I have no clue about. I am pursuing validating my schema (in strict mode) for more details.</div><div><br></div><div>$ jsonlint --validate schemas/x3d-4.1-JSONSchema.json --environment draft-2020-12 examples/abox.json 1>/dev/null<br>strict mode: "prefixItems" is 1-tuple, but minItems or maxItems/items are not specified or different at path "#"<br>strict mode: "prefixItems" is 2-tuple, but minItems or maxItems/items are not specified or different at path "#"</div><div><br></div><div>I'm hoping someone in the geospatial group can review this.</div><div><br></div><div> "@geoSystem": {<br> "$comment": "Coordinate reference system identifier tokens. Exactly one of three systems: GD/GDC (geographic degrees), UTM (universal transverse mercator), or GC/GCC (geocentric).",<br> "oneOf": [<br> {<br> "$ref": "#/$defs/@geoSystem-GD"<br> },<br> {<br> "$ref": "#/$defs/@geoSystem-UTM"<br> },<br> {<br> "$ref": "#/$defs/@geoSystem-GC"<br> }<br> ]<br> },<br> "@geoSystem-GD": {<br> "title": "geoSystem GD/GDC Geographic Degrees",<br> "$comment": "Geographic lat/lon degrees. Optional second token selects ellipsoid datum; defaults to WE (WGS84 ellipsoid).",<br> "type": "array",<br> "minItems": 1,<br> "maxItems": 2,<br> "prefixItems": [<br> {<br> "type": "string",<br> "enum": [<br> "GD",<br> "GDC"<br> ],<br> "default": "GD"<br> }<br> ],<br> "items": {<br> "$ref": "#/$defs/@geoSystem-ellipsoid"<br> }<br> },<br> "@geoSystem-UTM": {<br> "type": "array",<br> "minItems": 2,<br> "maxItems": 5,<br> "prefixItems": [<br> {<br> "type": "string",<br> "const": "UTM"<br> },<br> {<br> "$ref": "#/$defs/@geoSystem-UTM-zone"<br> }<br> ],<br> "items": {<br> "type": "string",<br> "enum": [<br> "N",<br> "S",<br> "WGS84",<br> "AM",<br> "AN",<br> "BN",<br> "BR",<br> "CC",<br> "CD",<br> "EA",<br> "EB",<br> "EC",<br> "ED",<br> "EE",<br> "EF",<br> "FA",<br> "HE",<br> "HO",<br> "ID",<br> "IN",<br> "KA",<br> "RF",<br> "SA",<br> "WD",<br> "WE"<br> ]<br> },<br> "if": {<br> "contains": {<br> "const": "N"<br> }<br> },<br> "then": {<br> "not": {<br> "contains": {<br> "const": "S"<br> }<br> }<br> }<br> },<br> "@geoSystem-GC": {<br> "title": "geoSystem GC/GCC Geocentric",<br> "$comment": "Earth-centered geocentric coordinate system. No additional parameters.",<br> "type": "array",<br> "minItems": 1,<br> "maxItems": 1,<br> "prefixItems": [<br> {<br> "type": "string",<br> "enum": [<br> "GC",<br> "GCC"<br> ]<br> }<br> ],<br> "items": false<br> },<br> "@geoSystem-ellipsoid": {<br> "title": "geoSystem ellipsoid datum",<br> "$comment": "Reference ellipsoid. WGS84 is the datum name; the 22 two-letter codes are ellipsoid identifiers. Defaults to WE.",<br> "type": "string",<br> "default": "WE",<br> "enum": [<br> "WGS84",<br> "AM",<br> "AN",<br> "BN",<br> "BR",<br> "CC",<br> "CD",<br> "EA",<br> "EB",<br> "EC",<br> "ED",<br> "EE",<br> "EF",<br> "FA",<br> "HE",<br> "HO",<br> "ID",<br> "IN",<br> "KA",<br> "RF",<br> "SA",<br> "WD",<br> "WE"<br> ]<br> },<br> "@geoSystem-UTM-zone": {<br> "title": "UTM zone number",<br> "$comment": "Zone 1 60 prefixed with Z. Leading zero is optional: Z1 and Z01 are both valid.",<br> "type": "string",<br> "pattern": "^Z(0?[1-9]|[1-5][0-9]|60)$"<br> },<br><a class="gmail_plusreply"><br></a></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Feb 19, 2026 at 11:31 AM Don Brutzman <<a href="mailto:don.brutzman@gmail.com" target="_blank">don.brutzman@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>John, to be clear, please note that you are referring to your JSON Schema. Any trial improvements you make will be welcome. Thanks for steady efforts.</div><div><br></div><div>As reported many times before, we do not have an official X3D JSON schema. Later this spring we will be looking carefully at several potential JSON schema designs for X3D. While reaching consensus regarding best patterns, am expecting the group will evaluate implementations based on autogeneration of an exactly correct version using X3DUOM. Summary online at</div><div><ul><li>X3D to JSON Stylesheet Converter<br>The X3D to JSON stylesheet converts .x3d XML to .json, supporting the forthcoming JSON Encoding for X3D Graphics.<br>This page fully describes current X3D JSON design patterns and syntax, providing examples and references.</li><li><a href="https://www.web3d.org/x3d/stylesheets/X3dToJson.html" target="_blank">https://www.web3d.org/x3d/stylesheets/X3dToJson.html</a></li></ul></div><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div><div><h2 style="color:rgb(0,0,0);font-family:"Times New Roman""><font size="2"><a name="m_4353838820266175944_m_9144056011514788420_m_2253472551322732480_PlannedProgress">Planned Progress</a></font></h2></div></div><div><div><p style="color:rgb(0,0,0);font-family:"Times New Roman"">Current status: X3D JSON developmental work is mature and provides full coverage of X3D model capabilities in JSON, as demonstrated by <a href="https://www.web3d.org/x3d/content/examples/X3dResources.html#Examples" target="_blank">thousands of example models</a>. Design patterns have been available and assessed by X3D community for several years. One possible addition to be considered will be use of an <code>.x3dj</code> file extension as an alternative to the classic <code>.json</code> file extension.</p></div></div><div><div><p style="color:rgb(0,0,0);font-family:"Times New Roman"">The only significant gap in current assets is availability of a JSON Schema for X3D, autogenerated from the <a href="https://www.web3d.org/specifications/X3DUOM.html" target="_blank">X3D Unified Object Model (X3DUOM)</a>. Web3D Consortium standardization efforts have been quite careful about taking this step. Although <a href="https://json-schema.org/" target="_blank">JSON Schema design</a> has not been formally ratified or standardized, it appears to be sufficiently well defined and implemented to justify creating an X3D JSON Schema as an informative annex in the upcoming draft specification for the X3D JSON Encoding. We expect such work to occur in Spring 2026.</p></div></div></blockquote><div><div>We have much capability in X3D JSON already. Adding a shared and standardized X3D JSON Schema will be an excellent next step.</div><div><br></div><div>Onward we go. Have fun with X3D JSON! 😃</div></div><div><div dir="ltr" class="gmail_signature"><div dir="ltr"><div style="color:rgb(34,34,34)"><font face="monospace"><br></font></div><div style="color:rgb(34,34,34)"><font face="monospace">all the best, Don</font></div><div style="color:rgb(34,34,34)"><font face="monospace">-- </font></div><div style="color:rgb(34,34,34)"><font face="monospace">X3D Graphics, Maritime Robotics, Distributed Simulation</font></div><div style="color:rgb(34,34,34)"><font face="monospace">Relative Motion Consulting <a href="https://RelativeMotion.info" target="_blank">https://RelativeMotion.info</a></font></div></div></div></div><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Feb 19, 2026 at 2:33 AM John Carlson via x3d-public <<a href="mailto:x3d-public@web3d.org" target="_blank">x3d-public@web3d.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">I'm looking for someone to work on JSON schemas, particularly, improving X3D JSON schema.<div><br></div><div>While the X3D JSON schema works in non-strict mode (for JSON schema draft2020-12), it doesn't work in strict mode. While I have been successful at removing some of these stumbling blocks, I need help with some, particular understanding how properties like prefixItems, items, minItems and maxItems work with arrays, and with oneOf.</div><div><br></div><div>Knowledge of JavaScript is helpful, and I'd like to work on the @geoSystem field to work in strict mode, yet still offer the same validation capabilities (or better). Knowledge of coordinate systems like UTM, GD, WGS84 might be helpful. But it's more important to know about enumerations and arrays of strings.</div><div><br></div><div>Here's my development environment:</div><div><br></div><div><a href="https://github.com/coderextreme/x3dvalidate" target="_blank">https://github.com/coderextreme/x3dvalidate</a></div><div><br></div><div>Once you have the project checked out, you can test with:</div><div><br></div><div>C:\> node.exe index.js examples\abox.json</div><div><br></div><div>(or node, or nodejs)</div><div><br></div><div>The schemas are in the schemas folder. Here's the one that needs work: schemas\x3d-4.1-JSONSchema.json Let's just get this one schema working for now.</div><div><br></div><div>Once the schema has been prepared, I will work on getting the auto-generation working for strictly complying schemas (I've already been working on that).</div><div><br></div><div>There may either be updates to X3D JSON schema, or we may request enhancements to the JSON schema standard for our use case. Possibly, enhancements to Ajv may be needed.</div><div><br>The work will involve validating the X3D JSON schema over and over again as the schema is improved, validating the X3D JSON schema itself.</div><div><br></div><div>While I'm not a business, there might be other ways to renumerate you. Kind of like working for someone to work your house, I guess?</div><div><br></div><div>I guess I'll try to get AI to make suggestions next.</div><div><br></div><div>Thanks,</div><div><br></div><div>John</div></div>
_______________________________________________<br>
x3d-public mailing list<br>
<a href="mailto:x3d-public@web3d.org" target="_blank">x3d-public@web3d.org</a><br>
<a href="http://web3d.org/mailman/listinfo/x3d-public_web3d.org" rel="noreferrer" target="_blank">http://web3d.org/mailman/listinfo/x3d-public_web3d.org</a><br>
</blockquote></div>
</blockquote></div>
</blockquote></div>