<div><div dir="auto">I’m going to go with what you suggest, and as a result, ignore the createNode and createProto methods in SAI.</div><div dir="auto"><br></div><div dir="auto">Are these used for external SAI?</div><div dir="auto"><br></div><div dir="auto">I don’t really like factories anyway.   Dispatch tables seem to be okay!</div><div dir="auto"><br></div><div dir="auto">If need be, I’ll synthesize a factory.</div><div dir="auto"><br></div><div dir="auto">Thanks!</div></div><div><div dir="auto"><br></div><div dir="auto">John</div><div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Jan 30, 2023 at 2:21 PM Brutzman, Donald (Don) (CIV) <<a href="mailto:brutzman@nps.edu" target="_blank">brutzman@nps.edu</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div lang="EN-US" link="blue" vlink="#954F72" style="word-wrap:break-word"><div><p class="MsoNormal">John, every single one of the ~4000 scenes created for Java X3DJSAIL and Python x3d.py X3DPSAIL and JSON includes statement and node creation.  They are designed to follow the X3D SAI, as Joe indicates.<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">Example abridged excerpts showing X3D, head and meta statements follow.  Inquiring eyes will note that they have essentially identical structure, just different syntax for each programming language.<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><ul style="margin-top:0in" type="disc"><li style="margin-left:0in"><b>X3D Example Archives: X3D4AM, X3D for Advanced Modeling, Hello World Scenes, Hello World<u></u><u></u></b></li><li style="margin-left:0in"><a href="https://x3dgraphics.com/examples/X3dForAdvancedModeling/HelloWorldScenes/HelloWorldIndex.html" target="_blank">https://x3dgraphics.com/examples/X3dForAdvancedModeling/HelloWorldScenes/HelloWorldIndex.html</a><u></u><u></u></li></ul><div style="border:none;border-bottom:solid windowtext 1.5pt;padding:0in 0in 1.0pt 0in"><p class="MsoNormal" style="border:none;padding:0in"><u></u> <u></u></p></div><p class="MsoNormal"><u></u> <u></u></p><ul style="margin-top:0in" type="disc"><li style="margin-left:0in"><a href="https://x3dgraphics.com/examples/X3dForAdvancedModeling/HelloWorldScenes/HelloWorld.java" target="_blank">https://x3dgraphics.com/examples/X3dForAdvancedModeling/HelloWorldScenes/HelloWorld.java</a><u></u><u></u></li></ul><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"">  x3dModel = new X3D().setProfile(X3D.PROFILE_IMMERSIVE).setVersion(X3D.VERSION_3_3)<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"">  .setHead(new head()<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"">    .addComments(" Alternate encodings: VRML97, X3D ClassicVRML Encoding, X3D Compressed Binary Encoding (CBE), X3DOM, JSON ")<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"">    .addMeta(new meta().setName(meta.NAME_TITLE      ).setContent("HelloWorld.x3d"))<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"">    .addMeta(new meta().setName(meta.NAME_DESCRIPTION).setContent("Simple X3D model example: Hello World!"))<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"">    .addMeta(new meta().setName(meta.NAME_CREATED    ).setContent("30 October 2000"))<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"">    .addMeta(new meta().setName(meta.NAME_MODIFIED   ).setContent("11 June 2021")))<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"">  .setScene(new Scene()<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"">    .addComments(" Example scene to illustrate X3D nodes and fields (XML elements and attributes) ")<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"">    .addChild(new WorldInfo().setInfo(new String[] {"Example scene to illustrate a simple X3D model"}).setTitle("Hello World!"))<u></u><u></u></span></p><div style="border:none;border-bottom:solid windowtext 1.5pt;padding:0in 0in 1.0pt 0in"><p class="MsoNormal" style="border:none;padding:0in"><u></u> <u></u></p></div><p class="MsoNormal"><u></u> <u></u></p><ul style="margin-top:0in" type="disc"><li style="margin-left:0in"><a href="https://x3dgraphics.com/examples/X3dForAdvancedModeling/HelloWorldScenes/HelloWorld.python" target="_blank">https://x3dgraphics.com/examples/X3dForAdvancedModeling/HelloWorldScenes/HelloWorld.python</a><u></u><u></u></li></ul><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"">newModel=X3D(profile='Immersive',version='3.3',<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"">  head=head(<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"">    children=[<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"">    #  Alternate encodings: VRML97, X3D ClassicVRML Encoding, X3D Compressed Binary Encoding (CBE), X3DOM, JSON <u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"">    meta(content='HelloWorld.x3d',name='title'),<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"">    meta(content='Simple X3D model example: Hello World!',name='description'),<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"">    meta(content='30 October 2000',name='created'),<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"">    meta(content='11 June 2021',name='modified')]),<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"">  Scene=Scene(<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"">    #  Example scene to illustrate X3D nodes and fields (XML elements and attributes) <u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"">    children=[<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"">    WorldInfo(info=["Example scene to illustrate a simple X3D model"],title='Hello World!'),<u></u><u></u></span></p><div style="border:none;border-bottom:solid windowtext 1.5pt;padding:0in 0in 1.0pt 0in"><p class="MsoNormal" style="border:none;padding:0in"><u></u> <u></u></p></div><p class="MsoNormal"><u></u> <u></u></p><ul style="margin-top:0in" type="disc"><li style="margin-left:0in"><a href="https://x3dgraphics.com/examples/X3dForAdvancedModeling/HelloWorldScenes/HelloWorld.json" target="_blank">https://x3dgraphics.com/examples/X3dForAdvancedModeling/HelloWorldScenes/HelloWorld.json</a><u></u><u></u></li></ul><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">{ "X3D": {<u></u><u></u></p><p class="MsoNormal">    "encoding":"UTF-8",<u></u><u></u></p><p class="MsoNormal">    "@profile":"Immersive",<u></u><u></u></p><p class="MsoNormal">    "@version":"3.3",<u></u><u></u></p><p class="MsoNormal">    "@xsd:noNamespaceSchemaLocation":<a href="https://www.web3d.org/specifications/x3d-3.3.xsd" target="_blank">https://www.web3d.org/specifications/x3d-3.3.xsd</a>,<u></u><u></u></p><p class="MsoNormal">    "JSON schema":<a href="https://www.web3d.org/specifications/x3d-4.0-JSONSchema.autogenerated.json" target="_blank">https://www.web3d.org/specifications/x3d-4.0-JSONSchema.autogenerated.json</a>,<u></u><u></u></p><p class="MsoNormal">    "head": {<u></u><u></u></p><p class="MsoNormal">        "-children":[<u></u><u></u></p><p class="MsoNormal">          {<u></u><u></u></p><p class="MsoNormal">            "#comment":"Alternate encodings: VRML97, X3D ClassicVRML Encoding, X3D Compressed Binary Encoding (CBE), X3DOM, JSON"<u></u><u></u></p><p class="MsoNormal">          }<u></u><u></u></p><p class="MsoNormal">        ],<u></u><u></u></p><p class="MsoNormal">        "meta": [<u></u><u></u></p><p class="MsoNormal">          {<u></u><u></u></p><p class="MsoNormal">            "@name":"title",<u></u><u></u></p><p class="MsoNormal">            "@content":"HelloWorld.x3d"<u></u><u></u></p><p class="MsoNormal">          },<u></u><u></u></p><p class="MsoNormal">          {<u></u><u></u></p><p class="MsoNormal">            "@name":"description",<u></u><u></u></p><p class="MsoNormal">            "@content":"Simple X3D model example: Hello World!"<u></u><u></u></p><p class="MsoNormal">          },<u></u><u></u></p><p class="MsoNormal">          {<u></u><u></u></p><p class="MsoNormal">            "@name":"created",<u></u><u></u></p><p class="MsoNormal">            "@content":"30 October 2000"<u></u><u></u></p><p class="MsoNormal">          },<u></u><u></u></p><p class="MsoNormal">          {<u></u><u></u></p><p class="MsoNormal">            "@name":"modified",<u></u><u></u></p><p class="MsoNormal">            "@content":"11 June 2021"<u></u><u></u></p><p class="MsoNormal">          }<u></u><u></u></p><p class="MsoNormal">        ]<u></u><u></u></p><p class="MsoNormal">    },<u></u><u></u></p><p class="MsoNormal">    "Scene": {<u></u><u></u></p><p class="MsoNormal">        "-children":[<u></u><u></u></p><p class="MsoNormal">          {<u></u><u></u></p><p class="MsoNormal">            "#comment":"Example scene to illustrate X3D nodes and fields (XML elements and attributes)"<u></u><u></u></p><p class="MsoNormal">          },<u></u><u></u></p><p class="MsoNormal">          { "WorldInfo":<u></u><u></u></p><p class="MsoNormal">            {<u></u><u></u></p><p class="MsoNormal">              "@info":["Example scene to illustrate a simple X3D model"],<u></u><u></u></p><p class="MsoNormal">              "@title":"Hello World!"<u></u><u></u></p><p class="MsoNormal">            }<u></u><u></u></p><p class="MsoNormal">          },<u></u><u></u></p><div style="border:none;border-bottom:solid windowtext 1.5pt;padding:0in 0in 1.0pt 0in"><p class="MsoNormal" style="border:none;padding:0in"><u></u> <u></u></p></div><div><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New""><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New""><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:12.0pt">plus ça change…<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:12.0pt"><a href="https://en.wiktionary.org/wiki/plus_%C3%A7a_change" target="_blank">https://en.wiktionary.org/wiki/plus_ça_change</a><u></u><u></u></span></p><p class="MsoNormal" style="margin-bottom:1.2pt;margin-left:74.4pt;background:white"><u></u><span style="font-size:10.5pt;font-family:"Arial",sans-serif;color:#202122"><span>1.<span style="font:7.0pt "Times New Roman"">      </span></span></span><u></u><span style="font-size:10.5pt;font-family:"Arial",sans-serif;color:#202122">(<i><a href="https://en.wiktionary.org/wiki/Appendix:Glossary#literally" title="Appendix:Glossary" target="_blank"><span style="color:#0645ad">literally</span></a></i>) The more it changes, the more it's the same thing (sometimes loosely translated as <a href="https://en.wiktionary.org/wiki/the_more_things_change,_the_more_they_stay_the_same" title="the more things change, the more they stay the same" target="_blank"><span style="color:#0645ad">the more things change, the more they stay the same</span></a>).<u></u><u></u></span></p><p class="MsoNormal" style="margin-bottom:1.2pt;margin-left:74.4pt;background:white"><u></u><span style="font-size:10.5pt;font-family:"Arial",sans-serif;color:#202122"><span>2.<span style="font:7.0pt "Times New Roman"">      </span></span></span><u></u><span style="font-size:10.5pt;font-family:"Arial",sans-serif;color:#202122">Although the outward appearance may change, fundamentals are constant.<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New""><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New""><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"">all the best, Don<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"">-- <u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"">Don Brutzman  Naval Postgraduate School, Code USW/Br        <a href="mailto:brutzman@nps.edu" target="_blank">brutzman@nps.edu</a><u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"">Watkins 270,  MOVES Institute, Monterey CA 93943-5000 USA    +1.831.656.2149<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"">X3D graphics, virtual worlds, Navy robotics https://</span> <span style="font-size:10.0pt;font-family:"Courier New""><a href="http://faculty.nps.edu/brutzman" target="_blank">faculty.nps.edu/brutzman</a><u></u><u></u></span></p></div><p class="MsoNormal"><u></u> <u></u></p><div><div style="border:none;border-top:solid #e1e1e1 1.0pt;padding:3.0pt 0in 0in 0in"><p class="MsoNormal"><b>From:</b> x3d-public <<a href="mailto:x3d-public-bounces@web3d.org" target="_blank">x3d-public-bounces@web3d.org</a>> <b>On Behalf Of </b>Joseph D Williams<br><b>Sent:</b> Wednesday, January 25, 2023 9:48 AM<br><b>To:</b> John Carlson <<a href="mailto:yottzumm@gmail.com" target="_blank">yottzumm@gmail.com</a>>; X3D Graphics public mailing list <<a href="mailto:x3d-public@web3d.org" target="_blank">x3d-public@web3d.org</a>><br><b>Subject:</b> Re: [x3d-public] createStatement for SAI<u></u><u></u></p></div></div><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">Please look at the X3D Abstract SAI spec.<u></u><u></u></p><p class="MsoNormal">Joe<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><div style="border:none;border-top:solid #e1e1e1 1.0pt;padding:3.0pt 0in 0in 0in"><p class="MsoNormal"><b>From: </b><a href="mailto:yottzumm@gmail.com" target="_blank">John Carlson</a><br><b>Sent: </b>Tuesday, January 24, 2023 7:52 PM<br><b>To: </b><a href="mailto:x3d-public@web3d.org" target="_blank">X3D Graphics public mailing list</a><br><b>Subject: </b>[x3d-public] createStatement for SAI<u></u><u></u></p></div><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">How is statement creation done in SAI?  How similar is it to node creation?<u></u><u></u></p><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal">Thanks,<u></u><u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p></div><p class="MsoNormal">John<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p></div></div></blockquote></div></div>
</div>