POSC Specifications
Version 3.0
Epicentre Modeling Methodology

Data Type Summary

This is a non-normative summary of the data types allowed in an Epicentre logical data model.

EXPRESS Simple Types

A simple type is an unstructured, built-in type in EXPRESS. Table 1 summarizes the allowed EXPRESS Simple Data Types. The general form of specification is:

     typeName ( parameter ) qualifier

For example:

     TYPE ndt_my_integer = integer ;
     END_TYPE;

     TYPE ndt_fixed_string = string(15) FIXED ;
     END_TYPE;

     TYPE ndt_variable_binary = binary(8) ;
     END_TYPE;
Table 1: EXPRESS Simple Data Types
Type Parameter Qualifier Description
integer     An integer type is one whose domain is the integer numbers or a subset thereof.
real precision   A real type is one whose domain is the real numbers or a subset thereof. The integer precision specifies the minimum number of digits of resolution that are required. This methodology requires that a precision be specified.
string width FIXED A string type is one whose domain is an ordered set of similarly sized string literals. The integer width parameter gives the maximum number of characters that can be held. This methodology requires that a width be specified. A qualifier of FIXED indicates that the string cannot vary in length.
binary width FIXED A binary type is an ordered set of 0 or 1 values. The integer width parameter gives the maximum number of bits that can be held. A qualifier of FIXED indicates that the value cannot vary in length.
logical     A logical type is one that has as its domain the three logical values TRUE, FALSE and UNKNOWN.
boolean     A boolean type is one that has as its domain the two logical values TRUE and FALSE.
enumeration     An enumeration type is one whose domain consists of an ordered set of predefined identifiers.

Epicentre Data Types

These are the Epicentre data types that are defined using the extended EXPRESS Meta Type Syntax. There are three basic categories of types: simple pattern, measured quantity and geometry. The general form of specification is:

     typeName ( param1, param2, ... )

For example:

     TYPE ndt_my_date = date(6) ;
     END_TYPE;

     TYPE ndt_date_interval = yearmonthinterval ;
     END_TYPE;

     TYPE ndt_unconstrained_location = location('',10) ;
     END_TYPE;

     TYPE ndt_1d_location = location('earth 1d',10) ;
     END_TYPE;

Simple Pattern

The simple pattern types define the interrelationship of multiple components of a value. A parameter may be required in order to constrain components of the type.

Table 2: Epicentre Simple Pattern Types
Type Parameter Description
date   A calendar date, specifying a year, month and day of month.
time precision A clock time in Universal Coordinated Time (UCT) specifying an hour, minute, second and time zone.
timestamp precision A point in time in either a precise form or imprecise form. The imprecise form allows the point to be specified in geologic time or in certain combinations of century, year, quarter, month, week, day (of year, month or week) and time of day.
yearmonthinterval   An interval between two dates, given in years and months.
daytimeinterval precision A time interval measured using certain combinations of days, hours, minutes and seconds.
complex precision A complex number consisting of a real and an imaginary part.
rational   A rational number represented as an integer numerator and an integer denominator.
ratio precision The ratio of two signed numbers, represented by a real number numerator and a real number denominator.

Measured Quantity

The measured quantity types also define the interrelationship of multiple components of a value. They differ from the simple pattern types in that they require unit of measure information in addition to the numerical values. A parameter is required in order to constrain components of the type. The type of quantity or coordinate system will constrain the allowed units of measure.

Table 2: Epicentre Measured Quantity Types
Type Parameter Description
quantity quantity_type A real number and a unit of measure, qualifying the real number.
precision
anyquantity precision A real number, a unit of measure and the quantity type of the instance.
angle quantity_type A plane angle given in degrees, minutes, seconds, radians, grads or DMS (degree, minute, second).
precision
money money_constraint An amount of a specified currency, expressed as an integer number of currency unit and an integer number of its subunits.
location coordinate_constraint A set of coordinate values in a specified coordinate system. DMS (degree, minute, second) values are supported.
precision

 

Table 3: Parameters for Quantity and Simple Pattern Types
Parameter Description Type
precision The minimum number of significant figures for the real component. A positive non-zero value must be specified. integer
quantity_type The value of the identifier attribute of an instance of Ref_quantity_type. The instance specifies one or more units of measure, one of which must be used as the unit of measure for the quantity. A non-empty string must be specified. string(80)
money_constraint The value of the identifier attribute of an instance of Ref_currency_unit. The instance specifies a currency unit and its allowed sub-units, any of which must be used as the unit of currency for the value. If an empty string ('') is specified then the value may take any currency. string(80)
coordinate_constraint The value of the identifier attribute of an instance of Ref_coordinate_sys_constraint. The instance defines the number of axes that the coordinate system must have and, thus, the number of coordinate values that must be specified. The units of the coordinate values are restricted to one of the alternative units of measure allowed for the property kind of each coordinate system axis. If an empty string ('') is specified then any coordinate system may be used. string(80)

Geometry

The geometry types define a somewhat complex interaction of arrays of data that is used to define the geometry and other geometrically distributed properties of an object.

Table 4: Epicentre Geometry Types
Type Description
geometry The abstract supertype of POINT, SAMPLE, LINE, SURFACE, VOLUME, HYPERCUBE and ELEMENT.
point Specifies geometry and (optionally) properties at a point.
sample Specifies geometry and (optionally) properties at a collection of points. The points are not ordered.
line Specifies geometry and (optionally) properties at ordered points on a continuous one dimensional object.
surface Specifies geometry and (optionally) properties at ordered points on a continuous two dimensional object.
volume Specifies geometry and (optionally) properties at ordered points on a continuous three dimensional object.
hypercell Specifies geometry and (optionally) properties at ordered points on a continuous 4+ dimensional object.
element Specifies properties on a continuous object that has been sampled using ordered points on a grid. The properties may be assigned to any element of the grid (e.g., node, edge, face, cell). The geometry values must be defined by a different instance of geometry.
unstructured_3d_topology This is a special type whose only purpose is to allow an unstructured grid to be defined independent of an instance of a VOLUME type. Its only use will be to allow applications to define grid modifications outside the context of a data type instance. The type does not have any parameters.

Geometry, and therefore all of its subtypes, has six required parameters (see Table 5) that may be used to constrain what is instantiated in the meta type instance. Geometry allows all of the values that are allowed by its subtypes but certain combinations will inherently constrain the meta type instance to one subtype. For example, specifying 'contour' for the representation_constraint will only allow the instance to be of type SURFACE.

Table 5: Summary of geometry parameter constraints.
order parameter description Type
1 representation_constraint Specifies a constraint on the type and dimensionality of the grid that can be used. The allowed values are defined in Table 6. string(80)
2 position_constraint Specifies the grid element to which values are attached. The allowed values are defined in Table 6. string(80)
3 coordinate_constraint Specifies the identifier of an instance of Ref_coordinate_sys_constraint. The geometry values must be in a coordinate system that has already been validated against this constraint. The constraint specifies the number and order of the axes and specifies the type of property that each axis may have. The number of axes on a coordinate system must be greater than or equal to the dimensionality of the grid. An empty string ('') indicates that there is no constraint on which coordinate system may be used. string(80)
4 coordinate_precision Specifies the minimum precision of the coordinate values. The value must be greater than zero. integer
5 property_constraint Specifies the identifier of an instance of Ref_property_set. The instantiated properties must be in the list allowed by the set. A value of 'none' indicates that property values are not allowed (not allowed for type element). An empty string ('') indicates that there is no constraint on what properties can be instantiated. A value of 'required' indicates that property values must be specified but there is no constraint on what properties can be instantiated. string(80)
6 property_precision Specifies the minimum precision of the property values. The value must be greater than zero unless the property constraint is 'none'. integer

 

Table 6: Summary of geometry constraint values.
parameter value description allowed by
representation_constraint '' An empty string indicates that there is no constraint on the type of grid that can be used. POINT, SAMPLE, LINE, SURFACE, VOLUME, HYPERCELL, ELEMENT
'random' An unordered collection of points. SAMPLE
'contour' A collection of LINE. Each line represents an iso-coordinate. The coordinate system must be a compound system with the iso-coordinate being specified in the 1D component of the compound system. SURFACE
'trimesh' A triangulated mesh. SURFACE, ELEMENT
'cornerpoint' A split-node 3D grid. VOLUME, ELEMENT
'unstructured' An unstructured 3D grid. VOLUME, ELEMENT
'grid1to2d' Either 1 dimensional grid or a 2 dimensional grid. LINE, SURFACE, ELEMENT
'grid' A regular grid with from 1 to 15 dimensions. LINE, SURFACE, VOLUME, HYPERCELL, ELEMENT
'gridhyper' A regular grid with from 4 to 15 dimensions. HYPERCELL, ELEMENT
'grid0d' A degenerate grid. That is, a point. POINT
'grid1d' A regular one dimensional grid. LINE, ELEMENT
'grid2d' A regular two dimensional grid. SURFACE, ELEMENT
'grid3d' A regular three dimensional grid. VOLUME, ELEMENT
'grid4d' through 'grid15d' Specifies a regular four dimensional, five dimensional, etc through fifteen dimensional grid. HYPERCELL, ELEMENT
position_constraint '' An empty string indicates that there is no constraint on the type of grid element to which values can be attached. POINT, SAMPLE, LINE, SURFACE, VOLUME, HYPERCELL, ELEMENT
'node' A node in grid. POINT, SAMPLE, LINE, SURFACE, VOLUME, HYPERCELL, ELEMENT
'edge' A edge that is bounded by two nodes. ELEMENT
'face' A face that is bounded by four edges. ELEMENT
'cell' A cell that is bounded by six faces. ELEMENT
'hyper4' through 'hyper15' A hypercell of N dimensions. ELEMENT

Copyright 1997-2001 POSC. All rights reserved.