Foreword
The EXPRESS Language Foundation (“ELF”) is a registered public charity in the US that facilitates the education, standardization, research, promotion, definition, and usage of information modelling and programming languages, with a focus on the EXPRESS language family.
ELF works with international partners and experts across the globe, reflecting the international nature of its mission. More information about ELF is available on the official website (https://www.expresslang.org).
The procedures used to develop this document and those intended for its further maintenance are described in the ELF Directives.
In particular, the different approval criteria needed for the different types of ELF documents should be noted. This document was drafted in accordance with the editorial rules of the ELF Directives.
Attention is drawn to the possibility that some of the elements of this document may be the subject of patent rights. ELF 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 provided in the Introduction.
Any trade name used in this document is information given for the convenience of users and does not constitute an endorsement.
This document was prepared by Technical Committee EXPRESS.
Introduction
0.1 General
The EXPRESS Schema Manifest specification provides a standardized format for listing and referencing multiple EXPRESS schemas within a project or system. This specification addresses the need for a consistent way to organize and reference EXPRESS schemas, particularly in the context of the EXPRESSdocs framework.
EXPRESS schemas are fundamental components in data modeling for product data representation and exchange. As projects grow in complexity, they often incorporate multiple schemas that need to be referenced and managed collectively. The EXPRESS Schema Manifest specification offers a solution to this challenge by providing a structured format for schema listings.
0.2 Historical context
In STEPmod (developed by ISO/TC 184/SC 4), the repository_index.xml file served the purpose of defining the SMRL (STEP Module Repository Library) collection of EXPRESS schemas. This specification builds upon that concept, providing a more flexible and modern approach using YAML syntax.
The current specification reflects the schemas.yaml file structure that is used in EXPRESSdocs, offering a clear and maintainable way to reference multiple EXPRESS schemas and their locations.
EXPRESS schema manifest specification
1 Scope
This document specifies the EXPRESS Schema Manifest format, a standardized approach for listing and referencing multiple EXPRESS schemas within a project or system.
The EXPRESS Schema Manifest specification provides a structured format for defining collections of EXPRESS schemas, their locations, and relationships, particularly in the context of the EXPRESSdocs framework.
This document:
defines the structure and syntax of the EXPRESS Schema Manifest;
specifies rules for referencing EXPRESS schemas and their locations;
provides methods for organizing collections of EXPRESS schemas; and
includes examples of proper EXPRESS Schema Manifest usage.
2 Normative references
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.
ISO 10303-11, Industrial automation systems and integration — Product data representation and exchange — Part 11: Description methods: The EXPRESS language reference manual
YAML, YAML Ain’t Markup Language — https://yaml.org
EXPRESSdocs, EXPRESSdocs framework for EXPRESS schema documentation — https://www.expresslang.org/expressdocs
3 Terms and definitions
For the purposes of this document, the following terms and definitions apply.
ISO and IEC maintain terminology databases for use in standardization at the following addresses:
ISO Online browsing platform: available at https://www.iso.org/obp
IEC Electropedia: available at https://www.electropedia.org
EXPRESS
data modeling language defined in ISO 10303-11 that provides a formal way to specify data structures and constraints
[SOURCE: ISO 10303-11]
EXPRESS schema
named collection of data specifications in EXPRESS language that defines a set of entities, types, rules, and other elements for a specific domain or application
[SOURCE: ISO 10303-11]
schema manifest
structured document that lists and references multiple EXPRESS schemas and their locations
root path
base directory path from which individual schema paths are resolved
schema listing
entry in a schema manifest that identifies an EXPRESS schema by name and optionally specifies its location
4 Syntax
4.1 General
The EXPRESS Schema Manifest is defined using YAML syntax. This section specifies the structure and components of the manifest file.
4.2 General structure
The manifest file consists of two main components:
An optional root path that serves as the base directory for all schemas
A mandatory schema listings section that enumerates all EXPRESS schemas
The general structure of the manifest file is as follows.
---
path: ~/src/iso-10303-srl <1>
schemas: <2>
# listing of EXPRESS schema names
action_schema: <3>
# `path`: per-schema relative path to the root path
path: schemas/resources/action_schema/action_schema.exp <4>
aic_associative_draughting_elements:
path: schemas/resources/aic_associative_draughting_elements/aic_associative_draughting_elements.exp
# ...
Key
- 1
(optional) Root path
- 2
(mandatory) Schema listings
- 3
(mandatory) Individual EXPRESS schema names
- 4
(optional) Individual schema path
Figure 1
4.3 Components
4.3.1 Root path
The root path is an optional component that specifies the base directory for all schemas listed in the manifest file.
If not set, the current working directory is used as the root path.
The root path can be an absolute path or a path that includes shell expansions like ~ for the home directory.
EXAMPLE
path: ~/src/iso-10303-srl
4.3.2 Schema listings
The schema listings section is a mandatory component that enumerates all EXPRESS schemas included in the manifest.
Each schema is represented by a key-value pair where the key is the name of the EXPRESS schema.
Each schema entry may include an optional path that specifies the location of the schema file relative to the root path.
EXAMPLE
schemas:
action_schema:
path: schemas/resources/action_schema/action_schema.exp
aic_associative_draughting_elements:
path: schemas/resources/aic_associative_draughting_elements/aic_associative_draughting_elements.exp
4.3.3 Individual schema path
The individual schema path is an optional component that specifies the location of a specific schema file.
If not set, the schema is assumed to be located at {root_path}/{schema_name}.exp or {current directory}/{schema_name}.exp if no root path is specified.
The path is relative to the root path if one is specified, or to the current working directory otherwise.
4.4 Usage patterns
4.4.1 When root path is current directory
When the root path is the current directory, individual schema paths must be specified if they differ from the default pattern of {schema_name}.exp.
EXAMPLE
schemas:
action_schema:
path: schemas/resources/action_schema/action_schema.exp
aic_associative_draughting_elements:
path: schemas/resources/aic_associative_draughting_elements/aic_associative_draughting_elements.exp
# ...
4.4.2 When root path is specified
When a root path is specified and schemas are located at {root_path}/{schema_name}.exp, individual schema paths can be omitted or set to nil.
EXAMPLE
path: ~/src/iso-10303-srl
schemas:
action_schema: nil
aic_associative_draughting_elements: nil
# ...
4.4.3 When schema names do not match file names
When schema names do not match their file names, individual schema paths must be specified.
EXAMPLE
---
schemas:
Event_arm:
path: ../../schemas/modules/event/arm.exp
Event_mim:
path: ../../schemas/modules/event/mim.exp
# ...
4.5 Example implementation
An example implementation of the EXPRESS Schema Manifest is provided in the EXPRESSdocs framework.
EXAMPLE The schemas-srl.yml file in the EXPRESSdocs repository provides a complete example of an EXPRESS Schema Manifest.
Annex A
(informative)
Examples
This annex provides examples of the EXPRESS Schema Manifest format.
This example shows a schema manifest that defines a selection of schemas from the SRL (STEP Resource Library).
# yaml-language-server: $schema=https://www.expresslang.org/schemas/manifest/v1/schema_manifest.yaml
---
schemas:
action_and_model_relationships_schema:
path: schemas/resources/action_and_model_relationships_schema/action_and_model_relationships_schema.exp
action_schema:
path: schemas/resources/action_schema/action_schema.exp
aic_associative_draughting_elements:
path: schemas/resources/aic_associative_draughting_elements/aic_associative_draughting_elements.exp
aic_csg:
path: schemas/resources/aic_csg/aic_csg.exp
aic_curve_swept_solid:
path: schemas/resources/aic_curve_swept_solid/aic_curve_swept_solid.exp
aic_draughting_annotation:
path: schemas/resources/aic_draughting_annotation/aic_draughting_annotation.exp
aic_draughting_elements:
path: schemas/resources/aic_draughting_elements/aic_draughting_elements.exp
aic_geometrically_bounded_2d_wireframe:
path: schemas/resources/aic_geometrically_bounded_2d_wireframe/aic_geometrically_bounded_2d_wireframe.exp
aic_manifold_subsurface:
path: schemas/resources/aic_manifold_subsurface/aic_manifold_subsurface.exp
aic_mechanical_design_geometric_presentation:
path: schemas/resources/aic_mechanical_design_geometric_presentation/aic_mechanical_design_geometric_presentation.exp
aic_mechanical_design_shaded_presentation:
path: schemas/resources/aic_mechanical_design_shaded_presentation/aic_mechanical_design_shaded_presentation.exp
analysis_product_relationships_schema:
path: schemas/resources/analysis_product_relationships_schema/analysis_product_relationships_schema.exp
analysis_schema:
path: schemas/resources/analysis_schema/analysis_schema.exp
annotated_3d_model_data_quality_criteria_schema:
path: schemas/resources/annotated_3d_model_data_quality_criteria_schema/annotated_3d_model_data_quality_criteria_schema.exp
annotated_3d_model_data_quality_inspection_result_schema:
path: schemas/resources/annotated_3d_model_data_quality_inspection_result_schema/annotated_3d_model_data_quality_inspection_result_schema.exp
annotated_3d_model_equivalence_criteria_schema:
path: schemas/resources/annotated_3d_model_equivalence_criteria_schema/annotated_3d_model_equivalence_criteria_schema.exp
annotated_3d_model_equivalence_inspection_result_schema:
path: schemas/resources/annotated_3d_model_equivalence_inspection_result_schema/annotated_3d_model_equivalence_inspection_result_schema.exp
application_context_schema:
path: schemas/resources/application_context_schema/application_context_schema.exp
approval_schema:
path: schemas/resources/approval_schema/approval_schema.exp
basic_attribute_schema:
path: schemas/resources/basic_attribute_schema/basic_attribute_schema.exp
certification_schema:
path: schemas/resources/certification_schema/certification_schema.exp
classification_schema:
path: schemas/resources/classification_schema/classification_schema.exp
configuration_management_schema:
path: schemas/resources/configuration_management_schema/configuration_management_schema.exp
contract_schema:
path: schemas/resources/contract_schema/contract_schema.exp
counterbore_countersink_schema:
path: schemas/resources/counterbore_countersink_schema/counterbore_countersink_schema.exp
date_time_schema:
path: schemas/resources/date_time_schema/date_time_schema.exp
document_schema:
path: schemas/resources/document_schema/document_schema.exp
draughting_dimension_schema:
path: schemas/resources/draughting_dimension_schema/draughting_dimension_schema.exp
draughting_element_schema:
path: schemas/resources/draughting_element_schema/draughting_element_schema.exp
drawing_definition_schema:
path: schemas/resources/drawing_definition_schema/drawing_definition_schema.exp
effectivity_schema:
path: schemas/resources/effectivity_schema/effectivity_schema.exp
experience_schema:
path: schemas/resources/experience_schema/experience_schema.exp
external_reference_schema:
path: schemas/resources/external_reference_schema/external_reference_schema.exp
fea_definition_relationships_schema:
path: schemas/resources/fea_definition_relationships_schema/fea_definition_relationships_schema.exp
geometric_model_schema:
path: schemas/resources/geometric_model_schema/geometric_model_schema.exp
geometry_schema:
path: schemas/resources/geometry_schema/geometry_schema.exp
group_schema:
path: schemas/resources/group_schema/group_schema.exp
kinematic_analysis_control_and_result_schema:
path: schemas/resources/kinematic_analysis_control_and_result_schema/kinematic_analysis_control_and_result_schema.exp
kinematic_motion_representation_schema:
path: schemas/resources/kinematic_motion_representation_schema/kinematic_motion_representation_schema.exp
kinematic_property_schema:
path: schemas/resources/kinematic_property_schema/kinematic_property_schema.exp
kinematic_state_schema:
path: schemas/resources/kinematic_state_schema/kinematic_state_schema.exp
kinematic_structure_schema:
path: schemas/resources/kinematic_structure_schema/kinematic_structure_schema.exp
kinematic_topology_schema:
path: schemas/resources/kinematic_topology_schema/kinematic_topology_schema.exp
language_schema:
path: schemas/resources/language_schema/language_schema.exp
location_schema:
path: schemas/resources/location_schema/location_schema.exp
management_resources_schema:
path: schemas/resources/management_resources_schema/management_resources_schema.exp
material_property_definition_schema:
path: schemas/resources/material_property_definition_schema/material_property_definition_schema.exp
material_property_representation_schema:
path: schemas/resources/material_property_representation_schema/material_property_representation_schema.exp
mathematical_context_schema:
path: schemas/resources/mathematical_context_schema/mathematical_context_schema.exp
mathematical_description_of_distribution_schema:
path: schemas/resources/mathematical_description_of_distribution_schema/mathematical_description_of_distribution_schema.exp
measure_schema:
path: schemas/resources/measure_schema/measure_schema.exp
mechanical_design_schema:
path: schemas/resources/mechanical_design_schema/mechanical_design_schema.exp
person_organization_schema:
path: schemas/resources/person_organization_schema/person_organization_schema.exp
presentation_appearance_schema:
path: schemas/resources/presentation_appearance_schema/presentation_appearance_schema.exp
presentation_definition_schema:
path: schemas/resources/presentation_definition_schema/presentation_definition_schema.exp
presentation_organization_schema:
path: schemas/resources/presentation_organization_schema/presentation_organization_schema.exp
presentation_resource_schema:
path: schemas/resources/presentation_resource_schema/presentation_resource_schema.exp
product_analysis_schema:
path: schemas/resources/product_analysis_schema/product_analysis_schema.exp
product_and_model_relationships_schema:
path: schemas/resources/product_and_model_relationships_schema/product_and_model_relationships_schema.exp
product_concept_schema:
path: schemas/resources/product_concept_schema/product_concept_schema.exp
product_data_equivalence_criteria_schema:
path: schemas/resources/product_data_equivalence_criteria_schema/product_data_equivalence_criteria_schema.exp
product_data_equivalence_definition_schema:
path: schemas/resources/product_data_equivalence_definition_schema/product_data_equivalence_definition_schema.exp
product_data_equivalence_inspection_result_schema:
path: schemas/resources/product_data_equivalence_inspection_result_schema/product_data_equivalence_inspection_result_schema.exp
product_data_quality_criteria_schema:
path: schemas/resources/product_data_quality_criteria_schema/product_data_quality_criteria_schema.exp
product_data_quality_definition_schema:
path: schemas/resources/product_data_quality_definition_schema/product_data_quality_definition_schema.exp
product_data_quality_inspection_result_schema:
path: schemas/resources/product_data_quality_inspection_result_schema/product_data_quality_inspection_result_schema.exp
product_definition_schema:
path: schemas/resources/product_definition_schema/product_definition_schema.exp
product_property_definition_schema:
path: schemas/resources/product_property_definition_schema/product_property_definition_schema.exp
product_property_representation_schema:
path: schemas/resources/product_property_representation_schema/product_property_representation_schema.exp
product_structure_schema:
path: schemas/resources/product_structure_schema/product_structure_schema.exp
property_distribution_and_model_relationships_schema:
path: schemas/resources/property_distribution_and_model_relationships_schema/property_distribution_and_model_relationships_schema.exp
qualifications_schema:
path: schemas/resources/qualifications_schema/qualifications_schema.exp
qualified_measure_schema:
path: schemas/resources/qualified_measure_schema/qualified_measure_schema.exp
representation_schema:
path: schemas/resources/representation_schema/representation_schema.exp
risk_schema:
path: schemas/resources/risk_schema/risk_schema.exp
scan_data_3d_shape_model_schema:
path: schemas/resources/scan_data_3d_shape_model_schema/scan_data_3d_shape_model_schema.exp
security_classification_schema:
path: schemas/resources/security_classification_schema/security_classification_schema.exp
set_theory_schema:
path: schemas/resources/set_theory_schema/set_theory_schema.exp
shape_aspect_definition_schema:
path: schemas/resources/shape_aspect_definition_schema/shape_aspect_definition_schema.exp
shape_data_quality_criteria_schema:
path: schemas/resources/shape_data_quality_criteria_schema/shape_data_quality_criteria_schema.exp
shape_data_quality_inspection_result_schema:
path: schemas/resources/shape_data_quality_inspection_result_schema/shape_data_quality_inspection_result_schema.exp
shape_dimension_schema:
path: schemas/resources/shape_dimension_schema/shape_dimension_schema.exp
shape_tolerance_schema:
path: schemas/resources/shape_tolerance_schema/shape_tolerance_schema.exp
state_and_model_relationships_schema:
path: schemas/resources/state_and_model_relationships_schema/state_and_model_relationships_schema.exp
state_observed_schema:
path: schemas/resources/state_observed_schema/state_observed_schema.exp
state_type_schema:
path: schemas/resources/state_type_schema/state_type_schema.exp
support_resource_schema:
path: schemas/resources/support_resource_schema/support_resource_schema.exp
systems_engineering_representation_schema:
path: schemas/resources/systems_engineering_representation_schema/systems_engineering_representation_schema.exp
topology_schema:
path: schemas/resources/topology_schema/topology_schema.exp
Figure A.1
Annex B
(normative)
Schemas
B.1 General
This annex provides the YAML Schema definitions for the EXPRESS Schema Manifest YAML format defined in this document.
This schema can be used to validate EXPRESS Schema Manifest YAML files and to generate documentation or tooling for working with EXPRESS change records.
The schemas are defined in YAML Schema format that follows the JSON Schema format (draft-07).
B.2 Schema manifest schema
The schema change schema defines the structure for recording modifications to EXPRESS schema structure across versions, as described in Clause 4.
$schema: http://json-schema.org/draft-07/schema#
title: EXPRESS Schema Manifest
description: Defines a cohesive set of EXPRESS schemas and their locations.
type: object
required:
- schemas
additionalProperties: false
properties:
path:
type: string
description: >-
(optional) Root path for all schemas. If not set, the root path is set to
the directory where the manifest file is located. Can be an absolute path
or include shell expansions like ~ for home directory.
schemas:
type: object
description: >-
Map of schema names to their configurations. Each key is the name
of an EXPRESS schema.
additionalProperties:
oneOf:
- type: "null"
description: >-
Schema uses default path pattern: `{root_path}/{schema_name}.exp`.
- type: object
description: >-
Schema configuration with explicit path.
additionalProperties: false
properties:
path:
type: string
description: >-
Path to the schema file, relative to root path or absolute.
Relative paths that do not start with `/` are considered relative
to the root path. `..` can be used to refer to parent directories.
Can include shell expansions like `~`.
Figure B.1
This schema can be used for validation by inserting the following comment line at the beginning of the EXPRESS schema manifest YAML file.
# yaml-language-server: $schema=https://www.expresslang.org/schemas/manifest/v1/schema_manifest.yamlFigure B.2
EXAMPLE
# yaml-language-server: $schema=https://www.expresslang.org/schemas/manifest/v1/schema_manifest.yaml
---
schemas:
action_schema:
path: ./schemas/action_schema.exp
Bibliography
[1] ISO 10303, Industrial automation systems and integration — Product data representation and exchange
[2] EXPRESSdocs Repository, EXPRESSdocs implementation — https://github.com/expresslang/expressdocs
[3] STEPmod, STEP Modules Library — https://www.stepmod.org
[4] YAML Specification, YAML Specification — https://yaml.org/spec/
[5] ISO/TC 184/SC 4, Industrial data — Technical committee for industrial data