[x3d-public] Updates to X3D Schema, X3DUOM: refactored names of enumeration lists applied to all versions

Brutzman, Donald (Don) (CIV) brutzman at nps.edu
Tue Dec 11 10:54:50 PST 2018

Summary: all X3D simpleType naming conventions from version 4.0 have been similarly applied to X3D versions 3.0-3.3.

X3D Schema update activity:

11 DEC 2018, brutzman
- Applied all relevant refactor/renaming conventions to X3D versions 3.0-3.3 for
   full consistency throughout X3D Unified Object Model (X3DUOM) and upcoming
   X3D Semantic Web efforts.  All identified best practices are now implemented.

21 OCT 2018, brutzman
- (v4.0) Refactor renaming of simpleType naming conventions in order to support
   X3DUOM design patterns: enumeration Choices (strict sets of string tokens) and
   optional Values (allowed, extendable string tokens).
   TODO apply to v3.0-v3.3 following review.
- Layout node, align field: singleton "CENTER" is not allowed, since paired values
   must be used.  Similar singleton fixes checked/applied for other 2-string types.
   TODO consider special regex for MFString[2] arrays.

a. X3D Specification Relationships (roadmap diagram) for planned specification work.


b. X3D XML Schema selected references:

	X3D Regular Expressions (regexes)

	X3D Scene Authoring Hints: containerField
	Strict validation is now performed on all .x3d scenes for non-default containerField values.

	Change logs

c. X3D Unified Object Model (X3DUOM)


Having a fully stabilized and coherent X3DUOM sets us up nicely for additional nodes and higher-level constructs during next-year work:

	X3D Version 4

	X3D Semantic Web Working Group

These updates are checked with latest version of Java jdk1.8.0_192 and documentation generated using recent 2019 release of XMLSpy.  Looking good.  Schema/DTD bugfixes and documentation are now published and deployed, references follow.  No changes to existing X3D scene content are needed.

Thanks for all ongoing test reports and suggestions.  Have fun with high-quality X3D!  8)

X3D Schema assets can be found on the X3D Specifications: XML Schema and DOCTYPE Validation page.


Full documentation updates have been autogenerated for the XML Schema and DOCTYPE, available for X3D versions 3.0 through 3.3 plus experimental 4.0.  Recommended X3D version is ISO-approved 3.3.


Please note that X3D version 4.0 Schema and DTD are experimental and support specification development.


Corresponding updated assets: lists of all X3D elements and attributes, with default values, autogenerated from X3D XML Schema.



Additional updated assets: and X3D Unified Object Model (autogenerated from X3D XML Schema) and X3D JSON Schema (manual) by Roy Walmsley.

       X3D Unified Object Model (X3DUOM)

       http://www.web3d.org/specifications/X3dUnifiedObjectModel-4.0.xml  (experimental)

       http://www.web3d.org/specifications/x3d-3.3-JSONSchema.json (experimental)

X3D Schematron Validation and Quality Assurance (QA) rules are also regularly updated in concert with these changes.


All versions of these assets are maintained under open-source version control at


X3D Tooltips provide summary descriptions and authoring hints for each X3D node (XML element) and field (XML attribute) found in the X3D Architecture Specification.  They are updated to match.


Changes are tested through validation regression testing of 3922+ open-source X3D scenes.

        X3D Resources: Examples

        X3D Resources: Quality Assurance (QA)

Corresponding updates are also regularly released in the following public assets:

        X3D Tooltips

        X3D Validator

        X3D-Edit Authoring Tool

        X3DJSAIL: X3D Java Scene Access Interface Library

You can comment on the X3D Specifications in multiple ways.  All feedback gets considered.

        mailto:x3d-public at web3d.org

For Web3D members, all proposed X3D and HAnim changes are typically examined and resolved in the Mantis issue tracker.


Want to help support this work building the future Web?  The value of membership in the Web3D Consortium continues to steadily grow.  Your engagement can definitely help, there are lots of cool challenges to pursue.  Please consider joining as a company, institution or individual professional to participate.



Feedback is always welcome.  Thanks for all test reports and idea contributions.  Have fun with X3D!  8)


On 10/22/2018 9:47 AM, Brutzman, Donald (Don) (CIV) wrote:
> Summary: improved support for lists of required/optional enumeration values in X3D Schema, X3DUOM, etc.
> ------------------------------------------------------------------------------------
> 1. Background.
> Wikipedia: Enumerated type
> https://en.wikipedia.org/wiki/Enumerated_type
> "In computer programming, an enumerated type (also called enumeration, enum, or factor in the R programming language, and a categorical variable in statistics) is a data type consisting of a set of named values called elements, members, enumeral, or enumerators of the type."
> A long-standing challenge in X3DJSAIL implementation of X3D Unified Object Model (X3DUOM) has been enumeration lists of string tokens.  Sometimes values are strictly limited, other times they are extensible.  Since the X3D Architecture specification strives for complete clarity whenever defining them, it will be good to handle these as precisely as possible when validating or producing X3D content..
> For an example node, here is the FontStyle specification excerpted:
> ===================================================================
> http://www.web3d.org/documents/specifications/19775-1/V3.3/Part01/components/text.html#FontStyle
> 15.4.1 FontStyle
> FontStyle : X3DFontStyleNode {
>     MFString []       family      "SERIF"
>     SFString []       language    ""
>     MFString []       justify     "BEGIN" ["BEGIN","END","FIRST","MIDDLE",""]
>     SFString []       style       "PLAIN" ["PLAIN"|"BOLD"|"ITALIC"|"BOLDITALIC"|""]
>    [...snip...]
> }
> ===================================================================
> When you read the specification prose, it quickly becomes clear that 'family' and 'language' can be extended by end users to many font families, while 'justify' and 'style' are strictly restricted in what values are allowed.
> This was hard to keep track of in X3DUOM.  It now has been addressed and support has been provided in two ways:
> a. (v4.0) Refactor renaming of simpleType naming conventions in order to support X3DUOM design patterns:
>       enumeration Choices (strict sets of string tokens) and
>       optional Values (allowed, extendable string tokens).

Summary of simpleType naming conventions: enumeration Choices (strict sets of string tokens) and optional Values (allowed, extendable string tokens).

- fontFamilyValues are allowed enumeration values for FontStyle/ScreenFontStyle node family attribute. Unbounded, additional values are possible.
- fontStyleChoices are strictly allowed enumeration values for FontStyle/ScreenFontStyle node style attribute.


> ------------------------------------------------------------------------------------
> 2. Applied a naming convention.  Primary change was simply regularizing the names of existing xs:simpleType definitions in the X3D XML Schema.  These are primarily internal so they might not be used by anything other than X3DJSAIL and X3DJSONLD.  These lists are not formally defined as such in the X3D Architecture, rather they just reflect the values provided there.
> Source schema and derived X3DUOM:
> http://www.web3d.org/specifications/x3d-4.0.xsd
> http://www.web3d.org/specifications/X3DUnifiedObjectModel-4.0.xml
> http://www.web3d.org/specifications/X3DUnifiedObjectModel-4.0.json
> Examples from X3D 4.0 XML Schema documentation:
> FontStyle        http://www.web3d.org/specifications/X3dSchemaDocumentation4.0/x3d-4.0_FontStyle.html
> fontFamilyValues http://www.web3d.org/specifications/X3dSchemaDocumentation4.0/x3d-4.0_fontFamilyValues.html
> justifyChoices   http://www.web3d.org/specifications/X3dSchemaDocumentation4.0/x3d-4.0_justifyChoices.html
> fontStyleChoices http://www.web3d.org/specifications/X3dSchemaDocumentation4.0/x3d-4.0_fontStyleChoices.html
> Examples from X3DJSAIL documentation:
> http://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/Text/FontStyleObject.html
> http://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/Text/FontStyleObject.html#field.summary
> Current X3DJSAIL work includes stricter checking or warnings (as appropriate) when setting/adding/validating new values.  The improved naming conventions and X3DUOM additionalEnumerationValuesAllowed attributes permit such work to progress further.
> ------------------------------------------------------------------------------------
> 3. These have only been applied to X3D v4.0 schema/X3DUOM in order to allow inspection and comment.
> TODO will apply to v3.0-v3.3 schemas following review.  This has no direct impact on any existing X3D scene content.

Update now complete.

All feedback welcome.  Have fun with X3D Unified Object Model (X3DUOM)!   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

More information about the x3d-public mailing list