<div><div><div dir="auto">I have found a simple AJAX front-end and flask python back-end if some is willing to do the work.   See link:</div><div dir="auto"><br><div dir="auto"><a href="https://github.com/coderextreme/Flask-AppBuilder-Skeleton" target="_blank">https://github.com/coderextreme/Flask-AppBuilder-Skeleton</a></div><div dir="auto"><br></div><div dir="auto">Have fun.   There are basically two files required out of all of this, see readme.rst.  I don’t know how to create a node.js AJAX client yet, but it would be a welcome addition to this project and X3DJSONLD if someone want to spend time doing it.</div></div></div></div><div><div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Jul 10, 2019 at 5:03 PM John Carlson <<a href="mailto:yottzumm@gmail.com" target="_blank">yottzumm@gmail.com</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"><div class="m_2629677843026140045m_7877993082524274494WordSection1"><p class="MsoNormal">>I am hoping that we will have a proper README and stabilized beta of native Python x3d package getting autogenerated in time for Web3D 2019 conference.</p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">>Wondering if we might somehow use X3DUOM autogeneration to complement some of the modules in your X3DJSONLD library to keep that synchronized with X3Dv4 specification changes.</p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">Yeah, currently the generators create static files.  It would be nice to create a service to keep them up to date, so we don’t have to march around the file system running ant scripts and copying X3DUOM files around.</p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">If there’s a service, then we have a well known place to find any information about X3DUOM, instead of relying on various copies currently found in various projects.</p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">To take first steps, I think we may need to create a complete build script for X3DJSONLD.  Ideally, the build would provide a service. Do you recommend python, so we can use existing generator code, found in <a href="http://www.web3d.org/x3d/stylesheets/java/src/python/pyjnius" target="_blank">www.web3d.org/x3d/stylesheets/java/src/python/pyjnius</a>, or X3DJSONLD JavaScript, what I currently have my service written in?  Or do we base it on Vince’s service?</p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">Current X3DUOM on my file system are:</p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">X3DJSONLD/src/specifications/X3dUnifiedObjectModel-3.3.xml</p><p class="MsoNormal">X3DJSONLD/src/specifications/X3dUnifiedObjectModel-4.0.xml</p><p class="MsoNormal">X3DJSAIL/src/specifications/X3dUnifiedObjectModel-4.0.xml</p><p class="MsoNormal">pythonSAI/X3dUnifiedObjectModel-3.3.xml</p><p class="MsoNormal">pythonSAI/X3dUnifiedObjectModel-4.0.xml</p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">These should be copied from /c/x3d-code/<a href="http://www.web3d.org/specifications" target="_blank">www.web3d.org/specifications</a>.  There are also various .xsd files.</p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">Is X3DUOM finalized for v4?</p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">Let’s try to create a task list.</p><p class="MsoNormal"><u></u> <u></u></p><ol style="margin-top:0in" start="1" type="1"><li class="m_2629677843026140045m_7877993082524274494MsoListParagraph" style="margin-left:0in">Create base service that all serializers inherit from or delegate to.</li><li class="m_2629677843026140045m_7877993082524274494MsoListParagraph" style="margin-left:0in">Make a decision to go with file or service interface</li><li class="m_2629677843026140045m_7877993082524274494MsoListParagraph" style="margin-left:0in">Decide on file or service protocol</li><li class="m_2629677843026140045m_7877993082524274494MsoListParagraph" style="margin-left:0in">Decide on caching</li><li class="m_2629677843026140045m_7877993082524274494MsoListParagraph" style="margin-left:0in">Implement</li></ol><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">Thanks,</p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">John</p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">Files which currently make use of X3DUOM:</p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">$ find pythonSAI/ X3DJSONLD/ /c/git/X3DJSAIL/ -type f|xargs grep UnifiedObject|grep -v '\.git'</p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">[ abbreviated listing ]</p><p class="MsoNormal">pythonSAI/classes.py:soup = BeautifulSoup(open("X3dUnifiedObjectModel-4.0.xml"), "xml")</p><p class="MsoNormal">pythonSAI/fieldtypes.py:soup = BeautifulSoup(open("X3dUnifiedObjectModel-4.0.xml"), "xml")</p><p class="MsoNormal">pythonSAI/old.py:soup = BeautifulSoup(open("X3dUnifiedObjectModel-4.0.xml"), "xml")</p><p class="MsoNormal">pythonSAI/packagemaker.py:soup = xml.etree.ElementTree.parse(open("X3dUnifiedObjectModel-4.0.xml")).getroot()</p><p class="MsoNormal">pythonSAI/parseom.py:soup = BeautifulSoup(open("X3dUnifiedObjectModel-4.0.xml"), "xml")</p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">X3DJSONLD/src/main/node/omtojs.js:      var xml = fs.readFileSync("X3DUnifiedObjectModel-3.3.xml");</p><p class="MsoNormal">X3DJSONLD/src/main/node/omtojs.js:      console.error("X3DUnifiedObjectModel-3.3.xml", e);</p><p class="MsoNormal">X3DJSONLD/src/main/python/classes.py:soup = BeautifulSoup(open("../../specifications/X3DUnifiedObjectModel-3.3.xml"), "xml")</p><p class="MsoNormal">X3DJSONLD/src/main/python/fieldtypes.py:soup = xml.etree.ElementTree.parse(open("../../specifications/X3dUnifiedObjectModel-3.3.xml")).getroot()</p><p class="MsoNormal">X3DJSONLD/src/main/python/mapToMethod.py:soup = xml.etree.ElementTree.parse(open("../../specifications/X3dUnifiedObjectModel-4.0.xml")).getroot()</p><p class="MsoNormal">X3DJSONLD/src/main/python/nodeclasses.py:soup = BeautifulSoup(open("../../specifications/X3DUnifiedObjectModel-3.3.xml"), "xml")</p><p class="MsoNormal">X3DJSONLD/src/main/shell/generateSchema.sh:python ../python/etgenerateJSONschema.py < /c/x3d-code/<a href="http://www.web3d.org/specifications/X3dUnifiedObjectModel-3.0.xml" target="_blank">www.web3d.org/specifications/X3dUnifiedObjectModel-3.0.xml</a> | jsonlint > ../schema/x3d-3.0-JSONSchema.json</p><p class="MsoNormal">X3DJSONLD/src/main/shell/generateSchema.sh:python ../python/etgenerateJSONschema.py < /c/x3d-code/<a href="http://www.web3d.org/specifications/X3dUnifiedObjectModel-3.1.xml" target="_blank">www.web3d.org/specifications/X3dUnifiedObjectModel-3.1.xml</a> | jsonlint > ../schema/x3d-3.1-JSONSchema.json</p><p class="MsoNormal">X3DJSONLD/src/main/shell/generateSchema.sh:python ../python/etgenerateJSONschema.py < /c/x3d-code/<a href="http://www.web3d.org/specifications/X3dUnifiedObjectModel-3.2.xml" target="_blank">www.web3d.org/specifications/X3dUnifiedObjectModel-3.2.xml</a> | jsonlint > ../schema/x3d-3.2-JSONSchema.json</p><p class="MsoNormal">X3DJSONLD/src/main/shell/generateSchema.sh:python ../python/etgenerateJSONschema.py < /c/x3d-code/<a href="http://www.web3d.org/specifications/X3dUnifiedObjectModel-3.3.xml" target="_blank">www.web3d.org/specifications/X3dUnifiedObjectModel-3.3.xml</a> | jsonlint > ../schema/x3d-3.3-JSONSchema.json</p><p class="MsoNormal">X3DJSONLD/src/main/shell/generateSchema.sh:python ../python/etgenerateJSONschema.py < /c/x3d-code/<a href="http://www.web3d.org/specifications/X3dUnifiedObjectModel-4.0.xml" target="_blank">www.web3d.org/specifications/X3dUnifiedObjectModel-4.0.xml</a> | jsonlint > ../schema/x3d-4.0-JSONSchema.json</p></div></div></blockquote></div></div>
</div>