What is Expressir?

Expressir ("EXPRESS in Ruby") is a comprehensive Ruby parser and toolkit for working with EXPRESS data models, the data modeling language defined in ISO 10303-11. It enables you to:

  • Parse EXPRESS schemas from multiple formats

  • Analyze complex data models and their relationships

  • Transform schemas using a rich Ruby API

  • Generate documentation using Liquid templates

  • Package schemas into efficient LER (LutaML EXPRESS Repository) bundles

  • Track schema changes across versions

Key Features

Feature Description

Multiple Format Support

Parse EXPRESS (ISO 10303-11), STEPmod XML, and EXPRESS XML formats

Rich Data Model

Complete Ruby representation of EXPRESS schemas with full type information

LER Packages

Pre-indexed, fast-loading schema bundles with 20x+ performance improvement

Schema Analysis

Built-in tools for documentation coverage, validation, and dependency analysis

Liquid Integration

Generate documentation and reports using flexible Liquid templates

CLI Tools

Command-line interface for formatting, validation, benchmarking, and more

Changes Tracking

Track and manage schema modifications across versions

Ruby-First Design

Idiomatic Ruby API with comprehensive test coverage

Quick Start

Installation

Add Expressir to your Gemfile:

gem 'expressir'

Or install directly:

gem install expressir

Parse Your First Schema

require 'expressir'

# Parse an EXPRESS file
repository = Expressir::Express::Parser.from_file('schema.exp')

# Access schemas
repository.schemas.each do |schema|
  puts "Schema: #{schema.id}"
  puts "Entities: #{schema.entities.size}"
  puts "Types: #{schema.types.size}"
end

Use the CLI

# Format a schema
expressir format schema.exp

# Validate schemas
expressir validate schema.exp

# Check documentation coverage
expressir coverage schema.exp

# Create an LER package
expressir package build schema.exp output.ler

Documentation Structure

This documentation is organized into four main sections:

Core Topics

Fundamental concepts and essential information:

Guides

Task-oriented how-to documentation:

Common Use Cases

For Data Modelers

  • Parse and validate EXPRESS schemas

  • Check documentation coverage

  • Format and clean schemas

  • Track changes between versions

For Developers

  • Integrate EXPRESS parsing into Ruby applications

  • Build schema analysis tools

  • Generate documentation from schemas

  • Create custom schema transformations

For Organizations

  • Package large schema collections for distribution

  • Maintain schema version history

  • Automate schema validation in CI/CD

  • Generate standardized documentation

Performance

Expressir is designed for performance:

Operation Traditional With LER

Parse 40+ schemas

10-15 seconds

<500ms (20x+ faster)

Entity lookup

O(n) scan

O(1) indexed (<1ms)

Type resolution

Multiple passes

Pre-resolved

Architecture

Expressir consists of three main components:

┌─────────────────────────────────────┐
│          Ruby API / CLI             │  ← Your Application
├─────────────────────────────────────┤
│         Expressir Model             │  ← Rich Data Model
│  (Entities, Types, Schemas, etc.)   │
├─────────────────────────────────────┤
│          EXPRESS Parser             │  ← Multiple Formats
│  (EXPRESS, STEPmod, EXPRESS XML)    │
└─────────────────────────────────────┘

Support

License

Expressir is distributed under the BSD-2-Clause license. See the LICENSE file for details.

Credits

Copyright © 2025 Ribose Inc.

Expressir is developed and maintained by Ribose Inc. as part of the LutaML project family.