Skip to content

Commit f68db43

Browse files
committed
feat: add mapping spec document 5006
1 parent 37eb09d commit f68db43

15 files changed

Lines changed: 3005 additions & 0 deletions

metanorma.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ metanorma:
77
- sources/expressdocs-migration/document.adoc
88
- sources/express-schema-manifest/document.adoc
99
- sources/express-changes/document.adoc
10+
- sources/express-mapping/document.adoc
1011

1112
collection:
1213
organization: "EXPRESS Language Foundation"
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
= EXPRESS mapping language specification
2+
:docnumber: 5006
3+
:edition: 1
4+
:copyright-year: 2025
5+
:revdate: 2025-10-19
6+
:language: en
7+
:title-main-en: EXPRESS mapping language specification
8+
:doctype: standard
9+
:technical-committee: EXPRESS
10+
:imagesdir: images
11+
:mn-document-class: elf
12+
:mn-output-extensions: xml,html,doc,pdf,rxl
13+
:fullname: Thomas Thurman
14+
:surname: Thurman
15+
:givenname: Thomas
16+
:affiliation: EXPRESS Language Foundation
17+
:fullname_2: Ronald Tse
18+
:surname_2: Tse
19+
:givenname_2: Ronald
20+
:affiliation_2: EXPRESS Language Foundation
21+
:docidentifier: ELF 5006:2025
22+
:data-uri-image:
23+
:local-cache-only:
24+
25+
include::sections/00-foreword.adoc[]
26+
27+
include::sections/00-introduction.adoc[]
28+
29+
include::sections/01-scope.adoc[]
30+
31+
include::sections/02-normrefs.adoc[]
32+
33+
include::sections/03-terms.adoc[]
34+
35+
include::sections/04-overview.adoc[]
36+
37+
include::sections/05-operators.adoc[]
38+
39+
include::sections/06-navigation.adoc[]
40+
41+
include::sections/07-constraints.adoc[]
42+
43+
include::sections/08-validation.adoc[]
44+
45+
include::sections/aa-examples.adoc[]
46+
47+
include::sections/az-bibliography.adoc[]
Lines changed: 152 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,152 @@
1+
---
2+
ae:
3+
- entity: Activity
4+
aimelt:
5+
content: executed_action
6+
schema: action_schema
7+
alt_map: []
8+
aa:
9+
- attribute: name
10+
aimelt:
11+
content: action.name
12+
schema: action_schema
13+
refpath:
14+
content: |-
15+
executed_action
16+
executed_action <= action
17+
action.name
18+
alt_map: []
19+
- attribute: description
20+
aimelt:
21+
content: action.description
22+
schema: action_schema
23+
refpath:
24+
content: |-
25+
executed_action
26+
executed_action <= action
27+
action.description
28+
alt_map: []
29+
- attribute: chosen_method
30+
assertion_to: Activity_method
31+
aimelt:
32+
content: PATH
33+
source: {}
34+
refpath:
35+
content: |-
36+
executed_action
37+
executed_action <= action
38+
action.chosen_method -> action_method
39+
action_method
40+
alt_map: []
41+
- attribute: id
42+
aimelt:
43+
content: id_attribute.attribute_value
44+
schema: action_schema
45+
refpath:
46+
content: |-
47+
executed_action
48+
executed_action <= action
49+
action <- id_attribute.identified_item
50+
id_attribute.attribute_value
51+
alt_map: []
52+
- entity: Activity_relationship
53+
aimelt:
54+
content: action_relationship
55+
schema: action_schema
56+
alt_map: []
57+
aa:
58+
- attribute: description
59+
aimelt:
60+
content: action_relationship.description
61+
schema: action_schema
62+
alt_map: []
63+
- attribute: name
64+
aimelt:
65+
content: action_relationship.name
66+
schema: action_schema
67+
alt_map: []
68+
- attribute: related_activity
69+
assertion_to: Activity
70+
aimelt:
71+
content: PATH
72+
source: {}
73+
refpath:
74+
content: |
75+
action_relationship
76+
action_relationship.related_action -> action
77+
action => executed_action
78+
alt_map: []
79+
- attribute: relating_activity
80+
assertion_to: Activity
81+
aimelt:
82+
content: PATH
83+
source: {}
84+
refpath:
85+
content: |-
86+
action_relationship
87+
action_relationship.relating_action -> action
88+
action => executed_action
89+
alt_map: []
90+
- entity: Activity_status
91+
aimelt:
92+
content: action_status
93+
schema: action_schema
94+
alt_map: []
95+
aa:
96+
- attribute: assigned_activity
97+
assertion_to: Activity
98+
aimelt:
99+
content: PATH
100+
source: {}
101+
refpath:
102+
content: |
103+
action_status
104+
action_status.assigned_action -> executed_action
105+
alt_map: []
106+
- attribute: status
107+
aimelt:
108+
content: action_status.status
109+
schema: action_schema
110+
alt_map: []
111+
- entity: Applied_activity_assignment
112+
aimelt:
113+
content: applied_action_assignment
114+
source:
115+
content: ISO 10303-1047
116+
alt_map: []
117+
aa:
118+
- attribute: assigned_activity
119+
assertion_to: Activity
120+
aimelt:
121+
content: PATH
122+
source: {}
123+
refpath:
124+
content: |-
125+
applied_action_assignment
126+
applied_action_assignment <= action_assignment
127+
action_assignment
128+
action_assignment.assigned_action -> action
129+
action => executed_action
130+
alt_map: []
131+
- attribute: items
132+
assertion_to: activity_item
133+
aimelt:
134+
content: PATH
135+
source: {}
136+
refpath:
137+
content: |-
138+
applied_action_assignment
139+
applied_action_assignment.items[i] -> action_items
140+
alt_map: []
141+
- attribute: role
142+
aimelt:
143+
content: object_role.name
144+
schema: action_schema
145+
refpath:
146+
content: |-
147+
applied_action_assignment
148+
applied_action_assignment <= action_assignment
149+
action_assignment.role -> object_role
150+
object_role.name
151+
alt_map: []
152+
sc: []
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
.Foreword
2+
The EXPRESS Language Foundation ("`ELF`") is a registered public charity in the
3+
US that facilitates the education, standardization, research, promotion,
4+
definition, and usage of information modelling and programming languages, with a
5+
focus on the EXPRESS language family.
6+
7+
ELF works with international partners and experts across the globe, reflecting
8+
the international nature of its mission. More information about ELF is available
9+
on the official website (https://www.expresslang.org).
10+
11+
The procedures used to develop this document and those intended for its further
12+
maintenance are described in the ELF Directives.
13+
14+
In particular, the different approval criteria needed for the different types of
15+
ELF documents should be noted. This document was drafted in accordance with the
16+
editorial rules of the ELF Directives.
17+
18+
Attention is drawn to the possibility that some of the elements of this document
19+
may be the subject of patent rights. ELF shall not be held responsible for
20+
identifying any or all such patent rights. Details of any patent rights
21+
identified during the development of the document will be provided in the
22+
Introduction.
23+
24+
Any trade name used in this document is information given for the convenience of
25+
users and does not constitute an endorsement.
26+
27+
This document was prepared by Technical Committee _{technical-committee}_.
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
== Introduction
2+
3+
=== General
4+
5+
The EXPRESS mapping language is a domain-specific language designed to express
6+
reference paths between entities in a set of EXPRESS schemas.
7+
8+
It provides a formal syntax and semantics for specifying how entities in one schema
9+
relate to entities in another schema through a series of navigations. These paths
10+
can include subtype and supertype relationships, forward and inverse attribute
11+
navigations, and constraints on entity attributes.
12+
13+
The operators and syntax to express allow for these navigations to be defined
14+
precisely and unambiguously.
15+
16+
The mapping language serves several purposes:
17+
18+
Documentation:: Provides a clear, machine-readable specification of how concepts
19+
of a conceptual model described in EXPRESS maps to an implementation described
20+
in another EXPRESS schema.
21+
22+
Validation:: Enables automated validation that mapping paths are correct and
23+
traverse valid relationships in the EXPRESS schema.
24+
25+
Interoperability:: Ensures consistent interpretation of mappings across
26+
different tools and implementations.
27+
28+
Maintenance:: Facilitates detection of broken mappings when schemas evolve.
29+
30+
=== Historical context
31+
32+
In ISO 10303 (STEP), requirements of the application modules are defined using
33+
Application Resource Models (ARMs) expressed in EXPRESS.
34+
35+
The implementation of these requirements is defined using Module Interpreted
36+
Models (MIMs), also expressed in EXPRESS.
37+
38+
The EXPRESS mapping language was developed to formally express the relationships
39+
between ARM entities and MIM entities.
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
== Scope
2+
3+
This document describes the EXPRESS mapping language used to express reference
4+
paths amongst a set of EXPRESS schemas.
5+
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
2+
[bibliography]
3+
== Normative references
4+
5+
* [[[ISO10303-1,ISO 10303-1:2024]]]
6+
7+
* [[[ISO10303-11,ISO 10303-11:2004]]]
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
== Terms and definitions
2+
3+
=== application resource model
4+
preferred:[ARM]
5+
6+
conceptual model that represents application domain concepts in a neutral,
7+
implementation-independent manner
8+
9+
[.source]
10+
<<ISO10303-2>>
11+
12+
=== module interpreted model
13+
preferred:[MIM]
14+
15+
implementation model that maps ARM concepts to EXPRESS constructs using entities
16+
and relationships from integrated resources
17+
18+
[.source]
19+
<<ISO10303-2>>
20+
21+
=== reference path
22+
23+
sequence of navigation steps through EXPRESS schema entity relationships,
24+
expressing how an entity in one schema relates to an entity in another schema
25+
26+
=== subtype relationship
27+
28+
relationship where one entity inherits all attributes and constraints from
29+
another entity, expressed in EXPRESS with the SUBTYPE OF construct
30+
31+
=== supertype relationship
32+
33+
relationship where an entity serves as a base type for one or more subtypes,
34+
providing attributes and constraints inherited by those subtypes
35+
36+
=== forward attribute navigation
37+
38+
navigation that follows an attribute from an entity to the entity it references
39+
40+
[example]
41+
Navigating from `product_definition` through attribute `formation` to
42+
`product_definition_formation`.
43+
44+
=== inverse attribute navigation
45+
46+
navigation that finds entities referencing the current entity through a specific
47+
attribute
48+
49+
[example]
50+
Finding all `product_definition_relationship` entities that reference a
51+
`product_definition` through their `related_product_definition` attribute.
52+
53+
=== constraint block
54+
55+
expression that specifies conditions that entities or attributes must satisfy
56+
during path navigation
57+
58+
[example]
59+
`{product_definition_relationship.name = 'definition usage'}` requires the
60+
`name` attribute to equal the specified string value.
61+
62+
=== navigation step
63+
64+
single element in a reference path representing one traversal operation
65+
(subtype, supertype, forward navigation, or inverse navigation)
66+
67+
=== path expression
68+
69+
complete reference path from one schema entity to another schema entity,
70+
composed of at least one navigation step

0 commit comments

Comments
 (0)