miércoles, 21 de mayo de 2014

Una guia practica de como fui realizando mi tesis usando Protege y Ontologias parte 1

Introducción

En este articulo intentaré no ir profundizar mucho sobre mi tema de tesis en sí, sino de ver como se implementan las cosas en protege, y porque he tomado esa decisión.

El tema de mi tesis es modelar propuestas de actividades y respuesta de la misma, desde un punto vista de oraciones muy simples (lo cuál puede ser ambiguo lo que se define como simple). Pero el objetivo, es modelar una conversación entre dos personas, el cual la primera persona invita a la segunda persona y la segunda persona responde a esta propuesta. Debo desarrollar una base de conocimiento con sentido común, ya que las respuestas, no deben estar explícitamente si se ha aceptado o no la propuesta. Supongamos la siguiente propuesta:

Mauricio: ¿Vamos al cine el Sábado?
Estela: ¿Mañana me voy a Barcelona?

En esta pequeña conversación, podemos deducir que Estela rechazo la invitación, lo que no esta explícitamente, que Estela no puede ir al cine. Luego el sentido común en este caso es que, si Estela va hacia otro lugar, diferente al sitio que esta ahora, entonces no podrá ir al cine, ya que Barcelona queda muy lejos de Madrid.

Luego la forma de asumir el razonamiento en este caso es el siguiente:

Estela esta en una localización "Madrid", que se asume que sea la misma que Mauricio (lo cuál no tiene porque ser cierto, pero como sabemos tan poco de esa conversación, tenemos que asumir valores), o al menos Mauricio está cerca para que la invitación sea aceptable. El cine también, se supone, por sentido común que esta relativamente cerca de donde esta Estela y de donde esta Mauricio. Ademas, se asume que en el cine se va ir a ver una película, porque nuestro sentido común nos dice que al cine, se va a ver una película. Ademas, asumimos que Estela y Mauricio deben tener una cantidad "D" de dinero para entrar al cine, y deben tener un tiempo "T" para ir al cine. Ademas, como yo estoy en Madrid, asumo que Estela no va poder ir, ya que ella va a Barcelona que esta categorizada como lejos (lejos lo podemos definir como el tiempo de dezplasamiento de un lado a otro, y trabajar con esa definicion) de Madrid, lo que implica que no va ir. Todo este razonamiento, lo tenemos en nuestro cerebro, tenemos un sentido común, y este nos da respuesta de que Estela rechazo la oferta.

Como podemos observar las respuestas de Estela pueden ser:

-No tengo dinero
-No tengo tiempo
-Estoy ocupada
-Tengo mucho que hacer
-No puedo gastar dinero, estoy ahorrando
-Me encanta el cine
-Hace tiempo quiero ir al cine
-Voy a llevar mis gafas 3D.

Estas respuestas se compararían con la modelacion de ¿Estela tiene tiempo mayor o igual del que necesita ir al cine?¿Estela tiene más dinero del que se necesita para ir al cine? etc, etc.

También podemos ver que la respuesta puede o no tener sentido, asumiremos que la respuesta no tiene sentido cuando no encontramos un camino que indique que no se puede o que se pueda realizar la operación.

Por ejemplo: Si Estela responde, "Me da asco los mariscos", esta respuesta no significaría nada, ya que el cine no tiene una relación directa con el marisco. Por lo menos que nosotros sepamos, porque si nosotros modelamos que la película es sobre mariscos, probablemente haga mas sentido. Por lo cual, cuando un suceso no esta modelado en nuestra ontologia, pues diremos que no tiene sentido, ya que nuestro base de conocimiento no lo contempla y por lo tanto no puede responder la pregunta. Sin embargo en el sistema que realizaré sobre esta ontologia, cuando no se sepa como hacer la relación, el sistema sea capaz de preguntar al usuario sobre preguntas claves para que pueda responder a la pregunta. También dando la opción de rechazar totalmente nueva información sobre la actividad. Y decir que no tiene sentido.

Agregaremos unas clases iniciales con una jerarquía, para ir hablando de otras cosas, poco a poco modificaremos estas clases y la jerarquía, según vayamos analisandolo. Las primeras clases son:

Clases

Agente (Persona, Grupo, Institución, etc.): Que puede realizar una invitación.
Action (ver película, pescar, caminar, etc): Actividad que se pretende realizar
Place (Cine, Campus, Hospital, Lake, etc): Lugar donde se realizará la actividad

... Algunas clases las iremos agregando así vaya pasando el tiempo y aumentando las casos, por ahora parece lo que hace falta

Propiedades o métodos

hasTime: el tiempo que requiere la institución para que puedas realizar la actividad, ir al cine requiere de 3h, tambien modelará el tiempo que tiene el agente Estela tiene 5h libres.
hasMoney: Dinero que le hace falta a la institución (al cine hace falta que se lleve 5 euros), dinero que tiene el agente.
isNear (opposite function isFar)
defaultAction : Lo que se supone que se haga en un lugar (En cine es pescar, en un Campus caminar, relajar, etc)
doingAction : Lo que se va realizar en el lugar, porque puede ser que vamos al cine a hablar con alguien, en vez de ir a ver una película.

Modo de razonamiento:

Si agente.hasMoney >= place.hasMoney and agente.hasTime >= place.hasTime and agente.place isNear Barcelona and ...

Si se cumplen todas las restricciones es porque la respuesta será sí, si una sola no se cumple sera no. Si hay alguna propiedad que no se puede encontrar en Agente y que tiene Place como requerimiento, entonces la respuesta es "según el sentido común", se le dará un valor a Estela con esa propiedad o sencillamente sin sentido la respuesta. Ahora si Place no tiene la propiedad de Estela, no importa, ya que no es un requerimiento para ir al lugar. Ademas falta modelar, si dos propiedades implican otra tercera.
Por ejemplo: "Vuelvo temprano de Barcelona", esta frase indica que estará cerca desde temprano, y que estará antes cerca antes de la actividad del cine empiece y por lo tanto podrá ir. Volver temprano-> estar cerca antes que la actividad comience. Ya que volver tarde -> estar cerca pero después de la actividad.

De manera general es como se irán resolviendo las cuestiones, ahora iré modelando estas clases explicándola desde Protege y viendo que cuestiones tenemos que preguntarnos en cada paso. Ademas de después especificar esta manera de razonar desde SPARQL o desde Reglas o desde la propia especificación que hace que el razonador se de cuenta por si solo.

No hay comentarios:

Publicar un comentario