EXPRESS es un estándar para lenguaje de modelado de datos genérico para datos de productos . EXPRESS está formalizado en la Norma ISO para el intercambio de modelos de productos STEP (ISO 10303) y estandarizado como ISO 10303-11. [1]
Los modelos de datos definen formalmente los objetos de datos y las relaciones entre los mismos para un dominio de interés. Algunas aplicaciones típicas de los modelos de datos incluyen el apoyo al desarrollo de bases de datos y la habilitación del intercambio de datos para un área de interés particular. Los modelos de datos se especifican en un lenguaje de modelado de datos. [2] EXPRESS es un lenguaje de modelado de datos definido en la norma ISO 10303-11, el Manual de referencia del lenguaje EXPRESS. [3]
Un modelo de datos EXPRESS se puede definir de dos maneras: textualmente y gráficamente. Para la verificación formal y como entrada para herramientas como SDAI, la representación textual dentro de un archivo ASCII es la más importante. Por otro lado, la representación gráfica suele ser más adecuada para el uso humano, como explicaciones y tutoriales. La representación gráfica, denominada EXPRESS-G, no puede representar todos los detalles que se pueden formular en forma textual.
EXPRESS es similar a lenguajes de programación como Pascal . Dentro de un ESQUEMA se pueden definir varios tipos de datos junto con restricciones estructurales y reglas algorítmicas. Una característica principal de EXPRESS es la posibilidad de validar formalmente una población de tipos de datos, es decir, verificar todas las reglas estructurales y algorítmicas.
EXPRESS-G es una notación gráfica estándar para modelos de información . [4] Es un complemento del lenguaje EXPRESS para mostrar definiciones de entidades y tipos, relaciones y cardinalidad. [5] Esta notación gráfica admite un subconjunto del lenguaje EXPRESS. Una de las ventajas de usar EXPRESS-G en lugar de EXPRESS es que la estructura de un modelo de datos se puede presentar de una manera más comprensible. Una desventaja de EXPRESS-G es que no se pueden especificar formalmente restricciones complejas. La figura 1 es un ejemplo. El modelo de datos presentado en la figura podría usarse para especificar los requisitos de una base de datos para una colección de discos compactos (CD) de audio. [2]
Un modelo de datos EXPRESS simple se parece a la figura 2 y el código es el siguiente:
Familia SCHEMA;ENTIDAD Persona SUPERTIPO ABSTRACTO DE (UNO DE (Masculino, Femenino)); nombre: CADENA; madre: OPCIONAL Femenino; padre: OPCIONAL Masculino;FIN_ENTIDAD;ENTIDAD Femenina SUBTIPO DE (Persona);FIN_ENTIDAD;ENTIDAD Masculina SUBTIPO de (Persona);FIN_ENTIDAD;FIN_ESQUEMA;
El modelo de datos está incluido en el esquema EXPRESS Family . Contiene una entidad de supertipo Person con los dos subtipos Male y Female . Dado que Person se declara como ABSTRACT, solo pueden existir ocurrencias de (ONEOF) el subtipo Male o Female . Cada ocurrencia de una persona tiene un atributo de nombre obligatorio y, opcionalmente, los atributos mother y father . Existe un estilo fijo de lectura para los atributos de algún tipo de entidad:
EXPRESS ofrece una serie de tipos de datos, con símbolos de tipos de datos específicos de la notación EXPRESS-G: [2]
Hay que mencionar algunas cosas generales sobre los tipos de datos.
Los atributos de entidad permiten agregar "propiedades" a las entidades y relacionar una entidad con otra en un rol específico. El nombre del atributo especifica el rol. La mayoría de los tipos de datos pueden servir directamente como tipo de un atributo. Esto también incluye la agregación.
Existen tres tipos diferentes de atributos: explícitos, derivados e inversos. Todos ellos pueden volver a declararse en un subtipo. Además, un atributo explícito puede volver a declararse como derivado en un subtipo. No es posible ningún otro cambio en el tipo de atributos.
Símbolos de atributos específicos de la notación EXPRESS-G: [2]
Una entidad puede definirse como un subtipo de una o varias entidades (¡ se permite la herencia múltiple !). Un supertipo puede tener cualquier número de subtipos. Es una práctica muy común en STEP construir gráficos de subsupertipos muy complejos. Algunos gráficos relacionan 100 o más entidades entre sí.
Se puede construir una instancia de entidad para una sola entidad (si no es abstracta) o para una combinación compleja de entidades en un gráfico de subsupertipo. Para los gráficos grandes, es probable que el número de combinaciones posibles crezca en rangos astronómicos. Para restringir las combinaciones posibles, se introdujeron restricciones de supertipo especiales, como OEOF y TOTALOVER. Además, se puede declarar que una entidad es abstracta para hacer cumplir que no se pueda construir ninguna instancia de solo esta entidad, sino solo si contiene un subtipo no abstracto.
Las entidades y los tipos de datos definidos pueden restringirse aún más con reglas WHERE . Las reglas WHERE también forman parte de las reglas globales. Una regla WHERE es una expresión que debe evaluarse como VERDADERA; de lo contrario, una población de un esquema EXPRESS no es válida. Al igual que los atributos derivados, estas expresiones pueden invocar funciones EXPRESS, que a su vez pueden invocar procedimientos EXPRESS. Las funciones y los procedimientos permiten formular declaraciones complejas con variables locales, parámetros y constantes, de forma muy similar a un lenguaje de programación.
El lenguaje EXPRESS puede describir reglas locales y globales. Por ejemplo:
ENTIDAD unidad_de_área SUBTIPO DE ( unidad_con_nombre ); DONDE WR1 : ( YO \ unidad_con_nombre . dimensiones . exponente_longitud = 2 ) Y ( YO \ unidad_con_nombre . dimensiones . exponente_masa = 0 ) Y ( YO \ unidad_con_nombre . dimensiones . exponente_tiempo = 0 ) Y ( YO \ unidad_con_nombre . dimensiones . exponente_corriente_eléctrica = 0 ) Y ( YO \ unidad_con_nombre . dimensiones . exponente_temperatura_termodinámica = 0 ) Y ( YO \ unidad_con_nombre . dimensiones . exponente_cantidad_de_sustancia = 0 ) Y ( YO \ unidad_con_nombre . dimensiones . exponente_intensidad_luminosa = 0 ); FIN_ENTIDAD ; -- unidad_de_área
Este ejemplo describe que la entidad area_unit debe tener un valor cuadrado de length. Para ello, el atributo dimensions.length_exponent debe ser igual a 2 y todos los demás exponentes de las unidades básicas del SI deben ser 0.
Otro ejemplo:
TIPO número_día_de_la_semana = ENTERO ; DONDE WR1 : ( 1 <= SELF ) Y ( SELF <= 7 ); FIN_TIPO ; -- número_día_de_la_semana
Es decir, significa que el valor de la semana no puede superar los 7.
De esta forma, puede describir algunas reglas a sus entidades. Puede encontrar más detalles sobre los ejemplos dados en la norma ISO 10303-41 .
Este artículo incorpora material de dominio público del Instituto Nacional de Estándares y Tecnología.