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

Exp.No.:__0014___ Fecha:__08-05-99_ Acta No. :___5____ C. SERGIO ANTONIO BECERRA ZEPEDA________ Domicilia: CALDERON NÚM. 191________________ Localidad. CIUDAD GUZMÁN, JALISCO___________ Teléfono (341) 2 59 41_________________________ En cumplimiento al artículo: 13 y 14 del reglamento de titulación, a los artículos: 46 y 48 del reglamento de estudios de Posgrado vigente y al articulo: 46 de las normas complementarias al reglamento de Posgrado, correspondientes al Posgrado de la Facultad de Ingeniería Mecánica y Eléctrica. Informamos a usted que ha sido autorizado por este Consejo Técnico del Posgrado su tema de Tesis para obtener el grado de Maestro en Ciencias Computacionales titulado: " BASES DE DATOS INTELIGENTES "__________________________________________ __________________________________________________________________ para ser desarrollado bajo los siguientes puntos: I II III IV V VI VII INTRODUCCIÓN SISTEMAS BASADOS EN CONOCIMIENTO SISTEMAS EXPERTOS .-ARQUITECTURA DE UNA BDI PROGRAMACIÓN DE UNA BDI ESTADO DEL ARTE CONCLUSIONES BIBLIOGRAFÍA

Asimismo hacemos de su conocimiento que de acuerdo con la línea de investigación en la cual se enmarca s u proyecto ha sido autorizado como asesor de tesis el C. MC. RODOLFO GALLARDO ROSALES_____________________ A partir de la fecha de aprobación tendrá como plazo un año para presentar su examen de grado, en caso contrario tendrá usted derecho a una 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ón deberá recoger el oficio que acompañará a el visto bueno de su asesor de tesis, los cuales encabeza cada uno de los ejemplares de su tesis.

M.C. Rodolfo Gallardo Rosales

Mayo 8, 1999. H. Consejo Técnico de Posgrado de la F.I.M.E. Universidad de Colima. Presente.

Por medio de este conducto, informo a ese Consejo Técnico de Posgrado que el C. Sergio Antonio Becerra Zepeda, terminó su período de revisión de tesis para: MAESTRÍA EN CIENCIAS COMPUTACIONALES

Bajo el título: “BASES DE DATOS INTELIGENTES”

cuyo contenido he el siguiente: 1. INTRODUCCIÓN 2. SISTEMAS BASADOS EN CONOCIMIENTO 3. SISTEMAS EXPERTOS 4. ARQUITECTURA DE UNA BDI 5. PROGRAMACIÓN DE UNA BDI 6. ESTADO DEL ARTE CONCLUSIONES el cual cumple con los requisitos necesarios para su aprobación, por lo cual lo autorizo para su impresión. Atentamente

Will it to be possible than does a machine make the same as make the human brings when do think ? Turing 1950 .

Presenta: Me. extrayendo conocimientos a partir del análisis de estructuras simples.activas y las técnicas avanzadas para la búsqueda. 1999. Sergio Antonio Becerra Zepeda Candidato al Grado de Maestro en Ciencias Computacionales. Nuestro principal objetivo detallar el conjunto teórico mediante el cual pueda manipularse una base de datos relaciona1 de manera transparente.I Abstract I Abstract Descripción: En las bases de datos inteligentes se concentra la evolución e integración de las bases de datos relacionales . Validación: Universidad de Colima Facultad de Ingeniería Mecánica y Eléctrica Maestría en Ciencias Computacionales. en suma. consolidar un punto de partida en la representación y manipulación semántica de las aplicaciones avanzadas. bases de conocimiento e inteligencia artificial. . Junio. 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. interrelacionando procesos de adquisición de datos con procesos de inferencia. combinado con otras herramientas permitirá la creación de ambientes inteligentes que combinen las tecnologías dé bases de datos. recuperación y procesamiento de la información en el área de los sistemas expertos y la inteligencia artificial. Este mayor poder de abstracción.

Tabla de Contrenidos II.1 Sistemas orientados al proceso y SGBD clásicos 2. I Abstrac II Tabla de contenidos 1.4.1 Antecedentes 2. Introducción 2.4.6.6 Representación del conocimiento 2.5 SGBD orientados al objeto 2.4 SGBD deductivos 2.5 Conocimiento y bases de datos 2.4.6.4.6.6 Representación mediante árboles de decisión 2.4.6.3 SGBD activos 2.3 Representación mediante reglas de producción 2.7 Representación lógica se un SGDB relaciona1 2.6.2 SGBD semánticos 2.2 Manipulación de datos 4 6 7 10 10 11 11 12 13 14 16 17 21 22 23 24 25 26 26 27 27 28 .5 Representación mediante procedimientos 2.II.7. Sistemas basados en conocimiento 2.2 Enfoques de los SGDB 2.4 Clasificación de los SGBD 2.4.2 Representación mediante redes semánticas 2.6 SGBD multidimensionales 2.7.6. Tabla de Contenidos.1 Representación mediante cálculo de predicados 2.4 Representación por objetos estructurados 2.3 Evolución de los SGDB 2.7 Representación mediante listas de decisión 2.1 Estructura e integridad 2.6.

2.4 Edición de las Bases persistente y en intenso 5.5 Manipulación de la base de datos en intenso 5.2. Sistemas Expertos 3.2 Base de datos persistente y en intenso 5.2.2 Programación lógica en sistemas expertos 3.3 Arquitectura 4.3.2 Conocimiento con incertidumbre 4.II.3.2 Database Object 5.1 Antecedentes 3.2.1 Computación Evolutiva e IPL 4.4 Filtrado y preproceso 5.1 Conceptos básicos 3.2 Tratamiento de la información desconocida o condicional 5.3 Sistemas expertos y bases de datos inteligentes 4.2 Descripción 4.2.6 Programación lógica paralela 66 66 66 68 70 88 92 95 96 105 105 107 108 114 38 39 45 48 49 56 60 31 32 35 36 .3.1 Difusor simple 5.1 Consideraciones generales 5.4.1 Fundamentos 4. Programación de una base de datos inteligente 5.2.1 Recordset 5.1 Tratamiento de los valores inciertos 4.2.3 Archivos binarios 5. Arquitectura base de datos inteligente 4.3.4.3 SQL en Visual Basic 5.2 Manipulación de la base en intenso 5.1 Representación gráfica de los datos 4.2.4. Tabla de Contenidos 3.2 Difusor con múltiples condiciones 5.3.

II. Tabla de Contenidos 6. Estado del Arte 6. Conclusiones 126 130 III Referencias Bibliográficas 115 .2 Desafíos en la explotación inteligente de datos 7.1 El Análisis inteligente de datos 6.

y . Los esquemas operativos orientados a soluciones administrativas generales han multiplicado su nivel de exigencia. La eficiente implementación de una BDI(Base de Datos Inteligente). En este terreno. adicionando a la estructura del motor relaciona1 un motor de inferencia. Existe un robusto compendio teórico (modelos matemáticos).con capacidad de procesar estas características en la oferta de soluciones. 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. 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. con distintos tipos de datos no estructurados. para responder eficientemente a consultas no planificadas. 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. la lógica difusa (fuzzy Iógic) y la lógica multievaluada.fundamentalmente. Introducción Una de las principales preocupaciones de los desarrolladores de software destinado a la administración de bases de datos. destacan los algoritmos genéticos. precisando productos que efectúen análisis sobre los datos almacenados. precisa del desarrollo de un sistema que posea la capacidad de gestionar conocimiento . con capacidad para realizar operaciones entre los datos estructurados (propios de la mayoría de bases actuales). que habilita conjuntos de acciones disparadas por reglas y consultas ampliadas por inferencia.1 Introducción 1 1.

provenientes tanto de ficheros controlados de forma autónoma como de un SGDB(Sistema Gestor de Bases de Datos). bases de conocimiento. 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.1 Introducción 2 complejo a través del procesamiento de datos simples. 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 el desarrollo de nuestra investigación pormenorizamos sobre el conjunto de . de hecho. 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. programación orientada a objetos. incorporar la capacidad de utilizar la experiencia en un dominio particular de aplicación para resolver clases de problemas dentro del dominio. existen múltiples enfoques híbridos en los que encontramos esquemas operativos lógicos y procedurales.ej. las tecnologías aplicadas en este dominio se construyen como extensiones de los sublenguajes DML Y DDL particulares del lenguaje anfitrión. Por ello. Datalog). Es importante destacar que existe un limitado número SGDB comerciales orientados exclusivamente a estos aspectos (p.en la semántica de los procesos de consulta. 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. e interfaces intuitivas para usuarios finales. tecnologías que recuperan segmentos de los avances de la Inteligencia Artificial y los expresan fundamentalmente.

en su diseño hemos considerado distintas vistas que dan transparencia a los procesos de que se ocupa el sistema. y mediante objetos y procedimientos desarrollados específicamente en el lenguaje nativo de la aplicación en general: Visual Basic 6 Enterprise Edition. dichos. operan en dos formas: mediante una interfaz entre aplicaciones donde el sistema manipula una base de datos relaciona1 (base persistente). . se ejemplifican las operaciones y procesos considerando el enfoque relaciona1 con que opera Jet. dando cuenta de los esquemas operativos y evolución de los SGDB. Los prototipos recuperan y expresan los nudos de nuestra investigación.1 Introducción 3 indicadores involucrados en la arquitectura de bases de datos. esto es. se desarrollan prototipos con el objetivo de acreditarla validez del conjunto teórico expuesto. en todo momento es posible editar la estructura de la base persistente. 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. 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 q ue procesa. 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. En todos los casos. Finalmente.

“base de datos”. En la actualidad. 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. 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. Sistemas basados en conocimiento 4 2. Sistemas Basados en Conocimiento. Actualmente. como del software). hace referencia sólo al lugar donde está depositada la información (hablando tanto desde la perspectiva del hardware.2. Más recientemente. los sistemas se han expandido hacia la producción y la gestión de la información. técnicamente es una colección de datos. En términos estrictos. Una base de datos es un conjunto de Información. arrastrados de un lado por las necesidades y las demandas de la administración y. en sentido amplio. Los primeros sistemas de procesamiento de datos ejecutaron las tareas administrativas para reducir el papeleo.está soportada por un sistema para su gestión SGBD. Las expectativas de la administración han crecido paralelamente a la evolución de las tecnologías. de otro. la que se ha convertido en un recurso vital para las compañías. 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.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. agrupados con un propósito específico en una o mas entidades lógicas (archivos). dicha información -generalmente. restringida por las limitaciones de la tecnología. el impulso impuesto por el desarrollo de los sistemas de información. el término puede aplicarse a cualquier agregado de datos. 2. ha .

estadística y física de dinámicas no lineales. esto es sistemas que descansan sobre una base de conocimientos para razonar sobre el conjunto de datos. fuera de los cuales los resultados resultaban demasiado pobres. Históricamente. denominados almacenes de datos (datawarehouse). desarrollados por la comunidad de inteligencia artificial. 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”. sino también por la automatización de muchos experimentos y técnicas de recogida de datos. principalmente de aprendizaje y representación de conocimiento. el análisis de datos ha cambiado recientemente y ha adquirido una mayor importancia. Se estima que la cantidad de información almacenada en todo el mundo se duplica cada 20 meses. debido principalmente a tres factores: a) Incremento de la potencia de los ordenadores. La investigación en IA incluye estudios sobre la representación de reglas lógicas que operen sobre los datos. Aunque la mayoría de los métodos matemáticos fueron desarrollados durante los años 60 y 70. han surgido nuevos métodos. el número y tamaño de las bases de datos probablemente crece más rápidamente. c) Por último. Sin embargo.2. 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. la evolución de los SGBD nos ha proporcionado métodos para analizar datos y encontrar correlaciones y dependencias entre ellos. Sistemas basados en conocimiento 5 provocado la evolución de las bases de datos en conjuntos abstractos. b) Incremento del ritmo de adquisición de datos. Estos métodos complementan a . Algo similar ha ocurrido con la capacidad de almacenamiento de los datos y su coste asociado. 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).

pero no su inverso. pero dentro del esquema jerárquico un elemento de inferior jerarquía puede tener varios elementos situados a un nivel superior del mismo.2. Precisa de punteros físicos • Enfoque relacional. desarrollaremos un estudio introductorio a los SGBD. Similar al enfoque jerárquico en tanto al uso de registros y ligas. la minería de datos ha permitido el rápido desarrollo de lo que se conoce como descubrimiento de conocimiento en bases de datos. impone que un elemento padre puede tener varios elementos hijo. 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. o leyes. En este capítulo. 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. se denominan actualmente técnicas de minería de datos o data mining. Estos nuevos métodos matemáticos y técnicas software. • Enfoque de Red (Codasyl). para análisis inteligente de datos y búsqueda de regularidades en los mismos. 2.2 Enfoques de los SGBD Una clasificación primaria de los SGBD. Sistemas basados en conocimiento 6 las tradicionales técnicas estadísticas en el sentido de que son capaces de inducir relaciones cualitativas generales. Se caracteriza por la representación de datos en forma de . A su vez. nos permite establecer los tipos básicos según el tipo de estructura de datos que soporta: • Enfoque jerárquico. pormenorizando en su enfoque y evolución. derivando los fundamentos teóricos en que se soportará el desarrollo de bases de datos inteligentes.

2.ej. pero se sustenta en la lógica de predicados de primer orden para representar y manipular los datos. que obligan al programador a desplazarse registro a registro. Sistemas basados en conocimiento 7 tablas. hecho que implica una escasa flexibilidad. No es esencialmente distinto al enfoque relacional. en objetivos posteriores desarrollamos una descripción exhaustiva de este enfoque. en las que los conjuntos de registros tienen un formato fijo e idéntica estructura. IDMS de Cullinet) de lógica procedimental. IMS de IBM. Como característica general. que interactúan con el sistema a través de mensajes. correcta y bien definida. • Enfoque Lógico. El agrupamiento de objetos con métodos y variables comunes se estructura en clases jerárquicas. Basada en el encapsulamiento de código y datos en unidades denominadas objetos. por tanto. a éste pertenecen los SGBD deductivos. • Orientado a objetos.2. en el momento en que comenzaron a introducirse los ordenadores para automatizar la gestión de las empresas. fundamentalmente con desarrollos en COBOL. los esquemas han sido desarrollados con la capacidad de operar sobre datos “ideales”. de nuestro estudio utiliza un SGBD relaciona1 (Microsoft Jet). y se han caracterizado por el uso de tecnologías orientadas a la estructuración de datos mediante modelos jerárquicos y Codasyl (p. Una característica de los tres primeros modelos mencionados es que sólo aceptan datos escalares individuales tipificados y nulos ("NULL"). en el supuesto de que la información a procesar es exacta. El enfoque relaciona1 en bases de datos parte del modelo relaciona1 en matemáticas y. son susceptibles de aplicar al minio todas las formulaciones teóricas que éste presenta. puesto que el prototipo BDI. con lo que se obtiene un modelo relaciona1 flexible con capacidades para la deducción automática.3 Evolución de los SGBD La historia de las bases de datos inicia a mediados de los años cincuenta. .

prácticamente todos los productos una interfaz SQL. técnicas de indexación para un acceso asociativo más rápido (distintas variaciones de los árboles). A dichas tablas se les dio en nombre matemático de relaciones. al cabo de poco tiempo. 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. caracterizada por una mayor independencia físico-lógica. organizaciones físicas para el almacenamiento de las relaciones. INFORMIX. básicamente el modelo matemático que dio fundamentos a la segunda generación de SGBD. teoría de la normalización. La aparición . dado que actúan sobre conjuntos de registros. Codd propuso un modelo simple de datos en el que todos ellos se representarían en tablas constituidas por filas y columnas. ofreciendo. habilitando acciones múltiples sobre los registros. lenguajes de alto nivel. Codd también propuso dos lenguajes para manipular los datos en las tablas: álgebra y cálculo relacional. 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. 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). Sistemas basados en conocimiento 8 En 1970 se propuso el modelo relacional. denominándose así el sistema como relacional. sistemas distribuidos. aún los no relacionales (sistemas “renacidos”). diccionarios de datos. Codd. INGRES. basado en los trabajos del Dr. etc. SYBASE. etc. entre ellas destacan ORACLE. algoritmos para la gestión de memorias intermedias (buffers). DB2.2. gestión de transacciones. También cabe recordar que durante la primera mitad de los ochenta se estandariza el lenguaje SQL (el SQUANSI se aprueba en 1986). 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 estructuradas. 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.

Visual Fox (SQL). multiplicó las tareas asignadas a las bases de datos e implicó el desarrollo de sistemas de uso transparente.. ilustramos un resumen de la cronología expuesta: . La tercer generación de SGBD.). con interfaces intuitivas -gráficas fundamentalmente. Nivel estructural de la base de datos que define la vista física. ISO) como referencia. Conceptual Nivel estructural de la base de datos que define su esquema lógico. la gestión de objetos que permite tipos de datos complejos (texto.2. Nivel Externo Interno Definición Nivel estructural de la base de datos que define las vistas de los usuarios.dotadas de asistentes generadores de código: Access (Visual Basic. 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. 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. Tabla 1. imagen. tiene como principal característica la optimización relaciona1 de los sistemas en entornos multiusuario. cuya facilidad de manejo derivó en una excepcional productividad e impresionante impacto económico. En la siguiente figura. SQL). Sistemas basados en conocimiento 9 y estandarización de SQL. Es posible clasificar los distintos sistemas como gestores de información “natural”. permitió una mayor integración.. y el modelo relacional. Arquitectura de tres niveles. En la evolución de esta generación destacan dos indicadores: una arquitectura a tres niveles con descripción recursiva de datos (ANSI.

2. aún cuando prácticamente todas las restricciones sobre los datos se comprueban en los programas. dado que no almacenan ningún tipo de información para el procesamiento de datos.1 Sistemas Orientados al proceso y SGBD clásicos Sistemas que operan sobre conjuntos de registros agrupados en “ficheros”. las restricciones. procesos y el control se distribuye en los programas que acceden a los ficheros. 1980 2000 SGBD ORIENTADOS AL OBJETO SGBD LÓGICOS (REL AMPLIADOS) 2. . Se distinguen por el acceso secuencial a cadenas de caracteres. cuya naturaleza reside en la recuperación y almacenamiento simple. Sistemas basados en conocimiento 10 Archivos con acceso directo Archivos Secuenciales 1960 SGBD JERARQUICOS 1970 SGBD RED Publicación del modelo Relaciona1 de Codd SGBD RELACIONALES. 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). Estos sistemas “clásicos” enfrentan graves problemas de redundancia al encontrarse dispersa la semántica de los datos en los programas. interpretadas por los programas.4 Clasificación de los SGBD 2.4.

Sistemas basados en conocimiento 11 2. así.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. demonios. aserciones e incluso dominios.4. en un SGBD semántico la base de datos incluye información sobre restricciones. y que han sido previamente especificados en la fase de definición -intensión. a través de disparadores. los desarrolladores incorporan acciones que el sistema ejecuta sin la intervención del usuario. habilitando restricciones de diferentes tipos (CHECK). reglas. Tecnología basada en procedimientos que se activan de forma automática. etc.3 SGBD activos En este tipo de sistemas. 2. los SGBD incorporaron mayor número de información sobre los datos en el propio catálogo de la base de datos.4. información sobre datos y los datos en sí.de la base de datos.2. .

2. mientras que la tecnología de base de datos se emplea para asegurar un almacenamiento eficiente y fiable. encontramos además. con el objetivo de definir con mayor precisión y naturalidad el conjunto de reglas que se ejecutan. . Sistemas basados en conocimiento 12 De hecho. de hecho. Acción (ECA. cuando ocurre un evento se evalúa la condición y si ésta se satisface se ejecuta la acción). Condición.4. el uso de SQL es prioritario en el desarrollo de estos sistemas. la programación lógica. en la base de datos información de control. representan patrones invocados donde las condiciones para invocar se revisan en cada paso. Centra su acción en el núcleo de los programas que acceden a los datos. en forma similar a los primeros desarrollos de bases de datos.2. la programación lógica se utiliza principalmente como lenguaje de consulta. Atendiendo los conceptos de algunos autores. 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. un SGBD activo se distingue porque su modelo de conocimiento describe las situaciones y las reacciones correspondientes: Evento. Sistemas que incorporan una ampliación al Lenguaje de Definición de Datos (LDD).4 SGBD deductivos La programación lógica ha ido evolucionando desde mediados de la década pasada hasta nuestros días ampliando sus horizontes en el desarrollo de sistemas gestores de bases de datos. frente a los SGBD semánticos.

aunque podríamos considerarlos como la tendencia a .2.4. que es poco procedimental y orientado a conjuntos. existiendo en la actualidad diferentes versiones. todavía no existen productos comerciales que puedan incluirse en esta categoría. 2. de procesos” de una SGBD activa. Sintácticamente el DATALOG es muy parecido al Prolog. Sistemas basados en conocimiento 13 Aunque. aunque algunas de sus nociones se van incorporando en la nueva generación de SGBD relacionales-activos” Las reglas. el motor de inferencia se encuentran en el núcleo del programa que accede a los datos. así como los padres de los ancestros). Este tipo de lenguajes resulta muy útil para hacer consultas de tipo recursivo.5 SGBD orientadas al objeto Conocidos también como SGBO. lo que lo hace más adecuado para bases de datos. En sistemas más complejos se enlaza el modulo de “respuesta” como la entrada “inf. normalmente. en lugar de utilizar un lenguaje como Prolog (que procesa una tupla a la vez) se suele emplear un lenguaje relaciona1 declarativo denominado DATALOG. siendo clásica la de los ancestros de una persona (conociendo que los padres de una persona son sus ancestros. suelen almacenarse en ficheros de texto o con formato plano independientes.en forma binaria. con el objetivo de ser “reprogramables” y se accede a ellos generalmente. Sin embargo.

6 SGBD multidimensionales . 2. etc. J++.). soportar completamente la funcionalidad de los objetos compuestos.4. Bindings. es conveniente particularizar que en febrero de 1997 en reunión del grupo ISO/IEC JTC1/SC21M/G3 se presentó la solicitud de aprobación del SQL3 (las partes Foundafion. almacenamiento de los servicios (métodos) en la base de datos. soporte de vistas y lenguajes de consulta y de optimización. Este tipo de sistemas comienza a incursionar en forma sólida en el mercado. definición dinámica de clases. son: combinar acceso declarativo y acceso navegacional. actualmente existe una sólida convergencia entre OQL y SQL3. Herramientas que aseguran la interoperabilidad de bases de datos relacionales y bases de objetos. Herramientas de conversión de esquemas relacionales a esquemas OO y viceversa. interoperabilidad de BDR y BDO. mecanismos para definir restricciones y disparadores. herramientas de migración de esquemas. acceso a los metadatos. Herramientas de migración de esquemas. en esta tendencia destacan: interfaces de PO0 sobre motores relacionales (Visual Basic. VC++. Sistemas basados en conocimiento 14 extender los SGBD relacionales mediante la incorporación de la programación orientada a objetos. gestión de la extensión de las clases. Algunos aspectos en los que se considera necesaria una mayor investigación. herramientas de conversión de esquemas relacionales a esquemas OO y viceversa.2. bases de datos y aplicaciones relacionales a OO y viceversa. debido a la aparición de un número cada vez mayor de herramientas de conectividad entre los mundos relacional y orientado a objetos: • • • • lnterfaces de programación orientada a objetos sobre motores relacionales. Persistent Stored Modules y Object) como norma internacional con efectos a diciembre de 1998. etc.

pero no puede aplicarse a diferentes columnas en una misma tupla. sus principales diferencias frente al modelo de tablas relacionadas. reside en que todos los dominios pueden encontrase relacionados. las relaciones afectan sólo campos clave o campos con naturaleza idéntica-asociativa. en contraparte dentro del esquema de tablas.2. 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. cada casilla del hipercubo contiene datos agregados (información de. las limitaciones funcionales de SQL que sólo pueden efectuar SUM (sumatoria) y AVG (Average. de hecho. ni utiliza LDD particulares. promedio) del mismo campo en todas las tuplas. representan los datos mediante matrices de n dimensiones denominadas “hipercubos” asignando a cada dimensión un dominio específico jerarquizado. Otra significativa diferencia es que los sistemas relacionales soportan estructuras planas y presentan serias dificultades para gestionar interrelaciones multidimensionales por ejemplo. .. Sistemas basados en conocimiento 15 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).) que relacionan los elementos entre las distintas dimensiones.. éstas actúan como apuntadores para identificar los valores dentro de la matriz.

El simple concepto dado. El uso de conocimiento específico de un determinado dominio. y la forma cómo éste es utilizado. puede causar confusión ya que muchos sistemas basados en programas convencionales podrían ser incorrectamente categorizados como sistemas basados en conocimiento. Sistemas basados en conocimiento 16 2. aunque no necesariamente el proceso seguido por ambos puede ser igual. A este conjunto de métodos. La solución es esencialmente la misma que hubiera dado un ser humano confrontado con idéntico problema. . procedimientos y técnicas.5 Conocimiento y bases de datos Los métodos generales desarrollados para la resolución de problemas y técnicas de s búsqueda al inicio de la era de la IA demostraron no ser suficientes para resolver los problemas orientados a las aplicaciones. que estudia los sistemas basados en el conocimiento. Esta inconsistencia puede ser aclarada.La separación que existe entre el conocimiento. se lo conoce como Inteligencia Artificial Débil. como una rama de la IA. 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 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”. 2. ni fueron capaces de satisfacer los difíciles requerimientos de la investigación.2. 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 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.

antes que algorítmica del conocimiento utilizado.2. definido más allá de su forma extensa (hechos e instancias almacenados en la base). han dado como resultado un interés creciente en extender los sistemas de bases de datos a sistemas de bases de datos inteligentes. hechos. los programas convencionales utilizan algoritmos para resolver problemas. Actualmente.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. Conocimiento específico de la aplicación. Conocimiento que sólo puede ser descrito por un procedimiento. eventos. Conocimiento general procedimental. 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. relaciones. Conocimiento sobre las dependencias y restricciones entre los datos. 2. los describe de la siguiente manera: • • • Conocimiento estructural. mediante mecanismos lógicos. En el desarrollo de una base de datos inteligente implica la representación del conocimiento. comprende el estudio de formalismos y estructuras en el tratamiento de objetos. Conocimiento que está determinado por las reglas y convenios que se aplican en un dominio de problema en particular. etc. 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. Dicho de una manera simple. Wiederhold . Los . La naturaleza heurística. mientras que los sistemas basados en conocimiento resuelven problemas donde las soluciones algorítmicas no existen o son muy costosas para ser implementadas. Sistemas basados en conocimiento 17 3.

una extensión de la lógica de proposiciones. costumbres y asociaciones. unida a la habilidad de utilizar estas nociones en forma efectiva para modelar diferentes aspectos del universo que nos rodea. conceptos. Por tanto. para representar el conocimiento. En general. dependencias. ideas. procedimientos. El conocimiento incluye y requiere del uso de datos e información. 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. tenemos la certeza de que de los datos en bruto raramente se obtendrán de una manera directa beneficios. La inteligencia requiere de la posesión y acceso al conocimiento. combina relaciones. Epistemología es el estudio de la naturaleza del conocimiento. es necesario una nueva 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. o el acto. mientras que metaconocimiento es conocimiento acerca del . ¿ 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. Los conceptos de conocimiento e inteligencia están íntimamente ligados. lugares. denominada lógica "0+" o representación objeto-atributo-valor. Es la familiaridad con el lenguaje. y la noción del saber con datos e información. abstracciones. Sistemas basados en conocimiento 18 tradicionales sistemas basados en conocimiento han utilizado con gran asiduidad. En el caso que nos ocupa.2. hecho o estado de conocer. Fundamentemos. Conocimiento no debe ser confundido con datos o información. Además. 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. reglas.

como cadenas de caracteres o colecciones de señales eléctricas o magnéticas dentro de un computador. el conocimiento declarativo es conocimiento pasivo. encontrar. El adjetivo heurístico significa medio para descubrir. El conocimiento heurístico usualmente se lo adquiere a través de la experiencia. como palabras habladas o escritas en algún lenguaje. El conocimiento puede ser de tipo procedimental. Por otro lado. conocimiento acerca de lo que se conoce. Por ejemplo. La información personal en una base de datos es un típico ejemplo de conocimiento declarativo. expresado como sentencias acerca de los hechos del mundo que nos rodea (el saber que hacer). Se entiende por heurístico a un criterio. su representación constituye una de las máximas prioridades de la investigación en IA. Conocimiento procedimental es aquel conocimiento compilado que se refiere a la forma de realizar una cierta tarea (el saber como hacerlo). método o truco utilizado para simplificar la solución de problemas. estrategia. declarativo o heurístico. El conocimiento puede ser representado como imágenes mentales en nuestros pensamientos. esto es. en forma gráfica o en imágenes. los pasos necesarios para resolver una ecuación algebraica son expresados como conocimiento procedimental. consideraremos las representaciones escritas y sus correspondientes estructuras de datos utilizadas para su almacenamiento en un computador. El conocimiento heurístico es un tipo especial de conocimiento usado por los humanos para resolver problemas complejos.2. Dado que el conocimiento es importante y primordial para el comportamiento inteligente. Está relacionado con la palabra griega heuriskein que significa descubrir. 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. En nuestro estudio. Tales tipos de datos son piezas explícitas de conocimiento independiente. Sistemas basados en conocimiento 19 conocimiento. .

Una representación manipulable es aquella que facilita la computación. . los problemas involucrados en el desarrollo de una representación del conocimiento son complejos. la información es accesible a otras entidades que usan la representación como parte de una computación. En representaciones manipulables. Debido a la variedad de formas que el conocimiento puede asumir. 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. se debe tratar que el conocimiento esté representado de tal forma que: • • • • • Capture generalizaciones. usualmente implantadas por sistemas o lenguajes procedimentales y sistemas basados en reglas (sistemas de producción). El conocimiento declarativo puede ser representado con modelos relacionales y esquemas basados en lógica. Pueda ser utilizado en diversas situaciones aún cuando no sea totalmente exacto o completo. Pueda ser utilizado para reducir el rango de posibilidades que usualmente debería considerarse para buscar soluciones. Pueda ser comprendido por todas las personas que vayan a proporcionarlo y procesarlo. Pueden estar caracterizados por gramáticas formales. Los modelos procedimentales y sus esquemas de representación almacenan conocimiento en la forma de cómo hacer las cosas. Pueda ser fácilmente modificado. interrelacionados y dependientes del objetivo. Los modelos relacionales pueden representar el conocimiento en forma de árboles. grafos o redes semánticas.2. Los esquemas de representación lógica incluyen el uso de lógica proposicional y lógica de predicados. En términos generales.

en el sentido que la enumeración puede ser redundante e ineficiente. la modificación simplemente de se las representaciones o se declarativas es usualmente Las muy fácil.& v (no exclusivo) ¬ ⊃⇒ ≡ El resultado de evaluar una proposición es falso o verdadero: P T T F F Q T F T F P^Q T F F F PvQ T T T F ~P F F T T P⊃Q ⊃ T F T T P≡Q T F F T . como procedimentales (un conjunto de reglas para manipular los hechos).1 Representación mediante cálculo de predicados Fundamentado en la lógica simbólica. 2. en cambio.2. trata esencialmente las relaciones entre enunciados o proposiciones simples y las compuestas (mediante conectivas aplicadas a proposiciones simples). Representaciones prácticas pueden incluir elementos tanto declarativos (listado de hechos conocidos). representaciones’ procedimentales.6. agrega elimina conocimiento. pueden ser más compactas. sacrificando flexibilidad. Las conectivas utilizadas son las siguientes: Conectiva Y O NO IMPLICA EQUIVALENTE Denotada como AND OR NOT IF-THEN IF-ANO-ONLY-IF Simbología ^. Sistemas basados en conocimiento 21 Las representaciones declarativas son usualmente más expansivas y costosas. Sin embargo.

sin embargo resulta -en el mejor de los casos. Esto es análogo a la definición en un diccionario.nodo tipo (clase).2. los cuales pueden ser. Los “conceptos” se definen en forma indirecta en la red semántica mediante la referencia a otros nodos. previamente Este mecanismo de inferencia es el más viable para la implementación de sistemas de naturaleza deductiva. para todo (∀ (X)).insuficiente en la implementación de sistemas de naturaleza inductiva. variables o funciones Conjuntos de predicados asociados a uno o más argumentos definidos Conjuntos de conectivas u operadores lógicos (v. donde los nodos pueden ser de dos tipos: • • Referidos en forma directa al significado del concepto . Referidos indirectamente al concepto mediante un apuntador al nodo tipo . etc. en donde se usan otras palabras (nodos) para definir una palabra. constantes. Las ligas también pueden ser de diferentes tipos indicando diferentes relaciones entre nodos.nodo “token” (instancia u objeto).6. 2. algunas de las más usadas son: . que a su vez están definidas en función de otras palabras. Tabla) Cuantificadores universales: existe. Sistemas basados en conocimiento 22 Un sistema que implemente la inferencia por cálculo de predicados deberá diferenciar los siguientes elementos: • • • • Términos. que a su vez se refieren a otros.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.

pero estos tienen ligas a otros planos en que hay conceptos relacionados. como subclases.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.. etc. tiene sus antecedentes en los trabajos de Post (1943). pero también a nodos de otros planos que están relacionados. superclases. En cada plano hay un nodo tipo y una serie de nodos “token”. los algoritmos . 2. .Descripción: Expresar un concepto en base a sus componentes y relaciones entre ellas (procesamiento del lenguaje natural). 3. Es decir que un nodo tiene ligas a nodos del mismo plano que lo definen.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....6.Búsqueda asociativa: Encontrar si están relacionados dos o más conceptos. y su tipo de relación mediante el seguimiento de la red hasta encontrar las interacciones.) La red semántica se puede ver dividida en planos.. ) Disjunción ( Av B v C . Sistemas basados en conocimiento 23 • • • • B es una subclase o instancia de A (es) B y A están relacionados en la forma indicada por R Conjunción (A & B & C . En general es posible usar este tipo de estructuras para diferentes tipos de razonamiento: 1. En cada plano se tiene la definición de un concepto.2. analogías. los conceptos representados de esta manera se pueden definir 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). 2..

Frames (Minsky 1975). recae el proceso de inferencia denominado "control": • • • Selección de las reglas pertinentes. manipule variables y en algunos casos clases sintácticas (parsing). Básicamente. Podemos observar que funcionalmente el sistema opera en fases de reconocimiento (selección de reglas pertinentes.2. la sintaxis de las reglas es diversa y se estructura en función del proceso de selección y ejecución de éstas. se precisa de un intérprete que accese a las reglas. .. en éste. entre las que destacan: Esquemas (Bartlett 1932).6. En el desarrollo de un motor que utilice está representación. una regla de producción consta de un par ordenado de símbolos (situación-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. validación) y acción.4 Representación del conocimiento por objetos estructurados Los objetos estructurados tienen diversas denominaciones. 2. Abelson 1977). Validación (reglas cumplidas) Ejecución de las acciones especificadas por las reglas cumplidas. 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. Scripts (Schank. Sistemas basados en conocimiento 24 de Markov y en la lingüística de Chomsky.. dada su representación modular y uniforme.

1977. Constantes. los conocimientos que trata no se expresan en forma declarativa. El nombre de un procedimiento específico (ejecutable automáticamente o mediante requisición). Apuntadores a otros objetos. entre otros). Sistemas basados en conocimiento 25 Objetos (Goldeberg. .2. Cuando es parte de una hipótesis alternativa. Cuando el objeto se ha eliminado o no ha sido instanciado. 3. 1982). Descriptores funcionales (Kay M.5 Representación mediante procedimientos Este tipo de representación utiliza un lenguaje de alto nivel en el tratamiento de los conocimientos. las características generales de este modelo de representación son: a) Cada objeto tiene asociado un conjunto de atributos que lo caracterizan. Valores por defecto 5. Steels 1982.6. b) Cada atributo tiene asociado un valor. Los estados de los objetos definidos por el sistema son: Activos Semiactivos Inactivos Cuando se encuentra presente en la lista de hipótesis en curso de tratamiento. Valores obtenidos durante ejecución. el cual a su vez puede ser otro objeto c) Los atributos(valor) corresponden a: 1. El comportamiento del programa está dirigido por instrucciones. 4. 2. sino que se encuentran a través de todo el programa. 2. en forma explícita mediante un programa.

. muy usada entre los sistemas de aprendizaje supervisado. cada C i es una clase. sino si d2 . se puede pensar en una lista de decisión como en una regla de la forma “si di entonces C1 . Se basan en la partición del conjunto de ejemplos según ciertas condiciones que se aplican a los valores de los atributos. estas reglas pueden ser simplemente relaciones de igualdad entre un atributo y un valor. C n ) donde cada d i es una descripción elemental.6. Sistemas basados en conocimiento 26 2. C1 )... seleccionando aquél con el que la reducción es máxima.. y las hojas con las diferentes clases.). por ejemplo. sino si d n entonces C n "....2. Una lista de decisión es una lista de pares de la forma (d1. etc. Los sistemas basados en árboles de decisión forman una familia llamada TDIDT (Top-Down Induction of Decisión Trees).6 Representación mediante árboles de decisión Los árboles de decisión son una forma de representación sencilla. (d2. Es una generalización de los árboles de decisión y de representaciones conjuntivas (CNF) y disyuntivas (DNF). Las descripciones elementales de los pares que forman la lista de decisión tienen la misma forma que los complejos de AQ.6. La clase de un objeto será C j cuando d j sea la primera descripción que lo satisface. las ramas con los posibles valores del atributo. (d n .. Su potencia descriptiva viene limitada por las condiciones o reglas con las que se divide el conjunto de entrenamiento. 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). Los nodos del árbol están etiquetados con nombres de atributos. y la última descripción C n es el valor verdadero. 2. para clasificar ejemplos en un número finito de clases. etc.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. o relaciones de comparación (“mayor que”. Por tanto. 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). C2 ).

Sistemas basados en conocimiento 27 2. denotado por R(A1.. el número de dominios que intervienen en su definición.. se verifica que X i n ∈ D i. pertenecen al dominio Di. El producto cartesiano de una serie de dominios D1... podemos definir la . .x n. por lo que existen restricciones de integridad asociadas a cada esquema de relación. con un conjunto concreto de tuplas resulta una instancia o extensión de dicho esquema. Se llama relación a cualquier subconjunto del producto cartesiano de dos o más dominios. A2. .). .Dn..de valores. Normalmente una relación es representada como una tabla de valores. .1 Estructura e integridad. i = 1 . ocupándonos de 4a estructura e integridad de los datos así como de su manipulación.7 Representación Lógica de un SGDB relaciona1 En los siguientes párrafos ofreceremos una visión detallada del esquema relacional. Finalmente. Se llama cardinalidad de una relación al número de tuplas que lo contiene.D2. .x 2.. denotado por: D1xD2x. . define lo que se llama un esquema de relación.7. x D n es n i. Con atención a cómo se encuentran estructurados los datos: Un dominio es un conjunto -normalmente finito. x Di.. desde la óptica de la lógica de primer orden.. La aridad o grado de una relación R ⊂ D1 x D2 x ... Una instancia de BD es un conjunto finito de relaciones finitas. An. No todas las instancias acordes con un determinado esquema son semánticamente válidas (coherentes con la semántica asociada de BD).) tales que para cualquier i.. en las que las columnas llevan asociado un identificador (atributo). A2.. es el conjunto de todas las tuplas (x 1. An. de manera que una relación específica R1. Una relación R de atributos A1. esto es. . . .2. así los valores de un atributo asociado a la columna i.. 2.

es decir. Que asigna los resultados de otras operaciones relacionales a una nueva relación con el objetivo de preservar los resultados. expresado como combinación booleana de términos. Operaciones sobre conjuntos. Selección. Los operadores básicos de AR pueden agruparse en: Operación de asignación. por ejemplo. Proyección. se precisa que los operandos sean del mismo grado y que los iésimos atributos tengan el mismo dominio.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.2. el subconjunto de las tuplas de una Relación para el cual se cumple un predicado dado. Intersección. Unión. • Algebra Relacional. Operaciones especiales. reunión y División: * Selección: Operador algebraico que produce un subconjunto “horizontal” de una relación específica. Sistemas basados en conocimiento 28 estructura general como un superconjunto de esquemas de relación y de restricciones de integridad. 2. *Proyección: Produce un subconjunto “vertical” de una relación dada. a excepción de ésta última. Diferencia y Producto Cartesiano. la segunda proporciona la semántica para definir las relaciones resultantes. . el subconjunto obtenido al seleccionar los atributos. de la primera obtenemos una colección de operadores y operaciones explícitas.

entonces ∃s ∈ R (P1 (s)) y ∀s ∈ R (PI (s)) también lo son.Si P1 y P2 son formulas.Si P. y P1. entonces (P1 ) y (¬P1). . ⇒ P2 . también lo son P1 ∧ P2 . tales que t.Un átomo es una fórmula. Una expresión en el CRT. Se dice que una variable para t es libre si no se encuentra cuantificada (universal o existencialmente). con c como constante del domino del atributo x. . . >=. Las fórmulas se construyen a partir de los átomos usando las siguientes reglas: . 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. tiene la forma {P/P(t)} que representa el conjunto de todas las tuplas t que hacen verdadera la fórmula o predicado P. x es un atributo sobre el que se define k y θ operador de comparación (<. >. Una fórmula del CRT se compone de átomos.k[x] θ v[y].=).s[x] θ c. P1 v P2.2. . Usaremos t[A] para denotar el valor que tiene la tupla t para el atributo A y t ∈ R para denotar que t está en la relación R. produciendo una de grado m. es una fórmula. <=. • Cálculo Relaciona1 (tupías [CRT] y dominios[CRD]) Cálculo Relacional de Tupías. también lo son.Si P1 (s) es una fórmula que contiene una variable de tupla libre s. donde k y v son variables tupla. 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.k ∈ R. da como resultado todas las tuplas t. . igual que el caso anterior. donde k es una variable tupla y R una relación. de las siguientes formas: .

xn.X2.. .. .. éstos pueden tener las siguientes formas: . ) } donde x1. por ejemplo el número de tuplas que no están en una relación {t/¬ (t∈R)}..xθy. Cálculo relacional de dominios.2. xn representan las variables de dominio y P la fórmula compuesta de átomos. > | P (x1. dom(P) es el conjunto de todos los valores representados por P. Las expresiones tienen la forma: {<x1 ....…xn. . Sistemas basados en conocimiento 30 Siguiendo esta definición es posible generar una relación infinita. con x e y operados por comparación.x2 .. Esta forma del cálculo relaciona1 utiliza variables de dominio a las que se asignan valores del dominio de un atributo (dato). equivalente al caso anterior y c es una constante del domino del atributo de x.x2.xθc..xn >∈ R. donde R es una relación de n atributos...x2 ..< x1 . así se introduce el concepto de dominio de una fórmula P..

otros como MYCIN. En este nuevo entorno. Entre 1965 y 1972 fueron desarrollados varios de estos sistemas. también se han producido grandes avances en el tratamiento del conocimiento. del experto humano. Por ello el creador de un SE debe comenzar por identificar y recoger. gracias a las investigaciones realizadas en la inteligencia artificial. factor fundamental para la toma de decisiones. etc. En teoría estos sistemas son capaces de razonar siguiendo pasos comparables a los que sigue un especialista (médico. muchos de ellos tuvieron un alcance muy limitado. los conocimientos que éste utiliza: conocimientos teóricos. DENDRAL y PROSPECTOR. 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 . utilizando los ordenadores electrónicos y los medios que proporciona la tecnología de la información. pero sobre todo los conocimientos empíricos adquiridos en la práctica. Sistemas expertos 31 3. Además. Sistemas expertos 3. matemático. cuando resuelve un problema propio de su disciplina.1 Antecedentes En las últimas décadas. de la información y de las comunicaciones. se han producido grandes cambios en el entorno de las empresas y las organizaciones. biólogo.). actualizada y oportuna. con el desarrollo de los sistemas basados en el conocimiento y los sistemas expertos. la toma de decisiones de una manera eficaz precisa de una forma rápida de información suficiente. geólogo. 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. El estudio y desarrollo de los Sistemas Expertos (SEs) comenzó a mediados de la década del 60.3. como consecuencia de los avances de las nuevas tecnologías de la producción.

Razonan heurísticamente. que incorporan en la base de conocimiento del sistema el conocimiento de un experto. incluyendo el lenguaje natural. Manipulan y razonan sobre descripciones simbólicas. que se obtiene a partir de la pericia (conocimiento técnico) de un experto.. Aplican técnicas de búsqueda. usando lo que los expertos consideran que son reglas empíricas efectivas. Pueden inferir nuevos conocimientos a partir de los existentes. 6. 7.2 Programación lógica en Sistemas expertos La programación lógica tiene sus antecedentes más próximos en los trabajos de prueba automática de teoremas de los años sesenta. Pueden funcionar con datos inciertos. En este sentido. Una definición formal de los sistemas expertos. 3. 3.. J. Hayes-Roth considera como características más importantes de los sistemas expertos las siguientes: 1. Los sistemas expertos también pueden ser definidos en función de sus características funcionales. Pueden explicar su proceso de razonamiento y justificar sus conclusiones. 5. Robinson propone en 1965 una . 8. Sistemas expertos 32 un determinado dominio. Los sistemas expertos son un subconjunto especial dentro de los sistemas basados en el conocimiento. que muchos considerarían fundamental.3. si se le solicita. 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. Contemplan múltiples hipótesis. es la capacidad del sistema. Pueden resolver problemas normalmente atacados por los expertos humanos.“. 2. es la aprobada por el Grupo Especialista en Sistemas Expertos de la Sociedad Británica de Ordenadores. aceptada por muchos autores. de justificar su propia línea de razonamiento de un modo directamente inteligible para el interrogador. 4. e interactúan con los humanos de forma adecuada. Una característica adicional deseable. de tal forma que el sistema pueda ofrecer asesoramiento inteligente o tomar una decisión inteligente sobre una función del proceso. A.

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 cual la 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.

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:

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.

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.

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

3. Sistemas expertos

35

experiencia y el conocimiento de expertos. En cada estadio de los procesos de 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 los 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”,

esto es. constituye el eje sobre el que se ha de construir el modulo de gestión de base de conocimientos. Motor de inferencia: Es el mecanismo usado para extraer el conocimiento de la base de conocimientos. La base. Interface con el usuario: Es el medio de comunicación entre el sistema experto y el usuario. 3. manuales. predicados. 3. contiene el conocimiento del sistema con respecto a un tema específico para el que se diseña el sistema. Base de conocimientos: Consiste en las reglas. Este conocimiento se codifica según una notación específica que incluye reglas.3. Básicamente el Sistema Experto esta compuesto por los siguientes módulos: 1. Para los efectos de nuestro estudio. Sistemas expertos 36 o sea no precisos. seleccionando los datos y pasos apropiados para presentar los resultados. redes semánticas. 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).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. Combina los hechos y las preguntas particulares. para alcanzar una solución o conclusión determinada. procedimientos y datos intrínsecos al área del problema. utilizando la base de conocimiento. etc. la cual hace uso de la representación . 2. Generalmente se construye a través de consulta con uno o varios expertos del área. la gestión de procesos deductivos de la base de reglas que opera sobre la base de datos. para incluir el conocimiento heurístico. la arquitectura de los sistemas expertos. frames y objetos.

Aunque la creación de vistas es similar al uso de reglas para definir bases de datos en intenso. 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. En particular. éstas no son tan poderosas como las reglas lógicas. Sistemas expertos 37 explícita del conocimiento a utilizar por el sistema y de su interpretación y manipulación lógica por medio de mecanismos de inferencia. que permitan deducir nuevo conocimiento a partir del que ya se conoce. Figura 6. . 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. Aspectos a considerar en la programación de SE. las listas de ancestros y las jerarquías de dirección por ejemplo).3.

4. abordaremos en forma somera los principales indicadores teóricos que conceptualizan la IA (Inteligencia Artificial) vinculados con los alcances de nuestra investigación. razonar y actuar”. Una buena definición de IA es algo elusiva y controversial. percepción. y sistemas que realizan otro tipo de actividades que requieren de inteligencia humana”. es decir. A continuación se transcriben algunas de ellas: “La IA es una rama de la ciencia de computación que comprende el estudio y creación de sistemas computarizados que manifiestan cierta forma de inteligencia: sistemas que aprenden nuevos conceptos y tareas. sistemas que pueden razonar y derivar conclusiones útiles acerca del mundo que nos rodea. el estudio y la simulación de las actividades intelectuales del hombre (manipulación. razonamiento. sistemas que pueden comprender un lenguaje natural o percibir y comprender una escena visual. creación)”. Arquitectura de una BDI 38 4. cada autor cree. encierra el campo. “La IA es un campo de estudio que busca explicar y emular el comportamiento inteligente en términos de procesos computacionales”. “La IA es el estudio de las computaciones que permiten percibir.1 Fundamentos En el presente capítulo. Arquitectura de BDI 4. aprendizaje. “La IA estudia las representaciones y procedimientos que automáticamente resuelven problemas usualmente resueltos por humanos” . “La IA es una ciencia que trata de la comprensión de la inteligencia y del diseño de máquinas inteligentes. Cada libro de texto en IA propone una definición que enfatiza las diferentes perspectivas que. fundamentalmente porque la inteligencia humana no está completamente entendida.

Desde el punto de vista de ingeniería. A su lado. la IA puede considerarse en parte como ingeniería y en parte como ciencia: Como ingeniería. Como ciencia. 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.4. estos sistemas son útiles en función de la validez de su conocimiento. 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. los SGBD relacionales . Desde el punto de vista de los objetivos. Toda computación. Desafortunadamente. y de cómo desarrollar sistemas informáticos. requiere de una representación de cierta entidad y de un proceso para su manipulación. el objetivo de la IA es buscar la explicación de diversas clases de inteligencia. está basado en el desarrollo de adecuadas representaciones de conocimiento y sus correspondientes estrategias de manipulación. en general todos coinciden en que la IA trata de alcanzar inteligencia a través de la computación. la mayor parte del trabajo requerido para construir sistemas de IA. además de que su construcción es un proceso complejo y costoso. actuando como un conjunto de ideas acerca de cómo representar y utilizar el conocimiento. 4. Arquitectura de una BDI 39 A pesar de la diversidad de conceptos propuestos para la IA.2 Descripción Las aplicaciones de mayor impacto que han surgido de la Inteligencia Artificial se concentran en los Sistemas Basados en Conocimiento. el objetivo de la IA es resolver problemas reales.

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. sino de millones de datos almacenados en soporte informático. desarrolladas hace tiempo. Consecuencia de esta creciente necesidad ha aparecido un nuevo campo de interés: la minería de datos (data mining). . Las técnicas de análisis estadístico. la intuición del investigador le conduce a formular la hipótesis. Por ello. el conocimiento se ha venido obteniendo por el clásico método hipotético deductivo de la ciencia positiva. etc. que puede traducirse como escuadriñar.4. que incluye nuevos métodos matemáticos y técnicas siftware ("sift". cernir. Arquitectura de una BDI 40 han evolucionado hasta consolidar una robusta plataforma altamente funcional y económica. o leyes que enuncien su comportamiento.) para análisis inteligente de datos. pero no inducir relaciones cualitativas generales. permiten obtener ciertas informaciones útiles. En él es fundamental el paso inductivo inicial: a partir de un conjunto de observaciones y de unos conocimientos previos. En el fondo de todas las investigaciones sobre inducción en bases de datos subyace la idea de automatizar ese paso inductivo. Esta “intuición” resulta inoperante cuando no se trata de observaciones aisladas y casuales. en dichos sistemas. por ello. con un alto grado de penetración en distintos mercados: los sistemas de bases de datos conllevan la automatización de cada vez más actividades reduciendo costos y mejorando la calidad de desempeño. se incrementa de forma continua la diferencia existente entre la cantidad de datos disponibles y el conocimiento extraído de los mismos. En muchas áreas del saber. para esto se requieren técnicas de análisis inteligente que todavía no han sido claramente establecidas. Cada vez más investigaciones dentro de la inteligencia artificial están enfocadas a la inducción de conocimiento en bases de datos.

la segunda -en que sustentamos nuestra tesis. obtenida sobre dominios finitos ( v. sino también diversos pasos previos de regular complejidad. En el esquema operativo de la minería de datos se distinguen -en razón directa de su implementación sobre SGBD relacionales activos. Normalmente el término minería de datos lo usan estadísticos. y su importancia crece de tal forma que incluso es posible que.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. los sistemas de aprendizaje se usen de forma masiva como herramientas para analizar datos a gran escala. y los posteriores. analistas de datos.4. al ser aplicados a bases de datos. para la solución de problemas particulares o la estructuración de conocimiento en lenguaje de alto nivel. como el filtrado y preprocesado de los datos. Arquitectura de una BDI 41 La minería de datos surge a partir de sistemas de aprendizaje inductivo en ordenadores. en el futuro. 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. mientras que KDD es más utilizado en inteligencia artificial y aprendizaje en ordenadores. Este proceso incluye no sólo el análisis inteligente de los datos con técnicas de minería de datos. fig. 7). . y la comunidad de sistemas de gestión de información. como la interpretación y validación del conocimiento extraído en que se involucran técnicas de la ingeniería del conocimiento.que opera con un propósito específico atendiendo un conjunto de reglas predefinidas y operando en un marco finito (segmentos de la BDD).

como las técnicas avanzadas para el almacenamiento. Fundamentalmente. En las bases de datos inteligentes [BDI] se pretende capitalizar tanto la evolución e integración de las bases de datos relacionales activas. La eficiente implementación de una BDI.4.8). una BDI. 7 KDD en un dominio finito. provenientes tanto de ficheros controlados de forma autónoma como de un SGDB (v. . precisa del desarrollo de un sistema que posea la capacidad de gestionar conocimiento complejo a través del procesamiento de datos simples.fig. recuperación y procesamiento de la información en el área de los sistemas expertos e inteligencia artificial. Arquitectura de una BDI 42 Fig. incorporar la capacidad de utilizar la experiencia en un dominio particular de aplicación para resolver clases de problemas dentro del dominio. deberá ser capaz de deducir hechos a partir de la base de datos aplicando axiomas deductivos o reglas de inferencia a esos hechos.

Su principal objetivo es permitir al usuario manipular el contenido de su base de datos de manera transparente. Creación del conjunto de datos objetivo. los criterios de rendimiento exigibles. pues intervienen factores como: conocer los cuellos de botella del dominio. apoyando la toma de decisiones y ofreciendo una alternativa para representar y manipular la semántica de las aplicaciones avanzadas. el conocimiento relevante y los objetivos del usuario final. cuáles son los objetivos. Los principales pasos dentro del proceso interactivo e iterativo del KDD pueden verse en la figura 8. Esto implica consideraciones . etc.4. 8 Procesamiento de datos en una BDI. 2. compromisos entre simplicidad y precisión del conocimiento extraído. usar conocimientos y hacer inferencias para facilitar la recuperación y visualización de la información. saber qué partes son susceptibles de un procesado automático y cuáles no. Arquitectura de una BDI 43 Fig. Desarrollo y entendimiento del dominio de la aplicación. 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. para qué se usarán los resultados que se obtengan. Este paso requiere cierta dependencia usuario/analista. y son los siguientes: 1. seleccionando el subconjunto de variables o ejemplos sobre los que se realizará el descubrimiento.

) que permitan filtrarlo de forma automática. 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. detección de desviaciones. 5. Preprocesado de los datos: eliminación de ruido. Elección del tipo de sistema para minería de datos. estrategias para manejar valores ausentes. Minería de datos. Interpretación del conocimiento extraído. Esto depende de si el objetivo del proceso de KDD es la clasificación. En este paso se realiza la búsqueda de conocimiento con una determinada representación del mismo. grados de libertad. La obtención de resultados aceptables dependerá de factores como: definición de medidas del interés del conocimiento (de tipo estadístico. Arquitectura de una BDI 44 sobre la homogeneidad de los datos. Elección del algoritmo de minería de datos 7. etc. 3. Incluye la búsqueda de características útiles de los datos según sea el objetivo final. agrupamiento de conceptos (clustering). su variación a lo largo del tiempo. en función de su sencillez. 4. con frecuencia. 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. que requiere un buen conocimiento del problema y una buena intuición. etc. marca la diferencia entre el éxito o fracaso de la minería de datos (paso 7). y que. . estrategia de muestreo. Transformación y reducción de los datos.4. Este es un paso crítico dentro del proceso global. normalización de los datos. regresión. con posibilidad de iterar de nuevo desde el primer paso. 6. 8. etc. etc.

Base principal en la que se concentra en diversas tablas el total de datos útiles del sistema. 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.3 Arquitectura Los SGBD Inteligentes no existen como tales. la optimización de tiempos y movimientos. apoyo a la toma de decisiones basada en hechos. constituida de selección de tuplas involucradas en un proceso de inferencia particular. para ello.integrará: 1. sin embargo. el mejor mantenimiento. considerando el desarrollo de una BDI sobre un motor relacional. Base en intenso. Consolidación del conocimiento descubierto. ofrecer opiniones informadas y explicación de sus razonamientos. Este paso incluye la revisión y resolución de posibles inconsistencias. el sistema -regularmente. el mejor diagnóstico de fallas. el mejoramiento del desempeño de personal no experto. y la retención del conocimiento y experiencia corporativa. por ejemplo la reducción en el tiempo de toma de decisiones. Una base de conocimiento dinámica. 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. hechos e incluso modelos de predicción con probabilidades de certeza. flexibilidad y apoyo a la reorganización y la reingeniería. reglas. Una base de datos relacional. incorporándolo al sistema. el mejor servicio. heurísticas. 2. la acelerada capacitación de personal mediante tutores. además. deberá permitir que el directivo u operador manipule grandes volúmenes de información entre los que encontramos ejemplos. o simplemente documentándolo y enviándolo a la parte interesada. Arquitectura de una BDI 45 9. .4. 4. Los beneficios son amplios y múltiples.

su arquitectura implica la creación de DDL y DML). Estructuran los procesos de inferencia en marcos de operación determinados. 5. Procesamiento lógico de condicionales: datos inexistentes. Así una BDI puede estar soportada en SGBD comerciales. la mayoría de los lenguajes anfitriones incorporan estructuras de control sobre las que se pueden implementar (Computación evolutiva e IPL). o en un lenguaje de programación lógica. sino en la explotación que el sistema pueda hacer de éstos. desarrollada en el lenguaje anfitrión. (Conocimiento con incertidumbre) Para los efectos de nuestro estudio. Integrando técnicas de inteligencia artificial para extraer conocimiento a partir del análisis de los datos. inaplicables. Módulos de acceso binario. no está necesariamente relacionada con la estructura de la BDD. Módulos de Preproceso. 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. (Lógica fuzzy y multivaluada) 4.4. 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. Arquitectura de una BDI 46 3. siempre que cuente con un módulo lógico o extensión lógica. para implementar la inteligencia del sistema. Una base de reglas. Enfocados al tratamiento de los datos inciertos en la base persistente. desconocidos. • Tratamiento de la Incertidumbre. nos ocuparemos de la arquitectura basada en los . etc. esta extensión deberá crear funciones y procedimientos particulares. indefinidos. de las que se espera: • Descubrimiento de conocimiento y búsquedas inteligentes.

informando resultados o . filtrar (en el caso de que exista incertidumbre. volver a convertir el conocimiento obtenido a formato relacional. ordenar y crear la base en intenso. Fig. En este proceso. el motor de inferencia operará sobre éstos (base en intenso. el sistema deberá seleccionar de la base persistente. con los campos precisos para la sustituir con sus valores las variables en el formato proposicional. Arquitectura de una BDI 47 estudios sobre transformación de problemas ILP (Programación Lógica Inductiva) a formato proposicional. para determinar la solución a un problema determinado. la mecánica de transformación se basa en la idea de convertir conjuntos de datos del formato relacional a formato proposicional. o base de conocimiento) aplicándoles el conjunto de reglas pertinentes (base de reglas). La forma de pasar de formato relaciona1 a formato proposicional consiste en crear una nueva relación.4. mediante lógica fuzzy o multivaluada). y. 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).modificando la base de datos persistente. creando una nueva relación. tuplas procedentes de una o diversas tablas.en su caso. 9 Arquitectura Relacional-ILP . si es el caso.

podemos considerar que el desarrollo es aún primitivo. al razonamiento natural. modelos lógico-matemáticos. etc.3. a través de herramientas . que aproximen las operaciones máquina. en años recientes. económico. Arquitectura de una BDI 48 La base en intenso. Sin embargo. las técnicas de esta rama de las ciencias de la información han abordado muchos campos prácticos y desarrollados herramientas sofisticadas de uso cotidiano en sectores comerciales e industriales. Las aplicaciones prácticas de la llamada Inteligencia Artificial han sido foco de controversia por muchos años. si comparamos los sistemas desarrollados con las habilidades cognoscitivas humanas. Table La base de reglas y las funciones de inferencia pertenecen al lenguaje nativo (Visual Basic 6) 4.1 Computación evolutiva e IPL La computación evolutiva es una rama de la inteligencia artificial enfocada al desarrollo de algoritmos genéticos. La ingeniería en sus diversas instancias. puede edificarse en -por lo menos dos formatos físicos (el formato proposicional. en el sistema propuesto.dependerá de la base de reglas y la naturaleza del motor de inferencia: Formato Archivo Plano (dbint.) para después. esto es. es persistente en ambos): un archivo plano (dbintdb) o mediante un objeto (Table) del lenguaje anfitrión. trata de desarrollar modelos de los procesos de interés (social. El formato físico -en cada caso. Claramente.4.db) Características Tanto la base de reglas como el motor de inferencia operan en forma periférica al sistema (Uso de Prolog).

o dinámico cuando dependen de éste.). e inclusive pueden obedecer a relaciones= empíricas elaboradas como fruto de la observación y la experiencia (relaciones estadísticas. las interacciones entre los diversos subsistemas que componen el proceso. bajo condiciones determinadas. que describiremos brevemente. múltiples algoritmos genéticos o evolucionistas basados en la existencia de un universo de acción (espacio finito de la base persistente). Arquitectura de una BDI 49 y metodologías adecuadas. evolucionar ampliando dicho conocimiento mediante un proceso de inferencia lógica fundamentalmente heurístico. En este universo. estos valores obedecen al conjunto de restricciones que definen el proceso y que configuran el espacio de soluciones viables. Dichos algoritmos se pueden edificar a partir de la programación lógica inductiva (Inductive Logic Programming ILP). en que un agente o entidad lógica parte de su conocimiento sobre los hechos inmediatos (conocimiento base. El modelado puede efectuarse apoyándose en las leyes físicas que rigen. poder extraer resultados útiles en diversos sentidos. 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. existente en las relaciones persistentes) y puede. 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. Las relaciones pueden poseer carácter estático cuando no interviene el tiempo como parámetro modelador. borrosas. etc. La programación lógica inductiva se define como la intersección entre el aprendizaje inductivo y la programación lógica. en caso de que verifique relaciones base sobre un requerimiento particular. • De la programación lógica hereda básicamente el formalismo de representación y su .4.

Se puede considerar la programación lógica inductiva como la búsqueda de cláusulas. podemos distinguir varias técnicas: generalización relativa menos general. En los sistemas de aprendizaje de orden . el conjunto de entrenamiento lo forman relaciones definidas de forma extensional. Según sea el método con el que se recorre el espacio de posibles cláusulas. muy útiles cuando se trabaja con objetos estructurados. Por el contrario. superando así dos de las principales limitaciones de las técnicas clásicas de aprendizaje en ordenadores: la rigidez en la representación del conocimiento (v.0 el conjunto de entrenamiento consta de vectores de valores. en estos sistemas. modelos de reglas. difíciles de describir en un formato objeto-atributo-valor.5 rules. 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). la construcción de un programa lógico que defina de forma intensional una relación objetivo (extensional) del conjunto de entrenamiento. La ILP utiliza la programación lógica como mecanismo para representar las hipótesis y las observaciones. se puede definir una ordenación entre ellas. En ocasiones. etc. etc. El conckimiento inducido permite definir clases en función del valor de los atributos. y a veces en forma de reglas: PRISM. y el conocimiento de base lo constituyen otras relaciones. resolución inversa. en lenguaje de primer orden. se representa en forma de árbol de decisión: ID3. siendo representable con expresiones de la lógica de proposiciones. C4. cada uno perteneciente a una clase conocida. definidas intensionalmente: El objetivo del aprendizaje es. consistentes con los ejemplos de entrenamiento. etc. 1) y la dificultad para expresar conocimiento de base (background knowledge). Dentro del espacio de todas las posibles cláusulas. búsqueda de grafos refinados. Cap. transformación del problema a formato proposicional. en los sistemas de aprendizaje de primer orden. C4.5. En este tipo de definiciones lógicas se permite la recursión y algunos cuantificadores. Arquitectura de una BDI 50 orientación a la semántica. .4.

juan). Para cada par de literales. c 2) = enfermo(X) :hijo-de(X. La rigg es la técnica en que se basa el sistema GOLEM. relativa a cierto conocimiento de base. 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. el número de literales de una rigg crece al menos de forma exponencial con el número de ejemplos existentes. Por ejemplo: c 1 = enfermo (pedro) :hijo-de(pedro. Generalización relativa menos general La generalización menos general (least general generalization) de Plotkin se basa en la idea de que si dos cláusulas c 1 y c 2 son ciertas. es la generalización menos general de ambas. Normalmente. fumador(Y). la generalización más específica común a ambas Igg(c 1 c 2) será también cierta con bastante plausibilidad. Existen sistemas que combinan técnicas de búsqueda de abajo hacia arriba (generalización menos general. fumador(juan) c 2 = enfermo (alberto) :hijo-de(alberto. fumador(josé) Igg(c 1 . aunque aún así el número de ellos suele ser grande. Y). como hace GOLEM) . 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 (bottom-up). GOLEM utiliza restricciones que evitan la introducción de literales redundantes. josé). esta operación se realiza comparándolos y sustituyendo por variables los atributos que no coincidan. La generalización relativa menos general (rigg) de dos cláusulas. Por ello. Arquitectura de una BDI 51 a. tanto en el antecedente como en el consecuente. Esto permite realizar generalizaciones de forma conservadora.4.

juan) tomando ahora cl y b3. La resolución inversa utiliza un operador de generalización basado en invertir la sustitución. Arquitectura de una BDI 52 con técnicas de arriba hacia abajo (especialización por introducción de nuevos literales. b.hijo-de(Y. obteniendo así un método de generalización. la resolución establece que (silogísmo hipotético) dadas las premisas p v q y 9 v r. la resolución requiere sustituciones de variables por valores de atributos. Por ejemplo. y la sustitución inversa q2 -1 = {Juan/X} se obtiene: c2 = enfermo(Y) :. dados los hechos: b1 = enfermo(pedro) b2 = hijo-de(pedro. Aplicada en lógica proposicional. se deduce que p v r. y la sustitución inversa ql -1 = {pedro/Y} se obtiene: cl = enfermo(Y) :. X). fumador(X).4. juan) b3 = fumador(juan) tomando b1 y b2. En lógica de predicados de primer orden. c. como FOIL).hijo-de(Y. Búsqueda en grafos refinados La principal técnica de especialización en ILP es la búsqueda de arriba a abajo (topdown search) en grafos refinados (refinement graphs). de la inferencia deductiva. Los sistemas que utilizan esta . Resolución inversa La idea básica de la resolución inversa (inverse resolution) consiste en invertir la regla de resolución.

La búsqueda de reglas se realiza a partir de los patrones de reglas existentes. Se denominan grafos 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. comienzan con la cláusula más general. Fig. Se denominan patrones de reglas a un tipo especial de reglas en las que los predicados son variables. que hace inabordable la búsqueda exhaustiva. La búsqueda dentro de éste grafo suele ser heurística. proporcionados por el usuario. debido a que se produce una explosión combinatoria en el conjunto de posibles especializaciones. cada una de las reglas así . Arquitectura de una BDI 53 técnica.4. a la que aplican especializaciones hasta que sólo cubra tuplas positivas. d. Patrones de reglas. o incremento de un nuevo literal en la cláusula en construcción). 10). 10 Grafos refinados. Para cada patrón de regla se prueban todas las posibles combinaciones de predicados existentes y. 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. En este grafo.

Cláusulas Normalmente el objetivo de los sistemas de ILP es la inducción de reglas que definan ciertos predicados. la regla enfermo(X) hijo-de(X. Estas restricciones pueden tener la forma de una cláusula en lógica de predicados de primer orden: padre-de(X. con la información. e.Y). Por ejemplo.R(X. Pero puede considerarse un enfoque diferente. con un patrón de reglas de la forma: P(X) :.Y) progenitor-de(X. cabe destacar la que se produce como . conocido como ILP no monótono. madre-de(X. Estas reglas deberían ser lo suficientemente precisas como para poder reemplazar a los ejemplos de la base de datos y que éstos fueran deducidos a partir de las mismas. Aunque existen diferentes formas de incertidumbre.Y) :. de forma inseparable.Y) v madre-de(X.progenitor-de(X.padre-de(X.4.Y) :.Y) falso :. que consiste en la búsqueda de restricciones dentro de la base de datos. 4. Arquitectura de una BDI 54 obtenidas.2 Conocimiento con incertidumbre La incertidumbre está asociada.3.Y).Y). fumador(Y).padre-de(X. Q(Y) se podría obtener.Y) La última de ellas se interpreta como que una persona no puede ser a la vez padre y madre de otra. se evalúa con los datos de entrenamiento. por ejemplo.

En muchas ocasiones sacrificamos parte de la información precisa disponible por otra más vaga pero más robusta. es decir. Los primeros se caracterizan por formas verbales indeterminadas que representan rangos heurísticos de valor (alto. vagos o borrosos. . denominados valores nulos. “Juan no tiene más de 40 años”. Motro propone clasificar la incertidumbre en diversos tipos: - incertidumbre propiamente dicha: cuando no es posible determinar si una aserción es cierta o falsa. etc. vaguedad: conocimiento del estilo de “Juan pertenece a la tercera edad”. muy alto. La lógica borrosa y la teoría de conjuntos borrosos ofrecen un método natural para representar esa imprecisión y subjetividad humanas. los segundos.). en sí mismos. a menudo. Muchos de los conceptos manejados habitualmente son.4. y no por ello carecen de significación. sus límites no están perfectamente determinados. lo que permite manejar de forma eficiente la complejidad asociada al mundo real. Datos desconocidos o condicionales. 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. por ejemplo. la incertidumbre se centra en el tratamiento de dos indicadores fundamentales: • • Datos inciertos o difusos. no estamos seguros de que “Juan tenga 30 años”. El tratamiento de la incertidumbre es un rasgo típico de las aplicaciones en que se involucra la inteligencia artificial. - imprecisión: la información no es tan específica como debería ser: “Juan tiene entre 30 y 40 años”. Arquitectura de una BDI 55 consecuencia de la imprecisión y subjetividad propias de la actividad humana. aplicada al desarrollo de SGBD.

3. 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. basada en la Teoría de Conjuntos Difusos.2. El grado de pertenencia a un conjunto(p). Esto suele producirse al establecer magnitudes sin especificar su unidad de medida. “Juan tiene entre 37 y 45 años” y “la edad de Juan es 34”.1 Tratamiento de los valores inciertos. . 4. 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. la mayoría derivados de la lógica difusa (fuzzy logic). En esta misma línea se encuentra Johnston. 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. y la lógica borrosa (fuzzy). Arquitectura de una BDI 56 - inconsistencia: cuando el modelo tiene dos o más aserciones que no pueden ser ciertas. - ambigüedad: si algunos elementos del modelo no poseen una semántica completa. como pueden ser: la lógica modal. que propone una lógica multivaluada “reglamentada” a la que se le añaden “áreas de la lógica que van más allá de la lógica proposicional y de predicado de primer orden”. para ello existen distintos algoritmos. dando lugar a distintas interpretaciones. sino que hay un continuo de “grados de pertenencia”. la lógica no monotónica y la lógica funcional no verdadera. donde un elemento no necesariamente pertenece o no pertenece a un conjunto.4. por ejemplo. y puede tomar valores entre 0 y 1.

_ donde µA(x) se denomina grado de pertenencia de x a Λ. representado mediante la distribución de posibilidad 1 /buena. Podemos denotar esto como: µ. Escalar simple. así las etiquetas lingüísticas aplicadas corresponden al dominio específico (columnas) que se trate por ejemplo: 1. Número simple. 3.1].1]}. 4. mala}. 1/21}.21 }. 1 /buena}. Conjunto de posibles asignaciones excluyentes de números. Conjunto de posibles asignaciones excluyentes de escalares. para los efectos de nuestro estudio. tan sólo describiremos aquéllas posibles asignaciones de valor operando sobre datos concretos. Por ejemplo Edad=28. es un conjunto de ares: Λ = {x. µA(x) ∈ [O. Por ejemplo Aptitud = {buena. 2. 11 Lógica Fuzzy. así un conjunto difuso Λ sobre un _ universo de discurso Ω. Mediante esta herramienta podemos asignar distintos valores considerando las posibilidades _ explícitas del atributo (Universo de discurso [Ω]). . expresado por {1 /mala. µA(x): x ∈ Ω. Por ejemplo Aptitud=buena. Por ejemplo Edad={20. Existen múltiples representaciones de conocimiento difuso mediante la lógica fuzzy. A µ también se le conoce como el “valor de verdad” porque representa el grado en que una proposición es verdadera. representado mediante { 1/20. Arquitectura de una BDI 57 Fig.4.A(x) → [0. representado mediante la distribución de posibilidad 1128.

indefinidos o nulos. el usuario del sistema expresa un estado determinado como valor. y el sistema. Arquitectura de una BDI 58 5.1] representando grados de cumplimiento. de esta forma. 8/25}. Distribución de posibilidad en el dominio de los escalares.6/mala. Por ejemplo Calidad=0. Por ejemplo Edad={0.1.0.4/23. en nuestro estudio nos ocupamos de ellos mediante la lógica multievaluada que se expone en forma exhaustiva en objetivos posteriores. Evidentemente. 7/regular}.0124. Distribución de posibilidad en el dominio de los números.9 Adicionalmente se consideran los valores desconocidos. 0. constituyen un modelo difusor universal. tanto en el motor relaciona1 como el de inferencia.4. Número real ∈ [0. sin embargo. su tratamiento dependeran -en cada caso. nuestro estudio sólo recupera algunas de sus formas y técnicas básicas en virtud de que en el SGBD relacional. 6. opera con el producto asociado. Una vez que se asignen los valores asignados por lógica difusa a las tupias que corresponda. 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). el universo de los conjuntos difusos es amplio. Por ejemplo Aptitud={0. .del proceso que las requiera y serán operadas en forma convencional por el grado de pertenencia asociado. 7.

En su forma inversa.T3) con T1 (Id).. donde: R(T1.. Restricción de formas verbales en relaciones simples. URGENTE.8) Tenemos: ∀(T2){ T2 =< P(H) [T2 (Baja)] | T2>=P(Is)[T2 (Urgente)] | T2 (Alta)} . T3 (lectura)...T2.3) Is (0. Arquitectura de una BDI 59 Fig. 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.4.. Por ejemplo: Sea R(T1. 12. Dada una función de pertenencia: F(P) Ii (0. T2(prioridad). Tn).. ALTA..

se utilizará la lógica fuzzy exclusivamente en aquellos dominios que lo exijan o que representen estados intermedios de procesos en desarrollo.2 Tratamiento de la información desconocida o condicional Si bien los valores nulos (también se le denomina “valor ausente o condicional”) no son un concepto exclusivo del modelo relacional. 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. que son entregados al bloque Máquina de Inferencia.. THEN. 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. 4. Arquitectura de una BDI 60 La estructura básica de un Sistema de Lógica Difusa se muestra en la figura 13. Fig.3. El bloque Difusor se encarga de convertir las entradas en conjuntos difusos.. 13 Estructura básica de un sistema de lógica difusa. este bloque.. La necesidad de los “valores nulos” o “marcas” en bases de datos es evidente por diversas razones: Crear tuplas con ciertos atributos desconocidos. Finalmente atendiendo una de las recomendaciones generales sobre el diseño de SGBD relacionales. El sistema recibe varias entradas numéricas y entrega varias salidas numéricas. apoyado en un conjunto de reglas de la forma IF. .4..2. produce varios conjuntos difusos para que el bloque Concresor los tome y los convierta en etiquetas lingüísticas concretas. .

que toma dos operandos y que devuelve el valor del primero. . multiplicar. AND C Q F C C Q F Q Q Q F F F F F OR C Q F C C C C Q C Q Q F C Q F NOT C Q F C Q C MAYBE C Q F C C F Tabla de verdad para la lógica trivaluada. F (falso) y Q (quizás). da como resultado “cierto”. se incluye un nuevo operador denominado MAYE. 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. por ejemplo. denominados lógica trivaluada y lógica tetravaluada. Lógica trivaluada (L3V) En las siguiente figura aparecen las tablas de verdad para la lógica trivaluada. Arquitectura de una BDI 61 - Añadir un nuevo atributo (columna) a una relación (tabla) existente. En cuanto a las operaciones aritméticas. restar o dividir un valor nulo con cualquier otro valor.4. en cuyo caso devuelve el valor del segundo. no tendría ningún valor para las tuplas de la relación. donde existen los valores C (cierto).nulos. que toma el valor cierto si el operando es nulo y falso en caso contrario b) IF NULL. Adicionalmente se precisa introducir otros dos operadores especiales: a) IS NULL. a.con valores. en el momento de añadirse. salvo que sea nulo. se considera nulo el resultado de sumar. que aplicado al valor de una expresión “quizás”. Además. atributo que. - Atributos inaplicables a ciertas tuplas.

mientras que: WHERE (col-x. finalmente: WHERE NOT(col x. Valn) que devuelve el valor1. cuyas tablas de verdad ya hemos representado. será cierto si ambos son nulos. y falso sólo si ninguno es nulo. salvo que todos sean nulos devolviendo entonces nulo. La expresión que juega el papel del operador IF NULL es la siguiente: COALESCE(VaI1. etc. será cierto si ambos son no nulos. Va13. si no es nulo.. Finalmente es muy importante considerar si los valores asignados en las tuplas van a formar parte de operaciones de agregación con el fin de aplicar funciones estadísticas. existiendo otras dos variantes: WHERE NOT(col x. col-Y) IS NULL. En el lenguaje SQL las columnas admiten valores nulos a no ser que se especifique NOT NULL. el producto cartesiano no se ve afectado por la presencia de valores nulos.g. . suma.4.. y la proyección debe eliminar tuplas duplicadas teniendo en cuenta los nulos.. será cierto si alguno o ambos son nulos. la restricción sólo devuelve aquellas tuplas cuya condición se evalúa a “cierto” no ‘falso” ni “quizás”. En SQL para determinar si un valor es nulo se utiliza el predicado NULL: <Nombre de columna> IS NULL También podemos combinar este predicado con el operador NOT: <Valor> IS NOT NULL Un aspecto a tener en cuenta es el comportamiento del predicado cuando opera sobre más de una columna. o ambos nulos.. Arquitectura de una BDI 62 Por lo que respecta a los operadores algebraicos. por lo que dos tuplas se considerarán duplicadas si atributo a atributo son ambos iguales y no nulos.. pero cierto si alguno es nulo o lo son los dos. coly) IS NOT NULL. v.Va12. varianza. col_y) IS NULL. que será falso si ambos son nulos. o el valor2. media. y se soporta la lógica trivaluada. o el valorn. col_y) IS NOT NULL. En efecto: WHERE (col-x. en cuyo caso determinar su uso o discriminar su número.

falsa o quizás se utiliza: p IS [NOT] TRAE FALSE UNKNOWN este último (UNKNOWN) corresponde al operador MA YBE Así. de desconocidos aplicables. WHERE NULLIF (año. que momentáneamente son desconocidos pero deberían existir y puede que. 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. que no tienen sentido. por ejemplo. b. Lógica tetravaluada (L4V) La lógica tetravaluada surge de la necesidad de diferenciar dos tipos importantes de valores nulos: inaplicables. . -99) > 1980. el lenguaje ofrece la posibilidad de convertir el valor por defecto a nulo mediante la expresión NULLIF. Por ejemplo: . . Arquitectura de una BDI 63 Si en lugar de nulos se emplean valores por defecto. es decir. .4. esto es. podemos formular la siguiente consulta: SELECT titulo FROM libros WHERE (año = 1996) IS UNKNOWN.

que puede parecer académica en exceso. por tanto. es de hecho muy importante para reflejar con más precisión la semántica del universo del discurso a tratar y para responder de manera “más inteligente” a las consultas que se realicen sobre la base de datos. de otro que representa información inaplicable. En este caso las operaciones aritméticas quedan modificadas como sigue. donde por “A”(Aplicable) y por “I” (Inaplicable) se representan los valores de verdad de la lógica cuatrivaluada. entre un valor nulo o marca que representa información desconocida pero aplicable. según CODD. Esta diferencia. no soporta aún la lógica . Arquitectura de una BDI 64 en un determinado momento. En la lógica cuatrivaluada se distingue. AND C A F I C C A F I A A A F I F F F F F I I I F I OR C A F I C C C C C A C A A A F C A F F I C A F I NOT C A F I F A C I Lógica tetravaluada según CODD El lenguaje SQL con que opera el motor relaciona1 Jet. que denominaremos α. que denominaremos β. siendo ↔ un operador aritmético y x un valor no nulo de la base de datos: x↔α=α↔x=α x↔β=β↔x=β α↔β=β↔α=β α↔α=α β↔β=β A continuación se muestran las tablas de verdad para la lógica cuatrivaluada.4. lleguen a conocerse.

Si el operador es AND y cualquier operando es falso el resultado es falso 2. IS UNKNOWN. implementada en el lenguaje anfitrión.) 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. . 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.4. 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. 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. la tabla de datos no tendría valores nulos. Mediante este esquema. Es pues una representación sencilla a base de metadatos. por lo que se precisa una extensión del lenguaje de manipulación de datos. Arquitectura de una BDI 65 tetravaluada. etc. 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. considerando los siguientes indicadores: 1.

5. 5.1 Consideraciones generales Como hemos citado.2 Las bases de datos persistente e intenso La creación y manipulación de la base de datos persistente. en el sistema propuesto.2. abordaremos los principales indicadores que propicien dicho inferencia. Tables y Query) a un conjunto de registros que cumplen una determinada condición y que pueden ser tratados como un conjunto de tuplas. • Tables es un RecordSet que contiene toda la información de la misma. . se efectúan a través de los diversos objetos predefinidos que Visual Basic incorpora. DynaSet es un tipo RecordSet que se lee al abrir y escribe en la base de datos al ser cerrado. Oatabase y los procedimientos para efectuar consultas a través de SQL. tanto si el proceso se verifica mediante funciones del lenguaje anfitrión.1 RecordSet Llamaremos RecordSet (DynaSets. Programación de una BDI 66 5. centraremos nuestro interés en los objetos RecordSet. así como la base de datos en intenso. en este capítulo. tenemos diferentes tipos de RecordSet con distintas propiedades. como por un motor periférico. el proceso de inferencia constituye el nudo en la fase de intención del sistema. 5. SnapShot. nos ocuparemos de detallar las partes en común. El RecordSet contiene todos los registros de la misma. dada la arquitectura propuesta. En principio. Programación de una BDI 5. estos se declaran como variables en el dominio del módulo o si es el caso como variables globales: • • SnapShot es un RecordSet de sólo lectura.

Programación de una BDI 67 • QueryDef es una consulta (Query) que se encuentra predefinida en la base de datos. Localiza el último registro que cumpla una condición. *Métodos para obtener información del RecordSet ListFields Listindexes Lista campos. DELETE. Busca un registro (en una tabla). Localiza el registro anterior que cumpla una condición. Addnew Delete Edit Update Close Clone APPEND BLANK. GO BOTTOM. (Regresa SnapShots) Lista índices. SKIP -1. Localiza el siguiente registro que cumpla una condición. Edita un registro para ser modificado. Retrocede un registro.5. Va al último registro. Actualiza la edición que hayamos hecho. *Métodos para edición. Crea una copia del RecordSet. Va al primer registro. Métodos *Métodos asociados al Desplazamiento MoveFirst MoveNext MovePrevious MoveLast GO TOP. Avanza un registro. Añade un registro. 1. Borra un registro. *Métodos asociados a la Búsqueda FindFirst FindNext FindPrevious FindLast Seek Localiza el primer registro que cumple una condición. SKIP. Cierra el RecordSet. (Regresa SnapShots) .

. Determina el tipo de bloqueo a usar. True si puedo modificar los datos del RecordSet. 3.5. y para llamar a los métodos de los RecordSets. FOF(). Estamos al final del RecordSet. Fecha de creación. Sort NoMatch LockEdits Name Transactions Updatable Determina la expresión por el que se ordenará el RecordSet. True si la base soporta transacciones. En la inteligencia de simplificar. Regresa true si fracasa la búsqueda. Propiedades BOF EOF BookMark RecordCount DateCreated LastModified LastUpdated Filter Index BOF(). por su funcionalidad. SET INDEX TO.. Objetos Contenidos Fields Retorna un objeto con las definiciones de los campos. Marca un registro . siempre tendremos que pasar por un objeto database. SET FILTER TO. Programación de una BDI 68 2. Número de registros en el SnapShot. Indica el nombre del RecordSet (tabla. Para poner expresiones de filtro. 5.).2. propiedades y funciones relacionadas. todos sus métodos.2 Database Object Mediante este objeto nos comunicaremos con la base de datos. Fecha de última modificación. agruparemos. Fecha de última actualización. FOUND(). Toda la jerarquía de clases que comienza aquí. Estamos al inicio del RecordSet. Para saber o cambiar el índice activo en una tabla.

Propiedades Collating Order Determina cómo vamos a comparar cadenas . Métodos * Métodos Para obtener información de la estructura ListTables ListFields Obtenemos un SnapShot con descripciones de las tablas Obtenemos un SnapShot con información de los campos * Métodos para crear y borrar consultas CreateQueryDef DeleteQueryDef Crea Querys (consultas) en la base de datos Borra Querys (consultas) de la base de datos * Métodos para interactuar con los datos Open Table CreateDynaset CreateSnapshot OpenQuerydef Devuelve un objeto Table Devuelve un objeto DynaSet Devuelve un objeto SnapShot 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 CommitTrans RollBack Inicia la transacción Graba en el disco las modificaciones Vuelve a la situación anterior * Métodos para ejecutar comandos SQL Execute ExecuteSgl Ejecuta un comando SQL usando VB Ejecuta un comando SQL a través de ODBC 2. Programación de una BDI 69 1.5.

0. Con la versión 3. Objetos Contenidos TableDefs Devuelve un objeto TableDef (definiciones de la base) 4. han hecho de este lenguaje un líder indiscutible en lo que a desarrollo de aplicaciones se refiere. pudiendo gestionar bases de datos de tipo Access. Funciones Relacionadas OpenDatabase RegisterDatabase RepaírDatabase CompactDatabase CreateDatabase FreeLocks Begin Trans CommítTrans RollBack Devuelve un objeto database Para conectarse vía ODBC Arregla bases de datos dudosas PACK Crea una nueva base de datos Libera los bloqueos Comienza una transacción Graba en el disco el resultado de una transacción 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. Programación de una BDI 70 Connect Name QueryTimeout Trañsactions Determina qué tipo de bases externas abriremos (dBase. con una gran potencia en toda su estructura. FoxPro. etc... Paradox. Este paso de gigante ha hecho de Visual Basic uno de . Su implementación en el sistema operativo Windows y sus herramientas visuales. se implementó la gestión de bases de datos a muy alto nivel.3 SQL en Visual Basic Visual Ba-sic es un lenguaje de programación de propósito general. dBASE.5.) Nombre de la base de datos Tiempo de espera desde tras errores en conexiones ODBC Indica si el driver acepta transacciones Updatable 3.

Para especificar un determinado campo de una determinada tabla. El parámetro . Si se utiliza la propiedad RecordSource del control Data. 7. normalmente simples (‘expresión-a-buscar’). Al especificar una expresión de búsqueda. éstos han de encerrarse entre comillas. 2. están desarrolladas o basadas en este lenguaje. es decir. 5. han de encerrarse entre corchetes ([nombre]). las consultas que se realizan en Access. a continuación. Un mandato en SQL se expresa en una cadena de caracteres o String. que contengan más de una palabra. El objetivo principalde SQL es la realización de consultas y cálculos con los datos de una o varias tablas. Refresh). un punto y. se ha de escribir primero el nombre de la tabla. 4. con el fin de crear una consulta en la interfaz. 6. por lo que su implementación en Visual Basic no es complicada. ésta debe encerrarse entre almohadillas o pragmas (#fecha#). b) La sentencia SELECT y la cláusula FROM La sentencia SELECT “selecciona” los campos que conformarán la consulta.nombre_campo). si ésta se refiere a una expresión de caracteres. se suelen escribir siempre entre corchetes. De hecho. Dicho mandato se puede escribir en la propiedad RecordSource de un control Data. a) Escribir mandatos en SQL 1. Visual Basic incorpora esta extensión junto a nuestras bases de datos. Programación de una BDI 71 los lenguajes favoritos por los desarrolladores de aplicaciones de bases de datos. que establece los campos que se visualizarán o compondrán la consulta. tras introducir el mandato SQL (siempre como una expresión de cadena) es necesario refrescar el control Data (control-data. Como norma general. Para especificar una fecha en una búsqueda. 3. para crear nuestras consultas en SQL. Los nombres de los campos especificados (y de las tablas).5. obteniendo potentes resultados. el nombre del campo (nombre_tabla.

En este caso. SELECT [codigo postal] FROM [tabla morosos]. SELECT clientes. y. Selecciona los campos ‘nombre’ y ‘apellidos’ de la tabla ‘clientes’.: SELECT nombre. producto FROM clientes. Programación de una BDI 72 ‘lista-campo está compuesto por uno o más nombres de campos. Selecciona el campo ‘nombre’ de la tabla ‘clientes’. Selecciona los campos ‘nombre’. productos. Es. Una cláusula es una extensión de un mandato que complementa a una sentencia o instrucción.FROM. He aquí algunos ejemplos de mandatos SQL en la estructura SELECT. Estas tablas o consultas se separan por medio de comas (. Selecciona todos los campos de la tabla ‘pedidos’. ‘apellidos’ y ‘telefono’ de la tabla ‘clientes’. Selecciona el campo 'codigo postal’ de la tabla ‘tabla morosos’. pudiéndose especificar también el nombre de la tabla a la cual pertenecen seguido de un punto y del nombre del campo correspondiente.. nombre. sE puede utilizar el asterisco (*) para indicarlo. Si el nombre del campe o de la tabla está compuesto de más de una palabra.5. SELECT * FROM pedidos. apellidos. SELECT nombre. éstos se escriben entre corchetes ([nombre]).. apellidos FROM clientes. la cláusula FROM permite indicar en qué tablas o en qué consultas (queries) se encuentran los campos especificados en la sentencias SELECT. si sus nombres están compuestos por más de una palabra. Si se desea seleccionar todos los campos de una tabla. Selecciona todos los campos de la tabla ‘pedidos’. y el campo ‘producto’ de la tabla productos. telefono FROM clientes. este nombre ha de escribirse entre corchetes ([nombre]). que puede también acoplarse a otras máquinas. .. separados por comas.. por decirlo así. pudiendo complementar también a otras sentencias. * FROM pedidos. Una sentencia SELECT no puede escribirse sin la cláusula FROM.). SELECT pedidos. un accesorio imprescindible en una determinada máquina.

SELECT * FROM abonados WHERE edad BETWEEN 18 AND 45. Selecciona todos los campos de la tabla ‘clientes’. SELECT * FROM abonados WHERE edad>=18 AND edad<=45. escogiendo a aquellos abonados que sean mayor de edad (a partir de 18 años). JALISCO. Selecciona los apuntes de ‘diario’ realizados el 1 de Julio de 1. Selecciona los apuntes de ‘diario’ realizados en Julio de 1. SELECT * FROM diario WHEREfeCha<=#12/31/96#. apellidos FROM abonados WHEREedad>=18. el contenido de un campo. SELECT * FROM diario WHERE fecha 471119 7#.997. 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). Programación de una BDI 73 c) Claúsula WHERE La claúsula WHERE es opcional. Selecciona todos los abonados con edades comprendidas entre los 18 y los 45 años. COLIMA SELECT nombre. un control. SELECT * FROM abonados WHERE estado ='NAYARIT' OR estado='JALISCO' OR estado ='COLIMA'. etc. Selecciona los apuntes de ‘diario’ realizados antes del 1 de Enero de 1.). SELECT * FROM diario WHERE fecha BETWEEN #7/1/97# AND#7/31/97#. 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.997 (la fecha ha de indicarse en inglés (mes/día/año)). Selecciona los campos ‘nombre’ y ‘apellidos’ de la tabla abonados.997. . pero los registros de todos los abonados de los estados de NAYARIT. pero los registros de todos aquellos clientes que se llamen ‘ALFREDO’. Selecciona todos los abonados con edades comprendidas entre los 18 y los 45 años. Selecciona todos los campos de la tabla ‘abonados’. una variable.5. He aquí algunos ejemplos que ilustran el uso de esta cláusula: SELECT * FROM clientes WHEREnombre='ALFREDO.

. la cláusula ORDER BY toma. los caracteres ‘ZAMO’. el tipo ascendiente [ASC]. Dicha cláusula establece un criterio de ordenación de los datos de la consulta.) ORDER B Y campo 9 [ASC/DESC][.. d) Cláusula ORDER BY La cláusula ORDER BY suele escribirse al final de un mandato en SQL. se indica que el orden del campo es descendiente (9-O Z-A).5.. SELECT * FROM clientes WHERE estado IN (‘JALISCO’. COLIMA. Selecciona los clientes cuyo nombre comience con los caracteres ‘AL’. ya que el programador puede indicar cuál será el primer criterio de ordenación. SELECT * FROM clientes WHERE apellidos LIKE '*EZ. Programación de una BDI 74 SELECT * FROM clientes WHERE nombre LIKE'AL*. campo2 [ASC/DESC]. el segundo. mientras que. ‘PUEBLA '). Selecciona todos los clientes de los estados JALISCO. si se especifica la palabra reservada DESC. NAYARIT. 'MEXICO'. por los campos que se especifican en dicha cláusula. PUEBLA. Si no se especifica ninguna de estas palabras reservadas. SELECT * FROM clientes WHERE apellidos LIKE '*ZAMO*' Selecciona los clientes cuyos apellidos contengan. etc.] La palabra reservada ASC es opcional e indica que el orden del campo será de tipo ascendiente (O-9 A-Z).. así como el tipo de ordenación por ese criterio: ascendiente o descendiente. (. ‘COLIMA’. por defecto.. La potencia de ordenación de dicha cláusula radica en la especificación de los campos por los que se ordena. ‘NAYARIT’. en cualquier posición. He aquí algunos ejemplos: . MEXICO. Selecciona los clientes cuyos apellidos terminen con los caracteres 'E?.

5.RecordSource = variable-SQL control-data. Crea una agenda telefónica de ‘clientes’ ordenada por ‘apellidos’ y ‘nombre’. en una cadena o String. Así se podría crear una variable de tipo String en un módulo. Programación de una BDI 75 SELECT nombre. ‘telefono’. y que los controles encargados de mostrar o modificar la base de datos. tele fono FRO M clientes ORDER B Y apellidos. SELECT * FROM abonados ORDER BY apellidos. la Form correspondiente tendrá un evento Load. Relación de ‘abonados’ por ‘apellidos’ y ‘nombre’ ascendientemente. nombre. fecha-nacimiento DESC. e) Programación SQL desde el control data Gracias al control ‘Data’ (. En la propiedad 'DataField' se especifica el nombre del campo a tratar por cada Text Box (‘nombre’. La propiedad 'DataSource' corresponde a la fuente de los datos. y por ‘fechanacimiento’ en orden descendiente (del más viejo al más joven). y la propiedad 'RecordSource' se reservará para indicar. etc. en este caso. Por ejemplo: realizamos una ficha de ‘clientes’. Por otro lado.).mdb). donde se insertará un código similar al siguiente: control-data. e insertar el mandato en SQL correspondiente antes de llamar a la ficha. estén perfectamente vinculados al control Data. Refresh . 'direccion'. Relación de ‘pedidos’ ordenados desde el más antiguo hasta el más moderno. Al llamar a la ficha. apellidos. nombre. ‘nif. en la propiedad 'DatabaseName' del control ‘Data’. por lo que diseñamos una interfaz con diversas Text Box vinculadas a un control Data que contendrá los datos. Lo primero que hay que tener en cuenta es que la consulta realizada en SQL posea los mismos campos que la interfaz diseñada.vbx) podremos utilizar fácilmente la potencia de SQL. SELECT * FROM pedidos ORDER BY fecha DESC. Estas Text Box se vinculan gracias a las propiedades 'DataSource' y 'DataField'. se ha de especificar la ruta completa de la base de datos (base. el mandato en SQL correspondiente cuando sea necesario. el nombre del control ‘Data’.

cuya sintaxis es la siguiente: SUM(expresión) Donde ‘expresión’ puede representar un campo o una operación con algún campo. g) Aritmética con SQL * Sumas o totales Para sumar las cantidades numéricas contenidas en un determinado campo. cuando sea necesario. 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. la programación se hará diferente. Si . el parámetro ‘criterios’. representa las comparaciones o criterios que deben cumplir los registros a eliminar. y. y refrescar el control Data correspondiente. 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. respetando a aquellos registros que no los cumplan. .5. el coñtrol Data contendrá el resultado de la consulta. con unos campos concretos y. Programación de una BDI 76 Obviamente. Pero la norma común es crear una interfaz en concreto.quisiéramos eliminar todos los pedidos realizados por el cliente cuyo código sea 4 en el día de hoy. De esta manera. dependiendo del caso.por ejemplo . establecer como valor de la propiedad 'RecordSource' el mandato en SQL. utilizaríamos la siguiente sentencia: DELETE FROM pedidos WHERE [codígo cliente]=4 AND fecha=Now(). hemos de utilizar la función SUM.

Retorna el promedio de unidades pedidas (la media de todos los valores almacenados en el campo ‘unidades’ de la tabla ‘pedidos’). Veamos algunos ejemplos: SELECT SUM(unidades) FROM pedidos.5. Este resultado se toma como un nuevo campo en el RecordSet y se le llama ‘saldo’. Este resultado se toma como un nuevo campo en el RecordSet y se le llama ‘total’. Esto es lo mismo que realizar una suma (SUM) y. Retorna el total de unidades pedidas hoy. SELECT SUM(ingresos-gastos) AS saldo FROM diario. Este resultado se toma como un nuevo campo en el RecordSet. Este resultado se toma como un nuevo campo en el RecordSet. en todos los registros afectados por la consulta. después. * Promedios o medias aritméticas Para averiguar el promedio de unas cantidades utilizaremos la función AVG. Programación de una BDI 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. Retorna el total de unidades pedidas (la suma de todos los valores almacenados en el campo ‘unidades’ de la tabla ‘pedidos’). dividir el resultado entre el número de registros implicados. SELECT SUM(unidades) AS tota/ FROM pedidos WHEREfecha =Now(). . He aquí algunos ejemplos: SELECT AVG(unidades) FROM PEDIDOS. Retorna el saldo final de una tabla llamada ‘diario’. cuya sintaxis es la siguiente: AVG(expresión) La función AVG retorna el promedio o media aritmética de la expresión especificada. SELECTA VG(ingresos-gastos) AS saldo-medio FROM diario.

Retorna el pedido más grande de hoy y lo refleja en el campo ‘maximo’. cuya sintaxis es la siguiente: COUNT(expresión). mediante las funciones MIN y MAX. . Retorna el gasto más costoso reflejado en el diario contable. * Valores mínimos y máximos También es posible conocer el valor mínimo o máximo de un campo. cuyas sintaxis son las siguientes: MIN(expresión) MAX(expresión) He aquí algunos ejemplos: SELECT MIN(unidades) AS minimo FROM pedidos. SELECTA VG(unidades) AS media FROM pedidos WHERE fecha=Now(). Este resultado se toma como un nuevo campo en el RecordSet y se le llama 'media'. SELECT MAX(unidades) AS maximo FROM pedidos WHERE fecha=Now(). y lo representa en el campo ‘maximo’. SELECT MAX(gastos) AS maximo FROM diario. Programación de una BDI 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’. * Conteo de registros Para conocer cuántos registros hay utilizaremos la función COUNT.5. Retorna el promedio de unidades pedidas hoy. Retorna el pedido más pequeño y lo refleja en el campo ‘minimo’.

SELECT SUM(unidades) AS total. Este resultado se toma como un nuevo campo y se le llama ‘casados’. Retorna el número de pedidos realizados hoy. puesto que un cliente realiza varios pedidos en el mismo día. . COUNT(*) AS registros. Para ello. el máximo y el mínimo de unidades pedidas. He aquí algunos ejemplos: SELECT COUNT(*) AS num_pedidos FROM pedidos WHERE fecha=Now(). Por ejemplo. utilizaremos el predicado DISTINCT. qué cliente realizó algún pedido y en qué día. mediante una línea. Este resultado se toma como un nuevo campo en el RecordSet. Quizá necesitemos una historia para conocer los días y los clientes que realizaron algún pedido. Programación de una BDI 79 La función COUNT retorna el número de registros indicados en la expresión. si no que nos diga. MAX(unidades) AS maximo. AVG(unidades) AS media. SELECT COUNT(*) AS num pagos FROM diario WHERE gastos=25594. en nuestros pedidos hay duplicación.5. la media. MIN(unidades) AS minimo FROM pedidos WHERE fecha BETWEEN #111197# AND #6130/97#. SELECT COUNT(*) AS casados FROM clientes WHERE casado=True. . y se le llama ‘num-pagos’. 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. y el número de pedidos realizados. pero no necesitaremos toda la lista. únicamente. Retorna el número de pagos por un importe equivalente a 25594. . Retorna el total. cuya sintaxis es la siguiente: SELECT DISTINCT lista-campos . Retorna el número de clientes casados. Este resultado se toma como un nuevo campo en el RecordSet y se le llama 'num_pedidos'.

.. etc. valor directo. [codigo cliente]. apellidos FRO M pedidos.[codigo cliente] = pedidos. utilizaremos la siguiente sentencia: SELECT DISTINCT [codigo cliente]. y que tengan más de 22 años de edad. La sentencia UPDATE es muy versátil y potente.[codigo cliente]. ya que permite la cláusula WHERE.) cuyo resultado o valor será el nuevo valor del campo. pedidos. En el problema expuesto. clientes.fecha. por lo que podemos realizar reemplazos condicionantes. i) Reemplazar datos Es posible reemplazar el valor de un campo. De ello se deduce que .] Donde lista-tablas representa el nombre de las tablas donde se realizarán las sustituciones o reemplazos. 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’). Programación de una BDI 80 El predicado DISTINCT omite aquellos registros duplicados en los campos especificados. su sintaxis es la siguiente: UPDATE lista-tablas SET campo=nuevo valor (. 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..por ejemplo -.5. fecha FROM pedidos.campo=nuevo valor] [WHERE. clientes. 1 WHERE edad>22 AND YEAR(Now)YEAR(expedicion)>2. El parámetro campo indica el campo que se va a modificar. y el parámetro nuevo-valor respresenta una expresión (constante. para el total de la tabla al que pertenezca mediante UPDATE. escribiríamos este mandato: SELECT DISTINCT pedidos. clientes WHERE clientes. tendríamos que escribir la siguiente sentencia: UPDATE asegurados SET importe=importe/1. un cálculo. nombre.

tipearíamos esta sentencia: SELECT fecha. . Programación de una BDI 81 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. la cláusula GROUP BY agrupa o combina registros con idéntico valor en los campos especificados. count(fecha) AS num pedidos FROM pedidos GROUP BY fecha. en lugar de visualizar todos los ingresos y gastos realizados al detalle. Para saber cuántos pedidos se realizaron cada día: SELECT fecha. y queremos saber cuántos pedidos y unidades han realizado cada uno de nuestros clientes. FROM . Imaginemos que queremos hacer un resumen de nuestros pedidos. Para ello. SUM(unidades) AS cantidad FROM pedidos GROUP BY codigó cliente. especificando el total . count(codígo cliente) AS num pedidos. en primer lugar. en un único registro.5. realizar la consulta mediante la cláusula GROUP BY. Para llevar a cabo esta tarea hemos de tener en cuenta. SUM(unidades) AS cantidad FROM pedidos GROUP BY fecha. y. de los ingresos y de los gastos de cada día.por ejemplo -. . cuya sintaxis es la siguiente: SELECT . . [WHERE . sería el campo fecha). . .] GROUP BY lista-campos Básicamente. . se escribiría una sentencia como ésta: SELECT codigó cliente. a continuación. j) Grupos de registros Si se precisa mostrar un resumen de los datos que tenemos. Para conocer cuántas unidades se pidieron cada día. bajo qué campo se van a agrupar los datos (en lo expuesto. . 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.

Pero. las cuales permiten combinar datos de dos tablas. Como se puede apreciar. que indica los criterios o condiciones a cumplir por los registros a visualizar en un agrupamiento.campó común=tabla2. Por ejemplo: . COUNT(codigo cliente) AS num pedidos. En esta ocasión. COUNT(fecha) AS pedidos. SUM(unidades) AS subtotal.5. codigó cliente HAVING fecha<#116197#. utilizaremos la siguiente sentencia: SELECT fecha.campó común Donde tabia1 y tabla2 representan el nombre de las tablas a combinar. A VG(unidades) AS promedio FROM pedidos GROUP BY fecha. cuya sintaxis es: tabla 1 INNER JOIN tabla2 ON tabla J . MAX(unidades) AS maximo. la condición era de aquellos pedidos realizados antes del seis de enero de 1997. La operación JOIN más común es INNER JOIN. Para conocer una estadística de pedidos diaria. podemos combinar datos de una manera mucho más sencilla y eficaz: mediante las operaciones JOIN. Programación de una BDI 82 En la siguiente sentencia se muestra para cada cliente aquellos días en que se realizó un pedido. MIN(unidades) AS mínimo. codigó cliente. 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. SUM(unidades) AS cantidad FROM pedidos GROUP BY fecha. se ha especificado una condición a través de la cláusula HAVING. resumiéndose el número de pedidos realizados así como el total de unidades pedidas: SELECT fecha. Ambas tablas han de tener un campo común o igual para poder realizar correctamente la combinación de los datos.

El resultado será un conjunto de registros con los datos de las dos tablas. en el campo común no haya coincidencia. es decir. 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. que en un pedido aparecerán los datos del mismo y los datos personales del cliente que realizó el pedido. Aunque la diferencia entre las tres operaciones parezca inexistente. En cada registro aparecerán los datos relacionados. 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. En la operación LEFT JOIN.5. Este conjunto poseerá el nombre de todos los campos de la tabla pedidos y de todos los campos de la tabla clientes. codigo cliente. La operación INNER JOIN combina los datos de las dos tablas siempre que haya valores coincidentes en los campos comunes o enlazados. 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). pero estas operaciones incluyen todos los registros de una tabla y aquellos registros de la otra en que los campos comunes sean iguales. . en realidad sí existe. Programación de una BDI 83 SELECT * FROM pedidos INNER JOIN clientes ON pedidos. incluye todos los registros de la primera tabla (parámetro tabla1) y aquellos registros de la segunda tabla (parámetro tabla2) en que los campos comunes sean iguales. Existen también otras dos formas de combinar: LEFT JOIN y RIGHT JOIN.codigo cliente = clientes. aunque en la otra tabla. Ambas tienen la misma sintaxis que INNER JOIN.

dichos datos. sobre la que opera el proceso de inferencia. codigó cliente = clientes. este registro no aparece. es posible recuperar los datos objetivo que serán transformados al formato IPL. codigó cliente = clientes. Si utilizamos: SELECT * FROM pedidos LEFT JOIN clientes ON pedidos. puesto que no hay coincidencia. codigo_clíente = clientes. Consideremos el siguiente ejemplo: . codigó 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. codigó cliente. Si utilizamos: SELECT * FROM pedidos LEFT JOIN clientes ON pedidos. codigo cliente. El registro que contiene el pedido del cliente que no existe no aparece. incluido aquel donde indicamos que el pedido fue solicitado por el cliente inexistente. Programación de una BDI 84 La prueba se ve rápidamente si se introduce un código de cliente en el campo campocliente de la tabla pedidos que no exista: SELECT * FROM pedidos INNER JOIN clientes ON pedidos. Como el código inexistente no existe en la tabla clientes. Mediante las herramientas citadas. Observaremos que aparecen todos los registros de la tabla pedidos.5. pero en los campos relacionados (campos de la tabla clientes) no habrá ningún dato relacionado o combinado. 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.

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 . R2 (T1. Iectura(cve.). m 1. CVE String ' 5 MAX1 .. T3(l-2) T4(L3). T. T5(MAX4). T5(L4).14). Indice primario.T3 T5.T4) con T1 (CVE). m4). T3(MAX2) T4(MAX3).T2. Indice primario. Y una base en intenso compuesta por el total de registros edificada con base a la siguiente estructura: motor(cve. m2. Programación de una BDI 85 Sean R1(T1...11. T2(MAX1). y R2 (T1.T3 T5.13. T2(L1). donde: R1 (T1.T2. CVE String ' 5 L1 . Considerando un esquema de BD persistente en que se precisa: Tabla: Motor .MAX4 Double Tabla: Lecturas .….5.12. m3..T4) con T1 (CVE). Tn).L4 Double Relacionadas por el campo CVE.

dbText. CreateField("CVE”) Idxid_ct. CreateField("MAX2”. Append Campo(i) Next í '{ Definición de índice de la tabla Dim Idxid_ct As Index Dim Campoid As Field Set Idxid_ct = NewTb. CreateField("CVE”. Fields. " . Indexes. DbOpciones) '{ Definición de tablas Dim NewTb As TableDef Set NewTb = NewDb.5. CreateField("MAX4'. CreateField("MAXI". Create TableDef("motor'') '{ Definición de los campos de la tabla ReDim Campo(1 To 5) As Field Set Campo(l) = NewTb. Append Idxid_ct NewDb. dbLong) Set Campo (5) = NewTb. Programación de una BDI 86 Private Function makedb() '{ Creación de la BD Const DbPath As String = "'PATH\geneal. Workspaces(0) Dim DbOpciones As Long DbOpciones = db Version70 + db Encrypt Set NewDb = Ws. dbLangGeneral. dbLong) Set Campo(3) = NewTb. Append NewTb ‘{ Utilizando SQL Dim SQLCreate As String SQLCreate = "CREATE TABLE LECTURAS (CVE TEXT (5). TableDefs. Primary = True Set Campoid = Idxid_ct. Fields. 5) Set Campo(2) = NewTb. dbLong) Set Campo(#) = NewTb.mdb" Dim NewDb As Database Dim Ws As Workspace Set Ws = DBEngine. CreateDatabase(DbPath. dbLong) Dim i As Byte For i = I To 5 NewTb. Append Campoid NewTb. Createlndex("CVE”) Idxid_ct. CreateField("MAX3”.

5. Programación de una BDI 87 SQLCreate = SQLCreate + "L l LONG. Execute (SQLCreate) '{ Definición de las relaciones entre tablas empleando el objeto relación Dim NewRel As Relation Dim CampoRel As Field Set NewRel = NewDb. L4 LONG )" NewDb. btipe As String free = FreeFile Open "'Path+file" For Output As #free Set db = OpenDatabase("'Path+file') '{ Path + file se sustituyen por los parámetros reales presentes '{ En el sistema . CreateField("CVE”) Campo Rel. L2 LONG. Execute (SQLCreate) '{ Creación de índice SQLCreate = "CREATE INDEX Fol ON LECTURAS (C VE) WITH PRIMARY" NewDb. Fields. Append Campo Rel NewDb. bt As Recordset Dim tipe.” SQLCreate = SQLCreate + "L3 LONG. Close End 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.Append NewRel '{ Se cierra la base de datos y se liberan los recursos NewDb. Relations. ForeignName = "CVE" '{ Agregar el campo a la relación y la relación a la DB NewRel. 'Contenida en el CD anexo. Foreign Table = "lecturas" Set CampoRel = NewRel. Private Function makebdi() Dim dbDatos As Database Dim tb. Table = "motor” NewRel. CreateRelation("motor-lecturas”) NewRel.

Addltem f$ Print #free. MoveNext Wend tb. OpenRecordset("motor") Set bt = db. con el objetivo de consolidar una aplicación totalmente transparente. se hace referencia a los objetos contenidos en el prototipo de ejemplo anexo al presente documento): . Close While Not bt. el siguiente listado constituye su base de operación ( En fragmentos de código. MoveNext Wend bt. EOF A$ = bt!CVE B$ = bt!L1 C$ = bt!L2 D$ = bt!L3 e$ = bt!L4 Ab$ = Chr(44) + C$ + Chr(44) + D$ + Chr(44) + e$ f$ = btipe + Chr(40) + A$ + Chr(44) + B$ + Ab + Chr(41) + Chr(46) Print #free. Close db. En el desarrollo de los distintos prototipos. f$ bt.4 Edición de las Bases Persistentes y en Intenso. OpenRecordset("lecturas”) tipe = “Objeto” btipe = “Lecturas” While Not tb. Close Close #free End Function 52.5. Programación de una BDI 88 Set tb = db. EOF A$ = tb!CVE B$ = tb!MAXl C$ = tb!MAX2 D$ = tb/MAX3 e$ = tb!MAX4 Ab$ = Chr(44) + C$ + Chr(44) + D$ + Chr(44) + e$ f$ = tipe + Chr(40) + A$ + Chr(44) + B$ + Ab + Chr(41) + Chr(46) Listl. f$ tb. hemos incluido un vista global de las bases de datos que recuperan tanto la estructura como el contenido de dicha.

Caption = "Text" Case dbSingle: IbIType. Caption = "Boolean" Case dbDouble: /b/Type. 'Listado 3. Programación de una BDI 89 a) Edición de la base persistente. TableDefs If td. Caption = "Double" . Caption = "Byte" Case dblnteger: IbIType. Caption = "Single" Case db Boolean: IbIType. Explorar la base persistente 'Código: Visual Basic. Workspaces(O). Close End Sub Private Sub LstOfFields_Click() On Resume Next Dim td As TableDef Dim Fid As Field Dim This/tem As Integer Set td = WorkDb.5. Option Explicit Dim WorkDb As Database Dim td As Tabl eDef Dim Database/sOpen As Boolean Dim CurrentTable As Recordset Dim TablelsOpen As Boolean Dim source As String Private Sub Form Load() Dim td As TableDef Set WorkDb = DBEngine. Fields(IstOfFields) Select Case Fld. Name End If Next td End Sub Private Sub Form Unload(CANCEL As Integer) If DataBaselsOpen Then WorkDb. OpenDatabase("path+file") Da to Basels Open = True For Each td In WorkDb. Type Case dbByte: IbIType. TableDefs(IstOfTables) If IstOfFields <> "" Then Set Fid = td. Addltem td. Caption = "Long" Case db Text: IbIType.Attributes = 0 Then IstOfTables. Caption = "Integer" Case dbLong: IbIType.

Caption = “Date” Case db Time: IbiType. Name) if err <> 0 Then Select Case err Case 3 167: istSampie. Caption = "Currency" Case dbDate: IbiType. Caption = "Binary" Case dbMemo: IbiType. Caption = “Time” Case dbLongBinary: IbiType. Caption = Fid. Name IstSample. EOF Or Thisitem >= Vai(txtNumberoSampies) if err = 0 Then if Not isNuii(CurrentTabie(Fid. Caption = Fid. Programación de una BDI 90 Case dbCurrency: IbiType. Ciear if Val(txtNumberoSamples) > 0 Then CurrentTabie.Additem "<Deleted>" Case Eise: IstSample. Type End Select lb/Size. Caption = “Memo” Case Eise: IbiType.Addltem "<Err=" & Trim$(Str$(err)) & ">" End Seiect End if Eise IstSample. MoveNext Thisitem = Thisitem + 1 Loop End If End if End Sub Private Sub IstOfindexes_Click() Dim Fid As Field Dim idx As index Set idx = td. Caption = "Binary" Case dbBinary. Ciear For Each Fid In idx. Indexes(IstOflndexes) IstOf/ndexFields. Name)) Then IstSample.Add/tem "<Deleted>" Case Eise: istSampie.Additem CurrentTable(FId.Additem "<Err-" & Trim$(Str$(err)) & ">" End Seiect End If CurrentTabie. MoveFirst Do Until CurrentTabie. Name Next Fid . Fieids IstOfindexFields. Size IbtSample = “Ejemplo del Campo: " & Fid.5. Addltem Fid.: IbiType.Add/tem "<Null>" End if Eise Seiect Case err Case 3167: IstSampie.

Fields IstOfFields. Name Next Fld IblType. Clear Set td = WorkDb. Close Set Current Table = WorkDb. Clear For Each Idx In td. Caption “” lblSize.5. Addltem Idx. Private Funcfion EditBdi() Dim count As Integer Dim free. Caption = "" IstOfindexes. OpenRecordset(lstOfTables) TablelsOpen = True lstOfFíelds. Text = Input(ncar. Name Next Idx lstSampie. ncar As Integer free = FreeFile Open "c:lfinaNnfo1.lndexes IstOflndexes. Addltem Fld. Editar la base en intenso ‘Código: Visual Basic. Clear End Sub Private Sub brtDataBaseName KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then cmdOpen Click End Sub b) Edición de la base en intenso ‘Listado 4. TableDefs(lstOfTables) For Each Fld In td. Programación de una BDI 91 LstOfFields Click End Sub Private Sub IstOfTables_Click() Dim Fld As Field Dim Idx As Index If TablelsOpen Then CurrentTable. txt” For Input As #free scar = LOF(free) Bditxt. free) Close free End Funcfion .

previos al proceso de inferencia. CTE_TIPO_ARCHIVO_TEXTO. constituyen una forma sencilla de visualizar los resultados de los distintos procesos de selección y filtrado. desc_arb().1 Representación gráfica de los datos La representación gráfica de los datos contenidos en la base en intenso.5. Visible = False selectFileObligatory CTE_C_PRG_ARBOL.4. ‘Listado 5. Programación de una BDI 92 5. Option Explicit Dim cont_mostrados As Long Dim mi_left As Long Dim mi_top As Long Dim avance_left As Long Dim avance_top As Long Dim media_caja As Long Dim mínimo_ punto As Long Dim cancelar_arbol As Boolean Private Sub Aceptar Click() Unload Me End Sub Private Sub Btn_Arbol_ClickQ Dim i As Long Dim X As Long Dim cod arbo As String Dim desc arbo As String Dim cod padre arb() As Stting Btn_Arbol.db”. “Abrir Fichero de arboI" "&Abrir" If Not cancelar_operation_fichero_gf Then On Error Resume Next s_aut_leer_arbol_GAIH cod_arb(). Visible = False Aceptar. cod_padre_arb() cont-mostrados = 0 mi-top = avance-top Screen. “*. MousePointer = CTE_ARENA cancelar-arboi = True While cancelar-arbol cancelar-arbol = False For i = 1 To UBound(cod_arb) .2. Representación gráfica en árbol ‘Código: Visual Basic.

desc_arb(). desc_arb() viejo_left = mi_left numero-hijos = f_mostrar_hijos_GAIH(nodo. cod_arb(). cod_arb() As String. cod_arb(). DrawWdth = 4 avance_left = 1200 / 15 avance-top = 300 / 15 media-caja = 120 / 15 minimo punto = 4 End Sub Function f_expandir_nodo_GAIH(nodo As Long. KeyPreview = True frm_uO_arbo.left = mi_left + desviacion_ejes_X Etiqueta(cont_mostrados). desc_arb() As String.top = mi_top + desviacion_ejes_Y . desc_arb(). cod_padre_arb() mi_ left = viejo_left If numero-hijos > 0 Then f_expandir_nodo_GAIH = True Else f_expandir_nodo_GAIH = False End If End Function Private Sub s_mostrar_etiqueta_GAIH(nodo As Long. Programación de una BDI 93 If cod padre arb(i) = "" Then mi_ left = avance_left f_expandir_nodo_GAIH i. cod _padre_arb() As String) As Boolean Dim viejo_left As Long Dim numero-hijos As Long s_mostrar_etiqueta_GAIH nodo.AutoRedraw = False frm_uO_arbo. desc_arb() As String) cont-mostrados = cont-mostrados + 1 Load Etiqueta(cont_mostrados) Etiqueta(cont_mostrados). Cls Do Events For X = 1 To cont-mostrados Unload Etiqueta(X) Next X Exit For End If Next i Wend Screen. WindowState = CTE_MAXIMIZED frm uO_arbo. MousePointer = CTE_DEFECTO End If End Sub Private Sub Form_Load() Me.5. cod_padre_arb() Do Events End If If cancelar-arbol Then Me.

minimo_punto If pto_y < 0 Then avance-left = avance_left * 2 cancelar_arbol = True Exit Function End If Wend PSet (pto_x.5. pto_y). Line (mi_left – avance_left / 4. cod_arb() As String. Caption = desc_arb(nodo) End Sub Function f_mostrar_hijos_GAIH(nodo As Long. 0 Else Me. 0 cont-hijos = cont-hijos + 1 End If ha-habido-hijos = f_expandir_nodo_GAIH(i. 0 Pto_y = pto_y . Programación de una BDI 94 Etiqueta(cont_mostrados). mi_top media-caja). pto_y) <> 0 PSet (ptc_x. cod_padre_arb() As String) As Long Dim i As Long Dim primer-hijo As Boolean Dim cont-hijos As Long Dim pto_x As Long Dim pto_y As Long Dim ha-habido-hijos As Boolean primer-hijo = True cont-hijos = 0 For i = 1 To UBound(cod_arb) lf cod_padre arb(i) = cod_arb(nodo) Then If primer-hijo Then cont-hijos = 1 mi_left = mi_left + avance-left Me. mi-top + media-caja)-(mi-let?. desc_arb(). Visible = True Etiqueta(cont_mostrados). mi-top + media_caja)-(mi_left. mi-top + media-caja). 0 pto_y = mi-top + media-caja – minimo_punto pto_x = mi_left – avance_left / 4 While Point(pto_x. pto_y). cod_arb(). cod_padre_arb()) If Not ha-habido-hijos Then mi-top = mi-top + avance-top End If primer-hijo = False End If Next i f_mostrar_hijos_GAIH = cant_hijos End Function . Line (mi_left – avance_left + 20. desc_arb() As String.

1. CTE_SEP. “Abrir Fichero de árbol”. cod_ padre_arb() As String) On Error GoTo abrir-error Dim linea As String Dim indice As Long principio: Screen. 2. MousePointer = CTETDEFECTO Exit Sub abrir_error: s_error_ger CTE_ERROR_GRAVE. CTE_QUOTED_FIELDS. “*.txt”. desc_arb() As String. CTE_NO_2_SEP_AS_ONE)) desc_arb(indice) = noQuotes(extField(linea. CTET_TIPO_ARCHIVO_TEXTO. "&Abrir" CTE_SELECCIONAR _FICHERO_OBLIGATORIO_OP_FICH If cancelar_operacion_fichero_gfi Then Exit Sub End If Go To principio End Sub .5. CTE_NO_2_SEP_AS_ONE)) cod_padre_arb(indice) = noQuotes(extField(linea. 3. CTE_QUOTED_FIELDS. MousePointer = CTE_ ARENA Open nombre_fichero_gfi For Input As #CTE_NF_63_ARB ReDim cod_arb(1 To 1) As Stnng ReDim desc_arb(1 To 1) As String ReDim cod_padre_arb(1 To 1) As String indice = 0 While Not EOF(CTE_NF_63_ARB) linea = readLinelgnoreComment(CTE_NF_63_ARB) If Len(linea) > 0 Then indice = indice + 1 ReDim Preserve cod_arb(1 To indice) As String ReDim Preserve des_arb(1 To indice) As String ReDim Preserve cod _padre_arb(1 To indice) As String cod_arb(indice) = noQuotes(extField(linea. MousePointer = CTETDEFECTO If Not automatice_gcf Then selectFiteObligatoty CTE_C_TPRG_ARBOL. CTE_SEP. CTE_NO_2_SEP_AS_ONE)) End If Wend Close #CTE_NF_63_ARB DoEvents Screen. Close #CTE_NF_63_ARB DoEvents Screen. Programación de una BDI 95 Private Sub s_aut_leer_arbol_GAIH(cod_arb() As String. CTE_SEP. CTE_QUOTED_FIELDS.

consideremos el siguiente ejemplo. BinaryDB1. generalmente concentran datos en estado intermedio útiles para procesos particulares de inferencia pero no necesarios de forma persistente. es común el uso de datos no persistentes..T5) con: T1 (CVE). editar. T5(CONTADOR).T3.T4.. agregar): Sean R(T1. donde: R1 (T1. se hace referencia a objetos[¡ ista_muestra.. éstos generan pérdida de eficiencia en un contexto general. por ello.3 Archivos binarios En el desarrollo de una base de datos inteligente. grabados en disco a cuyos datos se accede cuando es necesario. Obtenida por los módulos ( En fragmentos de código. Tn). bas Public DatabasePath As String Public BackupDatabasePath As String Public IndexPath As String Public ditty As Boolean Public cualq_camb As Boolean Public Const DOT = "¤" Public Const Marca-en = "@Marca-en@" Private Const DATABASE_RECORD_LIMIT = 65000 .T2.. frmBinary] contenidos en el prototipo de ejemplo anexo al presente documento): ‘Listado 6 Datos binarios ‘Código: Visual Basic. T3(FECHA) T4(VALOR). Programación de una BDI 96 5. Aún cuando la mayoría del Hardware actual está provisto de RAM suficiente para tratar grandes' grupos de datos mediante arreglos. T2(MUESTRA).5. eliminar. tratados como archivos binarios que se crean y destruyen según sea preciso en el desarrollo de la aplicación. con las características básicas(buscar. la mejor opción es el uso de archivos binarios temporales.

idx" Private Const BACKUP_DATABASE_NAME = "Bintmp. txtTo) & DOT & “HECHO” Wntelndex “R” & rec-next.mb0" Private Const BACKUP_INDEX_NAME = "Bintmp.txtDate = Now recnext& = CLng( Val(Read/ndex("RecNext"))) frmRec.tmp” Private Const INDEX_NAME = "Bintmp. txtDate) & DOT & Trim(frmRec. txtMessage) Open DatabasePath For Binary As #1 byte-next = Readlndex("ByteNext”) rec-next = Readlndex("RecNext") Put #1. txtl ndex = recnext& & "" frmRec. rec-next ReadAIlRecords On Error GoTo 0 On Error Resume Next . AddRecordFinish Unload frmRec On Error Go To 0 On Error Resume Next End Sub Private Sub AddRecordFinish() On Error Resume Next Dim message As String message = Trim(frmRec.5. message Close # 1 len-bytes = Len(message) v$ = byte-next & DOT & len-bytes & DOT & Trim(frmRec.txtFrom) & DOT & Ttim(frmRec.Show 1 BinaryMgmt.id0" Private Const START_BYTE_PART = 1 Private Const LEN_BYTE_PART = 2 Private Const FROM_PART = 3 Pnvate Const SUBJECT_PART = 4 Private Const DATE_PART = 5 Private Const TO_PART = 6 Private Const INDEX_PART = 7 Public Sub AddRecord() On Error Resume Next cualq_camb = True frmRec. byte-next.txtSubject) & DOT & Trim (frmRec. v$ byte-next = byte-next + len-bytes Write/ndex "ByteNext" byte-next rec-next = rec-next + 1 Wntelndex "RecNext". Programación de una BDI 97 Private Const COLUMN_WIDTH = 20 Private Const DATABASE_NAME = "Bintmp.

5.lista_muestra.txtMessage = Mid$(filebuffer.Listlndex) myindex = ParseTab(v$. Programación de una BDI 98 End Sub Public Sub EditRecord() On Error Resume Next If frmBinary. filebuffer frmRec. EditRecordFinish dirty = False End If Unload frmRec On Error Go To 0 On Error Resume Next End Sub Private Sub EditRecordFinish() On Error Resume Next cualq_camb = True Dim message As String message = Trim(frmRec. len-bytes&) frmRec. Sho w 1 If dirty = True Then BinaryMgmt.txtDate = Parse(v$. 0) Open DatabasePath For Binary As #1 Close # 1. txtlndex) readin$ = Readlndex("R" & CLng(Val(myindex))) readin$ = Left(readin$. txtlndex myindex = myindex v $ = Readlndex("R" & myindex) start byte& = CLng(Val(Parse(v$. txtMessage) ‘{Marca-en el registro actual myindex = Trim (frmRec. FROM_PART) frmRec. Listindex = 0 Then Exit Sub v$ = frmBinary. DATE_PART) frmRec. SUBJECT_PART) frm Rec. lista-muestra.txtSubject = Parse(v$. 1. start byte&.2) readin$ = readin$ & “@Marca-en@” Writelndex "R" & CLng( Val(myindex)).lista_muestra. LEN-BYTE-PART))) As = filebuffer As String filebuffer = String(len bytes&.txtTo = Parse(v$. List(frmBinary. START_BYTE_PART))) len-bytes& = CLng(Val(Parse(v$. 5): v $ = “” frmRec. Len (readin$) . readin$ '{ Escribir un nuevo registro en la base . TO_PART) frmRec_txtFrom = Parse(v$.

v$ byte-next = byte-next + len-bytes Writelndex “Byte Next" byte-next rec-next = rec-next + 1 Writelndex "RecNext". Clear BuildHeaderList v$ = "dummytext" Do K& = k& + 1 v$ = Readlndex("R" & k&) If v$ = "" Then Exit Do If Right$(v$. Listlndex) myindex = ParseTab(v$. FROM_PART)) & vbTab & _ . txtDate) & DOT & Trim(frmRec. txtFrom) & DOT & Trim(frmRec. byte-next. 5): v$ = "" readin$ = Readlndex("R" & CLng(Val(myindex))) readin$ = Left(readin$. txtTo) & DOT & “HECHO“ Writelndex "R" & rec-next.Iista_muestra.2) readin$ = readin$ & “@Marca-en@” Writelndex "R" & CLng(Val(myindex)). rec-next End Sub Public Sub DeleteRecord() On Error Resume Next cualq_camb = True ‘{ Marca-en registro actual lf frmBinary. readin$ End Sub Public Sub ReadAllRecords() On Error Resume Next frmBinary. Len(Marca en)) <> Marca-en Then frmBinaryiista muestra.5. message Close #1 '{ En final ( index) len-bytes = Len(message) v$ = byte next & DOT & len-bytes & DOT & Trim(frmRec. lista-muestra. lista-muestra. Addltem _ Pad(Parse(v$. List(frmBinary. Programación de una BDI 99 byte-next = Readlndex("ByteNext") rec-next = Readlndex("RecNext") Put #1. Len(readin$) . Listlndex = 0 Then Exit Sub v$ = frmBinary. lista-muestra.txtSubject) & DOT & Trim(frmRec.

1) <>”\" Then IndexPath = IndexPath +”\" IndexPath = IndexPath + INDEX_NAME If Not FileExists(DatabasePath) Then ‘{ crear archivo Open DatabasePath For Output As #1 Close #1 Open IndexPath For Output As # 1 Print #1. SUBJECT PART)) & vbTab & _ Pad(Parse(v$. "[Index]" Print #1. 1) <>”\" Then DatabasePath = DatabasePath + ”\" DatabasePath = DatabasePath + DA TABASE_NAME IndexPath = App.5. Programación de una BDI 100 Pad(Parse(v$. "RecNext = 1 " Ptint #1. Path If Right$(DatabasePath. Path If Right$(IndexPath. "ByteNext = 1" Close #1 End If On Error GoTo 0 On Error Resume Next End Sub Private Function FileExists(ByVal f$) As Boolean On Error Resume Next SetAttr f$. DATE-PART)) & vbTab & _ Pad(Parse(v$. vbNormal If Err Then FileExists = False Else FileExists = True End If On Error Go To 0 On Error Resume Next End Function . TO PART)) & vbTab & _ k& End If Loop Until v$ = “” On Error Go To 0 On Error Resume Next End Sub Public Sub OpenDatabase() On Error Resume Next DatabasePath = App.

BackupDatabasePath Kill DatabasePath Dim filebuffer As String byte next& = I Open BackupDatabasePath For Binary As #readin Open DatabasePath For Binary As #readout For k& = 1 To DATABASE RECORD_LIMIT v$ = Readindex("R" & k&) If v$ = "" Then Exit For . Addltem header_row On Error GoTo 0 On Error Resume Next End Sub Public Sub CompactDatabase() On Error Resume Next readin = 1 readout = 2 BackupDatabasePath = App. Programación de una BDI 101 Private Function Pad(ByVaI incoming As String) As String On Error Resume Next Select Case Len(incoming) Case Is < COLUMN_ WIDTH incoming = incoming & Space(COLUMN_WIDTH .lista_muestra. Path If Right$(BackupDatabasePath. 1) <>”\” Then BackupDatabasePath = BackupDatabasePath & 1" BackupDatabasePath = BackupDatabasePath + BACKUP_DATABASE_NAME Kill BackupDatabasePath FileCopy DatabasePath. COLUMNTWIDTH) End Select Pad = incoming On Error Go To 0 On Error Resume Next End Function Private Sub BuildHeaderList() On Error Resume Next Dim cofheaders(5) As String colheaders(1) = "CVE” colheaders(2) = “MUESTRA” colheaders(3) = “FECHA” colheaders(4) = “VALOR” colheaders(5) = “CONTADOR” Fork% = 1 To 5 header-row = header-row & Pad(colheaders(k%)) & " " & vb Tab Next k% frmBinary.Len (incoming)) Case Is > COLUMNTWIDTH incoming = Left$(íncoming.5.

5. Programación de una BDI

102

if Right$(v$, Len(Marca_en)) <> Marca-en Then start_byte& = CLng(Vai(Parse(v$, START_BYTE_PART))) len_bytes& = CLng(Val(Parse(v$, LEN-BYTE-PART))) filebuffer = String(len bytes&, 0) Get #readin, start byte&, filebuffer outgoing$ = Mid$(filebuffer,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$, TO_PART) & DOT “HECHO” Wnteindex "R" & k&, v$ byte next& = byte-next& + len-bytes& Eise WriteIndex “R” &k&, “@Marca-en@” End If Next if byte_next& = 0 Then byte-next& = 1 Writeindex "ByteNext", byte-next& Writeindex "RecNext" k& Close #readout Close #readin Kiii BackupDatabasePath On Error Go To 0 On Error Resume Next End Sub BinaryDB2.bas Private Const sizer = 255 * 5 Private Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVai IpApplicationName As String, ByVal IpKeyName As Any, ByVai IpDefault As String, By Val IpReturnedString As String, ByVai nSize As Long, ByVai IpFileName As String) As Long Private Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVai IpApplicationName As String, ByVal IpKeyName As Any, ByVai IpString As Any, ByVai IpFileName As String) As Long Public Function Readlndex(ByVal IstrKey As String) As String On Error Resume Next Dim lfixedstrRetValue As String * sizer Dim IstrRetValue As String Dim lint Junk As integer Dim IstrSection As String IstrSection = "Index" IfixedstrRet Value = String(sizer, "')

5. Programación de una BDI

103

lintJunk = GetPrivateProfileStríng(IstrSection, IstrKey, " " lfixedstrRet Value, sizer, IndexPath) IstrRet Value = Trim(IfixedstrRetValue) IstrRetValue = Left(IstrRetValue, Len(IstrRetValue) - 1) Readlndex = lstrRet Value On Error Go To 0 On Error Resume Next End Function Public Sub Writelndex(ByVal IstrKey As String, ByVal IstrValue As String) On Error Resume Next Dim IstrSection As String Dim lintJunk As Integer IstrSection = “Index” IstrValue = Trim(IstrValue) IintJunk = WritePrivateProfleString(IstrSection, IstrKey, IstrValue, IndexPath) On Error Go To 0 On Error Resume Next End Sub BinaryDB3.bas Public Declare Function SendMessage Lib "user32" Alias "SendMessageA " (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, IParam As Long) As Long Public Sub IniciaBinary() On Error Resume Next BinaryMgmt. OpenDatabase frmBinary. Show On Error Go To 0 On Error Resume Next End Sub BinaryDB4. bas Public Function Parse(ByVal T$, v%) As String On Error Resume Next Const LIMITE = "¤" T$ = LIMITE + Trim(T$) + LIMITE

5. Programación de una BDI

104

x1% = Len(T$) Place % = 0 For Counterl % = 1 To xI% CurrentChar$ = Mid$(T$, Counter1 %, 1) If CurrentChar$ = LIMITE Then Place % = Place % + 1 If Place% = v% Then xStart% = Counterl % + 1 Exit For End If Next For Counter2% = xStart% To xl% CurrentChar$ = Mid$(T$, Counter2%, 1) If CurrentChar$ = LIMITE Then Place % = Place % + 1 If Place% = v% + 1 Then xStop% = Counter2% - xStart% Exit For End If Next If xStop % = 0 Then Parse = Trim(Mid$(T$, xStart%)) If InStr(Parse, LIMITE) Then Parse = “” Else Parse = Trim(Mid$(T$, xStart%, xStop%)) If InStr(Parse, LIMITE) Then Parse = “” End If On Error GoTo 0 On Error Resume Next End Function Public Function Parse Tab(ByVal T$, v%) As String On Error Resume Next Const LIMITE = vbTab T$ = LIMITE + Trim(Ts) + LIMITE xI% = Len(T$) Place % = 0 For Counter1% = 1 To xI% CurrentChar$ = Mid$(T$, Counter1 %, 1) If CurrentChar$ = LIMITE Then Place % = Place % + 1 If Place% = v% Then xStart% = Counterl % + 1 Exit For End If Next For Counter2 % = xStart % To xl% CurrentChar$ = Mid$(T$, Counter2%, 1) If CurrentChar$ = LIMITE Then Place % = Place % + 1 If Place% = v% + 1 Then

4.4 Filtrado y preproceso En los ejemplos anteriores. LIMITE) Then Parse Tab = "" Else Parse Tab = Trim(Mid$(T$. Ejemplos documentados de su uso pueden consultarse en el CD anexo: • • Fuzzy DBExpert.5. xStop%)) If InStr(ParseTab. xStart%. que no precisan de filtrado o preproceso en la construcción de la base de datos en intenso.xStart% Exit For End If Next if xStop % = 0 Then ParseTab = Trim(Mid$(T$. Private Sub fuzzy() Dim dbDatos As Database . 5. 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.1 Difusor simple `Listado 7 Difusor simple `Código: Visual Basic. Programación de una BDI 105 xStop% = Counter2% . sólo presentamos los fragmentos centrales. Fuzzy DbRelation. LIMITE) Then Parse Tab "" End If On Error GoTo 0 On Error Resume Next End Function 5. xStart%)) if InStr(ParseTab. se han utilizado métodos simples.

b$. Close db Datos. Programación de una BDI 106 Dim R As Recordset free = FreeFile Set dbDatos = OpenDatabase('path+file') Set R = DB.3 Is = 0. et As String Dim li.int" For Output As #free R. T3 As Double) Dim free as integer Dim pertenece. "+T3+"). c$) R. Is as Double et = "objeto(" li = 0. " Print #free.EOF a$ = R!id b$ = R!prioridad c$ = Rllectura Call difusor(a$. OpenRecordset("Iectura”) Open “‘PA TH’\lbase. Mo veNext Wend R.5.8 If T2 <= li Then pertenece = ‘Bajo” End If If T2 >= is Then pertenece = “Urgente” Else pertenece = “Alto” End If a$ = Tl b$ = pertenece c$ = T3 f$ = et + T i + ". MoveFirst While Not R. Close Close #free End Sub Prívate Function difusor(T1 As String. f$ End Function . T2 As Double. " +pertenece+".

). . else íf(num == 40) Then return 1. Programación de una BDI 107 54.2 Difusor con múltiples condiciones El siguiente listado. +3.1. else if(num > 20 && num < 40) Then return (num/20.5. Else return 0.).). End If End Function . else if(num > 40 && num < 60) Then return ((-num)120. es el eje operativo del ejemplo Fuzzy DBExpert. . else if(num == 40) Then return 1. +3. else if(num > 40 && num < 60) Then return ((-num)120. su implementación bajo la plataforma de Visual Basic se detalla en los módulos asociados al proyecto. End If End Function Public Function medioModerado( num As Double)As Double if(num <= 20) Then return 0. 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. Public Function medioConservador(num As Double) As Double if(num <= 20) Then return 0.1. else if(num > 20 && num < 40) Then return (num/20.). ‘Listado 8 Difusor con múltiples condiciones ‘Código: Visual Basic '{ Implementar métodos para calcular el grado de pertenencia '{ de un valor determinado a los conjuntos borrosos de las reglas. Else return 0.

Else return 0. se crea y destruye según sea preciso en las operaciones generales del sistema. la manipulación de la bases en intenso será: a)La base de datos en intenso esta constituida por un archivo temporal plano. End If End Function Public Function medialnversion( num. As Double) As Double if(num <= 25) Then return 0. else if(num > 50 && num < 75) Then return ((-num)i25.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).xpl) compilado en Prolog.1) *num+ 1.5. las operaciones sobre ésta las efectúa un archivo binario (file. La temporalidad de este archivo obedece a que el motor debe procesar bases de conocimiento distintas en el marco de procesos de inferencia determinados. +3. Dicha base.). Else return 0. en dichas se deberán concentrar la totalidad de los procesos de inferencia posibles para el total de bases .1. Programación de una BDI 108 Public Function pocoArriesgado(num As Double) As Double if(num < 10) Then return ((-0. else if(num > 25 && num < 50) Then return (num/25.).). else if(num == 50) Then return 1.. End If End Function 5. Las bases en intenso se manipulan conforme a un conjunto determinado de reglas y funciones que constituyen el núcleo del motor de inferencia.

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. para atender los requerimientos del sistema. Bottom Up. Técnicas de búsqueda: Depth First. En las siguientes líneas definiremos las principales funciones con que opera el motor de inferencia de Prolog sobre la base. Representación del conocimiento en la base en intenso: Redes semánticas. Los rasgos pueden tener pesos asociados y relacionados con ellos que representan . 4. 2. Dos conceptos pueden estar: • Desligados (no tener atributos en común). Breadth First. los conceptos están representados por un aumentado conjunto de rasgos. Representación del conocimiento en la base en intenso: Redes semánticas. Programación de una BDI 109 temporales involucradas. Deductivo. por lo que nos ocuparemos exclusivamente de los temas directamente relacionados con nuestro estudio: 1. 3. • Anidados (todos los atributos de un concepto están incluidos en el otro). Modelos heurísticos: Hipotético. Métodos de resolución: Top Down. 1. evidentemente el estudio exhaustivo del lenguaje Prolog rebasa el propósito de ésta tesis. • Sobrepuestos (tener algunos pero no todos los atributos en común). 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.5. De acuerdo con estos puntos de vista. • Ser idénticos (estar especificados en forma exacta por el mismo conjunto de rasgos). De esta forma los conceptos pueden permanecer en un conjunto de relaciones familiares.

Así también tenemos la posibilidad de detallar más sus cualidades como que tiene en sus partes piernas y brazos. Como una especie de revisión de todas las aplicaciones de estas ideas expuestas aquí. La red descrita en la figura siguiente determinada con lazos constituidos en (a. Programación de una BDI 110 una prominencia variada y características importantes para los conceptos en cuestión. las flechas muestran el sentido de la relación. elegimos para describir "la comparación del rasgo" el modelo propuesto por Smith . ahora una persona es del tipo animal. 2. . el cual "hereda" todas las características antes descritas del animal. 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. el cual "a" y "b" son los nodos que permanecen enlazados a través de la relación "R" . sin poseer un carácter recíproco. tiene masa y está formado por miembros. Veamos un ejemplo que describe lo más completo posible este tipo de representación: Un animal come alimento.b). respira aire. acreditan la relación de los atributos con los elementos por medio de estamentos naturales.5.R. Formas o Atributos Semánticos La representación semántica es considerada la más natural.

14 Representación semántica Para implementar la semántica expresada en la figura anterior.5.es_del_tipo. puede. volar). r("ANIMAL". "ANIMAL"). r("ANIMAL".esta_formado_por. .tiene. come. alimento). r("PAJARO". aire). masa). basta con definir la estructura que genera la base donde se describen los hechos. respira. miembros). r("PAJARO". Las siguientes cláusulas proporcionan esta información: r("ANIMAL". r("ANIMAL". Programación de una BDI 111 Fig.

esta_formado_por.esta_formado_por. r("PERSONA". Las relaciones son directas y niveladas. representados por nodos. 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. Elemento-2) relaciona por medio de "Lazo" el "elemento-I" con el "elemento _2".esta_formado_Por. r("PERSONA"."CANARIO"). . alas). es_del_tipo. es_del_tipo. y relaciones entre ellos. r("Persona X". color. "PAJARO")."ANIMAL"). Podemos observar que la cláusula r( Elemento-I Lazo. sólo falta un sistema que haga uso de ella.un_representante_de. 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. r("Ave X". r("CANARIO".brazos). r("PERSONA". Una relación es una asociación entre los conjuntos de los nodos. un_representante_de.5. Por ejemplo una expresión clausal que sea capaz de proporcionar en una lista las características que hereda un elemento de la clase."PERSONA"). representadas por arcos que ligan a los nodos entre sí. Programación de una BDI 112 r("PAJARO". y exprese el conocimiento que la red determina por medio de la acción. Básicamente los nodos pueden ser de dos tipos: • Individuales. plumas). representan descripciones o afirmaciones referentes a una instancia individual de un objeto. r("CANARIO". piernas). esta_formado_por. r("PAJARO". • Genéricos. Las redes semánticas se caracterizan por el tratamiento de conceptos. representan referentes de una clase o categoría de objetos. amarillo).

están basados en la formulación de la solución del problema como una búsqueda. que comienza con el objetivo . son métodos de inferencia que orientan las búsquedas y las técnicas de éstas.5. El encadenamiento hacia atrás “Top Down”. derivando nuevos objetivos a partir de los objetivos anteriores hasta que todos los objetivos derivados. en este caso una rama del árbol. Bottom Up. 3. Programación de una BDI 113 Los conceptos están previamente ordenados en una taxonomía. * 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. Una refutación es un camino en el espacio de búsqueda. y el segundo liga dos nodos genéricos entre sí y expresa que un concepto o tipo es un subtipo de otro. Métodos de resolución: Top Down. una estructura de árbol. Representan las distintas formas de explorar la información representada por un sistema inteligente. El primero liga un nodo individual con uno genérico y expresa que un individuo es de cierta clase. son resueltos por las aserciones originales. 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 sistemas de resolución de problemas en IA. Se comienza en un estado inicial y la meta es llegar a un estado final u objetivo. para las redes semánticas no hay métodos formales y generales de deducción. tiene la particularidad de ir generando con las cláusulas que va tomando. y existen los arcos especiales “es un” y “es un tipo de”. Es importante destacar que a diferencia del formalismo de la lógica. 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. El significado asignado a una red lo establecen solamente los procedimientos que manipulan la red.

fuzzy) y los datos en intenso provienen de objetos Recordset. En el primero de los casos se utilizan bloques de sentencias IF THEN ELSE inscritos en ciclos predefinidos (p. En el segundo. por lo cual la búsqueda es más difícil. se concentra en funciones ad hoc desarrolladas en el lenguaje anfitrión (Visual Basic) y en archivos binarios (. Para ello se usan las aserciones e implicaciones que permitan derivar nuevas aserciones. 5. resulta evidente que el repositorio de reglas constituye el eje fundamental del proceso de inferencia. propios del programa de aplicación. para los efectos de nuestro estudio. se termina cuando eventualmente la cláusula original o hipótesis es resultado de las aserciones derivadas. se comienza con las cláusulas que son aserciones o hipótesis. se utilizan las aserciones para obtener nuevas aserciones a partir de las ya generadas.4 Programación Lógica Paralela (Motor Relacional. b) Método BOTTOM UP El encadenamiento hacia adelante “Bottom Up”.ej. se termina cuando se deriva una que explícitamente contradiga el objetivo.Motor de Inferencia) Como podemos apreciar en los ejemplos citados con anterioridad. Programación de una BDI 114 y termina con la cláusula vacía. una estructura simple. el motor de inferencia consulta un repositorio de reglas predefinido y opera sobre archivos temporales (Base de datos en intenso). . generalmente. la base en intenso es. Este repositorio. Este método de resolución genera una estructura más compleja que la generada por “Top Down".5. donde se evalúa a sus miembros en función de su peso o áridad.xpl) compilados por y para el motor de inferencia huésped Amzi4 Prolog. Una refutación en este método comienza con las aserciones de las cláusulas originales.

persona(Sofía. M).M).F).5. dada una estructura de base simple (toda persona tiene un nombre y un sexo): persona(nombre. En las siguientes líneas nos ocuparemos ponderantemente de este caso. donde: persona( Carlos. no definidas explícitamente en la base en intenso por ejemplo. sexo). mujer:-(persona(x.F). Programación de una BDI 115 Fig. 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). Aplicando la expresión: hombre:-(persona(x. . Diagrama General de la Arquitectura Propuesta. 15.

como se ha descrito anteriormente .interviene una secuencia ordenada de pasos.xpl) podemos concentrar múltiples relaciones semánticas complejas.5. para atacar el conjunto de necesidades del sistema. Así. desde la selección de los datos objetivo hasta los productos del proceso de inferencia. El motor de inferencia opera sobre una base de datos en intenso en función de un repositorio de reglas dado. en este proceso . todas las acciones del motor responden a eventos predefinidos que se disparan desde la aplicación. en el repositorio de reglas (logic. éste genera la base en intenso. Programación de una BDI 116 Tenemos: De esta forma. . inicializa el motor de inferencia y a través de él consulta la base citada. así como integrar restricciones de integridad a la base en intenso. el flujo y procesamiento de datos está regulado por el programa de aplicación.

5. Padre." . Primos. "Descubrir relaciones genealógicas entre los miembros de la base en intenso (Madre. ocupándonos de sus aspectos principales. Abuelos. Tías. Primas.).pareja). Compuesta por la estructura: person(nombre. Compuesta por la tabla: Familia. Programación de una BDI 117 Todas los ejemplos en que interviene el motor de Proiog tienen la misma base. etc. Tíos. Abuelas. 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. donde Campo Nombre Sexo Padre Madre Pareja | Soltero String String String String String Tipo 50 9 50 50 50 Tamaño b) La base en intenso. a) La Base Persistente.genero.madre. c) El objetivo de la inferencia.padre.

padres(P. primos. C) .pro %Código: Prolog % Objetivo del proceso de inferencia: relations([padres. P) :. male(C). S2( hermanos(S1. esposa. male(H). desendientes. esposo(H.spouse(W. P) :. nietos]). hijos (C).padres(P. S 1). desendientes(D. hijo. P). sobrina. call(Q) % Repositorio de reglas en sí padres(P. ancestros(A. S2) :. P). C) :. Y].X) hermanos@ 1.X). desendientes(D.D). madre(M.padres(P. nieto.padres(P. C). C)). tía. P) :. Q [R. P) :.full_hermanos(S1. hija. S2) :. hermano. tio. compilado en el archivo binario "arbol. P) :. padre. C).padres(A. Rs). P) :. desendiente(D. X. nieta. hijos(C. madre.half hermanos(S 1.spouse(H. sobrinos. C). female(C).5. X. esposa(W. S2). member(R.padres(X. female(W). El repositorio de reglas está escrito en Lenguaje Amzi4! Prolog. S 1). P) :. S2). esposo. Y) :relations(Rs). P). full_hermanos(S 1. S 1 \= s2. padre(F. hija(C. ancestros(A. padre(P. ancestros(A. relation(R. hijos.X).(madre (P. P). ancestros. P) :.padres(P. Programación de una BDI 118 d) El repositorio de reglas. abuelas. hermana. abuelos. P) :. hermanos. . S2) :madre(M. el siguiente es el listado de su código: %Listado 9 arbol.xpl".

5. Programación de una BDI

119

padre(F, S2). half_hermanos(S 1, S2) ;madre(M, S2), madre(M, S1), S1 \= s2, padre(F 1, S1), padre(F2, S2), F 1 \= F2. half hermanos(S1, S2) :padre(F, S2), padre(F, SI), S1\= s2, madre(M 1, S1), madre(M2, S2), MI \= M2. hermana(S, P) :hermanos@a, P), female(S), hermano(8, P) :hermanos(B, P), male(B). tio(U,X) :padres(P,X), hermano(U, P). tia(A,X) :padres(P,X), hermana(A, P). sobrinos(N,X):hermanos(S,X), padres(S, N), male(N). sobrina(N,X) :hermanos(S,X), padres(S, N), female(N). primos(X, Y) :padres(P, Y), hermanos(S, P),

5. Programación de una BDI

120

padres(S,X). abuelas(GM,X) :padres(P,X), madre(GM, P). abuelos(GF,X):padres(P,X), padre(GF, P). nieto(GS,X) :nietos(GS,X), male(GS). nieta(GD,X):nietos(GD,X), female(GD). nietos(GC,X) :padres(X, C), padres (C, GC). person(X) :person(X, _,_,_,_) male(X) :person(X, male,_,_,_). female(Y) :person(Y, female,_,_,_). madre(M, C) :person(C,_, M,_,_). padre(F, C) :person(C,_,_, F,_). spouse(S, P) :person(P,_,_,_, S), S \= single. member(X, [X\_]) member(X, [_\ Y]) :- member(X, Y).

5. Programación de una BDI

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 consult() Dim rc As Integer, tf As lnteger Dim Term As Long Dim xplname As String xplname = Path + “\ARBOL.XPL” InitLS (xplname) LoadLS (xplname) tf = CalIStrLS(Term, "set_mode(string_esc, off)”) If tf <> True Then MsgBox “Error” End If abre familia End Sub Private Sub DisplayRelations() Dim Person As String, Relationship As String Dim StrVal As String Dim rc As Infeger, tf As Integer Dim Term As Long RelatedPersonsList Clear If PersonList. Listlndex < 0 Or RelationshipList. Listlndex < 0 Then Exit Sub End if '{ Se selecciona un miembro de la lista Per-son = Person List. Líst(PersonList. Listlndex) '{ Se selecciona la relación a buscar Relationship = RelationshipList.List(RelationshipList. Listlndex) ' { Se pasan los parámetros de consulta a Prolog tf = CaJIStrLS(Term, Relationship + "(X, "' + Person + “’)”) While (tf) Call GetArgLS(Term,1, bSTR, StrVal) RelatedPersonsList. Addltem StrVal tf = RedoLS() Wend End Sub

7. "" CurrentFamily = “” End If tf = Persons() if = Relations() End Sub Private Sub PersonList Click() Call DisplayRelations End Sub Private Function Persons() As Integer Dim rc As Integer. "relations(X)”) If (i <> True) Then Relations = 0 Return End If Call GetArgLS(Term. bSTR. bTERM. TList As Long Dim StrVal As String RelationshipList. Programación de una BDI 122 Private Sub abrefamilia() Dim rc As Integer. tf As Integer Dim Term As Long. tf As Integer Dim Term As Long CurrentFamily = "'PATH+’\base. 1. tf As Integer Dim Term As Long Dim StrVal As String PersonList. TList) . Clear tf = CallStrLS(Term. StrVal) Persontist.5.int" tf = CaliStrLS(Term. 0. "person(X) “) if (tf <> True) Then Persons = 0 Exit Function End If While (tf = True) Call GetArgLS(Term. Addltem Str Val tf = RedoLS() Wend Persons = 1 End Function Private Function Relations() As Integer Dim rc As Integer. "consult('" + CurrentFamily + “’)”) If (if <> True) Then MsgBox "Error". Clear tf = CallStrLS(Term.

StrVal) If (rc = 0) Then RelationshipList. Programación de una BDI 123 Do rc = PopListLS(TList. bSTR. ByVa! StrPtr As String) As Bolean Dim (f As Long tf = IsCaIIStr(EnginelD.Addltem StrVal End If Loop While (rc = 0) Relations = 1 End Function Private Sub RelationshipList Click() Call DisplayRelations End Sub ‘{ Funciones de la librería utilizadas Public Sub InitLS(ByVal INIFile As String) Dim rc As Long If IsEmpty(MaxStrLen) Then MaxStrLen = 255 End If If IsEmpty(ErrorMethod) Then ErrorMethod = 0 End If rc = Isinit(EnginelD. XPLFiIe + Chr$(O)) If (rc <> 0) Then Call ErrorHandler("IsLoad". rc) End If End Sub Public Function Ca1IStrLS(TermPtr As Long. INIFile + Chr$(O)) If (rc <> 0) Then Call ErrorHandler("Islnit". StrPtr + Chr$(O)) . rc) End If End Sub Public Sub LoadLS(ByVal XPLFiIe As String) Dim rc As Long rc = IsLoad(EnginelD. TermPtr.5.

bTERM rc = IsGetArg(EnginelD. tlong) Ptr = tlong Case b/NT. bSHORT rc = IsGetArg(EnginelD. tfloat As Single. ArgNum. tstr As String. bA TOM tstr = Space$(MaxStrLen) rc = IsGetArg(EnginelD. tdouble) Ptr = tdouble End Select If (rc <> 0) Then Call ErrorHandler(`IsGetArg rc) End If End Sub Public Function PopUstLS(TermPtr As Long. ffloat As Single. tint) Ptr = tint Case bFLOAT rc = IsGetArg(EnginelD. BType. ArgNum. ByVal tstr) Ptr = StripStr(tstr) Case bLONG. BType. tf) End Select End Function Public Sub GetArgLS(ByVal Term As Long. ArgNum. tfloat) Ptr = tfloat Case bDOUBLE rc = IsGetArg(EnginelD. tstr As String Dim tlong As Long. ArgNum. bADDR. ByVal BType As lnteger. tdouble As Double . Ptr As Variant) Dim rc As Long.5. ArgNum. tint As lnteger. Term. ByVal ArgNum As Long. Term. ByVal BType As lnteger. Term. BType. tdouble As Double Dim s As String Select Case BType Case bSTR. tint As Integer. Term. BType. Programación de una BDI 124 Select Case tf Case 0 CaII StrL S = False Case I CalIStrLS = Trae Case Else Call ErrorHandler("IsCalIStr". Term. Ptr As Variant) As Long Dim rc As Long. BType. tstr2 As String Dim tlong As Long.

base persistente. BType. BType. tdouble) Ptr = tdouble End Select Select Case rc Case 0 PopListLS = rc Case -1 PopListLS = rc Case Else Call ErrorHandler("IsPopList" 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. ByVal tstr) Ptr = StripStr(tstr) Case bLONG. aplicado al diagnóstico. Programación de una BDI 125 Select Case BType Case bSTR. tlong) Ptr = tlong Case bINT. pueden ser editados en las vistas de `Edición' en los prototipos desarrollados. bADDR. se anexa un ejemplo de la presente tecnología. TermPtr. tint) Ptr = tint Case bFLOAT rc = IsPopList(EngineiD. BType. repositorio de reglas. BType. éste y todos los ejemplos concentrados en el prototipo (listados. bATOM tstr = Space$(MaxStrLen) rc = IsPopList(EnginelD. bTERM rc = IsPopList(EnginelD.5. B Type. TermPtr. de hecho. TermPtr. TermPtr. sobre su operación conjunta con Visual Basic. . base en intenso). bSHORT rc = IsPopList(EnginelD. TermPtr. constituye la base de explicación a usuarios de Amzi4. float) Ptr = tfloat Case bDOUBLE rc = IsPopList(EnginelD. Adicionalmente.

) y lenguaje SQL. Estado del Arte 6. Herramientas OLAP. Entornos de soporte a la toma de decisiones (EIS/DSS). como el análisis de probabilidad. • • • • • • • • Hojas de cálculo. ofreciendo intetfaces con la mayoría de las plataformas para almacenes de datos.. SPSS. basadas en técnicas de Inteligencia Artificial.6. Paquetes de análisis estadístico (SAS. etc. 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. Estado del Arte 126 6.). gestores y ejecutivos obtener una visión de los datos por medio de un acceso rápido.etc. análisis de regresión y correlación.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. . Las técnicas estadísticas. Aplicaciones de “minería” de datos sofisticadas. Generadores de informes. QBE. Herramientas de visualización de datos. se pueden definir como un tipo de tecnología software que permite a los analistas.. consistente e interactivo a una amplia variedad de posibles vistas de la información que ha sido transformada a partir de datos en bruto para reflejar la dimensionalidad real de . que empiezan a soportar también varias dimensiones en el tratamiento de datos. inferencia. están conociendo un resurgimiento con los entornos de almacenes de datos. Las herramientas OLAP (siglas que pueden englobar todas las anteriores categorías). análisis de series temporales. y los paquetes que las soportan empiezan a difundirse cada vez más.

Estas herramientas se caracterizan. . .Comparaciones. por la utilización de modelados abstractos: Objetos y clases entre otros. en nuestro estudio.Ratios multidimensionales. . existe una fuerte tendencia.Comparar datos agregados en periodos de tiempo jerárquicos (días. más potentes.Analizar las entre diferentes elementos de negocio. Sin embargo. que permiten descubrir información valiosa sin depender del usuario. que el propio usuario va haciendo y validando con los datos que le devuelven sus consultas. 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: .6. . por tanto. Presentar datos en diferentes perspectivas . meses. en el seno de los grupos de IA.Perfiles estadísticos y clasificaciones. existe otro tipo de técnicas.). Estado del Arte 127 la empresa tal y como la entiende el usuario. . . años. sin embargo. sólo hemos pormenorizado en los algoritmos de modelado basados en IPL.Involucrar datos agregados. etc. Este tipo de herramientas permite a los analistas del negocio verificar hipótesis. por: .Acceder a una gran cantidad de datos (varios años de ventas). son las que se engloban dentro de la categoría de minería de datos (data mining) propiamente dicha.Implicar cálculos complejos entre los elementos de datos. pudiendo navegar por las distintas dimensiones de los datos.

por ejemplo. ingresos de una familia. . construye modelos que encuentran registros de datos similares (mediante técnicas geométricas. estadísticas. permite identificar grupos de elementos que ocurren juntos en una transacción. . Estas tareas se pueden llevar a cabo mediante la aplicación de distintas técnicas que resumimos a continuación: . Categorizar objetos.Predicción.Descripción. examinar sus características y asignarlos a un conjunto predefinido de clases. Segmentar una base heterogénea en varios grupos (clusters) homogéneos. .Estimación. Explicación de lo que sucede en la base de datos.Detección de agrupamiento. Estado del Arte 128 Algunas de las tareas que se llevan a cabo con las herramientas de minería de datos son las siguientes: . clasificar personas que van a pedir un préstamo según el riesgo que presentan. . es decir. 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. sin que existan clases predefinidas. Los datos se clasifican de acuerdo a un comportamiento futuro.Agrupamiento por afinidad. . .Análisis de enlace.). la estimación consiste en obtener un valor continuo. por ejemplo. utiliza instancias conocidas como modelo para hacer predicciones acerca de otras instancias desconocidas. Mientras que la clasificación obtiene una salida discreta.Análisis de la cesta de la compra. En la práctica se utiliza para llevar a cabo clasificaciones. .Clasificación. sigue las interrelaciones entre los registros con el fin de desarrollar modelos basados en patrones en las interrelaciones (aplicando teoría de grafos). .Razonamiento basado en memoria.Agrupamiento (clustering). etc. .6.

clasificación de enfermedades..Distribución: análisis de la cesta (qué elementos tienden a comprar conjuntamente los clientes). 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. reclamaciones no válidas. . análisis de productos. análisis de incidentes. Es la técnica más común. existe un conjunto muy amplio de aplicaciones: .Árboles de decisión y reglas de inducción. Aunque.Medicina. CAD.6. patrones de compra..Seguros: detección de fraudes.Ciencias espaciales. predicción de ventas. . .. identificación de tratamientos eficaces. .. son capaces de aprender de un conjunto inicial. patrones basados en tiempo para tomar decisiones respecto a los almacenes. . análisis de riesgos. . . donde sirven para el análisis de los datos procedentes de telescopios o de sondas. . . . . . etc. Estado del Arte 129 .Redes neuronales artificiales.).Algoritmos genéticos.Ingeniería: diagnóstico de fallos. . en concreto. ofertas individuales. biomedicina. modelos predictivos. diseño de productos. .. astronomía.Banca: concesión de créditos. detección de fraudes.Ventas: identificación de subgrupos específicos. . . . 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. segmentación de clientes (para ofrecer tarjetas de créditos según el tipo de cliente). 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. como hemos señalado. . . análisis genéticos.Agricultura: identificación dé plagas.Energía eléctrica: programas de distribución. efectos de drogas. generalizando patrones para clasificación o predicción. costes de los hospitales. . . . . predicción de valores bursátiles. . predicción de quiebras.

. multimedia. ya que las herramientas no siempre son capaces de explicar al usuario cómo han llegado a los datos. .Mecanismos de explicación limitados. que son objeto de discusión en numerosas conferencias y publicaciones especializadas.6. incapacidad de realizar validaciones cruzadas. tamaños. . pero todavía se enfrenta a numerosos retos por resolver.Manejo de diferentes tipos de datos. etc. etc. etc. Las imperfecciones deberían ser expresadas mediante medidas de la incertidumbre en forma de reglas de aproximación. . . donde destacan los siguientes: . interfaces gráficas. sino también espaciales (geográficas).Expresión de varios tipos de peticiones y resultados de minería de datos. Estado del Arte 130 Como podemos observar prácticamente todos los sectores empresariales pueden beneficiarse de estas técnicas. certeza y expresividad de los resultados de la minería de datos.Soporte limitado a ciertas plataformas.Gran consumo de recursos. mediante la utilización de lenguajes de alto nivel.Eficiencia y escalabilidad de los algoritmos de minería de datos. por ejemplo. formatos.Utilidad.Formatos de entrada de datos limitados.Técnicas de validación limitadas. . . etc. . no ofrecen posibilidad de manipular gráficos. . textos. los tiempos de ejecución de estos algoritmos debe ser predecible y aceptable en bases de datos muy grandes. fórmulas matemáticas.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. se deberían construir sistemas capaces de explotar los datos no sólo en bases de datos relacionales.Minería interactiva del conocimiento a vanos niveles de abstracción. 6. . para que el usuario pueda refinar de forma iterativa su petición. presentando los resultados de diferentes formas y bajo diferentes perspectivas.

. .Conjuntos de datos masivos y soporte de alta dimensionalidad así como de bases de datos de millones de registros (varios Gbytes). Estado del Arte 131 . .6. que desde un punto de vista matemático son correctos pero que a veces el usuario no llega a comprender. .Protección de la seguridad y privacidad de los datos.Inteligibilidad de los patrones.Minería de información de diversas fuentes.

destinado al mejoramiento del desempeño del sistema dentro del contexto en el cuál se opera. los hechos sin importar para qué son utilizados. Pueden ser utilizadas para analizar el conocimiento y para aplicar el razonamiento deductivo sobre dicho conocimiento. Conclusiones 132 7. y en especial de tecnologías de información. 3. nuevos hachos pueden ser agregados a la base de conocimiento en forma independiente. sinérgico. Garantiza que las conclusiones que se derivan de las premisas iniciales son correctas.7. en función de las reglas de manipulación sintáctica que hayan sido definidas. en forma sencilla. Conclusiones 1. informada e inteligente. . la principal de ellas se centra en la búsqueda de soluciones en un dominio particular donde el uso de SQL resulta insuficiente. 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. Es flexible. Representación que permite consultas con parámetros sobre relaciones no explícitas en la definición del esquema relacional. sin afectar los tipos de deducción que se pueden hacer. 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. 4. Es modular. ha abierto nuevas avenidas para el desarrollo de sistemas cuyas capacidades conjugan la funcionalidad de tecnologías individuales en un todo cohesivo. 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. ya que permite representar. La confluencia de tecnologías.

organización y síntesis de información en un cuerpo coherente. conceptos. Estos símbolos representan conocimiento acerca de objetos existentes en el mundo real. 7. . 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 relaciona¡. 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. esto es. permitiendo tratar como miembros de un subconjunto determinado grupos de registros con valores atómicos distintos. El tratamiento de la incertidumbre mediante estrategias de lógica difusa y lógica multivaluada permiten una representación global de los datos con una semántica sensiblemente mayor a las representaciones convencionales.7. 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. estrategias y heurísticas que el sistema tiene en su poder y que emplea para la resolución del problema. 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. Conclusiones 133 5. se valen de la manipulación de símbolos para la resolución de problemas. Esta funcionalidad permite incrementar 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. 6. Adicionalmente pueden ayudar a transformar información en conocimientos al proveer mecanismos automáticos para el análisis. a problemas que no pueden ser resueltos por medios algorítmicos convencionales y que requerían la ayuda de otras personas para resolución.

Enterprise Edition” Book’s on line. 1987 . Autómatas. Prentice Hall. J. 1997 KOLMAN. E. Addison-Wesley. Anaya. Gary. Ed. McGraw-Hill. Henry. 'Aflitgue Turbo Prnloq" Ed. ‘Visual Basic 5. Massachusetts. “Visual Basic 5". 1993 Microsoft. User Guide” Microsoft. México.Referencias bibliográficas Referencias bibliográficas a) Textos CODD. McGraw-Hill. 1986. 1986. Bernard. 1995. Madrid. FERNÁNDEZ. “Fundamentos de Informática: Lógica. Algoritmos y Lenguajes" Ed. Ed.F. 1997 DATE. Philip. “Fundamentos de bases de datos” Ed. W. “Aspectos básicos de la Inteligencia Artificial” Ed. Madrid. F. Gray. “Estructuras de Matemáticas discretas para la computación” Ed. “Concepción v diseña de bases de datos” Del modelo E/R al modelo relacional. Ed. 1998 MIRA. México. 1998 Microsoft. "An Introduction to Database Systems” Ed. USA.0 User Guide " Microsoft. 1998 Microsoft. ‘Visual Basic 5. KORTH. 1990. RAMA Addsison-Wesley-Iberoamericana. "Access 7. Sanz y Torres. USA. Massachussets.. PIATTINI. CORONELL. J. Addison-wesley. “Diseño y Administración de Bases de Datos” Ed. Prentice Hall. McGraw-Hill. México. 1993 ROBINSON. M. Salamanca. HANSEN. Madrid. “The Relational Model for Database Manaaement: Version 2”. 1995.

"Programación Avanzada en Turbo Prolog " Ed. Algoritmo. b) Artículos BURGOS. pp. Cheryl. 1998. M. Johns. Limusa. “El futuro de las bases de datos (I-V)" Grupo Eídos. Año 5. Año 9. 93. Prentice Hall. 56-65 KRIVDA. “Intercambio dinámico de datos con Visual Basic” Grupo Eidos. Soluciones Instantáneas” Ed. THIERAÜF. 1990. No. “lntelligent Databases” IA Expert. 1997. 1988 SHAFIELD. 1998. " Knowledge-Based Query Formulation for Integrated Information Systems” Techincal Digest.Referencias bibliográficas SHILDT. pp. Algoritmo. “Microsoft Access 97. “Dinamita para extraer datos” Byte. No. “Aplicaciones profesionales en Visual Basic” Grupo Eídos. Año 6.6 user quide" LPA Software. Año 5. 1997. Julio. México. 1997. México. Volumen 5. 38-47 . Algoritmo. Jorge. pp. 1997. 24-32 Mateos. “Objetos en Visual Basic” Grupo Eidos. “lntelligent Database Engines” Database Programming & Design. 261-270 KHOSAFIAN. Algoritmo. WONG. McGraw-Hill. TRIANA. 1995. 3. 'Winproloq 3. Harvey. Año 5. Rebeca. Algoritmo. ‘Yisuat Basic Experto” Grupo Eidos. WINTER. H. Guillermo. Herbert. "Investigación de operaciones” Ed. 1997. SOM. 1997. Año 5. 2. No. Rick. Volumen 18. HOPKINS. 1997. México. pp. PIATTINI.

ca//pub/cs/han/doodlconstr94.washington. modification of c) Uniform Resource Locator CHAN.fas. “Arquitecturas de Sistemas Expertos”.ps HAN.fas sfu.es/tesis/anto.eecs.ca/pub/cs/hanlkdd/sigmod96 tuto_des.gsi.edu/-fchan/caddis/ds_systems.dit.cal/pub/cs/han/dood/cikm94. Bruce.fi/nouc/Handouts/Olsen/stdOO8. “Data-based acquisition and incremental classification rules” Computational Intelligence. 13.html OLSEN. “Data Mining Techniques”. “Defining Data Mining” http:/lwww.berkeley.ps HAN.ps HAN. C.co.uk MOXON. Volumen ll.dbmsmag. "Analysis of Decision Support for Distributed Systems” http://www-cad. No. James N.edu/homes/lazowska/cra/database.fas. año 2. “Database Systems: A Textbook Case of Research Paying Off” http://www.lpa. ftp://ftp. “Data Mining ".sfu. J. pp. Antonio J.com/9608d53. ZOZAYA.mor.sfu.html HAN.itesm. 37-42. 1995.cs.ougf. ftp:/Iftp. J. pp. Soluciones Avanzadas. “Constraint-Based Query Evaluation in Deductive Databases” ftp://ftp. J.Referencias bibliográficas ZIARKO.41 -47. 1994. “Tutorial de Prolog" http://w3.ca/pub/cs/han/kdd/ency99.sfu. Wojciech.html GRAY.html GOMEZ. “Inducción de conocimiento en bases de datos” http://www. Francis. " What Databases ?" http://www. 2. htm .upm.ps Logic Programmíng Assocíates. "LogicBase: A Deductive Database System Prototype” ftp://ftp. “FAQ WinProlog" http://www. No.mx/-esucar/IA/prolog.fas. html Tecnológico de Monterrey. J.

html . “Tutorial de Prolog” http://proton.mx/proton/tutorial/prolog/Prolog.ca/pub/cs/han/kdd/sigmod98.udg. ftp://ftp. sfu.cultura. “lntroduction to DBMiner and Data Mining and Warehousing Concepts" ftp://ftp. ca/pub/cs/han/slides/boeingintro. ppt Universidad de Guadalajara.ucting. A.fas.fas. “Tutorial de Prolog” http://www.ps The Data Mining Research Group.mx/tutoriales/prolog/proiog. "Exploratory Mining and Pruning Optimizations of Constrained Associations Rules”.udg.htm Universidad de Guadalajara.sfu.Referencias bibliográficas PANG.

Sign up to vote on this title
UsefulNot useful