<div dir="auto"><div dir="auto"><span style="font-size:19px;font-style:normal;font-weight:400;letter-spacing:normal;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none;float:none;display:inline!important;background-color:rgba(0,0,0,0);border-color:rgb(0,0,0);color:rgb(0,0,0)">If there was a Canonicalizer for X3DUOM, that would be very useful to me!</span></div><div dir="auto"><span style="font-size:19px;font-style:normal;font-weight:400;letter-spacing:normal;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none;float:none;display:inline!important;background-color:rgba(0,0,0,0);border-color:rgb(0,0,0);color:rgb(0,0,0)"><br></span></div><div dir="auto"><span style="font-size:19px;font-style:normal;font-weight:400;letter-spacing:normal;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none;float:none;display:inline!important;background-color:rgba(0,0,0,0);border-color:rgb(0,0,0);color:rgb(0,0,0)">Looking forward to collaborating! If you want to design a stylesheet to generate X3D JSON Schema from X3D XML schema or X3DUOM, cool! If you use my mappings from X3DUOM to JSON schema with a higher level tool that I don’t have available to me, cool too!</span></div><div dir="auto"><span style="font-size:19px;font-style:normal;font-weight:400;letter-spacing:normal;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none;float:none;display:inline!important;background-color:rgba(0,0,0,0);border-color:rgb(0,0,0);color:rgb(0,0,0)"><br></span></div><div dir="auto">I’m starting to focus on including work from others in a more unified JSON Schema. Aka “MUJS.” A Canonicalizer for X3DUOM is key to that for comparison between schemas and object models.</div><div dir="auto"><span style="font-size:19px;font-style:normal;font-weight:400;letter-spacing:normal;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none;float:none;display:inline!important;background-color:rgba(0,0,0,0);border-color:rgb(0,0,0);color:rgb(0,0,0)"><br></span></div><div dir="auto"><span style="font-size:19px;font-style:normal;font-weight:400;letter-spacing:normal;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none;float:none;display:inline!important;background-color:rgba(0,0,0,0);border-color:rgb(0,0,0);color:rgb(0,0,0)">TL;DR</span></div><div dir="auto"><br></div>I did write an X3D JSON Schema generator, from here: <div><a href="https://github.com/coderextreme/X3DJSONLD/tree/master/src/main/python">https://github.com/coderextreme/X3DJSONLD/tree/master/src/main/python</a></div><div dir="auto"><br></div>See all the versions, etgenerate… for each draft of JSON schema.</div><div dir="auto"><br></div><div dir="auto">Of course, none of this would be possible without X3DUOM.</div><div dir="auto"><br></div><div dir="auto">I typically use Ajv for JSON schema validation. That’s not my work either. I did write X3DJSONLD.java on my own, for validating X3D JSON against X3D XML Schema. <div dir="auto"><a href="https://github.com/coderextreme/x3dschema/blob/main/X3DJSONLD.java">https://github.com/coderextreme/x3dschema/blob/main/X3DJSONLD.java</a> If someone wants to use X3D JSON schema in another programming language, there are many <span style="float:none;display:inline!important;background-color:rgba(0,0,0,0);border-color:rgb(0,0,0);color:rgb(0,0,0)">validators </span>available, try one of these: <div dir="auto"><a href="https://json-schema.org/tools?query=&sortBy=name&sortOrder=ascending&groupBy=toolingTypes&licenses=&languages=&drafts=&toolingTypes=&environments=&showObsolete=false&supportsBowtie=false">https://json-schema.org/tools?query=&sortBy=name&sortOrder=ascending&groupBy=toolingTypes&licenses=&languages=&drafts=&toolingTypes=&environments=&showObsolete=false&supportsBowtie=false</a> X3D JSON schema is currently at JSON schema 2020-12 (latest).</div></div></div><div dir="auto"><br></div><div dir="auto">I am perfectly okay with calling my X3D JSON Schema generator my own work, but I reject that X3D JSON Schema generator is my work alone. There’s even Roy’s geo* nodes embedded within my generator, so not really entirely my code. If you have a generator for the geo nodes, I’m all ears. Roy’s contributions were key in the development of my generator.</div><div dir="auto"><br></div><div dir="auto">I realize that including X_ITE in my version of X3D JSON schema makes it “not X3D.” But that’s really an offshoot from X3DUOM, where I include X_ITEisms into X3DUOM.</div><div dir="auto"><br></div><div dir="auto">This is just a convenience for people who want to use “PBR Next” in their scenes, with validation. So yes, even X3D JSON Schema is extensible.</div><div dir="auto"><br></div><div dir="auto">We want extensible schemas, right?</div><div dir="auto"><br></div><div dir="auto">I do realize that X3DJSAIL is extensible through the use of stylesheets, and I’ve attempted to generate an X_ITE version of X3DJSAIL. I would love to discuss how to make X3DJSAIL and X3DPSAIL more extensible for X_ITE material extensions. This would probably involve packages within X3DUOM, I think (X_ITE appears below org.web3d.x3d.jsail, I think, I’d think that Holger would prefer his own packaging). I can probably create a presentation for extending X3DUOM. That would be useful for people, I think.</div><div dir="auto"><br></div><div dir="auto">So yes, there are core features in X3DUOM, X3DJSAIL and X3DPSAIL. How do people extend them? That’s what I’d like to focus on.</div><div dir="auto"><br></div><div dir="auto">For example, I have <div><a href="https://github.com/coderextreme/X3DJSONLD/blob/master/src/specifications/unifyX3DUOM.py">https://github.com/coderextreme/X3DJSONLD/blob/master/src/specifications/unifyX3DUOM.py</a></div><div dir="auto">Which is intended to merge the X_ITE components X3DUOM (even more unified?).</div><div dir="auto"><br></div><div dir="auto">If people are willing to present their nodes and fields from their projects in X3DUOM format, or something parseable, I can work on an even more unified object model, perhaps called “EMUOM” as a code name.</div><div dir="auto"><br></div><div dir="auto">I guess someone will create a MOUM (most unified object model).</div><div dir="auto"><br></div><div dir="auto">John<br></div></div><div dir="auto"><br><div class="gmail_quote gmail_quote_container" dir="auto"><div dir="ltr" class="gmail_attr">On Thu, Aug 21, 2025 at 11:08 PM 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-width:1px;border-left-style:solid;padding-left:1ex;border-left-color:rgb(204,204,204)"><div dir="auto">Ok. I’ve done zero work on JSON schema. If you have a better term than X3D JSON Schema, I’m all ears. It’s not only my work, Roy Walmsley gave me a significant boost up, so I’d like to include him. I can credit him as well. Without X3D JSON, there won’t be any X3D JSON Schema, so I can credit you as well.</div><div dir="auto"><br></div><div dir="auto">I gained inspiration for creating the mapping between X3DUOM and X3D JSON Schema from you.</div><div dir="auto"><br></div><div dir="auto">I’m perfectly okay with using X3D XML Schema with X3D JSON, as long as there’s a web client based solution.</div><div dir="auto"><br></div><div dir="auto">It’s not my personal work.</div><div dir="auto"><br></div><div dir="auto">John</div><div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Aug 21, 2025 at 6:05 PM 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-width:1px;border-left-style:solid;padding-left:1ex;border-left-color:rgb(204,204,204)"><div dir="auto">Appreciate your work on JSON<span> schema John. If you share it further, please be sure to note that is your personal work. </span></div><div dir="auto"><span><br></span></div><div dir="auto"><span>Am looking forward to continuing work with X3DUOM autogeneration and comprehensive unit testing using the X3D Example Archives, in tandem with X3D JSON File Encoding draft standard development. Likely such work can start after 30th Anniversary Web3D Conference this fall. </span></div><div dir="auto"><span><br></span></div><div dir="auto"><span>Have fun with X3D JSON!</span></div><div dir="auto"><br clear="all"><div dir="auto"><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature">all the best, Don</div></div></div><div dir="auto"><div dir="auto"><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><br>-- <br>Don Brutzman <br>X3D graphics, virtual worlds, Navy robotics <br><a href="https://faculty.nps.edu/brutzman" target="_blank">https://faculty.nps.edu/brutzman</a><br></div></div></div><div><br></div><div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Aug 21, 2025 at 12:34 John Carlson <<a href="mailto:yottzumm@gmail.com" target="_blank">yottzumm@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;padding-left:1ex;border-left-color:rgb(204,204,204)"><div dir="auto">I’ve also contacted the JSON Schema Slack site, and someone asked if they could post our X3D JSON Schema, so the word is getting out.</div><div dir="auto"><br></div><div dir="auto">John<br><div class="gmail_quote" dir="auto"><div dir="ltr" class="gmail_attr">On Thu, Aug 21, 2025 at 1:54 PM John Carlson <<a href="mailto:yottzumm@gmail.com" target="_blank">yottzumm@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;padding-left:1ex;border-left-color:rgb(204,204,204)"><div dir="auto">Great news about JSON, Don.</div><div dir="auto"><br></div><div dir="auto">To clarify:</div><div dir="auto"><br></div><div dir="auto"><div><ul style="margin:0px 0px 12px 15px;padding:0px;border:0px;font-style:normal;font-weight:400;font-size:14.666667px;line-height:inherit;font-family:arial,helvetica,sans-serif;vertical-align:baseline;list-style:outside;letter-spacing:normal;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none;color:rgb(81,95,92)"><li style="margin:0px;padding:0px;border:0px;font-style:inherit;font-weight:inherit;font-size:inherit;line-height:inherit;font-family:arial,helvetica,sans-serif;vertical-align:baseline"><strong style="margin:0px;padding:0px;border:0px;font-style:inherit;font-weight:bold;font-size:inherit;line-height:inherit;font-family:arial,helvetica,sans-serif;vertical-align:baseline">X3D JSON Encoding</strong><ul style="margin:0px 0px 0px 15px;padding:0px;border:0px;font-style:inherit;font-weight:inherit;font-size:inherit;line-height:inherit;font-family:arial,helvetica,sans-serif;vertical-align:baseline;list-style:square"><li style="margin:0px;padding:0px;border:0px;font-style:inherit;font-weight:inherit;font-size:inherit;line-height:inherit;font-family:arial,helvetica,sans-serif;vertical-align:baseline">add 19776-5, <a href="https://www.web3d.org/x3d/stylesheets/X3dToJson.html" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-weight:inherit;font-size:inherit;line-height:inherit;font-family:arial,helvetica,sans-serif;vertical-align:baseline;text-decoration:none;color:rgb(13,88,246)" target="_blank">implemented</a>, needs <a href="https://json-schema.org/learn/miscellaneous-examples" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-weight:inherit;font-size:inherit;line-height:inherit;font-family:arial,helvetica,sans-serif;vertical-align:baseline;text-decoration:none;color:rgb(13,88,246)" target="_blank">JSON Schema</a> autogenerated by <a href="https://www.web3d.org/specifications/X3DUOM.html" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-weight:inherit;font-size:inherit;line-height:inherit;font-family:arial,helvetica,sans-serif;vertical-align:baseline;text-decoration:none;color:rgb(13,88,246)" target="_blank">X3DUOM</a></li></ul></li></ul></div><div dir="auto"><br></div>We have X3D JSON Schema generated by python from X3DUOM, and we have a way to validate X3D JSON against X3D XML Schema. If you want to generate the X3D JSON Schema yourself, great, we can compare notes. Last I heard, <div dir="auto"><a href="https://json-schema.org/specification" target="_blank">https://json-schema.org/specification</a> was going to post their own standards, and also .glTF has a JSON schema. If we want an ISO standard, the JSON is already standardized, so since JSON Schema is JSON, JSON Schema is already standardized.</div><div dir="auto"><br></div><div dir="auto">I made a mapping from X3DUOM to X3D JSON schema here, which can be used to create a XSLT mapping, alternative licenses are possible: <a href="https://raw.githubusercontent.com/coderextreme/X3DJSONLD/refs/heads/master/src/main/python/index.html" target="_blank">https://raw.githubusercontent.com/coderextreme/X3DJSONLD/refs/heads/master/src/main/python/index.html</a>. Note that my X3D JSON schema includes the X_ITE component, and X_ITE probably isn’t covered in this document.</div><div dir="auto"><br></div></div><div dir="auto">I note that Aaron’s work needs to be validated against more than X_ITE and Sunrize before approval. We should make an effort to make sure his Rawkee work meets the standards.</div><div dir="auto"><br></div><div dir="auto">This means converting his X3D XML with the tools we have and testing conversions, and output from conversions.</div><div dir="auto"><br></div><div dir="auto">Pretty pictures aren’t the whole story.</div><div dir="auto"><br></div><div dir="auto">John </div><div dir="auto"><div class="gmail_quote" dir="auto"><div dir="ltr" class="gmail_attr">On Thu, Aug 21, 2025 at 12:25 PM Don Brutzman 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-width:1px;border-left-style:solid;padding-left:1ex;border-left-color:rgb(204,204,204)"><div dir="ltr">Thanks for all scrutiny. Answers and links for many of the questions follow.<div><br></div><div>1. First: X3D version 4.0 is authoritative. X3D version 4.1 is draft and collects a variety of changes, with details discussed on mailing lists and progress synopsized in Mantis. Updating the online draft to match best-case understandings to date has been very helpful. Each addiotion/deletion change in the 4.1 draft is carefully marked up and cross-referenced using Mantis, so that all evolution from X3D version 4.0 is immediately obvious.</div><div><ul><li>X3D version 4.1 draft Architecture</li><li><a href="https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD/Part01/Architecture.html" target="_blank">X3D Architecture 4.1 draft — ISO/IEC 19775-1:202x — X3D Architecture index page</a></li></ul></div><div>More broadly, all specifications are linked and maintained up to date on the X3D Progress page.</div><div><ul><li>X3D Standards Progress</li><li><a href="https://www.web3d.org/x3d/progress" target="_blank">https://www.web3d.org/x3d/progress</a></li></ul><div>2. Second: the motivation for <i>appinfo</i> and <i>documentation </i>annotations is pretty straightforward. The X in X3D stands for Extensible, and one of our major mechanisms for that is prototype declaration. Essentially prototypes define new nodes as a combination of existing nodes plus scripting. Documenting such new designs is important for understanding and for correct implementation.</div></div><div><br></div><div>The approach used by World Wide Web Consortium (W3C) for defining such new elements is well developed and well implemented as part of the XML Schema specification.</div><div><ul><li>W3C XML Schema</li><li><a href="https://www.w3.org/XML/Schema" target="_blank">https://www.w3.org/XML/Schema</a></li><li>W3C XML Schema Definition Language (XSD) 1.1 Part 1, section 3.15 Annotations</li><li><a href="https://www.w3.org/TR/xmlschema11-1/#cAnnotations" target="_blank">https://www.w3.org/TR/xmlschema11-1/#cAnnotations</a></li><li>"Annotations provide for human- and machine-targeted annotations of schema components."</li></ul><div>Given this motivation, and given that this well-developed and well-supported approach for new-element annotations has been proven in W3C Schema, it was a natural thing for us to follow the same design pattern in the X3D XML Encoding. (Pretty helpful too, we didn't have to reinvent that wheel.) Having shown that, we generalized it in the X3D Architecture (as part of 4.0, I believed). As Michalis pointed out,</div></div><div><ul><li>X3D Architecture 4.0, clause 4 Concepts, 4.4.4.2 PROTO interface declaration semantics</li><li>"Prototype and field declarations may optionally include <i>appinfo </i>functional descriptions (i.e., tooltip summary) and a <i>documentation </i>url providing a link to further related information."</li><li><a href="https://www.web3d.org/documents/specifications/19775-1/V4.0/Part01/concepts.html#PROTOinterfacedeclsemantics" target="_blank">https://www.web3d.org/documents/specifications/19775-1/V4.0/Part01/concepts.html#PROTOinterfacedeclsemantics</a></li></ul><div>Given that functional definition, we already have good patterns for equivalently representing the same information in XML, ClassicVRML, VRML, JSON, and programming languages. One of many examples in our archives:</div></div><div><ul><li>X3D Example Archives: X3D4WA, X3D for Web Authors, Chapter 14 Prototypes</li><li><a href="https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/Chapter14Prototypes" target="_blank">https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/Chapter14Prototypes</a></li><li>X3D Example Archives: X3D4WA, X3D for Web Authors, Chapter 14 Prototypes, Heads Up Display Example</li><li><a href="https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/Chapter14Prototypes/HeadsUpDisplayExampleIndex.html" target="_blank">https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/Chapter14Prototypes/HeadsUpDisplayExampleIndex.html</a></li><li><span style="font-family:"Times New Roman";font-size:medium;color:rgb(0,0,0)"> </span><span title="ExternProtoDeclare refers to a ProtoDeclare node declaration provided in another file" style="font-family:"Times New Roman";font-size:medium;background-color:rgb(255,238,255);color:rgb(0,0,0)"><<span style="font-family:"Times New Roman";color:purple">ExternProtoDeclare</span> <span style="font-family:"Times New Roman";color:green">name</span>='<span style="font-family:"Times New Roman";color:purple">HeadsUpDisplay</span>' <span title="application information for this ExternProtoDeclare" style="font-family:"Times New Roman""><span style="font-family:"Times New Roman";color:gray">appinfo</span>='<span style="font-family:"Times New Roman";color:teal">Heads-up display (HUD) keeps child geometry aligned on screen in a consistent location</span>'</span> <span title="uniform resource locator (url) list of relative or absolute file addresses, performed in order until resource retrieval succeeds" style="font-family:"Times New Roman""><span style="font-family:"Times New Roman";color:green">url</span>=' "<a href="https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/Chapter14Prototypes/HeadsUpDisplayPrototype.x3d#HeadsUpDisplay" style="font-family:"Times New Roman"" target="_blank">HeadsUpDisplayPrototype.x3d#HeadsUpDisplay</a>" "<a href="https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/Chapter14Prototypes/HeadsUpDisplayPrototype.x3d#HeadsUpDisplay" style="font-family:"Times New Roman"" target="_blank">https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/Chapter14Prototypes/HeadsUpDisplayPrototype.x3d#HeadsUpDisplay</a>" "<a href="https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/Chapter14Prototypes/HeadsUpDisplayPrototype.wrl#HeadsUpDisplay" style="font-family:"Times New Roman"" target="_blank">HeadsUpDisplayPrototype.wrl#HeadsUpDisplay</a>" "<a href="https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/Chapter14Prototypes/HeadsUpDisplayPrototype.wrl#HeadsUpDisplay" style="font-family:"Times New Roman"" target="_blank">https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/Chapter14Prototypes/HeadsUpDisplayPrototype.wrl#HeadsUpDisplay</a>" '</span>></span></li><li><a href="https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/Chapter14Prototypes/HeadsUpDisplayExample.html#21" target="_blank">https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/Chapter14Prototypes/HeadsUpDisplayExample.html#21</a></li></ul><div>Multiple examples are shown there for many of our file encodings and programming APIs - XML, classicVRML, binary, JSON, Turtle, Java, Python. For example, JSON:</div></div><div><br></div><blockquote style="margin:0px 0px 0px 40px;border:medium;padding:0px"><div> { "ExternProtoDeclare":</div><div> {</div><div> "@name":"HeadsUpDisplay",</div><div> "@appinfo":"Heads-up display (HUD) keeps child geometry aligned on screen in a consistent location",</div><div> "@url":["HeadsUpDisplayPrototype.x3d#HeadsUpDisplay","<a href="https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/Chapter14Prototypes/HeadsUpDisplayPrototype.x3d#HeadsUpDisplay" target="_blank">https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/Chapter14Prototypes/HeadsUpDisplayPrototype.x3d#HeadsUpDisplay</a>","HeadsUpDisplayPrototype.wrl#HeadsUpDisplay","<a href="https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/Chapter14Prototypes/HeadsUpDisplayPrototype.wrl#HeadsUpDisplay" target="_blank">https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/Chapter14Prototypes/HeadsUpDisplayPrototype.wrl#HeadsUpDisplay</a>"],</div><div><br></div></blockquote>Looking ahead, formalizing JSON and all the other file-encoding specifications is our objective for 2025. We already have mature drafts for XML, ClassicVRML and X3D Binary; probably JSON will be next effort.<div><br></div><div>3. Third, the addition of a DESCRIPTION statement for IMPORT/EXPORT has been proposed and we are currently working on a possible way to do this. Thanks Holger for noting the draft 4.1 changes, we are tracking in Mantis (accessible to Web3D Members) and will bring this forward for group review + comment in the near future.</div><div><ul><li>Mantis 1470: add EXPORT/IMPORT field DESCRIPTION for X3D Architecture 4.1</li><li><a href="https://mantis.web3d.org/view.php?id=1470" target="_blank">https://mantis.web3d.org/view.php?id=1470</a></li></ul><div>Am very appreciative of excellent interest and scrutiny. The appinfo and documentation definitions for prototypes and fields seems to be a quite valuable part of X3D extensibility, making new capabilities well documented and re-usable in the long term. Conceptual improvements and issue identification/resolution are always welcome.</div><div><br></div><div>Have fun with well-documented X3D extensibility! 😀👍</div><div><br></div><div>all the best, Don</div><div><br></div><div><br></div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Aug 21, 2025 at 5:20 AM Holger Seelig 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-width:1px;border-left-style:solid;padding-left:1ex;border-left-color:rgb(204,204,204)"><div><p style="color:rgb(0,0,0)">To add fuel to the fire, X3D 4.1 now defines a DESCRIPTION string for IMPORT and EXPORT that must be parsed, currently for Classic Encoding. This description overlaps significantly with appInfo or documentation attributes.</p><p style="color:rgb(0,0,0)">On the other hand, it has not yet been specified how this DESCRIPTION should be encoded in JSON and XML, but it will certainly be similar.</p><a href="https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD/Part01/components/networking.html#IMPORTStatement" target="_blank">https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD/Part01/components/networking.html#IMPORTStatement</a><p><font style="color:rgb(0,0,0)"><span></span></font></p><div>
<div dir="auto" style="letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none;color:rgb(0,0,0)"><div dir="auto" style="letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none;color:rgb(0,0,0)"><div dir="auto" style="letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none;color:rgb(0,0,0)"><div dir="auto" style="letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none;color:rgb(0,0,0)"><div dir="auto" style="letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none;color:rgb(0,0,0)"><div dir="auto" style="letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none;color:rgb(0,0,0)"><div dir="auto" style="letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none;color:rgb(0,0,0)"><div dir="auto" style="letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none;color:rgb(0,0,0)"><div dir="auto" style="letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none;color:rgb(0,0,0)"><div dir="auto" style="letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none;color:rgb(0,0,0)"><div dir="auto" style="text-align:start;text-indent:0px"><div style="letter-spacing:normal;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none;color:rgb(0,0,0)"><a href="https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD/Part01/components/networking.html#EXPORTStatement" target="_blank">https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD/Part01/components/networking.html#EXPORTStatement</a></div><div style="letter-spacing:normal;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none;color:rgb(0,0,0)"><br></div><div style="letter-spacing:normal;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none;color:rgb(0,0,0)">Best regards,</div><div style="letter-spacing:normal;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none;color:rgb(0,0,0)">Holger</div><div style="letter-spacing:normal;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none;color:rgb(0,0,0)"><br></div></div></div></div></div></div></div></div></div></div></div></div></div><div>
<div dir="auto" style="letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none;color:rgb(0,0,0)"><div>—<br>Holger Seelig<br>Leipzig, Germany<br><br><a href="mailto:holger.seelig@yahoo.de" target="_blank">holger.seelig@yahoo.de</a><br><a href="https://create3000.github.io/x_ite/" target="_blank">https://create3000.github.io/x_ite/</a><br><a href="https://patreon.com/X_ITE" target="_blank">https://patreon.com/X_ITE</a><br></div><div><br></div></div><br>
</div>
<div><br><blockquote type="cite"><div>Am 21.08.2025 um 12:42 schrieb Michalis Kamburelis via x3d-public <<a href="mailto:x3d-public@web3d.org" target="_blank">x3d-public@web3d.org</a>>:</div><br><div><div>Thank you -- but that's not yet enough :)<br><br>The fact that appinfo is SFString says what information it can carry<br>(OK, 1 string), but not yet how it's encoded. If "appinfo" would be a<br>regular field inside a regular X3D node, it would be all we need...<br>alas, it is not.<br><br>As it stands, "appinfo" is part of "ProtoDeclare" and "field" in<br>prototype interface -- these are special concepts with special syntax,<br>in both X3D XML and classic encodings.<br><br>- For the X3D 3.3 classic encoding, this is the relevant section:<br><a href="https://www.web3d.org/documents/specifications/19776-2/V3.3/Part02/concepts.html#PROTOStatementSyntax" target="_blank">https://www.web3d.org/documents/specifications/19776-2/V3.3/Part02/concepts.html#PROTOStatementSyntax</a><br><br>- For the X3D 3.3 XML encoding, this is the relevant section:<br><a href="https://www.web3d.org/documents/specifications/19776-1/V3.3/Part01/concepts.html#PrototypeAndFieldDeclarationSyntax" target="_blank">https://www.web3d.org/documents/specifications/19776-1/V3.3/Part01/concepts.html#PrototypeAndFieldDeclarationSyntax</a><br><br>I think we need "X3D 4.0 classic encoding" and "X3D 4.0 XML encoding"<br>specs and they should extend above sections to include how the<br>additional X3D 4.0 information ("appinfo", "documentation") is<br>encoded.<br><br>The XML encoding is kind of obvious in this case (as "ProtoDeclare"<br>and "field" are XML elements, so "appinfo" and "documentation" can be<br>just XML attributes), so it's not a big question. But classic encoding<br>of them is really unknown, at least to me :)<br><br>Regards,<br>Michalis<br><br>wt., 19 sie 2025 o 18:59 John Carlson via x3d-public<br><<a href="mailto:x3d-public@web3d.org" target="_blank">x3d-public@web3d.org</a>> napisał(a):<br><blockquote type="cite"><br>What I meant to say is appinfo is an SFString, but I don’t know if that’s enough information for the classic encoding. Anyone?<br><br>John<br><br>On Tue, Aug 19, 2025 at 11:17 AM John Carlson <<a href="mailto:yottzumm@gmail.com" target="_blank">yottzumm@gmail.com</a>> wrote:<br><blockquote type="cite"><br>Sorry, I the previous message contained 2 large images.<br><br>The direct links are:<br><br><a href="https://www.web3d.org/x3d/content/X3dTooltips.html#ProtoDeclare.appinfo" target="_blank">https://www.web3d.org/x3d/content/X3dTooltips.html#ProtoDeclare.appinfo</a><br><br><br><a href="https://www.web3d.org/x3d/content/X3dTooltips.html#field.appinfo" target="_blank">https://www.web3d.org/x3d/content/X3dTooltips.html#field.appinfo</a><br><br>John<br><br>---------- Forwarded message ---------<br>From: John Carlson <<a href="mailto:yottzumm@gmail.com" target="_blank">yottzumm@gmail.com</a>><br>Date: Tue, Aug 19, 2025 at 10:54 AM<br>Subject: Re: [x3d-public] appinfo attribute/field<br>To: Michalis Kamburelis <<a href="mailto:michalis.kambi@gmail.com" target="_blank">michalis.kambi@gmail.com</a>><br>CC: Extensible 3D (X3D) Graphics public discussion <<a href="mailto:x3d-public@web3d.org" target="_blank">x3d-public@web3d.org</a>><br><br><br>Michalis:<br><br>Tooltips may help again here, they are SFStrings. I don’t know the meaning of CDATA or #IMPLIED though, see attached images. The issue you mentioned contains direct links, FMI.<br><br>Thanks,<br><br>John<br><br><br>On Tue, Aug 19, 2025 at 10:46 AM Michalis Kamburelis <<a href="mailto:michalis.kambi@gmail.com" target="_blank">michalis.kambi@gmail.com</a>> wrote:<br><blockquote type="cite"><br>Let me add another question to this thread: Where is the specification<br>of how to *encode* appinfo information in the X3D classic encoding?<br><br>To add some background/context to this question:<br><br>- Thanks to John pointing out in<br><a href="https://github.com/castle-engine/castle-engine/issues/688" target="_blank">https://github.com/castle-engine/castle-engine/issues/688</a> , in CGE we<br>lack support for "appinfo" attribute in ProtoDeclare / field.<br><br>- I found a mention of new "appinfo" and "documentation" in the<br>abstract X3D 4.0 spec:<br><a href="https://www.web3d.org/documents/specifications/19775-1/V4.0/Part01/concepts.html#PROTOinterfacedeclsemantics" target="_blank">https://www.web3d.org/documents/specifications/19775-1/V4.0/Part01/concepts.html#PROTOinterfacedeclsemantics</a><br>,"""Prototype and field declarations may optionally include appinfo<br>functional descriptions (i.e., tooltip summary) and a documentation<br>url providing a link to further related information."""<br><br>- However, as the above is the "abstract" part of the spec ("X3D<br>Abstract : Architecture and base components") so it naturally doesn't<br>say how these "appinfo" and "documentation" are actually encoded. The<br>official XML encoding and classic encoding specs are now at 3.3<br>version -- so they don't mention how to encode this new X3D 4.0<br>feature.<br><br>- For XML encoding, it seems straightforward, judging from the<br>testcase in <a href="https://github.com/castle-engine/castle-engine/issues/688" target="_blank">https://github.com/castle-engine/castle-engine/issues/688</a><br>. They are just XML attributes.<br><br> <ProtoDeclare appinfo='...' name='...' ...><br><br> <field appinfo='...' ...>'<br><br> OK, so XML encoding is simple enough:)<br><br>- We need to know how to encode this information in X3D classic, to<br>enable lossless conversion between X3D encodings (classic, XML etc.).<br><br>- If there is a spec, and/or a clear example of how to do this in X3D<br>classic encoding, please point me to it :) Thank you!<br><br>Regards,<br>Michalis<br></blockquote></blockquote><br>_______________________________________________<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" target="_blank">http://web3d.org/mailman/listinfo/x3d-public_web3d.org</a><br></blockquote><br>_______________________________________________<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" target="_blank">http://web3d.org/mailman/listinfo/x3d-public_web3d.org</a><br></div></div></blockquote></div><br></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>
_______________________________________________<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></div>
</blockquote></div></div>
</blockquote></div></div>
</blockquote></div></div>
</blockquote></div></div>