diff --git a/content/languages/express-q.adoc b/content/languages/express-q.adoc index 6459e09..3023b74 100644 --- a/content/languages/express-q.adoc +++ b/content/languages/express-q.adoc @@ -4,73 +4,233 @@ title: EXPRESS-Q == Overview -EXPRESS-Q is a query language for interrogating and retrieving data from EXPRESS-defined datasets. -It provides a declarative syntax for defining views, queries, and business objects over EXPRESS schema data, enabling efficient data retrieval and reporting. +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. -EXPRESS-Q complements the other EXPRESS languages by providing a way to extract and present information from EXPRESS datasets without modifying the underlying schemas. +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. [[key-features]] == Key features -* *VIEW_ENTITY declarations* — define virtual entities as projections over source data -* *QUERY_FUNCTION definitions* — reusable parameterized queries -* *Business objects* — define domain-specific views over technical EXPRESS data -* *Data retrieval* — efficient extraction of subsets from large EXPRESS datasets -* *Report generation* — structured output of queried data +* *ENTITY_MAPPING declarations* — define how ARM entities correspond to MIM entities +* *ATTRIBUTE_MAPPING definitions* — map individual ARM attributes to MIM elements +* *Reference paths* — precise navigation through schema relationships using operators like `->`, `<=`, `=>` +* *EXPRESS links* — cross-schema references with automatic resolution +* *Alternative mappings* — support for multiple valid representations +* *Constraint expressions* — conditional constraints within reference paths +* *YAML serialization* — machine-readable format for automated processing [[syntax]] == Syntax -EXPRESS-Q uses declarative query constructs integrated with EXPRESS type definitions: +EXPRESS-Q uses a structured syntax built around entity and attribute mappings: -.Example EXPRESS-Q view entity [source] ---- -VIEW_ENTITY fastener_summary - FROM fastener; - .identifier := source.part_number; - .diameter := source.diameter; - .material := source.material.name; -WHERE - source.diameter > 5.0; -END_VIEW_ENTITY; +ENTITY_MAPPING ; +EXTENSIBLE: FALSE; +AIM_ELEMENT: ""; +EXPRESS_REF: ["action_schema"]; +REFPATH: { + executed_action <= action +}; +ATTRIBUTE_MAPPING name; +ASSERTION_TO: "name"; +AIM_ELEMENT: "action.name"; +REFPATH: { + executed_action + executed_action <= action + action.name +}; +END_ATTRIBUTE_MAPPING; +END_ENTITY_MAPPING; ---- -[[history]] -== History - -EXPRESS-Q was developed alongside EXPRESS-X as part of ISO 10303-14, recognizing that schema mapping and querying are complementary operations in the EXPRESS data management lifecycle. - -=== Timeline +=== Reference path symbols [cols="1,4"] |=== -| *2001* | EXPRESS-Q published as part of ISO 10303-14 alongside EXPRESS-X -| *Present* | Supported by commercial and open-source EXPRESS tooling +| `->` | The attribute references the entity or select type that follows +| `<-` | The entity is referenced by the attribute that follows +| `=>` | The entity is a supertype of the entity that follows +| `<=` | The entity is a subtype of the entity that follows +| `*>` | The select or enumeration type is extended into the type that follows +| `<*` | The select or enumeration type is an extension of the type that follows +| `[i]` | The attribute is an aggregate; any element is referred to +| `[n]` | The attribute is an ordered aggregate; member *n* is referred to +| `[]` | Enclosed section constrains multiple MIM elements +| `()` | Enclosed section identifies alternatives within the mapping +| `{}` | Enclosed section constrains the reference path +| `!{}` | Negative constraint on the mapping +| `--` | Comment or clause reference |=== -=== Key people +=== EBNF grammar + +The following EBNF defines the syntax of EXPRESS-Q: + +[source] +---- +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 ; +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 ; +express_link = "<" schema_name "." element_name ">" ; +---- + +=== Reference path examples -EXPRESS-Q was developed by the ISO TC 184/SC 4 community, building on the EXPRESS and EXPRESS-X foundation established by Peter Wilson and Douglas Schenck. +.Simple attribute mapping +[source] +---- +REFPATH: { + product.id -> id +} +---- + +.Subtype relationship +[source] +---- +REFPATH: { + mechanical_context <= product_context +} +---- + +.Complex mapping with alternatives and constraints +[source] +---- +REFPATH: { + shape_representation <= representation + {representation.items[i] -> representation_item + representation_item => + (geometric_representation_item + [geometric_representation_item.dim = 3] | + mapped_item) + } +} +---- + +.Negative constraint +[source] +---- +REFPATH: { + product_definition_formation + !{product_definition_formation.make_or_buy = bought_item} +} +---- [[standardization]] == Standardization -EXPRESS-Q is defined within ISO 10303-14: +EXPRESS-Q is defined within ISO 10303: + +* *ISO 10303-14* — Description methods: The EXPRESS-X language reference manual, including EXPRESS-Q definitions +* *ISO 10303-11:2004* — The EXPRESS language reference manual (normative reference) +* *ISO 10303-1:2024* — Overview and fundamental principles + +[[validation]] +== Validation rules -* *ISO 10303-14* — EXPRESS-X: Includes EXPRESS-Q query language definitions +Validation of EXPRESS-Q files ensures correctness and consistency of ARM-to-MIM mappings: + +* Each ENTITY_MAPPING shall correspond to an entity or type defined in the ARM schema +* The AIM_ELEMENT specified shall exist in the MIM schema or be a recognized keyword (PATH, IDENTICAL MAPPING, NO MAPPING EXTENSION PROVIDED) +* All referenced entities and attributes shall exist in the corresponding ARM or MIM schema +* Relationships between entities (supertype, subtype, attribute reference) shall be consistent with schema definitions +* Constraints shall use valid attributes or functions for the constrained entity +* Select type extensions shall be consistent with schema definitions +* Aggregate references (using `[i]` or `[n]`) shall be applied only to attributes defined as aggregates [[applications]] == Applications -* *Data reporting* — generating summary views from EXPRESS datasets -* *Business intelligence* — defining domain-specific views over technical data -* *Data validation* — querying datasets for compliance checking -* *Supply chain visibility* — extracting status information from product data +* *ARM-to-MIM mapping* — defining how application reference models map to implementation models +* *Data validation* — querying datasets for compliance with schema constraints +* *Supply chain integration* — ensuring semantic consistency across data exchange +* *Documentation generation* — automated cross-referencing in published standards +* *Schema transformation* — converting between different EXPRESS schema representations + +[[yaml-serialization]] +== YAML serialization + +EXPRESS-Q mappings can be serialized as YAML for machine processing. +Each module's mapping specification is stored as `mapping.yaml`: + +[source,yaml] +---- +ae: +- entity: + aimelt: + aa: + - attribute: name + aimelt: action.name + refpath: + content: |- + executed_action + executed_action <= action + action.name + - attribute: chosen_method + assertion_to: + aimelt: PATH + refpath: + content: |- + executed_action + executed_action <= action + action.chosen_method -> action_method + action_method +---- + +The YAML fields correspond to the EBNF constructs: + +[cols="1,2,3"] +|=== +| EBNF construct | YAML key | Notes + +| `ENTITY_MAPPING entity_ref` | `ae[].entity` | EXPRESS link or plain name +| `aim_element_decl` | `ae[].aimelt` | EXPRESS link or string +| `ASSERTION_TO` | `ae[].aa[].assertion_to` | EXPRESS link or plain string +| `extensible_decl` | `ae[].extensible` | Boolean +| `alt_map_decl` | `ae[].alt_map` | List of strings +| `refpath_decl` | `ae[].aa[].refpath.content` | Multi-line string +|=== + +[[history]] +== History + +EXPRESS-Q was developed alongside EXPRESS-X as part of ISO 10303-14, recognizing that schema mapping and querying are complementary operations in the EXPRESS data management lifecycle. + +=== Timeline + +[cols="1,4"] +|=== +| *2001* | EXPRESS-Q published as part of ISO 10303-14 alongside EXPRESS-X +| *Present* | Supported by commercial and open-source EXPRESS tooling; YAML serialization defined +|=== [[resources]] == Learn more -* link:/learn/jotne-express/10-querying-express[EXPRESS Course: Querying EXPRESS Data] — querying concepts and techniques +* link:/learn[EXPRESS Tutorials] — learn about EXPRESS and the language family * link:/languages/express-x[EXPRESS-X] — the companion schema mapping language * link:/standards[Standards & BNF] — ISO standards references diff --git a/content/pages/about.adoc b/content/pages/about.adoc index f124538..384acfd 100644 --- a/content/pages/about.adoc +++ b/content/pages/about.adoc @@ -112,11 +112,13 @@ See the link:/leadership[Leadership & Founders] page for detailed profiles. * link:/people/douglas-schenck[Douglas Schenck] — Inventor of EXPRESS; Project Leader, ISO 10303-11:1994 * link:/people/bernd-wenzel[Prof. Bernd Wenzel] — Project Leader, ISO 10303-11:1994 * link:/people/peter-wilson[Peter Wilson] — Designer of EXPRESS-G & EXPRESS-X; Project Leader, ISO 10303-11:2004 +* link:/people/thomas-thurman[Thomas Thurman] — President * link:/people/allison-barnard-feeney[Allison Barnard Feeney] — General Manager, PDES Inc. * link:/people/david-loffredo[David Loffredo] — Project Leader, ISO 10303-11:2004 * link:/people/jean-brange[Jean Brange] * link:/people/phil-spiby[Phil Spiby] -* link:/people/thomas-thurman[Thomas Thurman] — President * link:/people/hiroshi-murayama[Hiroshi Murayama] — Vice-President * link:/people/ronald-tse[Ronald Tse] — Secretary * link:/people/stuart-galt[Stuart Galt] — Associate Technical Fellow, Boeing; Convenor, ISO/TC 184/SC 4/WG 12 +* link:/people/hiroshi-murayama[Hiroshi Murayama] — Vice-President +* link:/people/ronald-tse[Ronald Tse] — Secretary diff --git a/content/people/hiroshi-murayama.adoc b/content/people/hiroshi-murayama.adoc index a886896..59567a9 100644 --- a/content/people/hiroshi-murayama.adoc +++ b/content/people/hiroshi-murayama.adoc @@ -2,7 +2,7 @@ title: Hiroshi Murayama photo: /images/people/hiroshi-murayama.jpg role: Vice-President -categories: leadership +categories: founders --- == Vice-President, EXPRESS Language Foundation diff --git a/content/people/ronald-tse.adoc b/content/people/ronald-tse.adoc index 94db4f7..74196b8 100644 --- a/content/people/ronald-tse.adoc +++ b/content/people/ronald-tse.adoc @@ -2,7 +2,7 @@ title: Ronald Tse photo: /images/people/ronald-tse.jpg role: Secretary -categories: leadership +categories: founders --- == Secretary, EXPRESS Language Foundation diff --git a/public/logos/logo-icon-blue.svg b/public/logos/logo-icon-blue.svg new file mode 100644 index 0000000..d6f3307 --- /dev/null +++ b/public/logos/logo-icon-blue.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/logos/logo-icon-white.svg b/public/logos/logo-icon-white.svg new file mode 100644 index 0000000..bab5935 --- /dev/null +++ b/public/logos/logo-icon-white.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/logos/logo-lang-express.svg b/public/logos/logo-lang-express.svg index 9d5512c..5cd3387 100644 --- a/public/logos/logo-lang-express.svg +++ b/public/logos/logo-lang-express.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/public/logos/logo-lang-expressg.svg b/public/logos/logo-lang-expressg.svg index 7254fa1..040512d 100644 --- a/public/logos/logo-lang-expressg.svg +++ b/public/logos/logo-lang-expressg.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/public/logos/logo-lang-expressi.svg b/public/logos/logo-lang-expressi.svg index 19e8638..71d4c5e 100644 --- a/public/logos/logo-lang-expressi.svg +++ b/public/logos/logo-lang-expressi.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/public/logos/logo-lang-expressq.svg b/public/logos/logo-lang-expressq.svg new file mode 100644 index 0000000..c939ed0 --- /dev/null +++ b/public/logos/logo-lang-expressq.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/logos/logo-lang-expressx.svg b/public/logos/logo-lang-expressx.svg index 8089924..804780b 100644 --- a/public/logos/logo-lang-expressx.svg +++ b/public/logos/logo-lang-expressx.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/public/logos/logo-long-black.svg b/public/logos/logo-long-black.svg index 9b7a3ae..0b7c61d 100644 --- a/public/logos/logo-long-black.svg +++ b/public/logos/logo-long-black.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/public/logos/logo-long-blue.svg b/public/logos/logo-long-blue.svg index 83a0ec6..e1f27aa 100644 --- a/public/logos/logo-long-blue.svg +++ b/public/logos/logo-long-blue.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/public/logos/logo-long-dark.svg b/public/logos/logo-long-dark.svg index fde6811..0d36e5a 100644 --- a/public/logos/logo-long-dark.svg +++ b/public/logos/logo-long-dark.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/public/logos/logo-long-white.svg b/public/logos/logo-long-white.svg index 83c2c66..0a14b94 100644 --- a/public/logos/logo-long-white.svg +++ b/public/logos/logo-long-white.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/src/components/layout/TheHeader.vue b/src/components/layout/TheHeader.vue index 03d5108..a0904f2 100644 --- a/src/components/layout/TheHeader.vue +++ b/src/components/layout/TheHeader.vue @@ -56,16 +56,8 @@ onMounted(() => {
- -
- - -
+ ELF +
diff --git a/src/pages/languages/index.vue b/src/pages/languages/index.vue index 5e6ee5f..529d495 100644 --- a/src/pages/languages/index.vue +++ b/src/pages/languages/index.vue @@ -50,6 +50,18 @@ const languages = [ features: ['SCHEMA_MAP declarations', 'MAP / COMPOSE', 'FROM / WHEN clauses', 'GLOBAL declarations', 'Source-to-target mapping'], history: 'Designed by Peter Wilson for schema interoperability.', }, + { + name: 'EXPRESS-Q', + id: 'express-q', + slug: 'express-q', + color: 'text-[#7c5cbf]', + bg: 'bg-[#7c5cbf]/8', + border: 'border-[#7c5cbf]/20', + desc: 'Query language for defining mappings between Application Reference Model (ARM) and Model Implementation Model (MIM) schemas, with reference path syntax for precise schema navigation.', + iso: 'ISO 10303-14', + features: ['ENTITY_MAPPING declarations', 'ATTRIBUTE_MAPPING definitions', 'Reference path syntax', 'EXPRESS links', 'YAML serialization'], + history: 'Developed alongside EXPRESS-X for ARM-to-MIM schema mapping.', + }, ] @@ -61,7 +73,7 @@ const languages = [

Language Family

The EXPRESS Language Family

- A family of four complementary information modelling languages for industrial data exchange, smart manufacturing, and interoperability — standardized under ISO 10303. + A family of five complementary information modelling languages for industrial data exchange, smart manufacturing, and interoperability — standardized under ISO 10303.

diff --git a/src/pages/leadership/index.vue b/src/pages/leadership/index.vue index 377f9d5..1b58313 100644 --- a/src/pages/leadership/index.vue +++ b/src/pages/leadership/index.vue @@ -43,6 +43,13 @@ const founders: Person[] = [ desc: 'Original inventor of the EXPRESS language at McDonnell Aircraft (1982). Co-author of the authoritative reference "Information Modelling: The EXPRESS Way".', photo: '/images/people/douglas-schenck.jpg', }, + { + name: 'Prof. Bernd Wenzel', + slug: 'bernd-wenzel', + role: 'Project Leader', + highlight: 'Project Leader, ISO 10303-11:1994 (with Douglas Schenck)', + desc: 'Co-project leader of the first edition of the EXPRESS language standard, guiding it through international standardization at ISO.', + }, { name: 'Peter Wilson', slug: 'peter-wilson', @@ -51,6 +58,13 @@ const founders: Person[] = [ desc: 'Designer of EXPRESS-G (graphical notation) and EXPRESS-X (schema mapping). Co-author of "Information Modelling: The EXPRESS Way". Author of the EXPRESS Tutorial.', photo: '/images/people/peter-wilson.jpg', }, + { + name: 'Thomas Thurman', + slug: 'thomas-thurman', + role: 'President', + desc: 'Owner of TRThurman Consulting. Technical lead for all four editions of ISO 10303-210 (AP 210). ISO Excellence Award and PDES Bryan K. Martin Award recipient.', + photo: '/images/people/thomas-thurman.jpg', + }, { name: 'Allison Barnard Feeney', slug: 'allison-barnard-feeney', @@ -67,13 +81,6 @@ const founders: Person[] = [ desc: 'Co-founder of STEP Tools Inc. Editor of ISO 10303-238 (STEP-NC) and Part 21. Led 20+ major software releases used in over a million CAD seats.', photo: '/images/people/david-loffredo.jpg', }, - { - name: 'Prof. Bernd Wenzel', - slug: 'bernd-wenzel', - role: 'Project Leader', - highlight: 'Project Leader, ISO 10303-11:1994 (with Douglas Schenck)', - desc: 'Co-project leader of the first edition of the EXPRESS language standard, guiding it through international standardization at ISO.', - }, { name: 'Jean Brangé', slug: 'jean-brange', @@ -96,6 +103,20 @@ const founders: Person[] = [ desc: 'Associate Technical Fellow at Boeing with 25+ years in visualization and data exchange standards. Convenor of WG 12 at ISO/TC 184/SC 4, project lead of ISO/CD 14739-1 (PRC), and former Chair of OASIS WebCGM 2.1.', photo: '/images/people/stuart-galt.jpg', }, + { + name: 'Hiroshi Murayama', + slug: 'hiroshi-murayama', + role: 'Vice-President', + desc: 'Former Toshiba Research Fellow. Convenor of ISO TC 184/SC 4/JWG 24 and CEO of SATS Inc. Specializes in product data dictionaries, ontology, and data modelling.', + photo: '/images/people/hiroshi-murayama.jpg', + }, + { + name: 'Ronald Tse', + slug: 'ronald-tse', + role: 'Secretary', + desc: 'Manages organizational operations and administrative functions of the foundation.', + photo: '/images/people/ronald-tse.jpg', + }, ]