Extensible 3D (X3D) encodings
Part 1: Extensible Markup Language (XML) encoding

Annex D

(informative)

X3D Unified Object Model (X3DUOM)

Editors note: further information available at
X3D Unified Object Model (X3DUOM)

(Issue: plan to move into X3D Architecture 19775-1, see Mantis 1342)

--- X3D separator bar ---

cube D.1 Topics and introduction

D.1.1 Topics

This annex provides a detailed description of XML representations corresponding to the node, field, and statement definitions provided by the X3D Abstract Architecture [I19775-1]. Table D.1 lists the topics in this clause:

Table D.1 — Topics in this clause

D.1 Table of contents and introduction
  D.1.1 Topics
  D.1.2 Introduction
D.2 X3D Unified Object Model (X3DUOM)
  D.2.1 X3dUnifiedObjectModel-3.0.xml
  D.2.2 X3dUnifiedObjectModel-3.1.xml
  D.2.3 X3dUnifiedObjectModel-3.2.xml
  D.2.4 X3dUnifiedObjectModel-3.3.xml
  D.2.5 X3dUnifiedObjectModel-4.0.xml

D.1.2 Introduction

The X3D Unified Object Model (X3DUOM) provides a strongly typed representation of all node, field, and statement definitions provided by the X3D architecture. Abstract type and interface relationships are included for each node. Strongly typed support for X3D statements is further added. Such capabilities are both machine-readable and human-readable, providing complete expressive power to thoroughly describe the object model defined by the X3D Architecture [I19775-1].

This capability is useful for ensuring that correct correspondences are achieved by various file-encoding schemas and programming-language bindings, especially when their respective object models are similarly (but not identically) definable. The X3DUOM can also be used to autogenerate application program interfaces (APIs), as well as other software and data tools, with an expectation that exact compliance with X3D Architecture definitions is produced.

Nothing in this annex supersedes information in the X3D Architecture [I19775-1] which remains the authoritative and normative reference regarding X3D functional characteristics.

Current versions of X3D Unified Object Model (X3DUOM) files are maintained at [X3DUOM].

Additional capabilities for validation of field values are provided by XML Document Type Definition (DTD), XML Schema, XML Schematron, and X3D Regular Expressions (regexes) [X3DREGEX].

NOTE  Additional information about X3D XML scene structure, allowed field values, data type restrictions, authoring hints, warnings, and errors can be found in X3D Tooltips [X3DTOOLTIPS]. Validation assets are maintained in human-readable and machine-readable forms, in version control, and with corresponding documentation at [X3DVALIDATION].

cube D.2 X3D Unified Object Model (X3DUOM)

Separate X3D Unified Object Model (X3DUOM) documents are provided defining the respective architectures corresponding to X3D versions 3.0, 3.1, 3.2, 3.3, and 4.0.

These X3DUOM files are produced using object-oriented information available in each of the X3D XML Schema files, which are annotated to further information about accessType, along with node field and statement specification links. Explanatory descriptions from [X3DTOOLTIPS] and type-specific X3D Regular Expressions (regexes) [X3DREGEX] are also included.

X3DUOM files have been used to produce strongly type file-encoding schemas and application programming interface (API) libraries, including the following:

Each X3DUOM file can itself be checked using X3dUnifiedObjectModel.xsd which provides XML Schema validation [XML_SCHEMA].

The following example excerpt illustrates the expressive power of the X3DUOM.

EXAMPLE

<ConcreteNode name="WorldInfo">
    <InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/core.html#WorldInfo"
                         appinfo="WorldInfo contains a title and simple persistent metadata information about an X3D scene. This node is strictly for documentation purposes and has no effect on the visual appearance or behaviour of the world.">
       <componentInfo name="Core" level="1"/>
       <Inheritance baseType="X3DInfoNode"/>
       <field name="info"
              type="MFString"
              accessType="inputOutput"
              description="Additional information about this model."/>
       <field name="IS"
              type="SFNode"
              accessType="inputOutput"
              default="NULL"
              acceptableNodeTypes="IS"
              inheritedFrom="X3DNode"/>
       <field name="metadata"
              type="SFNode"
              accessType="inputOutput"
              default="NULL"
              acceptableNodeTypes="X3DMetadataObject"
              inheritedFrom="X3DNode"
              description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node."/>
       <field name="title"
              type="SFString"
              accessType="inputOutput"
              description="title of this world, placed in window title."/>
       <field name="DEF"
              type="SFString"
              accessType="inputOutput"
              inheritedFrom="X3DNode"
              baseType="xs:ID"
              description="DEF defines a unique ID name for this node, referenceable by other nodes."/>
       <field name="USE"
              type="SFString"
              accessType="inputOutput"
              inheritedFrom="X3DNode"
              baseType="xs:IDREF"
              description="USE means reuse an already DEF-ed node ID, excluding all child nodes and all other attributes (except for containerField, which can have a different value)."/>
       <field name="class"
              type="SFString"
              accessType="inputOutput"
              inheritedFrom="X3DNode"
              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."/>
       <field name="id"
              type="SFString"
              accessType="inputOutput"
              inheritedFrom="X3DNode"
              baseType="xs:NMTOKEN"
              description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context."/>
       <field name="style"
              type="SFString"
              accessType="inputOutput"
              inheritedFrom="X3DNode"
              description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets."/>
       <containerField default="children" type="xs:NMTOKEN"/>
       <ContentModel>
          <GroupContentModel name="ChildContentModelCore" minOccurs="0"/>
       </ContentModel>
    </InterfaceDefinition>
</ConcreteNode>

Editors note: adding further explanations or excerpts from X3DUOM XML source seems like unnecessary detail

D.2.1 X3dUnifiedObjectModel-3.0.xml

X3dUnifiedObjectModel-3.0.xml is the XML file that corresponds to the X3D version 3.0 architecture.

<!-- for readability, source document not included -->

D.2.2 X3dUnifiedObjectModel-3.1.xml

X3dUnifiedObjectModel-3.1.xml is the XML file that corresponds to the X3D version 3.1 architecture.

<!-- for readability, source document not included -->

D.2.3 X3dUnifiedObjectModel-3.2.xml

X3dUnifiedObjectModel-3.2.xml is the XML file that corresponds to the X3D version 3.2 architecture.

<!-- for readability, source document not included -->

D.2.4 X3dUnifiedObjectModel-3.3.xml

X3dUnifiedObjectModel-3.3.xml is the XML file that corresponds to the X3D version 3.3 architecture.

<!-- for readability, source document not included -->

D.2.5 X3dUnifiedObjectModel-4.0.xml

X3dUnifiedObjectModel-4.0.xml is the XML file that corresponds to the X3D version 4.0 architecture.

<!-- for readability, source document not included -->

--- X3D separator bar ---