Extensible 3D (X3D)
Part 2: Scene access interface (SAI)

7 Conformance and minimum support requirements

--- X3D separator bar ---

cube 7.1 Introduction and topics

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 Topics

Table 7.1 lists the topics for this clause.

Table 7.1 — Topics

7.1.3 Objectives

This clause addresses conformance of X3D browsers that provide a scene authoring interface (SAI).

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 ISO/IEC 19777.

Due to the abstract nature of this specification, it is not possible to specify the conformance tests of individual language bindings of 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 ISO/IEC 19775-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 ISO/IEC 19775-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 services required 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 general requirements that deal with 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 through Table 7.6 define the minimum requirements for a base profile. The first column specifies the item for which conformance is being defined. These refer to the services as defined by this specification. The second column specifies the requirements for a language binding specification of that item. The third column specifies the requirements of a browser implementation of that service. SAI implementations shall throw an SAIError (such as SAI_NOT_SUPPORTED) if a capability is not supported.

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 as separate data types. Table 7.2 through Table 7.6 indicate where this is permitted.

A browser conformant to this level shall support bindings to the X3DNode and X3DMetadataObject abstract representations along with all field types.

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
SAIBoolean Full Support Full Support
SAIBrowserApp Full Support if createBrowser supported.
Not required if only getBrowser supported.
Optional
(based on getBrowser/createBrowser requirements)
SAIBrowserName Primitive Type Full Support
SAIBrowserRef Full Support Full Support
SAIBrowserVersion Primitive type Full Support
SAIComponentDeclaration Primitive type describing at least name and level Full Support
SAIComponent Primitive type Full Support
SAIEncoding Specifies the type of encoding. Full Support
SAIExecutionContext Provides access to a subscene. Full Support
SAIFieldAccess Separate values for the four access types 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
SAIField Full Support Full Support
SAIFieldName Primitive type Full Support
SAIFieldType Separate data types for all types defined in 5 Field type reference of ISO/IEC 19775-1. 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 ISO/IEC 19775-1.
SAIFrameRate Primitive Type Full Support
SAILayerID Primitive Type Full Support if the Layering component is supported.
SAILoadState Primitive Type Full Support
SAIMatrix Primitive Type Full Support
SAINavSpeed Primitive Type Full Support
SAINode Full Support Full Support
SAINodeType Primitive type SAIString representation of the node name
SAIParameterList As required by langauge and service definition. Dependent on language and browser implementation
SAIProfileDeclaration Description of at least name and components used in the profile Full Support
SAIPropertyList Primitive type 5 key-value pairs. Values dependent on language bindings
SAIProtoDeclaration Full Support n/a
SAIRequester Full Support Full Support
SAIRoute Full Support Full Support
SAIScene Full Support Full Support
SAIScript Full Support Full Support
SAIScriptImplementation Full Support Full Support
SAIStream Full Support Full Support
SAIString Full Support Full Support
SAIUnitDeclaration Full Support One entry for each type of unit category.
SAIURL Both URL and URN support As specified in the applicable profile defined in ISO/IEC 19775-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
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 specified in the applicable profile defined in ISO/IEC 19775-1.
createX3DFromStream Provision dependent of language capabilities for creating raw I/O streams Support File Limits  as specified in the applicable profile as defined in ISO/IEC 19775-1.
createX3DFromURL Shall provide Support File Limits  as specified in the applicable profile as defined in ISO/IEC 19775-1.
updateControl SAIActions of start buffering and end buffering N/A Full support
registerBrowserInterest SAIActions of add and remove interest. Events for initialization, shutdown, invalid URLs and connection lost.
getRenderingProperties Shall provide No restrictions No restrictions
getBrowserProperties Shall provide No restrictions No restrictions
setBrowserOptions Shall provide No restrictions No restrictions
changeViewpoint Shall provide No restrictions No restrictions
print/println 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
getUnits SAIUnitDeclarations Full Support
getWorldURL Shall provide Full Support
getNode Full Support Full Support
createNode Full Support Full Support
createProto Full Support Full Support
namedNodeHandling SAIActions of add and delete nodes and imports Full support.
getProtoDeclaration Shall provide Full Support
protoDeclarationHandling SAIActions of add and delete PROTO Full Support
getExternProtoDeclaration Full Support Full Support
externprotoDeclarationHandling SAIActions of add and delete EXTERNPROTO Full support.
getRootNodes Shall provide Full Support
getRoutes Shall provide Full Support
dynamicRouteHandling 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
namedNodeHandling SAIActions of add and delete exports Full support
rootNodeHandling SAIActions of add and delete nodes Full support

Node services

getTypeName 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
dispose Full support Full support
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 specified in the applicable profile defined in ISO/IEC 19775-1.
registerFieldInterest SAIActions of add and remove interest

outputOnly and the output side of inputOutput fields shall be supported

As per supported langauge binding(s).
Route services
dispose Full support Full support
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
createInstance Full support Full Support
getFieldDefintions Full support Full Support
checkLoadState Full support Full Support
requestImmediateLoad Full support Full Support

Configuration services

getComponentName Full support Full Support
getComponentLevel Full support Full Support
getProfileName Full support Full Support
getProfileComponents Full support Full Support
getProviderName Full support Full Support
getUnitCategory Full support Full Support
getUnitConversion Full support Full Support
getUnitName 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

7.3.4 Level 2

A browser conformant to Level 2 shall support everything in Level 1 and shall support all abstract node types derived from X3DNode for the components implemented in the browser. The browser shall also support all additional objects that may be introduced by the implementation.

7.3.5 Level 3

A browser conformant to Level 3 shall support all of the requirements of Level 2 and also support binding specific interfaces for each concrete node representation.

--- X3D separator bar ---