miércoles, 21 de mayo de 2014

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

En este articulo ya empezamos con la modelacion de las actividades y la forma de razonamiento. Supongamos que tenemos estos ejemplos para intentar generalizar las actividades.

Propuestas:
(1) Vamos al cine el sábado
(2) Vamos de vacaciones
(3) Vamos a pescar
(4) Vamos dar un paseo por el campus
(5) Vamos al restaurante de mariscos

Respuestas:
· Mañana me voy a Barcelona
· No tengo tiempo
· Estoy ocupado
· Tengo mucho que hacer
· Quería ver esta película desde hace mucho
· No sé pescar
· No tengo caña de pescar
· No tengo dinero
· Tengo sólo 5 euros
· Tengo alergia a mariscos.
· Mi médico me prohíbe el pescado
· Mi hermana ha venido a verme
· Hará mal tiempo
· Tengo que prepararme al examen
· Tengo que examinarme dentro de 2 días

Abrimos Protege, Creamos una nueva ontologia y la denominamos upper-dialogontology.


Tenemos que modelar los diálogos, por lo tanto tenemos que de alguna manera describir las restricciones, luego hemos creado estas clases:



Tenemos una clase RestrictedClass que dentro están definidas Action, Agent y Location; Esto se debe a las restricciones, ya que como Action y Location va a tener requisitos que Agent debe cumplir para poder aceptar la invitación. O sea:

Mauricio: ¿Vamos al cine?
Cristina: No tengo tiempo

Como sabemos el cine (un Place) tiene unos requisitos: tener dinero, tener tiempo, etc. Lo que quiere decir que para ir al cine se necesitan x horas libres, se necesita t cantidad de dinero, etc. Luego en este caso Cristina, tiene la propiedad de tiempo 0, ya que no tiene tiempo, luego no podría ir al cine. Luego la propiedad tener dinero, o hasMoney tiene que tener como dominio las clases restrictivas, estas son Action, Location o Agent. Ya que al cine se va a hacer una Acción, en este caso ver una película. 

Un razonamiento que puede ponerse activo es que, Si voy al cine necesito dinero, por lo cuál ya el lugar (Location) me da las restricciones que necesito. ¿Para que se los pongo a Action? Pues para ver una pelicula en 3D, hacen falta gafas de 3D. Luego la accion tambien requiere sus restricciones.

Tenemos la clase Object que son objetos que se debe tener para realizar una actividad en un lugar, si el agente no tiene el objeto requerido para realizar la acción, no podrá realizarla, luego si se modela que no lo tiene entonces la respuesta seria no. En este caso esta propiedad es hasObject dominio restrictedClass y Imagen o Rango (Range) Object.
 Por ejemplo:

Mauricio: ¿Vamos a jugar tenis?
Abel: No tengo raqueta de tenis

Podemos interpretar que la respuesta de Abel es rechazar la oferta porque no cumple el requisito para ir a jugar tenis que es, tener una raqueta de tenis.

Tenemos la clase Location que es los lugares donde se realizaran las actividades, estos Location tendrán una propiedad defaultAction, que dirá la acción que se realiza generalmente en ese lugar.Claro está que un lugar puede tener varios defaultAction, o sea, que las actividades comunes que se podrían realizar en un lugar sean varias.

Tenemos la clase Food para modelar Alimentos y algunas consecuencias. Como alergia.

En OWL se asume que las clases se solapan. Por lo que, no se puede asumir que una instancia no es miembro de una clase en particular porque no se lo ha especificado que pertenece a esta clase. Para separar un grupo de clases es necesario hacerlos disjuntas unas con las otras.

Para hacerlo bastaría con seleccionar la clase y seleccionar la opción Disjoint with. Y después selecciona las clases que son disjuntas. Por ejemplo: Las clases  Day, Object, Response, RestrictedClass son disjuntas dos a dos, o sea, todas contra todas, ya que un objeto nunca va ser un Dia, una respuesta o un RestrictedClass.

Luego después de especificar la disjuncion entres las clases principales, también se debería especificar entre las clases que pertenecen a un mismo subconjunto y así sucesivamente.

Por ultimo falta especificar la clase enumerativa (enumarated classes), estas clases son las que tienen un conjunto de individuos y solo ese conjunto de individuos. El caso mas clásico es la clase fin de semana (Weekend) que solo contiene a los individuos: Viernes, Sábado y Domingo.

Para especificar una clase enumerativa en Protege, se define usando el editor "Class Description View" y se escribe los individuos separados por comas y entre corchetes. Por ejemplo: {Viernes, Sábado, Domingo}. Los individuos deben ser creados primero en la ontologia. Las clases enumerativas describen en esta manera las clases anónimas. 

En principio estas son las únicas clases que harían falta, al continuar el paso vamos viendo si hacen falta nuevas o no. En el proximo articulo empezaremos definiendo las propiedades.

No hay comentarios:

Publicar un comentario