[x3d-public] Mantis? No SceneGraphStructureStatement AbstractNodeType present in old X3D3 versions, X3DUOM

Brutzman, Donald (Don) (CIV) brutzman at nps.edu
Sun Sep 19 21:22:06 PDT 2021


John, am happy to explain this detailed but step-by-step process.

The XML Schema captures the relationships exactly.  However XML Schema does not have sufficient power to valididate inputOnly or outputOnly fields, because transient values cannot appear in an XML document (i.e. an .x3d scene).

Therefore, each and every one of those inputOnly/ outputOnly fields are added in place as annotations (sort of like structured comments).  Similarly, parent-child node-type relationships are also listed as node types.  The X3DUOM is created to provide a comprehensive list of everything.  This autogeneration approach is repeated for each X3D Schema and X3DUOM pair.  Validation is pretty rigorous (meaning everything fails horribly if not exactly right).  Using X3DUOM to then autogenerate Java, Python and Turtle leads to multiple forms of round-trip testing.

These construction details are all explained on the X3DUOM page.


  *   X3D Unified Object Model (X3DUOM) (web3d.org)<https://www.web3d.org/specifications/X3DUOM.html>
  *   The X3D Unified Object Model (X3DUOM) is a full set of object-oriented interfaces for all nodes, fields and statements in the X3D Architecture Specification.
  *   https://www.web3d.org/specifications/X3DUOM.html

You will find X3DUOM versions 3.0, 3.1, 3.2, 3.3, and 4.0 all present there.  Each was independently constructed from the corresponding X3D XML schema.

X3DUOM construction diagram:


  *   X3dUnifiedObjectModelCreation.png (2448×1829) (web3d.org)<https://www.web3d.org/specifications/X3DUOM/X3dUnifiedObjectModelCreation.png>
  *   https://www.web3d.org/specifications/X3DUOM/X3dUnifiedObjectModelCreation.png

Since we have placed such a high value on backwards compatibility, it seems much more practical to let our X3DJSAIL Java and X3DPSAIL Python implementations simply support X3D 4.0 plus every prior version.  Having five versions of each software library is easily created but totally impractical to maintain.

If you really want to perform archaeological sleuthing of the trail behind SceneGraphStructureStatement, then diff the schema to prior versions and see how it evolved.  We have gradually refactored and improved the X3D XML Schema over the years when possible.  All changes are summarized in the build log.


  *   X3D Specifications: Schema and DOCTYPE Validation assets are commonly used for XML validation of X3D scenes, and in-depth documentation is also provided here.
  *   https://www.web3d.org/specifications

Changelogs are listed right up top:

  *   https://www.web3d.org/specifications/x3d-schema-changelog.txt
  *   https://www.web3d.org/specifications/x3d-dtd-changelog.txt

A magnificent (i.e. endless) list of each asset produced across our history makes every change visible.

As ever, round trip validation testing of thousands of X3D models along the way has given us great confidence that everything is work.  Then, when some little thing doesn’t work, we fix it.  Lather rinse repeat…

Thanks to everyone on this list whose every comment typically does something to help the process.

Long time coming… Have fun with X3D4!  8)

all the best, Don
--
Don Brutzman  Naval Postgraduate School, Code USW/Br       brutzman at nps.edu
Watkins 270,  MOVES Institute, Monterey CA 93943-5000 USA   +1.831.656.2149
X3D graphics, virtual worlds, navy robotics http://faculty.nps.edu/brutzman

From: John Carlson<mailto:yottzumm at gmail.com>
Sent: Tuesday, September 14, 2021 1:30 PM
To: Brutzman, Donald (Don) (CIV)<mailto:brutzman at nps.edu>
Cc: X3D Graphics public mailing list<mailto:x3d-public at web3d.org>
Subject: Re: [x3d-public] Mantis? No SceneGraphStructureStatement AbstractNodeType present in old X3D3 versions, X3DUOM


Actually, the main focus of this thread was:

There are many '<Inheritance baseType="SceneGraphStructureStatement"/>' in X3DUOM V3.0-V3.3.   There is no AbstractNodeType of SceneGraphStructureStatement in V3.* any more.

I don't know if you want to remove the Inheritance or not.  There are '<xs:complexType name="SceneGraphStructureStatement" abstract="true">' in the XML schema V3.*. The complexType seems to have disappeared in translation to X3DUOM V3.*

I will assume that the conversion from XML Schema to X3DUOM is broken for V3.*

I could dig a bit further, but at this point, I think an issue of transferring complexTypes from XML Schema to X3DUOM V3.* has been identifiied.

I agree that V3.* is deprecated at this point.   Ideally, we could get JSON Schemas checked into sourceforge.

Likely, you are in the middle of testing.

Going back into my cave.

John


On 9/14/21 2:53 PM, John Carlson wrote:
It sounds like we should focus on JSON schema 4.0, and leave old schemas behind.

I have been validating files against various JSON schema versions.

I think my main problem was setIS in a field value, which we started addressing Monday.


I have a list of pressing issues if you’re ready.

On Tue, Sep 14, 2021 at 2:36 PM Brutzman, Donald (Don) (CIV) <brutzman at nps.edu<mailto:brutzman at nps.edu>> wrote:
Regarding backwards compatibility:


  *   XML Schemas are available for all versions of X3D, 3.0 through 4.0,  Each has evolved past the prior version.
  *   X3DUOM is autogenerated from each corresponding XML schema, similarly showing evolution.
  *   We have paid a lot of attention to forward/backward compatibility among these many versions of X3D and VRML97.

It is possible to maintain multiple versions of corresponding software builds but that seems fairly counterproductive.  Better is strategy at top of X3DJSAIL page:

  *   Test ongoing development of X3D version 4<https://www.web3d.org/x3d4> (also supporting X3D versions 3.0 through 3.3).
So X3DJSAIL, X3DPSAIL and X3D Ontology (and for that matter XML Schema and X3D DOCTYPE) are focused on 4.0 completeness in each implementation, including backwards compatibility to good effect.

Thus X3DUOM updates are not postponed at all, rather these match exactly each version of the X3D Specification as captured by X3D XML Schemas.

Hope this is clearer now.

all the best, Don

--
Don Brutzman  Naval Postgraduate School, Code USW/Br       brutzman at nps.edu<mailto:brutzman at nps.edu>
Watkins 270,  MOVES Institute, Monterey CA 93943-5000 USA   +1.831.656.2149
X3D graphics, virtual worlds, navy robotics http://faculty.nps.edu/brutzman

From: John Carlson<mailto:yottzumm at gmail.com>
Sent: Tuesday, September 7, 2021 10:42 AM
To: X3D Graphics public mailing list<mailto:x3d-public at web3d.org>
Subject: Re: [x3d-public] Mantis? No SceneGraphStructureStatement AbstractNodeType present in old X3D3 versions, X3DUOM

Hmm.  I mean IS field in fieldValue in X3DUOM.   I guess X3DUOM updates are postponed until X3D4 is done.

John

On Tue, Sep 7, 2021 at 12:28 PM John Carlson <yottzumm at gmail.com<mailto:yottzumm at gmail.com>> wrote:
As previously reported, I am fairly sure I added an IS node (which creates a setIS method).   I don’t think I checked any of this in.

I haven’t formally tested  JSON schema that I remember.

John

On Thu, Sep 2, 2021 at 9:38 PM John Carlson <yottzumm at gmail.com<mailto:yottzumm at gmail.com>> wrote:
I just discovered this draft.   Sorry for the delay.  I think the primary goal should be the alignment of the statement type hierarchy between X3D3 and X3D4.

I’m wondering if my changes locally affected fieldValue.setIS as previously reported?  Or fieldValue.addChild(new IS()) (IS is not a node)

I am thinking someone should look at the type hierarchy differences for statements. If we go with X3D4, I will upgrade various examples.

I guess the other solution is to provide different jars for X3D3 versus X3D4.

John

On Sat, Aug 28, 2021 at 4:09 PM John Carlson <yottzumm at gmail.com<mailto:yottzumm at gmail.com>> wrote:
I'm still having to back out updates to X3DUOM:

$ grep SceneGraphStructureStatement X3dUnifiedObjectModel*|sort -u
X3dUnifiedObjectModel-3.0.xml:            <Inheritance
baseType="SceneGraphStructureStatement"/>
X3dUnifiedObjectModel-3.1.xml:            <Inheritance
baseType="SceneGraphStructureStatement"/>
X3dUnifiedObjectModel-3.2.xml:            <Inheritance
baseType="SceneGraphStructureStatement"/>
X3dUnifiedObjectModel-3.3.xml:            <Inheritance
baseType="SceneGraphStructureStatement"/>

Here's what's in the old X3D3 versions, but not 4.0:

       <AbstractNodeType name="SceneGraphStructureStatement">
          <InterfaceDefinition
specificationUrl="https://www.web3d.org/documents/specifications/19775-1/V3.3/Part01/concepts.html#scenegraph"
appinfo="SceneGraphStructureStatement is a marker interface that
identifies statements relating to nonrenderable scene graph structure.
SceneGraphStructureStatement does not extend from any other node type
since it is not an explicit part of the X3D node interface hierarchy,
and DEF/USE is not appropriate for such statements.">
             <componentInfo name="Core" level="1"/>
             <field name="class"
                    type="SFString"
                    accessType="inputOutput"
                    baseType="xs:NMTOKENS"
                    description="The class attribute on each X3D node
and statement is a space-separated list of classes, reserved for use by
Cascading Style Sheets (CSS) and XML stylesheets."/>
          </InterfaceDefinition>
       </AbstractNodeType>


I am proceeding to delete the Inheritance nodes from my  versions 3
X3DUOM. There are some "AdditionalInheritance" elements that may need to
be converted over to "Inheritance."

If you want me to proceed with updating X3DUOM and AdditionalInheritance
on sourceforge.net<https://nam10.safelinks.protection.outlook.com/?url=http%3A%2F%2Fsourceforge.net%2F&data=04%7C01%7Cbrutzman%40nps.edu%7Ca6c40bdaee4944a7f70908d977be74f0%7C6d936231a51740ea9199f7578963378e%7C0%7C0%7C637672482161086220%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&sdata=w%2FX%2Bs7Rsio4ApcwOSr5JJZfOfdN2MT97pgw7OQUd1Gs%3D&reserved=0>, let me know, but that's treading on unknown
territory for me, updating the stuff that creates X3DUOM.  I assume this
means updating XML schema versions 3.  Is there a Mantis issue yet? I am
capable of filing one, I hope.

I am not currently testing anything that uses X3DUOM besides my own
stuff. Mostly, I am just trying to get the JSON schema working.

Thanks!

John


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20210920/60697f4b/attachment-0001.html>


More information about the x3d-public mailing list