[x3d-public] X3D JSON Schema: NOT NEEDED ANY MORE! actually yes needed by Web3D, YMMV

John Carlson yottzumm at gmail.com
Thu Feb 17 18:34:33 PST 2022


Here's another problem I don't really have a good handle on right now. I'm
guessing it's because we converted NavigationInfo.type from array to string
(in JSON).  JSON file attached. I changed NavigationInfo to:


          { "NavigationInfo":
            {
              "@type": ["EXAMINE", "WALK", "FLY", "ANY"]
            }
          },

and the validation passed.  But the real value of @type is below:

X3dToJson.xslt produces an XML string (which I think is correct, based on
previous discussion).

          { "NavigationInfo":
            {
              "@type":"\"EXAMINE\" \"WALK\" \"FLY\" \"ANY\""
            }
          },

Please review the following to see if you can fix the issue in X3DJSAIL

runone:
     [echo] Validate
C:\x3d-code\www.web3d.org\x3d\content\examples\ConformanceNist\Geometry\IndexedLineSet\parent_transform.json
with classpath .:/x3d-code/
www.web3d.org/x3d/stylesheets/java/jars/X3DJSAIL.4.0.full.jar
     [java] Validating C:\x3d-code\www.web3d.org
\x3d\content\examples\ConformanceNist\Geometry\IndexedLineSet\parent_transform.json
     [java] [X3DLoaderDOM] <meta name='info' content='Correct definition
and compliance of this conformance scene is maintained by the X3D Working
Group, https://www.web3d.org/working-groups/x3d'/>
     [java] trimmed MFString newValue[0]="EXAMINE" "WALK" "FLY" "ANY"
     [java] *** trimmed MFString newValue[0]=XAMINE" "WALK" "FLY" "ANY from
prior value ""EXAMINE" "WALK" "FLY" "ANY""
     [java] Info: NavigationInfo type newValue='[XAMINE" "WALK" "FLY"
"ANY]' includes an unrecognized value newValue[0]=XAMINE" "WALK" "FLY" "ANY
not matching any of the optional string tokens. Note that enumeration value
"XAMINE" "WALK" "FLY" "ANY" contains embedded whitespace, need to check
necessary quoting of individual MFString values.
     [java] *** trace: NavigationInfo type MFString
 newValue=[Ljava.lang.String;@3d7ca144 with
newValue.getClass().getTypeName()=java.lang.String[]
     [java] Info: NavigationInfo type newValue='[XAMINE" "WALK" "FLY"
"ANY]' includes an unrecognized value newValue[0]=XAMINE" "WALK" "FLY" "ANY
not matching any of the optional string tokens. Note that enumeration value
"XAMINE" "WALK" "FLY" "ANY" contains embedded whitespace, need to check
necessary quoting of individual MFString values.
     [java] *** trace: NavigationInfo type MFString
 newValue=[Ljava.lang.String;@34d245eb with
newValue.getClass().getTypeName()=java.lang.String[]
     [java]
     [java] <meta content='Correct definition and compliance of this
conformance scene is maintained by the X3D Working Group,
https://www.web3d.org/working-groups/x3d' name='info'/>

Note:  see passing schema below:

$ node ../x3dvalidate/x3dvalidate.js /c/x3d-code/
www.web3d.org/x3d/content/examples/ConformanceNist/Geometry/IndexedLineSet/parent_transform.json
Can only validate version 4.0 presently. Switching version to 4.0.
Loading schema
Parsing schema
Adding schema
Schema 4.0 added
Schema 4.0 compiled
Success reading C:/x3d-code/
www.web3d.org/x3d/content/examples/ConformanceNist/Geometry/IndexedLineSet/parent_transform
.
json

This is one good reason to validate with X3DJSAIL!

The only thing, despite modifying X3DJSAIL and X3DJSONLD.java code that I
have gotten to work is if NavigationInfo.type is a JSON array.

I have set up a pretty good environment here to test:

https://github.com/coderextreme/x3dschema

I'm not sure what to do at this point.   I suggest you copy the two Java
files and build.xml in the repository somewhere in your repositories.  I
have configured the ant script to work with a single file.  You may need to
modify the ant properties, but everything is pretty simple.

Beyond changing X3dToJson.xslt to produce a Json array, I'm pretty lost on
this one. It seems very simple. I guess I'll try tomorrow.

I did make this one other change to the X3DJSAIL stylesheet:

@@ -39401,7 +39401,7 @@
                 }
                 if (newValue[i].endsWith("\"") &&
!newValue[i].endsWith("\\\""))
                 {
-                    newValue[i] = newValue[i].substring(1,
newValue[i].length()-1);
+                    newValue[i] = newValue[i].substring(0,
newValue[i].length()-1);
                     reduced = true;
                 }
                 if (reduced)



Thanks!

John

On Thu, Feb 17, 2022 at 7:06 PM John Carlson <yottzumm at gmail.com> wrote:

> This patch appears to work for the error:
>
> $ svn diff CreateX3dSceneAccessInterfaceJava.xslt
> Index: CreateX3dSceneAccessInterfaceJava.xslt
> ===================================================================
> --- CreateX3dSceneAccessInterfaceJava.xslt      (revision 32929)
> +++ CreateX3dSceneAccessInterfaceJava.xslt      (working copy)
> @@ -36464,7 +36464,7 @@
>                              if
> (ite.getCause().toString().contains("java.lang.StackOverflowError"))
>                                  continue; // likely problem is regex
> checking of large attribute value, defer diagnosis and continue loading
>                                                 }
> -                        if
> (ite.getMessage().contains("java.lang.StackOverflowError"))
> +                        if (ite.getMessage() != null &&
> ite.getMessage().contains("java.lang.StackOverflowError"))
>                              continue; // likely problem is regex checking
> of large attribute value, defer diagnosis and continue loading
>
> validationResult.append(errorNotice).append("\n");
>
> System.out.println(errorNotice + "\n"); // avoiding System.err due to
> redirection difficulties
>
> Attached file to test:
>
>
>
> On Thu, Feb 17, 2022 at 6:57 PM John Carlson <yottzumm at gmail.com> wrote:
>
>> If we want to work on one thing, this would have the most impact:   See
>> NullPointerException below.  Date on JSON file is 1/27/2022 10PM.  I will
>> work on the "X3D comment replacing" (not sure what's happening there, may
>> have to check for equality).  I will work on a patch to X3DJSAIL.
>> Attaching JSON.
>>
>>      [echo] Validate C:\x3d-code\www.web3d.org\x3d\content\examples\Basic\CAD\CadGeometryExternPrototypes.json
>> with classpath .:/x3d-code/
>> www.web3d.org/x3d/stylesheets/java/jars/X3DJSAIL.4.0.full.jar
>>      [java] Validating C:\x3d-code\www.web3d.org
>> \x3d\content\examples\Basic\CAD\CadGeometryExternPrototypes.json
>>      [java] X3DJSONLD comment replacing
>> "==========================================="
>>      [java] with
>> "==========================================="
>>      [java] X3DJSONLD comment replacing
>> "========================================"
>>      [java] with
>> "========================================"
>>      [java] X3DJSONLD comment replacing
>> "========================================"
>>      [java] with
>> "========================================"
>>      [java] X3DJSONLD comment replacing
>> "========================================"
>>      [java] with
>> "========================================"
>>      [java] X3DJSONLD comment replacing
>> "========================================"
>>      [java] with
>> "========================================"
>>      [java] X3DJSONLD comment replacing
>> "========================================"
>>      [java] with
>> "========================================"
>>      [java] X3DJSONLD comment replacing
>> "========================================"
>>      [java] with
>> "========================================"
>>      [java] X3DJSONLD comment replacing "Silence scene warnings by
>> providing ordered ProtoInstance examples. Note warning above that this
>> scene is for developmental use. The ProtoInstance form of the CAD nodes
>> should not be used, native X3D encoding should be used instead."
>>      [java] with                         "Silence scene warnings by
>> providing ordered ProtoInstance examples. Note warning above that this
>> scene is for developmental use. The ProtoInstance form of the CAD nodes
>> should not be used, native X3D encoding should be used instead."
>>      [java] java.lang.NullPointerException: Cannot invoke
>> "String.contains(java.lang.CharSequence)" because the return value of
>> "java.lang.reflect.InvocationTargetException.getMessage()" is null
>>      [java]     at
>> org.web3d.x3d.jsail.X3DLoaderDOM.toX3dModelInstance(X3DLoaderDOM.java:1590)
>>      [java]     at
>> org.web3d.x3d.jsail.X3DLoaderDOM.toX3dModelInstance(X3DLoaderDOM.java:619)
>>      [java]     at
>> org.web3d.x3d.jsail.X3DLoaderDOM.toX3dModelInstance(X3DLoaderDOM.java:619)
>>      [java]     at
>> org.web3d.x3d.jsail.X3DLoaderDOM.toX3dModelInstance(X3DLoaderDOM.java:619)
>>      [java]     at
>> org.web3d.x3d.jsail.X3DLoaderDOM.toX3dModelInstance(X3DLoaderDOM.java:490)
>>      [java]     at
>> org.web3d.x3d.jsail.X3DLoaderDOM.toX3dModelInstance(X3DLoaderDOM.java:453)
>>      [java]     at Validate.main(Validate.java:18)
>>      [java]     at
>> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native
>> Method)
>>      [java]     at
>> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
>>      [java]     at
>> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>>      [java]     at
>> java.base/java.lang.reflect.Method.invoke(Method.java:568)
>>      [java]     at
>> org.apache.tools.ant.taskdefs.ExecuteJava.run(ExecuteJava.java:218)
>>      [java]     at
>> org.apache.tools.ant.taskdefs.ExecuteJava.execute(ExecuteJava.java:155)
>>      [java]     at org.apache.tools.ant.taskdefs.Java.run(Java.java:891)
>>      [java]     at
>> org.apache.tools.ant.taskdefs.Java.executeJava(Java.java:231)
>>      [java]     at
>> org.apache.tools.ant.taskdefs.Java.executeJava(Java.java:135)
>>      [java]     at
>> org.apache.tools.ant.taskdefs.Java.execute(Java.java:108)
>>      [java]     at
>> org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:299)
>>      [java]     at
>> jdk.internal.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
>>      [java]     at
>> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>>      [java]     at
>> java.base/java.lang.reflect.Method.invoke(Method.java:568)
>>      [java]     at
>> org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:99)
>>      [java]     at org.apache.tools.ant.Task.perform(Task.java:350)
>>      [java]     at org.apache.tools.ant.Target.execute(Target.java:449)
>>      [java]     at
>> org.apache.tools.ant.Target.performTasks(Target.java:470)
>>      [java]     at
>> org.apache.tools.ant.Project.executeSortedTargets(Project.java:1401)
>>      [java]     at
>> org.apache.tools.ant.helper.SingleCheckExecutor.executeTargets(SingleCheckExecutor.java:36)
>>      [java]     at
>> org.apache.tools.ant.Project.executeTargets(Project.java:1264)
>>      [java]     at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:437)
>>      [java]     at
>> org.apache.tools.ant.taskdefs.CallTarget.execute(CallTarget.java:106)
>>      [java]     at
>> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native
>> Method)
>>      [java]     at
>> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
>>      [java]     at
>> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>>      [java]     at
>> java.base/java.lang.reflect.Method.invoke(Method.java:568)
>>      [java]     at
>> org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:99)
>>      [java]     at org.apache.tools.ant.Task.perform(Task.java:350)
>>      [java]     at java.base/java.util.Vector.forEach(Vector.java:1359)
>>      [java]     at
>> org.apache.tools.ant.taskdefs.Sequential.execute(Sequential.java:67)
>>      [java]     at
>> net.sf.antcontrib.logic.ForEach.executeSequential(ForEach.java:178)
>>      [java]     at
>> net.sf.antcontrib.logic.ForEach.execute(ForEach.java:254)
>>      [java]     at
>> org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:299)
>>      [java]     at
>> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native
>> Method)
>>      [java]     at
>> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
>>      [java]     at
>> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>>      [java]     at
>> java.base/java.lang.reflect.Method.invoke(Method.java:568)
>>      [java]     at
>> org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:99)
>>      [java]     at org.apache.tools.ant.Task.perform(Task.java:350)
>>      [java]     at org.apache.tools.ant.Target.execute(Target.java:449)
>>      [java]     at
>> org.apache.tools.ant.Target.performTasks(Target.java:470)
>>      [java]     at
>> org.apache.tools.ant.Project.executeSortedTargets(Project.java:1401)
>>      [java]     at
>> org.apache.tools.ant.helper.SingleCheckExecutor.executeTargets(SingleCheckExecutor.java:36)
>>      [java]     at
>> org.apache.tools.ant.Project.executeTargets(Project.java:1264)
>>      [java]     at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:437)
>>      [java]     at
>> org.apache.tools.ant.taskdefs.CallTarget.execute(CallTarget.java:106)
>>      [java]     at
>> org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:299)
>>      [java]     at
>> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native
>> Method)
>>      [java]     at
>> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
>>      [java]     at
>> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>>      [java]     at
>> java.base/java.lang.reflect.Method.invoke(Method.java:568)
>>      [java]     at
>> org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:99)
>>      [java]     at org.apache.tools.ant.Task.perform(Task.java:350)
>>      [java]     at org.apache.tools.ant.Target.execute(Target.java:449)
>>      [java]     at
>> org.apache.tools.ant.Target.performTasks(Target.java:470)
>>      [java]     at
>> org.apache.tools.ant.Project.executeSortedTargets(Project.java:1401)
>>      [java]     at
>> org.apache.tools.ant.Project.executeTarget(Project.java:1374)
>>      [java]     at
>> org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
>>      [java]     at
>> org.apache.tools.ant.Project.executeTargets(Project.java:1264)
>>      [java]     at org.apache.tools.ant.Main.runBuild(Main.java:818)
>>      [java]     at org.apache.tools.ant.Main.startAnt(Main.java:223)
>>      [java]     at
>> org.apache.tools.ant.launch.Launcher.run(Launcher.java:284)
>>      [java]     at
>> org.apache.tools.ant.launch.Launcher.main(Launcher.java:101)
>>
>> On Thu, Feb 17, 2022 at 6:21 PM John Carlson <yottzumm at gmail.com> wrote:
>>
>>> I am trying to push X3D JSON through standardization without JSON
>>> schema.  This has been a goal for some time now.  I realize I need to
>>> collaborate.
>>>
>>> Thanks for the vote.
>>>
>>> I would like to collaborate with you on getting you a better way of
>>> validating X3D JSON, since you want to stay with Java.
>>>
>>> That is what I worked on with ticket #18.
>>>
>>> I will put up a log on my website after cake.
>>>
>>> John
>>>
>>> On Thu, Feb 17, 2022 at 6:03 PM Brutzman, Donald (Don) (CIV) <
>>> brutzman at nps.edu> wrote:
>>>
>>>> You already have my vote John – step 4, otherwise premature.  Not sure
>>>> what you are hoping to accomplish.
>>>>
>>>>
>>>>
>>>> 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 https://
>>>> faculty.nps.edu/brutzman
>>>>
>>>>
>>>>
>>>> *From:* John Carlson <yottzumm at gmail.com>
>>>> *Sent:* Thursday, February 17, 2022 3:44 PM
>>>> *To:* Brutzman, Donald (Don) (CIV) <brutzman at nps.edu>
>>>> *Subject:* Re: X3D JSON Schema: NOT NEEDED ANY MORE! actually yes
>>>> needed by Web3D, YMMV
>>>>
>>>>
>>>>
>>>> NPS WARNING: *external sender* verify before acting.
>>>>
>>>>
>>>>
>>>> Does anyone want me to create XML schema from X3DUOM and Python?
>>>>
>>>>
>>>>
>>>> Yes or No?
>>>>
>>>>
>>>>
>>>> John
>>>>
>>>>
>>>>
>>>> On Thu, Feb 17, 2022 at 5:36 PM Brutzman, Donald (Don) (CIV) <
>>>> brutzman at nps.edu> wrote:
>>>>
>>>> Please see “XML” on the chart
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> 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 https://
>>>> faculty.nps.edu/brutzman
>>>>
>>>>
>>>>
>>>> *From:* John Carlson <yottzumm at gmail.com>
>>>> *Sent:* Thursday, February 17, 2022 3:11 PM
>>>> *To:* Brutzman, Donald (Don) (CIV) <brutzman at nps.edu>
>>>> *Cc:* X3D Graphics member mailing list <x3d at web3d.org>
>>>> *Subject:* Re: X3D JSON Schema: NOT NEEDED ANY MORE! actually yes
>>>> needed by Web3D, YMMV
>>>>
>>>>
>>>>
>>>> NPS WARNING: *external sender* verify before acting.
>>>>
>>>>
>>>>
>>>> I have to laugh, Don.  I don’t see XML schema on the referenced .png
>>>> below.  Maybe my vision is bad?
>>>>
>>>>
>>>>
>>>> On Thu, Feb 17, 2022 at 12:04 PM Brutzman, Donald (Don) (CIV) <
>>>> brutzman at nps.edu> wrote:
>>>>
>>>> Hi John.  This would have been good to bring up Monday when I called
>>>> you for weekly discussion.
>>>>
>>>>
>>>>
>>>> There is nothing wrong with any of the new directions you are thinking
>>>> about… go go go… but the huge variety of possible external applications
>>>> using X3D, such as those you are listing, are each a worthy task for others
>>>> to pursue.  They are not a specific task for Web3D standardization.
>>>>
>>>>
>>>>
>>>> Validation of X3D content in JSON provides independent confidence to
>>>> browser implementers and model authors and end users.
>>>>
>>>>
>>>>
>>>> JSON Schema is informational part of future specification, and also
>>>> crucial because it validates correctness of content.  Since JSON Schema is
>>>> an IETF draft, and Internet Engineering Task Force (IETF) is another
>>>> Standards Development Organization (SDO), Web3D Consortium and
>>>> International Standards Organization can formally reference.
>>>>
>>>>
>>>>
>>>> If anyone has questions about what is planned for standardization,
>>>> please see the following consensus diagram which describes Web3D and ISO
>>>> intentions in complete detail.  Pretty detailed, reflecting X3D
>>>> interoperability.  Questions always welcome.
>>>>
>>>>
>>>>
>>>>    - X3D Graphics Standards Relationships
>>>>    -
>>>>    https://www.web3d.org/specifications/X3dSpecificationRelationships.png
>>>>
>>>>
>>>>
>>>> Our specific shared tasks regarding JSON Schema remain straightforward
>>>> and unchanged:
>>>>
>>>>    1. Keep tuning your version
>>>>    2. Automate testing using Java/Ant invocation for X3D Examples
>>>>    Archives
>>>>    3. Adjust your schema, or X3dToJson example versions to achieve
>>>>    correct validation
>>>>    4. Autogenerate a match to your schema using X3DUOM for strict
>>>>    correctness/repeatability throughout
>>>>    5. Add as informative annex to forthcoming ISO/IEC 19776-5 X3D JSON
>>>>    specification
>>>>
>>>>
>>>>
>>>> These steps follow our proven success with XML and ClassicVRML and
>>>> Turtle encodings, as well as Java and Python programming languages.  They
>>>> are also the same pattern we will follow for X3D in Python, C, C++ and C#.
>>>>
>>>>
>>>>
>>>> May I respectfully suggest that our group doing those specifications
>>>> and implementations well provides the best possible path to encourage all
>>>> of the other dozens of possibilities that you describe.
>>>>
>>>>
>>>>
>>>> Onward we go, have fun with valid X3D!   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 https://
>>>> faculty.nps.edu/brutzman
>>>>
>>>>
>>>>
>>>> *From:* John Carlson <yottzumm at gmail.com>
>>>> *Sent:* Wednesday, February 16, 2022 12:25 AM
>>>> *To:* Brutzman, Donald (Don) (CIV) <brutzman at nps.edu>
>>>> *Cc:* X3D Graphics member mailing list <x3d at web3d.org>
>>>> *Subject:* X3D JSON Schema: NOT NEEDED ANY MORE!
>>>>
>>>>
>>>>
>>>> Suggestion, read only the last paragraph.   That’s my member
>>>> confidential information.   Please don’t share the last paragraph.
>>>>
>>>>
>>>>
>>>> Don,
>>>>
>>>>
>>>>
>>>> I have been working to get typesafe (way beyond schema) JSON into
>>>> various packages. I have developed X3DJSONLD.java which loads a DOM
>>>> document, which can then be loaded and validated using X3DJSAIL.   This
>>>> Java code has not really been accepted into the X3DJSAIL libraries.   I can
>>>> help you write a way to validate JSON with X3DJSAIL.   Which you can plug
>>>> into ant.  Would this help with the acceptance of X3D JSON by the Web3d
>>>> community?  It’s pretty much a very simple task at this stage of maturity.
>>>>   I’m waiting for you to get on board!  Just search some my node examples
>>>> on sourceforge for X3DJSONLD and convert to Java!  Simple!  I probably even
>>>> have a Java example!
>>>>
>>>>
>>>>
>>>> Recent efforts include creating x3dinput.py, the beginnings of a JSON
>>>> loader for x3d.py, and x3djsonld.py which produces typesafe python.
>>>>
>>>>
>>>>
>>>> Well?  We don’t need no stinking JSON schema!   I know I have not been
>>>> advertising the above projects much.   Do you see the value in them, that
>>>> they are the replacement for JSON Schema?
>>>>
>>>>
>>>>
>>>> JSON schema is only a low barrier of protection, for products that
>>>> don’t validate XML.  That is, a website like X3DJSONLD.   While I still try
>>>> to keep the site working, to show the value and feasibility of X3D JSON in
>>>> legacy libraries, it has not been my top priority. I have been only
>>>> updating JSON schema based on changes requested by you!
>>>>
>>>>
>>>>
>>>> I appreciate Roy’s work on X3D JSON Schema for the working draft and to
>>>> debug the primary way (only?) to get as fast as possible from XML to JSON,
>>>> namely: X3dToJson.xslt.   Thank you for making X3D JSON possible, Roy and
>>>> Don!
>>>>
>>>>
>>>>
>>>> I suggest we make JSON validation, with our own pre-existing code
>>>> libraries, a top priority for our JSON efforts.  NOT PRODUCING JSON SCHEMA
>>>> DOCUMENTATION!  I didn’t want to do that!   I will very rapidly delete such
>>>> documentation because it is pretty useless!   Can you believe how much time
>>>> has been wasted going from draft07 to draft2020-12.   Only to produce
>>>> broken Java and slow python validators?   What was the value proposition
>>>> for draft2020-12?
>>>>
>>>>
>>>>
>>>> No, I don’t want to create yet another SAI for JavaScript!   ES6 or
>>>> TypeScript, maybe!  C/C++/C#?   What’s wrong with Coin3D and FreeWRL?
>>>>
>>>>
>>>>
>>>> What’s the likelihood of Babylon Native and  Three.js Native?   I think
>>>> that PlayCanvas is already targeting smartphones.   And Unity and   Unreal
>>>> are targeting the web.
>>>>
>>>>
>>>>
>>>> Where does X3D fit in the above? Can we really afford to compete at a
>>>> low-level library level?  Would a declarative level above all these
>>>> libraries be more successful?  What are PROTOs for and why aren’t we
>>>> standardizing them?
>>>>
>>>>
>>>>
>>>> What if there was something that generated code for all of the popular
>>>> game engines? A 4D compiler of sorts.   What if I could write JSON and
>>>> target all 4D engines?   All animation libraries?  Wouldn’t that be the
>>>> JPEG of 4D?   What is the Open Inventor for today?   If you want to help me
>>>> write JSON Schema or X3DUOM for that, you are welcome!  glTF is a compiler
>>>> target, not a competitor.   If you’re interested, send me a note.
>>>>
>>>>
>>>>
>>>> John
>>>>
>>>>
>>>>
>>>> On Tue, Feb 15, 2022 at 11:59 PM John Carlson <yottzumm at gmail.com>
>>>> wrote:
>>>>
>>>> TL;DR
>>>>
>>>>
>>>>
>>>> Understood that you want to pursue a Java course.   Would running
>>>> JavaScript inside Java be acceptable?   Running against a 4000+ example
>>>> archive is a challenge, and below is my collected wisdom.
>>>>
>>>>
>>>>
>>>> Python solutions for draft2020-12 are as slow as molasses.   I suggest
>>>> we step backwards to draft07 if we pursue a python solution.   Then we can
>>>> use the fastjsonschema package.
>>>>
>>>>
>>>>
>>>> Ajv is a very fast solution and is my go to solution for JSON schema
>>>> validation.   It is my most common approach for validating the sourceforge
>>>> archive and Savage.   Ajv supports most of the draft JSON standards.   Ajv
>>>> solicits funds for support with my encouragement.  I am just a happy
>>>> customer!
>>>>
>>>>
>>>>
>>>> Draft07 has the advantage of providing many, many implementations
>>>> across a variety of languages.   We will probably not see that much
>>>> maturity for many years for any potential upcoming standard.  I thought we
>>>> had a good Java solution with Everit and Draft07, but you were wary of it.
>>>>
>>>>
>>>>
>>>> Thus, my solution for most people would be to allow them to validate
>>>> one JSON document at a time, probably with python or JavaScript at this
>>>> point.   I will continue to support the x3dschema and x3dvalidate projects
>>>> for projects with a lot of files, or even one-offs with x3dvalidate.
>>>>
>>>>
>>>>
>>>> I am working to enhance the JSON schema client/server solution, but
>>>> running Ajv as is done currently on the browser will require running
>>>> JavaScript interpreter on the client.   If running something like CEF
>>>> (headless chrome) is acceptable, we can work on that.   But if you’re
>>>> running Chrome, why not Node.js/V8/Deno?   There are alternatives to npm.
>>>> With Deno, security comes by default, and you know which websites you are
>>>> downloading modules from, pretty much like the web.  Npm is deprecated with
>>>> Deno.   Deno also supports TypeScript natively.   These take many question
>>>> marks out of the equation for running TypeScript and JavaScript.
>>>>
>>>>
>>>>
>>>> There’s commercial solutions with XMLSpy.   If XMLSpy provided
>>>> production validators for a license fee less than their editors, that would
>>>> be greatly appreciated.
>>>>
>>>>
>>>>
>>>> I will monitor the jsonschemafriend Java project until it reaches a
>>>> mature solution for draft2020-12.
>>>>
>>>>
>>>>
>>>> It seems like there’s room for a JSON schema to Java compiler in the
>>>> mix.   I’m not sure why we haven’t seen this?
>>>>
>>>>
>>>>
>>>> John
>>>>
>>>>
>>>>
>>>> On Tue, Feb 15, 2022 at 10:27 PM Brutzman, Donald (Don) (CIV) <
>>>> brutzman at nps.edu> wrote:
>>>>
>>>> John, I can replace the schema in the official repository, but we still
>>>> have a severe difficulty in that there is no build process to check it
>>>> against X3D Examples scenes.  As ever, using Java latest and Ant build
>>>> tasks will be the path to mainstreaming.  We have been blocked by that for
>>>> several years, and JSON Schema is still in draft status.
>>>>
>>>>
>>>>
>>>> Don’t want to sound discouraging, seems like you are close, but these
>>>> are the final hurdles to get past.
>>>>
>>>>
>>>>
>>>> Recent update found on json schema page indicates that they are still
>>>> draft and still progressing.
>>>>
>>>>
>>>>
>>>>    - http://json-schema.org
>>>>    <https://nam10.safelinks.protection.outlook.com/?url=http%3A%2F%2Fjson-schema.org%2F&data=04%7C01%7Cbrutzman%40nps.edu%7Ca120d58cdefc4bf71be408d9f26f6009%7C6d936231a51740ea9199f7578963378e%7C0%7C0%7C637807382560352259%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C2000&sdata=W0k09Zc54brQ4ET571DbNhJ8m5wROu5HY2SNXbvwLXw%3D&reserved=0>
>>>>
>>>>
>>>>
>>>> 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 https://
>>>> faculty.nps.edu/brutzman
>>>>
>>>>
>>>>
>>>> *From:* John Carlson <yottzumm at gmail.com>
>>>> *Sent:* Wednesday, February 9, 2022 10:43 PM
>>>> *To:* Brutzman, Donald (Don) (CIV) <brutzman at nps.edu>; X3D Graphics
>>>> public mailing list <x3d-public at web3d.org>
>>>> *Subject:* Re: [x3d-public] X3D JSON Schema updated for axis++ defaults
>>>>
>>>>
>>>>
>>>> NPS WARNING: *external sender* verify before acting.
>>>>
>>>>
>>>>
>>>> See attached JSON schema to get #comment next to USE (practically
>>>> everywhere in the schema).  Shortened versions of the schema welcome.  I'm
>>>> not quite sure what to do.
>>>>
>>>>
>>>>
>>>> This adds about 3660 lines to the schema.
>>>>
>>>>
>>>>
>>>> If you can suggest a better JSON encoding or X3D JSON schema, that
>>>> would be welcome at this point.
>>>>
>>>>
>>>>
>>>> On Thu, Feb 10, 2022 at 12:29 AM John Carlson <yottzumm at gmail.com>
>>>> wrote:
>>>>
>>>> Please confirm that you want me to accept @USE with sibling -children
>>>> fields, as shown in recently mentioned Trebuchet.json.
>>>>
>>>>
>>>>
>>>> See below snippet of X3D JSON schema, that I will add back in *many*
>>>> places.  The code to be added is embolden.
>>>>
>>>>
>>>>
>>>> Thanks!
>>>>
>>>>
>>>>
>>>> John
>>>>
>>>>
>>>>
>>>> On Sat, Feb 5, 2022 at 9:06 AM Brutzman, Donald (Don) (CIV) <
>>>> brutzman at nps.edu> wrote:
>>>>
>>>>
>>>>
>>>> 2. Saw a documentation problem:  USE nodes can’t indicate anything
>>>> besides the @USE value (except for containerField value for relevant
>>>> parent-child relationship in XML encoding).  So your following guidance
>>>> about comments is not portable outside of JSON.
>>>>
>>>>     "RigidBody": {
>>>>
>>>>       "type": "object",
>>>>
>>>>       "oneOf": [
>>>>
>>>>         {
>>>>
>>>>           "type": "object",
>>>>
>>>>           "properties": {
>>>>
>>>>             "@class": {
>>>>
>>>>               "type": "string"
>>>>
>>>>             },
>>>>
>>>>             "@USE": {
>>>>
>>>>               "type": "string"
>>>>
>>>> *            },*
>>>>
>>>> *            "-children": {*
>>>>
>>>> *              "type": "array",*
>>>>
>>>> *              "minItems": 1,*
>>>>
>>>> *              "items": {*
>>>>
>>>> *                "type": "object",*
>>>>
>>>> *                "properties": {*
>>>>
>>>> *                  "#comment": {*
>>>>
>>>> *                    "type": "string",*
>>>>
>>>> *                    "$comment": "#comment statements are the only
>>>> allowed in -children node when using a USE field"*
>>>>
>>>> *                  }*
>>>>
>>>> *                },*
>>>>
>>>> *                "additionalProperties": false*
>>>>
>>>>               }
>>>>
>>>>             }
>>>>
>>>>          },
>>>>
>>>>           "required": [
>>>>
>>>>             "@USE"
>>>>
>>>>           ],
>>>>
>>>>           "additionalProperties": false
>>>>
>>>>         },
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> x3d-public mailing list
>>>> x3d-public at web3d.org
>>>> http://web3d.org/mailman/listinfo/x3d-public_web3d.org
>>>>
>>>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20220217/99022f23/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: parent_transform.json
Type: application/json
Size: 7032 bytes
Desc: not available
URL: <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20220217/99022f23/attachment-0001.json>


More information about the x3d-public mailing list