<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:inherit;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
pre
        {mso-style-priority:99;
        mso-style-link:"HTML Preformatted Char";
        margin:0in;
        margin-bottom:.0001pt;
        font-size:10.0pt;
        font-family:"inherit",serif;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
        {mso-style-priority:34;
        margin-top:0in;
        margin-right:0in;
        margin-bottom:0in;
        margin-left:.5in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
span.HTMLPreformattedChar
        {mso-style-name:"HTML Preformatted Char";
        mso-style-priority:99;
        mso-style-link:"HTML Preformatted";
        font-family:"inherit",serif;}
span.od
        {mso-style-name:od;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
/* List Definitions */
@list l0
        {mso-list-id:1260792765;
        mso-list-type:hybrid;
        mso-list-template-ids:994465798 -1 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
@list l0:level1
        {mso-level-text:"%1\)";
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level2
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level3
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l0:level4
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level5
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level6
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l0:level7
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level8
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level9
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
ol
        {margin-bottom:0in;}
ul
        {margin-bottom:0in;}
--></style></head><body lang=EN-US><div class=WordSection1><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><o:p> </o:p></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><o:p> </o:p></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><o:p> </o:p></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><o:p> </o:p></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 www.web3d.org/x3d/stylesheets/java/src/python/pyjnius, or X3DJSONLD JavaScript, what I currently have my service written in?  Or do we base it on Vince’s service?</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Current X3DUOM on my file system are:</p><p class=MsoNormal><o:p> </o:p></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><o:p> </o:p></p><p class=MsoNormal>These should be copied from /c/x3d-code/www.web3d.org/specifications.  There are also various .xsd files.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Is X3DUOM finalized for v4?</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Let’s try to create a task list.</p><p class=MsoNormal><o:p> </o:p></p><ol style='margin-top:0in' start=1 type=1><li class=MsoListParagraph style='margin-left:0in;mso-list:l0 level1 lfo1'>Create base service that all serializers inherit from or delegate to.</li><li class=MsoListParagraph style='margin-left:0in;mso-list:l0 level1 lfo1'>Make a decision to go with file or service interface</li><li class=MsoListParagraph style='margin-left:0in;mso-list:l0 level1 lfo1'>Decide on file or service protocol</li><li class=MsoListParagraph style='margin-left:0in;mso-list:l0 level1 lfo1'>Decide on caching</li><li class=MsoListParagraph style='margin-left:0in;mso-list:l0 level1 lfo1'>Implement</li></ol><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Thanks,</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>John</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Files which currently make use of X3DUOM:</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>$ find pythonSAI/ X3DJSONLD/ /c/git/X3DJSAIL/ -type f|xargs grep UnifiedObject|grep -v '\.git'</p><p class=MsoNormal><o:p> </o:p></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><o:p> </o:p></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/www.web3d.org/specifications/X3dUnifiedObjectModel-3.0.xml | jsonlint > ../schema/x3d-3.0-JSONSchema.json</p><p class=MsoNormal>X3DJSONLD/src/main/shell/generateSchema.sh:python ../python/etgenerateJSONschema.py < /c/x3d-code/www.web3d.org/specifications/X3dUnifiedObjectModel-3.1.xml | jsonlint > ../schema/x3d-3.1-JSONSchema.json</p><p class=MsoNormal>X3DJSONLD/src/main/shell/generateSchema.sh:python ../python/etgenerateJSONschema.py < /c/x3d-code/www.web3d.org/specifications/X3dUnifiedObjectModel-3.2.xml | jsonlint > ../schema/x3d-3.2-JSONSchema.json</p><p class=MsoNormal>X3DJSONLD/src/main/shell/generateSchema.sh:python ../python/etgenerateJSONschema.py < /c/x3d-code/www.web3d.org/specifications/X3dUnifiedObjectModel-3.3.xml | jsonlint > ../schema/x3d-3.3-JSONSchema.json</p><p class=MsoNormal>X3DJSONLD/src/main/shell/generateSchema.sh:python ../python/etgenerateJSONschema.py < /c/x3d-code/www.web3d.org/specifications/X3dUnifiedObjectModel-4.0.xml | jsonlint > ../schema/x3d-4.0-JSONSchema.json</p></div></body></html>