Reeper is a set of Ruby tools for manipulating ISO EXPRESS data models. The input to Reeper is the standard XML representation of the EXPRESS schemas (ISO/DIS 10303-28 Edition 1), not the ascii EXPRESS representation (ISO 10303-11). A description of that XML format can be found here and the express_model.dtd itself is published as part of an open source project. **
ISO EXPRESS is a standard logical data modeling language, ISO 10303-11. An easy source of more information is the Wikipedia EXPRESS entry.
The reeper architecture is flexible and consists of the following components:
- a model of the EXPRESS language as Ruby Classes
- a REXML-based parser that reads EXPRESS as XML and creates the dictionary (i.e. instances of the EXPRESS Ruby Classes) and then calls a mapper, that may be specified as an option at runtime
- mappers that read the EXPRESS dictionary and perform the conversion to the desired language or format
The code is browseable at the Reeper git repository tree.
EXPRESS to UML2 Mapper
The first EXPRESS to UML 2 mapper, mapper_uml2.rb, maps the core structural elements of EXPRESS. The mapper will be extended in future releases to cover more of the EXPRESS language.
EXPRESS to OWL Structural Mapper
The first EXPRESS to OWL mapper, mapper_owl.rb, takes a simple structural approach. The structural mapper will be extended in future releases to cover more of the EXPRESS language. A configurable mapper aimed at enabling the production of OWL over which reasoning works will be a separate release in the near future.
Ruby API for EXPRESS
A pre-reeper tool that contributed to the reeper project is an EXPRESS-to-Ruby API generator. The API can can read/write ISO/DIS 10303-28 (Part 28 Edition 1) XML files. Not all of EXPRESS or all Part 28 capabilities are supported. Support for EXPRESS multiple inheritance is via Ruby Modules. The first release is neither pretty or efficient and is intended to be used for proof-of-concept or rapid prototype development. It currently takes 2 hours to generate the API for a schema containing 400 entity types. Note, this tool is a separate script, exp2ruby.rb, built before the more flexible reeper tool architecture was developed. It will be migrated to the new component architecture over time.
** Please see the Reeper wiki for the latest information.