ISO 10303-21:2016(E)

10 Reference section

10.1 Reference section structure

The syntax of the reference section is prescribed in Table 3. The reference section is optional. If a reference section is included in the exchange structure then it shall be given after the header section and any anchor section and before any data section or signature section. The section shall begin with the special token "REFERENCE;" and shall terminate with the special token "ENDSEC;".

Each entry in the reference section shall associate an LHS_OCCURRENCE_NAME with a RESOURCE. If the occurrence name is an ENTITY_INSTANCE_NAME then the resource shall identify an entity. If the occurrence name is a VALUE_INSTANCE_NAME then the resource shall identify a value.

Each occurrence name shall have one association only and it shall not be defined in the data sections of the exchange structure.

EXAMPLE

Reference section structure Comment
REFERENCE;
#10 = <http://www.giant.com/product.stp#shape>;/* Reference to a URI with fragment identifier see 10.2 */
#20 = <building_698.ifc>;/* Reference to a URI without fragment identifier see 10.2.1*/
#30 = <#10b9903b-fe1a-41dd-91e2-dd8bf06f262d>;/* Reference to a fragment identifier defined by a UUID see 10.2.2 */
#40 = <#wheel>;/* Reference to a fragment identifier defined in same file see 10.2.3 */
#50 = <http://www.giant.com/product.jt#shape>;/* Reference to a file in another format see 10.2.4 */
#60 = <http://www.giant.com/product.stp#entity>;/* Reference to an entity instance see 10.2.5 */
@70 = <http://www.giant.com/product.stp#value>;/* Reference to a value see 10.2.6 */
#80 = <http://www.giant.com/product.stp#100>;/* Reference using edition 1 or edition 2 entity instance name see 10.2.7 */
ENDSEC;

10.2 Reference to a URI

The reference shall resolve to a value or entity instance in an exchange structure defined by this part of ISO 10303, to a compressed archive that meets the requirements defined in annex A.4, or to a directory that has the form of an uncompressed archive as defined in annex A.5.

The resource delivered shall contain an anchor with the same name as the URI_FRAGMENT_IDENTIFIER of the URI. The ANCHOR_ITEM identified by this anchor shall be the result of the reference. The identified ANCHOR_ITEM shall meet the requirements for an entity or value instance belonging to the file_schema of this exchange structure.

If the resource resolves to an anchor defined by another URI then the process shall be repeated.

If the resolution of the URI does not meet these requirements, then the result of the reference shall be the null_value ("$").

EXAMPLE

Reference Comment
#1234 = <http://www.giant.com/part_mill_assembly_246.stp#tool_item>;/* Reference to a tool item in a tool assembly */
#1235 = <building_698.ifc#7c9e6679-7425-40de-944b-e07fc1f90ae7>;/* Reference to product with the UUID shown (see annex G)*/
@1236 = <http://www.giant.com/data.stp#value>;/* Reference to a value defined in another exchange structure */

NOTE      Circular references can be constructed by referencing a value in an external exchange structure that references back to the current reference in the current exchange structure. These references are invalid and must be resolved to the NULL value by the processing system.

10.2.1 reference to a URI without a fragment identifier

If the resource does not include a URI_FRAGMENT_IDENTIFIER then the reference shall resolve to the null_value ("$").

EXAMPLE

Reference Comment
#10 = <http://www.tool_company.com/shape.stp>;/* result is the null_value ("$") */

10.2.2 reference to a URI with a fragment identifier defined by a UUID

If a the resource defined by a URI is anchored by a Universally Unique Identifier (UUID) (see annex G) then the identifier shall be resolved to the entity or value anchored by that unique identifier.

If the resource has more than a URI_FRAGMENT_IDENTIFIER then the exchange structure identified by the URI must have an anchor with that UUID.

If the resource is defined by a URI_FRAGMENT_IDENTIFIER alone, then the processing system shall be responsible for finding a service that can identify the exchange structure containing the UUID.

NOTE      For example it may go to a registry service that might be a PLM or similar system to request the exchange structure.

EXAMPLE

Reference Comment
#123 = <http://www.step.com#97c6e1f0-3544-11e5-a2cb-0800200c9a66>;/* resolves to an entity anchored by the UUID which must be in the file returned by the server at the URI */
#123 = <#97c6e1f0-3544-11e5-a2cb-0800200c9a66>;/* resolves to an entity anchored by the UUID in an exchange structure found by a registry service */
@abc = <cutter.stp#825cd420-3547-11e5-a2cb-0800200c9a66>;/* resolves to a value anchored by the UUID which must be in the file identified by the URI */

10.2.3 reference to a URI that is only a fragment identifier and is not a UUID

If the resource is defined by a URI_FRAGMENT_IDENTIFIER alone, and that fragment identifier is not a UUID, then the identifier shall be resolved to an anchor with the same name in the current exchange structure.

EXAMPLE

Reference Comment
#123 = <#wheel>;/* resolves to entity defined by local anchor */
@124 = <#size>;/* resolves to value defined by local anchor */

10.2.4 reference to an exchange structure in another format

If the resource identifies a file in another format then the server identified by the URI shall convert the file to the requirements of this exchange structure.

EXAMPLE

Reference Comment
#100 = <http://www.design_archive.org/wheel.3dxml#shape>;/* Reference to a file in the 3DXML format */
#200 = <http:///www.design_archive.org/axle.jt#shape>;/* Reference to a file in the JT format */
@300 = <http:///www.design_archive.org/spreadsheet.xls#A6>;/* Reference to a spreadsheet in the XLS format */

10.2.5 reference to a URI fragment that resolves to an entity instance

If the URI fragment identifier resolves to an entity instance then the LHS_OCCURRENCE_NAME shall be an entity instance name.

EXAMPLE

Reference Comment
#100 = <http://www.design_archive.org/hub.stp#tip>;/* Reference to an entity instance defined in the anchor section of hub.stp */
#200 = <http:///www.design_archive.org/axle.jt#top>;/* Reference to an entity instance defined in the anchor section of a STEP translation of axle.jt */

10.2.6 reference to a URI fragment that resolves to a value

If the URI fragment identifier resolves to a value then the LHS_OCCURRENCE_NAME shall be a value instance name.

EXAMPLE

Reference Comment
@100 = <http://www.design_archive.org/hub.stp#diameter>;/* Reference to a value defined in the anchor section of hub.stp */
@200 = <http:///www.design_archive.org/axle.jt#length>;/* Reference to a value defined in the anchor section of a STEP translation of axle.jt */

NOTE       The value may be a simple type or a list structure.

10.2.7 reference using a URI fragment that is an entity instance name

If the URI fragment identifier is an unsigned number that meets the requirements of an entity instance name, then it shall be resolved to the entity instance with that number in the referenced exchange structure and the null_value ("$") otherwise.

EXAMPLE

Reference Comment
#30 = <http:///www.design_archive.org/legacy.stp#300>;/* Reference to entity instance #300 in legacy.stp */

NOTE       References to instance names are allowed so that edition 3 exchange structures can reference edition 2 data.

© ISO 2016 — All rights reserved