Professional Documents
Culture Documents
Para entender las diferencias entre una base de datos y una base de conocimiento, creemos que es muy
importante aclarar los conceptos de "conocimiento", "información" y "datos". Estos tres conceptos son
básicos para el desarrollo de un sistema o base de información1. Íntimamente unidos a éstos, están los de
"representación" vs. "proceso".
Como Bubenko & Orci (1989:364) señalan, a pesar de la existencia de innumerables estudios, conferencias
e incluso departamentos enteros dedicados al estudio de sistemas basados en el conocimiento, la distinción
entre conocimiento, información y datos está lejos de ser clara. Estos conceptos, básicos para las ciencias de
la información, son entendidos de formas diferentes por investigadores diferentes, dependiendo de su
entorno, sus necesidades y sus problemas. En general podemos distinguir los siguientes puntos de vista:
El conocimiento desde el punto de vista epistemológico: la definición clásica de "conocimiento" la
encontramos en (Crisholm 1977:43), y es la siguiente:
C knows k iff (1) k is true, (2) C accepts k, and (3) k is evident for C
Algunas de estas condiciones, (verdad, aceptación y evidencia) han sido cuestionadas ampliamente, pero
permiten un punto de partida válido para discutir el conocimiento artificial. La discusión gira en torno a lo
siguiente: para que k pueda ser aceptada por y/o evidente para C, tiene que cumplirse el que tenga algún
significado para C, lo cual implica que tenemos que definir mecanismos para interpretar su significado. Por
ello, si bien los parámetros estipulados son válidos, tal vez no sean suficientes.
El conocimiento desde
el punto de vista de las bases de datos: la posición generalmente compartida por el entorno de las bases de
datos es que un elemento de conocimiento tiene que ver con un Universo de Discurso (UoD: Universe of
Discourse), que puede ser real, mental, social, o de cualquier otro tipo. Los datos, pues, son considerados
como aseveraciones sobre un determinado estado de cosas en un determinado UoD. A estas aseveraciones se
las denomina hechos. "Juan ama a María" es un hecho perceptible u observable dentro de un determinado
UoD y puede ser representado por una estructura de datos. Para alcanzar el dominio del conocimiento es
necesario subir a un nivel de abstracción superior, en el que podemos hablar de las propiedades de los
hechos y de las relaciones entre hechos individuales y entre hechos y el UoD, así como de las alteraciones de
los hechos y las repercusiones de estas alteraciones sobre el UoD. Por ejemplo, aseveraciones como "todos
los hombres casados tienen una esposa y sólo una", o "para cada humano x, y, z, se cumple que, si x es el
padre de y, y y es el padre de z, entonces x es el abuelo de z". Este tipo de conocimiento, llamado por algunos
investigadores metadatos, pues de hecho son datos que "hablan" sobre datos, no es, típicamente, el dominio
de las bases de datos. Esta visión se puede resumir de la siguiente manera:
El conocimiento desde el punto de vista de la IA: "Conocimiento" en el ámbito de la Inteligencia Artificial
significa:
Esta visión se corresponde con lo que encontramos más a menudo en las bases de conocimiento: una
colección de hechos y reglas mediante los cuales el sistema es capaz de extraer conocimiento que no está
almacenado de forma explícita. Por tanto, para la IA, una estructura de datos que no contenga más que
"hechos" no es considerada como conocimiento, sino tan sólo como una fuente potencial de información. La
IA, por tanto, pone el énfasis en el comportamiento computacional, es decir el uso de los datos por parte de
los procedimientos.
Podríamos estipular que, en general, el conocimiento identifica información sobre conceptos generales,
mientras que los datos conforman información sobre entidades específicas. En este sentido, los datos reflejan
el estado de cosas de un determinado UoD en un momento determinado, y por tanto son altamente
susceptibles de modificaciones. En cambio, el conocimiento sobre cómo interpretar y usar esos datos no
cambiará tan a menudo. Además, aunque el conocimiento sea complejo, su dominio es el de las
generalizaciones sobre tipos, y no el de las instancias específicas, que es el dominio de los datos.
Una interpretación en términos cognitivos de este extremo es que una KB contiene información representada
de una forma más parecida a cómo los humanos la almacenamos (Walker et al. 1987). El término
"conocimiento", hace referencia específica a las reglas en las que la información ha de ser usada, así como a
diversos procesos cognitivos en relación con la actualización de la información contenida en un sistema. Si un
sistema contiene información representada a modo de generalizaciones sobre datos y es capaz de usar esta
información de forma inteligente, actualizarla según necesidades y proveer información acerca de la
información que contiene (ser "consciente" de sus limitaciones), entonces es un sistema de conocimiento. Si,
por el contrario, un sistema contiene una gran cantidad de datos específicos sobre un determinado universo y
provee los mecanismos necesarios para recuperar y modificar esa información, ya sea por un programa o por
un usuario humano2, entonces es un sistema de base de datos.
Centrándonos en el eje representación/proceso, una DB es fundamentalmente un repositorio de información
pasivo: las operaciones sobre sus datos son realizadas por aplicaciones externas que han de ser invocadas de
forma explícita. Por el contrario, una KB es un sistema activo de forma inherente (Albano & Attardi 1989).
Las acciones que una KB lleva a cabo van desde la invocación de procedimientos cuando se accede a un
determinado slot o casilla (en el caso de un esquema de representación basado en marcos), pasando por
procesos deductivos o propagación de restricciones (en el caso de esquemas de redes semánticas
genéricas).3
A esto se le denomina activación de procesos, disparo o triggering. Este mecanismo puede incluso acceder y
modificar los hechos y reglas contenidos en su propio repositorio de datos.
A modo de ilustración, supongamos que tenemos un sistema de información capaz de procesar el input en
varios idiomas sin necesidad de indicarle de qué idioma se trata. Independientemente de qué método se
utilice para averiguar el idioma (estadísticos, probablemente)4, una vez determinado éste, se
desencadenarían una serie de procesos particulares para procesar ese idioma concreto, que invocarían los
parsers morfológicos y sintácticos adecuados.
Otro tipo de triggering usado en muchas aplicaciones que son calificadas de "inteligentes"5 no invoca
procedimientos sino que accede a datos que son transferidos a un buffer y los mantiene ahí mientras exista la
posibilidad de ser solicitados por el agente externo. Por ejemplo, en un sistema de información turística, si un
usuario consulta la localización de un determinado organismo oficial, es muy probable que a continuación
desee profundizar en los servicios que éste ofrece. Una aplicación "inteligente" sería capaz de adelantarse a
esta consulta y recuperar esta información mientras el usuario consulta la localización, ganando
enormemente en velocidad de acceso. La propagación de restricciones mediante mecanismos de triggering
realiza el mismo tipo de acciones sólo que llevando a cabo un proceso deductivo mucho más complejo.
Los Datos a diferencia de la información son utilizados como diversos métodos para comprimir la
información a fin de permitir una transmisión o almacenamiento más eficaces.
Aunque para el procesador de la computadora hace una distinción vital entre la información entre los
programas y los datos, la memoria y muchas otras partes de la computadora no lo hace. Ambos son
registradas temporalmente según la instrucción que se le de. Es como un pedazo de papel no sabe ni le
importa lo que se le escriba: un poema de amor, las cuentas del banco o instrucciones para un amigo. Es lo
mismo que la memoria de la computadora. Sólo el procesador reconoce la diferencia entre datos e
información de cualquier programa. Para la memoria de la computadora, y también para los dispositivos de
entrada y salida (E/S) y almacenamiento en disco, un programa es solamente más datos, más información
que debe ser almacenada, movida o manipulada.
La cantidad de información de un mensaje puede ser entendida como el número de símbolos posibles que
representan el mensaje."los símbolos que representan el mensaje no son más que datos significativos.
En su concepto más elemental, la información es un mensaje con un contenido determinado emitido por una
persona hacia otra y, como tal, representa un papel primordial en el proceso de la comunicación, a la vez que
posee una evidente función social. A diferencia de los datos, la información tiene significado para quien la
recibe, por eso, los seres humanos siempre han tenido la necesidad de cambiar entre sí información que
luego transforman en acciones. "La información es, entonces, conocimientos basados en los datos a los
cuales, mediante un procesamiento, se les ha dado significado, propósito y utilidad"
Existen muchas clasificaciones para los tipos de datos, y dependiendo de la fuente que mires, te mostrarán una u
otra. A continuacón tienes una de las posibles clasificaciones.:
• Dinámicos
• Estáticos
o El tipo cadena
o Estructurados
o Simples
Ordinales
No-ordinales
Tipos estáticos
Casi todos los tipos de datos son estáticos, la excepción son los punteros y no se tratarán debido a su
complejidad.
Que un tipo de datos sea estático quiere decir que el tamaño que ocupa en memoria no puede variar durante la
ejecución del programa. Es decir, una vez declarada una variable de un tipo determinado, a ésta se le asigna un
trozo de memoria fijo, y este trozo no se podrá aumentar ni disminuír.
Tipos dinámicos
Dentro de esta categoría entra sólamente el tipo puntero. Este tipo te permite tener un mayor control sobre la
gestión de memoria en tus programas. Con ellos puedes manejar el tamaño de tus variables en tiempo de
ejecución, o sea, cuando el programa se está ejecutando.
Los punteros quizás sean el concepto más complejo a la hora de aprender un lenguaje de programación, sobre
todo si es el primero que aprendes. Debido a esto, no lo trataremos. Además, lenguajes que están muy de moda
(por ejemplo Java) no permiten al programador trabajar con punteros.
Tipos simples
Como su nombre indica son los tipos básicos en Pascal. Son los más sencillos y los más fáciles de aprender. Por
todo esto, serán en los que nos centremos.
Los tipos simples más básicos son: entero, lógico, carácter y real. Y la mayoría de los lenguajes de programación
los soportan, no como ocurre con los estructurados que pueden variar de un lenguaje a otro.
Tipos estructurados
Mientras que una variable de un tipo simple sólo referencia a un elemento, los estructurados se refieren a
colecciones de elementos.
Las colecciones de elementos que aparecen al hablar de tipos estructurados son muy variadas: tenemos
colecciones ordenadas que se representan mediante el tipo array, colecciones sin orden mediante el tipo
conjunto, e incluso colecciones que contienen otros tipos, son los llamados registros.
Tipos ordinales
Dentro de los tipos simples, los ordinales son los más abundantes. De un tipo se dice que es ordinal porque el
conjunto de valores que representa se puede contar, es decir, podemos establecer una relación uno a uno entre
sus elementos y el conjunto de los números naturales.
Tipos no-ordinales
Simplificando, podríamos reducir los tipos simples no-ordinales al tipo real. Este tipo nos sirve para declarar
variables que pueden tomar valores dentro del conjunto de los números reales.
A diferencia de los tipos ordinales, los no-ordinales no se pueden contar. No se puede establecer una relación uno
a uno entre ellos y los número naturales. Dicho de otra forma, para que un conjunto se considere ordinal se tiene
que poder calcular la posición, el anterior elemento y el siguiente de un elemento cualquiera del conjunto.¿Cuál
es el sucesor de 5.12? Será 5.13, o 5.120, o 5.121, ...
nota: a continuación sólo se comentará qué es cada tipo, no se explicará su declaración, esto puedes verlo si vas
a la sección correspondiente.
Este tipo de variables, puedes utilizarlas en asignaciones, comparaciones, expresiones aritméticas, etc. Algunos
de los papeles más comunes que desarrollan son:
• Controlar un bucle
• Usarlas como contador, incrementando su valor cuando sucede algo
• Realizar operaciones enteras, es decir, sin parte decimal
• Y muchas más...
A continuación tienes un ejemplo en el que aparecen dos variables enteras. Como puedes ver, en el ejemplo se
muestran las dos maneras de declarar una variable de tipo entero:
• si/no
• cierto/falso
• funciona/no funciona
• on/off
• etc.
El tipo de datos real es el que se corresponde con los números reales. Este es un tipo importante para los
cálculos. Por ejemplo en los estadísticos, ya que se caracterizan por tratar fundamentalmente con valores
decimales.
nota: Aunque pueda que estés acostumbrado a escribir con coma los decimales, te advierto que en Pascal y en
todos los lenguajes de programación se escribe con un punto. Por ejemplo: 3.1416
Sin embargo, con las cadenas de caracteres (strings) puedes contener en una sóla variable más de un carácter.
Por ejemplo, puedes tener en una variable tu nombre.