You are on page 1of 8

REDES SEMANTICAS Inteligencia Articial Universidad de Talca, II Semestre 2005 Jorge Prez R.

Redes Semnticas a
Las redes semnticas son estructuras utilizadas para la rea presentacin de conocimiento en Inteligencia Articial. o Son especialmente tiles para representar conocimiento de u taxonom as. Una red semntica es un grafo dirigido en el cual los nodos a corresponden a:

Constantes de relacin tales como clases (como en los o lenguaje orientado a objetos) y propiedades. Instancias: objetos de alguna clase.
Las aristas en una red semntica estn tambin etiquetadas y a a e representan relaciones entre clases, propiedades e instancias. Un ejemplo:
Alas
tiene tiene

Plumas Ave Deseos

Semillas
come

subclase subclase tiene

Canario
es un

Halcon
es un

Piolin

Pedro

Tenemos dos objetos, Piolin y Pedro. Intuitivamente podemos inferir que Piolin es un ave dado que canario es una subclase de ave y Piloin es un canario, podemos inferir tambin que Piolin tiene alas. e No hay un signicado preciso para una red semntica cuala quiera, este depender de la aplicacin y debe ser especicaa o do por el diseador de la red. n
2

Redes Semnticas en PROLOG a


Para modelar redes semnticas en PROLOG, necesitamos a codicar el grafo que la representa. En nuestro ejemplo podemos utilizar los predicados:

instancia(Objeto,Clase) utilizado para decir que el objeto Objeto pertenece a la clase Clase. En nuestro ejemplo tendremos los hechos instancia(piolin,canario). instancia(pedro,halcon). subclase(Clase1,Clase2) para indicar que la clase Clase1 est contenida en, o forma parte de la clase Clase2. En a nuestro ejemplo tendremos: subclase(canario,ave). subclase(halcon,ave). tiene p(Clase1,Propiedad,Clase2) que representa una relacin entre dos clases, indica que la clase Clase1 est relacioo a nada con la clase Clase2 mediante la propiedad Propiedad. En nuestro ejemplo: tiene_p(canario,come,semillas). tiene_p(ave,tiene,alas). tiene_p(ave,tiene,plumas). tiene_p(halcon,tiene,deseos).
Como se ve en este ejemplo, un grafo cualquiera puede ser codicado con un pequeo programa en PROLOG en el que n los nodos, y los arcos (junto con sus etiquetas) son modelados como conjuntos de hechos. Los ejemplos de rboles genealgicos que hemos visto son a o una clase particular de red semntica en donde la mayor de a a los nodos son instancias que estn relacionadas por propiea dades como ser hijo de.

Redes Semnticas: Ejemplo a


Consideremos una red ms rica de ejemplo a instancia(piolin,canario). instancia(pedro,halcon). instancia(juan,halcon). instancia(juancho,cocodrilo). instancia(marcela,pinguino). subclase(ave,oviparo). subclase(reptil,oviparo). subclase(canario,ave). subclase(halcon,ave). subclase(ave,animal). subclase(reptil,animal). subclase(cocodrilo,reptil). subclase(pinguino,ave). tiene_p(canario,come,semillas). tiene_p(ave,tiene,alas). tiene_p(ave,tiene,plumas). tiene_p(halcon,tiene,deseos). tiene_p(ave,puede,volar). tiene_p(reptil,tiene,escamas). Dada una red semntica, uno desea ser capaz de realizar a consultas relativas a la red, por ejemplo es Juan un ave? En nuestro caso la respuesta deber ser SI. a O bien, en forma ms general, querremos responder preguna tas como a qu clases pertenece Juancho? e

Respondiendo Consultas
La siguiente regla nos permite consultar por las clases a las que pertenece un objeto: es(Clase,Obj):- instancia(Obj,Clase). es(Clase,Obj):- instancia(Obj,Clasep), subc(Clasep,Clase). subc(C1,C2):- subclase(C1,C2). subc(C1,C2):- subclase(C1,C3), subc(C3,C2). El predicado es(Clase,X) se satisface cuando X pertenece a la clase Clase. Para responder esta pregunta estamos suponiendo que un objeto es una instancia de una clase C si es una instancia de C o de cualquier subclase de C. La relacin subc nos entrega todos los pares de subclases o generadas por transitividad (si C1 es subclase de C2 y C2 es subclase de C3, entonces C1 es subclase de C3 ). Con las reglas anteriores y la red del ejemplo, obtenemos: ?- es(reptil, juancho). Yes ?- es(X,juan). X = halcon ; X = ave ; X = oviparo ; X = animal ; No ?- es(canario, marcela). No ?- es(animal,X). X = piolin ; X = pedro ; X = juan ; X = juancho ; X = marcela; No

Respondiendo Consultas (cont.)


Suponga ahora que queremos preguntar qu propiedades tiee nen objetos cualesquiera, la siguiente regla cumple este objetivo: propiedad(Obj,Prop):- es(Clase,Obj), tiene_p(Clase,Fun,Arg), Prop =.. [Fun,Arg]. As obtenemos: ?- propiedad(piolin,X). X = come(semillas) ; X = tiene(alas) ; X = tiene(plumas) ; X = puede(volar) ; No Ahora, supongamos que queremos establecer que los pinginos u no pueden volar y para esto agregamos entonces: tiene_p(pinguino,no_puede,volar). Con lo cual observamos: ?- propiedad(marcela,X). X = no_puede(volar) ; X = tiene(alas) ; X = tiene(plumas) ; X = puede(volar) ; No Obtenemos que Marcela puede y no puede volar. Esto ocurre pues no hemos incorporado informacin de incompatibilidad o entre puede y no puede.

Informacin Incompatible o
Para agregar informacin de incompatibilidad, podemos ino ventar un nuevo predicado incompatible(Prop1,Prop2) para representar que un objeto nunca tiene simultneamente las a porpiedades Prop1 y Prop2. En el ejemplo podemos escribir: incompatible(puede(X),no_puede(X)). De modo que ahora puede volar y no puede volar son propiedades incompatibles. De manera ms general podr a amos incluir incompatibilidad de propiedades si una es igual a la otra pero comienza con no incompatible(X,Y) :X =.. [Pred,Arg], Y =.. [No_Pred,Arg], name(No_Pred,[110,111,95|L]), name(Pred,L). Ahora debemos manejar esta informacin de incompatibilidad o al responder consultas, para esto redeniremos la consulta propiedad y los dems predicados incorporando un concepto a de distancia en la herencia. Por ejemplo si un objeto O pertenece a una clase C1 que es subclase de C2 y hereda propiedades incompatibles desde ellas, la propiedad que permaencer en O ser la heredada a a desde C1 (la ms cercana). a Resumiendo, si un objeto hereda dos propiedades incompatibles, entonces se acepta como cierta aquella que es ms a espec ca, o sea, heredada desde la clase ms cercana. a

Informacin Incompatible (cont.) o


Los predicados agregados y modicados resultan entonces: es(Clase,Obj,0):- instancia(Obj,Clase). es(Clase,Obj,Dist):- instancia(Obj,Clasep), subcn(Clasep,Clase,Dist). subcn(C1,C2,1):- subclase(C1,C2). subcn(C1,C2,N):- subclase(C1,C3), subcn(C3,C2,M), N is M+1. propiedad(Obj,Prop,Dist):es(Clase,Obj,Dist), tiene_p(Clase,Fun,Arg), Prop =.. [Fun,Arg]. propiedad(Obj,Prop):- propiedad(Obj,Prop,Dist), \+ incomp(Obj,Prop,Dist). incomp(Obj,Prop,Dist):- propiedad(Obj,Prop2,Dist2), (incompatible(Prop,Prop2); incompatible(Prop2,Prop)), Dist2 =< Dist. As en el caso de Marcela, observaremos: , ?- propiedad(marcela,X). X = no_puede(volar) ; X = tiene(alas) ; X = tiene(plumas) ; No Ntese que el manejo de incompatibilidades no funciona cuano do se heredan propiedades de clases a igual distancia. Qu ocue rre en nuestra implementacin? o

You might also like