oSymbolic A Symbolic extention for Postgres

Producción de Objetos Símbolicos

En esta sección se muestran ejemplos de cómo producir objetos simbólicos de la forma:

 

 

Ejemplo 1: Construcción de un concepto

Utilizando la tabla medical (se puede descargar desde la pestaña download en este sitio) de servicios médicos por  pacientes, se va construir un concepto con las categorías de sexo y edad del paciente.

 

 

Código 1. Creación de un concepto

select Stable('medical','sexo,edad');

select * from stable;

 

Para el código anterior se utiliza la función transformadora “stable”, dicha función recibe como primer parámetro el nombre de la tabla de origen de datos (relacional) y como segundo parámetro los conceptos separados por comas “,”.

 

La función stable crea una tabla con el mismo nombre, la cual se puede apreciar en la tabla 1, construcción de un concepto.

 

Tabla 1 – Construcción de un concepto

 

 

Ejemplo 2: Construcción de una variable simbólica de tipo intervalo

Supongamos que un investigador está interesado en ver mediante un intervalo los pesos de sus pacientes, agrupados por sexo y edad. Se define de esta forma el objeto simbólico:

 

 

Código 2. Creación de un intervalo simbólico

SELECT create_symbolic_object('medical', 'gender,age','SINT(PESO),SINT(PULSO)');

-- 

SELECT * FROM stable;

 

La ejecución del código anterior genera una nueva relación, donde la segunda columna es de tipo objeto intervalo simbólico para el peso de esa categoría, mientras la tercera columna representa un objeto simbólico intervalo para el pulso de dicha categoría.

  

Tabla 2. Construcción de intervalos

 

 

Ejemplo 3: Construcción de una aserción

 

Para este ejemplo, se va aplicar una aserción en todos aquellos registros tales que su edad sea mayor a 93 años.  Se obtiene de esta forma el siguiente objeto simbólico:

 

 

La implementación de esta aserción, se logra mediante la siguiente consulta SQL:

 

Código 3. Creación de una aserción

select create_symbolic_object('medical', 'gender,age', 'sint(age)', 'age >= 93');

--

select * from stable;

 

Como resultado de la ejecución del código anterior, Postgres genera la siguiente tabla de nuevos datos.

 

Tabla 3 – Creación de una aserción

 

 

Ejemplo 4: Uso de operadores aritméticos para intervalos

Algunas veces es necesario poder realizar operaciones aritméticas sobre los intervalos como si fueran números reales. Para este ejemplo se va crear un nuevo objeto simbólico intervalo, creado a partir de la suma de dos intervalos[1], formalmente:

 

 

Código 4. Operaciones aritméticas sobre intervalos

SELECT CONCEPT, SINT(PESO)+SINT(PULSO) FROM STABLE;

 

El resultado de ejecutar el código 4, genera una nueva relación en donde la segunda columna es el resultado de suma el intervalo de peso más el intervalo de pulso.

 

La lista completa de funciones aritméticas que soporta le extensión simbólica para los intervalos se detalla en la tabla 8.

 

Tabla 4. Suma de intervalos

 

 

Ejemplo 5: Uso de operadores relacionales para intervalos

De la misma forma que es útil poder sumar intervalos, es igualmente útil poder comparar intervalos en términos de su relación de orden[2].

 

Por ejemplo, un investigador necesita determinar si los intervalos de la presión sistólica son mayor o igual que los intervalos de la presión diastólica.  Esa pregunta la puede responder utilizando el código 5.

 

Código 5. Operaciones relacionales sobre intervalos

select concept, sint(psistolica), sint(pdiastolica), sint(psistolica)>sint(pdiastolica) from stable;

 

Dicha consulta genera la siguiente tabla:

 

Tabla 5.  Operaciones relacionales

 

En donde la cuarta columna de la tabla representa una  t (true, verdadero) como resultado de la operación de comparar en primer intervalo contra el segundo intervalo de la consulta.

 

Ejemplo 6: Uso de operadores conjuntistas para intervalos

En otras ocasiones, es necesario poder determinar datos como unión de dos intervalos[3], motivo por el cual a la extensión se le dotó de capacidades de resolver operaciones conjuntistas.

 

Código 5. Operaciones de conjuntos sobre intervalos

select concept,

unionSint(

   sint(psistolica),

   sint(pdiastolica))

from stable group by concept;

 

El resultado de ejecutar este operador es una tabla como se ve a continuación:

 

Tabla 6. Operador de unión sobre intervalos

 

Ejemplo 6: Construcción de una tabla simbólica

 

Una vez el investigador tenga la consulta SQL que necesita para proceder, la misma puede ser guardada como una tabla simbólica en la base de datos.

 

Código 7. Guardar una tabla simbólica

create table TablaEstudios as

select concept, sint(psistolica) col1, sint(pdiastolica)col2 from stable group by concept;

 

El código anterior crea una estructura de tabla, con tres columnas (concepto, intervalo de presión sistólica e intervalo de presión diastólica), la misma puede ser invocada posteriormente mediante un select * from TablaEstudios.



[1] Se define la suma de intervalos para , como

[2] Se define para los intervalos  la relación de orden    

[3] Se define la unión de intervalos como  para intervalos de la forma