Extensible 3D (X3D)
Part 2: Application programmer interfaces

7 Conformance and minimum support requirements

--- X3D separator bar ---

cube 7.1 Introduction and table of contents

7.1.1 Introduction

This clause defines the minimum required support for language bindings conforming to this part of ISO/IEC 19775.

7.1.2 Table of contents

Table 6.1 is a Table of Contents for this clause.

Table 7.1 — Table Of Contents

7.1.3 Objectives

This clause addresses conformance of X3D browsers that provide an authoring interface.

The primary objectives of the specifications in this clause are:

  1. to promote interoperability by eliminating arbitrary subsets of ISO/IEC 19775;
  2. to promote extensibility within a well-defined environment;
  3. to promote uniformity in the development of conformance tests;
  4. to promote consistent results across X3D browsers;
  5. to facilitate automated test generation.

7.1.4 Scope

Conformance is defined for language bindings to this specification and therefore X3D Browsers and applications that use the facilities provided by the Scene Authoring Interface language-specific bindings as specified in 2.[I19777].

Due to the abstract nature of this specification, it is not possible to specify the conformance tests of an individual language bindings to the specification. Separate Conformance sections shall be provided within each language binding that provide the necessary information to implement language specific binding conformance tests.

A concept of base profile conformance is defined to ensure interoperability of X3D applications and X3D browsers. Base profile conformance is based on a set of limits and minimal requirements. Base profile conformance is intended to provide a functional level of reasonable utility for X3D language bindings while limiting the complexity and resource requirements of X3D browsers. Base profile conformance may not be adequate for all uses of the SAI.

cube 7.2 Conformance

7.2.1 Conformance to this part of ISO/IEC 19775

A X3D browser is only conformant to this part of ISO/IEC 19775 if it also conformant to the current profile as specified in 2.[I19775-1]. In addition, the following conditions shall be met:

  1. Requests of the Browser services shall conform exactly to the behaviour as specified in this part of ISO/IEC 19775.
  2. Where a browser is required to read and parse X3D content, it shall be able to handle any X3D file that conforms to the profile being supported as defined in 2.[I19775-1] or separate specification for such profiles.
  3. Only nodes in the top level world (the file defined by the getWorldURL service) that are named with the DEF construct shall be visible to the getNode browser service request.
  4. There shall be no difference in treatment of events that result from an external service request compared to events generated within the X3D browser environment. That is, externally generated event cascades shall have no favoured treatment.

7.2.2 Language bindings

A language binding to this part of ISO/IEC 19775 is conforming if:

  1. It implements the services defined in this specification including return values, error conditions and asynchronous events.
  2. The services implemented conform to the required functionality for the subject profile.
  3. It provides sections outlining conformance and minimum requirements of implementations of that binding.

cube 7.3 Minimum Requirements

7.3.1 Requirements for implementations

All profiles supporting the authoring component shall support the Level 1 functionality as defined in this section. There are two levels of conformance, that of the language binding and the browser implementation.

A language binding shall at a minimum implement the service requirements outlined in for the profile to be supported. It may also define its own optional set of minimum requirements that are no less than the requirements of this section. A browser implementation shall, in addition to the base support for the subject profile, also support the minimum capabilities defined for the subject profile. In general, the browser requirements are specified as more general requirements with the underlying representation that specific language issues.

Where a browser implements two or more language bindings with different levels of minimum requirements, the browser shall support the minimum requirements for each language separately. Therefore, if one language has higher requirements, the lower requirements of the other shall not be used.

7.3.2 Supporting internal and external interactions

Although external interactions use a superset of the services defined for internal interactions, language bindings to the abstract specification are not required to implement both. They may choose one or the other or both. (it is strongly recommended that a binding support both)

A conformant browser implementation is not required to provide both internal and external implementations of a given language binding. It shall be possible for a browser to support internal interactions only with language A and external interactions only with language B. In addition, the browser may choose to support only internal interactions or only external interactions. There is no requirement to support both internal and external interactions.

7.3.3 Level 1

Table 7.2 defines the minimum requirements for a base profile. The first column defines the item for which conformance is being defined. These refer to the services as defined by this specification. The second column defines the requirements for a language binding specification of that item. The third column defines the requirements of a browser implementation of that service.

For all these requirements it shall be assumed that the language binding shall provide complete implementation of all the parameters required for the individual services. Language bindings of data types may be implemented as primitive types in the target language rather than separate data types. Table 7.2 indicates where this may be permitted.

A browser conformant to this level shall support bindings to abstract node type representations.

7.3.4 Level 2

A browser conformant to this level shall support all of the requirements of Level 1 and also support bindings to be able to directly represent each concrete node representation.

Table 7.2 — Specifications for SAI Data type implementations

Item Binding Support Minimum Browser Support
SAIAction Full support as required by the individual service request As defined by the language
SAIBrowserApp Full Support if createBrowser supported.
Not required if only getBrowser supported.
Optional
(based on getBrowser/createBrowser requirements)
SAIBrowserName Primitive Type n/a
SAIBrowserRef Full Support Full Support
SAIBrowserVersion Primitive type n/a
SAIComponentDeclaration Primitive type describing at least name and level n/a
SAIComponentID Primitive type n/a
SAIFieldAccess Separate data types for the four types defined by ISO/IEC 19775-1. Full Support
SAIFieldDeclaration Provide information on access type, data type and name Full Support
SAIFieldID Full Support Full Support
SAIFieldName Primitive type Full Support
SAIFieldType Separate data types for all types defined in ISO/IEC 19775-1, 5 Field and Event Reference Full Support
SAIFieldValue Primitive type as appropriate to the given field.
Where field is an SF/MFNode shall be SAINodeID
Number of values for setting and getting as defined in the applicable profile as defined in 2.[I19775-1]).
SAIFrameRate Primitive Type n/a
SAINavSpeed Primitive Type n/a
SAINodeID Full Support Full Support
SAINodeType Primitive type SAIString representation of the node name
SAIProfileDeclaration Description of at least name and components used in the profile Full Support
SAIParameterList As required by langauge and service definition. Dependent on language and browser implementation
SAIPropertyList Primitive type 5 key value pairs. Values dependent on language bindings
SAIProtoDeclaration Full Support n/a
SAIRequesterID Full Support n/a
SAIRoute Full Support n/a
SAIString Full Support n/a
SAIScript Full Support n/a
SAIScriptImplementation Full Support n/a
SAIScene Full Support n/a
SAIURL Both URL and URN support As defined in the applicable profile as defined in 2.[I19775-1]) for all url fields
SAIError Separate types for each error condition that may occur as defined in 5.3 Error Types. Generate error conditions as appropriate.

Table 7.3 — Specifications for SAI Browser implementations

Item Binding Support Minimum Internal Support Minimum External Support
Establishing a Connection
getBrowser, createBrowser At least one of getBrowser or createBrowser services shall be provided. N/A At least one method of connection with a browser shall be provided. Unsupported connection methods shall throw an error. 
Ignore SAIParameterList
Browser Services
Browser getName Shall provide Return NULL if not supported Return NULL if not supported
getVersion Shall provide Return NULL if not supported. Return NULL if not supported.
getCurrentSpeed Shall provide Return 0.0 if not supported Return 0.0 if not supported
getCurrentFrameRate Shall provide Return 0.0 if not supported Return 0.0 if not supported
getSupportedProfiles Shall provide Full Support Full Support
getProfile Shall provide Full Support Full Support
getSupportedComponents Shall provide Full Support Full Support
getExecutionContext Shall provide Full Support Full Support
createScene Shall provide Support creating scenes for the same profiles and components as used by data encodings.
replaceWorld Full support Full support Full support
importDocument Shall provide Return NULL if not supported Return NULL if not supported
loadURL Shall provide Full support. Ignore SAIPropertyList parameter values. Full support. Ignore SAIPropertyList parameter values.
setDescription Shall provide No restriction No restriction
createX3DFromString Shall provide Support File Limits  as defined in the applicable profile as defined in 2.[I19775-1]).
createX3DFromStream Provision dependent of language capabilities for creating raw I/O streams Support File Limits  as defined in the applicable profile as defined in 2.[I19775-1]).
createX3DFromURL Shall provide Support File Limits  as defined in the applicable profile as defined in 2.[I19775-1]).
Update Control SAIActions of start buffering and end buffering N/A Full support
Register Browser Interest SAIActions of add and remove interest. Events for initialization, shutdown, invalid URLs and connection lost.
Share world Shall provide N/A No restrictions
setSharedViewpoint Shall provide N/A No restrictions
setSharedNavigation Shall provide N/A No restrictions
getRenderingProperties Shall provide No restrictions No restrictions
getBrowserProperties Shall provide No restrictions No restrictions
changeViewpoint Shall provide No restrictions No restrictions
Print Shall provide No restrictions No restrictions
dispose Shall provide No restrictions No restrictions

Table 7.4 — Specifications for SAI General Services

Item Binding Support Minimum Browser Support
Execution Context Services
getSpecificationVersion Full Support Full Support
getEncoding Shall provide Full Support
getProfile SAIProfileDeclaration Full support.
getComponents SAIComponentDeclarations Full Support
getWorldURL Shall provide Full Support
getNode Full Support Full Support
createNode Full Support Full Support
createProto Full Support Full Support
Named Node Handling SAIActions of add and delete nodes and imports Full support.
getProtoDeclaration Shall provide Full Support
PROTO declaration Handling SAIActions of add and delete PROTO Full Support
getExternProtoDeclaration Full Support Full Support
EXTERNPROTO Declaration Handling SAIActions of add and delete EXTERNPROTO Full support.
getRootNodes Shall provide Full Support
getRoutes Shall provide Full Support
Dynamic Route Handling SAIActions of add and delete route Full support.
dispose Shall provide No restrictions
Scene Services
getMetaData Shall provide Full Support
setMetaData Shall provide Full Support
Named Node Handling SAIActions of add and delete exports Full support.
Root Node Handling SAIActions of add and delete nodes Full support.
Node Services
getName Shall provide Full support
getType Shall provide no restrictions
getField Full Support All fields shall be accesible dependent on access rules for internal and external interactions and node lifecycle.
getFieldDefinitions Full Support Full Support
dispose Shall provide No restrictions
Field Services
getAccessType Shall provide Full support
getType see SAIFieldType Full support
getName Full Support Field name without set_ or _changed modifiers
getValue get1Value not required Full Support
setValue set1Value not required Full Support. Where fields are MF fields, minimum number of values to be supported  as defined in the applicable profile as defined in 2.[I19775-1]).
Register Field Interest SAIActions of add and remove interest

eventOut and the output side of exposedFields shall be supported

As per supported langauge binding(s).
Route Services
getSourceNode Full support Full Support
getSourceField Full support Full Support
getDestinationNode Full support Full Support
getDestinationField Full support Full Support
Prototype Services
isExternProto Full support Full Support
Create Instance Full support Full Support
getFieldDefintions Full support Full Support
Check Load State Full support Full Support
Request Immediate Load Full support Full Support

Table 7.5 — Specifications for SAI Script Content Interaction

Item Binding Support Minimum Browser Support
setBrowser Full support Full Support
setFields Full support Full Support
initialize Full support Full Support
prepareEvents Full support Full Support
eventsProcessed Full support Full Support
shutdown Full support Full Support

Table 7.6 — Specifications for SAI Utility services

Item Binding Support Minimum Browser Support
Matrix At least 3x3 and 4x4 sizes Full Support
--- X3D separator bar ---