First edition

Date: 2024-05-21

EXPRESS schema manifest specification


Don’t panic, EXPRESS.



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:

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:

  1. An optional root path that serves as the base directory for all schemas

  2. 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.yaml

Figure 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