ISSN: 1139-8736
Depósito Legal: B-8714-2001

6.4.3 Lenguaje de Reglas. Primitivas y Sintáxis

Al Módulo de Transformación Estructural entran varias estructuras de datos de entrada asociadas a la consulta en LN que se está procesando (*.MAP o frase mapeada conceptualmente, *.RAS o rasgos semánticos asociados a los conceptos de la consulta, y *.ETQ o árbol de análisis). Para este módulo el árbol de análisis está formado por una serie de nodos interrelacionados, nodos terminales  (OBJ, CAR, CAROBJ, PTOGCO, COMP, DIST, V, CONT, FINT) y nodos no terminales (QT, QC, QCC, QS). Los fragmentos de LN segmentados conceptualmente y marcados a nivel conceptual con los rasgos, cuelgan de uno de los nodos terminales del árbol de la consulta. Para el Módulo de Transformación, cada nodo tiene una bandera o indicativo de estado (Procesado o No Procesado). Las reglas se aplican de forma iterativa y secuencial hasta que todos los nodos del árbol han sido procesados, momento en el cuál, y así procedía, el árbol (o estructura) ha sido modificado.

Como salida se obtienen (en el caso de que se apliquen las reglas) varias consultas en LN que serán enviadas por el Módulo de Control al Módulo Traductor a SQL, más las funciones (monarias, binarias) que se  forman parte de las consultas, y la relación entre las consultas y las funciones. Toda esta información se dispone en una estructura de datos *.QRY.

El Módulo de Transformación aplica sobre cada nodo un conjunto de Reglas de Transformación que describiremos con algo más de detalle en el siguiente apartado. Estas reglas son interpretadas secuencialmente (el módulo es un intérprete de reglas), y son leídas de un fichero de texto donde se encuentran implementadas en base a un lenguaje de reglas desarrollado en esta tesis para tal fin. Este lenguaje es parecido a “C”, y consta de:

Las primitivas diseñadas e incorporadas al lenguaje (pueden modificarse o añadir nuevas primitivas fácilmente) están pensadas para escribir las reglas de transformación de forma fácil e intuitiva. Veamos algunas de ellas:

int APARICIONES_CONCEPTO ( )
bool CAMBIA_PROCESADO_NODO ( )
bool COPIAR_NODO ( )
int CREAR_HERMANO ( )
int CREAR_TERMINAL ( )
string ESTADO_NODO ( )
bool EXISTE_CONCEPTO ( )
bool EXISTE_CATEGORIA ( )
bool EXISTE_PALABRA ( )
bool EXISTE_PAR ( )
bool EXISTE_RASGO ( )
bool MODIFICAR_RASGO ( )
int NODO_HIJO ( )
int NODO_HERMANO ( )
int NODO_PADRE ( )
int NODO_CONCEPTO ( )
int INDICE_HIJO ( )
int INDICE_HERMANO ( )

Las Sentencias de Control hacen uso de una serie de palabras reservadas, parecidas a los lenguajes de programación de alto nivel, que simplifican la escritura de reglas al ser parecido a escribir un fragmento de código de un programa de ordenador. Veamos algunas de estas palabras reservadas:

Anterior   I  Siguiente   I  Índice capítulo 6   I  Índice General


ISSN: 1139-8736
Depósito Legal: B-8714-2001