Está en la página 1de 8

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

Redes Sem anticas


Las redes sem anticas son estructuras utilizadas para la representaci on de conocimiento en Inteligencia Articial. Son especialmente utiles para representar conocimiento de taxonom as. Una red sem antica es un grafo dirigido en el cual los nodos corresponden a:

Constantes de relaci on tales como clases (como en los lenguaje orientado a objetos) y propiedades. Instancias: objetos de alguna clase.
Las aristas en una red sem antica est an tambi en etiquetadas y 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 tambi en que Piolin tiene alas. No hay un signicado preciso para una red sem antica cualquiera, este depender a de la aplicaci on y debe ser especicado por el dise nador de la red.
2

Redes Sem anticas en PROLOG


Para modelar redes sem anticas en PROLOG, necesitamos 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 a contenida en, o forma parte de la clase Clase2. En nuestro ejemplo tendremos: subclase(canario,ave). subclase(halcon,ave). tiene p(Clase1,Propiedad,Clase2) que representa una relaci on entre dos clases, indica que la clase Clase1 est a relacionada 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 peque no programa en PROLOG en el que los nodos, y los arcos (junto con sus etiquetas) son modelados como conjuntos de hechos. Los ejemplos de arboles geneal ogicos que hemos visto son una clase particular de red sem antica en donde la mayor a de los nodos son instancias que est an relacionadas por propiedades como ser hijo de.

Redes Sem anticas: Ejemplo


Consideremos una red m as rica de ejemplo 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 sem antica, uno desea ser capaz de realizar consultas relativas a la red, por ejemplo es Juan un ave? En nuestro caso la respuesta deber a ser SI. O bien, en forma m as general, querremos responder preguntas como a qu e clases pertenece Juancho?

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 relaci on subc nos entrega todos los pares de subclases 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 e propiedades tienen 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 ping uinos 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 informaci on de incompatibilidad entre puede y no puede.

Informaci on Incompatible
Para agregar informaci on de incompatibilidad, podemos inventar un nuevo predicado incompatible(Prop1,Prop2) para representar que un objeto nunca tiene simult aneamente las 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 m as general podr 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 informaci on de incompatibilidad al responder consultas, para esto redeniremos la consulta propiedad y los dem as predicados incorporando un concepto 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 a en O ser a la heredada desde C1 (la m as cercana). Resumiendo, si un objeto hereda dos propiedades incompatibles, entonces se acepta como cierta aquella que es m as espec ca, o sea, heredada desde la clase m as cercana.

Informaci on Incompatible (cont.)


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 N otese que el manejo de incompatibilidades no funciona cuando se heredan propiedades de clases a igual distancia. Qu e ocurre en nuestra implementaci on?

También podría gustarte