EXPRESS es un estándar para un lenguaje de modelado de datos genérico para datos de productos . EXPRESS está formalizado en la Norma ISO de Intercambio de Producto modelo STEP (ISO 10303) , y estandarizado como ISO 10303-11. [1]
Los modelos de datos definen formalmente objetos de datos y relaciones entre objetos de datos para un dominio de interés. Algunas aplicaciones típicas de los modelos de datos incluyen apoyar el desarrollo de bases de datos y permitir el 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 ISO 10303-11, el Manual de referencia del lenguaje EXPRESS. [3]
Un modelo de datos EXPRESS se puede definir de dos formas, textual 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 uso humano, como explicaciones y tutoriales. La representación gráfica, denominada EXPRESS-G, no es capaz de representar todos los detalles que pueden formularse 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; esto es para 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, relaciones y cardinalidad de entidades y tipos. [5] Esta notación gráfica admite un subconjunto del lenguaje EXPRESS. Una de las ventajas de utilizar EXPRESS-G sobre 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 así:
Familia ESQUEMA;ENTIDAD Persona SUPERTIPO ABSTRACTO DE (ONEOF (Masculino, Femenino)); nombre: CADENA; madre: OPCIONAL Mujer; padre: OPCIONAL Hombre;END_ENTITY;ENTIDAD Mujer SUBTIPO DE (Persona);END_ENTITY;ENTIDAD Hombre SUBTIPO de (Persona);END_ENTITY;END_SCHEMA;
El modelo de datos está incluido dentro de la familia de esquemas EXPRESS . Contiene una entidad de supertipo Persona con los dos subtipos Masculino y Femenino . Dado que Persona se declara ABSTRACTA, solo pueden existir apariciones de (ONEOF) el subtipo Masculino o Femenino . Cada aparición de una persona tiene un atributo de nombre obligatorio y, opcionalmente, atributos de madre y padre . Existe un estilo fijo de lectura para atributos de algún tipo de entidad:
EXPRESS ofrece una serie de tipos de datos, con símbolos de tipo de datos específicos de la notación EXPRESS-G: [2]
Se deben mencionar algunas cosas generales para los tipos de datos.
Los atributos de entidad permiten agregar "propiedades" a 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 atributo. Esto también incluye la agregación.
Hay tres tipos diferentes de atributos: explícitos, derivados e inversos. Y todo esto se puede volver a declarar en un subtipo. Además, un atributo explícito se puede volver a declarar como derivado de un subtipo. No es posible ningún otro cambio del tipo de atributos.
Símbolos de atributos específicos de la notación EXPRESS-G: [2]
Una entidad se puede definir como un subtipo de una o varias otras 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 y 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 dicho gráfico de subsupertipo. En el caso de los gráficos grandes, es probable que el número de combinaciones posibles crezca en rangos astronómicos. Para restringir las posibles combinaciones, se introdujeron restricciones de supertipo especiales, como ONEOF y TOTALOVER. Además, se puede declarar que una entidad es abstracta para exigir que no se pueda construir ninguna instancia solo de esta entidad, pero solo si contiene un subtipo no abstracto.
Las entidades y los tipos de datos definidos pueden restringirse aún más con las reglas WHERE . DONDE las reglas también son parte de las reglas globales. Una regla WHERE es una expresión que debe evaluarse como VERDADERA; de lo contrario, completar un esquema EXPRESS no es válido. Al igual que los atributos derivados, estas expresiones pueden invocar funciones EXPRESS, que a su vez pueden invocar procedimientos EXPRESS. Las funciones y procedimientos permiten formular declaraciones complejas con variables, parámetros y constantes locales, muy similar a un lenguaje de programación.
El lenguaje EXPRESS puede describir reglas locales y globales. Por ejemplo:
ENTIDAD unidad_área SUBTIPO DE ( unidad_nombrada ); DONDE WR1 : ( SELF \ unidad_nombrada . dimensiones . exponente_longitud = 2 ) Y ( SELF \ unidad_nombrada . dimensiones . exponente_masa = 0 ) Y ( SELF \ unidad_nombrada . dimensiones . exponente_de_tiempo = 0 ) Y ( SELF \ unidad_nombrada . dimensiones . exponente_corriente_eléctrica = 0 ) AND ( SELF \ unidad_nombrada . dimensiones . exponente_temperatura_termodinámica = 0 ) AND ( SELF \ unidad_nombrada . dimensiones . cantidad_de_sustancia_exponente = 0 ) AND ( SELF \ unidad_nombrada . dimensiones . exponente_intensidad_luminosa = 0 ); END_ENTIDAD ; -- unidad_área
Este ejemplo describe que la entidad area_unit debe tener un valor cuadrado de longitud. Para ello, el atributo dimensiones.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_en_semana = INTEGER ; DONDE WR1 : ( 1 <= YO ) Y ( YO <= 7 ); END_TYPE ; -- número_día_en_la_semana
Es decir, significa que el valor de la semana no puede exceder 7.
Y así, puede describir algunas reglas a sus entidades. Se pueden encontrar más detalles sobre los ejemplos dados en ISO 10303 -41.
Este artículo incorpora material de dominio público del Instituto Nacional de Estándares y Tecnología.