145
Universidad de Colima Facultad de Ingeniería Mecánica y Eléctrica Bases de datos inteligentes. TESIS que para obtener el grado de Maestro en Ciencias Área Computación Presenta: Sergio Antonio Becerra Zepeda Asesor: Mc. Rodolfo Gallardo Rosales Coquimatlán, Colima. Junio 1999

TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

Embed Size (px)

Citation preview

Page 1: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

Universidad de Colima

Facultad de Ingeniería Mecánica y Eléctrica

Bases de datos inteligentes.

TESIS

que para obtener el grado de

Maestro en CienciasÁrea Computación

Presenta:Sergio Antonio Becerra Zepeda

Asesor:Mc. Rodolfo Gallardo Rosales

Coquimatlán, Colima. Junio 1999

Page 2: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

Exp.No.: 0014Fecha: 08-05-99Acta No. : 5

c. s%RGlO ANTONIO BECERRA ZEPEDADo- CALDERONNUM. 191

CIUDAD Gum JALWQC341)2 59 41

En cumplimiento alreglamento de estudios de Posgrado

artículo: 13 y 14 del reglamento de titulación, a los artículos: 46 y 48 delvigente y al articulo: 46 de las normas compkmentarias al reglamento de

Posgrado, correspondientes al Posgrado de la Facultad de Ingenieria Mecánica y Eléctrica. Informamos a ustedque ha+ sido autokado por este Consejo Técnico del Posgrado su tema de Tesis para obtenerel grado de Maestro en Ciencias Computacionales titulado: n BASES DE DATOS INTELIGENTES “

para ser desarrollado bajo los siguientes puntos:

1 . -INTRODUCCIONI I .- SISTEMAS BASADOS EN CONOCIMIENTOIII .- SISTEMAS EXPERTOSIv .- ARQUITECTURA DE UNA BD1v . - PROGRAhWCION DE UNA BD1VI .- ESTADO DEL ARTEVII .- CONCLUSIONES

BIBLIOGIWFIA

A s i m i s m o hacemosdesu canocimiento que de acuerdo con la linea de investigación en lacual se enmaxca s u Proyecto ha sido autorizado como asesor de tesis elC. NC. RODOLFO GALLARDO ROSALES

A partir de la fecha de aprobación tendrá como plazo un año para presentar su examen de grado, en casocontrario tendrá usted derecho a m prórroga única de seis meses so pena de perder el registro de su proyecto.

Una vez concluidos los tramites de revisión de su documento de tesis e integrado su expediente de titulacióndeberá recoger el oficio que acompaíiara a el visto bueno de su asesor de tesis, los cuales encabeza& cada uno de losejemplares de su tesis.

A t e n t a m e n t e

Posgrado de la Facultad de Ingenieti Mecánica y Elt5lgday la Universidad de

Page 3: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

M.C. Rodolfo Gallardo Rosales

Mayo& 1999.

H. Consejo Técnico de Posgradode la F.I.M.E.Universidad de Colima.P r e s e n t e .

Por medio de este conducto, informo a ese Consejo Técnico de Posgrado que el C. SergioAntonio Becerra Zepeda, terminó su período de revisión de tesis para:

MAESTRIA EN CIENCIAS COMPUTACIONALES

Bajo el título:

‘BASES DE DATOS INTELIGENTES”

cuyo contenido he el siguiente:

I. INZRODUCCION2. SISmS BASADOS EN CONOCIMIENTO3.. SISTEiMS EXPERTOS4. ARQUI7XXUIU DE UNA BDI5. PROíXAA4ACIONDE UNA BDI6. ESTADO DEL ARTECONCLUSIONES

el cual cumple con los requisitos necesarios para su aprobación, por lo cual lo autorizo parasu impresión.

Atentamente,

Page 4: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

Will it to be possible than does a machine make the sameas make the human biings when do think ?

Turing 1950

Page 5: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

1 Abstmct

I AbstractDescripción:

En las bases de datos inteligentes se concentra la evolución e integración

de las bases de datos relacionales - activas y las técnicas avanzadas para la búsqueda,

recuperación y procesamiento de la información en el área de los sistemas expertos y la

inteligencia artificial.

En este proyecto se pretende desarrollar un conjunto de herramientas

para la construcción de aplicaciones de Bases de Datos que operen a un nivel de

abstracción superior frente a las técnicas convencionales. Este mayor poder de

abstracción, combinado con otras herramientas permitirá la creación de ambientes

inteligentes que combinen las tecnologías de bases de datos, bases de conocimiento e

inteligencia artificial.

Nuestro principal objetivo detallar el conjunto teórico mediante el cual

pueda manipularse una base de datos relaciona1 de manera transparente, extrayendo

conocimientos a partir del análisis de estructuras simples, interrelacionando procesos

de adquisción de datos con procesos de inferencia, en suma, consolidar un punto de

partida en la representación y manipulación semántica de las aplicaciones avanzadas.

Presenta:

Me. Sergio Antonio Becerra ZepedaCandidato al Grado de Maestro en Ciencias Computacìonales.

Validación:

Universidad de ColimaFacultad de Ingeniería Mecánica y EléctricaMaestría en Ciencias Computacionales.Junio, 1999.

Page 6: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

II. Tabla de contenidos

ll. Tabla de Contenidos.

1II

AbstraeTabla de contenidos

1. Introducción

2. Sistemas basados en conocimiento

2.1 Antecedentes 4

2.2 Enfoques de los SGDB 6

23 Evolución de los SGDB 7

2.4 Clasificación de los SGBD2.4.1 Sistemas orientados al proceso y SGBD clásicos2.4.2 SGBD semánticos2.4.3 SGBD activos2.4.4 SGBD deductivos2.4.5 SGBD orientados al objeto2.4.6 SGBD multidimensionales

1010l l1 1121314

2.5 Conocimiento y bases de datos 16

2.6 Representación del conocimiento 172.6.1 Representación mediante cálculo de predicados 212.6.2 Representación mediante redes semánticas 222.6.3 Representación mediante reglas de producción 232.6.4 Representación por objetos estructurados 242.6.5 Representación mediante procedimientos 252.6.6 Representación mediante árboles de decisión 262.6.7 Representación mediante listas de decisión 26

2.7 Representación lógica se un SGDB relaciona1 272.7.1 Estructura e integridad 272.7.2 Manipulación de datos 28

Page 7: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

II. Tabla de contenidos

3. Sistemas Expertos

3.1 Antecedentes 3 1

3.2 Programación lógica en sistemas expertos3.2.1 Conceptos básicos

3.3 Sistemas expertos y bases de datos inteligentes

4. Arquitectura base de datos inteligente

4.1 Fundamentos

4.2 Descripción

4.3 Arquitectura4.3.1 Computación Evolutiva e IPL4.3.2 Conocimiento con incertidumbre4.3.2-l Tratamiento de los valores inciertos4.3.2.2 Tratamiento de la información desconocida o

4 54 84 15 6

condicional 6 0

5. Programación de una base de datos inteligente

5.1 Consideraciones generales

5.2 Base de datos persistente y en intenso5.2.1 Recordset5.2.2 Database Object5.2.3 SQL en Visual Basic5.2.4 Edición de las Bases persistente y en intenso5.2.4.1 Representación gráfica de los datos4.3.2 Manipulación de la base en intenso

5.3 Archivos binarios 96

5.4 Filtrado y preproceso5.4.1 Difusor simple5.4.2 Difusor con múltiples condiciones

5.5 Manipulación de la base de datos en intenso 108

32 J3 5

36

3 8

39

6 6

6 66 66 87088929 5

105105107

5.6 Programación lógica paralela 114

Page 8: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

II. Tabla de contenidos

6. Estado del Arte

6.1 El Análisis inteligente de datos 126

6.2 Desafíos en,la explotación inteligente de datos 130

7. Conclusiones

III Referencias Bibliográficas 115

Page 9: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

Introducción 1

1. Introducción

Una de las principales preocupaciones de los desarrolladores de software destinado a

la administración de bases de datos, es la creciente necesidad de incorporar

herramientas que permitan acceder y manipular eficientemente las colecciones de

datos que distinguen a las nuevas tecnologías de la información.

Los esquemas operativos orientados a soluciones administrativas generales han

multiplicado su nivel de exigencia, precisando productos que efectúen análisis sobre los

datos almacenados, para responder eficientemente a consultas no planificadas; con

capacidad para realizar operaciones entre los datos estructurados (propios de la

mayoría de bases actuales), con distintos tipos de datos no estructurados, y -

fundamentalmente- con capacidad de procesar estas características en la oferta de

soluciones.

En este terreno, comienza a acuñarse el término de bases de datos inteligentes en el

que convergen los fundamentos teóricos de la Inteligencia Artificial con los sistemas

relacionales activos; adicionando a la estructura del motor relaciona1 un motor de

inferencia, que habilita conjuntos de acciones disparadas por reglas y consultas

ampliadas por inferencia.

Existe un robusto compendio teórico (modelos matemáticos), para la construcción de

sistemas que soporten un gran número de reglas complejas para la inferencia

automática de la información y el tratamiento de la incertidumbre (un soporte de reglas

declarativas para expresar las interrelaciones semánticas entre objetos de la base de

datos), entre este conjunto, destacan los algoritmos genéticos, la lógica difusa (fuzzy

Iógic) y la lógica multievaluada.

La eficiente implementación de una BDI(Base de Datos Inteligente), precisa del

desarrollo de un sistema que posea la capacidad de gestionar conocimiento complejo a

través del procesarnieto de datos simples, provenientes tanto de ficheros controlados de

Page 10: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

Introducción 2

forma autónoma como de un SGDB(Sistema Gestor de Bases de Datos); incorporar la

capacidad de utilizar la experiencia en un dominio particular de aplicación para resolver

clases de problemas dentro del dominio.i

Es importante destacar que existe un limitado número SGDB comerciales orientados

exclusivamente a estos aspectos (p.ej. Datalog), de hecho, las tecnologías aplicadas en

este dominio se construyen como extensiones de los sublenguajes DML Y DDL

particulares del lenguaje anfitrión; tecnologías que recuperan segmentos de los avances

de la Inteligencia Artificial y los expresan -fundamentalmente- en la semántica de los

procesos de consulta. Por ello, existen múltiples enfoques híbridos en los que

encontramos esquemas operativos lógicos y procedurales, entre los que destacan los

denominada minería de datos (data mining) con un sólido punto de partida: la

tecnología KDD (Knowdlege Discovery in Databases) recientemente incorporada por

IBM en el desarrollo de sistemas expertos.

En este proyecto se pretende desarrollar un conjunto de herramientas para la

construcción de aplicaciones de Bases de Datos que operen a un nivel de abstracción

superior al de los manejadores de BDs actuales. Estas herramientas estarán diseñadas

para facilitar su integración con los sofisticados ambientes de desarrollo de uno de los

principales manejadores de Bases de Datos actuales: Jet@ de Microsoft.

Este mayor poder de abstracción combinado con sus posibilidades de integración con

otras herramientas permitirá la creación de ambientes inteligentes orientados a usuarios

finales que combinen las tecnologías de bases de datos, bases de conocimiento,

programación orientada a objetos, e interfaces intuitivas para usuarios finales.

En el desarrollo de nuestra investigación pormenorizamos sobre el conjunto de

indicadores involucrados en la arquitectura de bases de datos, dando cuenta de los

esquemas operativos y evolución de los SGDB, el impacto de las tecnologías aplicadas a

la inteligencia artificial sobre éste dominio en particular (representación del conocimiento) y

los modelos matemáticos que dan coherencia al conjunto. En todos los casos, se

Page 11: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

Introducción 3

ejemplifican las operaciones y procesos considerando el enfoque relaciona1 con que opera

Jet.

Finalmente, se desarrollan prototipos con el objetivo de acreditarla validez del conjunto

teórico expuesto; dichos, operan en dos formas: mediante una interfaz entre aplicaciones

donde el ,sistema manipula una base de datos relaciona1 (base persistente), de la que se

obtienen los datos (base en intenso) que serán procesados tanto por una aplicación

periférica (motor de inferencia): Prolog; y mediante objetos y procedimientos

desarrollados específicamente en el lenguaje nativo de la aplicación en general: Visual

Basic 6 Enterprise Edition.

Los prototipos recuperan y expresan los nudos de nuestra investigación, en su diseño

hemos considerado distintas vistas que dan transparencia a los procesos de que se ocupa

el sistema, esto es, en todo momento es posible editar la estructura de la base persistente,

los datos concentrados en la base en intenso y el repositorio de reglas que determina el

comportamiento del motor de inferencia en razón directa a los datos que procesa.

Page 12: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

2. Sistemas basados en conocimiento 4

2. Sistemas Basados en Conocimiento.

2.1 Antecedentes

La sofisticación de la tecnología moderna de las bases de datos es el resultado de la

evolución que a lo largo de varias décadas ha tenido lugar en el procesamiento de los

datos y en la gestión de la información. La tecnología de acceso a los datos se ha

desarrollado desde los primitivos de los años cincuenta hasta los potentes e integrados

sistemas de hoy en día, arrastrados de un lado por las necesidades y las demandas de

la administración y, de otro, restringida por las limitaciones de la tecnología. Las

expectativas de la administración han crecido paralelamente a la evolución de la

tecnologías.

Los primeros sistemas de procesamiento de datos ejecutaron las tareas administrativas

para reducir el papeleo. Más recientemente, los sistemas se han expandido hacia la

producción y la gestión de la información, la que se ha convertido en un recurso vital

para las compañías. Actualmente, la función más importante de los sistemas de bases

de datos consiste en proporcionar el fundamento a los sistemas de información para la

gestión corporativa.

Una base de datos es un conjunto de Información, en sentido amplio, el término puede

aplicarse a cualquier agregado de datos; técnicamente es una colección de datos,

agrupados con un propósito específico en una o mas entidades Ióg.icas (archivos). En

términos estrictos, “base de datos”, hace referencia sólo al lugar donde está depositada

la información (hablando tanto desde la perspectiva del hardware, como del software),

dicha información -generalmente- está soportada por un sistema para su gestión SGBD.

Las bases de, datos son accedidas generalmente por un conjunto de aplicaciones

periféricas que incluyen tecnologías y herramientas de muy diverso tipo con los que

interactúa y que sirven de interfaz entre los usuarios y la base de datos. En la

Page 13: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

2. Sistemas basados en conocimiento 5

actualidad, el impulso impuesto por el desarrollo de los sistemas de información, ha

provocado la evolución de las bases de datos en conjuntos abstractos, denominados

almacenes de datos (datawarehouse). ~

Incorporar conocimiento en un sistema de bases de datos fue sugerido por el desarrollo

en el campo de la Inteligencia Artificial (programación de comportamientos inteligentes).

La investigación en IA incluye estudios sobre la representación de reglas lógicas que

operen sobre los datos, esto es sistemas que descansan sobre una base de

conocimientos para razonar sobre el conjunto de datos.

Históricamente, la evolución de los SGBD nos ha proporcionado métodos para analizar

datos y encontrar correlaciones y dependencias entre ellos. Sin embargo, el análisis de

datos ha cambiado recientemente y ha adquirido una mayor importancia, debido

principalmente a tres factores:

a) Incremento de la potencia de los ordenadores. Aunque la mayoría de los métodos

matemáticos fueron desarrollados durante los años 60 y 70, la potencia de cálculo de

los grandes ordenadores de aquella época (equivalente a la de los ordenadores

personales de hoy en día) restringía su aplicación a pequeños ejemplos “de juguete”,

fuera de los cuales los resultados resultaban demasiado pobres. Algo similar ha

ocurrido con la capacidad de almacenamiento de los datos y su coste asociado.

b) Incremento del ritmo de adquisición de datos. El crecimiento de la cantidad de datos

almacenados se ve favorecido no sólo por el abaratamiento de los discos y sistemas de

almacenamiento masivo, sino también por la automatización de muchos experimentos y

técnicas de recogida de datos. Se estima que la cantidad de información almacenada

en todo el mundo se duplica cada 20 meses; el número y tamaño de las bases de datos

probablemente crece más rápidamente.

c) Por último, han surgido nuevos métodos, principalmente de aprendizaje y

representación de conocimiento, desarrollados por la comunidad de inteligencia

Page 14: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

2. Sistemas basados en conocimiento 6

artificial, estadística y física de dinámicas no lineales. Estos métodos complementan a

las tradicionales técnicas estadísticas en el sentido de que son capaces de inducir

relaciones cualitativas generales, 0 leyes.

Estos nuevos métodos matemáticos y técnicas software, para análisis inteligente de

datos y búsqueda de regularidades en los mismos, se denominan actualmente técnicas

de minería de datos o dafa miníng. A su vez, la minería de datos ha permitido el rápido

desarrollo de lo que se conoce como descubrimiento de conocimiento en bases de

datos.

En este capítulo, desarrollaremos un estudio introductorio a los SGBD, pormenorizando

en su enfoque y evolución, derivando los fundamentos teóricos en que se soportará el

desarrollo de bases de datos inteligentes.

2.2 Enfoques de los SGBD

Una clasificación primaria de los SGBD, nos permite establecer los tipos básicos según

el tipo de estructura de datos que soporta:

l Enfoque jerárquico. Parte de una estructura de datos basada en un conjunto de

registros diferentes guardados en un único archivo y jerarquizados entre sí mediante

ligas. Su estructura de árbol, impone que un elemento padre puede tener varios

elementos hijo, pero no su inverso. Precisa de punteros físicos.

l Enfoque de Red (Codasyl). Similar al enfoque jerárquico en tanto al uso de

registros y ligas, pero dentro del esquema jerárquico un elemento de inferior

jerarquía puede tener varios elementos situados a un nivel superior del mismo. Las

bases de datos gestionadas bajo este enfoque implementan registros conectores

(estructuras de datos que sirven para asociar a otras dentro de un fichero). Precisa

de punteros físicos

Page 15: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

2. Sistemas basados en cxxmcimiento 7

l Enfoque relacional. Se caracteriza por la representación de datos en forma de

tablas, en las que los conjuntos de registros tienen un formato fijo e idéntica

estructura. El enfoque relaciona1 en bases de datos parte del modelo relaciona1 en

matemáticas y, por tanto, son susceptibles de aplicar al mimo todas las

formulaciones teóricas que éste presenta; en objetivos posteriores desarrollamos

una descripción exhaustiva de este enfoque, puesto que el prototipo BDI, de nuestro

estudio utiliza un SGBD relaciona1 (Microsoft Jet).

l Orientado a objetos. Basada en el encapsulamiento de código y datos en unidades

denominadas objetos, que interactúan con el sistema a través de mensajes. El

agrupamiento de objetos con métodos y variables comunes se estructura en clases

jerárquicas.

l Enfoque L6gico. No es esencialmente distinto al enfoque relacional, pero se

sustenta en la lógica de predicados de primer orden para representar y manipular los

datos, con lo que se obtiene un modelo relaciona1 flexible con capacidades para la

deducción automática, a éste pertenecen los SGBD deductivos.

Una característica de los tres primeros modelos mencionados es que sólo aceptan

datos escalares individuales tipificados y nulos (“NULL”). Como característica general,

los esquemas han sido desarrollados con la capacidad de operar sobre datos “ideales”,

en el supuesto de que la información a procesar es exacta, correcta y bien definida.

2.3 Evolución de los SGBD

La historia de las bases de datos inicia a mediados de los años cincuenta, en el

momento en que comenzaron a introducirse los ordenadores para automatizar la

gestión de las empresas, fundamentalmente con desarrollos en COBOL, y se han

caracterizado por el uso de tecnologías orientadas a la estructuración de datos

mediante modelos jerárquicos y Codasyl (p.ej. IMS de IBM; IDMS de Cullinet) de lógica

Page 16: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

2. Sistemas basados en conocimiento 8

procedimental, que obligan al programador a desplazarse registro a registro, hecho que

implica una escasa flexibilidad.

En 1970 se propuso el modelo relacional, basado en los trabajos del Dr. Codd,

básicamente el modelo matemático que dio fundamentos a la segunda generación de

SGBD, caracterizada por una mayor independencia físico-lógica, dado que actúan

sobre conjuntos de registros; entre ellas destacan ORACLE, DB2, INGRES, INFORMIX,

SYBASE, etc. Codd propuso un modelo simple de datos en el que todos ellos se

representarían en tablas constituidas por filas y columnas. A dichas tablas se les dio en

nombre matemático de relaciones, denominándose así el sistema como relacional.

Codd también propuso dos lenguajes para manipular los datos en las tablas: álgebra y

cálculo relacional, que soportan la manipulación de los datos sobre la base de

operadores lógicos en lugar de los punteros físicos utilizados en los modelos jerárquicos

y de red. El resultado fue la aparición de sistemas relacionales durante la última mitad

de los setenta que soportaban lenguajes como el Structured Query Language (SQL), el

Query Language (Quel) y el Query-by-Example(QBE): los trabajos de investigación que

se realizaron durante la década de los ochenta se centraron en la optimización de

consultas, lenguajes de alto nivel, teoría de la normalización, organizaciones físicas para

el almacenamiento de las relaciones, algoritmos para la gestión de memorias intermedias

(bufen), técnicas de indexación para un acceso asociativo más rápido (distintas

variaciones de los árboles), sistemas distribuidos, diccionarios de datos, gestión de

transacciones, etc. Estas investigaciones han tenido como consecuencia la elevada tasa

de transacciones de muchos de los productos actuales que permiten asegurar entornos

transaccionales en línea (OLTP) muy eficientes y seguros. También cabe recordar que

durante la primera mitad de los ochenta se estandariza el lenguaje SQL (el SQUANSI se

aprueba en 1986), ofreciendo, al cabo de poco tiempo, prácticamente todos los productos

una interfaz SQL, aún los no relacionales (sistemas “renacidos”).

El enfoque relaciona1 permite a los programadores la manipulación de tuplas procedentes

de distintos ficheros y tablas en una misma base de datos mediante consultas

Page 17: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

2. Sistemas basados en conocimiento 9

estructuradas, habilitando acciones múltiples sobre los registros. La aparición y

estandarización de SQL, permitió una mayor integración, multiplicó las tareas asignadas a

las bases de datos e implicó el desarrollo de sistemas de uso transparente, cuya facilidad

de manejo derivó en una excepcional productividad e impresionante impacto económico.

La tercer generación de SGBD, tiene como principal característica la optimización

relaciona1 de los sistemas en entornos multiusuario, la gestión de objetos que permite

tipos de datos complejos (texto, imagen, audio...), el encapsulamiento de la semántica

de datos que proporciona un soporte robusto para la recuperación automática de la

información y mantenimiento de las restricciones de integridad entre datos.

Es posible clasificar los distintos sistemas como gestores de información “natural”. En

la evolución de esta generación destacan dos indicadores: una arquitectura a tres

niveles con descripción recursiva de datos (ANSI, ISO) como referencia; y el modelo

relacional.

l Nivel l Definición IConceptual

Externo

Interno

Nivel estructural de la base de datos que define su esquema lógico.

Nivel estructural de la base de datos que define las vistas de los

usuarios.

Nivel estructural de la base de datos que define la vista física .

Tabla 1. Arquitectura de tres niveles.J

La explosión de los sistemas de información obligó a los desarrolladores de SGBD a la

implementación de potentes gestores destinados a usuarios finales, con interfaces

intuitivas -gráficas fundamentalmente- dotadas de asistentes generadores de código:

Access (Visual Basic, SQL), Visual Fox (SQL), En la sigiente figura, ilustramos un

resumen de la cronología expuesta:

Page 18: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

2. Sistemas basados en conocimiento 1 0

AKhlYos conacceso directo SGBD

RELACIONALES.

T SGBDJERARQUICOS 1 9 7 0 T 1990ArChi~S 1960 SGBD 1980

Secuenciales RED 1 1 2000

Publicación del modelo SGRDrelaciona1 de Codd. ORIENTADOS

AL OBJETO.SGBD LOGICOS(REL. AMPLIADO)

2.4 Clasificación de los SGBD

2.4.1 Sistemas Orientados al proceso y SGBD clásicos

Sistemas que operan sobre conjuntos de registros agrupados en “ficheros”, cuya

naturaleza reside en la recuperación y almacenamiento simple, dado que no almacenan

ningún tipo de información para el procesamiento de datos, las restricciones, procesos y

el control se distribuye en los programas que acceden a los ficheros.

Estos sistemas “clásicos” enfrentan graves problemas de redundancia al encontrarse

dispersa la semántica de los datos en los programas. Se distinguen por el acceso

secuencial a cadenas de caracteres, interpretadas por los programas.

Este tipo de sistema no es considerado como una base de datos en el sentido estricto

del término; será hasta que aparezcan los primeros ficheros u archivos en los que

pueda almacenarse la descripción de los datos (catálogo o diccionario) que

consideremos la primer clasificación de SGBD (Clásicos), aún cuando prácticamente

todas las restricciones sobre los datos se comprueban en los programas.

Page 19: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

2. Sistemas basados en conocimiento l l

/ , ProgamasI

2.4.2 SGBD semánticos

En la medida en que evolucionaron los componentes físicos de los ordenadores y se

hizo posible el uso de mayor memoria para operaciones lógicas, los SGBD incorporaron

mayor número de información sobre los datos en el propio catálogo de la base de datos,

habilitando restricciones de diferentes tipos (CHECK), aserciones e incluso dominios,

así, en un SGBD semántico la base de datos incluye información sobre restriccioneti,

información sobre datos y los datos en sí.

2.4.3 SGBD activos

En este tipo de sistemas, los desarrolladores incorporan acciones que el sistema

ejecuta sin la intervención del usuario, a través de disparadores, reglas, demonios, etc.

Tecnología basada en procedimientos que se activan de forma automática, y que han

sido previamente especificados en la fase de definición intensión- de la base de datos.

De hecho, representan patrones invocados donde las condiciones para invocar se

Page 20: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

2. Sistemas basados en conocimiento 1 2

revisan en cada paso, frente a los SGBD semánticos, encontramos además, en la base

de datos información de control.

Atendiendo los conceptos de algunos autores, un SGBD activo se distingue porque si

modelo de conocimiento describe las situaciones y las reacciones correspondientes:

Evento, Condición, Acción (ECA, cuando ocurre un evento se evalúa la condición y si

ésta se satisface se ejecuta la acción). Sistemas que incorporan una ampliación al

Lenguaje de Definición de Datos (LDD), con el objetivo de definir con mayor precisión y

naturalidad el conjunto de reglas que se ejecutan, el uso de SQL es prioritario en el

desarrollo de estos sistemas.

PRoGRAM4s

w. -sos

1

2.4.4 SGBD deductivos

La programación lógica ha ido evolucionando desde mediados de Ia década pasada

hasta nuestros días ampliando sus horizontes en el desarrollo de sistemas gestores de

bases de datos, la programación lógica, en forma similar a los primeros desarrollos de

bases de datos. Centra su acción en el núcleo de los programas que acceden a los

datos, de hecho, la programación lógica se utiliza principalmente como lenguaje de

consulta, mientras que la tecnología de base de datos se emplea para asegurar un

almacenamiento eficiente y fiable. Los SGBD deductivos se puede implementar

añadiendo al SGBD facilidades para almacenar y gestionar reglas, extendiendo el

procesador de consultas del SGBD o acoplando un SGBD con un sistema Prolog.

Aunque, normalmente, en lugar de utilizar un lenguaje como Prolog (que procesa una

Page 21: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

2. Sistemas basados en conocimiento 13

tupla a la vez) se suele emplear un lenguaje relaciona1 declarativo denominado

DATALOG, que es poco procedimental y orientado a conjuntos, lo que lo hace más

adecuado para bases de datos. Sintácticamente el DATALOG es muy parecido al Prolog,

existiendo en la actualidad diferentes versiones. Este tipo de lenguajes resulta muy útil

para hacer consultas de tipo recursivo, siendo clásica la de los ancestros de una persona

(conociendo que los padres de una persona son sus ancestros, así como los padres de

los ancestros). Sin embargo, todavía no existen productos comerciales que puedan

incluirse en esta categoría, aunque algunas de sus nociones se van incorporando en la

nueva generación de SGBD relacionales-activos”

Actu dizacìón

l Fig. 4 SGDB Deductivos

Las reglas, suelen almacenarse en ficheros de texto o con formato plano

independientes, con el objetivo de ser “reprogramables” y se accede a ellos -

generalmente- en forma binaria; el motor de inferencia se encuentran en el núcleo del

programa que accede a los datos. En sistemas más complejos se enlaza el modulo de

“respuesta” como la entrada “inf. de procesos” de una SGBD activa.

2.4.5 SGBD orientadas al objeto

Conocidos también como SGBO, aunque podríamos considerarlos como la tendencia a

extender los SGBD relacionales mediante la incorporación de la programación orientada a

Page 22: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

2. Sistemas basados en conocimiento 1 4

objetos, en esta tendencia destacan: interfaces de PO0 sobre motores relacionales

(Visual Basic, VC++, J++, etc.), herramientas de conversión de esquemas relacionales a

esquemas OO y viceversa, herramientas de migración de esquemas, interoperabilidad de

BDR y BDO, etc. J

Este tipo de sistemas comienza a incursionar en forma sólida en el mercado, debido a la

aparición de un número cada vez mayor de herramientas de conectividad entre los

mundos relacional y orientado a objetos:

l lnterfaces de programación orientada a objetos sobre motores relacionales,

l Herramientas de conversión de esquemas relacionales a esquemas OO y viceversa,

l Herramientas de migración de esquemas, bases de datos y aplicaciones relacionales a

OO y viceversa,

l Herramientas que aseguran la interoperabilidad de bases de datos relacionales y

bases de objetos.

Algunos aspectos en los que se considera necesaria una mayor investigación, son:

combinar acceso declarativo y acceso navegacional, soportar completamente la

funcionalidad de los objetos compuestos, acceso a los metadatos, almacenamiento de los

servicios (métodos) en la base de datos, definición dinámica de clases, mecanismos para

definir restricciones y disparadores, gestión de la extensión de las clases, soporte de

vistas y lenguajes de consulta y de optimización, es conveniente particularizar que en

febrero de 1997 en reunión del grupo iSO/IEC JTCI/SC21ANG3 se presentó la solicitud

de aprobación del SQL3 (las partes Foundafion, Bindings, Persisfent Sto& Modules y

O@ect) como norma internacional con efectos a diciembre de 1998; actualmente existe

una sólida convergencia entre OQL y SQL3.

2.4.6 SGBD multidimensionales

Los sistemas de base relacional han sido diseñado específicamente para soportar el

procesamiento analítico de los datos: On Line Analytical Processing (OLAP), representan

Page 23: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

2. Sistemas basados en conocimiento 1 5

los datos mediante matrices de n dimensiones d.enominadas “hipercubos” asignando a

cada dimensión un dominio específico jerarquizado, cada casilla del hipercubo contiene

datos agregados (infor-kación de...) que relacionan los elementos entre las distintas

dimensiones, de hecho, éstas actúan como apuntadores para identificar los valores dentro

de la matriz.

Es importante destacar que el modelo de matriz de datos que aplica la lógica

multidimensional no está asociado a una representación física de los datos, ni utiliza LDD

particulares, sus principales diferencias frente al modelo de tablas relacionadas, reside en

que todos los dominios pueden encontrase relacionados, en contraparte dentro del

esquema de tablas, las relaciones afectan sólo campos clave o campos con naturaleza

idéntica-asociativa.

Ml

M2

M 3

Fig. 5 SGBD Multidimensionales

Otra significativa diferencia es que los sistemas relacionales soportan estructuras planas y

presentan serias dificultades para gestionar interrelaciones multidimensionales por

ejemplo, las limitaciones funcionales de SQL que sólo pueden efectuar SUM (sumatoria) y

AVG (Average, promedio) del mismo campo en todas las tuplas, pero no puede aplicarse

a diferentes columnas en una misma tupla.

Page 24: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

2. Sistemas basados en conocimiento 16

2.5 Conocimiento y bases de datos

Los métodos generales desarrollados para la resolución de problemas y técnicas de

búsqueda al inicio de la era de la IA demostraron no ser suficiktes para resolver los

problemas orientados a las aplicaciones, ni fueron capaces de satisfacer los difíciles

requerimientos de la investigación. A este conjunto de métodos, procedimientos y

técnicas, se lo conoce como Inteligencia Artificial Débil. La principal conclusión que se

derivó de este trabajo inicial fue que los problemas difíciles sólo podrían ser resueltos

con la ayuda del conocimiento específico acerca del dominio del problema.

La aplicación de estas ideas dio lugar al desarrollo de los denominados Sistemas

Basados en Conocimiento (Knowledge Based Systems) y al aparecimiento de la

Ingeniería Cognoscitiva, como una rama de la IA, que estudia los sistemas basados en

el conocimiento. La definición de un sistema basado en conocimiento puede resumirse

de la siguiente manera: “Es un sistema computarizado capaz de resolver problemas en

el dominio en el cual posee conocimiento específico”.

La solución es esencialmente la misma que hubiera dado un ser humano confrontado

con idéntico problema, aunque no necesariamente el proceso seguido por ambos

puede ser igual.

El simple concepto dado, puede causar confusión ya que muchos sistemas basados en

programas convencionales podrían ser incorrectamente categorizados como sistemas

basados en conocimiento.

Esta inconsistencia puede ser aclarada, sobre la base de tres conceptos fundamentales

que distinguen a los sistemas basados en conocimiento de los programas algorítmicos

convencionales y de los programas generales basados en búsqueda:

1 .La separación que existe entre el conocimiento, y la forma cómo éste es utilizado.

2.EI uso de conocimiento específico de un determinado dominio.

Page 25: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

2. Sistemas basados en conocimiento 17

3.La naturaleza heurística, antes que algorítmica del conocimiento utilizado.

Dicho de una manera simple, los programas convencionales utilizan algoritmos para

resolver problemas, mientras que los sistemas basados en conocimiento resuelven

problemas donde las soluciones algorítmicas no existen o son muy costosas para ser

implementadas.

Actualmente, el amplio éxito de los sistemas de bases de datos, combinado con las

necesidades de gestión de información y los desarrollos que han emanado del estudio de

la IA, han dado como resultado un interés creciente en extender los sistemas de bases de

datos a sistemas de bases de datos inteligentes, elevando su utilidad al punto en que

pueda construirse conocimiento a partir de datos simples y que éste conocimiento-

permita controlare interpretar la estructura en su conjunto, Wiederhold , los describe de la

siguiente manera:

l Conocimiento estructural. Conocimiento sobre las dependencias y restricciones entre

los datos.

l Conocimiento general procedimental. Conocimiento que sólo puede ser descrito por un

procedimiento.

l Conocimiento específico de la aplicación. Conocimiento que está determinado por las

reglas y convenios que se aplican en un dominio de problema en particular.

En el desarrollo de una base de datos inteligente implica la representación del

conocimiento, definido más allá de su forma extensa (hechos e instancias almacenados

en la base), mediante mecanismos lógicos.

2.6 Representación del conocimiento

La representación del conocimiento es el punto neural de la programación lógica

cuando ésta se aplica al procesamiento de datos, comprende el estudio de formalismos

y estructuras en el tratamiento de objetos, hechos, eventos, relaciones, etc. Los

Page 26: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

2. Sistemas basados en conocimiento 1 8

tradicionales sistemas basados en conocimiento han utilizado con gran asiduidad, para

representar el conocimiento, una extensión de la lógica de proposiciones, denominada

lógica “O+” o representación objeto-atributo-valor.s-

Fundamentemos, ¿ Qué es el conocimiento y qué técnicas se utilizan para represetarlo

y manipularlo ?

Puede ser definido como el conjunto de hechos y principios acumulados por la

humanidad, o el acto, hecho o estado de conocer. Es la familiaridad con el lenguaje,

conceptos, procedimientos, reglas, ideas, abstracciones, lugares, costumbres y

asociaciones, unida a la habilidad de utilizar estas nociones en forma efectiva para

modelar diferentes aspectos del universo que nos rodea.

Los conceptos de conocimiento e inteligencia están íntimamente ligados. La inteligencia

requiere de la posesión y acceso al conocimiento. Conocimiento no debe ser

confundido con datos o información. El conocimiento incluye y requiere del uso de datos

e información. Además, combina relaciones, dependencias, y la noción del saber con

datos e información.

En el caso que nos ocupa, tenemos la certeza de que de los datos en bruto raramente

se obtendrán de una manera directa beneficios. Su verdadero valor radica en la

posibilidad de extraer información útil para el soporte de decisiones o la exploración y

compresión del fenómeno que es la fuente de datos. En general, nuestra habilidad para

analizar y comprender conjuntos de datos masivos decrece mucho más rápidamente

que nuestra capacidad de unir y almacenar estos datos. Por tanto, es necesario una

nuèva generación de técnicas y herramientas computacionales para soportar la

extracción de conocimiento útil para grandes volúmenes de datos.

Otros términos relacionados con el conocimiento y que son ocasionalmente empleados

son epistemología y metaconocimiento. Epistemología es el estudio de la naturaleza del

Page 27: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

2. Sistemas basados en conocimiento 1 9

conocimiento, mientras que metaconocimiento es conocimiento acerca del

conocimiento, esto es, conocimiento acerca de lo que se conoce.

El conocimiento puede ser de tipo procedimental, declarativo o heurístico. Conocimien;

procedimental es aquel conocimiento compilado que se refiere a la forma de realizar

una cierta tarea (el saber como hacerlo). Por ejemplo, los pasos necesarios para

resolver una ecuación algebraica son expresados como conocimiento procedimental.

Por otro lado, el conocimiento declarativo es conocimiento pasivo, expresado como

sentencias acerca de los hechos del mundo que nos rodea (el saber que hacer). La

información personal en una base de datos es un típico ejemplo de conocimiento

declarativo. Tales tipos de datos son piezas explícitas de conocimiento independiente.

El conocimiento heurístico es un tipo especial de conocimiento usado por los humanos

para resolver problemas complejos. El adjetivo heurístico significa medio para descubrir.

Está relacionado con la palabra griega heuriskein que significa descubrir, encontrar. Se

entiende por heurístico a un criterio, estrategia, método o truco utilizado para simplificar

la solución de problemas. El conocimiento heurístico usualmente se lo adquiere a través

de la experiencia.

Dado que el conocimiento es importante y primordial para el comportamiento

inteligente, su representación constituye una de las máximas prioridades de la

investigación en IA. El conocimiento puede ser representado como imágenes mentales

en nuestros pensamientos, como palabras habladas o escritas en algún lenguaje, en

forma gráfica o en imágenes, como cadenas de caracteres o colecciones de señales

eléctricas o magnéticas dentro de un computador. En nuestro estudio, consideraremos

las representaciones escritas y sus correspondientes estructuras de datos utilizadas

para su almacenamiento en un computador. La forma de representación que se escoja

dependerá del tipo de problema a ser resuelto y de los métodos de inferencia que mejor

respondan al conjunto.

Page 28: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

2. Sistemas basados en conocimiento 20

Una representación del conocimiento puede ser un esquema o dispositivo utilizado para

capturar los elementos esenciales del dominio de un problema. Una representación

manipulable es aquella que facilita la computación. En representaciones manipulables,

la información es accesible a otras entidades que usan la representación como parte de

una computación.

Debido a la variedad de formas que el conocimiento puede asumir, los problemas

involucrados en el desarrollo de una representación del conocimiento son complejos,

interrelacionados y dependientes del objetivo. El términos generales, se debe tratar que

el conocimiento esté representado de tal forma que:

0 Capture generalizaciones.

l Pueda ser comprendido por todas las personas que vayan a proporcionarlo y

procesarlo.

l Pueda ser fácilmente modificado.

l Pueda ser utilizado en diversas situaciones aún cuando no sea totalmente exacto o

completo.

l Pueda ser utilizado para reducir el rango de posibilidades que usualmente debería

considerarse para buscar soluciones.

El conocimiento declarativo puede ser representado con modelos relacionales y

esquemas basados en lógica. Los modelos relacionales pueden representar el

conocimiento en forma de árboles, grafos o redes semánticas. Los esquemas de

representación lógica incluyen el uso de lógica preposicional y lógica de predicados.

Los modelos procedimentales y sus esquemas de representación almacenan

conocimiento en la forma de cómo hacer las cosas. Pueden estar caracterizados por

gramáticas formales, usualmente implantadas por sistemas 0 lenguajes

procedimentales y sistemas basados en reglas (sistemas de producción).

Page 29: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

2. Sistemas basados en conocimiento 2 1

Las representaciones declarativas son usualmente más expansivas y costosas, en el

sentido que la enumeración puede ser redundante e ineficiente. Sin embargo, la

modificación de las representaciones declarativas es usualmente muy fácil;

simplemente se agrega 0 se elimina conocimiento. Las representaciones’

procedimentales, en cambio, pueden ser más compactas, sacrificando flexibilidad.

Representaciones prácticas pueden incluir elementos tanto declarativos (listado de

hechos conocidos), como procedimentales (un conjunto de reglas para manipular los

hechos).

2.6.1 Representación mediante cálculo de predicados

Fundamentado en la lógica simbólica, trata esencialmente las relaciones entre

enunciados o proposiciones simples y las compuestas (mediante conectivas aplicadas a

proposiciones simples). Las conectivas utilizadas son las siguientes:

Conectiva Denotada como Simbología

0

N O

OR

NOT

v (no exclusivo)

11

IMPLICA

EQUIVALENTE

IF-THEN =),=

IF-ANO-ONLY-IF =-

El resultado de evaluar una proposición es falso o verdadero:

Page 30: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

2. Sistemas basados en conocimiento 22

Un sistema que implemente la inferencia por cálculo de predicados deberá diferenciar

los siguientes elementos:

-’

l Términos, los cuales pueden ser; constantes, variables o funciones

l Conjuntos de predicados asociados a uno o más argumentos definidos previamente

l Conjuntos de conectivas u operadores lógicos (v. Tabla)

l Cuantificadores universales: existe, para todo (V (X)).

Este mecanismo de inferencia es el más viable para la implementación de sistemas de

naturaleza deductiva, sin embargo resulta -en el mejor de los casos- insuficiente en la

implementación de sistemas de naturaleza inductiva.

2.6.2 Representación mediante redes semánticas

Tipo de representación surgida de trabajo en reconocimiento de lenguaje natural y la

búsqueda de modelos para la memoria humana en que intervienen dos tipos de

entidades básicas: Nodos y Ligas asociativas, donde los nodos pueden ser de dos

tipos:

l Referidos en forma directa al significado del concepto - nodo tipo (clase).

l Referidos indirectamente al concepto mediante un apuntador al nodo tipo - nodo

“token” (instancia u objeto).

Los “conceptos” se definen en forma indirecta en la red semántica mediante la

referencia a otros nodos, que a su vez se refieren a otros, etc. Esto es análogo a la

definición en un diccionario, en donde se usan otras palabras (nodos) para definir una

palabra, que a su vez están definidas en función de otras palabras.

Las ligas también pueden ser de diferentes tipos indicando diferentes relaciones entre

nodos, algunas de las mas usadas son:

Page 31: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

2. Sistemas basados en conocimiento 23

l B es una subclase o instancia de A (es)

l B y A están relacionados en la forma indicada por R

l Conjunción(A&B&C...)

l Disjunción ( AV B v C . ..)

La red semántica se puede ver dividida en planos. En cada plano se tiene la definición

de un concepto, pero estos tienen ligas a otros planos en que hay conceptos

relacionados. Es decir que un nodo tiene ligas a nodos del mismo plano que lo definen,

pero también a nodos de otros planos que están relacionados, como subclases,

superclases, analogías, etc. En cada plano hay un nodo tipo y una serie de nodos

“token”, los conceptos representados de es ta manera se pueden de f in i r

inmediatamente (la definición directa mediante los nodos en el mismo plano) y por

concepto completo (todos los nodos y relaciones a las que se pueda llegar en red

partiendo de dicho nodo). En general es posible usar este tipo de estructuras para

diferentes tipos de razonamiento:

l.- Búsqueda asociativa: Encontrar si están relacionados dos o mas conceptos, y su

tipo de relación mediante el seguimiento de la red hasta encontrar las interacciones.

2.- Reconocimiento: Dada una serie de características (nodos “token”) encontrar el

concepto (nodo clase) que mejor las define mediante su búsqueda y seguimiento en la

red .

3.- Descripción: Expresar un concepto en base a sus componentes y relaciones entre

ellas (procesamiento del lenguaje natural).

2.6.3 Representación del conocimiento por reglas de producción

Representación que utiliza reglas de reestructuración en el reconocimiento sintáctico del

Lenguaje Natural; tiene sus antecedentes en los trabajos de Post (1943), los algoritmos

Page 32: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

2. Sistemas basados en conocimiento 24

de Markov y en la lingüística de Chomsky. Básicamente, una regla de producción

consta de un par ordenado de símbolos (situación-acción), la sintaxis de las reglas es

diversa y se estructura en función del proceso de selección y ejecución de éstas.-r

En el desarrollo de un motor que utilice está representación, se precisa de un intérprete

que accese a las reglas, manipule variables y en algunos casos clases sintácticas

(parsing), en éste, recae el proceso de inferencia denominado “control”:

l Selección de las reglas pertinentes.

l Validación (reglas cumplidas)

l Ejecución de las acciones especificadas por las reglas cumplidas.

Podemos observar que funcionalmente el sistema opera en fases de reconocimiento

(selección de reglas pertinentes, validación) y acción. El proceso de validación deberá

además contar con un esquema de operación para discriminar en caso de que exista

más de una regla aplicable a una situación dada:

a) Establecer orden en los datos

b) Clasificar reglas por prioridad de ejecución

c) Ejecutar la regla más recientemente instanciada

d) Metareglas.. .

Los sistemas basados en la representación del conocimiento mediante producción de

regias son útiles en los casos donde se trabaja con gran cantidad de estados

independientes: sistemas con objetivos amplios y acciones de corto alcance, dada su

representación modular y uniforme.

2.6.4 Representación del conocimiento por objetos estructurados

Los objetos estructurados tienen diversas denominaciones, entre las que destacan:

Esquemas (Bartlett 1932), frames (Mìnsky 1975), Scripts (Schank, Abelson 1977),

Page 33: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

2. Sistemas basados en conocimiento 2 5

Objefos (Goldeberg. 1977, Steels 1982, entre otros), Descriptores funcionales (Kay M.

1982) las características generales de este modelo de representación son:

a) Cada objeto tiene asociado un conjunto de atributos que lo caracterizan. -’

b) Cada atributo tiene asociado un valor, el cual a su vez puede ser otro objeto

c) Los atributos(valor) corresponden a:

1. El nombre de un procedimiento específico (ejecutable automáticamente o

mediante requisición).

2. Apuntadores a otros objetos.

3. Valores obtenidos durante ejecución.

4. Valores por defecto

5. Constantes.

Los estados de los objetos definidos por el sistema son:

Activos Cuando se encuentra presente en la lista de hipótesis en

curso de tratamiento.

Semiactivos Cuando es parte de una hipótesis alternativa.

Inactivos Cuando el objeto se ha eliminado o no ha sido instanciado.

2.6.5 Representación mediante procedimientos

Este tipo de representación utiliza un lenguaje de alto nivel en el tratamiento de los

conocimientos, en forma explícita mediante un programa. El comportamiento del

programa está dirigido por instrucciones, los conocimientos que trata no se expresan en

forma declarativa, sino que se encuentran a través de todo el programa.

Page 34: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

2. Sistemas basados en conocimiento 26

2.6.6 Representación mediante árboles de decisión

Los árboles de decisión son una forma de representación sencilla, muy usada entre los

sistemas de aprendizaje supervisado, para clasificar ejemplos en un número finito de

clases. Se basan en la partición del conjunto de ejemplos según ciertas condiciones que

se aplican a los valores de los atributos. Su potencia descriptiva viene limitada por las

condiciones o reglas con las que se divide el conjunto de entrenamiento; por ejemplo,

estas reglas pueden ser simplemente relaciones de igualdad entre un atributo y un

valor, o relaciones de comparación (“mayor que”, etc.), etc. Los sistemas basados en

árboles de decisión forman una familia llamada TDIDT (Top-Down Induction of Decision

Trees), cuyo representante más conocido es ID3 (Interactive Dichotomizer) se basa en

la reducción de la entropía media para seleccionar el atributo que genera cada partición

(cada nodo del árbol), seleccionando aquél con el que la reducción es máxima. Los

nodos del árbol están etiquetados con nombres de atributos, las ramas con los posibles

valores del atributo, y las hojas con las diferentes clases.

2.6.7 Representación mediante listas de decisión

Las listas de decisión son otra forma de representación basada en lógica de

proposiciones. Es una generalización de los árboles de decisión y de representaciones

conjuntivas (CNF) y disyuntivas (DNF). Una lista de decisión es una lista de pares de la

forma (6 , CI >, (& , CS > ,..., (d n , C n ) donde cada d i es una descripción elemental,

cada C i es una clase, y la última descripción C n es el valor verdadero.

La clase de un objeto será C j cuando d j sea la primera descripción que lo satisface.

Por tanto, se puede pensar en una lista de decisión como en una regla de la forma “si dl

entonces CI , sino si d2 . . . , sino si d n entonces C n “. Se pretende mejorar el aprendizaje

a partir de ejemplos con ruido (al evitar la dependencia de ejemplos específicos e

incorporar una poda del espacio de búsqueda). Las descripciones elementales de los

pares que forman la lista de decisión tienen la misma forma que los complejos de AQ.

Page 35: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

2. Sistemas basados en conocimiento 27

2.7 Representación Lbgica de un SGDB relaciona1

En los siguientes párrafos ofreceremos una visión detallada del esquema relacional,

desde la óptica de la lógica de primer orden, ocupándonos de 4a estructura e integridad

de los datos así como de su manipulación.

2.7.1 Estructura e integridad.

Con atención a cómo se encuentran estructurados los datos: Un dominio es un conjunto

-normalmente finito- de valores.

El producto cartesiano de una serie de dominios &;D z;...;&, denotado por: D 7 x D 2 x...

x Di, es el conjunto de todas las tuplas (x I;X 2;...x “) tales que para cualquier i, i = 1 ;..,; n

se verifica que X j E D i. Se llama relación a cualquier subconjunto del producto

cartesiano de dos o más dominios;

Una instancia de BD es un conjunto finito de relaciones finitas. Se llama cardinalidad de

una relación al número de tuplas que lo contiene. La aridad o grado de una relación R c

D, x D 2 x . . . x D, es n i, esto es, el número de dominios que intervienen en su

definición. Normalmente una relación es representada como una tabla de valores, en

las que las columnas llevan asociado un identificador (atributo), así los valores de un

atributo asociado a la columna i, pertenecen al dominio Di.

Una relación R de atributos AI: AZ; . . . An; define lo que se llama un esquema de relación,

denotado por R(A,,. AZ: . . . An), de manera que una relación específica RI, con un

conjunto concreto de tuplas resulta una instancia o extensión de dicho esquema.

No todas las instancias acordes con un determinado esquema son semánticamente

válidas (coherentes con la semántica asociada de BD), por lo que existen restricciones

de integridad asociadas a cada esquema de relación. Finalmente, podemos definir la

Page 36: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

2. Sistemas basados en conocimiento 28

estructura general como un superconjunto de esquemas de relación y de restricciones

de integridad.

2.7.2 Manipulación de datos

La manipulación de datos en el esquema relaciona1 se efectúa mediante un lenguaje

formal: Álgebra y Cálculo Relacional, de la primera obtenemos una colección de

operadores y operaciones explícitas, la segunda proporciona la semántica para definir

las relaciones resultantes.

l Alaebra Relacional.

Los operadores básicos de AR pueden agruparse en:

Operación de asignación. Que asigna los resultados de otras operaciones relacionales

a una nueva relación con el objetivo de preservar los resultados.

Operaciones sobre conjuntos. Unión, Intersección, Diferencia y Producto Cartesiano, a

excepción de ésta última, se precisa que los operandos sean del mismo grado y que

los iésimos atributos tengan el mismo dominio.

Operaciones especiales. Selección, Proyección, reunión y División:

* Selección: Operador algebraico que produce un subconjunto “horizontal” de una

relación específica, por ejemplo, el subconjunto de las tuplas de una Relación para el

cual se cumple un predicado dado, expresado como combinación booleana de

términos.

*Proyección: Produce un subconjunto “vertical” de una relación dada, es decir, el

subconjunto obtenido al seleccionar los atributos.

Page 37: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

2. Sistemas basados en conocimiento 29

*Reunión: La reunión de la relación A sobre el atributo X con la relación 5 sobre el

atributo Y, da como resultado todas las tuplas t, tales que f, es la concatenación de una

tupla de A con una de 5 en que se verifique una condición determinada sobre Xe Y.

--

*División: Divide una relación R de grado m+n entre una relación R’ de grado n,

produciendo una de grado M.

l Cálculo Relaciona1 (tuolas KRTI Y dominiosfCRD1)

Cálculo Relaciona/ de Tuplas. Una expresión en el CRT, tiene la forma {p/p(t)l que

representa el conjunto de todas las tuplas f que hacen verdadera la fórmula o predicado

P. Usaremos f[A] para denotar el valor que tiene la tupla f para el atributo A y f E R para

denotar que f está en la relación R. Se dice que una variable para f es libre si no se

encuentra cuantificada (universal o existencialmente).

Una fórmula del CRTse compone de átomos, de las siguientes formas:

- k E R, donde k es una variable tupla y R una relación.

- k[x] 8 v[y], donde k y v son variables tupla, x es un atributo sobre el que se define k y

0 operador de comparación (c, >, >=, c=,=).

- s[x] 8 c, igual que el caso anterior, con c como constante del domino del atributo x.

Las fórmulas se construyen a partir de los átomos usando las siguientes reglas:

- Un átomo es una fórmula.

- Si P, es una fórmula, entonces (PI ) y (-,P,), también lo son.

- Si PI y PZ son formulas, también lo son PI A P2 , PI v P2, y P, 2 P2

- Si PI (s) es una fórmula que contiene una variable de tupla libre s,

entonces 3s E R (Pr (s)) y VS E R (PI (s)) también lo son.

Page 38: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

2. Sistemas basados en conocimiento 30

Siguiendo esta definición es posible generar una relación infinita, por ejemplo el número

de tuplas que no están en una relación {VT (tER)}, así se introduce el concepto de

dominio de una fórmula P, dom(P) es el conjunto de todos los valores representados

por P.

Cálculo relaciona/ de dominios. Esta forma del cálculo relaciona1 utiliza variables de

dominio a las que se asignan valores del dominio de un atributo (dato). Las

expresiones tienen la forma: {CXI ,x2,. . . ,xn > 1 P (x1,x2 ,..., xn ) ) donde x1,x;! ,..., xn

representan las variables de dominio y P la fórmula compuesta de átomos, éstos

pueden tener las siguientes formas:

- < XI ,x~,...,x” >E R, donde R es una relación de n atributos.

- xey, con x e y operados por comparación.

- xec, equivalente al caso anterior y c es una constante del domino del atributo

de x..

Page 39: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

3. Sistemas expertos 3 1

3. Sistemas expertos

3.1 Antecedentes -’

En las últimas décadas, se han producido grandes cambios en el entorno de las

empresas y las organizaciones, como consecuencia de los avances de las nuevas

tecnologías de la producción, de la información y de las comunicaciones. En este nuevo

entorno, la toma de decisiones de una manera eficaz precisa de una forma rápida de

información suficiente, actualizada y oportuna, utilizando los ordenadores electrónicos y

los medios que proporciona la tecnología de la información. Además, gracias a las

investigaciones realizadas en la inteligencia artificial, con el desarrollo de los sistemas

basados en el conocimiento y los sistemas expertos, también se han producido grandes

avances en el tratamiento del conocimiento, factor fundamental para la toma de

decisiones.

El estudio y desarrollo de los Sistemas Expertos (SEs) comenzó a mediados de la

década del 60. Entre 1965 y 1972 fueron desarrollados varios de estos sistemas,

muchos de ellos tuvieron un alcance muy limitado, otros como MYCIN, DENDRAL y

PROSPECTOR, constituyeron la base histórica de los SEs y aún en la actualidad son

de gran interés para los investigadores que se dedican al estudio y construcción de los

mismos.

En teoría estos sistemas son capaces de razonar siguiendo pasos comparables a los

que sigue un especialista (médico, biólogo, geólogo, matemático, etc.), cuando resuelve

un problema propio de su disciplina. Por ello el creador de un SE debe comenzar por

identificar y recoger, del experto humano, los conocimientos que éste utiliza:

conocimientos teóricos, pero sobre todo los conocimientos empíricos adquiridos en la

práctica.

Los sistemas expertos son programas de ordenador que capturan el conocimiento de

un experto e imitan sus procesos de razonamiento cuando resuelven los problemas en

Page 40: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

3. Sistemas expertos 3 2

un determinado dominio. Los sistemas expertos son un subconjunto especial dentro de

los sistemas basados en el conocimiento, que incorporan en la base de conocimiento

del sistema el conocimiento de un experto. Una definición formal de los sistemas

expertos, aceptada por muchos autores, es la aprobada por el Grupo Especialista en

Sistemas Expertos de la Sociedad Británica de Ordenadores, que los define de la forma

siguiente: “Un sistema experto es visto como la incorporación en un ordenador de un

componente basado en el conocimiento, que se obtiene a partir de la pericia

(conocimiento técnico) de un experto, de tal forma que el sistema pueda ofrecer

asesoramiento inteligente o tomar una decisión intelig.ente sobre una función del

proceso. Una característica adicional deseable, que muchos considerarían fundamental,

es la capacidad del sistema, si se le solicita, de justificar su propia línea de

razonamiento de un modo directamente inteligible para el interrogador...“. Los sistemas

expertos también pueden ser definidos en función de sus características funcionales. En

este sentido, Hayes-Roth considera como características más importantes de los

sistemas expertos las siguientes:

1.

2.

Pueden resolver problemas normalmente atacados por los expecos humanos;

Razonan heurísticamente, usando lo que los expertos consideran que son reglas

empíricas efectivas, e interactúan con los humanos de forma adecuada, incluyendo

el lenguaje natural;

3. Manipulan y razonan sobre descripciones simbólicas;

4. Pueden funcionar con datos inciertos;

5. Contemplan múltiples hipótesis;

6. Pueden explicar su proceso de razonamiento y justificar sus conclusiones.

7. Aplican técnicas de búsqueda.

8. Pueden inferir nuevos conocimientos a partir de los existentes.

3.2 Programación lógica en Sistemas expertos

La programación lógica tiene sus antecedentes más próximos en los trabaios de prueba

automática de teoremas de los años sesenta. J. A. Robinson propone en 1965 una

Page 41: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

3. Sistemas expertos 33

regla de inferencia a la que llama resolución (Regla que se aplica sobre cierto tipo de

fórmulas del Cálculo de Predicados de Primer Orden, llamadas cláusulas y la

demostración de teoremas bajo esta regla de inferencia se lleva a cabo por reducción al

absurdo), mediante la cualJa demostración de un teorema puede ser llevada a cabo de

manera automática, sus trabajos sirvieron de base al primer lenguaje de programación

que contempla, como parte del intérprete, los mecanismos de inferencia necesarios

para la demostración automática.

Este primer lenguaje está basado en el formalismo matemático de la Lógica de Primer

Orden y ha dado inicio a un nuevo y activo campo de investigación entre las

matemáticas y la computación que se ha denominado la Programación Lógica.

En 1971 aparece PROLOG (Programing in Logic), desarrollado en la Universidad de

Marsella, Francia, que cuenta con un lenguaje formal mediante el cual es posible

representar fórmulas llamadas axiomas, que permiten describir fragmentos del

conocimiento y, además, consta de un conjunto de reglas de inferencia que aplicadas a

los axiomas, permiten derivar nuevo conocimiento. Una característica general de la

arquitectura de sistemas en PROLOG, es la existencia de una “base de hechos” o

“base de conocimientos” que alimentan las variables particulares de los axiomas en el

proceso de inferencia, esta base, al igual que en los SGBD procedimentales, se

encuentran en un archivo externo al núcleo del programa, la base en sí, no contiene

información sobre los datos, ésta se deriva de la posición particular de cada término

(áridad).

La programación Lógica aplicada a los SGBD, es un campo relativamente nuevo, de

hecho, la mayoría de los SGDB comerciales no utilizan motores de inferencia en su

desarrollo, en virtud de que son sistemas orientados a la obtención de “información”, no

de “conocimientos” y sus áreas de aplicación -generalmente comerciales - no precisan

de la algorítmica compleja inherente a los sistemas basados en conocimiento. Sin

embargo la penetración de las tecnologías “expertas”, en el área comercial de las

empresas, obliga un replanteamiento de esta condición.

Page 42: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

3. Sistemas expertos 34

La programación lógica aplicada al desarrollo de SGBD, comienza a formar parte de los

nuevos desarrollos de grandes corporativos, que ven en estos sistemas la plusvalía

inherente al desplazamiento de los expertos humanos. Es un hecho que los SGBD han

evolucionado para atender las exigencias de nuevos dominios culturales, científicos,

industriales y comerciales, generando distintos tipos de SGBD (ver. Clasificación de

SGBD, Cap. ll), y no se espera que la Programación Lógica de estos sistemas desplace a

los existentes, sin embargo, representan el camino ideal para aplicaciones específicas, en

las que se precisa la inferencia para manipular eficientemente un conjunto de datos y

representar conocimientos:

l Sistemas de diagnosis. Que siguen un proceso de búsqueda de las razones del

funcionamiento incorrecto de un sistema a partir de la información disponible en la

base de datos. Aquí se podrían tener en cuenta tanto aplicaciones de diagnóstico

médico como de averías, en el primero de los casos existen antecedentes sólidos:

FLUIDEX, EACH, TROPICAID, SPHINX, y MYCIN (desarrollado a mediados de

1970) es el más representativo.

l Sistemas de pronóstico. Que deducen consecuencias posibles a partir de una

situación. Su objetivo es determinar el curso del futuro en función de información

sobre pasado y presente. Esto abarca diversos problemas, tales como predicciones

meteorológicas, predicciones demográficas, o incluso previsiones de la evolución

bursátil entre otros. Quizá la aplicación más conocida sea PROSPECTOR, un

sistema para la evaluación de emplazamientos geológicos.

l Sistemas de planificación. Que establecen una secuencia de acciones a realizar

encaminadas a la consecución de una serie de objetivos. En esta área, destaca la

simulación donde se busca representar un estado real y evaluar distintas variables

para determinar caminos óptimos. Los planes y las decisiones en la producción se

desarrollan y llevan a cabo en un mundo de representaciones simbólicas de hechos

y conjeturas, muchas de las cuales no están informatizadas y representan la

experiencia y el conocimiento de expertos. En cada estadio de los procesos de

Page 43: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

3. Sistemas expertos 3 5

planificación, decisión y control para las operaciones de producción, sea ésta

automatizada o no, las personas expertas son las que asesoran, localizan los fallos

y dirigen. Ellas son las que ayudan a interpretar la multitud de datos procedentes de

Jos departamentos de diseño, de la planta de producción y de los representantes de

los clientes, observan modelos procesables en dichos datos, prueban mentalmente,

y con ordenadores, posibles líneas de acción, recomiendan las medidas que la

gerencia debe tomar y ayudan luego a poner en marcha sistemas pensados para

conseguir planificaciones mejores, operaciones más fluidas y una competencia más

efectiva. Los Sistemas de planificación ofrecen procedimientos informatizados para

perfeccionar la toma de decisiones de la gerencia por medio de la combinación del

conocimiento que poseen los expertos acerca del tipo de acciones que tiene que

efectuar y la forma y el tiempo en que debe llevarlas a cabo con la permanencia,

lógica, memoria y velocidad de cálculo del ordenador.

El común denominador de estos sistemas radica en la forma en que utilizan las bases

de datos, manipulando la información existente para aplicarla a soluciones que van

desde sencillas inferencias hasta complejos procesos de representación mediante el

uso de la lógica.

3.2.1 Conceptos básicos

Sistema experto como su nombre lo dice es un sistema computarizado que emula el

proceso de razonamiento de un experto humano en un área o campo especifico. Los

programas convencionales utilizan datos exactos lo que es una indudable ventaja de los

computadores. Esta clase de datos se denomina conocimiento factual o preciso.

Los humanos usamos una mezcla de ese conocimiento factual y de conocimiento

heurístico (o sea la intuición lógica), que es una indisputable ventaja de los humanos.

Los sistemas expertos tratan de emular ese conocimiento heurístico, lo que los hace

superiores a los programas convencionales ya que pueden tratar con datos “inciertos”,

Page 44: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

3. Sistemas expertos 36

o sea no precisos. Básicamente el Sistema Experto esta compuesto por los siguientes

módulos:

1. Base de conocimientos: Consiste en las reglas, procedimientos y datos intrínsecos

al área del problema. Generalmente se construye a través de consulta con uno o

varios expertos del area, para incluir el conocimiento heurístico, manuales, etc. La

base, contiene el conocimiento del sistema con respecto a un tema específico para

el que se diseña el sistema. Este conocimiento se codifica según una notación

específica que incluye reglas, predicados , redes semánticas, frames y objetos.

2. Motor de inferencia: Es el mecanismo usado para extraer el conocimiento de la base

de conocimientos, para alcanzar una solución o conclusión determinada. Combina

los hechos y las preguntas particulares, utilizando la base de conocimiento,

seleccionando los datos y pasos apropiados para presentar los resultados.

3. Interface con el usuario: Es el medio de comunicación entre el sistema experto y el

usuario.

3.3 Sistemas expertos y Bases de datos Inteligentes

Aunque el desarrollo de un sistema experto esta claramente influenciado por los

métodos de representación del conocimiento aplicados a SGBD no cuentan con todas

las capacidades de gestión de éstos. Para los efectos de nuestro estudio, la

arquitectura de los sistemas expertos, constituye el eje sobre el que se ha de construir

el modulo de gestión de base de conocimientos, esto es, la gestión de procesos

deductivos de la base de reglas que opera sobre la base de datos.

Técnicamente en una BDI converge la arquitectura de un SE y sistemas basados en

conocimiento por lo que para en su desarrollo se incluye como aspecto fundamental la

programación del conocimiento (figura 6), la cual hace uso de la representación

explícita del conocimiento a utilizar por el sistema y de su interpretación y manipulación

Page 45: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

3. Sistemas expertos

lógica por medio de mecanismos de inferencia, que permitan

conocimiento a partir del que ya se conoce.

37

deducir nuevo

PrqramacióA de qistemas expertos

Pmgramación diI crrntimiento

Figura 6. Aspectos a considerar en la programación de SE.

La programación basada en lógica brinda las capacidades de responder a preguntas

que no se pueden atacar fácilmente con los lenguajes de manipulación de datos de la

programación procedimental. Aunque la creación de vistas es similar al uso de reglas

para definir bases de datos en intenso, éstas no son tan poderosas como las reglas

lógicas. En particular, los lenguajes relacionales no pueden expresar consultas

recursivas que son a menudo útiles para formular consultas complejas (las

interrelaciones transitivas tales como la jerarquía entre partes, las listas de ancestros y

las jerarquías de dirección por ejemplo).

Page 46: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

4. Arquitectura de una BD1 38

4. Arquitectura de BDI

4.1 Fundamentos 2

En el presente capítulo, abordaremos en forma somera los principales indicadores

teóricos que conceptualizan la IA (Inteligencia Artificial) vinculados con los

alcances de nuestra investigación.

Una buena definición de IA es algo elusiva y controversial, fundamentalmente

porque la inteligencia humana no está completamente entendida. Cada libro de

texto en IA propone una definición que enfatìza las diferentes perspectivas que,

cada autor cree, encierra el campo. A continuación se transcriben algunas de

ellas:

“La IA es una rama de la ciencia de computación que comprendeel estudio y creación de sistemas computatizados que manifiestancierta forma de inteligencia: sistemas que aprenden nuevosconceptos y tareas, sistemas que pueden razonar y derivarconclusiones útiles acerca del mundo que nos rodea, sistemasque pueden comprender un lenguaje natural o percibir ycomprender una escena visual, y sistemas que realizan otro tipode actividades que requieren de inteligencia humana”.

“La IA es una cíencia que trata de ia comprensión de lainteligencia y del diseiio de máquinas inteligentes, es decir, elestudio y la simulación de las actividades intelectuales del hombre(manipulación, razonamiento, percepción, aprendizaje,creacidn) “.

“La IA es el estudio de las computaciones que permiten percibir,razonar y actuar”.

“La IA es un campo de estudio que busca explicar y emular elcomportamiento inteligente en términos de procesoscomputacionaies”.

“La IA estudia las representaciones y procedimientos queautomáticamente resuelven problemas usualmente resueltos porhumanos”

Page 47: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

4. Arquitectura de una BD1 39

A pesar de la diversidad de conceptos propuestos para la IA, en g.eneral todos

coinciden en que la IA trata de alcanzar inteligencia a través de la computación.

Toda computación, requiere de una representación de cierta entidad y de un

proceso para su manipulación.

Desde el punto de vista de los objetivos, la IA puede considerarse en parte como

ingeniería y en parte como ciencia:

Como ingeniería, el objetivo de la IA es resolver problemas reales, actuando como

un conjunto de ideas acerca de cómo representar y utilizar el conocimiento, y de

cómo desarrollar sistemas informáticos.

Como ciencia, el objetivo de la IA es buscar la explicación de diversas clases de

inteligencia, a través de la representación del conocimiento y de la aplicación que

se da a éste en los sistemas informáticos desarrollados.

Para usar la IA se requiere una comprensión básica de la forma en que se puede

representar el conocimiento y de los métodos que pueden utilizar o manipular ese

conocimiento.

Desde el punto de vista de ingeniería, la mayor parte del trabajo requerido para

construir sistemas de IA, está basado en el desarrollo de adecuadas

representaciones de conocimiento y sus correspondientes estrategias de

manipulación.

4.2 Descripción

Las aplicaciones de mayor impacto que han surgido de la Inteligencia Artificial se

concentran en los Sistemas Basados en Conocimiento. Desafortunadamente, estos

sistemas son útiles en función de la validez de su conocimiento, además de que su

construcción es un proceso complejo y costoso. A su lado, los SGBD relacionales

Page 48: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

4. Arquitectura de una BD1 40

han evolucionado hasta consolidar una robusta plataforma altamente funcional y

económica, con un alto grado de penetración en distintos mercados: los sistemas de

bases de datos conllevan la-áutomatización de cada vez más actividades reduciendo

costos y mejorando la calidad de desempeño, por ello, importantes grupos de

investigadores han concentrado sus esfuerzos en el diseño y desarrollo de

herramientas informáticas que apoyen el descubrimiento de conocimiento y exploten

la experiencia, en dichos sistemas.

En muchas áreas del saber, el conocimiento se ha venido obteniendo por el

clásico método hipotético - deductivo de la ciencia positiva. En él es fundamental

el paso inductivo inicial: a partir de un conjunto de observaciones y de unos

conocimientos previos, la intuición del investigador le conduce a formular la

hipótesis. Esta “intuición” resulta inoperante cuando no se trata de observaciones

aisladas y casuales, sino de millones de datos almacenados en soporte

informático.

En el fondo de todas las investigaciones sobre inducción en bases de datos

subyace la idea de automatizar ese paso inductivo. Las técnicas de análisis

estadístico, desarrolladas hace tiempo, permiten obtener ciertas informaciones

útiles, pero no inducir relaciones cualitativas generales, o leyes que enuncien su

comportamiento; para esto se requieren técnicas de análisis inteligente que

todavía no han sido claramente establecidas. Por ello, se incrementa de forma

continua la diferencia existente entre la cantidad de datos disponibles y el

conocimiento extraído de los mismos. Cada vez más investigaciones dentro de la

inteligencia artificial están enfocadas a la inducción de conocimiento en bases de

datos. Consecuencia de esta creciente necesidad ha aparecido un nuevo campo

de interés: la minería de datos (data miníng), que incluye nuevos métodos

matemáticos y técnicas siftware (WY, que puede traducirse como escuadriñar,

cernir, etc.) para análisis inteligente de datos.

Page 49: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

4. Arquitectura de una BD1 41

La minería de datos surge a partir de sistemas de aprendizaje inductivo en

ordenadores, al ser aplicados a bases de datos, y su importancia crece de tal

forma que incluso es posible que, en el futuro, los sistemas de aprendizaje se

usen de foema masiva como herramientas para analizar datos a g.ran escala.

Se denomina descubrimiento de conocimiento en bases de datos (Knowdlege

Discovery in Database) al proceso global de búsqueda de nuevo conocimiento a

partir de los datos de una base de datos. Este proceso incluye no sólo el análisis

inteligente de los datos con técnicas de minería de datos, sino también diversos

pasos previos de regular complejidad, como el filtrado y preprocesado de los

datos, y los posteriores, como la interpretación y validación del conocimiento

extraído en que se involucran técnicas de la ingeniería del conocimiento.

En el esquema operativo de la minería de datos se distinguen -en razón directa de

su implementación sobre SGBD relacionales activos- dos arquitecturas básicas: la

primera de ellas enfocada al descubrimiento de conocimiento mediante búsquedas

exhaustivas de características “interesantes” en el total de la BDD, por ejemplo un

comportamiento irregular en un dominio particular: descenso o incremento de los

valores que habitualmente los compone; la segunda -en que sustentamos nuestra

tesis- que opera con un propósito específico atendiendo un conjunto de reglas

predefinidas y operando en un marco finito (segmentos de la BDD), para la

solución de problemas particulares o la estructuración de conocimiento en

lenguaje de alto nivel, obtenida sobre dominios finitos ( v. fig. 7).

Normalmente el término minería de datos lo usan estadísticos, analistas de datos,

y la comunidad de sistemas de gestión de información, mientras que KDD es más

utilizado en inteligencia artificial y aprendizaje en ordenadores.

Page 50: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

4. Arquitechua de una BD1 32

Informes por áreasfuncionales.

Transacciones,mantenimiento de l- --e--darchivos, informes Informes estratégicos.

Fig. 7 KDD en un dominio finito.

En las bases de datos inteligentes [BDI] se pretende capitalizar tanto la evolución

e integración de las bases de datos relacionales activas, como las técnicas

avanzadas para el almacenamiento, recuperación y procesamiento de la

información en el área de los sistemas expertos e inteligencia artificial.

Fundamentalmente, una BDI, deberá ser capaz de deducir hechos a partir de la

base de datos aplicando axiomas deductivos o reglas de inferencia a esos hechos.

La eficiente implementación de una BDI, precisa del desarrollo de un sistema que

posea la capacidad de gestionar conocimiento complejo a través del procesamiento

de datos simples, provenientes tanto de ficheros controlados de forma autónoma

como de un SGDB (v.fìg.8), incorporar la capacidad de utilizar la experiencia en un

dominio particular de aplicación para resolver clases de problemas dentro del

dominio.

Page 51: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

4. Arquitectura de una BD1 4 3

Datos Objetivo

Preproceso.

D+-?!?3D. Transformados

Conocimiento. Inferencia.

Fig. 8 Procesamiento de datos en una BDI.

Su principal objetivo es permitir al usuario manipular el contenido de su base de

datos de manera transparente, ofreciéndole herramientas para extraer

conocimientos a partir del análisis del contenido de sus datos, interrelacionar

información proveniente de diversas fuentes usando medios diversos, usar

conocimientos y hacer inferencias para facilitar la recuperación y visualización de la

información, apoyando la toma de decisiones y ofreciendo una alternativa para

representar y manipular la semántica de las aplicaciones avanzadas.

Los principales pasos dentro del proceso interactivo e iterativo del KDD pueden

verse en la figura 8, y son los siguientes:

1. Desarrollo y entendimiento del dominio de la aplicación, el conocimiento

relevante y los objetivos del usuario final. Este paso requiere cierta dependencia

usuafio/analista, pues intervienen factores como: conocer los cuellos de botella del

dominio, saber qué partes son susceptibles de un procesado automático y cuáles

no, cuáles son los objetivos, los criterios de rendimiento exigibles, para qué se

usarán los resultados que se obtengan, compromisos entre simplicidad y precisión

del conocimiento extraído, etc.

2. Creación del conjunto de datos objetivo, seleccionando el subconjunto de

variables o ejemplos sobre los que se realizará el descubrimiento. Esto implica

Page 52: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

4. Arquitectura de una BD1 44

consideraciones sobre la homogeneidad de los datos, su variación a lo largo del

tiempo, estrategia de muestreo, grados de libertad, etc.

3. Reprocesado de los datos: eliminación de ruido, estrategias para manejar

valores ausentes, normalización de los datos, etc.

4. Transformación y reducción de los datos. Incluye la búsqueda de características

útiles de los datos según sea el objetivo final, la reducción del número de variables

y la proyección de los datos sobre espacios de búsqueda en los que sea más fácil

encontrar una solución. Este es un paso crítico dentro del proceso global, que

requiere un buen conocimiento del problema y una buena intuición, y que, con

frecuencia, marca la diferencia entre el éxito o fracaso de la minería de datos

(paso 7).

5. Elección del tipo de sistema para minería de datos. Esto depende de si el

objetivo del proceso de KDD es la clasificación, regresión, agrupamiento de

conceptos (clustering), detección de desviaciones, etc.

6. Elección del algoritmo de minería de datos

7. Minería de datos. En este paso se realiza la búsqueda de conocimiento con una

determinada representación del mismo.

8. Interpretación del conocimiento extraído, con posibilidad de iterar de nuevo

desde el primer paso. La obtención de resultados aceptables dependerá de

factores como: definición de medidas del interés del conocimiento (de tipo

estadístico, en función de su sencillez, etc.) que permitan filtrarlo de forma

automática, existencia de técnicas de visualización para facilitar la valoración de

los resultados o búsqueda manual de conocimiento útil entre los resultados

obtenidos.

Page 53: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

4. Aquitechm de una BD1 45

9. Consolidación del conocimiento descubierto, incorporándolo al sistema, o

simplemente documentándolo y enviándolo a la parte interesada. Este paso

incluye la revisión y resolución de posibles inconsistencias. -

4.3 Arquitectura

Los SGBD Inteligentes no existen como tales, por lo que en la arquitectura de una

base de datos inteligente intervienen múltiples factores y condicionales derivadas de

las estrategias que el programador decida implementar y las necesidades del

sistema a desarrollar, sin embargo, en el grueso de los estudios enfocados al

desarrollo de un sistema inteligente de bases de datos, se distingue como objetivo

de la intetfaz: proporcionar consejo y apoyo a la toma de decisiones, ofrecer

opiniones informadas y explicación de sus razonamientos, además, deberá permitir

que el directivo u operador manipule grandes volúmenes de información entre los

que encontramos ejemplos, reglas, heurísticas, hechos e incluso modelos de

predicción con probabilidades de certeza. Los beneficios son amplios y múltiples, por

ejemplo la reducción en el tiempo de toma de decisiones, apoyo a la toma de

decisiones basada en hechos, el mejoramiento del desempeño de personal no

experto, la acelerada capacitación de personal mediante tutores, flexibilidad y apoyo

a la reorganización y la reingeniería, el mejor diagnóstico de fallas, el mejor

mantenimiento, la optimización de tiempos y movimientos, el mejor servicio, y la

retención del conocimiento y experiencia corporativa; para ello, considerando el

desarrollo de una BDI sobre un motor relacional, el sistema -regularmente- integrará:

1. Una base de datos relacional. Base principal en la que se concentra en

diversas tablas el total de datos útiles del sistema.

2. Una base de conocimiento dinámica. Base en intenso, constituida de selección

de tuplas involucradas en un proceso de inferencia particular.

Page 54: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

4. Arquitectura de una BD1 46

3. Módulos de Preproceso. Enfocados al tratamiento de los datos inciertos en la

base persistente. (Lógica fuzzy y multivaluada)a-

4. Una base de reglas. Estructuran los procesos de inferencia en marcos de

operación determinados.

5. Módulos de acceso binario. Cuando intervienen procesos de selección y filtrado

para los que no se estructura un campo clave, precisamos de archivos binarios a

los que el sistema acceda en forma eficiente y rápida.

La inteligencia en una base de datos, no está necesariamente relacionada con la

estructura de la BDD, sino en la explotación que el sistema pueda hacer de éstos.

Así una BDI puede estar soportada en SGBD comerciales, siempre que cuente con

un módulo lógico o extensión lógica, desarrollada en el lenguaje anfitrión, o en un

lenguaje de programación lógica, para implementar la inteligencia del sistema. Esta

extensión se aplica fundamentalmente en el lenguaje para la manipulación (DML) de

datos (en el caso de una BDI no soportada en SGDB, su arquitectura implica la

creación de DDL y DML), esta extensión deberá crear funciones y procedimientos

particulares, de las que se espera:

l Descubrimiento de conocimiento y búsquedas inteligentes. Integrando

técnicas de inteligencia artificial para extraer conocimiento a partir del análisis de

los datos, la mayoría de los lenguajes anfitriones incorporan estructuras de

control sobre las que se pueden implementar (Computación evolutiva e IPL).

l Tratamiento de la Incertidumbre. Procesamiento lógico de condicionales:

datos inexistentes, inaplicables, desconocidos, indefinidos, etc. ( Conocimiento

con incertidumbre )

Para los efectos de nuestro estudio, nos ocuparemos de la arquitectura basada en

los estudios sobre transformación de problemas ILP (Programación Lógica Inductiva)

Page 55: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

4. Arquitectura de una BD1 47

a formato preposicional, la mecánica de transformación se basa en la idea de

convertir conjuntos de datos del formato relaciona1 a formato preposicional, y, si es

el caso, volver a convertir el conocimiento obtenido a formato relacional. i

La forma de pasar de formato relaciona1 a formato proposicional consiste en crear

una nueva relación, extendiendo cada tupla de la relación objetivo con un atributo

adicional para cada posible literal (combinando cada predicado de la base de

datos en intenso con cada variable del consecuente).

En este proceso, el sistema deberá seleccionar de la base persistente, tuplas

procedentes de una o diversas tablas, filtrar (en el caso de que exista

incertidumbre, mediante lógica fuzzy o multivaluada), ordenar y crear la base en

intenso, con los campos precisos para la sustituir con sus valores las variables en

el formato preposicional; el motor de inferencia operará sobre éstos (base en

intenso, o base de conocimiento) aplicándoles el conjunto de reglas pertinentes

(base de reglas), para determinar la solución a un problema determinado, creando

una nueva relación, informando resultados o - en su caso- modificando la base de

datos persistente.

r

(ILPA RELACIONAL]

Fig. 9 Arquitectura Relacional-ILP

Page 56: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

4. Arquitectura de una BD1 48

La base en intenso, en el sistema propuesto, puede edificarse en -por lo menos

dos formatos físicos ( el formato preposicional, es persistente en ambos ): un

archivo plano (dbintdb) o mediante un objeto (Table) del lenguaje anfitrión. El

formato físico -en cada caso- dependerá de la base de reglas y la naturaleza del

motor de inferencia:

Formato Características

Archivo Plano (dbint.db) Tanto la base de regtas como el mofof de

inferencia operan en forma periférica al

sistema (Uso de Prolog).

Table La base de reglas y las funciones de

inferencia pertenecen al lenguaje nativo

(Visuat 6asic6)

4.3.1 Computación evolutiva e IPL

La computación evolutiva es una rama de la inteligencia artificial enfocada al

desarrollo de algoritmos genéticos, esto es, modelos lógico-matemáticos, que

aproximen las operaciones máquina, al razonamiento natural.

Las aplicaciones prácticas de la llamada Inteligencia Artificial han sido foco de

controversia por muchos años. Claramente, si comparamos los sistemas

desarrollados con las habilidades cognoscitivas humanas, podemos considerar que

el desarrollo es aún primitivo. Sin embargo, en años recientes, las técnicas de esta

rama de las ciencias de la información han abordado muchos campos prácticos y

desarrollado herramientas sofisticadas de uso cotidiano en sectores comerciales e

industriales.

La ingeniería en sus diversas instancias, trata de desarrollar modelos de los

procesos de interés (social, económico, etc.) para después, a través de herramientas

Page 57: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

4. Arquitectura de una BD1 4 9

y metodologías adecuadas, poder extraer resultados útiles en diversos sentidos. El

modelado puede efectuarse apoyándose en las leyes físicas que rigen, bajo

condiciones determinadas, las interacciones entre los diversos subsistemas que

componen el proceso, e inclusive pueden obedecer a relaciones= empíricas

elaboradas como fruto de la observación y la experiencia (relaciones estadísticas,

borrosas, etc.). Las relaciones pueden poseer carácter estático cuando no interviene

el tiempo como parámetro modelador, o dinámico cuando dependen de éste. La

extracción de resultados de un modelo está asociada a la determinación de valores

paramétricos de variables conocidas como variables de estado del proceso, estos

valores obedecen al conjunto de restricciones que definen el proceso y que

configuran el espacio de soluciones viables.

En este universo, múltiples algoritmos genéticos o evolucionistas basados en la

existencia de un universo de acción (espacio finito de la base persistente), en que un

agente o entidad lógica parte de su conocimiento sobre los hechos inmediatos

(conocimiento base, existente en las relaciones persistentes) y puede, en caso de

que verifique relaciones base sobre un requerimiento particular, evolucionar

ampliando dicho conocimiento mediante un proceso de inferencia lógica

fundamentalmente heurístico. Dichos algoritmos se pueden edificar a partir de la

programación lógica inductiva (Inductive Logic Programming JLP), quedescribiremos brevemente.

La programación lógica inductiva se define como la intersección entre el

aprendizaje inductivo y la programación lógica. Esto es así porque utiliza técnicas

de ambos campos:

- Del aprendizaje inductivo en los ordenadores hereda su objetivo: desarrollar

herramientas y técnicas para inducir hipótesis a partir de observaciones (ejemplos)

y sintetizar nuevo conocimiento a partir de la experiencia.

- De la programación lógica hereda básicamente el formalismo de representación

y su orientación a la semántica. La ILP utiliza la programación lógica como

Page 58: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

4. Arquitectura de una BD1 50

mecanismo para representar las hipótesis y las observaciones, superando así dos

de las principaies limitaciones de las técnicas clásicas de aprendizaje en

ordenadores: la rigidez en la representación del conocimiento (v. Cap. 1) y la

dificultad para ex&esar conocimiento de base (background knowledge).

En los sistemas de aprendizaje de orden - 0 el conjunto de entrenamiento consta

de vectores de valores, cada uno perteneciente a una clase conocida. El

conckimiento inducido permite definir clases en función del valor de los atributos,

siendo representable con expresiones de la lógica de proposiciones. En

ocasiones, se representa en forma de árbol de decisión: 103, C4.5, etc. y a veces

en forma de reglas: PRISM, C4.5 rules, etc. Por el contrario, en los sistemas de

aprendizaje de primer orden, el conjunto de entrenamiento lo forman relaciones

definidas de forma extensional, y el conocimiento de base lo constituyen otras

relaciones, definidas infensionalmente: El objetivo del aprendizaje es, en estos

sistemas, la construcción de un programa lógico que defina de forma intenkional

una relación objetivo (extensional) del conjunto de entrenamiento. En este tipo de

definiciones lógicas se permite la recursión y algunos cuantificadores, muy útiles

cuando se trabaja con objetos estructurados, difíciles de describir en un formato

objeto-atributo-valor.

Se puede considerar la programación lógica inductiva como la búsqueda de

cláusulas, consistentes con los ejemplos de entrenamiento, en lenguaje de primer

orden. Dentro del espacio de todas las posibles cláusulas, se puede definir una

ordenación entre ellas, dada por la relación de generalización (una cláusula es

más general que otra cuando cubre un superconjunto de las tuplas cubiertas por la

segunda). Según sea el método con el que se recorre el espacio de posibles

cláusulas, podemos distinguir varias técnicas: generalización relativa menos

general, resolución inversa, búsqueda de grafos refinados, modelos de reglas,

transformación del problema a formato preposicional, etc.

Page 59: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

4. Arquitectura de una BD1 5 1

a. Generalización relativa menos general

La generalización menos general (/ea& general generalizafion) de Plotkin se basa

en la idea de que si dos cláusulas c 7 y c 2 son ciertas, la3generalización más

específica común a ambas Igg[c ? ,c 2 ) será también cierta con bastante

plausibilidad. Esto permite realizar generalizaciones de forma conservadora. A las

técnicas de generalización a partir de los datos se las denomina también técnicas

de búsqueda de abajo hacia arriba (botiom-up). La generalización menos general

de dos cláusulas (que puedan generalizarse) es el resultado de aplicar la

generalización menos general a cada par de literales de ambas, tanto en el

antecedente como en el consecuente. Para cada par de literales, esta operación

se realiza comparándolos y sustituyendo por variables los atributos que no

coincidan. Por ejemplo:

c 1 = enfermo (Pedro) :-

hijo-de(pedro, juan),

fumador(juan)

c 2 = enfermo (alberto) :-

hijo-de(alberto, josé),

fumador(josé)

Igg(c 7 , c 2) = enfefmo(X) :-

hijo_de(X, Y),

fumador(

La generalización relativa menos general (r/gg) de dos cláusulas, es la

generalización menos general de ambas, relativa a cierto conocimiento de base.

La r/gg es la técnica en que se basa el sistema GOLEM. Normalmente, el número

de literales de una rigg crece al menos de forma exponencial con el número de

ejemplos existentes. Por ello, GOLEM utiliza restricciones que evitan la

introducción de literales redundantes, aunque aún así el número de ellos suele ser

grande. Existen sistemas que combinan técnicas de búsqueda de abajo hacia

Page 60: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

4. Arquitectura de una BD1 5 2

arriba (generalización menos general, como hace GOLEM) con técnicas de arriba

hacia abajo (especialización por introducción de nuevos literales, como FOIL).

b. Re&iución inversa

La idea básica de la resolución inversa (inverse resolufíon) consiste en invertir la

regla de resolución, de la inferencia deductiva, obteniendo así un método de

generalización.

Aplicada en lógica preposicional, la resolución establece que (silogísmo hipotético)

dadas las premisas p v g y 9 v r, se deduce que p v r. En lógica de predicados

de primer orden, la resolución requiere sustituciones de variables por valores de

atributos. La resolución inversa utiliza un operador de generalización basado en

invertir la sustitución.

Por ejemplo, dados los hechos:

bl = enfermo(pedro)

b2 = hijo-de(pedro, juan)

b3 = fumador(juan)

tomando bl y b2, y la sustitución inversa ql -1 = {pedroN} se obtiene:

cl = enfermo(Y) :- hijo_de(Y, juan)

tomando ahora cl y b3, y la sustitución inversa q2 -1 = Cjuan/X} se obtiene:

c2 = enfermo(Y) :- hijo_de(Y, X), fumador(X).

c. Búsqueda en grafos refinados

La principal técnica de especialización en ILP es la búsqueda de arriba a abajo

(fop-down search) en grafos refinados (refinement graphs). Los sistemas que

Page 61: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

4. Arquitectura de una BD1 5 3

utilizan esta técnica, comienzan con la cláusula más general, a la que aplican

especializaciones hasta que sólo cubra tuplas positivas.i

enfermo [x 1 :- verdaderoI1 1 ..I 1~ 1

enfermo (x) :- :- enfermo :- enfermo :-x=pedro

enfermo [x ] [x) (x 1hijo-de Ix, y 1 fumador [x) padwW,r)

t

1 .I. 1enfermo [x):- enfermo (n):-hijo-de [x, y ) hijuWx,y 1hijo-de (y,z) fumador(y)

Fig. 10 Grafos refinados.

Se denominan gratos refinados porque las operaciones de especialización

(refinado) que se realizan durante la búsqueda se pueden representar en un grafo

acíclico y dirigido (fig. 10). En este grafo, cada nodo representa una cláusula (el

nodo superior es la cláusula más general) y cada arco representa una operación

de especialización (sustitución de una variable por una constante, o incremento de

un nuevo literal en la cláusula en construcción). La búsqueda dentro de éste grafo

suele ser heurística, debido a que se produce una explosión combinatoria en el

conjunto de posibles especializaciones, que hace inabordable la búsqueda

exhaustiva.

d. Patrones de reglas.

Se denominan patrones de reglas a un tipo especial de reglas en las que los

predicados son variables. La búsqueda de reglas se realiza a partir de los

patrones de reglas existentes, proporcionados por el usuario. Para cada patrón de

regla se prueban todas las posibles combinaciones de predicados existentes y,

Page 62: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

4. Arquitectura de una BD1 5 4

cada una de las reglas así obtenidas, se evalúa con los datos de entrenamiento.

Por ejemplo, con un patrón de reglas de la forma:

P(X) :- R(X,Y), Q(Y)

se podría obtener, por ejemplo, la regla J

enfermo(X) :-

hijo-de(X,Y),

fumador(Y).

e. Cláusulas

Normalmente el objetivo de los sistemas de ILP es la inducción de reglas quedefinan ciertos predicados. Estas reglas deberían ser lo suficientemente precisas

como para poder reemplazar a los eiemplos de la base de datos y que éstos

fueran deducidos a partir de las mismas. Pero puede considerarse un enfoque

diferente, conocido como /LP no monótono, que consiste en la búsqueda de

restricciones dentro de la base de datos.

Estas restricciones pueden tener la forma de una cláusula en lógica de predicados

de primer orden:

padre-de(X,Y) v madre-de(X,Y) :- progenitor-de(X,Y)

progenitor-de(X,Y) :- padre-de(X,Y)

falso :- padre-de(X,Y), madre-de(X,Y)

La última de ellas se interpreta como que una persona no puede ser a la vez padre

y madre de otra.

4.3.2 Conocimiento con incertidumbre

La incertidumbre está asociada, de forma inseparable, con la información. Aunque

existen diferentes formas de incertidumbre, cabe destacar la que se produce como

Page 63: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

4.ArqtitechuadeunaBDI

consecuencia de la imprecisión y subjetividad propias de la actividad humana. En

muchas ocasiones sacrificamos parte de la información precisa disponible por otra

4 más vaga pero más robusta, lo que permite manejar de forma eficiente la

complejidad asociada al mundo real.

Muchos de los conceptos manejados habitualmente son, en sí mismos, vagos o

borrosos, es decir, sus límites no están perfectamente determinados, y no por ello

carecen de significación. La lógica borrosa y la teoría de conjuntos borrosos

ofrecen un método natural para representar esa imprecisión y subjetividad

humanas.

El tratamiento de la incertidumbre es un rasgo típico de las aplicaciones en que se

involucra la inteligencia artificial; aplicada al desarrollo de SGBD, la incertidumbre

se centra en el tratamiento de dos indicadores fundamentales:

l Datos inciertos o difusos.

l Datos desconocidos o condicionales.

Los primeros se caracterizan por formas verbales indeterminadas que representan

rangos heurísticos de valor (alto, muy alto, a menudo, etc.); los segundos,

denominados valores nulos. Ambos constituyen uno de los problemas teóricos

más importantes en las bases de datos con el consecuente impacto en la

construcción de aplicaciones. Motro propone clasificar la incertidumbre en diversos

tipos:

- incertidumbre propiamente dicha: cuando no es posible determinar si una

aserción es cierta o falsa; por ejemplo, no estamos seguros de que “Juan

tenga 30 años”.

- imprecisión: la información no es tan específica como debería ser: “Juan

tiene entre 30 y 40 años”, “Juan no tiene más de 40 años”.

- vaguedad: conocimiento del estilo de “Juan pertenece a la tercera edad”.

Page 64: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

4. Arquitechxa de una BD1 56

- inconsistencia: cuando el modelo tiene dos o más aserciones que no

pueden ser ciertas, por ejemplo, “Juan tiene entre 37 y 45 años” y “la edad2de Juan es 34”.

- ambigüedad: si algunos elementos del modelo no poseen una semántica

completa, dando lugar a distintas interpretaciones. Esto suele producirse

al establecer magnitudes sin especificar su unidad de medida.

Este autor señala que hasta ahora se ha intentado solucionar los casos de

incertidumbre no dejando almacenar cierta información o mediante los valores

nulos; por lo que propone incluir nuevas técnicas en los SGBD como los factores

de incertidumbre que se emplean en los Sistemas de Recuperación de la

Información o en los Sistemas Expertos, y la lógica borrosa (fuzzy). En esta misma

línea se encuentra Johnston, que propone una lógica multivaluada “reglamentada”

a la que se le añaden “áreas de la Idgica que van más allá de la Idgica

preposicional y de predicado de primer orden”, como pueden ser: la lógica modal,

la lógica no monotónica y la lógica funcional no verdadera.

4.3.2.1 Tratamiento de los valores inciertos.

El tratamiento de los valores difusos en las BD relacionales implica la creación de

un mecanismo capaz de expresar la incertidumbre en valores numéricos, para ello

existen distintos algoritmos, la mayoría derivados de la lógica difusa (fuzzy logic),

basada en la Teoría de Conjuntos Difusos, donde un elemento no necesariamente

pertenece o no pertenece a un conjunto, sino que hay un continuo de “grados de

pertenencia”. El grado de pertenencia a un conjunto(p), y puede tomar valores

entre 0 y 1.

Page 65: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

4. Arquitectura de una BD1 57

18 2 2 2 6 30 18 2 2 2 6 3 0

LOGICA CONVENCIONAL LOGICA FUZZY

I

Fig. 11 Lógica Fuzzy.

Podemos denotar esto como: ti(x) -+ [OJ]. A ~1 también se le conoce como el

“valor de verdad’ porque representa el grado en que una proposición es

verdadera. Mediante esta herramienta podemos asignar distintos valores

considerando las posibilidades explícitas del atributo (Universo de discurso [Sz]),

así un conjunto difuso I\ sobre un universo de discurso S& es un conjunto de

pares: I\ = {x; d(x): x E n; j-&(x) E [O,l]}, donde @4(x) se denomina grado de

pertenencia de x a x. Existen múltiples representaciones de conocimiento difuso

mediante la lógica fuzzy, para los efectos de nuestro estudio, tan sólo

describiremos aquéllas posibles asignaciones de valor operando sobre datos

concretos, así las etiquetas lingüísticas aplicadas corresponden al dominio

específico (columnas) que se trate por ejemplo:

1.

2 .

3.

4 .

Escalar simple. Por ejemplo Aptitud=buena; representado mediante la

distribución de posibilidad 1 /buena.

Número simple. Por ejemplo Edad=28; representado mediante la distribución

de posibilidad 1/28.

Conjunto de posibles asignaciones excluyentes de escalares. Por ejemplo

Aptitud = {buena;mala}, expresado por {l/mala;l/buena}.

Conjunto de posibles asignaciones excluyentes de números. Por ejemplo

Edad={20;21}; representado mediante { 1120; 1121).

Page 66: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

1. Arquitectura de una BD1 58

5. Distribución de posibilidad en el dominio de los escalares. Por ejemplo

Aptitud={O.6/mala;O.7/regular}.

6. Distribución de posibilidad en el dominio de los números. Por eiemplo

Edad={O.4/23;1.0/24;0.8/25).

7. Número real E [O,l] representando grados de cumplimiento. Por ejemplo

Calidad=0.9

Adicionalmente se consideran los valores desconocidos, indefinidos o nulos, sin

embargo, en nuestro estudio nos ocupamos de ellos mediante la lógica

multievaluada que se expone en forma exhaustiva en objetivos posteriores.

Evidentemente, el universo de los conjuntos difusos es amplio, nuestro estudio

sólo recupera algunas de sus formas y técnicas básicas en virtud de que en el

SGBD relacional, la implementación de un diccionario de datos en que se

clasifiquen los estados de pertenencia restringiendo su forma verbal en una

relación simple(opciones predefinidas), constituyen un modelo difusor universal,

de esta forma, el usuario del sistema expresa un estado determinado como valor,

y el sistema, tanto

producto asociado.

en el motor relaciona1 como el de inferencia, opera con el

Una vez que se asignen los valores asignados por lógica difusa a las tupias que

corresponda, su tratamiento dependerán -en cada caso- del proceso que las

requiera y serán operadas en forma convencional por el grado de pertenencia

asociado.

Page 67: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

4. Arquitectura de una BD1 5 9

Vista del Usuario: Base Persistente:

. . . prktribad lecturaA01 1 4 8 9 7

Aûl 25986

l

AO2 36999A03 59889

Base en Intwrzc. . .

/ymiobjeto(‘motor xyz’,O.3,14897)objeto(‘regulador x’,O.3,25986) tobjeto[‘motor wpz’,O.6,36999)

c

f

Fig. 12. Restricción de formas verbales en relaciones simples.

En su forma inversa, el difusor ataca directamente el contenido de los campos con

una función de pertenencia (rango) y construye la base en intenso asignando

etiquetas lingüísticas determinadas: BAJA, ALTA, URGENTE.. . , Por ejemplo:

Sea R(T1,. . . ,Tn), donde:

R(TI,T~,T~) con TI (Id), Tz(prioridad), 13 (lectura).

Dada una función de pertenencia:

Ii (0.3)

F(P)Is (0.8)

Tenemos:

V2){ T2 =< P(li) [h (Baja)] I T2>=P(ls)[T2 (Urgente)] 1 T2 (Alta)}

Page 68: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

4. Aquitectura de una BD1 6 0

La estructura básica de un Sistema de Lógica Difusa se muestra en la figura 13. El

sistema recibe varias entradas numéricas y entrega varias salidas numéricas. El

bloque Difusor se encarga de convertir las entradas en conjuntos difusos, que son

entregados al bloque Máquina de Inferencia; este bloque, apoyado en un conjunto

de reglas de la forma IF... THEN... , produce varios conjuntos difusos para que el

bloque Concresor los tome y los convierta en etiquetas lingüísticas concretas.

Eflh&lEntrada2

3

I . Salida1

DifUSOI z: concresor3 kz

Salida 2

Entrada :Salida .

Fig. 13 Estructura básica de un sistema de lógica difusa.

Cada una de las variables de entrada y de salida tiene una representación dentro

del Sistema de Lógica Difusa en forma de Variables Lingüísticas. Finalmente

atendiendo una de las recomendaciones generales sobre el diseño de SGBD

relacionales, se utilizará la lógica fuzzy exclusivamente en aquellos dominios que

lo exijan o que representen estados intermedios de procesos en desarrollo.

4.3.2.2 Tratamiento de la información desconocida o condicional

Si bien los valores nulos (también se le denomina “valor ausente o concticiunai”)

no son un concepto exclusivo del modelo relacional, ha sido en el contexto de este

modelo donde se ha abordado su estudio de manera más sistemática y donde se

están realizando más investigaciones a fin de formalizar su tratamiento. La

necesidad de los “valores nulos” o “marcas” en bases de datos es evidente por

diversas razones:

- Crear tuplas con ciertos atributos desconocidos.

Page 69: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

4. Arquitechxa de una BD1 6 1

- Añadir un nuevo atributo (columna) a una relación (tabla) existente; atributo que,

en el momento de añadirse, no tendría ningún valor para las tuplas de la relación.

- Atributos inaplicables a ciertas tuplas, por ejemplo, la editorial para un artículo (ya

que’suponemos que un artículo no tiene editorial)

En la atención de estas necesidades se ha definido esquemas lógicos

sensibemente distintos a la lógica habitual, denominados lógica trivaluada y lógica

tetravaluada.

a. Lógica trivaluada (L3V)

En las siguiente figura aparecen las tablas de verdad para la lógica trivaluada,

donde existen los valores C (cierto), F (falso) y Q (quizás). Además, se incluye un

nuevo operador denominado MAYE, que aplicado al valor de una expresión

“quizás”, da como resultado “cierto”.

Tabla de verdad para la lógica trivaluada.

Adicionalmente se precisa introducir otros dos operadores especiales:

a) IS-NULL, que toma el valor cierto si el operando es nulo y falso en caso contrario

b) IF-NULL, que toma dos operandos y que devuelve el valor del primero, salvo que

sea nulo, en cuyo caso devuelve el valor del segundo.

En cuanto a las operaciones aritméticas- con vatores~ nulos, se considera nulo el

resultado de sumar, multiplicar, restar o dividir un valor nulo con cualquier otro valor.

Por lo que respecta a los operadores algebraicos, el producto cartesiano no se ve

Page 70: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

4. Arquitechm de una BD1 6 2

afectado por la presencia de valores nulos, la restricción sólo devuelve aquellas

tuplas cuya condición se evalúa a “cierto” no ‘falso” ni “quizás”, y la proyección debe

eliminar tuplas duplicadas teniendo en cuenta los nulos, por lo que dos tuplas se

considerarán duplicadas si atributo a atributo son ambos iguales y no nulos, o ambos

nulos. Finalmente es muy importante considerar si los valores asignados en las

tupias van a formar parte de operaciones de agregación con el fin de aplicar

funciones estadísticas, v.g. suma, varianza, media, etc., en cuyo caso determinar su

uso o discriminar su número.

En el lenguaje SQL las columnas admiten valores nulos a no ser que se especifique

NOT NULL, y se soporta la lógica trivakada, cuyas tablas de verdad ya hemos

representado.

En SQL para determinar si un valor es nulo se utiliza el predicado NULL: <Nombrede columna> IS NULL

También podemos combinar este predicado con el operador NOT:-=Valor> IS NOT NUU

Un aspecto a tener en cuenta es el comportamiento del predicado cuando opera

sobre más de una columna. En efecto: WHERE (col-x, ~013) IS NULL, será cierto si

ambos son nulos, mientras que: WHERE (col-x, COIJ) IS NOT NULL, será cierto si

ambos son no nulos; existiendo otras dos variantes: WHERE NOT(colx, colé) IS

NULL, que será falso si ambos son nulos, pero cierto si alguno es nulo o lo son los

dos, finalmente: WHERE NOT(col-x, ~012) IS NOT NULL, será cierto si alguno o

ambos son nulos, y falso sólo si ninguno es nulo.

La expresión que juega el papel del operador IF-NULL es la siguiente:

COALESCE(Val1 ,Val2, Val3,...,Valn) que devuelve el valor, si no es nulo, o el valor2,

o el valor”, salvo que todos sean nulos devolviendo entonces nulo.

Si en lugar de nulos se emplean valores por defecto, el lenguaje ofrece la posibilidad

de convertir el valor por defecto a nulo mediante la expresión NULLIF.

Page 71: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

4. Arquitectura de una BD1 63

Por ejemplo: . . . WHERE NULLIF (año, -99) > 1980, que es equivalente a:

CASE WHEN año = -99

THEN NULL

ELSE año

END

Para comprobar si un predicado (o una combinación de éstos) es cierta, falsa o

quizás se utiliza:

p IS [NOT] TRUE

FALSE

UNKNOWN

este último (UA/IGVOl44V) corresponde al operador MA YBE. Así, por ejemplo,

podemos formular la siguiente consulta:

SELECT titulo

FROM libros

WHERE (año = 1996) IS UNKNOWN;

b. Lógica tetravaluada (L4V)

La lógica tetravaluada surge de la necesidad de diferenciar dos tipos importantes

de valores nulos: inaplicables, esto es, que no tienen sentido, de desconocidos

aplicables, es decir, que momentáneamente son desconocidos pero deberían

existir y puede que, en un determinado momento, lleguen a conocerse.

Esta diferencia, que puede parecer académica en exceso, es de hecho muy

importante para reflejar con más precisión la semántica del universo del discurso a

Page 72: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

4. Arquitectura de una BD1 64

tratar y para responder de manera “más inteligente” a las consultas que se

realicen sobre la base de datos. En la lógica cuatrivaluada se distingue, por tanto,

entre un valor nulo o marca que”representa información desconocida pero

aplicable, que denominaremos a, de otro que representa información inaplicable,

que denominaremos’p.

En este caso las operaciones aritméticas quedan modificadas como sigue, siendo

++ un operador aritmético y x un valor no nulo de la base de datos:

x++cY.=a*x=a

xtJp=p++x=p

a+-+p=p*cx=~

ae=a=a

P*P=P

A continuación se muestran las tablas de verdad para la lógica cuatrivaluada,

donde por “A”(Aplicable) y por “I” (Inaplicable) se representan los valores de

verdad de la lógica cuatrivaluada, según CODD.

C A F I

A A F 1

F F F F

II F 1

A F 1

ACAAA

FCAFF

ICAR.1

Lógica tetravaluada según CODD

El lenguaje SQL con que opera el motor relaciona1 Jet, no soporta aún la lógica

tetravaluada, por lo que se precisa una extensión del lenguaje de manipulación de

Page 73: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

4. Arquitectura de una BD1 65

datos, implementada en el lenguaje anfitrión, considerando los siguientes

indicadores:

1. Si el operador es AND y cualquier operando es falso el resultado es falso

2. Si el operador es OR y cualquier operando es cierto, el resultado es cierto

Si el resultado tiene definida una clase nula y uno o más operandos son nulos:

1. Si el operador es OR el resultado es el valor nulo que tiene la posición mayor,

En caso contrario, el resultado es el valor nulo que tiene la posición menor

En cualquier otro caso es resultado es el valor nulo general

Por otro lado, Gessert propone asociar a cada tabla de datos que pueda contener

valores nulos una “tabla de estados lógicos” que se corresponde fila a fila y campo

a campo a la tabla de datos y que posee las mismas claves. Mediante este

esquema, la tabla de datos no tendría valores nulos, y en la tabla de estados se

almacenarían los siguientes valores :

NA inaplicable

AF que indica que es falso

AM que indica que es desconocido pero aplicable

AT que señala que es cierto

De forma que no sea necesario complicar el lenguaje de manipulación (con IS

NULL, IS UNKNOWN, etc.) sino que simplemente basta con consultar la tabla de

estados. Tampoco se requiere modificar la estructura de datos relaciona1 ni

extender las columnas para tener en cuenta la presencia del indicador de nulos.

Es pues una representación sencilla a base de metadatos.

Page 74: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

5. Programación de una BD1 66

5. Proaramación de una BOI

5.1 Consideraciones generales

Como hemos citado; dada la arquitectura propuesta, el proceso de inferencia constituye

el nudo en la fase de intención del sistema, en este capítulo, abordaremos los

principales indicadores que propicien dicho inferencia, tanto si el proceso se verifica

mediante funciones del lenguaje anfitrión, como por un motor periférico. En principio,

nos ocuparemos de detallar las partes en común.

5.2 Las bases de datos persistente e intenso

La creación y manipulación de la base de datos persistente, así como la base de

datos en intenso, en el sistema propuesto, se efectúan a través de los diversos

objetos predefinidos que Visual Basic incorpora, centraremos nuestro interés en los

objetos RecordSet, Oatabase y los procedimientos para efectuar consultas a través

de SQL.

5.2.1 RecordSet

Llamaremos RecordSet (DynaSets, SnapShot, Tables y Query) a un conjunto de

registros que cumplen una determinada condición y que pueden ser tratados como un

conjunto de tuplas, tenemos diferentes tipos de RecordSet con distintas propiedades,

estos se declaran como variables en el dominio del módulo o si es el caso como

variables globales:

l SnapShot es un RecordSet de sólo lectura.

l DynaSet es un tipo RecordSet que se lee al abrir y escribe en la base de datos al ser

cerrado.

l Tables es un RecordSet que contiene toda la información de la misma. El RecordSef

contiene todos los registros de la misma.

Page 75: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

5. Programación de una BD1 67

l QueryDef es una consulta (Query) que se encuentra predefinida en la base de

datos.

1. Métodos

*Métodos asociados al Desplazamiento

Movefirst GO TOP. Va al primer registro.

MoveNext SKIP. Avanza un registro.

MovePrevious SKIP -1. Retrocede un registro.

MoveLast GO BOTTOM. Va al último registro.

*Métodos asociados a la Búsqueda

Findfirst Localiza el primer registro que cumple una condición.

FindNext Localiza el siguiente registro que cumpla una condición.

FindPrevious Localiza el registro anterior que cumpla una condición.

Findlast Localiza el último registro que cumpla una condición.

Seek Busca un registro (en una tabla).

*Métodos para edición.

Addnew APPEND BLANK. Añade un registro.

Delete DELETE. Borra un registro.

Edit Edita un registro para ser modificado.

Update Actualiza la edición que hayamos hecho.

Close Cierra el RecordSet.

Clone Crea una copia del RecordSet.

*Métodos para obtener información del RecordSet

Listfields Lista campos. (Regresa SnapShots)

Listlndexes Lista índices. (Regresa SnapShots)

Page 76: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

5. Programación de una BD1

2. Objetos Contenidos

Fiel& j

3. Propiedades

BOF

EOF

BookMark

RecordCount

DafeCreafed

LastModified

LastUpdated

Filfer

Index

sorf

NoMatch

LockEdits

Name

Transactions

Updatable

Retorna un objeto con las definiciones de los campos.

BOf(). Estamos al inicio del RecordSet.

EOF(). Estamos al final del RecordSet.

Marca un registro .

Número de registros en el SnapShot.

Fecha de creación.

Fecha de última modificación.

Fecha de última actualización.

SET FILTER TO. Para poner expresiones de filtro.

SET /ND= TO. Para saber o cambiar el índice activo en una

tabla.

Determina la expresión por el que se ordenará el RecordSet.

FOUND(). Regresa true si fracasa la búsqueda.

Determina el tipo de bloqueo a usar.

Indica el nombre del RecordSet (tabla..).

True si la base soporta transacciones.

True si puedo modificar los datos del RecordSet.

5.2.2 Database Object

Mediante este objeto nos comunicaremos con la base de datos. Toda la jerarquía de

clases que comienza aquí, y para llamar a los métodos de los RecordSets, siempre

tendremos que pasar por un objeto database. En la inteligencia de simplificar,

agruparemos, por su funcionalidad, todos sus métodos, propiedades y funciones

relacionadas.

Page 77: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

5. Programación de una BD1 69

1. Métodos

* Métodos Para obtener información de la estructura 3

ListTables Obtenemos un SnapShot con descripciones de las tablas

ListFields Obtenemos un SnapShot con información de los campos

* Métodos para crear y borrar consultas

CreateQueryDef Crea Querys (consultas) en la base de datos

DeleteQueryDef Borra Querys (consultas) de la base de datos

* Métodos para interactuar con los datos

Open Table Devuelve un objeto Table

CreateDynaset Devuelve un objeto DynaSet

CreateSnapshot Devuelve un objeto SnapShot

OpenQuerydef Devuelve un objeto QueryDef

* Método para cerrar la base de datos

Close Cierra la base de datos (elimina el objeto de memoria)

* Métodos involucrados en las transacciones

Begin Trans Inicia la transacción

CommitTrans Graba en el disco las modificaciones

RollBack Vuelve a la situación anterior

* Métodos para ejecutar comandos SQL

Execute Ejecuta un comando SQL usando VB

ExecuteSql Ejecuta un comando SQL a través de ODBC

2. Propiedades

Collating Order

Connect

Determina cómo vamos a comparar cadenas

Determina qué tipo de bases externas abriremos (dBase...)

Page 78: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

5. Programación de una BD1 70

Name

QuetyTimeout

Trahactions

Nombre de la base de datos

Tiempo de espera desde tras errores en conexiones ODBC

Indica si el driver acepta transacciones Updatable

3. Objetos Contenidos

TableDefs Devuelve un objeto TableDef (definiciones de la base)

4. Funciones Relacionadas

OpenDatabase Devuelve un objeto database

RegisterDa tabase Para conectarse vía ODBC

RepairDatabase Arregla bases de datos dudosas

CompactDatabase PACK

CreateDatabase Crea una nueva base de datos

FreeLocks Libera los bloqueos

Begin Trans Comienza una transacción

CommitTrans Graba en el disco el resultado de una transacción

RollBack Vuelve atrás en una transacción

SetDataAccessOption Opciones para gestión de bases ACCESS

SetDefaultWorkSpace Establece usuario y clave para bases codificadas ACCESS

52.3 SQL en Visual Basic

Visual Ba-sic es un lenguaje de programación de propósito general, con una gran

potencia en toda su estructura. Su implementación en el sistema operativo Windows y

sus herramientas visuales, han hecho de este lenguaje un líder indiscutible en lo que a

desarrollo de aplicaciones se refiere. Con la versión 3.0. se implementó la gestión de

bases de datos a muy alto nivel, pudiendo gestionar bases de datos de tipo Access,

Paradox, dBASE, FoxPro, etc. Este paso de gigante ha hecho de Visual Basic uno de

los lenguajes favoritos por los desarrolladores de aplicaciones de bases de datos.

Page 79: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

5. Programación de una BD1 7 1

Visual Basic incorpora esta extensión junto a nuestras bases de datos, obteniendo

potentes resultados. De hecho, las consultas que se realizan en Access, están

desarrolladas o basadas en este lenguaje, por lo que su implementación en Visual

Basic no es complicada. El objetivo principalde SQL es la realización de consultas y

cálculos con los datos de una o varias tablas.

a) Escribir mandatos en SQL

1 .

2.

3.

4 .

5 .

6 .

7 .

Un mandato en SQL se expresa en una cadena de caracteres o String.

Dicho mandato se puede escribir en la propiedad RecordSource de un control Data,

con el fin de crear una consulta en la interfaz.

Los nombres de los campos especificados (y de las tablas), que contengan más de

una palabra, han de encerrarse entre corchetes ([nombre]). Como norma general, se

suelen escribir siempre entre corchetes.

Para especificar un determinado campo de una determinada tabla, se ha de escribir

primero el nombre de la tabla, un punto y, a continuación, el nombre del campo

(nombre-tabla.nombre-campo).

Al especificar una expresión de búsqueda, si ésta se refiere a una expresión de

caracteres, éstos han de encerrarse entre comillas, normalmente simples

(‘expresión-a-buscar’).

Para especificar una fecha en una búsqueda, ésta debe encerrarse entre

almohadillas o pragmas (#Ifecha#).

Si se utiliza la propiedad RecordSource del control Data, para crear nuestras

consultas en SQL, tras introducir el mandato SQL (siempre como una expresión de

cadena) es necesario refrescar el control Data (control-data. Refresh).

b) La sentencia SELECT y la cláusula FROM

La sentencia SELECT “selecciona” los campos que conformarán la consulta, es decir,

que establece los campos que se visualizarán o compondrán la consulta. El parámetro

‘lista-campo está compuesto por uno o más nombres de campos, separados por

Page 80: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

5. Programación de una BD1 7

comas, pudiéndose especificar también el nombre de la tabla a la cual pertenecen

seguido de un punto y del nombre del campo correspondiente. Si el nombre del campe

o de la tabla está compuesto de más de una palabra, este nombre ha de escribirse

entre corchetes ([nombre]). Si se desea seleccionar todos los campos de una tabla, se

puede utilizar el asterisco (*) para indicarlo.

Una sentencia SELECT no puede escribirse sin la cláusula FROM. Una cláusula es una

extensión de un mandato que complementa a una sentencia o instrucción, pudiendo

complementar también a otras sentencias. Es, por decirlo así, un accesorio

imprescindible en una determinada máquina, que puede también acoplarse a otras

máquinas. En este caso, la cláusula FROM permite indicar en qué tablas o en qué

consultas (queries) se encuentran los campos especificados en la sentencias SELECT.

Estas tablas o consultas se separan por medio de comas (,), y, si sus nombres están

compuestos por más de una palabra, éstos se escriben entre corchetes ([nombre]). He

aquí algunos ejemplos de mandatos SQL en la estructura SELECT...FROM...:

SELECT nombre, apellidos FROM clientes;

Selecciona los campos ‘nombre’ y ‘apellidos’ de la tabla ‘clientes’.

SELECT clientes.nombre, producto FROM clientes, productos;

Selecciona el campo ‘nombre’ de la tabla ‘clientes’, y el campo ‘producto’ de la tabla

productos.

SELECT pedidos. * FROM pedidos;

Selecciona todos los campos de la tabla ‘pedidos’.

SELECT * FROM pedidos;

Selecciona todos los campos de la tabla ‘pedidos’.

SELECT nombre, apellidos, telefono FROM clientes;

Selecciona los campos ‘nombre’, ‘apellidos’ y ‘telefono’ de la tabla ‘clientes’.

SELECT [codigo postal] FROM [tabla morosos];

Selecciona el campo ‘codigo postal’ de la tabla ‘tabla morosos’.

Page 81: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

5. ProgramaciOn de una BD1 7 3

c) Claúsula WHERE

La claúsula WHERE es opcional,y permite seleccionar qué registros aparecerán en la

consulta (si no se especifica aparecerán todos los registros). Para indicar este conjunto

de registros se hace uso de criterios o condiciones, que no es más que una

comparación del contenido de un campo con un determinado valor (este valor puede

ser constante (valor predeterminado), el contenido de un campo, una variable, un

control, etc.). He aquí algunos ejemplos que ilustran el uso de esta cláusula:

SELECT * FROM clientes WHERE nombre=‘ALFREDO;

Selecciona todos los campos de la tabla ‘clientes’, pero los registros de todos aquellos

clientes que se llamen ‘ALFREDO’.

SELECT * FROM abonados WHERE estado =‘NAYARIT’ OR estado=‘JALISCO’ OR

estado =‘COLIMA’ ;

Selecciona todos los campos de la tabla ‘abonados’, pero los registros de todos los

abonados de los estados de NAYARIT, JALISCO, COLIMA

SELECT nombre, apellidos FROM abonados WHERE edad>=18;

Selecciona los campos ‘nombre’ y ‘apellidos’ de la tabla abonados, escogiendo a

aquellos abonados que sean mayor de edad (a partir de 18 años).

SELECT * FROM abonados WHERE edad>=18 AND edad<=45;

Selecciona todos los abonados con edades comprendidas entre los 18 y los 45 años.

SELECT * FROM abonados WHERE edad BETWEEN 18 AND 45;

Selecciona todos los abonados con edades comprendidas entre los 18 y los 45 años.

SELECT * FROM diario WHERE fecha=#7/1/97#;

Selecciona los apuntes de ‘diario’ realizados el 1 de Julio de 1.997 (la fecha ha de

indicarse en inglés (mes/día/año)).

SELECT * FROM diario WHERE fecha<=#l2/31/96#;

Selecciona los apuntes de ‘diario’ realizados antes del 1 de Enero de 1.997.

SELECT * FROM diario WHERE fecha BETWEEN #7/1/97# AND #7/31/97#;

Selecciona los apuntes de ‘diario’ realizados en Julio de 1.997.

SELECT * FROM clientes WHERE nombre LIKE ‘AL*;

Page 82: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

5. Programación de una BD1 74

Selecciona los clientes cuyo nombre comience con los caracteres ‘AL’.

SELECT * FROM clientes WHERE apellidos LIKE ‘*EZt

Selecciona los clientes cuyos apellidos terminen con los caracteres ‘ET.

SELECT * FROM clientes WHERE apellidos LIKE ‘*ZAMO*‘ d

Selecciona los clientes cuyos apellidos contengan, en cualquier posición, los caracteres

‘ZAMO’.

SELECT * FROM clientes WHERE estado IN (‘JALISCO’, ‘COLIMA’,

‘NAYARIT’, ‘MEXICO’, ‘PUEBLA 3;

Selecciona todos los clientes de los estados JALISCO, COLIMA, NAYARIT, MEXICO,

PUEBLA.

d) Cláusula ORDER BY

La cláusula ORDER BY suele escribirse al final de un mandato en SQL. Dicha cláusula

establece un criterio de ordenación de los datos de la consulta, por los campos que se

especifican en dicha cláusula. La potencia de ordenación de dicha cláusula radica en la

especificación de los campos por los que se ordena, ya que el programador puede

indicar cuál será el primer criterio de ordenación, el segundo, etc., así como el tipo de

ordenación por ese criterio: ascendiente o descendiente.

(, . J ORDER B Y campo 1 [ASC/DESC][, campo2 [ASUDESC]. . ./

La palabra reservada ASC es opcional e indica que el orden del campo será de tipo

ascendiente (O-9 A-Z), mientras que, si se especifica la palabra reservada DESC, se

indica que el orden del campo es descendiente (9-O Z-A). Si no se especifica ninguna

de estas palabras reservadas, la cláusula ORDER BY toma, por defecto, el tipo

ascendiente [ASC].

He aquí algunos ejemplos:

SELECT nombre, apellidos, telefono FRO M clientes ORDER B Y apellidos, nombre;

Page 83: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

5. Programación de una BD1 75

Crea una agenda telefónica de ‘clientes’ ordenada por ‘apellidos’ y ‘nombre’.

SELECT * FROM pedidos ORDER BY fecha DESC;

Relación de ‘pedidos’ ordenados desde el más antiguo hasta el más moderno.

SELECT * FROM abon’ados ORDER BY apellidos, nombre, fecha-nacimiento DESC;

Relación de ‘abonados’ por ‘apellidos’ y ‘nombre’ ascendientemente, y por

‘fecha-nacimiento’ en orden descendiente (del más viejo al más joven).

e) Programación SQL desde el control data

Gracias al control ‘Data’ (.vbx) podremos utilizar fácilmente la potencia de SQL. Lo

primero que hay que tener en cuenta es que la consulta realizada en SQL posea los

mismos campos que la interfaz diseñada, y que los controles encargados de mostrar o

modificar la base de datos, estén perfectamente vinculados al control Data. Por

ejemplo: realizamos una ficha de ‘clientes’, por lo que diseñamos una interfaz con

diversas Text Box vinculadas a un control Data que contendrá los datos. Estas Text Box

se vinculan gracias a las propiedades ‘DataSource’ y ‘DataField’.

La propiedad ‘DataSource’ corresponde a la fuente de los datos, en este caso, el

nombre del control ‘Data’. En la propiedad ‘DataField’ se especifica el nombre del

campo a tratar por cada Text Box (‘nombre’, ‘direccion’, ‘nif, ‘telefono’, etc.). Por otro

lado, en la propiedad ‘DatabaseName’ del control ‘Data’, se ha de especificar la ruta

completa de la base de datos (base.mdb), y la propiedad ‘RecordSource’ se reservará

para indicar, en una cadena o String, el mandato en SQL correspondiente cuando sea

necesario. Así se podría crear una variable de tipo String en un módulo, e insertar el

mandato en SQL correspondiente antes de llamar a la ficha. Al llamar a la ficha, la Form

correspondiente tendrá un evento Load, donde se insertará un código similar al

siguiente:

control-data.RecordSource = variable-SQL

control-data. Refresh

Page 84: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

5. Programación de una BD1 76

Obviamente, dependiendo del caso, la programación se hará diferente. Pero la norma

común es crear una interfaz en concreto, con unos campos concretos y, cuando sea

necesario, establecer como valor de la propiedad ‘RecordSource’ el mandato en SQL, y

refrescar el control Data correspondiente. De esta manera, el coñirol Data contendrá el

resultado de la consulta.

f) Eliminación dinámica de registros

El lenguaje SQL nos permite eliminar registros que cumplan las condiciones o criterios

indicadas a través de la sentencia DELETE, cuya sintaxis es la siguiente:

DELETE FROM tablas WHERE criterios

Donde el parámetro ‘tablas’ indica el nombre de las tablas de las cuales se desea

eliminar los registros, y, el parámetro ‘criterios’, representa las comparaciones 0 criterios

que deben cumplir los registros a eliminar, respetando a aquellos registros que no los

cumplan. Si - por ejemplo - quisiéramos eliminar todos los pedidos realizados por el

cliente cuyo código sea 4 en el día de hoy, utilizaríamos la siguiente sentencia:

DELETE FROM pedidos WHERE [codígo cliente]=4 AND fecha=Now();

g) Aritmética con SQL

* Sumas 0 totales

Para sumar las cantidades numéricas contenidas en un determinado campo, hemos de

utilizar la función SUM, cuya sintaxis es la siguiente:

SUM(expresíón)

Donde ‘expresión’ puede representar un campo o una operación con algún campo.

Page 85: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

5. Programación de una BD1 77

La función SUM retorna el resultado de la suma de la expresión indicada en todos los

registros que son afectados por la consulta. Veamos algunos ejemplos:

SELE& SUM(unidades) FRO M pedidos;

Retorna el total de u,nidades pedidas (la suma de todos los valores almacenados en el

campo ‘unidades’ de la tabla ‘pedidos’). Este resultado se toma como un nuevo campo

en el RecordSet.

SELECT SUM(ingresos-gastos) AS saldo FROM diario;

Retorna el saldo final de una tabla llamada ‘diario’. Este resultado se toma como un

nuevo campo en el RecordSet y se le llama ‘saldo’.

SELECT SlJM(unidades) AS tota/ FROM pedidos WHERE fecha=Now();

Retorna el total de unidades pedidas hoy. Este resultado se toma como un nuevo

campo en el RecordSet y se le llama ‘total’.

* Promedios o medias aritméticas

Para averiguar el promedio de unas cantidades utilizaremos la función AVG, cuya

sintaxis es la siguiente: AVG(expresión)

La función AVG retorna el promedio o media aritmética de la expresión especificada, en

todos los registros afectados por la consulta. Esto es lo mismo que realizar una suma

(SUM) y, después, dividir el resultado entre el número de registros implicados. He aquí

algunos ejemplos:

SELECT A VG(unidades) FRO M PEDIDOS;

Retorna el promedio de unidades pedidas (la media de todos los valores almacenados

en el campo ‘unidades’ de la tabla ‘pedidos’). Este resultado se toma como un nuevo

campo en el RecordSet.

SELECTA VG(ingresos-gastos) AS saldo-medio FROM diario;

Page 86: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

5. Programación de una BD1 78

Retorna el saldo medio de una tabla llamada ‘diario’. Este resultado se toma como un

nuevo campo en el RecordSet y se le llama ‘saldo-medio’.

SELECTA VG(unidades) AS media FROM pedidos WHERE fecha=Now();

Retorna el promedio de unidades pedidas hoy. Este resultado se toma como un nuevo

campo en el RecordSet y se le llama 'media'.

* Valores mínimos y máximos

También es posible conocer el valor mínimo o máximo de un campo, mediante las

funciones MIN y MAX, cuyas sintaxis son las siguientes:

MIN(expresión)

MAX(expresión)

He aquí algunos ejemplos:

SELECT MIN(unidades) AS minimo FROM pedidos;

Retorna el pedido más pequeño y lo refleja en el campo ‘minimo’.

SELECT MAX(unidades) AS maximo FROM pedidos WHERE fecha=Now();

Retorna el pedido más grande de hoy y lo refleja en el campo ‘maximo’.

SELECT MAX(gastos) AS maximo FROM diario;

Retorna el gasto más costoso reflejado en el diario contable, y lo representa en el

campo ‘maximo’.

* Conteo de registros

Para conocer cuántos registros hay utilizaremos la función COUNT, cuya sintaxis es la

siguiente: COUNT(expresión).

Page 87: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

5. Programación de una BD1 79

La función COUNT retorna el número de registros indicados en la expresión. He aquí

algunos ejemplos:’

SELECT COUNT(*) AS num_pedidos FROM pedidos WHERE fecha=Now();

Retorna el número de pedidos realizados hoy. Este resultado se toma como un nuevo

campo en el RecordSet y se le llama ‘num-pedidos’.

SELECT COUNT(*) AS casados FROM clientes WHERE casado=True;

Retorna el número de clientes casados. Este resultado se toma como un nuevo campo

y se le llama ‘casados’.

SELECT COUNT(*) AS num-pagos FROM diario WHERE gastos=25594;

Retorna el número de pagos por un importe equivalente a 25594. Este resultado se

toma como un nuevo campo en el RecordSet, y se le llama ‘num-pagos’.

SELECT SUM(unidades) AS total, AVG(unidades) AS media, COUNT(*) AS registros,

MAX(unidades) AS maximo, MIN(unidades) AS minimo FROM pedidos WHERE fecha

BETWEEN #III /97# AND #%/30/97#;

Retorna el total, la media, el máximo y el mínimo de unidades pedidas, y el número de

pedidos realizados, durante el primer semestre de 1997

h) Omisión de registros duplicados

En una consulta podría ser útil omitir registros que estén duplicados. Por ejemplo, en

nuestros pedidos hay duplicación, puesto que un cliente realiza varios pedidos en el

mismo día. Quizá necesitemos una historia para conocer los días y los clientes que

realizaron algún pedido, pero no necesitaremos toda la lista, si no que nos diga,

únicamente, mediante una línea, qué cliente realizó algún pedido y en qué día. Para

ello, utilizaremos el predicado DISTINCT, cuya sintaxis es la siguiente:

SELECT DISTINCT lista-campos . . .

Page 88: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

5. Programación de una BD1 80

El predicado DISTINCT omite aquellos registros duplicados en los campos

especificados. En el problema expuesto, utilizaremos la siguiente sentencia:

;SELECT DISTINCT [codigo cliente],fecha FROM pedidos;

Si deseamos que la consulta sea más completa y nos visualice también el nombre y los

apellidos correspondientes del cliente en cuestión (estos datos están en la tabla

‘clientes’ y no en ‘pedidos’), escribiríamos este mandato:

SELECT DISTINCT pedidos.fecha, pedidos.[codigo cliente], clientes.nombre,

clientes. apellidos FRO M pedidos, clientes WHERE clientes.[codigo cliente] =

pedidos. [codigo cliente];

i) Reemplazar datos

Es posible reemplazar el valor de un campo, para el total de la tabla al que pertenezca

mediante UPDATE, su sintaxis es la siguiente:

UPDATE lista-tablas SET campo=nuevo-valor [,campo=nuevo-valor] [WHERE...]

Donde lista-tablas representa el nombre de las tablas donde se realizarán las

sustituciones o reemplazos. El parámetro campo indica el campo que se va a modificar,

y el parámetro nuevo-valor respresenta una expresión (constante, valor directo, un

cálculo, etc.) cuyo resultado o valor será el nuevo valor del campo.

La sentencia UPDATE es muy versátil y potente, por lo que podemos realizar

.reemplazos condicionantes, ya que permite la cláusula WHERE. De ello se deduce que

- por ejemplo -, si se desea bajar un 10% el importe del seguro a aquellos asegurados

que cumplan más de dos años de carnet de conducir, y que tengan más de 22 años de

edad, tendríamos que escribir la siguiente sentencia:

UPDATE asegurados SET importe=impotte/l. 1 WHERE edad>22 AND YEAR(Now)-

YEAR(expedicion)>2;

Page 89: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

5. Programación de una BD1 8 1

Adicionalmente es posible utilizar varias tablas y sustituir el valor de un campo de una

de las tablas con el valor del campo de otra tabla, o bien reemplazar el valor de unos

campos de alguna tabla si el valor de los campos de otras tablas cumple una serie de

requisitos. A-

j) Grupos de registros

Si se precisa mostrar un resumen de los datos que tenemos, especificando el total - por

ejemplo -, de los ingresos y de los gastos de cada día, en lugar de visualizar todos los

ingresos y gastos realizados al detalle. Para llevar a cabo esta tarea hemos de tener en

cuenta, en primer lugar, bajo qué campo se van a agrupar los datos (en lo expuesto,

sería el campo fecha), y, a continuación, realizar la consulta mediante la cláusula

GROUP SY, cuya sintaxis es la siguiente:

SELECT . . . FROM . . . [WHERE . ../ GROUP BY lista-campos

Básicamente, la cláusula GROUP BY agrupa o combina registros con idéntico valor en

IoS campos especificados, en un único registro. Imaginemos que queremos hacer un

resumen de nuestros pedidos, y queremos saber cuántos pedidos y unidades han

realizado cada uno de nuestros clientes. Para ello, se escribiría una sentencia como

ésta:

SELECT codigo-cliente, count(codigo-cliente) AS num-pedidos,

SUM(unidades) AS cantidad FROM pedidos GROUP BY codigo-cliente;

Para saber cuántos pedidos se realizaron cada día:

SELECT fecha, count(fecha) AS numgedidos FROM pedidos GROUP BY fecha;

Para conocer cuántas unidades se pidieron cada día, tipearíamos esta sentencia:

SELECT fecha, SUM(unidades) AS cantidad FROM pedidos GROUP BY fecha;

Page 90: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

5. Programación de una BD1 82

En la siguiente sentencia se muestra para cada cliente aquellos días en que se realizó

un pedido, resumiéndose el número de pedidos realizados así como el total de

unidades pedidas:

-SELECT fecha, codigo-cliente, COUNT(codigo-cliente) AS num-pedidos,

SUM(unidades) AS cantidad FROM pedidos GROUP BY fecha,

codigo-cliente HAVING fechac#1/6/97#;

Como se puede apreciar, se ha especificado una condición a través de la cláusula

HAVING, que indica los criterios o condiciones a cumplir por los registros a visualizar en

un agrupamiento. En esta ocasión, la condición era de aquellos pedidos realizados

antes del seis de enero de 1997.

Para conocer una estadística de pedidos diaria, utilizaremos la siguiente sentencia:

SELECT fecha, COUNT(fecha) AS pedidos, SUM(unidades) AS subtotal,

MIN(unidades) AS minimo, Mm(unidades) AS maximo, A VG(unidades)

AS promedio FROM pedidos GROUP BY fecha;

k) Combinación de datos

Las consultas realizadas hasta ahora requerían de una dosis de habilidad para

conseguir crear un conjunto de datos que tuviese información combinada de dos tablas.

Pero, podemos combinar datos de una manera mucho más sencilla y eficaz: mediante

las operaciones JOIN, las cuales permiten combinar datos de dos tablas. La operación

JOIN más común es INNER JOIN, cuya sintaxis es:

tabla 1 INNER JOIN tabla2 ON tabla 1 .campo~común=tabla2.campo~común

Donde tabla1 y tabla2 representan el nombre de las tablas a combinar. Ambas tablas

han de tener un campo común o igual para poder realizar correctamente la combinación

de los datos. Por ejemplo:

Page 91: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

5. Programación de una BD1

SELECT * FROM pedidos INNER JOIN clientes ON pedidos.codigo-cliente =

clientes. codigo-cliente;

El resultado será un conjunto ie registros con los datos de las dos tablas. Este conjunto

poseerá el nombre de todos los campos de la tabla pedidos y de todos los campos de la

tabla clientes. En cada registro aparecerán los datos relacionados, es decir, que en un

pedido aparecerán los datos del mismo y los datos personales del cliente que realizó el

pedido.

La operación INNER JOIN combina los datos de las dos tablas siempre que haya

valores coincidentes en los campos comunes o enlazados.

Existen también otras dos formas de combinar: LEFT JOIN y RIGHT JOIN. Ambas

tienen la misma sintaxis que INNER JOIN, pero estas operaciones incluyen todos los

registros de una tabla y aquellos registros de la otra en que los campos comunes sean

iguales.

En la operación LEFT JOIN, incluye todos los registros de la primera tabla (parámetro

tabla?) y aquellos registros de la segunda tabla (parámetro tabla2) en que los campos

comunes sean iguales. En la operación RIGHT JOIN ocurre lo contrario: incluye todos

los registros de la segunda tabla y aquellos registros de la primera tabla en que los

campos comunes sean iguales.

Aunque la diferencia entre las tres operaciones parezca inexistente, en realidad sí

existe. La operación INNER JOIN realiza una combinación con todos aquellos registros

de las dos tablas en que el campo común de ambas tenga el mismo valor, mientras que

las operaciones LEFT JOIN y RIGHT JOIN realizan la combinación de todos los

registros de la tabla que combinan (ya sea la primera para LEFT JOIN o la segunda

para RIGHT JOIN), aunque en la otra tabla, en el campo común no haya coincidencia.

Page 92: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

5. Programación de una BD1 84

La prueba se ve rápidamente si se introduce un código de cliente en el campo

campo-cliente de la tabla pedidos que no exista:

SELECT * FROM pedidos INNER JOIN clientes ON ped&s.codigo~cliente =

clientes. codigo-cliente;

El registro que contiene el pedido del cliente que no existe no aparece, puesto que no

hay coincidencia. Si utilizamos:

SELECT * FROM pedidos LEFT JOIN clientes ON pedidos.codigo-cliente =

clientesxodigo-cliente;

Observaremos que aparecen todos los registros de la tabla pedidos, incluido aquel

donde indicamos que el pedido fue solicitado por el cliente inexistente, pero en los

campos relacionados (campos de la tabla clientes) no habrá ningún dato relacionado o

combinado. Si utilizamos:

SELECT * FROM pedidos LEFT JOIN clientes ON pedidos.codigo-cliente =

clientes. codigo-cliente;

Obtendremos el mismo resultado que con la operación INNER JOIN, puesto que se

visualizan todos aquellos registros que existen en clientes y aquellos que coincidan con

el campo clave en la tabla pedidos. Como el código inexistente no existe en la tabla

clientes, este registro no aparece.

Mediante las herramientas citadas, es posible recuperar los datos objetivo que serán

transformados al formato IPL, dichos datos, generalmente serán el producto de varias

consultas cuyos productos se redireccionan hacia un archivo a partir del que se

edificará la base de datos en intenso, sobre la que opera el proceso de inferencia.

Consideremos el siguiente ejemplo:

Page 93: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

5. Programación de una BD1 85

Sean R’(T1 ,..., Tn), y R2(T1 ,..., T,), donde:

i

R’ (TI,Tz,T~ Ts,T4) con TI (CVE), Tz(MAXl), T3 (MAX2) T4(MAX3), T5 (MAX4).

R* (LLT3 h,L) con TI (CVE), T2(Ll), T3 (l-2) T4(L3), TS (L4).

Considerando un esquema de BD persistente en que se precisa:

Tabla: Motor.

CVE String ’ 5 Indice primario.

MAXI - MAX4 Double

Tabla: Lecturas.

CVE String ’ 5

Ll - L4 Double

Indice primario.

Relacionadas por el campo CVE.

Y una base en intenso compuesta por el total de registros edificada con base a la

siguiente estructura:

motor(cve,ml ,m2,m3,m4).

lectura(cve,II ,12,13,14).

Tenemos:

a) Creación de la base persistente:

’ Listado 1 Creación de la base persistente:

’ Código: Visual Basic

’ Contenida en el CD anexo

Page 94: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

5. Programación de una BD1

Prívate Function makedbo

’ { Creación de la BD

Const Db-Path As String = “‘PATHIgeneal.mdb”Dim NewDb As DatabaseDim Ws As WorkspaceSet Ws = DBEngine. Workspaces(0)Dim DbOpciones As LongDbOpciones = db Versíon70 + db EncryptSet NewDb = Ws. CreateDatabase(DbPath, dbLangGeneral, DbOpciones)

y Definición de tablas

Dim NewTb As TableDefSet NewTb = NewDb. CreateTableDef(“motor”)

r Definición de los campos de la tabla

ReDim Campo(1 To 5) As FieldSet Campo(l) = NewTb. CreateField(“CVE”, dbText, 5)Set Campa(2) = NewTb. CreateField(“MAX1 “, dblong)Set Campa(3) = NewTb. CreateField(“MAX2”, dblong)Set Campo(#) = NewTb. CreateField(“MAX3”, dbLong)Set Campo(S) = NewTb. CreateField(“MAX#“, dbLong)

Dim i As ByteFori= 1 To5

NewTb. Fields. Append Campo(i)Next i

‘{Definición de índíce de la tabla

Dim Idxíd-ct As IndexDim Campoíd As FíeldSet Idxíd-ct = îvewTb. Createindex(‘% Vp)Idxid-ct. Primaty = TrueSet Campoid = Idxíd-ct. CreateFíeld(“C VE”)Idxid-ct. Fields. Append CampoidNewTb. Indexes. Append Idxíd-ctNewDb. TableDefs. Append NewTb

’ { Utilizando SQL

Dim SQLCreate As StríngSQLCreate = “CREATE TABLE LECTURAS (CVE TEXT (5), ”SQLCreate = SQLCreate + “Ll LONG, L2 LONG, u

Page 95: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

5. Programación de una BD1 87

SQLCreafe = SQLCreate + “f-3 LONG, L4 LONG )”NewDb. Execute (SQLCreate)

‘{ Creación de índice 4

SQLCreate = “CREATE INDEX Fol ON LECTURAS (CVE) WITff PRIMARY”NewDb. Execute (SQLCreate)

y Definición de las relaciones entre tablas empleando el objeto relación

Dim NewRel As RelationDim CampoRel As FieldSet NewRel = NewDb. CreateRelation(“motor-lecturas”)NewRel. Table = “motor’NewRel. ForeignTable = “lecturas”Set CampoRel= NewRel. CreateField(“CVE’3Campo Re/. ForeignName = “C VE”

YAgregar el campo a la relación y la relación a la DB

Ne wRel. Fields. Append Campo Re/NewDb. Relations.Append NewRel

YSe cierra la base de datos y se liberan los recursos

NewDb. CloseEnd Function

b) Creación de la base en intenso:

’ Listado 2 Creación de la base en intenso (Considerando un archivo plano)

’ Código Visual Basic.

’ Contenida en el CD anexo.

Private Function makebdioDim dbDatos As DatabaseDim tb, bt As RecordsetDim tipe, btipe As Stringfree = FreeFiieOpen “‘Path+file” For Output As ##reeSet db = OpenDatabase(“‘Path+file’3

y Path + file se sustituyen por los parámetros reales presentes7 En el sistema

Page 96: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

5. Programación de una BD1 88

Set tb = db. OpenRecordset(“motor’~Set bt = db. OpenRecordset(“lecturas’~tipe = “Objeto”btipe = “Lecturas”IAhile Not tb. EOF

A$ = tb!CVEB$ = tb!MAXlC$ = tb!MAX2D$ = tb!Mm3e$ = tb!MAX4Ab$ = Cbr(44) + C$ + Chr(44) + D$ + Chr(44) + e$f$ = tipe + Chr(40) + A$ + Chr(44) + B$ + Ab + Chr(41) + Chr(46)tistl.Addltem f$Print #free, f.$tb. MoveNext

Wendtb. CloseWhile Not bt. EOF

A$ = bt!CVEB$ = bt!L1C$ = bt’L2D$ = bt!L3e$ = bt!L4AbS = Chr(44) + C$ + Chr(44) + D$ + Chr(44) + e$f$ = btipe + Chr(40) + A$ + Chr(44) + B$ + Ab + Chr(41) + Chr(46)Print ##tiree, f$bt. MoveNext

Wendbt. Closedb. CloseClose #free

End Function

52.4 Edición de las Bases Persistentes y en Intenso.

En el desarrollo de los distintos prototipos, hemos incluido un vista global de las bases de

datos que recuperan tanto la estructura como el contenido de dicha, con el objetivo de

consolidar una aplicación totalmente transparente, el siguiente listado constituye su base

de operación ( En fragmentos de código, se hace referencia a los objetos contenidos en

el prototipo de ejemplo anexo al presente documento):

Page 97: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

5. Programación de una BD1

a) Edición de la base persistente.

89

‘Listado 3, Explorar la base persistente

‘Código: Visual Basic.4

O p t i o n ExplicitDim WorkDb As DatabaseDim td As TableDefDim DataBaselsOpen As BooleanDim CurrentTable As RecordsetDim TablelsOpen As BooleanDim source As String

Private Sub Form-LoadoDim td As TableDefSet WorkDb = DBEngine. Workspaces(0). OpenDatabase(“path+file”)

Da ta Basels Open = TrueFor Each td In WorkDb. TableDefs

If td.Attributes = 0 ThenIstOfTables. Addltem td. Name

End IfNext tdEnd Sub

Prívate Sub Form-Unload(CANCEL As lnteger)If DataBaselsOpen Then WorkDb. Close

End Sub

Private Sub LstOfFields-ClickoOn Resume NextDim td As TableDefDim Fld As FieldDim Thisltem As IntegerSet td = WorkDb. TableDefs(lstOfTables)If IstOfFields <> “” Then

Set Fld = td. Fields(lstOfFields)Select Case Fld. Type

Case dbByte: IblType. Caption = “Byte”Case dblnteger: IblType. Caption = “Integer”Case dbiong: IblType. Caption = “Long”Case db Text: IblType. Caption = “Text”Case dbsingle: IblType. Caption = “Single”Case db Boolean: IblType. Caption = “Boolean”Case dbDoub/e: IblType. Caption = “Double”

Page 98: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

5. Programación de una BD1 90

Case dbcurrency: IbiType. Caption = “Currency”Case dbDate: IbiType. Caption = “Date”Case db Time: IbiType. Caption = “Time”Case dbL0ngBinat-y: IbiType. Caption = ‘Binary”Case dbBinary: IbiType. Caption = ‘Binaty”Case dbMemo: IbiType. Caption = “Memo”Case Eise: IbiType. Caption = Fid. Type

E n d S e l e c tIbiSize. Caption = Fid. SizeIbiSample = “Ejemplo del Campo: ” & Fid. NameIstSample. Ciearif Val(txtNumberoSampies) > 0 Then

CurrentTabie. MoveFirstDo Until CurrentTabie. EOF Or Thisitem >= Vai(txtNumberoSampies)

if err = 0 Thenif Not isNuii(CurrentTabie(Fid. Name)) Then

IstSamp/e.Addltem CurrentTable(Fid. Name)if err <> 0 Then

Select Case errCase 3 167: istSampie.Additem “<Deieted>”Case Eise: istSampie.Addltem “<En=” & Trim$(Str$(err)) & ‘5”

End SeiectEnd if

EiseistSample.Addltem “~Nuli~”

End ifEise

Seiect Case errCase 3167: istSample.Additem “<Deieted>”Case Eise: istSampie.Additem “<En-=” & Trim$(Str$(err)) & “>”

End SeiectEnd IfCurrentTabie. MoveNextThisitem = Thisitem + 1

LoopEnd If

End ifEnd Sub

Private Sub IstOflndexes-Click()Dim Fid As FjeldDim idx As indexSet idx = td. Indexes(istOflndexes)

IstOfindexFieids. CiearFor Each Fid In idx. Fieids

IstOfindexFieids. Addltem Fid. NameNext Fid

Page 99: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

5. Programación de una BD1

LstOfFields-ClickEnd Sub

9 1

Privafe Sub /stOflables-C/ickODim Fld As Field -’Dim Idx As IndexIf TablelsOpen Then CurrentTable. CloseSet CurrentTable = WorkDb. OpenRecordset(fstOfTabies)TablelsOpen = TrueIstOfFields. ClearSet td = WorkDb. TableDefs(lstOfTables)For Each Fld In td. Fields

IstOfFields. Addltem Fld. NameNext FldIblType. Caption = MMIblSize. Caption = “”IstOflndexes. ClearFor Each Idx In td.Indexes

IstOflndexes. Addltem Idx. NameNext IdxIstSample. Clear

End Sub

Privafe Sub fxfDafaBaseName-KeyPress(KeyAscii As lnfeger)If KeyAscii = 13 Then cmdOpen_ Click

End Sub

b) Edición de la base en intenso

‘Listado 4, Editar la base en intenso

‘Código: Visual Basic.

Privafe Funcfion EdifBd@Dim count As IntegerDim free, ncar As Integerfree = FreeFileOpen ‘%:VinalVnfol. txt” For Input As ##freencar = LOF(free)Bditxt. Text = Input(ncar, free)Close free

End Funcfion

Page 100: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

5. Programación de una BD1 9 2

5.2.4.1 Representación gráfica de los datos

La representación gráfica de los datos contenidos en la base en intenso, constituyen una

forma sencilla de visualizar los resultados de los distintos procesos de &lección y filtrado,

previos al proceso de inferencia.

‘Listado 5, Representación gráfica en árbol

‘Código: Visual Basic.

Op tion ExplicitDim cont-mostrados As LongDim mjleft As LongDim mi-top As LongDim avance-leff As LongDím avance-top As LongDim media-caja As LongDim minimo_punto As LongDim cancelar-arbol As Boolean

Private Sub Aceptar-ClickOUnload Me

End SubPrivate Sub Btn-ArboleClickO

Dim i As LongDim X As LongDim cocl-arb() As StringDim desc-arb() As StringDim cod-padre-arb() As SttingBtn-Arbol. Visible = FalseAceptar. Visible = FalseselectFile0bligatoty CTE-C-PRG-ARBOL, “*,db”, CTE-TIPO-ARCHIVO-TEXTO,

“Abrir Fichero de arbol”, “&AbriJ’If Not cancelar-operacion-fichero-gti Then

On Error Resume Next s-a&-leer-arbol-GAIH cod-ah{), desc-arb(),cod-padre-arb()

cont-mostrados = 0mi-top = avance-topScreen. MousePointer = CTE-ARENAcancelar-arboi = TrueWhile cancelar-arbolcancelar-arbol = False

For i = 1 To UBound(cod-arb)

Page 101: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

5. Programación de una BD1 9 3

If cod-padre-arb(i) = “” Thenmjleff = avance-lefi f-expandir-nodo_GAIH i, cod-arb(), desc-arb(),

cod-padre-arb()Do Events

EncJ lfIf cancelar-arbol Then

Me. ClsDo Even@For X = 1 To cont-mostrados

Unload Etiqueta(X)Next XExit For

End IfNext i

WendScreen. MousePointer = CTE-DEFECTO

End IfEnd Sub

Private Sub Form-Load(‘)Me. KeyPreview = True

frm-uO-arbo.AutoRedraw = Falsefrm-uO-arbo. WindowState = CTE-MAX!MlZEDfrm-uO-arbo. Drawwidfh = 4avance-left = 1200 / 7 5avance-top = 300 / 15media-caja = 120 / 15mirimo-punto = 4

End SubFunction f-expandir-nodo-GAlH(nodo As Long, cod-arb() As String, desc-arb0As String, cod_padre-arb0 As Stríng) As Boolean

Dim viejo-/etI As LongDim numero-hijos As Longs-mostrar-etigueta_GAIH nodo, desc-arb() viejo-lei = mi-Iel? numero-hijos =

f-mostrar-hijos-GAIH(nodo, cod-arb(), desc-arb(), cod_padre-arb())mi-/et? = vieio_iel?If numero-hijos > 0 Then

f-expandir-nodo-GAIH = TrueElse

f-expandir-nodo-GAIH = FalseEnd If

End FunctionPrivate Sub s-mostrar-etiqueta-GAIH(nodo As Long, desc-arb0 As String)

cont-mostrados = cont-mostrados + 1Load Etiqueta(cont-mostrados)Etiqueta(cont-mostrados).leff = mi_lef? + desviacion-ejes-X

Etiqueta(cont-mostrados). top = mi-top + desviacion-ejes- Y

Page 102: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

5. Programación de una BD1 94

Etiqueta(cont-mostrados). Visible = True Etiqueta(confmostrados). Caption =descTarb(nodo)End SubFunction f-mostrar-hijos-GAlH(nodo As Long, cod-arbo As String, desc-arbo AsString, cod_padre-arbo As String) As Long -e

Dim i As LongDim primer-hijo As BooleanDim cont-hijos As LongDim pta-x As LongDim ptoy As LongDim ha-habido-hijos As Booleanprimer-hijo = Truecont-hijos = 0for i = 1 To UBound(cod-arb)

lf cod-padre-arb(i) = cod-arb(nodo) ThenIf primer-hijo Then

cont-hijos = 1mi-íet? = mjlei? + avance-leftMe. Line (mjleff - avance-let? + 20, mi-top + media-caja)-(mi-/et?, mitop +

media-caja), 0Else

Me. Line (miTleR - avance-lei / 4, mi-top + media-caja)-(mi-le& mi-top +media-caja), 0

ptoJ = mi-top + media-caja - minimo-puntopta-x = mjleft - avance-left / 4While Point(pto-x, ptoq/) <> 0

PSet (pta-x, pto_yl, 0ptoq/ = pto_y - minimo_puntoIf ptoJ < 0 Then

avance-left = avance-Iel? * 2cancelar-atbol = TrueExit Function

End IfWendPSet (pta-x, ptoq/), 0cont-hijos = cont-hijos + 1

End Ifha-habido-hijos = f-expandir-nodo-GAIH(i, cod-arb(), descTarb(),

cod_padre-arb())If Not ha-habido-hijos Then

mi-top = mi-top + avance-topEnd Ifprimer-hijo = False

End IfNext if-mostrar-hijos_GAiH = co&hijos

End Function

Page 103: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

5. Programación de una BD1 95

PNvate Sub s-aut-leer-arbol-GAIH(cod-arb(J As String, desc-arb0 As String,cod_padre-arbo As String)On Error GoTo abrir-errorDim linea As StringDim indice As Longprincipio:

Screen.MousePointer = CTE-ARENAOpen nombre-fichero-ge For Input As #CTETNF_63TARB

ReDim cod-arb(1 To 1) As StnngReDim desc-arb(1 To 1) As StringReDim cod_padre-arb(1 To 1) As Stringindice = 0While Not EOF(CTETNFT63-ARB)

linea = readLine@noreComment(CTE-NF-63-ARB)If Len(linea) > 0 Then

indice = indice + 1ReDim Preserve cod-arb(1 To indice) As StringReDim Preserve desc-arb(1 To indice) As StringReDim Preserve cod_padreTarb(l To indice) As Stringcod-arb(indice) = noQuotes(extFie/d(finea, 1, CTE-SEP,

CTE-QUOTEDTFIELDS, CTETNOTZTSEP-AS-ONE))desc-arb(indice) = noQuotes(extField(linea, 2, CTE-SEP,

CTE-QUOTED-FIELDS, CTE-NO-2-SEP-AS-ONE))cod_padre-arb(indice) = noQuotes(extField(linea, 3, CTE-SEP;

CTE-QUOTED-FIELDS, CTETNO-ZTSEP-AS-ONE))End If

WendClose #CTE_NF_63_ARBDoEventsScreen. MousePointer = CTETDEFECTOExit Sub

abrir_error:s-error-ger CTE-ERROR-GRAVE,

Close #CTE-NF-63-ARBDoEventsScreen. MousePointer = CTETDEFECTO

If Not automatice-gcf ThenselectFite0bligatot-y CTE-CTPRG-ARBOL, ““. txt”, CTETTIPO~ARCHIVO~TEXTO,

“Abrir Fichero de árbol”, “&Abrir”CTE~SELECCIONAR~F/CHERO~OBL/GATORIO~OP~FICH

If cancelar-operacionTfero_gfí Then Exit SubEnd If

Go To principioEnd Sub

Page 104: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

5. Programación de una BD1 96

5.3 Archivos binarios

En el--desarrollo de una base de datos inteligente, es común el uso de datos no

persistentes, tratados como archivos binarios que se crean y destruyen según sea preciso

en el desarrollo de la aplicación, generalmente concentran datos en estado intermedio

útiles para procesos particulares de inferencia pero no necesarios de forma persistente.

Aún cuando la mayoría del Hardware actual está provisto de RAM suficiente para tratar

grandes’ grupos de datos mediante arreglos, éstos generan pérdida de eficiencia en un

contexto general, por ello, la mejor opción es el uso de archivos binarios .temporales,

grabados en disco a cuyos datos se accede cuando es necesario, consideremos el

siguiente ejemplo, con las características básicas(buscar, eliminar, editar, agregar):

Sean R(Tl,...,T”), donde:

R' (LLT3,T&) con:

TI (CVE), T2(MUESTRA), T3 (FECHA) T4(VALOR), T5 (CONTADOR).

Obtenida por los módulos ( En fragmentos de código, se hace referencia a

objetos[lista-muestra, frmBinary] contenidos en el prototipo de ejemplo anexo al

presente documento):

‘Listado 6 Datos binarios

‘Código: Visual Basic.

Binary DB1 . bas

Public DatabasePath As StringPublic BackupDatabasePath As StringPublic IndexPath As StringPublic ditty As BooleanPublic cualq-camb As BooleanPublic Const DOT = “n”Public Const Marca-en = “@Marca-en@”Private Const DATABASE-RECORD-LIMIT = 65000

Page 105: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

5. Programación de una BD1 97

Pnvate Const COLUMNTWIDTH = 20Private Const DATABASE-NAME = ‘Bintmp. tmp”Ptivate Const INDU(-NAME = “Bintmp.idx”Private Const BACKUPTDATABASETNAME = “Bintmp.mbO”Private Const BACKUPTINDEXTNAME = “Bintmp.idO”Private Const START-BYTETPART = 1 --Private Const LENTBYTETPART = 2Private Const FROMTPART = 3Pnvate Const SUBJECTTPART = 4Private Const DATE-PART = 5Private Const TO-PART = 6Private Const INDE.XTPART = 7

Public Sub AddRecordOOn Error Resume Next

cualq-camb = TruefrmRec.txtDate = Nowrecnext& = CLng( Val(Readlndex(“RecNext’~))frmRec.txtlndex = recnext& & “”frmRec.Show ?BinatyMgmt. AddRecordFinishUnload frmRec

On Error GoTo 0On Error Resume NextEnd Sub

Prívate Sub AddRecordFínish()On Error Resume Next

Dim message As Stringmessage = Trim(frmRec. txtMessage)

Open DatabasePath For Binar-y As #7byte-next = Readlndex(“ByteNext”)rec-next = Readlndex(“RecNext’7Put #ti, byte-next, message

Close #llen-bytes = Len(message) L

v$ = byte-next & DOT & len-bytes & DOT ¿? Trim(frmRec.txtFrom) & DOT &Ttim(frmRec.txtSubject) & DOT & Tnm(frmRec. txtDate) & DOT & Trim(frmRec. txtTo) &DOT & “HECHO”

Wntelndex “R” & rec-next, v$byte-next = byte-next + len-bytesWrtelndex “ByteNext”, byte-nextrec-next = rec-next + 7Wntelndex “RecNext”, rec-nextReadAllRecords

On Error GoTo 0On Error Resume Next

Page 106: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

5. Programación de una BD1

End Sub

98

Public Sub EdíiRecordOOn Error Resume Next

If frmBinary./ista~muestra. Listlndex = 0 Then Exit Subv$ = frmBinary. lista-muestra. List(frm8inarylista~muestra. Listlndex)myindex = ParseTab(v$, 5): v$ = “”frmRec. txtlndex =. myindexv$ = Readlndex(“R” & myindex)Sta-byte& = CLng(Val(Parse(v$, START-BYTE-PART)))len-bytes& = CLng(Val(Parse(v$, LEN-BYTE-PART)))Dim filebuffer As Stríngfilebuffer = String(len-bytes&, 0)Open DatabasePath for Binary As #f~l@##, Sta-byte&, filebuffer

frmRec.txtDate = Parse(v$, DATE-PART)frmRec.txtTo = Parse(v$, TO-PART)frmRec.txtFrom = Parse(v$, FROM-PART)frmRec.txtSubject = Parse(v$, SUBJECT-PART)frm Rec. txtMessage = Mid$(fSlebuffer, 1, len-bytes&)frmRec. Sho w 1If dkty = True Then

BinatyMgmt. EditRecordFinishdírty = False

End IfUnload frmRec

On Error GoTo 0On Error Resume NextEnd Sub

Private Sub EditRecordFinishOOn Error Resume Next

cualq-camb = TrueDim message As Stringmessage = Ttim(frmRec. txthllessage)

‘{Marca-en el registro actual

myindex = Trim(frmRec. txtlndex)readin$ = Readlndex(“R” ¿? CLng(Val(myindex)))readin$ = Left(readin$, Len(readin$) - 2)readin$ = readín$ & “@Marca-en@”Writelndex “R” & CLng( Val(myindex)), readin$

YEscribir un nuevo registro en la base

Page 107: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

5. Programación de una BD1 99

byte-next = Readlndex(“5yteNext“)rec-next = Readlndex(“RecNext’7Put #7, byte-next, message

Close #?2

YEn final ( index)

len-bytes = Len(pessage)v$ = byfe_next & DOT & len-bytes & DOT & Trim(frmRec. txtfrom) & DOT &

Ttim(frmRec.txtSubject) & DOT & Tt-im(frmRec. txtDate) & DOT & Trim(frmRec. txtTo) &DOT & “HECHO“

Writelndex ‘R” & rec-next, v$byte-next = byte-next + len-bytesWritelndex “Byte Next’: byte-nextrec-next = rec-next + 4Wi-itelndex “RecNext”, rec-next

End Sub

Public Sub DeleteRecordOOn Error Resume Next

cualq-camb = True

‘{Marca-en registro actual

lf frmBinaty.lista~muestra. Listlndex = 0 Then Exit Subv$ = frm5inat-y. lista-muestra. List(frmBinaty. lista-muestra. Listlndex)myindex = ParseTab(v$, 5): v$ = “”readin$ = Readlndex(“R” ¿? CLng(Val(myindex)))readin$ = Lefi(readin$, Len(readin$) - 2)readin$ = readin$ & “@Marca-en@”Writelndex ‘IR” & CLng(Val(myindex)), readin$

End Sub

Public Sub ReadAIIRecordsOOn Error Resume Nextfrm5inai-y. lista-muestra. ClearBuildHeaderListv$ = “dummytext”Do

k& = k& + 1v$ = Readlndex(“R” & k&)lfv$= “” Then Exit DoIf Right$(v$, Len(Marca-en)) <> Marca-en Then

frmBinary.llista-muestra. Addltem _Pad(Parse(v$, FROM-PART)) ¿? vbTab &-

Page 108: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

5. Progmyción de una BD1 1 0 0

Pad(Parse(v$, SUBJECTJ4RT)) & VbTab & _Pad(Parse(v$, DATE-PART)) & vbTab & _Pad(Parse(v$, TO-PART)) & vbTab & _k&

End IfLoop Until v$ = “”On Error GoTo 0On Error Resume Next

End Sub

Public Sub OpenDafabaseOOn Error Resume NextDatabasePath = App. PathIf Right$(DatabasePath, 1) <> 7” Then DatabasePath = DatabasePath + ‘1”DatabasePath = DatabasePath + DA TABASE-NAMEIndexPath = App. PathIf Right$(lndexPath, 1) C> ‘7” Then IndexPath = IndexPath + ‘7”IndexPath = IndexPath + INDEX-NAME

If Not FileExists(DatabasePath) Then

‘{crear archivo

Open DatabasePath For Output As #IClose #lOpen IndexPath For Output As #l

Print #l, “flndex]”Print #l, “RecNext = 1”Ptint #7, “ByteNext = 1”

Close #7End IfOn Error GoTo 0On Error Resume Next

End Sub

Privafe Function FileExists(ByVal f$) As BooleanOn Error Resume NextSetAttr f$, vbNormalIf Err Then

FileExisfs = FalseElse

FileExists = TrueEnd IfOn Error GoTo 0On Error Resume Next

End Funcfíon

Page 109: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

5. Programación de una BD1 1 0 1

Private Function Pad(8yVal incoming As String) As StringOn Error Resume NextSelect Case Len(incoming)

Case Is < COLUMN-WIDTHincoming = incoming & Space(COLUMNT WIDTH - Len(incoming))

Case Is > COLUMNTWIDTHincoming = Left$(incoming, COLUMNTWIDTH)

End SelectPad = incomingOn Error GoTo 0On Error Resume Next

End Function

Private Sub BuildHeaderListoOn Error Resume NextDim cofheaders(5) As Stringcolheaders( 1) = “C VE”colheaders(2) = “MUESTRA”colheaders(3) = “FECHA”colheaders(4) = “VALOR”colheaders(5) = “CONTADOR”Fork%=ITo5

header-row = header-row & Pad(colheaders(k%)) & ” ” & vb TabNext k%frmBinary.listaTmuestra. Addltem header-ro wOn Error GoTo 0On Error Resume Next

End Sub

Public Sub CompactDatabase()On Error Resume Nextreadin = 1readout = 2BackupDatabasePath = App. PathIf Right$(BackupDatabasePath, 1) <z= ‘1” ThenBackupDatabasePath = BackupDatabasePath & ‘7”

*

BackupDatabasePath = BackupDatabasePath + BACKUPTDATABASE-NAMEKill BackupDatabasePathFileCopy DatabasePath, BackupDatabasePathKill DatabasePathDim filebuffer As Stringbyte_next& = 1Open BackupDatabasePath For Binary As #readinOpen DatabasePath For Binary As #readout

For k& = 1 To DATABASETRECORDTLIMITv$ = Readlndex(‘R” & k&)lfv$= “” Then Exit For

Page 110: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

5. Programación de una BD1 1 0 2

if Right$(v$, Len(MarcaTen)) <B Marca-en Thenstart_byte& = CLng(Vai(Parse(v$, START-BYTE-PART)))len-bytes& = CLng(Vai(Parse(v$, LEN-BYTE-PART)))ti/ebuffer = String(ienTbytes&, 0)Get ##readin, statf-byte&, fiiebufferoutgoing$ = Mid$(tiiebuffer, 1, len-bytes&)Put #readout, byte_next&, outgoing$v$ = byte-next& & DOT & Parse(v$, LEN-BYTE-PART) & DOT & Parse(v$,

FROM-PART) & DOT & Parse(v$, SUBJECT-PART) & DOT & Parse(v$, DATE-PART)& DOT & Parse(v$, TOTPART) & DOT & “HECHO”

Wnteindex “R” & k&, v$byte_next& = byte-next& + len-bytes&

EiseWtitelndex “R” & k&, “@Marca-en@”

EndIfNext

if byteTnext& = 0 Then byte-next& = 1Writeindex “ByteNext”, byte-next&Wnteindex “RecNext“, k&Ciose #readoutCiose #readinKiii BackupDatabasePath

On Error GoTo 0On Error Resume NextEnd Sub

BinaryDB2. bas

Private Const sizer = 255 * 5Prívate Declare Function GetPrivateProfiieStnng Lib “kernei32” Alias“GetPrivateProfiteStringA” (ByVai IpAppiicationName As String, t3yVai IpKeyName AsAny, ByVai IpDefauit As String, By Val IpReturnedString As String, ByVai nSize As Long,ByVai IpFileName As Stting) As LongPrivate Declare Function WritePrivateProfiieStnng Lib “kernei32” Alias“WntePrivateProt7leStringA” (ByVai IpAppiicationName As String, ByVal IpKeyName AsAny, ByVai IpStnng As Any, ByVai IpFiieName As String) As Long

Public Function Readlndex(ByVal IstrKey As String) As StringOn Error Resume NextDim IfixedstrRetVaiue As String * sizerDim IstrRetVaiue As StringDim IintJunk As integerDim IstrSection As String

IstrSection = “‘Index”IfixedstrRet Value = String(sizer, ” ‘7

Page 111: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

5. Programación de una BD1 1 0 3

IintJunk = GetPrivateProfileStríng(lstrSection, IstrKey, ” “, IfixedstrRet Value, sizer,IndexPath)

IsfrRet Value = Trim(/fixedstrRetValue)IstrRetValue = Leff(lstrRetValue, Len(lstrRetValue) - 1)Readlndex = IstrRet Value

On Error Go70 0On Error Resume N-tEnd Function

Public Sub Writelndex(ByVal IstrKey As String, ByVal IstrValue As String)On Error Resume NextDim IstrSection As StringDim IintJunk As Integer

IstrSection = “Index”IstrValue = Ttim(lstrValue)/intJunk = WritePrivafeProfi/eString(/strSecfion, IstrKey, IstrValue, IndexPath)

On Error Go70 0On Error Resume Next

End Sub

BinaryOB3. bas

Publíc Declare Function SendMessage Lib “user32” Alias “SendMessageA ”(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, IParam AsLong) As Long

Public Sub IniciaBinaryOOn Error Resume Next

BinaryMgmt. OpenDatabasefrmBinary. Show

On Error Go70 0On Error Resume NextEnd Sub

BinaryDB4. bas

Publk Function Parse(ByVal T$, v%) As StringOn Error Resume Next

Const LIMITE = ‘W’

7$ = LIMI7E + Trim(T$) + LIMITE

Page 112: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

5. Programación de una BD1 1 0 4

XI% = LenPlace% = 0For Counterl% = 1 10 XI%

CurrentChar$ = Mid$(T.$, Counterl%, 1)If CurrentChar$ = LIMITE Then Place% = Place% + 1If Place% = v% Therr

xStart% = Counterl% + 1Exit For

E n d I fNextFor CounterZ% = xStart% To XI%

CurrentChar$ = Mid$(T$, Counter2%, 1)If CurrentChar$ = LIMITE Then Place% = Place% + 1If Place% = v% + 1 Then

xStop% = CountetZ% - xStart%Exit For

End IfNextlf xStop% = 0 Then

Parse = Trim(Mid$(T$, xStatt%))If InStr(Parse, LIMITE) Then Parse = “”

ElseParse = Trim(Mid$(T$, xStart%, xStop%))If InStr(Parse, LIMITE) Then Parse = “”

End IfOn Error GoTo 0On Error Resume Next

End Function

Public Function ParseTab(5yVal T$, v%) As StringOn Error Resume Next

Const LIMITE = vbTabT$ = LIMITE + Trim(T$) + LIMITE

XI% = LenPlace% = 0For Counter?% = 7 To XI%

CurrentChar$ = Mid$(T$, Counterl%, 1)If CurrentChar$ = LIMITE Then Place% = Place% + 1If Place% = v% Then

xStart% = Counterl% + 1Exit For

End IfNextFor CounteQ% = xStart% To XI%

CurrentChar.$ = Mid$(T$, Counter2%, 1)If CurrentChar$ = LIMITE Then Place% = Place% + 1If Place% = v% + 1 Then

Page 113: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

\

5. Programación de una BD1 1 0 5

xStop% = Counter2% - xStart%Exit For

End IfNextIf xStop% = 0 Then

ParseTab = Ttim(Mid$(T$, xStati%))If InStr(ParseTab, LIMITE) Then ParseTab = “”

ElseParseTab = Triin(Mid$(T$, xStart%, xStop%))If InStr(ParseTab, LIMITE) Then ParseTab = “”

End IfOn Error GoTo 0On Error Resume Next

End Function

5.4 Filtrado y preproceso

En los ejemplos anteriores, se han utilizado métodos simples, que no precisan de filtrado o

preproceso en la construcción de la base de datos en intenso; en los siguientes

fragmentos de código se concentran algunos ejemplos en los que interviene el tratamiento

de la incertidumbre para la clasificación y selección de los datos objetivo, sólo

presentamos los fragmentos centrales.

Ejemplos documentados de su uso pueden consultarse en el CD anexo:

l Fuzzy DBExpert.

l Fuzzy DbRelation.

5.4.1 Difusor simple

‘Listado 7 Difusor simple

‘Código: Visual Basic.

Private Sub fuzzyoDim dbDatos As Database

Page 114: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

5. Programación de una BD1 106

Dim R As Recordsetfree = FreeFileSet dblìatos = OpenDatabase(‘path+file3Set R = DB. OpenRecordset(“lectura~”Open “‘PA TliIbase.int” For Output As #freeR. MoveFirstWhile Not R.EOF

a$ = R!idb$ = R!prioridadc$ = R!lecturaCall difusor(a$, b$, c$)R. MoveNext

WendR. Closedb Datos. CloseClose #free

End Sub

Prívate Function difusor(T1 As String, Ti? As Double, T3 As Double)

Dim free as integerDim pertenece, et As StringDim li, Is as Doubleet = “objeto{”li = 0.3ls = 0.8

If T2 c= li Thenpertenece = ‘Bajo”

End IfIf T2 >= Is Thenpertenece = “Urgente”Elsepertenece = ‘Alto”End Ifa$ = Tlb$ = pertenecec$ = T3f$ = et + T1 + “, ” +pertenece+“, “+T3+‘3. ”Print #Hee, f$

End Function

Page 115: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

5. Programación de una BD1 107

54.2 Difusor con múltiples condiciones

El siguiente listado, es el eje operativo del ejemplo Fuzzy DBExpert. su implementación

bajo la plataforma de Visual Basic se detalla en los módulos asociados al proyecto. El

proceso mediante el cual se comunican los objetos en las llamadas a funciones y los

valores que regresan están definidos en las clases asociadas al proyecto.

‘Listado 8 Difusor con múltiples condiciones

‘Código: Visual Basic

vmplementar métodos para calcular el grado de pertenenciayde un valor determinado a los conjuntos borrosos de las reglas.

Publíc Function medioConservador(num As Double) As Doubleif(num <= 20) Thenreturn 0;else if(num > 20 && num c 40) Thenreturn (nunV20. - 1.);else if(num == 40) Thenreturn 1;else if(num > 40 && num < 60) Thenreturn ((-num)/20. +3.);Elsereturn 0;End If

End Function

Public Function medioModerado( num As Double)As Doubleif(num c= 20) Thenreturn 0;else if(num > 20 && num < 40) Thenreturn (numD0. - 1.);else if(num == 40) Thenreturn 1;else if(num > 40 &¿? num < 60) Thenreturn ((-num)LZO. +3.);Elsereturn 0;End lf

End Function

Page 116: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

5. Programación de una BD1 108

P ublic Function pocoArriesgado(num As Double) As Doubleif(num < 10) Thenreturn ((-0.1) *num+ 1.);Elsereturn 0; iEnd If

End Function

Public Function medialnversion( num, As Double) As Doubleif(num <= 25) Thenreturn 0;else if(num > 25 &¿? num < 50) Thenreturn (numLZ.- 1.);eke if(num == 50) Thenreturn 1;else if(num > 50 && num < 75) Thenreturn ((-num)/25. +3.);Ekereturn 0;End If

End Function

5.5 Manipulación de la base de datos en intenso

Dependiendo del proceso de inferencia utilizado (Funciones del lenguaje anfitrión o un

motor de inferencia periférico), la manipulación de la bases en intenso sera:

a)La base de datos en intenso esta constituida por un archivo temporal plano.

Dicha base, se crea y destruye según sea preciso en las operaciones genkales del

sistema, las operaciones sobre ésta las efectúa un archivo binario (file.xpl) compilado en

Prolog. La temporalidad de este archivo obedece a que el motor debe procesar bases de

conocimiento distintas en el marco de procesos de inferencia determinados.

Las bases en intenso se manipulan conforme a un conjunto determinado de reglas y

funciones que constituyen el núcleo del motor de inferencia, en dichas se deberán

concentrar la totalidad de los procesos de inferencia posibles para el total de bases

Page 117: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

5. Programación de una BD1 109

temporales involucradas. En las siguientes líneas definiremos las principales funciones

con que opera el motor de inferencia de Prolog sobre la base, para atender los

requerimientos del sistema, evidentemente el estudio exhaustivo del lenguaje Prolog

rebasa el propósito de dsta tesis, por lo que nos ocuparemos exclusivamente de los temas

directamente relacionados con nuestro estudio:

1. Representación del conocimiento en la base en intenso: Redes semánticas.

2. Métodos de resolución: Top Dow, Bottom Up.

3. Técnicas de búsqueda: Depth First, Breadth First.

4. Modelos heurísticos: Hipotético, Deductivo.

1. Representación del conocimiento en la base en intenso: Redes semánticas.

Quizás lo más simple de los sistemas de representación proporcional es la presunción de

que los conceptos están debidamente representados como un conjunto de atributos y

rasgos semánticos. Esta forma de representación es una aplicación muy natural del

lenguaje de la teoría de conjuntos para el problema de como caracterizar la naturaleza de

los conceptos. En este punto de vista han existido variaciones en el estudio de la memoria

semántica y también sobre presunciones relacionadas con la descripción de la

representación del conocimiento. De acuerdo con estos puntos de vista, los conceptos

están representados por un aumentado conjunto de rasgos. De esta forma los conceptos

pueden permanecer en un conjunto de relaciones familiares. Dos conceptos pueden estar:

l Desligados (no tener atributos en común);

l Sobrepuestos (tener algunos pero no todos los atributos en común);

l Anidados (todos los atributos de un concepto están incluidos en el otro);

l Ser idénticos (estar especificados en forma exacta por el mismo conjunto de rasgos).

Los rasgos pueden tener pesos asociados y relacionados con ellos que representan una

prominencia variada y características importantes para los conceptos en cuestión. Como

Page 118: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

5. Programación de una BD1 110

una especie de revisión de todas las aplicaciones de estas ideas expuestas aquí, elegimos

para describir “la comparación del rasgo” el modelo propuesto por Smith .

2. Formas o Atributos Semánticos

La representación semántica es considerada la más natural, acreditan la relación de los

atributos con los elementos por medio de estamentos naturales. Veamos un ejemplo que

describe lo más completo posible este tipo de representación:

Un animal come alimento, respira aire, tiene masa y está formado por miembros; ahora

una persona es del tipo animal, el cual “hereda” todas las características antes descritas

del animal. Así también tenemos la posibilidad de detallar más sus cualidades como que

tiene en sus partes piernas y brazos.

La representación semántica denomina a los símbolos como “nodos” o nudos de una

malla de conceptos jerarquizados y bien establecidos con sus relaciones. La red descrita

en la figura siguiente determinada con lazos constituidos en (a,R,b), el cual “al’ y “b” son

los nodos que permanecen enlazados a través de la relación “R” , las flechas muestran el

sentido de la relación, sin poseer un carácter recíproco.

Page 119: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

5. Programación de una BD1

1

! 1.aire masa

esia con-leformado por

1 imiembros alimentos

es del tipo

puede *volar

del formado por

tipo ph!nas ’alas

/

/es del tipo

IIPEAun esta

representante formado porde

1 1piernas brazos

Persona X

color

1amaril lo

representantede

Ave X

Fig. 14 Representación semántica

Para implementar la semántica expresada en la figura anterior, basta con definir la

estructura que genera la base donde se describen los hechos. Las siguientes cláusulas

proporcionan esta información:

r(‘ANIMAL”,respira,aire).

r(“ANIMAL”,tiene, masa).

r(“ANIMAL”,esta~formado_por,miembros).

r(“ANIMAL”,come,alimento).

r(“PAJARO”,es-deltipo,“ANIMAL”).

r(“PAJARO”,puede,volar).

Page 120: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

5. Programación de una BD1 1 1 2

r(“PAJARO”,esta-formado_por,plumas).

r(“PAJARO”,esta-formado-por,alas).

r(“CANARIO”,es~del~tipo,“PAJARO”). -*

r(“CANARIO”,color,amarillo).

r(“Ave X “,un-representante-de,“CANARlO”).

r(“PERSONA”,es~del~tipo,“ANIMAL”).

r(“PERSONA”,esta-formadopor,piernas).

r(“PERSONA”,esta-formado_por,brazos).

r(“Persona X”,un-representante-de,“PERSONA”).

Podemos observar que la cláusula r( Elemento-l ,Lazo, Elemento-2) relaciona por medio

de “Lazo” el “elemento-l” con el “elemento-2”, sólo falta un sistema que haga uso de ella,

y exprese el conocimiento que la red determina por medio de la acción. Por ejemplo una

expresión clausal que sea capaz de proporcionar en una lista las características que

hereda un elemento de la clase.

La noción básica de esto es que el conocimiento puede ser representado por un tipo de

estructura gráfica directa y nivelada en la cual el elemento estructural básico es un

conjunto de nodos interrelacionados mediante relaciones. Los nodos representan

conceptos en la memoria. Una relación es una asociación entre los conjuntos de los

nodos. Las relaciones son directas y niveladas. Desde este punto de vista el “significado”

de un concepto (representado por un nodo) está dado por el patrón de relaciones entre el

cual éste participa. Las redes semánticas se caracterizan por el tratamiento de konceptos,

representados por nodos, y relaciones entre ellos, representadas por arcos que ligan a los

nodos entre sí. Básicamente los nodos pueden ser de dos tipos:

l Individuales, representan descripciones o afirmaciones referentes a una instancia

individual de un objeto.

l Genéricos, representan referentes de una clase o categoría de objetos.

Page 121: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

5. Programación de una BD1 1 1 3

Los conceptos están previamente ordenados en una taxonomía, y existen los arcos

especiales “es un” y “es un tipo de”. El primero liga un nodo individual con uno genérico y

expresa que un individuo es de cierta clase, y el segundo liga dos nodos genéricos entre

sí y expresa que un concepto o tipo es un subtipo de otro. Es importante destacar que a

diferencia del formalismo de la lógica, para las redes semánticas no hay métodos formales

y generales de deducción. El significado asignado a una red lo establecen solamente los

procedimientos que manipulan la red.

3. Métodos de resolución: Top Down, Bottom Up.

Los sistemas de resolución de problemas en IA, están basados en la formulación de la

solución del problema como una búsqueda. Se comienza en un estado inicial y la meta es

llegar a un estado final u objetivo, el proceso de evaluación de las alternativas para llegar

desde el estado inicial al objetivo se designa como búsqueda y el conjunto de pasos

posibles para llegar desde un estado inicial al objetivo, es llamado el espacio de

búsqueda. Los métodos de resolución se derivan del método de resolución de Robinson y

vienen a disminuir su complejidad en la búsqueda, son métodos de inferencia que orientan

las búsquedas y las técnicas de éstas. Representan las distintas formas de explorar la

información representada por un sistema inteligente.

* Método TOP DOWN

En el método Top Down se comienza tomando la cláusula objetivo o conclusión y se

razona de tal forma de ir a través de las aserciones e implicaciones, derivando nuevos

objetivos a partir de los objetivos anteriores hasta que todos los objetivos derivados, son

resueltos por las aserciones originales.

El encadenamiento hacia atrás “Top Down”, tiene la particularidad de ir generando con las

cláusulas que va tomando, una estructura de árbol. Una refutación es un camino en el

espacio de búsqueda, en este caso una rama del árbol, que comienza con el objetivo y

termina con la cláusula vacía.

Page 122: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

5 Programación de una BD1 114

b) Método BOTTOM UP

El encadenamiento hacia adelante “Bottom Up”, se comienza con las cláusulas que son

aserciones o hipótesis. Para ello se usan las aserciones e implicaciones que permitan

derivar nuevas aserciones, se termina cuando eventualmente la cláusula original o

hipótesis es resultado de las aserciones derivadas.

Una refutación en este método comienza con las aserciones de las cláusulas originales,

se utilizan las aserciones para obtener nuevas aserciones a partir de las ya generadas, se

termina cuando se deriva una que explícitamente contradiga el objetivo. Este método de

resolución genera una estructura más compleja que la generada por “Top Down”, por lo

cual la búsqueda es más difícil.

5.4 Programación Lógica Paralela (Motor Relacional- Motor de Inferencia)

Como podemos apreciar en los ejemplos citados con anterioridad, la base en intenso es,

generalmente, una estructura simple, donde se evalúa a sus miembros en función de su

peso o áridad; resulta evidente que el repositorio de reglas constituye el eje fundamental

del proceso de inferencia. Este repositorio, para los efectos de nuestro estudio, se

concentra en funciones ad hoc desarrolladas en el lenguaje anfitrión (Visual Basic) y en

archivos binarios (.xpl) compilados por y para el motor de inferencia huésped Amzi4

Prolog.

En el primero de los casos se utilizan bloques de sentencias IF THEN ELSE inscritos en

ciclos predefinidos (p.ej. fuzzy) y los datos en intenso provienen de objetos Recordset,

propios del programa de aplicación. En el segundo, el motor de inferencia consulta un

repositorio de reglas predefinido y opera sobre archivos temporales (Base de datos en

intenso).

Page 123: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

5 Programación de una BD1 ll5

J Programa

Administración - - - - - 1

de Bases de

I

I

L- --m--J\ /

Fig. 15. Diagrama General de la Arquitectura Propuesta.

En las siguientes líneas nos ocuparemos ponderantemente de este caso; es

conveniente destacar que los “arcos” o relaciones descritas con anterioridad, serán

sustituidos por expresiones capaces de derivar relaciones semánticas complejas

(herencia de elementos de clase), no definidas explícitamente en la base en intenso por

ejemplo, dada una estructura de base simple (toda persona tiene un nombre y un sexo):

persona(nombre,sexo).

donde:

persona( Carlos, M),

persona(Sofía,F),

Aplicando la expresión:

hombre:- persona(x,M).

mujer:-(persona(x,F).

Page 124: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

5 Programación de una BD1 116

Tenemos:

I

tiene,

tiene

u nrepresentante

Hombre

d e

i

1

nombre

u nrepresentante

d e

4 MujerSEXO

t

Por atributo M Por atributo F

Carlos

De esta forma, en el repositorio de reglas (logic.xpl) podemos concentrar múltiples

relaciones semánticas complejas, para atacar el conjunto de necesidades del sistema,

así como integrar restricciones de integridad a la base en intenso.

El motor de inferencia opera sobre una base de datos en intenso en función de un

repositorio de reglas dado; todas las acciones del motor responden a eventos

predefínidos que se disparan desde la aplicación, en este proceso - como se ha descrito

anteriormente - interviene una secuencia ordenada de pasos, desde la selección de los

datos objetivo hasta los productos del proceso de inferencia. Así, el flujo y

procesamiento de datos está regulado por el programa de aplicación, éste genera la

base en intenso, inicializa el motor de inferencia y a través de él consulta la base citada.

Page 125: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

5 Programación de una BD1 117

Todas los ejemplos en que interviene el motor de Proiog tienen la misma base, así que

sólo nos ocuparemos de describir el proceso de ‘búsqueda funcional’ tomando como

referencia uno de los ejemplos clásicos de la Programación Lógica, ocupándonos de sus

aspectos principales;

a) La Base Persistente.

Compuesta por la tabla: Familia, donde

Campo Tipo Tamaño

Nombre String

Sexo

Padre

Madre

Pareja 1 Soltero

String

String

String

String

b) La base en intenso.

Compuesta por la estructura:

person(nombre,genero,padre,madre,pareja).

c) El objetivo de la inferencia.

“Descubrir relaciones genealógicas entre los miembros de la base en intenso (Madre,

Padre, Tíos, Tías, Abuelos, Abuelas, Primos, Primas, etc.).”

Page 126: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

SRogramación de una BD1 1 1 8

d) El repositorio de reglas.

El repositorio de reglas está escrito en Lenguaje Amzi4! Prolog, compilado en el

archivo binario “arbol.xpl”, el siguiente es el listado de su código:

% Listado 9 arbol.pro% Código: Prolog% Objetivo del proceso de inferencia:

re/ations([padres, esposa, esposo, ancestros, desendientes, hermanos, hermana,hermano, tio, tia, madre, padre, hijos, hijo, hija, sobrinos, sobrina, primos, abuelas,abuelos, nieto, nieta, nietos]).

relation(R, X, Y) :-relations(Rs),member(R, Rs),Q =.. [WC Y],cali( Q)

% Repositorio de reglas en sí

padres(P, C) :- (madre(P, C) ; padre(P, C)).hijos(C, P) :- padres(P, C).hijo(C, P) :- padres(P, C), male(hija(C, P) :- padres(P, C), female(C).esposa( W, P) :- spouse(W, P), female(w).esposo@, P) :- spouse(H, P), male(ancestros(A, P) :- padres(A, P).ancestros(A, P) :- padres(X, P), ancestros(A,X).de.sendientes(D, P) :- padres(P,D).desendientes(D, P) :- padres(P,X), desendientes(D,X).hermanos@ 1, S2) :- full_hermanos(S 1, S2).

hermanos(S1, S2) :- halLhermanos(S 1, S2).

fulLhermanos(S 1, S2) :-madre(M, S2),madre(M, S l),SI \= s2,padre(F, S l),

Page 127: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

5 Programación de una BD1 119

padre(F, S2).

halLhermanos(S 1, S2) :-madre(M, S2),madre(M, S 1),Sl \= s2,padre(F 1, S l),padre(F2, S2),Fl \= F2.

half_hermanos(S 1, S2) :-padre(F, S2),padre(F, S l),Sl \= s2,madre(M 1, S l),madre(M2, S2),MI \= M2.

hermana(S, P) :-hermanos@, P),fema/e(S).

hermano(B, P) :-hermahos(B, P),male(

tio(u,x) :-padres(P,X),hermanofU, P).

tia(A,X) :-padres(P,X),hermana(A, P).

sobrinos(N,X) :-hermanos(S,X),padres(S, N),male(

sobrina(N,X) :-hermanos(S,X),padres(S, N),female(N).

primos(X, Y) :-padres(P, Y),hermanos(S, P),

Page 128: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

SProgramación de una BD1 120

padres(S,X).

abuelas;GM,X) :-padres(P,X),madre(GA4, P).

abuelos(GF,X) :-padres(P,X),padre(GF, P).

nieto(GS,X) :-nietos(GS,X),male(

nieta(GD,X) :-nietos(GD,X),femaje(

nietos(GC,X) :-padres(X, C),padres(C, GC).

person()o :-persono(,-,-,J.

male :-person(X,male, , , ).

female(Y) :-person(Y,female ,-,,, _).

madre(M, C) :-person(L nlr,-,J.

padre(F, C) :-personal,-, EJ

spouse(S, P) :-person(P S),J-i-I-IS \= single.

member(X, MJ).member(X, l-1 Y]) :- member(X, Y).

Page 129: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

5 Programación de una BD1 121

e) Inicializar repositorio de reglas y consultar la base en intenso

‘Listado 10 Inicializar el repositorio de reglas‘Código: Visual Basic

Private Sub consu/@Dim rc As Infeger, tf As lnteger

Dim Term As LongDim xplname As Stringxplname = Path + ‘7ARBOLXPL”InitLS (xplname)LoadLS (xplname)tf = CallStrLS(Term, “set-mode(string-esc, off)‘yIf tf <> True Then

MsgBox “Error”End Ifabre familia

End Sub

Private Sub DisplayRelationsODim Person As String, Relationship As StringDim StrVal As StringDim rc As Infeger, tf As IntegerDim Term As LongRelatedPersonsList. ClearIf Persontist. Listlndex c 0 Or RelationshipList. Listlndex < 0 Then

Exit SubEnd If

‘@e selecciona un miembro de la lista

Per-son = Person List. List(PersonList. Listlndex)

y Se selecciona la relación a buscar

Relationship = RelationshipLisf.List(RelationshipList. Listlndex)

’ { Se pasan los parámetros de consulta a Prolog

tf = CallStrLS(Term, Relationship + “(X, “’ + Person + “3’3While (tfj

Call GetArgLS(Term, 1, bSTR, StrVal)RelatedPersonstist. Addltem StrValtf = RedoLS()

WendEnd Sub

Page 130: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

5 Programaci6n de una BD1 1 2 2

Private Sub abrefamiliaDim rc As Integer, tf As IntegerDim Term As LongCurrqtFamily = “‘PATH+‘lbase.int”tf = CallStrLS(Term, “consu#(“’ f CurrentFamily + “3’3If (ff <> True) Then

MsgBox “Error”, 0, “”CurrentFamiiy = “”

End Ifíf = Persons()tf = Reiations()

End Sub

Private Sub PersonList-ClickOCall DisplayRelations

End Sub

Private Function Personso As lntegerDim rc As Integer, tf As IntegerDim Term As LongDim StrVal As StringPersontist. Cleartf = CallStrLS(Term, “person(X) ‘3If (ff c> True) Then

Persons = 0Exit Function

End IfWhile (tf = True)Ca// GetArgLS(Term, 7, bSTR, StrVd)Persontist. Addltem Str Valtf = RedoLS()

WendPersons = ?

End Function

Private Function Relationso As lntegerDim rc As Integer, tf As IntegerDim Term As Long, TList As LongDim StrVal As StringRelationshiptist. Cleartf = CallStrLS(Term, “relations(X)“)lf (if <> True) Then

Relations = 0Return

End IfCall GetArgLS(Term, 1, bTERM, TList)

Page 131: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

5Programación de una BD1 1 2 3

D oTC = PopListLS(TList, bSTR, StrVal)If (rc = 0) Then

Re/ationshipList.Add/tem StrValEnd If

Loop While (rc = 0)Relations = 1

End Function

Private Sub RelationshipList-ClickOCall DisplayRelations

End Su&

’ {Funciones de la librería utilizadas

Public Sub JnitLS(ByVal INIFile As String)Dim re As Long

If IsEmpty(MaxStrLen) ThenMaxStrLen = 255

End If

If IsEmpty(ErrorMethod) ThenErrorMethod = 0

End If

rc = Islnit(EnginelD, INIFile + Chr$(O))If (rc <> 0) Then

Call ErrorHandler(“lslnit”, rc)End If

End Sub

Public Sub LoadLS(ByVal XPLFile As String)Dim re As Long

rc = IsLoad(EnginelD, XPLFile + Chr$(O))If (rc ::> 0) Then

Call ErrorUandler(“lsLoad”, rc)End If

End Sub

Public Function CallStrLS(TermPtr As Long, ByVal StrPtr As String) As BooleanDim tf As Long

tf = IsCallStr(EnginelD, Termptr, StrPtr + Chr$(O))

Page 132: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

5Rogramación de una BD1 1 2 4

Select Case tfCase 0

CallStrLS = FalseCase 1

-’ CallStrLS = TrueCase Else

Call ErrorHandler(“lsCalIStr”, tf)End Select

End Function

Public Sub GetArgLS(ByVal Term As Long, ByVal ArgNum As Long, ByVal BTypeAs lnteger, Ptr As Varia@

Dim rc As Long, tstr As StringDim tlong As Long, ffloat As Single, tint As Integer, tdouble As DoubleDim s As String

Select Case 5TypeCase bSTR, bATOM

tstr = Space$(MaxStrLen)rc = IsGetArg(EnginelD, Term, ArgNum, BType, 5yVal tstr)Ptr = StripStr(tstr)

Case bLONG, bADDR, bTERMre = IsGetArg(EnginelD, Term, ArgNum, 5Type, tlong)Ftr = tlong

Case blNT, bSHORTrc = IsGetArg(EnginelD, Term, ArgNum, BType, tint)Ptr = tint

Case bFLOATrc = IsGetArg(EnginelD, Term, ArgNum, BType, ti7oat)Ptr = ti7oat

Case bDOU5LErc = IsGetArg(EnginelD, Term, ArgNum, BType, tdouble)Rtr = tdouble

End Select L

If (rc <> 0) ThenCall ErrorHandler(‘lsGetArg “, rc)

End If

End Sub

Public Function PopListLS(TermPtr As Long, ByVal BType As lnteger, Ptr AsVaria@ As Long

Dim rc As Long, tstr As String, tstr2 As StringDim tlong As Long, fi7oat As Single, tint As lnteger, tdouble As Double

Page 133: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

5 Programación de una BD1 1 2 5

Select Case BTypeCase bSTR, bATOM

tstr = Space$(MaxStrLen)rc = IsPopList(EnginelD, TermPtr, BType, ByVal tstr)Ptr = StripStr(tstr)

iCase bLONG, bADDR, bTERMrc = IsPopList(EnginelD, TermPtr, BType, tlong)Ptr = tlong

Case blNT, bSHORTrc = IsPopList(EnginelD, TermPtr, BType, tint)Ptr = tint

Case bFLOATrc = IsPopList(EnginelD, TermPtr, BType, fffoat)Ptr = tUoat

Case bDOUBLErc = IsPopList(EnginelD, TermPtr, BType, tdouble)Ptr = tdouble

End Select

Select Case rcCase 0

PopListLS = rcCase -1

PopListLS = rcCase Else

Call ErrorHandler(“lsPopList”, rc)End Select

End Function

Hemos seleccionado éste ejemplo por su sencillez y amplia documentación entre los

distintos grupos de programación lógica consultados, de hecho, constituye la base de

explicación a usuarios de Amzi4, sobre su operación conjunta con Visual Bask; éste y

todos los ejemplos concentrados en el prototipo (listados, base persistente, repositorio de

reglas, base en intenso), pueden ser editados en las vistas de ‘Edición’ en los prototipos

desarrollados.

Adicionalmente, se anexa un ejemplo de la presente tecnología, aplicado al diagnóstico.

Page 134: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

6. Estado del Arte. 126

6. Estado del Arte

6.1 Análisis inteligente de Datos

Resulta difícil clasificar las herramientas (que superan ampliamente el centenar)

que pueden servir para la explotación inteligente de los almacenes de datos, pero

en una primera aproximación podríamos distinguir las siguientes categorías:

Interfaces de consulta “ad hoc” existentes en el entorno de bases de datos

(QMF, QBE,etc.) y lenguaje SQL.

Hojas de cálculo, que empiezan a soportar también varias dimensiones en el

tratamiento de datos.

Generadores de informes.

Herramientas de visualización de datos.

Entornos de soporte a la toma de decisiones (EIS/DSS).

Paquetes de análisis estadístico (SAS, SPSS, . ..).

Herramientas OLAP.

Aplicaciones de “minería” de datos sofisticadas, basadas en técnicas de

Inteligencia Artificial.

Las técnicas estadísticas, como el análisis de probabilidad, inferencia, análisis de

regresión y correlación, análisis de series temporales, etc. están conociendo un

resurgimiento con los entornos de almacenes de datos, y los paquetes que +,las

soportan empiezan a difundirse cada vez más, ofreciendo intetfaces con la

mayoría de las plataformas para almacenes de datos.

Las herramientas OLAP (siglas que pueden englobar todas las anteriores

categorías), se pueden definir como un tipo de tecnología software que permite a

los analistas, gestores y ejecutivos obtener una visión de los datos por medio de

un acceso rápido, consistente e interactivo a una amplia variedad de posibles

Page 135: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

6. Estado del Arte. 127

vistas de la información que ha sido transformada a partir de datos en bruto para

reflejar la dimensionalidad real de la empresa tal y como la entiende el usuario.

i

Estas herramientas se caracterizan, por tanto, por:

- Acceder a una gran cantidad de datos (varios años de ventas).

- Analizar las interrelaciones entre diferentes elementos de negocio.

- Involucrar datos agregados.

- Comparar datos agregados en periodos de tiempo jerárquicos (días, meses,

años, etc.).

- Presentar datos en diferentes perspectivas

- Implicar cálculos complejos entre los elementos de datos.

- Responder rápidamente a las consultas de los usuarios

Suele ser muy habitual con estas herramientas realizar el cálculo de las siguientes

métricas:

- Ratios multidimensionales.

- Comparaciones.

- Perfiles estadísticos y clasificaciones.

Este tipo de herramientas permite a los analistas del negocio verificar hipótesis,

que el propio usuario va haciendo y validando con los datos que le devuelven sus

consultas, pudiendo navegar por las distintas dimensiones de los datos.

Sin embargo, existe otro tipo de técnicas, más potentes, que permiten descubrir

información valiosa sin depender del usuario, son las que se engloban dentro de la

categoría de minería de datos (data mining) propiamente dicha, en nuestro

estudio, sólo hemos pormenorizado en los algoritmos de modelado basados en

IPL, sin embargo, existe una fuerte tendencia, en el seno de los grupos de IA, por

la utilización de modelados abstractos: Objetos y clases entre otros.

Page 136: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

6. Estado del Arte. 1 2 8

Algunas de las tareas que se llevan a cabo con las herramientas de minería de

datos son las siguientes:i

- Clasificación. Categorizar objetos, es decir, examinar sus características y

asignarlos a un conjunto predefinido de clases, por ejemplo, clasificar personas

que van a pedir un préstamo según el riesgo que presentan.

- Estimación. Mientras que la clasificación obtiene una salida discreta, la

estimación consiste en obtener un valor continuo, por ejemplo, ingresos de una

familia. En la práctica se utílíza para llevar a cabo clasificaciones.

- Predicción. Los datos se clasifican de acuerdo a un comportamiento futuro.

- Agrupamiento por afinidad.

- Agrupamiento ( clustering). Segmentar una base heterogénea en varios grupos (

clusters) homogéneos, sin que existan clases predefínidas.

- Descripción. Explicación de lo que sucede en la base de datos.

Estas tareas se pueden llevar a cabo mediante la aplicación de distintas técnicas.

que resumimos a continuación:

- Análisis de la cesta de la compra, permite identificar grupos de elementos que

ocurren juntos en una transacción.

- Razonamiento basado en memoria, utiliza instancias conocidas como modelo

para hacer predicciones acerca de otras instancias desconocidas. Se utiliza una

función de distancia para encontrar los elementos más cercanos a otros y una

función de combinación que combina los valores de los elementos más cercanos

para hacer una predicción.

- Detección de agrupamiento, construye modelos que encuentran registros de

datos similares (mediante técnicas geométricas, estadísticas, etc.).

- Análisis de enlace, sigue las interrelaciones entre los registros con el fin de

desarrollar modelos basados en patrones en las interrelaciones (aplicando teoría

de grafos).

Page 137: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

6. Estado del Arte. 1 2 9

- Árboles de decisión y reglas de inducción, dividen los registros del conjunto de

entrenamiento en subconjuntos disjuntos cada uno de los cuales se describe por

medio de una regla sobre uno o varios campos.

- Redes neuronales artificiales, son capaces de aprender de un conjunto inicial,

generalizando patrones para clasificación o predicción. Es la técnica más común.

- Algoritmos genéticos, aplican los mecanismos de la selección natural y la

genética para encontrar un conjunto óptimo de parámetros que describe una

función predictiva.

Aunque, como hemos señalado, la aplicación más conocida de las herramientas

de explotación de datos se da en el marketing (ya que permiten llevar a cabo un

marketing selectivo y de precisión: promociones, ofertas individuales, etc.); existe

un conjunto muy amplio de aplicaciones:

- Agricultura: identificación de plagas, clasificación de enfermedades,. . .

- Banca: concesión de créditos, predicción de quiebras, predicción de valores

bursátiles, detección de fraudes, segmentación de clientes (para ofrecer tarjetas

de créditos según el tipo de cliente), .

- Ciencias espaciales, en concreto, astronomía, donde sirven para el análisis de

los datos procedentes de telescopios o de sondas.

- Distribución: análisis de la cesta (qué elementos tienden a comprar

conjuntamente los clientes), patrones basados en tiempo para tomar decisiones

respecto a los almacenes, modelos predictivos, . . . L

- Energía eléctrica: programas de distribución, análisis de incidentes,. . .

- Ingeniería: diagnóstico de fallos, CAD,. . .

- Medicina; biomedicina, efectos de drogas, costes de los hospitales, análisis

genéticos, identificación de tratamientos eficaces,. . .

- Seguros: detección de fraudes, reclamaciones no válidas, diseño de productos,

análisis de riesgos,. . .

- Ventas: identificación de subgrupos específicos, patrones de compra, análisis de

productos, predicción de ventas,, .

Page 138: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

6. Estado del Arte. 130

Como podemos observar prácticamente todos los sectores empresariales pueden

beneficiarse de estas técnicas.

6.2 Desafíos en la explotación inteligente de datos

La tecnología de explotación de datos ha avanzado mucho en los últimos años,

pero todavía se enfrenta a numerosos retos por resolver, que son objeto de

discusión en numerosas conferencias y publicaciones especializadas, donde

destacan los siguientes:

- Mecanismos de explicación limitados, ya que las herramientas no siempre son

capaces de explicar al usuario cómo han llegado a los datos.

- Formatos de entrada de datos limitados, por ejemplo, no ofrecen posibilidad de

manipular gráficos, textos, fórmulas matemáticas, etc.

- Técnicas de validación limitadas, incapacidad de realizar validaciones cruzadas.

- Gran consumo de recursos.

- Soporte limitado a ciertas plataformas, formatos, tamaños, etc.

- Manejo de diferentes tipos de datos; se deberían construir sistemas capaces de

explotar los datos no sólo en bases de datos relacionales, sino también espaciales

(geográficas), multimedia, etc.

- Eficiencia y escalabilidad de los algoritmos de minería de datos, los tiempos de

ejecución de estos algoritmos debe ser predecible y aceptable en bases de datos

muy grandes.

- Utilidad, certeza y expresividad de los resultados de la minería de datos, Las

imperfecciones deberían ser expresadas mediante medidas de la incertidumbre en

forma de reglas de aproximación.

- Expresión de varios tipos de peticiones y resultados de minería de datos,

presentando los resultados de diferentes formas y bajo diferentes perspectivas,

mediante la utilización de lenguajes de alto nivel, interfaces gráficas, etc.

- Minería interactiva del conocimiento a vanos niveles de abstracción, para que el

usuario pueda refinar de forma iterativa su petición.

Page 139: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

6. Estado del Arte. 131

- Minería de información de diversas fuentes.

- Protección de la seguridad y privacidad de los datos.

- Conjuntos de datos masivos y soporte de alta dimensionalidad así como de

bases de datos de millones de registros (varios Gbytes).

- Inteligibilidad de los patrones, que desde un punto de vista matemático son

correctos pero que a veces el usuario no llega a comprender.

Page 140: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

7. Conclusiones 132

7. Conclusiones

1. La confluencia de tecnologías, y en especial de tecnologías de información, ha

abierto nuevas avenidas para el desarrollo de sistemas cuyas capacidades

conjugan la funcionalidad de tecnologías individuales en un todo cohesivo,

sinérgico, destinado al mejoramiento del desempeño del sistema dentro del

contexto en el cuál se opera.

2. Un Sistema Inteligente para la administración de bases de datos relacionales

combina las funcionalidades y facilidades típicamente encontradas en los

sistemas para el soporte de decisiones con técnicas propias de la Inteligencia

Artificial y los Sistemas Expertos para la creación de sistemas complejos que

permitan la toma de decisiones en una forma más acertada, informada e

inteligente.

3. En varios dominios el uso de estructuras lógicas dinámicas aplicadas a la

manipulación e interpretación del contenido de una base de datos tiene múltiples

ventajas, la principal de ellas se centra en la búsqueda de soluciones en unJ

dominio*particular donde el uso de SQL resulta insuficiente. Garantiza que las

conclusiones que se derivan de las premisas iniciales son correctas, en función

de las reglas de manipulación sintáctica que hayan sido definidas. Pueden ser ;

utilizadas para analizar el conocimiento y para aplicar el razonamiento deductivo

sobre dícho conocimiento. Es flexible, ya que permite representar, en forma

sencilla, los hechos sin importar para qué son utilizados. Es modular, nuevos

hachos pueden ser agregados a la base de conocimiento en forma

independiente, sin afectar los tipos de deducción que se pueden hacer. h

4. La representación del contenido de las tablas del esquema relaciona1 mediante

estructuras simples y el uso de la lógica de primer aplicados desde el motor de

inferencia permiten una recursividad controlada en procesos de búsqueda

complejos. Representación que permite consultas con parámetros sobre

relaciones no explícitas en la definición del esquema relacional.

Page 141: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

7. Conclusiones 1 3 3

5. El trabajo paralelo entre un motor relaciona1 y un motor de inferencia habilita al

sistema de la capacidad de representar el contenido de la base de datos en

forma simbólica, esto es, se valen de la manipulación de símbolos para la

resolución de problemas. Estos símbolos representan conocimiento acerca de

objetos existentes en el mundo real, conceptos, estrategias y heurísticas que el

sistema tiene en su poder y que emplea para la resolución del problema. La

combinación y disposición de estos símbolos representan relaciones con

significado las cuales son interpretadas durante procesos particulares de

naturaleza no algorítmica.

6 . La implementación de estrategias basadas en el uso de técnicas de inteligencia

artificial pueden llevar el proceso de soporte a la toma de decisiones a un nivel

mas avanzado del que incorpora el esquema relacional, ya que se dota a estos

de la capacidad de usar conocimiento para resolver problemas en la presencia de

información incompleta o no estructurada y sugerir decisiones alternativas, a

problemas que no pueden ser resueltos por medios algorítmicos convencionales

y que requerían la ayuda de otras personas para resolución. Esta funcionalidad

permite Mcrementar la productividad y la eficiencia de aquellos individuos que

usan el sistema pero que no poseen la experiencia ni el conocimiento para

enfrentar la solución a problemas en un dominio específico. Adicionalmente ,,

pueden ayudar a transformar información en conocimientos al proveer

mecanismos automáticos para el análisis, organización y síntesis de información

en un cuerpo coherente.

7 . El tratamiento de la incertidumbre mediante estrategias de lógica difusa y lógica

multivaluada permiten una representación global de los dato% con una semántica

sensiblemente mayor a las representaciones convencionales, permitiendo tratar

como miembros de un subconjunto determinado grupos de registros con valores

atómicos distintos.

Page 142: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

Referencias bibliográficas

Referencias bibliográficas

a) Textos

CODD, C.F. “The Relational Model for Database Manaaement: Version 2”.Ed. Addison-wesley, Massachussets, USA, 1990.

CORONELL, Gray. “Visual Basic 5”.Ed. McGraw-Hill. Madrid. 1997

DATE, J. “An Introduction to Database Svstems”Ed. Addison-Wesley, Massachusetts, USA, 1986.

FERNANDEZ, F. “Fundamentos de Informática: Lágica, Autómatas, Alzloritmos vLencluaies”Ed. Anaya, Salamanca, 1995.

HANSEN, W. Gary. “Diseño v Administración de Bases de Datos”Ed. Prentice Hall. México, 1997

KOLMAN, Bernard. “Estructuras de Matemáticas discretas para la computación”Ed. Prentice Hall. México, 1986.

KORTH, Hgmy. “Fundamentos de bases de datos”Ed. McGraw-Hill. Madrid, 1993

Microsoft. “Access 7.0 User Guide ”Microsoft. 1998

Microsoft. ‘Visual Basic 5, Enterprise Edition”Book’s on line. 1998

Microsoft. ‘Visual Basic 5, User Guide”Microsoft. 1998

MIRA, J. “Aspectos básicos de la Inteliaencia Artificial”Ed. Sanz y Torres, Madrid, 1995.

PIATLINI, M. “Concepción v diseña de bases de datos”DeI modelo E/R al modelo relacional.-Ed. RBMA Addsison-Wesley tiEmane*. 1993

F%OBIhlSON,. Philtip. ‘m Tiirkm Proloq”Ed. McGraw-Hill. México. 1987

Page 143: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

Referencias bibliográficas 1 3 5

SHILDT, Herbert. “Pronramación Avanzada en Turbo Prolog”Ed. McGraw-Hill, México, 1988

SHAFIELD, Rebeca. “Winproloa 3.6 user auide”LPA Software, 1998.

THIERAÜF. “Investioación de operaciones”Ed. Limusa, México, 1997.

WlNTER, Rick. “Microsoft Access 97, Soluciones Instantáneas”Ed. Prentice Hall, México, 1997.

b) Artículos

BURGOS, Jorge. “Intercambio dinámico de datos con Visual Basic”Grupo Eidos. Algoritmo. Año 5, 1997.

HOPKINS, Johns. ” Knowledge-Based Query Formulation for Integrated InformationSystems”Techincal Digest. Volumen 18, No. 2, 1997, pp. 261-270

KHOSAFIAN. “lntelligent Database Engines”Database Programmìng & Design. 1990, pp. 56-65

KRIVDA, Cheryl. “Dinamita para extraer datos”Byte. Año 9, No. 93, 1995, pp. 24-32

Mateos, Julio. “Aplicaciones profesionales en Visual Basic”Grupo Eidos. Algoritmo. Año 5, 1997.

PIATTINI, M. “El futuro de las bases de datos (I-V)”Grupo Eídos. Algoritmo. Año 5, 1997.

SOM, Guillermo. “Objetos en Visual Basic”Grupo Eidos. Algorítmo. Año 5,1997.

TRlANA, Harvey. ‘Yisuat Basic Experto”Grupo Eidos. Algoritmo. Año 6, 1998. ’

WONG, H. “lntelligent Databases”IA Expert. Volumen 5, No. 3. pp. 3847

Page 144: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

Referencias bibliográkas 136

ZIARKO, Wojciech. “Data-based acquisition and incrementa1 modification ofclassification rules”Computational Intelligence, Volumen ll, No. 2, 1995, pp. 37-42.

ZOZAYA, C. “Arquitecturas de Sistemas Expertos”,Soluciones Avanzadas, año 2, No. 13, 1994, pp.41 -47.

c) Uniform Resource Locator

CHAN, Francis. ‘Analysis of Decision Support for Dìstributed Systems”http://www-cad.eecs. berkeley.edu/-fchan/caddis/ds_systems. html

GOMEZ, Antonio J. “Inducción de conocimiento en bases de datos”http://www.gsì.dit.upm.es/tesis/anto.html

GRAY, James N. “Database Systems: A Textbook Case of Research Paying Off”http://www.cs.washington.edu/homes/lazo~k~cr~database.html

HAN, J. “LogicBase: A Deductive Database System Prototype”ftp://ftp.fas.sfu.ca//pub/cs/han/doodlcikm94.p~

HAN, J. “Constraint-Based Query Evaluation in Deductive Databases”ftp://ftp.fas.~~u.ca//pub/cs/han/dood/cor-tstr94.p~

HAN, J. “Data Mining “,ftp://ftp.fas.sfu.caIpub/csIhan/kdd/ency99.p~

HAN, J. “Data Mining Techniques”,ftp://ftp.fas.sfu.ca!pub/cs/han/kdd/sigmod96-tuto-des.ps

Logic Programmíng Assocíates. “FAQ WinProlog”http://www.Ipa.co.uk

MOXON, Bruce. “Defining Data Mining”http:/Ewww.dbmsmag.com/9608d53. html

Tecnológico de Monterrey. “Tutorial de Prolog”http:/Iw3.mor.itesm.mti~esucar/lA/prolog.htmI

OLSEN. ” What is Intelligent Databases ?”http://wvw.ougf.fi/nouc/Handouts/Olsenlsld008. htm

PANG, A. “Exploratory Mining and Pruning Optimizations of Constrained AssociationsRules”,

Page 145: TESIS - digeset.ucol.mxdigeset.ucol.mx/tesis_posgrado/Pdf/Sergio Antonio Becerra Zepeda.pdf · Por medio de este conducto, informo a ese Consejo Técnico dePosgrado que el C. Sergio

Referencias bibliográficas 137

The Data Mining Research Group. “lntroduction to DBMiner and Data Mining andWarehousing Concepts”ftp://ftp.fas.sfu.ca/pub/cs/han/slides/boeingintro.ppt

Universidad de Guadalajara. “Tutorial de Prolog”http://proton.ucting.udg.mx/proton/tutorial/prolog/Prolog.htm

Universidad de Guadalajara. “Tutorial de Prolog”http://~.cultura.udg.mxltutoriales/prolog/prolog.htmI