Table of Contents
The STEP Modules Repository is a collection of reusable XML building blocks for developing standards from information models defined in EXPRESS. An integral part of the repository's XML vocabulary is its representation of EXPRESS language constructs, i.e. its EXPRESS model. This specification shall refer to this EXPRESS model portion of the repository's XML vocabulary as STEPmod EXPRESS.
STEPmod EXPRESS was originally defined using a Document Type Definition (DTD) because, at that time, more expressive XML schema languages such as the World Wide Web Consortium (W3C) XML Schema definition language (XSD) and RELAX NG were not mature standards, and software tools supporting these languages were unstable. Although XSD has since become a W3C standard and RELAX NG has since become an ISO standards, the current XML schema for STEPmod EXPRESS does not use any of the expressive power offered by these languages. This may change in the future. For example, XSD and RELAX NG both provide stronger datatyping than DTD, and RELAX NG can enforce co-occurrence constraints between XML attributes. Both of these capabilities would be useful for improving the validation of STEPmod EXPRESS XML instances.
STEPmod EXPRESS takes a middle-of-the-road approach regarding the level of granularity of the XML markup with respect to to the EXPRESS language. High level EXPRESS structures such as data types, their attributes, and inheritance relationships are marked up. Expressions, on the other hand, are not. As a result, STEPmod EXPRESS is suitable for applications such as EXPRESS schema browsers as well as partial mappings to other modeling languages such as UML and OWL.
The XML schema contains the following constructs. The schema's root element is express .
The documentation uses the following notational conveniences:
Optional XML elements and attributes are in italics.
* means "zero or more."
+ means "one or more."
| means "or."
Literals are enclosed in single quotes.
text means any character string.
#PCDATA denotes "parsed character data", as defined in XML 1.0, in a content model.
NMTOKEN denotes a name token, as defined in XML 1.0.
aggregate type
EMPTY
Attribute | Documentation | Type | Default |
---|---|---|---|
type | the kind of aggregate | 'AGGREGATE' | 'ARRAY' | 'BAG' | 'LIST' | 'SET' | SET |
optional | whether the aggregate type is optional | 'YES' | 'NO' | NO |
unique | whether the aggregate type is unique | 'YES' | 'NO' | NO |
lower | lower bound | text | |
upper | upper bound | text | |
typelabel | type label | NMTOKEN |
software used to generate the EXPRESS schema
EMPTY
Attribute | Documentation | Type | Default |
---|---|---|---|
name | application name | text | |
owner | application developer | text | |
url | application developer's website | text | |
version | application version number | text | |
source | name of file used as input to the application | text |
EXPRESS built-in type
Attribute | Documentation | Type | Default |
---|---|---|---|
type | specifies which built-in type | 'BINARY' | 'BOOLEAN' | 'GENERIC' | 'GENERICENTITY' | 'INTEGER' | 'LOGICAL' | 'NUMBER' | 'REAL' | 'STRING' | STRING |
width | expression specifying width of binary or string (ignored for other built-in types) | text | |
fixed | expression specifying whether the width is fixed (applies only to binary and string types) | 'YES' | 'NO' | NO |
precision | expression specifying the number of significant digits for a real type | text | |
typelabel | type label | NMTOKEN |
constant declaration
description ( aggregate )* ( typename | builtintype )
Attribute | Documentation | Type | Default |
---|---|---|---|
name | constant name | NMTOKEN | |
expression | constant expression | text |
derived EXPRESS attribute
description ( aggregate )* ( typename | builtintype ) redeclaration
Attribute | Documentation | Type | Default |
---|---|---|---|
name | EXPRESS attribute name | NMTOKEN | |
expression | expression for computing the EXPRESS attribute's value | text |
A description of any item in the interface. In other words the documentation of an imported construct.
Attribute | Documentation | Type | Default |
---|---|---|---|
item | the name of the imported construct | NMTOKEN | |
attribute | only used if the imported construct is an entity in which case, item is the name of the entity and attribute is the name of the attribute | NMTOKEN | |
kind | the kind of item being imported | 'ENTITY' | 'TYPE' | 'ATTRIBUTE' | 'FUNCTION' | 'PROCEDURE' | 'CONSTANT' | ENTITY |
EXPRESS entity type
description ( explicit )* ( derived )* ( inverse )* ( unique )* ( where )* graphic.element
Attribute | Documentation | Type | Default |
---|---|---|---|
name | name of the entity type | NMTOKEN | |
abstract.entity | whether the entity type is abstract (instantiable) | 'YES' | 'NO' | NO |
abstract.supertype | whether the entity is an abstract supertype | 'YES' | 'NO' | NO |
supertypes | supertypes of this entity | NMTOKENS | |
super.expression | supertype expression | text |
EXPRESS enumeration type
Attribute | Documentation | Type | Default |
---|---|---|---|
extensible | whether the enumeration is extensible | 'YES' | 'NO' | NO |
basedon | type which this enumeration extends | NMTOKEN | |
items | enumeration choices | NMTOKENS |
explicit EXPRESS attribute
description ( aggregate )* ( typename | builtintype ) redeclaration
Attribute | Documentation | Type | Default |
---|---|---|---|
name | EXPRESS attribute name | NMTOKEN | |
optional | specifies whether optional | 'YES' | 'NO' | NO |
EXPRESS specification containing one or more EXPRESS schemas
description application ( schema )+
Attribute | Documentation | Type | Default |
---|---|---|---|
language_version | EXPRESS language version | '1' | '2' | '3' | 1 |
rcs.date | date stamp, assumed to be generated using version control software | text | |
rcs.revision | revision stamp, assumed to be generated using version control software | text | |
reference | none | text | |
description.file | file containing descriptive text documenting the EXPRESS objects | text |
EXPRESS function
description ( parameter )* ( aggregate )* ( typename | builtintype ) algorithm
Attribute | Documentation | Type | Default |
---|---|---|---|
name | function name | NMTOKEN |
reference to EXPRESS-G representation of an EXPRESS item
EMPTY
schema type builtintype select enumeration entity subtype.constraint
Attribute | Documentation | Type | Default |
---|---|---|---|
image | none | text | |
page | the graphic's page number | text | |
xcoord | x-coordinate of the graphic's position on the page | text | |
ycoord | y-coordinate of the graphic's position on the page | text |
interface specification
( interfaced.item )* ( described.item )*
Attribute | Documentation | Type | Default |
---|---|---|---|
kind | specifies whether USE FROM or REFERENCE FROM | 'use' | 'reference' | use |
schema | name of schema being interfaced | NMTOKEN |
object imported from another EXPRESS schema
EMPTY
Attribute | Documentation | Type | Default |
---|---|---|---|
name | name of object imported | NMTOKEN | |
alias | alias in this schema for the imported object | NMTOKEN |
EXPRESS inverse attribute
Attribute | Documentation | Type | Default |
---|---|---|---|
name | EXPRESS attribute name | NMTOKEN | |
entity | name of entity to which inverted EXPRESS attribute belongs | NMTOKEN | |
attribute | inverted EXPRESS attribute name | NMTOKEN |
aggregate as part of an inverse EXPRESS attribute
EMPTY
Attribute | Documentation | Type | Default |
---|---|---|---|
type | kind of aggregate | 'BAG' | 'SET' | SET |
lower | lower bound | text | |
upper | upper bound | text |
argument to a function or procedure
description ( aggregate )* ( typename | builtintype )
Attribute | Documentation | Type | Default |
---|---|---|---|
name | name of argument | NMTOKEN |
EXPRESS procedure
Attribute | Documentation | Type | Default |
---|---|---|---|
name | procedure name | NMTOKEN |
WHERE rule
description algorithm ( where )+
Attribute | Documentation | Type | Default |
---|---|---|---|
name | rule name | NMTOKEN | |
appliesto | names of entities to which rule applies | NMTOKENS |
EXPRESS schema
description ( interface )* ( constant )* ( ( entity | function | procedure | rule | subtype.constraint | type ) )* graphic.element
Attribute | Documentation | Type | Default |
---|---|---|---|
name | schema name | NMTOKEN | |
version | schema version | NMTOKEN |
select type
Attribute | Documentation | Type | Default |
---|---|---|---|
extensible | whether select type is extensible | 'YES' | 'NO' | NO |
genericentity | whether extensible select type is constrained to have only entity instances in its domain | 'YES' | 'NO' | NO |
basedon | type which this select type extends | NMTOKEN | |
selectitems | select list | NMTOKENS |
subtype constraint
Attribute | Documentation | Type | Default |
---|---|---|---|
name | subtype constraint name | NMTOKEN | |
entity | entity for which the constraint applies | NMTOKEN | |
abstract.supertype | whether abstract supertype is declared | 'YES' | 'NO' | NO |
totalover | subtypes totally covering the supertype | NMTOKENS | |
super.expression | supertype expression | text |
type declaration
description ( aggregate )* ( typename | builtintype | enumeration | select ) ( where )* graphic.element
Attribute | Documentation | Type | Default |
---|---|---|---|
name | type name | NMTOKEN |
uniqueness rule
Attribute | Documentation | Type | Default |
---|---|---|---|
label | uniqueness rule label | NMTOKEN |
EXPRESS attribute in a uniqueness rule
EMPTY
Attribute | Documentation | Type | Default |
---|---|---|---|
entity-ref | name of entity | NMTOKEN | |
attribute | name of EXPRESS attribute | NMTOKEN |
domain rule
Attribute | Documentation | Type | Default |
---|---|---|---|
label | domain rule label | NMTOKEN | |
expression | domain rule expression | text |