Overview
EXPRESS is a formally defined information modelling language designed for specifying data schemas, entities, types, constraints, and rules. It is the core language of the EXPRESS family and serves as the foundation for data exchange standards within ISO 10303 (STEP).
EXPRESS is a machine-readable language that combines data modelling with algorithmic expressiveness. Unlike general-purpose programming languages, EXPRESS is purpose-built for defining the structure and constraints of information models used in industrial data exchange.
Key features
Entity declarations — define object types with attributes and constraints
Inheritance hierarchies — SUBTYPE/SUPertype relationships with complex constraints (ONEOF, ANDOR, AND)
WHERE rules — local constraints on entity instances
GLOBAL rules — schema-level constraints spanning multiple entities
FUNCTION and PROCEDURE — algorithmic constructs for constraint evaluation
ENUMERATION and SELECT types — extensible type definitions
Schema partitioning — modular organization of large information models
Building blocks
An EXPRESS schema is composed of several fundamental building blocks that work together to define an information model.
Datatypes
EXPRESS provides a layered type system built on a set of simple (atomic) datatypes:
NUMBER — abstract numeric type (INTEGER or REAL)
INTEGER — whole numbers
REAL — floating-point numbers
STRING — character sequences
BOOLEAN — TRUE or FALSE
LOGICAL — TRUE, FALSE, or UNKNOWN
BINARY — bit sequences
On top of these, EXPRESS provides aggregation types:
ARRAY — fixed-size, ordered collection with optional uniqueness constraint
LIST — variable-size, ordered collection
SET — variable-size, unordered collection with uniqueness constraint
BAG — variable-size, unordered collection (duplicates allowed)
TYPE mass = REAL;
END_TYPE;
TYPE colour = ENUMERATION OF (red, green, blue);
END_TYPE;
TYPE shape = SELECT (box, cylinder, sphere);
END_TYPE;Entity attributes
Entities are the core modelling construct in EXPRESS. Each entity declares a set of attributes that define the properties of the object being modelled.
ENTITY person;
name : STRING;
birth_date : date;
height : OPTIONAL REAL;
DERIVE
age : INTEGER := years_since(birth_date);
INVERSE
employer : SET[0:?] OF employment FOR employee;
END_ENTITY;Attributes can be:
Explicit — mandatory or OPTIONAL values provided directly
Derived (DERIVE) — computed from other attributes using expressions
Inverse (INVERSE) — bidirectional relationships maintained automatically
Supertypes and subtypes
EXPRESS supports single and multiple inheritance through supertype/subtype relationships. Subtypes inherit all attributes of their supertypes and may add new attributes and constraints.
ENTITY vehicle;
registration : STRING;
END_ENTITY;
ENTITY car
SUBTYPE OF (vehicle);
no_of_doors : INTEGER;
END_ENTITY;
ENTITY truck
SUBTYPE OF (vehicle);
payload : mass;
END_ENTITY;Complex supertype constraints control which combinations of subtypes are valid:
ONEOF — exactly one subtype must be instantiated
ANDOR — any combination of subtypes may coexist
AND — all listed subtypes must coexist
Constraints and rules
EXPRESS provides three levels of constraint specification:
ENTITY positive_integer;
value : INTEGER;
WHERE
is_positive : value > 0;
END_ENTITY;RULE unique_registration FOR (vehicle);
LOCAL
regs : SET OF STRING := [];
END_LOCAL;
WHERE
no_duplicates : SIZEOF(regs - QUERY(v <* vehicle | v.registration IN regs)) = 0;
END_RULE;ENTITY employee;
employee_id : STRING;
social_security : STRING;
UNIQUE
id_unique : employee_id;
ss_unique : social_security;
END_ENTITY;Functions and procedures
EXPRESS includes algorithmic constructs for constraint evaluation and data manipulation:
FUNCTION distance(p1 : point; p2 : point) : REAL;
LOCAL
dx, dy, dz : REAL;
END_LOCAL;
dx := p1.x - p2.x;
dy := p1.y - p2.y;
dz := p1.z - p2.z;
RETURN (SQRT(dx*dx + dy*dy + dz*dz));
END_FUNCTION;Syntax
EXPRESS uses a Pascal-like lexical syntax. A schema definition typically includes:
SCHEMAdeclarations containing entities, types, functions, and rulesENTITYdeclarations withATTRIBUTEfields,WHEREclauses, andSUBTYPEconstraintsTYPEdeclarations for user-defined types includingENUMERATION,SELECT, andDEFINEDtypesFUNCTIONandPROCEDUREfor reusable algorithmic logicRULEdeclarations for global constraints
SCHEMA Geometry;
TYPE point_list = LIST[2:?] OF point;
END_TYPE;
ENTITY point;
x : REAL;
y : REAL;
z : REAL;
WHERE
not_at_origin : (x <> 0.0) OR (y <> 0.0) OR (z <> 0.0);
END_ENTITY;
ENTITY line;
start : point;
end : point;
WHERE
not_zero_length : distance(start, end) > 0.0;
END_ENTITY;
FUNCTION distance(p1 : point; p2 : point) : REAL;
LOCAL
dx, dy, dz : REAL;
END_LOCAL;
dx := p1.x - p2.x;
dy := p1.y - p2.y;
dz := p1.z - p2.z;
RETURN (SQRT(dx*dx + dy*dy + dz*dz));
END_FUNCTION;
END_SCHEMA;History
The EXPRESS language originated from the PDDI (Product Data Definition Interface) program, created in 1982 by the US Air Force at McDonnell Aircraft (now merged into Boeing). The language’s name reflects its purpose — to facilitate “expressiveness” in modelling information.
Timeline
1982 | EXPRESS conceived during the PDDI program at McDonnell Aircraft, initiated by the US Air Force |
1984 | Language entered standardization process at the National Bureau of Standards (now NIST) |
1986 | NBS proposed EXPRESS as an International Standard at ISO |
1994 | First edition published as ISO 10303-11:1994, by Douglas Schenck and Prof. Bernd Wenzel |
1994 | First authoritative reference manual published: “Information Modelling: The EXPRESS Way” by Douglas Schenck and Peter Wilson |
2004 | Second edition published as ISO 10303-11:2004, with David Loffredo and Peter Wilson as project leaders |
Key people
- Douglas Schenck
Original inventor of EXPRESS at McDonnell Aircraft during the PDDI program. Project leader of ISO 10303-11:1994 (first edition) together with Prof. Bernd Wenzel. Author of the foundational reference work on the language.
- Prof. Bernd Wenzel
Co-project leader of ISO 10303-11:1994 (first edition) together with Douglas Schenck.
- Peter Wilson
Assisted Douglas Schenck with the first edition of ISO 10303-11:1994. Co-author of the authoritative EXPRESS reference. Designer of EXPRESS-G (the graphical notation) and EXPRESS-X (the schema mapping language). Led the second edition of ISO 10303-11:2004.
- David Loffredo
Co-project leader for ISO 10303-11:2004 (Edition 2) together with Peter Wilson. Long-time contributor to EXPRESS standardization and STEP implementations.
- Allison Barnard Feeney
Key contributor to the standardization of EXPRESS within ISO 10303 at NIST.
Standardization
EXPRESS is defined by ISO 10303-11, part of the STEP (Standard for the Exchange of Product model data) family of standards.
ISO 10303-11:1994 — First edition of the EXPRESS language reference
ISO 10303-11:2004 — Second edition (current), with enhanced EXPRESS-X support and clarifications
EXPRESS is used as the schema definition language for all Application Protocols (APs) within ISO 10303, making it the backbone of industrial data exchange standards used in aerospace, automotive, construction, and digital twin applications.
Applications
EXPRESS is used across multiple industries:
Aerospace — Airbus, Boeing, and suppliers exchange product data using STEP/EXPRESS schemas
Automotive — Automotive manufacturers use EXPRESS-defined APs for design and manufacturing data exchange
Construction and AEC — Building information models reference EXPRESS-defined schemas (e.g., IFC, which is derived from STEP)
Digital twins — EXPRESS schemas define the information models for digital representations of physical assets
Smart manufacturing — Industry 4.0 data exchange leverages EXPRESS-defined standards
Learn more
Tutorial: Learn EXPRESS — comprehensive introductory course by Peter Wilson
Standards & BNF — download the formal EXPRESS grammar
EXPRESS Course — structured course covering ISO 10303 and EXPRESS topics
Information Modelling: The EXPRESS Way — Douglas Schenck and Peter Wilson (Oxford University Press, 1994)