<?xml version="1.0" encoding="UTF-8"?>
<metanorma xmlns="https://www.metanorma.org/ns/standoc" type="semantic" version="3.4.0" schema-version="v2.1.5" flavor="iso">
<bibdata type="standard">
<title language="en" type="main">EXPRESS Language Foundation — EXPRESS Query Language Specification</title>

<title language="en" type="title-intro">EXPRESS Language Foundation</title>

<title language="en" type="title-main">EXPRESS Query Language Specification</title>

<title language="en" type="title-part-prefix">Part 81</title>

<title language="ru" type="title-part-prefix">Часть 81</title>

<title language="fr" type="main">Fondation pour le langage EXPRESS — Spécification du langage de requête EXPRESS</title>

<title language="fr" type="title-intro">Fondation pour le langage EXPRESS</title>

<title language="fr" type="title-main">Spécification du langage de requête EXPRESS</title>

<title language="fr" type="title-part-prefix">Partie 81</title>
<docidentifier type="ISO" primary="true">ISO/PWI 10303-81:2024</docidentifier><docidentifier type="iso-reference">ISO/PWI 10303-81:2024(E)</docidentifier><docidentifier type="URN">urn:iso:std:iso:10303:-81:stage-00.00:en</docidentifier><docidentifier type="iso-undated">ISO/PWI 10303-81</docidentifier><docidentifier type="iso-with-lang">ISO/PWI 10303-81:2024(en)</docidentifier><docnumber>10303</docnumber><contributor><role type="author"/><organization>
<name>International Organization for Standardization</name>
<abbreviation>ISO</abbreviation></organization></contributor><contributor><role type="author"><description>committee</description></role><organization>
<name>International Organization for Standardization</name>
<subdivision type="Technical committee" subtype="TC">
<name>Industrial automation systems and integration</name>
<identifier>TC 184</identifier><identifier type="full">TC 184/SC 4/WG 12</identifier></subdivision><subdivision type="Subcommittee" subtype="SC">
<name>Industrial data</name>
<identifier>SC 4</identifier></subdivision><subdivision type="Workgroup" subtype="WG">
<name>STEP product modelling and resources</name>
<identifier>WG 12</identifier></subdivision><abbreviation>ISO</abbreviation></organization></contributor><contributor><role type="authorizer"><description>Agency</description></role><organization>
<name>International Organization for Standardization</name>
<abbreviation>ISO</abbreviation></organization></contributor><contributor><role type="author"><description>secretariat</description></role><organization>
<name>International Organization for Standardization</name>
<subdivision type="Secretariat">
<name>ANSI</name>
</subdivision><abbreviation>ISO</abbreviation></organization></contributor><contributor><role type="publisher"/><organization>
<name>International Organization for Standardization</name>
<abbreviation>ISO</abbreviation></organization></contributor><contributor><role type="authorizer"><description>committee</description></role><organization>
<name>International Organization for Standardization</name>
<subdivision type="Technical committee" subtype="TC">
<name>Industrial automation systems and integration</name>
<identifier>TC 184</identifier><identifier type="full">TC 184/SC 4/WG 12</identifier></subdivision><subdivision type="Subcommittee" subtype="SC">
<name>Industrial data</name>
<identifier>SC 4</identifier></subdivision><subdivision type="Workgroup" subtype="WG">
<name>STEP product modelling and resources</name>
<identifier>WG 12</identifier></subdivision><abbreviation>ISO</abbreviation></organization></contributor><edition>1</edition><version><revision-date>2024-10-10</revision-date></version><language>en</language><script>Latn</script><status><stage abbreviation="PWI">00</stage><substage>00</substage></status><copyright><from>2024</from><owner><organization>
<name>International Organization for Standardization</name>
<abbreviation>ISO</abbreviation></organization></owner></copyright><ext><doctype>international-standard</doctype><flavor>iso</flavor><structuredidentifier><project-number part="81">ISO 10303</project-number></structuredidentifier><stagename abbreviation="PWI">Preliminary Work Item International Standard</stagename></ext></bibdata><metanorma-extension><semantic-metadata><stage-published>false</stage-published></semantic-metadata>
<presentation-metadata><document-scheme>2024</document-scheme><toc-heading-levels>2</toc-heading-levels><html-toc-heading-levels>2</html-toc-heading-levels><doc-toc-heading-levels>3</doc-toc-heading-levels><pdf-toc-heading-levels>3</pdf-toc-heading-levels></presentation-metadata></metanorma-extension>
<boilerplate><copyright-statement>

<clause id="_1a879c4d-3214-3e83-b2f3-d96f05b0753e" anchor="boilerplate-copyright-default" inline-header="false" obligation="normative"><p id="_2ecd7029-4f09-627d-b3c1-55ca4efcfd7b" anchor="boilerplate-year">© <span class="std_publisher">ISO </span><span class="date">2024</span></p>

<p id="_dcd0efd0-9c2b-bcfd-6dcd-ce36b8143916" anchor="boilerplate-message">All rights reserved. Unless otherwise specified, or required in the context of its implementation, no part of this publication may be reproduced or utilized otherwise in any form or by any means, electronic or mechanical, including photocopying, or posting on the internet or an intranet, without prior written permission. Permission can be requested from either ISO at the address below or ISO’s member body in the country of the requester.</p>

<p id="_71c22afa-6b94-ad85-9f54-347ef903ebd8" anchor="boilerplate-address" align="left">ISO copyright office<br/> CP 401 • Ch. de Blandonnet 8<br/> CH-1214 Vernier, Geneva<br/> Phone: +41 22 749 01 11<br/> Email:  <link target="mailto:copyright@iso.org"/><br/> Website:  <link target="https://www.iso.org/">www.iso.org</link></p>

<p id="_93a0bcfe-1edb-b952-e8f5-db8ed91f8e23" anchor="boilerplate-place">Published in Switzerland</p>
</clause>
</copyright-statement>
</boilerplate><preface><foreword id="_bcb6f41d-8baa-7f9c-5118-5131b7cd6377" obligation="informative">
<title id="_41c9fad3-d4c1-eecc-4fad-f91704acc026">Foreword</title>
<note id="_4c9dbebf-660c-1fe0-0f5b-ecad18ab11ac"><p id="_8a662cf2-2101-56ae-5b0d-883b85f1c32b">This document is developed and published by the EXPRESS Language Foundation. All rights reserved.</p>
</note>

<p id="_5260d501-ab66-29fa-2825-dd56a968bfe7">The EXPRESS Language Foundation, maintainer of the EXPRESS data modeling language, develops and maintains language standards and technologies. The work of preparing EXPRESS standards is carried out through technical working groups. Each member interested in a subject for which a working group has been established has the right to participate in that group. International organizations, both governmental and non-governmental, also take part in the work.</p>

<p id="_ede46264-d1de-468b-adb8-38ece7c54bd5">The procedures used to develop this document and those intended for its further maintenance are described in the EXPRESS Language Foundation’s documentation guidelines. In particular, different approval criteria are needed for different types of documents. This document was drafted in accordance with the EXPRESS Language Foundation’s editorial rules and guidelines.</p>

<p id="_00a255f2-a06a-ea2a-b942-ca941c19e6dd">Attention is drawn to the possibility that some of the elements of this document may be the subject of patent rights. The EXPRESS Language Foundation shall not be held responsible for identifying any or all such patent rights. Details of any patent rights identified during the development of the document will be in the Introduction.</p>

<p id="_53c3d577-039b-c4b5-9501-d397ca719bff">Any trade name used in this document is information given for the convenience of users and does not constitute an endorsement.</p>

<p id="_36969176-d4ac-95b8-2eb9-c5e216f2539a">For an explanation of the voluntary nature of standards and the meaning of EXPRESS Language Foundation specific terms and expressions related to conformity assessment, please refer to the Foundation’s documentation guidelines.</p>

<p id="_bf8b48ac-995e-4e6d-4a35-d00adb24f890">This document was prepared by the EXPRESS Language Foundation’s Technical Working Group.</p>

<p id="_2fd3055d-529d-6b4c-c4fd-b7e5d32e6b62">EXPRESS is organized as a series of specifications, each published separately. The structure of EXPRESS is described in the Core Language Specification.</p>

<p id="_51706cac-06b3-aa3b-f9b7-14ce060c8a95">Each specification is a member of one of the following series: description methods, implementation methods, conformance testing methodology and framework, integrated generic resources, integrated application resources, application protocols, abstract test suites, application interpreted constructs, and application modules. This part is a member of the description methods series.</p>
</foreword><introduction id="_25035b03-3ac3-3b39-337c-a9bfe1ff729d" anchor="introduction" obligation="informative">
<title id="_2b2e98d1-114a-3da4-8556-01ae0a724280">Introduction</title>
<p id="_6720da92-414b-98bb-fb22-c20d022dec08">EXPRESS-Q is a query language designed to work with EXPRESS schemas, particularly in the context of STEP (Standard for the Exchange of Product model data) application protocols. It provides a formal mechanism for defining mappings between Application Reference Model (ARM) and Model Implementation Model (MIM) schemas, as well as specifying constraints on datasets that comply with these schemas.</p>

<p id="_68b45e84-91b0-8054-9b1c-3ae9ba1f65d3">The primary purpose of EXPRESS-Q is to bridge the gap between conceptual models (ARM) and their implementations (MIM), ensuring that data exchange between different systems maintains semantic consistency. By providing a standardized way to express these mappings and constraints, EXPRESS-Q facilitates more robust and reliable data exchange in complex engineering and manufacturing environments.</p>
</introduction></preface><sections>

<clause id="_4bcf11d2-cefa-563e-d0cb-45f5e1ef233b" anchor="scope" type="scope" inline-header="false" obligation="normative">
<title id="_f70b6ff6-6131-0e24-81e1-850dbe94b63d">Scope</title>
<p id="_eb08249d-ac44-bf09-1f1a-dc313eb593f8">This document specifies EXPRESS-Q, including its syntax, semantics, and usage within the context of EXPRESS schemas and STEP application protocols.</p>

<p id="_c4173c51-98df-8acf-c82b-424a3028763c">The specification covers:</p>

<ol id="_627a7dae-567a-2d2f-4a8e-846d87ff6532"><li><p id="_fde1e7c5-e806-0383-2cbb-5cd460318f98">The grammar and syntax of EXPRESS-Q</p>
</li>
<li><p id="_bf5f748d-95b8-3caa-f8a9-24ac93b4e2b8">The semantics of EXPRESS-Q constructs</p>
</li>
<li><p id="_ac710207-fa28-5240-d798-d940a4942e0d">The reference path syntax used for defining detailed mappings</p>
</li>
<li><p id="_d59492d9-34df-aa0c-0bfb-26462f188018">Validation rules for EXPRESS-Q files</p>
</li>
<li><p id="_2c39638f-8ced-1a12-41c3-c8134a1d9189">Guidelines for implementing EXPRESS-Q parsers and validators</p>
</li>
</ol>

<p id="_d19b8306-bd5e-3dcf-9e88-707f00b842c3">This specification is intended for use by software developers, data modelers, and systems integrators working with EXPRESS schemas and STEP application protocols.</p>
</clause>



<terms id="_a1a149e8-49c2-861c-b859-362621efaa18" obligation="normative">
<title id="_dfb2eab2-f980-6365-3c47-81d0eb272962">Terms and definitions</title><p id="_dcc01114-4d03-3550-1347-4ba901bda94c">For the purposes of this document, the following terms and definitions apply.</p><p id="_1df4aedb-297d-0c69-967f-f6a60db009d2">ISO and IEC maintain terminology databases for use in standardization at the following addresses:</p>

<ul id="_e6ddc246-88cc-2222-8452-b939a5cefa0e"><li><p id="_93880b15-0e52-9141-f887-d290dce89ffd">ISO Online browsing platform: available at <link target="https://www.iso.org/obp"/></p>
</li>
<li><p id="_8a7ecb99-412c-1138-ae9d-76c4ac7b7d43">IEC Electropedia: available at <link target="https://www.electropedia.org"/></p>
</li>
</ul>
<term id="_283a2945-0e09-de30-ca8c-5ed6af61aee4" anchor="term-EXPRESS-Q"><preferred><expression>
<name>EXPRESS-Q</name>
</expression>
</preferred>
<definition id="_3e10ba3a-2df9-37de-8c30-c3787b173410"><verbal-definition id="_8bf5d3ae-8232-cce3-0ccf-0b2d253f0b49"><p id="_df48b775-b7a7-9d72-838e-b7ca9a71c4ef">query language for EXPRESS schemas, used to define mappings and constraints between ARM and MIM schemas</p></verbal-definition></definition>
 </term>
</terms>

<clause id="_f8565fda-8614-7417-a38e-95966ead391a" inline-header="false" obligation="normative">
<title id="_60ef100f-078e-7705-4ac6-9e281f2ef50c">EXPRESS-Q language specification</title>
<clause id="_2163f5de-cd11-454c-78ea-5477c1966401" inline-header="false" obligation="normative">
<title id="_3cc07c1f-09b3-e7bb-96d9-3dffe1c404fd">Overview</title>
<p id="_964444e0-f0ba-3c4b-3dff-58d26550cbce">EXPRESS-Q is designed to work alongside EXPRESS schemas, providing a mechanism to define mappings between ARM and MIM schemas, as well as specifying constraints on datasets. The language uses a syntax similar to EXPRESS but introduces new constructs specific to querying and mapping.</p>

<p id="_8fad7839-04a6-2efb-25a5-25aa1746c0d2">An EXPRESS-Q file typically consists of one or more entity mappings, each of which defines how an ARM entity and its attributes correspond to MIM elements. These mappings can include various declarations such as extensibility, AIM elements, EXPRESS references, reference paths, and alternative mappings.</p>

<p id="_cfeff449-ee40-c44c-23fb-eb4dff8148bd">Entity names, AIM element names, and assertion targets use EXPRESS links to identify both the schema and element, enabling cross-document reference resolution in published documentation.</p>
</clause>

<clause id="_44accc81-4f4f-cfb4-676a-8e695fcbe838" inline-header="false" obligation="normative">
<title id="_78761fee-1670-eaff-dabc-db270a57f3a2">EBNF grammar</title>
<p id="_1274143c-f0b8-19ec-e9ea-e0e13dc87afe">The following EBNF (Extended Backus-Naur Form) grammar defines the syntax of EXPRESS-Q:</p>

<sourcecode id="_592ab0c6-fce5-d04c-f6d8-e3f933c07dc3" lang="ebnf"><body>express_q_file = { entity_mapping } ;

entity_mapping = "ENTITY_MAPPING" entity_ref ";" newline
                 [ extensible_decl ]
                 [ aim_element_decl ]
                 [ express_ref_decl ]
                 [ refpath_decl ]
                 [ alt_map_decl ]
                 { attribute_mapping }
                 "END_ENTITY_MAPPING" ";" ;

extensible_decl = "EXTENSIBLE" ":" boolean ";" newline ;

aim_element_decl = "AIM_ELEMENT" ":" ( express_link | string ) ";" newline ;

express_ref_decl = "EXPRESS_REF" ":" "[" [ string { "," string } ] "]" ";" newline ;

refpath_decl = "REFPATH" ":" "{" newline
               refpath_content
               "}" ";" newline ;

refpath_content = { refpath_line } ;

refpath_line = [ indentation ] reference_expression newline ;

reference_expression = entity_reference [ relationship { relationship } ] ;

relationship = path_relation | supertype_relation | subtype_relation |
                select_extension | constraint ;

entity_reference = identifier ;

path_relation = "-&gt;" entity_reference ;

supertype_relation = "=&gt;" entity_reference ;

subtype_relation = "&lt;=" entity_reference ;

select_extension = "*" "&gt;" entity_reference | "&lt;" "*" entity_reference ;

constraint = "[" constraint_expression "]" ;

constraint_expression = ? expression following EXPRESS syntax ? ;

indentation = ? one or more spaces or tabs ? ;

alt_map_decl = "ALT_MAP" ":" "[" [ string { "," string } ] "]" ";" newline ;

attribute_mapping = "ATTRIBUTE_MAPPING" attribute_name ";" newline
                    "ASSERTION_TO" ":" ( express_link | string ) ";" newline
                    [ aim_element_decl ]
                    [ express_ref_decl ]
                    [ refpath_decl ]
                    "END_ATTRIBUTE_MAPPING" ";" newline ;

entity_ref = express_link | entity_name ;

entity_name = identifier ;

attribute_name = identifier ;

express_link = "&lt;&lt;express:" schema_name "." element_name "," display_name "&gt;&gt;" ;

schema_name = identifier ;

element_name = identifier ;

display_name = identifier ;

identifier = letter { letter | digit | "_" } ;

boolean = "TRUE" | "FALSE" ;

string = '"' { character } '"' ;

letter = "A" | ... | "Z" | "a" | ... | "z" ;

digit = "0" | ... | "9" ;

character = ? any printable character ? ;

indentation = ? one or more spaces or tabs ? ;

newline = ? line break character(s) ? ;</body></sourcecode>


<p id="_a2083265-28ab-36e1-869f-4f4fa438acfb">This grammar defines the overall structure of an EXPRESS-Q file, including entity mappings, attribute mappings, reference paths, including various types of relationships between entities and constraints, and various declarations.</p>
</clause>

<clause id="_4f0b1bc6-a19b-c9e6-f7f4-09397ec502a4" inline-header="false" obligation="normative">
<title id="_55f6da5f-0b02-2b51-a3c7-a0f6056a6b3a">Semantics</title>
<p id="_8eb1049a-6605-dd70-89db-964dd855b9a4">This section describes the meaning and usage of each major construct in EXPRESS-Q.</p>

<clause id="_1d86e32b-675e-b670-e33c-0106867d12f7" inline-header="false" obligation="normative">
<title id="_ee211df2-3891-6e5f-8259-0f9bbc1e094f">EXPRESS link</title>
<sourcecode id="_f4809583-b1f4-d0f2-fcbe-da1daa7e540b" lang="ebnf"><body>express_link = "&lt;&lt;express:" schema_name "." element_name "," display_name "&gt;&gt;" ;</body></sourcecode>


<p id="_27fcf23f-7422-0dc5-26fd-f512e81c58fd">An EXPRESS link is a cross-reference that identifies an element within a specific EXPRESS schema. It encodes the schema name, element name, and a display name used for rendering.</p>

<p id="_cc7f2b7d-0353-72dd-93a4-c0df339c001c">The schema origin of a referenced element is derived from the EXPRESS link, eliminating the need for a separate source declaration.</p>

<dl id="_d977088c-58f3-cf80-d47d-d29941bda256"><dt>Usage</dt>
<dd id="_932d2385-b208-78c9-35c0-357ac3a31c5d"><ul id="_49977755-c418-28c6-1ed7-61a76a8cab4b"><li><p id="_9c95cd5a-6227-7b1f-f154-9ad1024bfe71">Use in entity mapping names to identify the ARM entity and its schema.</p>
</li>
<li><p id="_1f7e6156-831d-4704-3193-ec7197c1588b">Use in AIM_ELEMENT declarations to identify the MIM entity and its schema.</p>
</li>
<li><p id="_633bff9d-eaf5-ce31-7288-84103e7d31f0">Use in ASSERTION_TO declarations to identify the target entity and its schema.</p>
</li>
<li><p id="_c4368522-c9a7-187c-10eb-0ac508243ec1">The <tt>display_name</tt> is used for rendering in published documentation.</p>
</li>
</ul>
</dd>
</dl>

<sourcecode id="_c6c64cb4-1925-9ec4-4482-3b08458aeff7"><body>&lt;&lt;express:Activity_arm.Activity,Activity&gt;&gt;
&lt;&lt;express:action_schema.executed_action,executed_action&gt;&gt;
&lt;&lt;express:Activity_method_arm.Activity_method,Activity_method&gt;&gt;</body></sourcecode>

</clause>

<clause id="_8aeeace6-9d0f-216a-66cc-28aeab5cf47a" inline-header="false" obligation="normative">
<title id="_be941af3-8413-650e-b775-cd98c2b8602d">Entity mapping</title>
<sourcecode id="_0f219d10-bb0e-9370-3246-74ce0bd02181" lang="ebnf"><body>entity_mapping = "ENTITY_MAPPING" entity_ref ";" newline
                 [ extensible_decl ]
                 [ aim_element_decl ]
                 [ express_ref_decl ]
                 [ refpath_decl ]
                 [ alt_map_decl ]
                 { attribute_mapping }
                 "END_ENTITY_MAPPING" ";" ;</body></sourcecode>


<p id="_249d4479-2ada-6024-a049-f6b0cc7c5a59">An entity mapping defines how an ARM entity corresponds to one or more MIM entities or constructs. It encapsulates all the information needed to map a single ARM entity to its MIM counterpart(s).</p>

<p id="_9db5ec05-881d-133a-b4cf-fe0b57de74fb">The entity name shall be an EXPRESS link identifying the ARM entity and its schema, or a plain entity name for backward compatibility.</p>

<dl id="_591222bc-2112-a41d-838e-c7290e1ae5c4"><dt>Usage</dt>
<dd id="_064e4f9a-ed64-43d5-2809-7a8b4f7927d7"><ul id="_98e693ac-3486-4438-cf64-4725559e0eb1"><li><p id="_35e7337a-b6db-251d-f694-36ad9696cd57">Begin with “ENTITY_MAPPING” followed by the ARM entity reference (EXPRESS link or plain name).</p>
</li>
<li><p id="_dcca33cb-f12f-88ac-3d55-ec84f8bd1ad8">Include optional declarations for extensibility, AIM element, EXPRESS references, reference path, and alternative mappings.</p>
</li>
<li><p id="_275f5ca9-e22e-94a3-0ea4-58253e5df65b">Include attribute mappings for the entity’s attributes.</p>
</li>
<li><p id="_e4b6ff14-43d2-0272-b934-9852c6da032d">End with “END_ENTITY_MAPPING”.</p>
</li>
</ul>
</dd>
</dl>

<sourcecode id="_2498e43a-e877-00ec-1f36-f7ad10218252"><body>ENTITY_MAPPING &lt;&lt;express:Activity_arm.Activity,Activity&gt;&gt;;
EXTENSIBLE: FALSE;
AIM_ELEMENT: "&lt;&lt;express:action_schema.executed_action,executed_action&gt;&gt;";
EXPRESS_REF: ["action_schema"];
REFPATH: {
  executed_action &lt;= action
};
ATTRIBUTE_MAPPING chosen_method;
ASSERTION_TO: "&lt;&lt;express:Activity_method_arm.Activity_method,Activity_method&gt;&gt;";
AIM_ELEMENT: "PATH";
REFPATH: {
  executed_action
  executed_action &lt;= action
  action.chosen_method -&gt; action_method
  action_method
};
END_ATTRIBUTE_MAPPING;
END_ENTITY_MAPPING;</body></sourcecode>

</clause>

<clause id="_d87c177c-57e9-e921-2d0c-98688432e8f5" inline-header="false" obligation="normative">
<title id="_a11957e0-d5f5-a01e-b65d-36aec4788d86">Extensible declaration</title>
<sourcecode id="_b73e0ce9-a686-db55-7bac-b4ee0b851d8a" lang="ebnf"><body>extensible_decl = "EXTENSIBLE" ":" boolean ";" newline ;</body></sourcecode>


<p id="_85fda73e-29d9-4268-7e69-0d9344d5a488">The extensible declaration specifies whether the entity mapping is extensible, corresponding to the extensibility of SELECT types in EXPRESS schemas.</p>

<dl id="_23f50bc1-6138-44e0-5828-7eb554b55f84"><dt>Usage</dt>
<dd id="_6e09ec7e-f615-b5cb-9e87-0dba22be6a2a"><ul id="_fa976dfc-63b3-1d98-5499-e166a1c46939"><li><p id="_6fce6ff3-5298-3cd6-564f-9668570c1be9">Use “EXTENSIBLE: TRUE;” for extensible mappings.</p>
</li>
<li><p id="_5b4d49ae-7816-b333-cf1c-2dcca0a2e090">Use “EXTENSIBLE: FALSE;” for non-extensible mappings.</p>
</li>
</ul>
</dd>
</dl>

<sourcecode id="_10e7ffc0-cc57-c33b-019b-44db9807f03e"><body>ENTITY_MAPPING &lt;&lt;express:Activity_arm.activity_item,activity_item&gt;&gt;;
EXTENSIBLE: TRUE;
...
END_ENTITY_MAPPING;</body></sourcecode>

</clause>

<clause id="_34234c39-1730-2263-beaf-b3ad42387792" inline-header="false" obligation="normative">
<title id="_cac2340c-f43c-50b5-91f6-95b0ee0fc800">AIM element declaration</title>
<sourcecode id="_9a38e459-8d44-3e31-aafb-1b25072c1cff" lang="ebnf"><body>aim_element_decl = "AIM_ELEMENT" ":" ( express_link | string ) ";" newline ;</body></sourcecode>


<p id="_1f17f644-c8dd-3557-609c-e0de4ff68ef9">The AIM element declaration specifies the corresponding AIM (MIM) element for the ARM entity, providing a direct link between the ARM and MIM schemas.</p>

<p id="_bdee8bcc-5541-f3e4-82bb-a06b318b083c">When the AIM element is an entity or type defined in an EXPRESS schema, the value shall be an EXPRESS link. When the AIM element is a keyword (such as <tt>PATH</tt>, <tt>IDENTICAL MAPPING</tt>, or <tt>NO MAPPING EXTENSION PROVIDED</tt>) or a dotted attribute path (such as  <tt>action.name</tt>), the value shall be a plain string.</p>

<dl id="_a6f5dfae-190f-d522-2cc0-c0db769dfab9"><dt>Usage</dt>
<dd id="_f4645d25-6eaa-9355-2080-ef7388998613"><ul id="_f0c9b39c-48b3-c916-3720-0bf834bee71f"><li><p id="_87fb0499-b8c2-799c-084a-4cd67560328a">Specify the AIM element as an EXPRESS link for entity references.</p>
</li>
<li><p id="_27a7d6be-e18a-e929-bc37-13a24575550d">Specify the AIM element as a plain string for keywords and attribute paths.</p>
</li>
</ul>
</dd>
</dl>

<sourcecode id="_fe92eae7-93da-f178-0e2f-3328700d8bb2"><name id="_fddfd10d-d488-bea4-85f6-b5f2e7c863d9">Entity-level AIM element with EXPRESS link</name><body>ENTITY_MAPPING &lt;&lt;express:Activity_arm.Activity,Activity&gt;&gt;;
AIM_ELEMENT: "&lt;&lt;express:action_schema.executed_action,executed_action&gt;&gt;";
...
END_ENTITY_MAPPING;</body></sourcecode>


<sourcecode id="_f615dac5-b9c3-59a0-639f-1f446a18f64d"><name id="_b68128c8-93a4-4e19-d068-b30af11cb111">Attribute-level AIM element with plain string</name><body>ATTRIBUTE_MAPPING name;
ASSERTION_TO: "name";
AIM_ELEMENT: "action.name";
END_ATTRIBUTE_MAPPING;</body></sourcecode>


<sourcecode id="_1d9c3646-081c-0c05-5400-b6ee6999b29c"><name id="_87615e97-abaa-f31a-78d9-aa9752c2efa7">Attribute-level AIM element with PATH keyword</name><body>ATTRIBUTE_MAPPING chosen_method;
ASSERTION_TO: "&lt;&lt;express:Activity_method_arm.Activity_method,Activity_method&gt;&gt;";
AIM_ELEMENT: "PATH";
REFPATH: {
  executed_action
  executed_action &lt;= action
  action.chosen_method -&gt; action_method
  action_method
};
END_ATTRIBUTE_MAPPING;</body></sourcecode>

</clause>

<clause id="_c4481a59-d1d2-89d9-1a50-45d9b29dee25" inline-header="false" obligation="normative">
<title id="_23ff9edb-9706-644f-064f-015326c7ec2d">EXPRESS reference declaration</title>
<sourcecode id="_a831ad47-9124-ea11-b08c-ccd08d31ce43" lang="ebnf"><body>express_ref_decl = "EXPRESS_REF" ":" "[" [ string { "," string } ] "]" ";" newline ;</body></sourcecode>


<p id="_c9afd6ad-e061-5e03-043d-0cb93a4eb7fe">The EXPRESS reference declaration lists EXPRESS references related to the mapping, used to link the mapping to specific parts of the EXPRESS schemas or other relevant documentation.</p>

<dl id="_5b94ce5f-b9e1-4455-f2dc-86d9e4eda44b"><dt>Usage</dt>
<dd id="_b797ff7b-96f6-91f2-590e-0dc6cc3af461"><ul id="_3e6c82b2-72f9-b617-eaf4-cdb4ebd1a4ef"><li><p id="_0f08cec6-45c3-9821-d4d4-cd115b9f6fc0">Provide a comma-separated list of references enclosed in square brackets.</p>
</li>
<li><p id="_a7e41245-434f-e782-376b-8cec0ab87982">Use an empty list “[]” if there are no references.</p>
</li>
</ul>
</dd>
</dl>

<sourcecode id="_cda01b5d-145b-9737-82a3-702d3bc7d2c6"><body>ENTITY_MAPPING &lt;&lt;express:Activity_arm.Activity,Activity&gt;&gt;;
EXPRESS_REF: ["action_schema", "management_resources_schema"];
...
END_ENTITY_MAPPING;</body></sourcecode>

</clause>

<clause id="_88988768-0c2e-a5f4-eb43-f07d9fdadc7a" inline-header="false" obligation="normative">
<title id="_9fe8d5ee-b722-6b4f-25e7-4d8f0b42a1cc">Reference path declaration</title>
<clause id="_ea295baf-52ca-c56c-4954-76529f095ef3" inline-header="false" obligation="normative">
<title id="_0896500b-b66b-2e8d-020c-149bfa3ba6f5">General</title>
<p id="_499339f0-67e2-f4fc-6bad-a977bb061b56">The reference path syntax in EXPRESS-Q is based on the ISO 10303 Mapping Specification and is used within the REFPATH sections to define precise mappings between ARM and MIM elements. This syntax allows for complex relationships and constraints to be expressed concisely.</p>

<sourcecode id="_c96ae40d-8de1-e3de-454c-f8a9a8934ad1" lang="ebnf"><body>refpath_decl = "REFPATH" ":" "{" newline
               refpath_content
               "}" ";" newline ;</body></sourcecode>


<p id="_67da1bef-0881-5df3-f2b8-dfaf0d5f1341">The reference path declaration defines the detailed mapping between ARM and MIM elements using the reference path syntax described earlier.</p>

<dl id="_3d6b60eb-baba-c83f-0dfe-b928b553d4ad"><dt>Usage</dt>
<dd id="_369192f8-078b-e019-e675-939ac5c93ae0"><ul id="_4e92f3de-f254-2aca-9fd9-169c3359f095"><li><p id="_e6d054c6-61cf-a2aa-88d4-7bed3b2a41d3">Begin with <tt>REFPATH: {</tt> and end with <tt>};</tt>.</p>
</li>
<li><p id="_f7a6aea3-af79-7b55-dc99-909a3dc7a844">Each line in the content describes a step in the mapping path.</p>
</li>
<li><p id="_9b65d58b-5127-dddd-52d5-2aeeb47173bb">Use indentation to indicate nested structures.</p>
</li>
<li><p id="_83a8b260-c84b-b2dc-47f5-d4b04e0ad6e4">Use symbols like <tt>&lt;=</tt>, <tt>=&gt;</tt>, <tt>-&gt;</tt> to indicate relationships between entities and attributes.</p>
</li>
</ul>
</dd>
</dl>

<sourcecode id="_dfa8a94b-0f6c-a853-0184-d7f703263c67"><body>ENTITY_MAPPING &lt;&lt;express:Activity_arm.Activity,Activity&gt;&gt;;
REFPATH: {
  executed_action &lt;= action
  action.chosen_method -&gt; action_method
};
...
END_ENTITY_MAPPING;</body></sourcecode>

</clause>

<clause id="_0d293455-391d-9ac9-acf7-be56dc222b75" inline-header="false" obligation="normative">
<title id="_afe682b5-a780-cc06-e72d-6ab215dde915">Symbols and meaning</title>
<p id="_0b8ce7b0-e02f-9fd6-e3c8-67a2c0a0c5b9">The reference path syntax uses several symbols to express relationships and constraints. These symbols are derived from the ISO 10303 Mapping Specification:</p>

<dl id="_86f2584c-c40e-bfd4-c35c-7c69fe9b650d"><dt><tt>[]</tt></dt>
<dd id="_dba9ba10-646a-fd37-3f76-2724584eb4fe"><p id="_f140044f-90bb-3afd-fada-3b799bd3ba7d">Enclosed section constrains multiple MIM elements or sections of the reference path required to satisfy an information requirement.</p>
</dd>
<dt><tt>()</tt></dt>
<dd id="_462b6c53-71b2-f969-3ac9-d7943181e93f"><p id="_c3fbd429-8f4e-82eb-77c0-1c78ce769c5f">Enclosed section constrains multiple MIM elements or sections of the reference path identified as alternatives within the mapping.</p>
</dd>
<dt><tt>{}</tt></dt>
<dd id="_6727b243-56d3-e4d9-6ca7-85312d8f3476"><p id="_7f8eeb48-bb6e-3b74-0e41-2aaf0daf0dd0">Enclosed section constrains the reference path to satisfy an information requirement.</p>
</dd>
<dt><tt>&lt;&gt;</tt></dt>
<dd id="_177e2360-e095-4c96-929f-c649b291dc77"><p id="_4afb785c-33d4-0960-4791-68fe735bc6e7">Enclosed section constrains one or more required reference paths.</p>
</dd>
<dt><tt>||</tt></dt>
<dd id="_c20a9c3f-ce6f-31e5-3af1-18064986af75"><p id="_78d6415f-7369-6168-e89d-41f6e40d32d0">Enclosed section constrains the supertype entity.</p>
</dd>
<dt><tt>-&gt;</tt></dt>
<dd id="_4b81370b-e2fb-e451-1433-649d50a53f7e"><p id="_6e80a5c0-789a-ef9d-2b43-c182ff668290">The attribute whose name precedes the symbol references the entity or select type whose name follows the symbol.</p>
</dd>
<dt><tt>&lt;-</tt></dt>
<dd id="_ced46307-d4f7-718a-1860-776d9fcf107b"><p id="_f1ded68a-1b38-cb80-cf55-95fcb3605057">The entity or select type whose name precedes the symbol is referenced by the entity attribute whose name follows the symbol.</p>
</dd>
<dt><tt>[i]</tt></dt>
<dd id="_7397e341-ba2a-cb08-7de7-be484c00e3aa"><p id="_2619f85d-29e0-fa36-043f-0ff4a9f7f651">The attribute whose name precedes the symbol is an aggregate; any element of that aggregate is referred to.</p>
</dd>
<dt><tt>[n]</tt></dt>
<dd id="_11cfb9d3-dd3f-7889-3a36-bcd4b93a1597"><p id="_c86cca03-5253-cad8-40a7-762dc14c10d9">The attribute whose name precedes the symbol is an ordered aggregate; member n of that aggregate is referred to.</p>
</dd>
<dt><tt>=&gt;</tt></dt>
<dd id="_1854410b-6e0d-9e3c-4199-ded188d97285"><p id="_1a6072b9-8d9a-e5a0-ae72-24536baa2b66">The entity whose name precedes the symbol is a supertype of the entity whose name follows the symbol.</p>
</dd>
<dt><tt>&lt;=</tt></dt>
<dd id="_c53a5fa0-6ee8-1a04-00c2-26f84f1273b8"><p id="_5c5078a1-4ccc-4238-c1f5-f48eaffb1199">The entity whose name precedes the symbol is a subtype of the entity whose name follows the symbol.</p>
</dd>
<dt><tt>=</tt></dt>
<dd id="_3115c967-b701-5ea3-706f-d5412642d1d6"><p id="_2967df8c-5b56-9a88-0f31-aec4b2a7db2c">The string, select, or enumeration type is constrained to a choice or value.</p>
</dd>
<dt><tt>\</tt></dt>
<dd id="_e166a63f-9bbf-a88d-0344-947606b9cee6"><p id="_781addb1-d7cd-d147-98b1-876261e5927e">The reference path expression continues on the next line.</p>
</dd>
<dt><tt>*</tt></dt>
<dd id="_1dd7e27a-12d9-7246-f621-7f761dabf47d"><p id="_6d59cadf-9290-efbc-dedb-81a32742d17b">One or more instances of the relationship entity data type may be assembled in a relationship tree structure.</p>
</dd>
<dt><tt>--</tt></dt>
<dd id="_60020891-7f53-d89b-38c1-c1f4ac1ed3ba"><p id="_2e456928-b7fc-d7c9-f4dd-ee90c238d0fc">The text following is a comment or introduces a clause reference.</p>
</dd>
<dt><tt>*&gt;</tt></dt>
<dd id="_e880ffa1-18f0-4c0e-2236-7d90427cb0ce"><p id="_b1b5caae-1bb0-4324-3c16-f2251b907653">The select or enumeration type whose name precedes the symbol is extended into the select or enumeration type whose name follows the symbol.</p>
</dd>
<dt><tt>&lt;*</tt></dt>
<dd id="_26545d96-a1fc-ddae-3168-ea7eeb4ff14b"><p id="_bffca679-0e2c-1b5e-1e6e-fcdff16da07b">The select or enumeration type whose name precedes the symbol is an extension of the select or enumeration type whose name follows the symbol.</p>
</dd>
<dt><tt>!{}</tt></dt>
<dd id="_4db7c364-f028-1b21-578e-9da3751da305"><p id="_273f3d13-597a-f22f-e910-95b5c3695caf">Section enclosed by <tt>{}</tt> indicates a negative constraint placed on the mapping.</p>
</dd>
</dl>
</clause>

<clause id="_17f3b8e7-6e86-bf5f-d7a1-812950d12940" inline-header="false" obligation="normative">
<title id="_a88a6207-1281-8002-6a45-3000e4149dd7">Usage and examples</title>
<p id="_97347609-436a-1383-37b3-b4841afdc0f2">The reference path syntax is used to define precise mappings between ARM and MIM elements. Here are some examples demonstrating various aspects of the syntax:</p>

<example id="_1b7f9f85-0347-d7b8-4185-9938c5a70529">
<name id="_d15e7e76-cbaa-c2fc-2983-90eac2151b24">Simple attribute mapping</name>
<sourcecode id="_5e47ca17-d90b-a197-5f3c-ef44bff0278c"><body>REFPATH: {
  product.id -&gt; id
}</body></sourcecode>

</example>

<example id="_1656c5a0-83d5-b972-e75d-1bf7cdc392b9">
<name id="_dfc5c0ce-ebdf-95f5-8ee4-421f29e78133">Subtype relationship</name>
<sourcecode id="_68d5ea75-5e28-85fb-a1b2-17e6a2395b26"><body>REFPATH: {
  mechanical_context &lt;= product_context
}</body></sourcecode>

</example>

<example id="_6d1e6c16-338e-fe97-a310-f4bf15941807">
<name id="_c6662f09-420f-737d-242a-fbe594f2726a">Complex mapping with alternatives and constraints</name>
<sourcecode id="_c491cae1-8b8a-e8c3-3639-4cbc588bc03e"><body>REFPATH: {
  shape_representation &lt;= representation
  {representation.items[i] -&gt; representation_item
   representation_item =&gt;
   (geometric_representation_item
    [geometric_representation_item.dim = 3] |
    mapped_item)
  }
}</body></sourcecode>

</example>

<example id="_2ba772e5-7b80-30ee-7f03-d74c344a0b14">
<name id="_c5156847-c7b5-7163-c7fa-a62ad7c9f98f">Select type extension</name>
<sourcecode id="_e5a37208-7df5-c164-b1c0-e878d5c5f87d"><body>REFPATH: {
  person_and_organization_select *&gt; organization
}</body></sourcecode>

</example>

<example id="_f8a0b304-2773-2ed1-afd8-9f44c4b10b30">
<name id="_6b679212-aca5-bf56-d213-e32e65fa9184">Negative constraint</name>
<sourcecode id="_c18085cc-d8fe-ad0a-d28a-7986bd434a48"><body>REFPATH: {
  product_definition_formation
  !{product_definition_formation.make_or_buy = bought_item}
}</body></sourcecode>

</example>
</clause>

<clause id="_a3547fe4-abcf-4ba1-8908-ee76c4ba6b1b" inline-header="false" obligation="normative">
<title id="_074c1492-a3d5-def1-5d65-2bc859901316">Validation rules for reference paths</title>
<p id="_0677037e-a4b4-1945-7a13-52af32e15224">When validating reference paths, the following rules should be applied:</p>

<ol id="_a771d77d-d81b-730f-9e84-40a365fcb48f"><li><p id="_4c3cb6c7-5412-4eca-eeb5-8cacc1c6c01f">All referenced entities and attributes shall exist in the corresponding ARM or MIM schema.</p>
</li>
<li><p id="_ff3247e8-652e-83af-933b-1879f33dfeea">The relationships between entities (supertype, subtype, attribute reference) shall be consistent with the schema definitions.</p>
</li>
<li><p id="_67c44076-8100-1935-0396-ac3bae3b07c8">Constraints shall be syntactically correct and use only attributes or functions that are valid for the constrained entity.</p>
</li>
<li><p id="_db68e546-a116-0a84-da90-c3cb7fb74e99">Select type extensions shall be consistent with the schema definitions.</p>
</li>
<li><p id="_47f5739f-9ecb-4b84-549d-936f91a674ff">Aggregate references (using <tt>[i]</tt> or <tt>[n]</tt>) shall be applied only to attributes defined as aggregates in the schema.</p>
</li>
<li><p id="_93e0552f-774a-d8f1-ed3d-2555eadc56ad">Alternative mappings (using parentheses) shall all be valid according to the schema.</p>
</li>
<li><p id="_5c3468f7-8085-13f0-0c3f-45cc8d03861c">Negative constraints shall be logically consistent with the rest of the mapping and the schema definitions.</p>
</li>
<li><p id="_f96a8c75-106a-056d-425c-3d5c05621ae2">The overall structure of the reference path shall form a valid path through the schema, connecting the source ARM entity to the target MIM entity or attribute.</p>
</li>
</ol>
</clause>
</clause>

<clause id="_fae98681-6d92-3894-1e3f-da206a07f637" inline-header="false" obligation="normative">
<title id="_7ce0afe5-c6dc-840b-1e9d-f45d7033a0cd">Alternative mapping declaration</title>
<sourcecode id="_6ebb461a-058d-7233-d317-4ba2ce7b2ba8" lang="ebnf"><body>alt_map_decl = "ALT_MAP" ":" "[" [ string { "," string } ] "]" ";" newline ;</body></sourcecode>


<p id="_5c6fb439-fc85-2115-665f-e24dfbfaf09b">The alternative mapping declaration specifies alternative mappings, allowing for flexibility in cases where multiple valid mappings exist.</p>

<dl id="_a72c8eef-4e7a-43e5-8def-90bfe8b3b2e4"><dt>Usage</dt>
<dd id="_93df35ab-ab9a-d003-dcb6-992ffeab4863"><ul id="_bd361943-6f1a-f934-5f09-838e9e74e77c"><li><p id="_c97782a8-1d1e-937a-92a3-6fda43033ff0">Provide a comma-separated list of alternative mappings enclosed in square brackets.</p>
</li>
<li><p id="_39f45cc9-90c4-d225-3684-4b36f8313488">Use an empty list “[]” if there are no alternative mappings.</p>
</li>
</ul>
</dd>
</dl>

<sourcecode id="_2afa1bfb-953b-10bf-cdf9-4e242b5f5ab3"><body>ENTITY_MAPPING GeometricRepresentation;
ALT_MAP: ["shape_representation", "tessellated_shape_representation"];
...
END_ENTITY_MAPPING;</body></sourcecode>

</clause>

<clause id="_5e4b4a76-4326-b4eb-b457-3d91f95f3a3b" inline-header="false" obligation="normative">
<title id="_b00abfa7-7826-c48a-a618-f6c0b065e2aa">Attribute mapping</title>
<sourcecode id="_8c5ed6ab-3349-f9a5-6202-ac0dd11d6989" lang="ebnf"><body>attribute_mapping = "ATTRIBUTE_MAPPING" attribute_name ";" newline
                    "ASSERTION_TO" ":" ( express_link | string ) ";" newline
                    [ aim_element_decl ]
                    [ express_ref_decl ]
                    [ refpath_decl ]
                    "END_ATTRIBUTE_MAPPING" ";" newline ;</body></sourcecode>


<p id="_6e087141-f5df-94d5-1ad0-fa845530a702">An attribute mapping defines how an individual attribute of an ARM entity corresponds to elements in the MIM schema.</p>

<p id="_2fa847d7-fa65-f821-24f1-028f4900c184">The ASSERTION_TO value shall be an EXPRESS link when the attribute refers to an entity data type or a SELECT type, and a plain string otherwise.</p>

<dl id="_7b4e385e-c8dd-8408-5e36-9b049eada653"><dt>Usage</dt>
<dd id="_f0db2617-d328-354a-6aec-e1e47673be43"><ul id="_85e0d82e-a287-9874-f712-de2cebe07fb0"><li><p id="_2243bc4f-ed11-a269-4bc7-1b516a573da5">Begin with “ATTRIBUTE_MAPPING” followed by the attribute name.</p>
</li>
<li><p id="_bdaa4703-157e-c863-302b-151fb397730e">Specify the ASSERTION_TO value as an EXPRESS link or plain string.</p>
</li>
<li><p id="_50bd2785-11d2-f7a6-a294-f4a10209cc74">Optionally include AIM_ELEMENT, EXPRESS_REF, and REFPATH declarations.</p>
</li>
<li><p id="_5756d5ae-96f5-e68e-b994-d152a7b7bbf5">End with “END_ATTRIBUTE_MAPPING”.</p>
</li>
</ul>
</dd>
</dl>

<sourcecode id="_12c0aad6-8384-2682-a483-34d71e5a71ac"><name id="_d2cc790e-55a5-0b57-7e14-3a27bac29eaa">Attribute mapping with EXPRESS link assertion</name><body>ENTITY_MAPPING &lt;&lt;express:Activity_arm.Activity,Activity&gt;&gt;;
ATTRIBUTE_MAPPING chosen_method;
ASSERTION_TO: "&lt;&lt;express:Activity_method_arm.Activity_method,Activity_method&gt;&gt;";
AIM_ELEMENT: "PATH";
REFPATH: {
  executed_action
  executed_action &lt;= action
  action.chosen_method -&gt; action_method
  action_method
};
END_ATTRIBUTE_MAPPING;
END_ENTITY_MAPPING;</body></sourcecode>


<sourcecode id="_b173c8b2-a5bd-857c-1572-11f2e3ef7bcf"><name id="_7101c37f-70f5-9816-6e0e-4c01adfce46f">Attribute mapping with plain string AIM element</name><body>ATTRIBUTE_MAPPING name;
ASSERTION_TO: "name";
AIM_ELEMENT: "action.name";
REFPATH: {
  executed_action
  executed_action &lt;= action
  action.name
};
END_ATTRIBUTE_MAPPING;</body></sourcecode>

</clause>
</clause>
</clause>

<clause id="_2899b7c7-b5ae-9daf-f919-b7eb5f810bae" inline-header="false" obligation="normative">
<title id="_d13a5fc3-0b0f-7b04-4028-4eb23ef3290f">Validation rules</title>
<clause id="_c4a39bef-2ad0-3ef8-54f4-6c20d16a33ab" inline-header="false" obligation="normative">
<title id="_0175f76d-716b-304d-d5e0-55b2c2c71130">General</title>
<p id="_53e9b15d-9b26-1b3d-9724-25e7d12e8998">Validation of EXPRESS-Q files is crucial to ensure the correctness and consistency of mappings between ARM and MIM schemas. The following rules should be applied when validating EXPRESS-Q files.</p>
</clause>

<clause id="_b0e14471-9ef3-4c1e-864e-51546670029d" inline-header="false" obligation="normative">
<title id="_ca7af297-3b5e-6b18-ad90-739408ab6769">EXPRESS link validation</title>
<ol id="_9ee08683-472c-8c66-8d93-6e3b75180862"><li><p id="_364cf6dd-e260-94dd-d6d8-53e2ad3cd3aa">Each EXPRESS link shall conform to the syntax <tt><eref bibitemid="express_schema_name.element_name" citeas=""><display-text>display_name</display-text></eref></tt>.</p>
</li>
<li><p id="_91f059f3-61a6-72ef-f148-d83a334c6c05">The <tt>schema_name</tt> shall identify a valid EXPRESS schema accessible to the mapping.</p>
</li>
<li><p id="_134f8b11-d821-fb49-4fbc-8b5f2488154f">The <tt>element_name</tt> shall identify an entity, type, or attribute defined in or imported into the referenced schema.</p>
</li>
<li><p id="_deb45d7c-75a0-2408-34c7-e1328003990e">The <tt>display_name</tt> shall match the <tt>element_name</tt>.</p>
</li>
</ol>
</clause>

<clause id="_e8be9787-4ed3-5cb1-c8b2-25c72054937c" inline-header="false" obligation="normative">
<title id="_6ce774b7-5b0b-61a5-8f57-f0b2b6ff8680">Entity mapping validation</title>
<ol id="_09b88bd0-d645-1c7e-f9e6-5531bd6081ce"><li><p id="_40acc766-be4b-07af-ffd5-5b0593a897e4">Each ENTITY_MAPPING shall correspond to an entity or type defined in the ARM schema. When the entity name is an EXPRESS link, the referenced entity shall exist in the referenced ARM schema.</p>
</li>
<li><p id="_66f079f6-e0d6-f5e5-e9ef-f188fab65a51">The AIM_ELEMENT specified shall exist in the MIM schema or be a recognized keyword (<tt>PATH</tt>, <tt>IDENTICAL MAPPING</tt>, <tt>NO MAPPING EXTENSION PROVIDED</tt>, `/SUPERTYPE(…)/ `, <tt>/SUBTYPE(...)/</tt>). When the AIM element is an EXPRESS link, the referenced entity shall exist in the referenced MIM or resource schema.</p>
</li>
<li><p id="_b6bb8174-3174-d95e-815e-5618ff2edbf9">All EXPRESS_REF entries shall refer to valid EXPRESS schemas.</p>
</li>
<li><p id="_f035357d-0e00-5b07-b7b2-68d3bb82f741">The REFPATH shall form a valid path from the ARM entity to the specified AIM_ELEMENT.</p>
</li>
<li><p id="_63bb86bb-edf2-d16d-654f-94657519b0dd">If ALT_MAP is specified, all alternative mappings shall be valid MIM entities.</p>
</li>
</ol>
</clause>

<clause id="_6817b20c-669d-0616-9655-42d87884caf6" inline-header="false" obligation="normative">
<title id="_111175cb-9e2c-cce0-516f-ddd927d3fde0">Attribute mapping validation</title>
<ol id="_952e5475-4f8a-4a31-8356-e4b1dd28cea2"><li><p id="_719eacd8-6f75-1397-52e4-bc74c3109f68">Each ATTRIBUTE_MAPPING shall correspond to an attribute of the ARM entity being mapped.</p>
</li>
<li><p id="_2f18ff58-d5f7-e97f-64b9-c6ff9d716f93">The ASSERTION_TO value shall be a valid type or entity in the ARM or MIM schema, as appropriate. When the value is an EXPRESS link, the referenced entity shall exist in the referenced schema.</p>
</li>
<li><p id="_7b29ab15-3592-8478-b1ea-58649fe68728">If specified, the AIM_ELEMENT shall exist in the MIM schema or be a recognized keyword or dotted attribute path.</p>
</li>
<li><p id="_01384733-740e-38ef-e84f-eb363b303f29">The REFPATH for an attribute shall form a valid path from the ARM attribute to the specified MIM element.</p>
</li>
</ol>
</clause>

<clause id="_d7362579-2f0d-c4d9-a308-4ea7205ee36f" inline-header="false" obligation="normative">
<title id="_95c50e96-4ae7-9163-7a41-5f277795fe1b">Reference path validation</title>
<ol id="_91343251-1311-e96d-b66d-6daf98d4da36"><li><p id="_2fe883ee-1ec9-144b-b447-b2138203d2da">All entities and attributes referenced in the REFPATH shall exist in either the ARM or MIM schema, as appropriate.</p>
</li>
<li><p id="_d7194ced-e90c-864e-c166-638bd3718366">Relationships between entities (e.g., subtype, supertype) shall be consistent with the schema definitions.</p>
</li>
<li><p id="_07abf75b-10d5-586d-f193-e6273a4dc1ed">Constraints specified in the REFPATH shall use valid attributes or functions for the entities they constrain.</p>
</li>
<li><p id="_3441d143-6b8a-1985-10a2-0e00908f3fdb">SELECT type extensions shall be consistent with the schema definitions.</p>
</li>
<li><p id="_22662401-8466-b472-37c8-c4586d7d1636">Aggregate references (using <tt>[i]</tt> or <tt>[n]</tt>) shall only be applied to attributes defined as aggregates in the schema.</p>
</li>
</ol>
</clause>

<clause id="_9d878e83-739e-000e-60a5-402165e6bd18" inline-header="false" obligation="normative">
<title id="_bc02b30f-d4c8-99b1-0109-a33d02e6effc">Overall consistency</title>
<ol id="_8cd8ea5e-3b9b-e1c0-a1b5-4f8ea4d9a4ff"><li><p id="_18c6ebc5-4a25-845b-981b-202c0ec5d133">The complete set of mappings shall cover all entities and attributes in the ARM schema.</p>
</li>
<li><p id="_a12fe771-abb2-b124-ca1e-ca6e37b54644">There should be no conflicting mappings (e.g., two different mappings for the same ARM entity or attribute).</p>
</li>
<li><p id="_2010529d-4cdd-452d-aaf4-749c01245552">The overall set of mappings should form a consistent and complete transformation from the ARM to the MIM schema.</p>
</li>
</ol>
</clause>
</clause>

<clause id="_71878332-c9e8-1ba5-8f1d-673f1e49223e" inline-header="false" obligation="normative">
<title id="_5371e3fa-4132-e857-3b65-ef5adcda7d32">Implementation guidelines</title>
<clause id="_3ccb7175-1585-2e65-4800-80133e202d8b" inline-header="false" obligation="normative">
<title id="_24abdf30-6d12-8734-45d3-cd1948186a03">General</title>
<p id="_5a9d3983-a10f-49cd-aa94-058ada2d3ad3">When implementing an EXPRESS-Q parser and validator, consider the following guidelines.</p>
</clause>

<clause id="_6c51f796-f4bd-fdf9-d3c2-ed116a3ff730" inline-header="false" obligation="normative">
<title id="_79f5351a-1ed8-b561-09c8-2a529461a051">Parsing</title>
<ol id="_5b338adc-297d-7ea1-e123-f5b21a23e383"><li><p id="_7ab71d47-eaaf-4bd3-908e-984073532cfb">Implement a lexical analyzer to tokenize the EXPRESS-Q input.</p>
</li>
<li><p id="_99fb11b3-1449-333e-ae9b-8a2f7823a85a">Develop a parser based on the EBNF grammar provided in this specification.</p>
</li>
<li><p id="_8055cc6e-2c54-e749-3d55-0be48fecb666">Create an abstract syntax tree (AST) or similar internal representation of the parsed EXPRESS-Q file.</p>
</li>
</ol>
</clause>

<clause id="_56000dd0-1fae-9bfa-e7db-4ec0704f0a95" inline-header="false" obligation="normative">
<title id="_910a2db5-71d2-3892-3190-919ac4625543">Schema loading</title>
<ol id="_856615f0-3f0c-1647-4c02-2e7759850d70"><li><p id="_bbecbb7a-6e7b-77fa-0fc8-9259ae805ab5">Implement an EXPRESS schema parser or use an existing library to load and interpret ARM and MIM schemas.</p>
</li>
<li><p id="_22259b9a-b452-4658-5664-96b3d08cca72">Create internal representations of the schemas that allow for efficient querying of entities, attributes, and relationships.</p>
</li>
</ol>
</clause>

<clause id="_9f7ee608-739e-9c18-6f7d-5e8e6fed05ad" inline-header="false" obligation="normative">
<title id="_e7483f8f-1b25-a009-df7b-f54258114c28">Validation</title>
<ol id="_2eabfe18-c3ec-870c-40d4-4c48301fb7e2"><li><p id="_efef517e-76a6-202e-eab9-4189a49b2c4c">Implement validation checks based on the rules outlined in the “Validation rules” section.</p>
</li>
<li><p id="_24c3185b-6eec-0623-8925-bcccff2c0d36">Perform two-pass validation:</p>
<ol id="_de7f3886-fe6a-c0ee-e215-f5d73b165dfe"><li><p id="_6204db8d-4437-a427-772b-762c926f9d85">First pass: Check syntax and basic semantic rules (e.g., entity and attribute existence).</p>
</li>
<li><p id="_7654798e-6a7b-48ea-1432-a65978dee978">Second pass: Validate complex semantic rules (e.g., consistency of reference paths).</p>
</li>
</ol>
</li>
<li><p id="_b8b1bf78-c305-7c42-e980-a0a422a97e96">Provide clear and informative error messages for validation failures.</p>
</li>
</ol>
</clause>

<clause id="_76af08b7-9ccc-463e-a3db-1cd21f161d83" inline-header="false" obligation="normative">
<title id="_c574d54d-a313-beba-9b0c-7269dd7ab48d">Reference path interpretation</title>
<ol id="_a1711cc9-a848-4810-fd1d-30410d5548ed"><li><p id="_a86d6340-bf3a-11a2-5f8d-3ea4c7db1891">Implement a separate parser for the reference path syntax.</p>
</li>
<li><p id="_cf883208-a76b-d9fb-a2e6-5734d6ea8fa5">Develop algorithms to traverse reference paths within the context of the loaded schemas.</p>
</li>
<li><p id="_affa6278-7aec-d8c9-79b5-d2e2276f619e">Implement functions to evaluate constraints specified in reference paths.</p>
</li>
</ol>
</clause>

<clause id="_59384379-e77d-013a-c41b-a25faa9600ed" inline-header="false" obligation="normative">
<title id="_da5286d4-337d-9c40-5cfe-bf0a22d11485">Performance considerations</title>
<ol id="_38a8ac16-a538-2e04-95d7-b6eef1d2a25a"><li><p id="_68f972eb-6da9-f98c-3aea-6c26b42b2480">Use efficient data structures (e.g., hash tables) for quick lookups of schema elements.</p>
</li>
<li><p id="_bac68cb0-edab-8203-813b-a14ef079aafb">Implement caching mechanisms for frequently accessed schema information.</p>
</li>
<li><p id="_8f90318d-57fc-1c6b-a60e-c3025e676e21">Consider parallel processing for validating multiple entity or attribute mappings simultaneously.</p>
</li>
</ol>
</clause>

<clause id="_b9ed2d61-ff22-7e2b-4591-dd38bb4b9fb3" inline-header="false" obligation="normative">
<title id="_40f74f9e-e674-40cf-4b7c-9deade6b7210">Extensibility</title>
<ol id="_5acf938e-16c7-b844-662c-649c5ad9f97c"><li><p id="_ef8b2042-8f3f-465b-627e-1984274dfa0d">Design the implementation to be extensible, allowing for future enhancements to the EXPRESS-Q language.</p>
</li>
<li><p id="_811549c8-5eb4-c7c2-43c3-f7aa4cc647de">Use modular design to separate concerns (e.g., parsing, schema handling, validation).</p>
</li>
</ol>
</clause>

<clause id="_b0fa769e-515e-3616-281d-4dbe4e92775f" inline-header="false" obligation="normative">
<title id="_b2ed1888-231d-66bc-a550-841064959158">Integration</title>
<ol id="_3a121c98-8c99-871d-106a-399d1fc6eece"><li><p id="_1e30fd28-a504-aefa-754e-b278205a5f12">Provide APIs or interfaces for integrating the EXPRESS-Q parser and validator into larger systems or workflows.</p>
</li>
<li><p id="_0e017fc7-617f-11ea-286d-cca0793287d2">Consider implementing export functionality to generate reports or machine-readable representations of the validation results.</p>
</li>
</ol>
</clause>
</clause>

<clause id="_8b6d60fb-04dd-05f9-8f91-439cda8bdb80" inline-header="false" obligation="normative">
<title id="_eb543d41-1d7c-a3bd-ee5f-b09a4f2bbcab">Use cases and examples</title>
<clause id="_19a99d88-4b1d-8421-026c-da9feabbff69" inline-header="false" obligation="normative">
<title id="_1d0a0e6e-9129-6d18-fb0a-a14109f5544f">General</title>
<p id="_4f486132-529a-f182-539c-ed260427e14e">This section provides examples of how EXPRESS-Q can be used in various scenarios related to STEP application protocols.</p>
</clause>

<clause id="_558e6ef4-df8e-00af-7d0c-2018ad3a827c" inline-header="false" obligation="normative">
<title id="_467ff419-c74d-7baf-5f18-4e9530a887fd">Use case 1: Mapping a module with cross-schema references</title>
<p id="_d31a53be-788a-881e-32e6-9ce33213d290">In this example, we demonstrate how EXPRESS-Q maps the Activity module, where the ARM entity  <tt>Activity</tt> references <tt>Activity_method</tt> from a different module. EXPRESS links enable cross-document reference resolution in the published documentation.</p>

<sourcecode id="_1d303daf-20d8-f4ad-7aa3-2d1ab21e8450"><body>ENTITY_MAPPING &lt;&lt;express:Activity_arm.Activity,Activity&gt;&gt;;
AIM_ELEMENT: "&lt;&lt;express:action_schema.executed_action,executed_action&gt;&gt;";
EXPRESS_REF: ["action_schema"];
REFPATH: {
  executed_action &lt;= action
};

ATTRIBUTE_MAPPING id;
ASSERTION_TO: "id";
AIM_ELEMENT: "id_attribute.attribute_value";
REFPATH: {
  executed_action
  executed_action &lt;= action
  action &lt;- id_attribute.identified_item
  id_attribute.attribute_value
};
END_ATTRIBUTE_MAPPING;

ATTRIBUTE_MAPPING name;
ASSERTION_TO: "name";
AIM_ELEMENT: "action.name";
REFPATH: {
  executed_action
  executed_action &lt;= action
  action.name
};
END_ATTRIBUTE_MAPPING;

ATTRIBUTE_MAPPING description;
ASSERTION_TO: "description";
AIM_ELEMENT: "action.description";
REFPATH: {
  executed_action
  executed_action &lt;= action
  action.description
};
END_ATTRIBUTE_MAPPING;

ATTRIBUTE_MAPPING chosen_method;
ASSERTION_TO: "&lt;&lt;express:Activity_method_arm.Activity_method,Activity_method&gt;&gt;";
AIM_ELEMENT: "PATH";
REFPATH: {
  executed_action
  executed_action &lt;= action
  action.chosen_method -&gt; action_method
  action_method
};
END_ATTRIBUTE_MAPPING;

END_ENTITY_MAPPING;

ENTITY_MAPPING &lt;&lt;express:Activity_arm.Activity_relationship,Activity_relationship&gt;&gt;;
AIM_ELEMENT: "&lt;&lt;express:action_schema.action_relationship,action_relationship&gt;&gt;";

ATTRIBUTE_MAPPING name;
ASSERTION_TO: "name";
AIM_ELEMENT: "action_relationship.name";
END_ATTRIBUTE_MAPPING;

ATTRIBUTE_MAPPING description;
ASSERTION_TO: "description";
AIM_ELEMENT: "action_relationship.description";
END_ATTRIBUTE_MAPPING;

ATTRIBUTE_MAPPING related_activity;
ASSERTION_TO: "&lt;&lt;express:Activity_arm.Activity,Activity&gt;&gt;";
AIM_ELEMENT: "PATH";
REFPATH: {
  action_relationship
  action_relationship.related_action -&gt; action
  action =&gt; executed_action
};
END_ATTRIBUTE_MAPPING;

ATTRIBUTE_MAPPING relating_activity;
ASSERTION_TO: "&lt;&lt;express:Activity_arm.Activity,Activity&gt;&gt;";
AIM_ELEMENT: "PATH";
REFPATH: {
  action_relationship
  action_relationship.relating_action -&gt; action
  action =&gt; executed_action
};
END_ATTRIBUTE_MAPPING;

END_ENTITY_MAPPING;</body></sourcecode>


<p id="_b7608643-5dd2-d221-11bb-0301c9755d99">This example demonstrates how EXPRESS links in the entity name, AIM element, and ASSERTION_TO fields enable the published document to generate cross-references to other modules and resource schemas.</p>
</clause>

<clause id="_b860f4bb-5d97-2a07-594f-4157a9cc283c" inline-header="false" obligation="normative">
<title id="_e1873ca0-a036-6241-8bf6-6a0085ebfeee">Use case 2: Mapping with alternative representations</title>
<p id="_55e3cd2b-1991-7f44-edf6-34abbcbf3934">This example shows how EXPRESS-Q can handle cases where an ARM entity might be mapped to different MIM representations based on certain conditions.</p>

<sourcecode id="_ddf49642-6a81-6ca2-daf1-2c91dd556298"><body>ENTITY_MAPPING GeometricRepresentation;
ALT_MAP: ["shape_representation", "tessellated_shape_representation"];

REFPATH: {
  (shape_representation &lt;= representation
   [representation.context_of_items-&gt;geometric_representation_context]) |
  (tessellated_shape_representation &lt;= representation
   [representation.context_of_items-&gt;geometric_representation_context])
};

ATTRIBUTE_MAPPING items;
ASSERTION_TO: "SET OF geometric_representation_item";
REFPATH: {
  representation.items[i] -&gt; geometric_representation_item
};
END_ATTRIBUTE_MAPPING;

END_ENTITY_MAPPING;</body></sourcecode>


<p id="_aa47875c-b8c9-3ffb-0755-5211c2be6022">This example demonstrates how EXPRESS-Q can handle alternative mappings for a single ARM entity. The GeometricRepresentation entity can be mapped to either a shape_representation or a tessellated_shape_representation in the MIM schema, depending on the specific requirements of the application.</p>
</clause>
</clause>

<clause id="_20a83cf4-e54d-07a4-640d-33d3fcc96c66" inline-header="false" obligation="normative">
<title id="_7f9dd4d9-71ce-ec54-ede4-e588600c1862">Summary</title>
<p id="_68fb2ac4-0597-c49e-c265-c8bb8fd756ff">EXPRESS-Q provides a powerful and flexible language for defining mappings between ARM and MIM schemas in the context of STEP application protocols. By offering a standardized way to express these mappings, EXPRESS-Q facilitates more robust and reliable data exchange in complex engineering and manufacturing environments.</p>

<p id="_c738c46e-0d52-322a-7e40-d0ed48105870">Key features of EXPRESS-Q include:</p>

<ol id="_56b20262-cd78-83b1-6a34-52863bb371e9"><li><p id="_b6721ecf-bbdd-eee0-5e4f-9964d0698b2a">A syntax that is familiar to users of EXPRESS, reducing the learning curve.</p>
</li>
<li><p id="_3b7f9553-f771-1cbd-a5c6-dff3bb284c7e">The ability to define detailed mappings between ARM and MIM entities and attributes.</p>
</li>
<li><p id="_8ef6199d-72f8-91e2-df61-1b8f1f28cf72">Support for complex reference paths, allowing for navigation through intricate schema relationships.</p>
</li>
<li><p id="_a16cebe4-44c7-d70e-39f8-f5802d6d6283">Mechanisms for specifying constraints and alternative mappings.</p>
</li>
<li><p id="_bd6b9787-9851-ea5f-0234-58b1e7b2c4a1">Clear separation of entity and attribute mappings for improved readability and maintainability.</p>
</li>
</ol>

<p id="_d622d890-8c6c-4b1f-6afe-e43fd6e06480">The validation rules and implementation guidelines provided in this specification aim to ensure consistent interpretation and implementation of EXPRESS-Q across different tools and systems.</p>
</clause>

<clause id="_9fe975fc-e6b4-1af8-89e1-2e1bb8c191b8" inline-header="false" obligation="normative">
<title id="_c25ad391-aa3c-533a-46fb-5b71ac154745">Future considerations</title>
<p id="_62ba8cbc-353a-76f6-ac96-9686963e845d">As the use of EXPRESS-Q grows and evolves, several areas may be considered for future enhancements:</p>

<clause id="_c2b817e1-5bbe-c886-fc6c-4e2e06693364" inline-header="false" obligation="normative">
<title id="_0869753b-103d-d93c-f6e2-ccf363d05213">Extended constraint language</title>
<p id="_d53ef69f-7270-2802-ad94-17e56df2fe72">Future versions of EXPRESS-Q might benefit from a more expressive constraint language, allowing for more complex conditions and transformations to be specified within mappings.</p>
</clause>

<clause id="_81923ee0-d76f-9460-5e3f-470ad298760d" inline-header="false" obligation="normative">
<title id="_d5bba007-b359-907d-bb81-4567a7883413">Integration with other standards</title>
<p id="_f91c4368-b784-9b0c-353c-a2a06d251e8c">Consideration should be given to how EXPRESS-Q can be integrated with other relevant standards and technologies, such as ontology languages or model transformation frameworks.</p>
</clause>

<clause id="_59cc8870-ca96-cbde-11b6-156d9e0ddf82" inline-header="false" obligation="normative">
<title id="_9eac84d5-fbd1-a8f2-259a-f89417d4ef66">Tool support</title>
<p id="_4b8c9025-7cce-e797-7796-c0c47429eb6b">Development of standardized libraries and tools for parsing, validating, and processing EXPRESS-Q files would greatly facilitate its adoption and use.</p>
</clause>

<clause id="_f995aa11-a051-9d95-26c5-492100d0d0aa" inline-header="false" obligation="normative">
<title id="_182f46f5-616e-157f-f4b9-ba56dda84da5">Reverse mapping capabilities</title>
<p id="_9485e94e-f305-ee96-5da7-043034e6b27e">Future versions might include capabilities for defining bi-directional mappings, allowing for the generation of ARM instances from MIM data.</p>
</clause>

<clause id="_55cd70d3-8253-a389-60e6-f309827be0db" inline-header="false" obligation="normative">
<title id="_c9f36da6-d2d6-233b-b5dc-3c59e6818d33">Performance optimizations</title>
<p id="_c27c6529-188b-c782-3e92-6a3c387dddbf">As EXPRESS-Q is used with increasingly large and complex schemas, performance optimizations in both the language design and implementation guidelines may become necessary.</p>
</clause>
</clause>






</sections><annex id="_92b510bc-9c2e-a2d9-6d47-5575c667014f" inline-header="false" obligation="informative">
<title id="_920db8c5-a492-782a-13ab-e9eb45752d01">Complete EXPRESS-Q file example</title>
<p id="_4127156a-5e77-d7cc-aaad-9be023571d18">This annex provides a complete example of an EXPRESS-Q file for the Activity module, demonstrating EXPRESS links for cross-schema references.</p>

<sourcecode id="_f677bcb9-666d-a0b5-4789-9ed23be07d4a"><body>-- EXPRESS-Q file for the Activity module (ISO 10303-1047)

ENTITY_MAPPING &lt;&lt;express:Activity_arm.Activity,Activity&gt;&gt;;
EXTENSIBLE: FALSE;
AIM_ELEMENT: "&lt;&lt;express:action_schema.executed_action,executed_action&gt;&gt;";
EXPRESS_REF: ["action_schema", "basic_attribute_schema"];
REFPATH: {
  executed_action &lt;= action
};

ATTRIBUTE_MAPPING id;
ASSERTION_TO: "id";
AIM_ELEMENT: "id_attribute.attribute_value";
REFPATH: {
  executed_action
  executed_action &lt;= action
  action &lt;- id_attribute.identified_item
  id_attribute.attribute_value
};
END_ATTRIBUTE_MAPPING;

ATTRIBUTE_MAPPING name;
ASSERTION_TO: "name";
AIM_ELEMENT: "action.name";
REFPATH: {
  executed_action
  executed_action &lt;= action
  action.name
};
END_ATTRIBUTE_MAPPING;

ATTRIBUTE_MAPPING description;
ASSERTION_TO: "description";
AIM_ELEMENT: "action.description";
REFPATH: {
  executed_action
  executed_action &lt;= action
  action.description
};
END_ATTRIBUTE_MAPPING;

ATTRIBUTE_MAPPING chosen_method;
ASSERTION_TO: "&lt;&lt;express:Activity_method_arm.Activity_method,Activity_method&gt;&gt;";
AIM_ELEMENT: "PATH";
REFPATH: {
  executed_action
  executed_action &lt;= action
  action.chosen_method -&gt; action_method
  action_method
};
END_ATTRIBUTE_MAPPING;

END_ENTITY_MAPPING;

ENTITY_MAPPING &lt;&lt;express:Activity_arm.Activity_relationship,Activity_relationship&gt;&gt;;
EXTENSIBLE: FALSE;
AIM_ELEMENT: "&lt;&lt;express:action_schema.action_relationship,action_relationship&gt;&gt;";

ATTRIBUTE_MAPPING name;
ASSERTION_TO: "name";
AIM_ELEMENT: "action_relationship.name";
END_ATTRIBUTE_MAPPING;

ATTRIBUTE_MAPPING description;
ASSERTION_TO: "description";
AIM_ELEMENT: "action_relationship.description";
END_ATTRIBUTE_MAPPING;

ATTRIBUTE_MAPPING related_activity;
ASSERTION_TO: "&lt;&lt;express:Activity_arm.Activity,Activity&gt;&gt;";
AIM_ELEMENT: "PATH";
REFPATH: {
  action_relationship
  action_relationship.related_action -&gt; action
  action =&gt; executed_action
};
END_ATTRIBUTE_MAPPING;

ATTRIBUTE_MAPPING relating_activity;
ASSERTION_TO: "&lt;&lt;express:Activity_arm.Activity,Activity&gt;&gt;";
AIM_ELEMENT: "PATH";
REFPATH: {
  action_relationship
  action_relationship.relating_action -&gt; action
  action =&gt; executed_action
};
END_ATTRIBUTE_MAPPING;

END_ENTITY_MAPPING;

ENTITY_MAPPING &lt;&lt;express:Activity_arm.Activity_status,Activity_status&gt;&gt;;
EXTENSIBLE: FALSE;
AIM_ELEMENT: "&lt;&lt;express:action_schema.action_status,action_status&gt;&gt;";

ATTRIBUTE_MAPPING assigned_activity;
ASSERTION_TO: "&lt;&lt;express:Activity_arm.Activity,Activity&gt;&gt;";
AIM_ELEMENT: "PATH";
REFPATH: {
  action_status
  action_status.assigned_action -&gt; executed_action
};
END_ATTRIBUTE_MAPPING;

ATTRIBUTE_MAPPING status;
ASSERTION_TO: "status";
AIM_ELEMENT: "action_status.status";
END_ATTRIBUTE_MAPPING;

END_ENTITY_MAPPING;

ENTITY_MAPPING &lt;&lt;express:Activity_arm.Applied_activity_assignment,Applied_activity_assignment&gt;&gt;;
EXTENSIBLE: FALSE;
AIM_ELEMENT: "&lt;&lt;express:Activity_mim.applied_action_assignment,applied_action_assignment&gt;&gt;";
EXPRESS_REF: ["management_resources_schema"];

ATTRIBUTE_MAPPING assigned_activity;
ASSERTION_TO: "&lt;&lt;express:Activity_arm.Activity,Activity&gt;&gt;";
AIM_ELEMENT: "PATH";
REFPATH: {
  applied_action_assignment
  applied_action_assignment &lt;= action_assignment
  action_assignment
  action_assignment.assigned_action -&gt; action
  action =&gt; executed_action
};
END_ATTRIBUTE_MAPPING;

ATTRIBUTE_MAPPING items;
ASSERTION_TO: "&lt;&lt;express:Activity_arm.activity_item,activity_item&gt;&gt;";
AIM_ELEMENT: "PATH";
REFPATH: {
  applied_action_assignment
  applied_action_assignment.items[i] -&gt; action_items
};
END_ATTRIBUTE_MAPPING;

ATTRIBUTE_MAPPING role;
ASSERTION_TO: "role";
AIM_ELEMENT: "object_role.name";
REFPATH: {
  applied_action_assignment
  applied_action_assignment &lt;= action_assignment
  action_assignment.role -&gt; object_role
  object_role.name
};
END_ATTRIBUTE_MAPPING;

END_ENTITY_MAPPING;</body></sourcecode>


<p id="_e3fbda88-ebfb-4e25-eb63-e287af319407">This example demonstrates the complete mapping for the Activity module, including:</p>

<ul id="_da5f3ccc-65bd-d958-a66a-66d00f11ee96"><li><p id="_3cdb9780-e103-dc5b-4536-1e7d2138e388">EXPRESS links for entity names (<tt><eref bibitemid="express_Activity_arm.Activity" citeas=""><display-text>Activity</display-text></eref></tt>)</p>
</li>
<li><p id="_35135862-dff5-ec33-f282-c6f25338e154">EXPRESS links for AIM elements (<tt><eref bibitemid="express_action_schema.executed_action" citeas=""><display-text>executed_action</display-text></eref></tt>)</p>
</li>
<li><p id="_4d492b65-425d-c601-18d1-654e4f1a0f8a">EXPRESS links for cross-module assertions (<tt><eref bibitemid="express_Activity_method_arm.Activity_method" citeas=""><display-text>Activity_method</display-text></eref></tt>)</p>
</li>
<li><p id="_ad79967a-1197-79b8-6275-22705efb1264">Plain string AIM elements for attribute paths (<tt>action.name</tt>) and keywords (<tt>PATH</tt>)</p>
</li>
<li><p id="_cb1a76c3-8a0b-d46d-976c-f4259b76802e">Reference paths with subtype, supertype, and attribute relationships</p>
</li>
</ul>
</annex><annex id="_1883107a-fdd6-fdf1-4fb4-af1f8e80d0b5" inline-header="false" obligation="normative">
<title id="_5ec93c93-8ccd-714b-81b5-69e6f39825a5">YAML serialization</title>
<clause id="_c29322b2-f4cf-f901-ab7b-72cee2266510" inline-header="false" obligation="normative">
<title id="_d9eae85b-8aa2-6018-de0c-0275f7888792">General</title>
<p id="_df071d3b-03db-1d94-5904-c6afe55af28e">This annex defines the YAML serialization format for EXPRESS-Q mapping specifications. Each application module’s mapping specification is stored as a YAML file named  <tt>mapping.yaml</tt> in the module’s schema directory.</p>

<p id="_32170f57-80f0-8a0b-3f7d-50e9c7bdaeba">The YAML serialization provides a machine-readable representation of the EXPRESS-Q constructs defined in this specification, suitable for automated processing, validation, and document generation.</p>
</clause>

<clause id="_92d0926c-a175-5543-de6b-90593f4f8c3d" inline-header="false" obligation="normative">
<title id="_1a6c1a32-7cd8-08fa-15c5-ea0a0ab092a9">File structure</title>
<p id="_295f0601-d70e-07db-6624-199f93358f6a">A mapping YAML file has a single top-level key <tt>ae</tt> (application elements) containing an ordered list of entity mappings.</p>

<sourcecode id="_0ab34a1b-10a9-9020-cea2-277e246a1d23" lang="yaml"><body>---
ae:
- entity: ...
  aimelt: ...
  aa:
  - attribute: ...
    ...</body></sourcecode>

</clause>

<clause id="_2d2a614d-8188-e6e7-b1f1-4d8bf20f2c93" inline-header="false" obligation="normative">
<title id="_8c2a2a6a-c067-87d7-f315-f24f08729de1">Schema</title>
<p id="_aff07a02-7c3c-c706-2993-d419a0ad6f3e">The following describes each field in the YAML serialization.</p>

<clause id="_8a42ff6c-2731-c924-9654-a16b6585d51c" inline-header="false" obligation="normative">
<title id="_421881f5-9ed1-d26b-e75e-27963c365fd1">Entity mapping</title>
<p id="_f224b64a-0cd8-834a-c6c2-5685fab82ef8">Each entry in the <tt>ae</tt> list represents an entity mapping and contains the following fields:</p>

<dl id="_934e3f3e-7b75-ab87-2625-cd72180c14d4"><dt><tt>entity</tt></dt>
<dd id="_42aef03b-ec17-3e00-d19a-deaf76fc4313"><p id="_638647e3-ad6b-e7db-a146-c3fe1e136e5b">(required) The ARM entity being mapped. The value shall be an EXPRESS link identifying the ARM schema and entity: <tt><eref bibitemid="express_Schema_arm.Entity_name" citeas=""><display-text>Entity_name</display-text></eref></tt>.<br/> For backward compatibility, a plain entity name is also accepted.</p>
</dd>
<dt><tt>aimelt</tt></dt>
<dd id="_9c9b7a9a-fbd3-4433-3ee4-22987c540bd3"><p id="_d73454e8-52d6-2f56-c9cd-8e7d6589db0b">(required) The corresponding MIM element. The value shall be one of:</p>
<ul id="_1eb1a367-41ce-d170-699d-19be5bdde148"><li><p id="_cb46ca24-e85e-f7ac-aaa6-9faca46a5c33">An EXPRESS link for entity references: <tt><eref bibitemid="express_schema_name.entity_name" citeas=""><display-text>entity_name</display-text></eref></tt></p>
</li>
<li><p id="_c3236027-492f-d9d1-1f32-6e1811e1bf57">A plain string for keywords: <tt>PATH</tt>, <tt>IDENTICAL MAPPING</tt>, <tt>NO MAPPING EXTENSION PROVIDED</tt></p>
</li>
<li><p id="_fd2424b1-bd8a-caab-51de-dbb5150a9bcf">A plain string for <tt>/SUPERTYPE(...)/</tt>, <tt>/SUBTYPE(...)/</tt>, or <tt>/MAPPING_OF(...)/</tt> constructs</p>
</li>
<li><p id="_871ddaf7-25ec-5426-3b4c-ef91849c9a9a">A plain string for dotted attribute paths: <tt>entity.attribute</tt></p>
</li>
<li><p id="_dfcfa462-d75c-6684-6e86-70c697b2323f">A parenthesized or bracketed list of the above for multiple MIM elements</p>
</li>
</ul>
</dd>
<dt><tt>extensible</tt></dt>
<dd id="_1d224013-f0ce-c42d-324d-453a5990ff80"><p id="_658e5d09-09e4-a99d-862d-883f25e54a34">(optional) Boolean indicating whether the mapping is extensible.</p>
</dd>
<dt><tt>alt_map</tt></dt>
<dd id="_0ffccc4d-2fa4-2148-d19c-11bb00ba5a74"><p id="_ac0f3ef4-6c9a-53ba-3e3f-111ccd26790d">(optional) List of alternative MIM entity names.</p>
</dd>
<dt><tt>original_module</tt></dt>
<dd id="_588c4e6f-074a-62c1-b0f5-45226d046fa9"><p id="_0e4e862b-db6f-8aad-c9e1-5d6941f21f4b">(optional) Name of the module from which this mapping originates (for inherited mappings).</p>
</dd>
<dt><tt>description</tt></dt>
<dd id="_db79cf47-236e-7ffd-55f3-87d027b695c4"><p id="_674cc66d-9d4d-10ce-5538-0f194a9495e8">(optional) Additional descriptive text.</p>
</dd>
<dt><tt>aa</tt></dt>
<dd id="_b54ce7d2-98d4-e207-7e92-830f70c0076c"><p id="_1187ebf7-7f8a-24e1-5ea6-91157e8d2206">(optional) List of attribute mappings for this entity.</p>
</dd>
</dl>
</clause>

<clause id="_cd8ccc58-c2a7-89ae-1f26-b8f7324b04db" inline-header="false" obligation="normative">
<title id="_93ff5395-a208-762f-46d8-4689bbe23fed">Attribute mapping</title>
<p id="_7bf83d92-6c33-01a5-45c0-91e5b39989b5">Each entry in the <tt>aa</tt> list represents an attribute mapping and contains the following fields:</p>

<dl id="_f75b3179-bf51-3e11-1e51-6ea159be8343"><dt><tt>attribute</tt></dt>
<dd id="_3488fec3-5999-606d-970d-257a33587caa"><p id="_a086202a-e094-bae7-f8b8-c8015f1e39e9">(required) The ARM attribute name being mapped.</p>
</dd>
<dt><tt>aimelt</tt></dt>
<dd id="_eb2a5fd7-56cd-47be-897f-b83c6c633eb3"><p id="_af3cd0b2-8a69-bd63-84ce-51b064eed22f">(optional) The corresponding MIM element. At the attribute level, the value is a plain string (not an EXPRESS link). Typical values include:</p>
<ul id="_253ad85e-43d1-78c1-d1ae-13192be4c58d"><li><p id="_19058600-67b2-8ac1-8418-799c38bfbe7d">A dotted attribute path: <tt>action.name</tt></p>
</li>
<li><p id="_0f7dae61-68b7-e964-1736-c9fab746b7b4">The keyword <tt>PATH</tt> (when assertion_to is present)</p>
</li>
<li><p id="_ab167e84-0a4f-da69-f182-df6fbee908e9">The keyword <tt>IDENTICAL MAPPING</tt></p>
</li>
</ul>
</dd>
<dt><tt>assertion_to</tt></dt>
<dd id="_4bbface2-8b9b-5548-b697-3c6a6cb7ae2b"><p id="_3201e45e-9163-be11-8dc6-64adaf163221">(optional) The target entity or type that this attribute refers to. When present, the value shall be an EXPRESS link: <tt><eref bibitemid="express_Schema_arm.Entity_name" citeas=""><display-text>Entity_name</display-text></eref></tt>.<br/> The special value  <tt>*</tt> indicates any type.<br/> For backward compatibility, a plain entity name is also accepted.</p>
</dd>
<dt><tt>refpath</tt></dt>
<dd id="_7b5fa004-8403-e0e4-d3ab-e502f59cccb2"><p id="_8dc446f7-52e4-ff77-35b1-3b49aa681bcd">(optional) The reference path specifying the detailed mapping between ARM and MIM elements.</p>
</dd>
</dl>
</clause>

<clause id="_9147f93e-8a09-afb0-c77c-4a8d5d602fb6" inline-header="false" obligation="normative">
<title id="_8bb8b4fd-cbe9-3b60-9c59-c8e8daffcc1e">Reference path</title>
<p id="_b6fb5b05-b47e-1819-d63d-430b3f150b6c">The <tt>refpath</tt> field contains an object with a single key:</p>

<dl id="_9a22540a-0b41-d5b6-435c-7891541c9868"><dt><tt>content</tt></dt>
<dd id="_5d499c73-1318-8412-b2e5-87bf3d409f86"><p id="_5ad70689-ba93-1219-6fc3-c7e0e784556b">(required) A multi-line string containing the reference path expression using the syntax defined in  <xref target="reference-path-declaration"/>. Lines are separated by newline characters. The YAML block scalar  <tt>|-</tt> is used to preserve line breaks and strip the trailing newline.</p>
</dd>
</dl>

<sourcecode id="_03d5e257-e12c-d6c2-e4d0-5a29387ca4f8" lang="yaml"><body>refpath:
  content: |-
    executed_action
    executed_action &lt;= action
    action.chosen_method -&gt; action_method
    action_method</body></sourcecode>

</clause>
</clause>

<clause id="_ab10678d-b7b1-1726-5644-c9b308942c27" inline-header="false" obligation="normative">
<title id="_ebbde230-81f6-8ceb-b14f-657786faed84">EXPRESS link format</title>
<p id="_1d7f773e-cab6-a9db-d75d-d2e7193216e5">EXPRESS links in YAML values use the following syntax:</p>

<sourcecode id="_6f73b2ab-782c-1132-e28b-65b1e0f1cbc2"><body>&lt;&lt;express:schema_name.element_name,display_name&gt;&gt;</body></sourcecode>


<p id="_7fe5ea50-b3ca-4c7b-c7af-0ad20901a0c4">Where:</p>

<dl id="_c27800d2-a547-14de-8c55-fc18a8f7a0e1"><dt><tt>schema_name</tt></dt>
<dd id="_fece3e9f-5586-83d7-d20d-73cf6b197400"><p id="_2acb0f8d-7060-5c27-d3b9-afa6a41a3041">The name of the EXPRESS schema containing the element.</p>
</dd>
<dt><tt>element_name</tt></dt>
<dd id="_74fa5e1f-f781-9565-072b-7814551b97ed"><p id="_06421856-d3c5-8896-dc97-5979485a21b4">The name of the entity, type, or function within the schema.</p>
</dd>
<dt><tt>display_name</tt></dt>
<dd id="_3848d600-e549-942b-18dc-99460066fbe2"><p id="_d82ff71a-7b6c-9c60-ecff-b91d98fbd174">The name displayed in rendered documentation (shall match <tt>element_name</tt>).</p>
</dd>
</dl>

<p id="_de2278f4-79b0-4884-9df1-5448f2c4bc9e">The schema name encodes the origin of the referenced element, eliminating the need for a separate  <tt>source</tt> field.</p>
</clause>

<clause id="_54524202-1320-0caa-e81f-f7ba48c3fe0b" inline-header="false" obligation="normative">
<title id="_7f8fd74a-3e74-0428-7e51-741d218fb983">Correspondence to EBNF constructs</title>
<p id="_449483f1-72fa-a84b-b0ee-e073f31cda36">The following table shows the correspondence between EBNF constructs and YAML keys:</p>

<table id="_ea7f5758-68ee-f42d-072e-76a79b94610f"><colgroup><col width="28.5714%"/><col width="28.5714%"/><col width="42.8572%"/></colgroup><thead><tr id="_16a46fda-935a-8f22-f04c-c91b3ac6a33a"><th id="_addf349a-b6dc-c781-d479-3408bde684ce" valign="top" align="left">EBNF construct</th>
<th id="_903bc8dd-4463-6d84-f2d4-715a975f93c7" valign="top" align="left">YAML key</th>
<th id="_a4f291ae-b834-3f3c-6305-699b01a5fc0d" valign="top" align="left">Notes</th>
</tr></thead>
<tbody><tr id="_efd7397a-1cff-06a2-ec9f-2794a16bc209"><td id="_112109d2-6797-3d28-beee-27907e31643c" valign="top" align="left"><tt>ENTITY_MAPPING entity_ref</tt></td>
<td id="_a07cd1ee-b2c0-7af5-2cca-49b844341d52" valign="top" align="left"><tt>ae[].entity</tt></td>
<td id="_b9df78eb-7571-9594-2a04-cff1823694d8" valign="top" align="left">EXPRESS link or plain name</td>
</tr><tr id="_9e50b1cf-d062-d3e9-1b49-1ab4fc3a9283"><td id="_7d0a6503-3166-3cb5-e8a5-12c452a59996" valign="top" align="left"><tt>aim_element_decl</tt></td>
<td id="_e7f1a87e-5b37-f7b1-3281-3ad5d0e33922" valign="top" align="left"><tt>ae[].aimelt</tt> or <tt>ae[].aa[].aimelt</tt></td>
<td id="_f80edb10-da25-08f7-b269-c185adc9b0ad" valign="top" align="left">Entity-level: EXPRESS link or string; attribute-level: plain string</td>
</tr><tr id="_a4f09ede-555a-bdc4-7fe3-2c92e213064c"><td id="_fb548b33-3ce4-4187-0d2c-102e8d38a230" valign="top" align="left"><tt>ASSERTION_TO</tt></td>
<td id="_e43ed59d-4b57-620a-f8ca-71851ec7d48f" valign="top" align="left"><tt>ae[].aa[].assertion_to</tt></td>
<td id="_fdd22355-4f89-b8a6-b5b2-fcb13cbe75c7" valign="top" align="left">EXPRESS link or plain string</td>
</tr><tr id="_5c952def-3536-ce8d-3c75-ea4663c499fc"><td id="_753e689b-d7e4-8b85-5238-351e4fe865be" valign="top" align="left"><tt>extensible_decl</tt></td>
<td id="_f05638fd-5314-9e1c-85e9-79f3fb4189d3" valign="top" align="left"><tt>ae[].extensible</tt></td>
<td id="_9e783f64-98fd-0834-b54d-bb9cbd55f6e1" valign="top" align="left">Boolean</td>
</tr><tr id="_c555ac8e-d131-b1e5-dccd-b38d43d1a3cc"><td id="_8fc49c54-77f0-eadf-04f4-489c5d7ba4e0" valign="top" align="left"><tt>alt_map_decl</tt></td>
<td id="_a2d5b8a2-0083-3086-c9cf-dc677dae9204" valign="top" align="left"><tt>ae[].alt_map</tt></td>
<td id="_25fee590-2a56-018d-a695-c961904fda32" valign="top" align="left">List of strings</td>
</tr><tr id="_5952ec8c-44ad-63b8-61ba-da95e1962adf"><td id="_e1715384-fa35-bde2-78ba-442aa2999313" valign="top" align="left"><tt>refpath_decl</tt></td>
<td id="_54fbf6ae-1f5c-d001-3c8c-9e89e6f925ce" valign="top" align="left"><tt>ae[].aa[].refpath.content</tt></td>
<td id="_da59bc57-7b8f-7efe-b81f-d3daa724fe39" valign="top" align="left">Multi-line string</td>
</tr><tr id="_adc1bf44-d2e0-0c37-bb0b-2eaac29f7390"><td id="_c8851e9e-5876-bab7-e7c1-6516b56cf117" valign="top" align="left"><tt>express_ref_decl</tt></td>
<td id="_5ae525cf-926b-fb9e-32ae-67fc4c168db1" valign="top" align="left">Not serialized</td>
<td id="_4b28d4bd-8e96-9152-26b8-a76de53d441a" valign="top" align="left">Schema references are encoded in EXPRESS links</td>
</tr><tr id="_45b3bb1c-0866-155d-1650-7738a92695f2"><td id="_8a65e0e4-e86d-6f3d-3c80-6df0465cc738" valign="top" align="left"><tt>source_decl</tt></td>
<td id="_2ae9bc82-2619-7e6a-ab2c-82f6561a77c2" valign="top" align="left">Not serialized</td>
<td id="_78cb94ca-d4e9-c255-84f9-dc46c83d4c7b" valign="top" align="left">Source is derived from EXPRESS links</td>
</tr></tbody>
</table>
</clause>

<clause id="_e7b0b27f-b24e-d854-d24d-5c4aab65bad5" inline-header="false" obligation="normative">
<title id="_1e44264d-9f31-5cc8-b35f-a7ee7a941789">Complete example</title>
<p id="_62cd5bb1-4bbc-8ad5-4ae8-6b81dca14a67">The following shows the complete YAML serialization of the Activity module mapping specification:</p>

<sourcecode id="_34b86f7d-c0a7-77a1-defc-0b903125f059" lang="yaml"><body>---
ae:
- entity: &lt;&lt;express:Activity_arm.Activity,Activity&gt;&gt;
  aimelt: &lt;&lt;express:action_schema.executed_action,executed_action&gt;&gt;
  aa:
  - attribute: name
    aimelt: action.name
    refpath:
      content: |-
        executed_action
        executed_action &lt;= action
        action.name
  - attribute: description
    aimelt: action.description
    refpath:
      content: |-
        executed_action
        executed_action &lt;= action
        action.description
  - attribute: chosen_method
    assertion_to: &lt;&lt;express:Activity_method_arm.Activity_method,Activity_method&gt;&gt;
    aimelt: PATH
    refpath:
      content: |-
        executed_action
        executed_action &lt;= action
        action.chosen_method -&gt; action_method
        action_method
  - attribute: id
    aimelt: id_attribute.attribute_value
    refpath:
      content: |-
        executed_action
        executed_action &lt;= action
        action &lt;- id_attribute.identified_item
        id_attribute.attribute_value
- entity: &lt;&lt;express:Activity_arm.Activity_relationship,Activity_relationship&gt;&gt;
  aimelt: &lt;&lt;express:action_schema.action_relationship,action_relationship&gt;&gt;
  aa:
  - attribute: description
    aimelt: action_relationship.description
  - attribute: name
    aimelt: action_relationship.name
  - attribute: related_activity
    assertion_to: &lt;&lt;express:Activity_arm.Activity,Activity&gt;&gt;
    aimelt: PATH
    refpath:
      content: |-
        action_relationship
        action_relationship.related_action -&gt; action
        action =&gt; executed_action
  - attribute: relating_activity
    assertion_to: &lt;&lt;express:Activity_arm.Activity,Activity&gt;&gt;
    aimelt: PATH
    refpath:
      content: |-
        action_relationship
        action_relationship.relating_action -&gt; action
        action =&gt; executed_action
- entity: &lt;&lt;express:Activity_arm.Activity_status,Activity_status&gt;&gt;
  aimelt: &lt;&lt;express:action_schema.action_status,action_status&gt;&gt;
  aa:
  - attribute: assigned_activity
    assertion_to: &lt;&lt;express:Activity_arm.Activity,Activity&gt;&gt;
    aimelt: PATH
    refpath:
      content: |-
        action_status
        action_status.assigned_action -&gt; executed_action
  - attribute: status
    aimelt: action_status.status
- entity: &lt;&lt;express:Activity_arm.Applied_activity_assignment,Applied_activity_assignment&gt;&gt;
  aimelt: &lt;&lt;express:Activity_mim.applied_action_assignment,applied_action_assignment&gt;&gt;
  aa:
  - attribute: assigned_activity
    assertion_to: &lt;&lt;express:Activity_arm.Activity,Activity&gt;&gt;
    aimelt: PATH
    refpath:
      content: |-
        applied_action_assignment
        applied_action_assignment &lt;= action_assignment
        action_assignment
        action_assignment.assigned_action -&gt; action
        action =&gt; executed_action
  - attribute: items
    assertion_to: &lt;&lt;express:Activity_arm.activity_item,activity_item&gt;&gt;
    aimelt: PATH
    refpath:
      content: |-
        applied_action_assignment
        applied_action_assignment.items[i] -&gt; action_items
  - attribute: role
    aimelt: object_role.name
    refpath:
      content: |-
        applied_action_assignment
        applied_action_assignment &lt;= action_assignment
        action_assignment.role -&gt; object_role
        object_role.name</body></sourcecode>

</clause>
</annex><bibliography><references id="_a010e18a-bc8d-7fa0-831c-3980760aaa49" normative="true" obligation="informative">
<title id="_270c5ee6-077e-f285-ff95-287984a30140">Normative references</title><p id="_49996d2b-65c1-916b-9bbf-42b933aa0025">The following documents are referred to in the text in such a way that some or all of their content constitutes requirements of this document. For dated references, only the edition cited applies. For undated references, the latest edition of the referenced document (including any amendments) applies.</p>
<bibitem id="_45ffccee-bd26-afe1-089c-6475ec50f20e" type="standard" schema-version="v1.5.6" anchor="ISO10303-1">
  <fetched>2026-04-22</fetched>
  
<title language="en" script="Latn" type="title-intro" format="text/plain">Industrial automation systems and integration</title>

  
<title language="en" script="Latn" type="title-main" format="text/plain">Product data representation and exchange</title>

  
<title language="en" script="Latn" type="title-part" format="text/plain">Part 1: Overview and fundamental principles</title>

  
<title language="en" script="Latn" type="main" format="text/plain">Industrial automation systems and integration — Product data representation and exchange — Part 1: Overview and fundamental principles</title>

  
<title language="fr" script="Latn" type="title-intro" format="text/plain">Systèmes d’automatisation industrielle et intégration</title>

  
<title language="fr" script="Latn" type="title-main" format="text/plain">Représentation et échange de données de produits</title>

  
<title language="fr" script="Latn" type="title-part" format="text/plain">Partie 1: Aperçu et principes fondamentaux</title>

  
<title language="fr" script="Latn" type="main" format="text/plain">Systèmes d’automatisation industrielle et intégration — Représentation et échange de données de produits — Partie 1: Aperçu et principes fondamentaux</title>

  <uri type="src">https://www.iso.org/standard/83105.html</uri>
  <uri type="obp">https://www.iso.org/obp/ui/en/#!iso:std:83105:en</uri>
  <uri type="rss">https://www.iso.org/contents/data/standard/08/31/83105.detail.rss</uri>
  <docidentifier type="ISO" primary="true">ISO 10303-1:2024</docidentifier>
  <docidentifier type="iso-reference">ISO 10303-1:2024(E)</docidentifier>
  <docidentifier type="URN">urn:iso:std:iso:10303:-1:stage-60.60</docidentifier>
  <docnumber>10303</docnumber>
  <date type="published">
    <on>2024-01</on>
  </date>
  <contributor>
    <role type="publisher"/>
    <organization>
      
<name>International Organization for Standardization</name>

      <abbreviation>ISO</abbreviation>
      <uri>www.iso.org</uri>
    </organization>
  </contributor>
  <contributor>
    <role type="author">
      <description>committee</description>
    </role>
    <organization>
      
<name>International Organization for Standardization</name>

      <subdivision type="technical-committee" subtype="TC">
        
<name>Industrial data</name>

        <identifier>ISO/TC 184/SC 4</identifier>
      </subdivision>
      <abbreviation>ISO</abbreviation>
    </organization>
  </contributor>
  <edition>3</edition>
  <language>en</language>
  <language>fr</language>
  <script>Latn</script>
  <abstract language="en" script="Latn">This document provides an overview of the ISO 10303 series.
This document defines the architectural principles of product information representation and exchange used in the ISO 10303 series. It specifies the characteristics of the various sets of parts in the ISO 10303 series and the relationships among them.
The following are within the scope of this document:
—     scope statement for the ISO 10303 series as a whole;
—     overview of the ISO 10303 series;
—     architectures of the ISO 10303 series;
—     structure of the ISO 10303 series;
—     overview of data specification methods used in the ISO 10303 series;
NOTE            This includes the EXPRESS data specification language and graphical presentation of product information models.
—     introduction to the ISO 10303 series:
—     integrated resources (IRs);
—     application interpreted constructs (AICs);
—     application modules (AMs);
—     application domain models (ADMs);
—     Core model;
—     business object models (deprecated);
—     application protocols (APs);
—     implementation methods;
—     usage guides;
—     conformance testing methodology and framework;
—     abstract test suites (ATSs);
—     scheme for identification of schemas and other information objects defined in the ISO 10303 series.</abstract>
  <abstract language="fr" script="Latn">This document provides an overview of the ISO 10303 series.
This document defines the architectural principles of product information representation and exchange used in the ISO 10303 series. It specifies the characteristics of the various sets of parts in the ISO 10303 series and the relationships among them.
The following are within the scope of this document:
—     scope statement for the ISO 10303 series as a whole;
—     overview of the ISO 10303 series;
—     architectures of the ISO 10303 series;
—     structure of the ISO 10303 series;
—     overview of data specification methods used in the ISO 10303 series;
NOTE            This includes the EXPRESS data specification language and graphical presentation of product information models.
—     introduction to the ISO 10303 series:
—     integrated resources (IRs);
—     application interpreted constructs (AICs);
—     application modules (AMs);
—     application domain models (ADMs);
—     Core model;
—     business object models (deprecated);
—     application protocols (APs);
—     implementation methods;
—     usage guides;
—     conformance testing methodology and framework;
—     abstract test suites (ATSs);
—     scheme for identification of schemas and other information objects defined in the ISO 10303 series.</abstract>
  <status>
    <stage>60</stage>
    <substage>60</substage>
  </status>
  <copyright>
    <from>2024</from>
    <owner>
      <organization>
        
<name>ISO</name>

      </organization>
    </owner>
  </copyright>
  <relation type="obsoletes">
    <bibitem type="standard">
      <formattedref>ISO 10303-1:2021</formattedref>
      <docidentifier type="ISO" primary="true">ISO 10303-1:2021</docidentifier>
    </bibitem>

  </relation>
  <place>
    <formattedPlace>Geneva</formattedPlace>
  </place>
</bibitem>
<bibitem id="_6e80fd0b-73e0-42b6-83a9-d023881e060c" type="standard" schema-version="v1.5.6" anchor="ISO10303-11">
  <fetched>2026-04-22</fetched>
  
<title language="en" script="Latn" type="title-intro" format="text/plain">Industrial automation systems and integration</title>

  
<title language="en" script="Latn" type="title-main" format="text/plain">Product data representation and exchange</title>

  
<title language="en" script="Latn" type="title-part" format="text/plain">Part 11: Description methods: The EXPRESS language reference manual</title>

  
<title language="en" script="Latn" type="main" format="text/plain">Industrial automation systems and integration — Product data representation and exchange — Part 11: Description methods: The EXPRESS language reference manual</title>

  
<title language="fr" script="Latn" type="title-intro" format="text/plain">Systèmes d’automatisation industrielle et intégration</title>

  
<title language="fr" script="Latn" type="title-main" format="text/plain">Représentation et échange de données de produits</title>

  
<title language="fr" script="Latn" type="title-part" format="text/plain">Partie 11: Méthodes de description: Manuel de référence du langage EXPRESS</title>

  
<title language="fr" script="Latn" type="main" format="text/plain">Systèmes d’automatisation industrielle et intégration — Représentation et échange de données de produits — Partie 11: Méthodes de description: Manuel de référence du langage EXPRESS</title>

  <uri type="src">https://www.iso.org/standard/38047.html</uri>
  <uri type="obp">https://www.iso.org/obp/ui/en/#!iso:std:38047:en</uri>
  <uri type="rss">https://www.iso.org/contents/data/standard/03/80/38047.detail.rss</uri>
  <docidentifier type="ISO" primary="true">ISO 10303-11:2004</docidentifier>
  <docidentifier type="iso-reference">ISO 10303-11:2004(E)</docidentifier>
  <docidentifier type="URN">urn:iso:std:iso:10303:-11:stage-90.60</docidentifier>
  <docnumber>10303</docnumber>
  <date type="published">
    <on>2004-11</on>
  </date>
  <contributor>
    <role type="publisher"/>
    <organization>
      
<name>International Organization for Standardization</name>

      <abbreviation>ISO</abbreviation>
      <uri>www.iso.org</uri>
    </organization>
  </contributor>
  <contributor>
    <role type="author">
      <description>committee</description>
    </role>
    <organization>
      
<name>International Organization for Standardization</name>

      <subdivision type="technical-committee" subtype="TC">
        
<name>Industrial data</name>

        <identifier>ISO/TC 184/SC 4</identifier>
      </subdivision>
      <abbreviation>ISO</abbreviation>
    </organization>
  </contributor>
  <edition>2</edition>
  <language>en</language>
  <language>fr</language>
  <script>Latn</script>
  <abstract language="en" script="Latn">ISO 10303 specifies a language by which aspects of product data can be defined. The language is called EXPRESS. ISO 10303-11:2004 also specifies a graphical representation for a subset of the constructs in the EXPRESS language. This graphical representation is called EXPRESS-G. EXPRESS is a data specification language as defined in ISO 10303-1. It consists of language elements that allow an unambiguous data definition and specification of constraints on the data defined.
The following are within the scope of ISO 10303-11:2004:
- data types;
- constraints on instances of the data types.
The following are outside the scope of this part of ISO 10303:
- definition of database formats;
- definition of file formats;
- definition of transfer formats;
- process control;
- information processing;
- exception handling.
EXPRESS is not a programming language.</abstract>
  <abstract language="fr" script="Latn">ISO 10303 specifies a language by which aspects of product data can be defined. The language is called EXPRESS. ISO 10303-11:2004 also specifies a graphical representation for a subset of the constructs in the EXPRESS language. This graphical representation is called EXPRESS-G. EXPRESS is a data specification language as defined in ISO 10303-1. It consists of language elements that allow an unambiguous data definition and specification of constraints on the data defined.
The following are within the scope of ISO 10303-11:2004:
- data types;
- constraints on instances of the data types.
The following are outside the scope of this part of ISO 10303:
- definition of database formats;
- definition of file formats;
- definition of transfer formats;
- process control;
- information processing;
- exception handling.
EXPRESS is not a programming language.</abstract>
  <status>
    <stage>90</stage>
    <substage>60</substage>
  </status>
  <copyright>
    <from>2004</from>
    <owner>
      <organization>
        
<name>ISO</name>

      </organization>
    </owner>
  </copyright>
  <relation type="obsoletes">
    <bibitem type="standard">
      <formattedref>ISO 10303-11:1994</formattedref>
      <docidentifier type="ISO" primary="true">ISO 10303-11:1994</docidentifier>
    </bibitem>

  </relation>
  <relation type="obsoletes">
    <bibitem type="standard">
      <formattedref>ISO 10303-11:1994/Cor 1:1999</formattedref>
      <docidentifier type="ISO" primary="true">ISO 10303-11:1994/Cor 1:1999</docidentifier>
    </bibitem>

  </relation>
  <place>
    <formattedPlace>Geneva</formattedPlace>
  </place>
</bibitem>
<bibitem id="_3ea06e89-fe5e-b7e7-580a-e05a322658e0" type="standard" schema-version="v1.5.6" anchor="ISO8824-1">
  <fetched>2026-04-22</fetched>
  
<title language="en" script="Latn" type="title-intro" format="text/plain">Information technology</title>

  
<title language="en" script="Latn" type="title-main" format="text/plain">Abstract Syntax Notation One (ASN.1): Specification of basic notation</title>

  
<title language="en" script="Latn" type="title-part" format="text/plain">Part 1:</title>

  
<title language="en" script="Latn" type="main" format="text/plain">Information technology — Abstract Syntax Notation One (ASN.1): Specification of basic notation — Part 1:</title>

  
<title language="fr" script="Latn" type="title-intro" format="text/plain">Technologies de l’information</title>

  
<title language="fr" script="Latn" type="title-main" format="text/plain">Notation de syntaxe abstraite numéro un (ASN.1): Spécification de la notation de base</title>

  
<title language="fr" script="Latn" type="title-part" format="text/plain">Partie 1:</title>

  
<title language="fr" script="Latn" type="main" format="text/plain">Technologies de l’information — Notation de syntaxe abstraite numéro un (ASN.1): Spécification de la notation de base — Partie 1:</title>

  <uri type="src">https://www.iso.org/standard/54012.html</uri>
  <uri type="rss">https://www.iso.org/contents/data/standard/05/40/54012.detail.rss</uri>
  <docidentifier type="ISO" primary="true">ISO/IEC 8824-1:2008</docidentifier>
  <docidentifier type="iso-reference">ISO/IEC 8824-1:2008(E)</docidentifier>
  <docidentifier type="URN">urn:iso:std:iso-iec:8824:-1:stage-95.99</docidentifier>
  <docnumber>8824</docnumber>
  <date type="published">
    <on>2008-12</on>
  </date>
  <contributor>
    <role type="publisher"/>
    <organization>
      
<name>International Organization for Standardization</name>

      <abbreviation>ISO</abbreviation>
      <uri>www.iso.org</uri>
    </organization>
  </contributor>
  <contributor>
    <role type="publisher"/>
    <organization>
      
<name>International Electrotechnical Commission</name>

      <abbreviation>IEC</abbreviation>
      <uri>www.iec.ch</uri>
    </organization>
  </contributor>
  <contributor>
    <role type="author">
      <description>committee</description>
    </role>
    <organization>
      
<name>International Organization for Standardization</name>

      <subdivision type="technical-committee" subtype="IEC">
        
<name>Telecommunications and information exchange between systems</name>

        <identifier>ISO/IEC JTC 1/SC 6</identifier>
      </subdivision>
      <abbreviation>ISO</abbreviation>
    </organization>
  </contributor>
  <edition>4</edition>
  <note type="Unpublished-Status"><p id="_6abc1bbf-9180-3fb1-f127-8fc9817c8306">Cancelled and replaced by ISO/IEC 8824-1:2015.</p></note><language>en</language>
  <language>fr</language>
  <script>Latn</script>
  <abstract language="en" script="Latn">ISO/IEC 8824-1:2008 specifies a standard notation called Abstract Syntax Notation One (ASN.1) that is used for the definition of data types, values, and constraints on data types.
ISO/IEC 8824-1:2008
- defines a number of simple types, with their tags, and specifies a notation for referencing these types and for specifying values of these types;
- defines mechanisms for constructing new types from more basic types, and specifies a notation for defining such types and assigning them tags, and for specifying values of these types;
- defines character sets (by reference to other ITU-T Recommendations and International Standards) for use within ASN.1.
ISO/IEC 8824-1:2008 can be applied whenever it is necessary to define the abstract syntax of information.
ISO/IEC 8824-1:2008 is referenced by other standards which define encoding rules for the ASN.1 types.</abstract>
  <abstract language="fr" script="Latn">ISO/IEC 8824-1:2008 specifies a standard notation called Abstract Syntax Notation One (ASN.1) that is used for the definition of data types, values, and constraints on data types.
ISO/IEC 8824-1:2008
- defines a number of simple types, with their tags, and specifies a notation for referencing these types and for specifying values of these types;
- defines mechanisms for constructing new types from more basic types, and specifies a notation for defining such types and assigning them tags, and for specifying values of these types;
- defines character sets (by reference to other ITU-T Recommendations and International Standards) for use within ASN.1.
ISO/IEC 8824-1:2008 can be applied whenever it is necessary to define the abstract syntax of information.
ISO/IEC 8824-1:2008 is referenced by other standards which define encoding rules for the ASN.1 types.</abstract>
  <status>
    <stage>95</stage>
    <substage>99</substage>
  </status>
  <copyright>
    <from>2008</from>
    <owner>
      <organization>
        
<name>ISO/IEC</name>

      </organization>
    </owner>
  </copyright>
  <relation type="obsoletes">
    <bibitem type="standard">
      <formattedref>ISO/IEC 8824-1:2002</formattedref>
      <docidentifier type="ISO" primary="true">ISO/IEC 8824-1:2002</docidentifier>
    </bibitem>

  </relation>
  <relation type="obsoletes">
    <bibitem type="standard">
      <formattedref>ISO/IEC 8824-1:2002/Amd 1:2004</formattedref>
      <docidentifier type="ISO" primary="true">ISO/IEC 8824-1:2002/Amd 1:2004</docidentifier>
    </bibitem>

  </relation>
  <relation type="obsoletes">
    <bibitem type="standard">
      <formattedref>ISO/IEC 8824-1:2002/Cor 1:2006</formattedref>
      <docidentifier type="ISO" primary="true">ISO/IEC 8824-1:2002/Cor 1:2006</docidentifier>
    </bibitem>

  </relation>
  <relation type="obsoletes">
    <bibitem type="standard">
      <formattedref>ISO/IEC 8824-1:2002/Amd 2:2005</formattedref>
      <docidentifier type="ISO" primary="true">ISO/IEC 8824-1:2002/Amd 2:2005</docidentifier>
    </bibitem>

  </relation>
  <relation type="obsoletes">
    <bibitem type="standard">
      <formattedref>ISO/IEC 8824-1:2002/Amd 3:2006</formattedref>
      <docidentifier type="ISO" primary="true">ISO/IEC 8824-1:2002/Amd 3:2006</docidentifier>
    </bibitem>

  </relation>
  <relation type="obsoletes">
    <bibitem type="standard">
      <formattedref>ISO/IEC 8824-1:2002/Amd 4:2008</formattedref>
      <docidentifier type="ISO" primary="true">ISO/IEC 8824-1:2002/Amd 4:2008</docidentifier>
    </bibitem>

  </relation>
  <relation type="updates">
    <bibitem type="standard">
      <formattedref>ISO/IEC 8824-1:2015</formattedref>
      <docidentifier type="ISO" primary="true">ISO/IEC 8824-1:2015</docidentifier>
      <date type="circulated">
        <on>2015-11-12</on>
      </date>
    </bibitem>

  </relation>
  <relation type="updates">
    <bibitem type="standard">
      <formattedref>ISO/IEC 8824-1:2008/Cor 1:2012</formattedref>
      <docidentifier type="ISO" primary="true">ISO/IEC 8824-1:2008/Cor 1:2012</docidentifier>
      <date type="circulated">
        <on>2015-11-12</on>
      </date>
    </bibitem>

  </relation>
  <relation type="updates">
    <bibitem type="standard">
      <formattedref>ISO/IEC 8824-1:2008/Cor 2:2014</formattedref>
      <docidentifier type="ISO" primary="true">ISO/IEC 8824-1:2008/Cor 2:2014</docidentifier>
      <date type="circulated">
        <on>2015-11-12</on>
      </date>
    </bibitem>

  </relation>
  <place>
    <formattedPlace>Geneva</formattedPlace>
  </place>
</bibitem>
<bibitem id="_8115ae18-1c2c-f3b3-6620-fe0b1bc67b6c" type="standard" schema-version="v1.5.6" anchor="ISO10646">
  <fetched>2026-04-22</fetched>
  
<title language="en" script="Latn" type="title-intro" format="text/plain">Information technology</title>

  
<title language="en" script="Latn" type="title-main" format="text/plain">Universal Coded Character Set (UCS)</title>

  
<title language="en" script="Latn" type="main" format="text/plain">Information technology — Universal Coded Character Set (UCS)</title>

  
<title language="fr" script="Latn" type="title-intro" format="text/plain">Technologies de l’information</title>

  
<title language="fr" script="Latn" type="title-main" format="text/plain">Jeu universel de caractères codés (JUC)</title>

  
<title language="fr" script="Latn" type="main" format="text/plain">Technologies de l’information — Jeu universel de caractères codés (JUC)</title>

  <uri type="src">https://www.iso.org/standard/51273.html</uri>
  <uri type="rss">https://www.iso.org/contents/data/standard/05/12/51273.detail.rss</uri>
  <docidentifier type="ISO" primary="true">ISO/IEC 10646:2011</docidentifier>
  <docidentifier type="iso-reference">ISO/IEC 10646:2011(E)</docidentifier>
  <docidentifier type="URN">urn:iso:std:iso-iec:10646:stage-95.99</docidentifier>
  <docnumber>10646</docnumber>
  <date type="published">
    <on>2011-03</on>
  </date>
  <contributor>
    <role type="publisher"/>
    <organization>
      
<name>International Organization for Standardization</name>

      <abbreviation>ISO</abbreviation>
      <uri>www.iso.org</uri>
    </organization>
  </contributor>
  <contributor>
    <role type="publisher"/>
    <organization>
      
<name>International Electrotechnical Commission</name>

      <abbreviation>IEC</abbreviation>
      <uri>www.iec.ch</uri>
    </organization>
  </contributor>
  <contributor>
    <role type="author">
      <description>committee</description>
    </role>
    <organization>
      
<name>International Organization for Standardization</name>

      <subdivision type="technical-committee" subtype="IEC">
        
<name>Coded character sets</name>

        <identifier>ISO/IEC JTC 1/SC 2</identifier>
      </subdivision>
      <abbreviation>ISO</abbreviation>
    </organization>
  </contributor>
  <edition>2</edition>
  <note type="Unpublished-Status"><p id="_0e7d0e2d-fae4-385d-611c-7e9c67339f57">Cancelled and replaced by ISO/IEC 10646:2012.</p></note><language>en</language>
  <language>fr</language>
  <script>Latn</script>
  <abstract language="en" script="Latn">ISO/IEC 10646:2011 specifies the Universal Coded Character Set (UCS). It is applicable to the representation, transmission, interchange, processing, storage, input and presentation of the written form of the languages of the world as well as additional symbols. It covers over 109 000 characters from the world’s scripts. 
ISO/IEC 10646:2011:
- specifies the architecture of ISO/IEC 10646; 
- defines terms used ISO/IEC 10646; 
- describes the general structure of the UCS codespace; 
- specifies the Basic Multilingual Plane (BMP) of the UCS; 
- specifies supplementary planes of the UCS: the Supplementary Multilingual Plane (SMP), the Supplementary Ideographic Plane (SIP), the Tertiary Ideographic Plane (TIP), and the Supplementary Special-purpose Plane (SSP); 
- defines a set of graphic characters used in scripts and the written form of languages on a world-wide scale; 
- specifies the names for the graphic characters and format characters of the BMP, SMP, SIP, TIP, SSP and their coded representations within the UCS codespace; 
- specifies the coded representations for control characters and private use characters; 
- specifies three encoding forms of the UCS: UTF-8, UTF-16, and UTF-32; 
- specifies seven encoding schemes of the UCS: UTF-8, UTF-16, UTF-16BE, UTF-16LE, UTF-32, UTF-32BE, and UTF-32LE; 
- specifies the management of future additions to this coded character set.
The UCS is an encoding system different from that specified in ISO/IEC 2022. ISO/IEC 10646:2011 specifies the method to designate UCS from ISO/IEC 2022.
A graphic character will be assigned only one code point in the standard, located either in the BMP or in one of the supplementary planes. 
By defining a consistent way of encoding multilingual text, ISO/IEC 10646:2011 enables the exchange of data internationally. The information technology industry gains data stability, greater global interoperability and data interchange. ISO/IEC 10646:2011 has been widely adopted in new Internet protocols and implemented in modern operating systems and computer languages.</abstract>
  <abstract language="fr" script="Latn">ISO/IEC 10646:2011 specifies the Universal Coded Character Set (UCS). It is applicable to the representation, transmission, interchange, processing, storage, input and presentation of the written form of the languages of the world as well as additional symbols. It covers over 109 000 characters from the world’s scripts. 
ISO/IEC 10646:2011:
- specifies the architecture of ISO/IEC 10646; 
- defines terms used ISO/IEC 10646; 
- describes the general structure of the UCS codespace; 
- specifies the Basic Multilingual Plane (BMP) of the UCS; 
- specifies supplementary planes of the UCS: the Supplementary Multilingual Plane (SMP), the Supplementary Ideographic Plane (SIP), the Tertiary Ideographic Plane (TIP), and the Supplementary Special-purpose Plane (SSP); 
- defines a set of graphic characters used in scripts and the written form of languages on a world-wide scale; 
- specifies the names for the graphic characters and format characters of the BMP, SMP, SIP, TIP, SSP and their coded representations within the UCS codespace; 
- specifies the coded representations for control characters and private use characters; 
- specifies three encoding forms of the UCS: UTF-8, UTF-16, and UTF-32; 
- specifies seven encoding schemes of the UCS: UTF-8, UTF-16, UTF-16BE, UTF-16LE, UTF-32, UTF-32BE, and UTF-32LE; 
- specifies the management of future additions to this coded character set.
The UCS is an encoding system different from that specified in ISO/IEC 2022. ISO/IEC 10646:2011 specifies the method to designate UCS from ISO/IEC 2022.
A graphic character will be assigned only one code point in the standard, located either in the BMP or in one of the supplementary planes. 
By defining a consistent way of encoding multilingual text, ISO/IEC 10646:2011 enables the exchange of data internationally. The information technology industry gains data stability, greater global interoperability and data interchange. ISO/IEC 10646:2011 has been widely adopted in new Internet protocols and implemented in modern operating systems and computer languages.</abstract>
  <status>
    <stage>95</stage>
    <substage>99</substage>
  </status>
  <copyright>
    <from>2011</from>
    <owner>
      <organization>
        
<name>ISO/IEC</name>

      </organization>
    </owner>
  </copyright>
  <relation type="obsoletes">
    <bibitem type="standard">
      <formattedref>ISO/IEC 10646:2003</formattedref>
      <docidentifier type="ISO" primary="true">ISO/IEC 10646:2003</docidentifier>
    </bibitem>

  </relation>
  <relation type="obsoletes">
    <bibitem type="standard">
      <formattedref>ISO/IEC 10646:2003/Amd 1:2005</formattedref>
      <docidentifier type="ISO" primary="true">ISO/IEC 10646:2003/Amd 1:2005</docidentifier>
    </bibitem>

  </relation>
  <relation type="obsoletes">
    <bibitem type="standard">
      <formattedref>ISO/IEC 10646:2003/Amd 2:2006</formattedref>
      <docidentifier type="ISO" primary="true">ISO/IEC 10646:2003/Amd 2:2006</docidentifier>
    </bibitem>

  </relation>
  <relation type="obsoletes">
    <bibitem type="standard">
      <formattedref>ISO/IEC 10646:2003/Amd 3:2008</formattedref>
      <docidentifier type="ISO" primary="true">ISO/IEC 10646:2003/Amd 3:2008</docidentifier>
    </bibitem>

  </relation>
  <relation type="obsoletes">
    <bibitem type="standard">
      <formattedref>ISO/IEC 10646:2003/Amd 4:2008</formattedref>
      <docidentifier type="ISO" primary="true">ISO/IEC 10646:2003/Amd 4:2008</docidentifier>
    </bibitem>

  </relation>
  <relation type="obsoletes">
    <bibitem type="standard">
      <formattedref>ISO/IEC 10646:2003/Amd 5:2008</formattedref>
      <docidentifier type="ISO" primary="true">ISO/IEC 10646:2003/Amd 5:2008</docidentifier>
    </bibitem>

  </relation>
  <relation type="obsoletes">
    <bibitem type="standard">
      <formattedref>ISO/IEC 10646:2003/Amd 6:2009</formattedref>
      <docidentifier type="ISO" primary="true">ISO/IEC 10646:2003/Amd 6:2009</docidentifier>
    </bibitem>

  </relation>
  <relation type="obsoletes">
    <bibitem type="standard">
      <formattedref>ISO/IEC 10646:2003/Amd 7:2010</formattedref>
      <docidentifier type="ISO" primary="true">ISO/IEC 10646:2003/Amd 7:2010</docidentifier>
    </bibitem>

  </relation>
  <relation type="updates">
    <bibitem type="standard">
      <formattedref>ISO/IEC 10646:2012</formattedref>
      <docidentifier type="ISO" primary="true">ISO/IEC 10646:2012</docidentifier>
      <date type="circulated">
        <on>2012-05-21</on>
      </date>
    </bibitem>

  </relation>
  <place>
    <formattedPlace>Geneva</formattedPlace>
  </place>
</bibitem>
</references><references id="_78bf7af9-4d14-d7f8-3b37-90d6b4b8d8d7" normative="false" obligation="informative">
<title id="_50ceb1e1-516f-2673-d73d-4f0c58b4d023">Bibliography</title><bibitem id="_3a837f48-3e06-dc1a-c222-e7441a41e104" type="standard" schema-version="v1.5.6" anchor="ISO10303-21">
  <fetched>2026-04-22</fetched>
  
<title language="en" script="Latn" type="title-intro" format="text/plain">Industrial automation systems and integration</title>

  
<title language="en" script="Latn" type="title-main" format="text/plain">Product data representation and exchange</title>

  
<title language="en" script="Latn" type="title-part" format="text/plain">Part 21: Implementation methods: Clear text encoding of the exchange structure</title>

  
<title language="en" script="Latn" type="main" format="text/plain">Industrial automation systems and integration — Product data representation and exchange — Part 21: Implementation methods: Clear text encoding of the exchange structure</title>

  
<title language="fr" script="Latn" type="title-intro" format="text/plain">Systèmes d’automatisation industrielle et intégration</title>

  
<title language="fr" script="Latn" type="title-main" format="text/plain">Représentation et échange de données de produits</title>

  
<title language="fr" script="Latn" type="title-part" format="text/plain">Partie 21: Méthodes de mise en application: Encodage en texte clair des fichiers d’échange</title>

  
<title language="fr" script="Latn" type="main" format="text/plain">Systèmes d’automatisation industrielle et intégration — Représentation et échange de données de produits — Partie 21: Méthodes de mise en application: Encodage en texte clair des fichiers d’échange</title>

  <uri type="src">https://www.iso.org/standard/63141.html</uri>
  <uri type="obp">https://www.iso.org/obp/ui/en/#!iso:std:63141:en</uri>
  <uri type="rss">https://www.iso.org/contents/data/standard/06/31/63141.detail.rss</uri>
  <docidentifier type="ISO" primary="true">ISO 10303-21:2016</docidentifier>
  <docidentifier type="iso-reference">ISO 10303-21:2016(E)</docidentifier>
  <docidentifier type="URN">urn:iso:std:iso:10303:-21:stage-90.93</docidentifier>
  <docnumber>10303</docnumber>
  <date type="published">
    <on>2016-03</on>
  </date>
  <contributor>
    <role type="publisher"/>
    <organization>
      
<name>International Organization for Standardization</name>

      <abbreviation>ISO</abbreviation>
      <uri>www.iso.org</uri>
    </organization>
  </contributor>
  <contributor>
    <role type="author">
      <description>committee</description>
    </role>
    <organization>
      
<name>International Organization for Standardization</name>

      <subdivision type="technical-committee" subtype="TC">
        
<name>Industrial data</name>

        <identifier>ISO/TC 184/SC 4</identifier>
      </subdivision>
      <abbreviation>ISO</abbreviation>
    </organization>
  </contributor>
  <edition>3</edition>
  <language>en</language>
  <language>fr</language>
  <script>Latn</script>
  <abstract language="en" script="Latn">ISO 10303-21:2016 specifies an exchange format that allows product data described in the EXPRESS language to be transferred from one computer system to another. ISO 10303-21:2016 adds anchor, reference and signature sections to support external references, support for compressed exchange structures in an archive, digital signatures and UTF-8 character encoding.</abstract>
  <abstract language="fr" script="Latn">ISO 10303-21:2016 specifies an exchange format that allows product data described in the EXPRESS language to be transferred from one computer system to another. ISO 10303-21:2016 adds anchor, reference and signature sections to support external references, support for compressed exchange structures in an archive, digital signatures and UTF-8 character encoding.</abstract>
  <status>
    <stage>90</stage>
    <substage>93</substage>
  </status>
  <copyright>
    <from>2016</from>
    <owner>
      <organization>
        
<name>ISO</name>

      </organization>
    </owner>
  </copyright>
  <relation type="obsoletes">
    <bibitem type="standard">
      <formattedref>ISO 10303-21:2002</formattedref>
      <docidentifier type="ISO" primary="true">ISO 10303-21:2002</docidentifier>
    </bibitem>

  </relation>
  <place>
    <formattedPlace>Geneva</formattedPlace>
  </place>
</bibitem>

</references><references hidden="true" normative="false"><bibitem anchor="express_schema_name.element_name" id="_e1809918-c536-8cf9-64a1-42ae65b4de83" type="internal">
<docidentifier type="repository">express/schema_name.element_name</docidentifier>
</bibitem>
<bibitem anchor="express_Activity_arm.Activity" id="_5c38aa58-ddeb-f6a9-1aa2-cfea9df0c97b" type="internal">
<docidentifier type="repository">express/Activity_arm.Activity</docidentifier>
</bibitem>
<bibitem anchor="express_action_schema.executed_action" id="_bdcfaa3f-827f-9428-b788-6fd51dd89ae8" type="internal">
<docidentifier type="repository">express/action_schema.executed_action</docidentifier>
</bibitem>
<bibitem anchor="express_Activity_method_arm.Activity_method" id="_83ef219a-3f0c-1bca-d06b-a86e099acbf9" type="internal">
<docidentifier type="repository">express/Activity_method_arm.Activity_method</docidentifier>
</bibitem>
<bibitem anchor="express_Schema_arm.Entity_name" id="_c44d0aa7-1ad1-579f-5068-e5f3dca2db15" type="internal">
<docidentifier type="repository">express/Schema_arm.Entity_name</docidentifier>
</bibitem>
<bibitem anchor="express_schema_name.entity_name" id="_d6330400-fda4-2ac9-20eb-4e75fed0cce1" type="internal">
<docidentifier type="repository">express/schema_name.entity_name</docidentifier>
</bibitem>
</references></bibliography>
</metanorma>
