Upload
carlos-casamayor
View
12.374
Download
4
Embed Size (px)
DESCRIPTION
Práctica de introducción a Protégé OWL 4.2 beta para la asignatura Diseño de ontologías, en el master de gestión de la información de la UPV
Citation preview
Protégé - OWLEjemplo de las Pizzas
Basado en los tutoriales de Matthew Horridge (CO-ODE),
Holger Knublauch (Stanford Univ.) y el de la web de PROTÉGÉhttp://ontologias.blogs.upv.es
Protégé - OWLEjemplo de las Pizzas
Basado en los tutoriales de Matthew Horridge (CO-ODE),
Holger Knublauch (Stanford Univ.) y el de la web de PROTÉGÉhttp://ontologias.blogs.upv.es
La Web SemánticaOntologías compartidas ayudan al intercambio
de datos y significados entre servicios web
(Image by Jim Hendler)
3
Agentes y ontologías
Ontología: expresada en un leng. de formalización de ontologías independiente del contexto de uso
Varios agentes pueden compartir conocimiento si están de acuerdo en la semántica de una cierta ontología
Una ontología común define el vocabulario con el que los agentes intercambian mensajes (consultas y asertos)
4
Agentes y ontologías
Dos agentes comparten un vocabulario no es:
Compartir la misma base de conocimiento
Capaces de contestar cualquier pregunta formulada con ese vocabulario
Que un agente use una cierta ontología garantiza la consistencia pero no la completitud respecto a las consultas y asertos utilizando la ontología
Revisión de OWLOWL…
Web Ontology Languagees un estándar W3C
viene en 3 sabores (lite, DL y full)– usamos OWL DL (Description Logic)
DL = decidable fragmento decidible de la Lógica de Primer Orden
se encuentra generalmente en sintaxis RDF/XMLes por lo tanto laborioso escribirlo a mano
Por eso existen herramientas para ayudarnos
Revisión de OWLOWL…
Web Ontology Languagees un estándar W3C
viene en 3 sabores (lite, DL y full)– usamos OWL DL (Description Logic)
DL = decidable fragmento decidible de la Lógica de Primer Orden
se encuentra generalmente en sintaxis RDF/XMLes por lo tanto laborioso escribirlo a mano
Por eso existen herramientas para ayudarnos
OWL ConstructsPersona País
= clase (concepto)
Animal
OWL ConstructsPersona País
= clase (concepto)
Animal
= individuo (instancia)
Belgium
Paraguay
ChinaLatvia
Elvis
Hai
Holger
Kylie
S.Claus
Rudolph
Flipper
OWL ConstructsPersona País
= clase (concepto)
Animal
= individuo (instancia)
Belgium
Paraguay
ChinaLatvia
Elvis
Hai
Holger
Kylie
S.Claus
Rudolph
Flipper
= propiedad (relación)
vive_en
vive_en
vive_en
tiene_mascota
tiene_mascota
Escenario del Ejemplo del Vino
Dime qué vinos debería comprar para servir con cada
plato del siguiente menú.
Wine Agent
Grocery Agent
Books Agent
Escenario del Ejemplo del Vino
Dime qué vinos debería comprar para servir con cada
plato del siguiente menú.
Wine Agent
Grocery Agent
Books Agent
Yo recomiendo Chardonney o
DryRiesling
Escenario del Ejemplo del Vino
Dime qué vinos debería comprar para servir con cada
plato del siguiente menú.
Wine Agent
Grocery Agent
Books Agent
Yo recomiendo Chardonney o
DryRiesling
Escenario del Ejemplo del Vino
Dime qué vinos debería comprar para servir con cada
plato del siguiente menú.
Wine Agent
Grocery Agent
Books Agent
Yo recomiendo Chardonney o
DryRiesling
8
ProtégéEs gratis, open source
Está basado en Java, es extendible
Es un editor de ontologías y marco de trabajo de bases de conocimiento
Define la estructura de una ontología
Define y administra instancias
9
Integrado con GUI y plugins:
OWLWizard – Plugin para guiar paso a paso en la construcción de clases, propiedades, etc.OWLViz — Plugin para el despliegue gráfico de las jerarquías de las clases
ezOWL – Plugin para el despliegue gráfico de las jerarquías de las clases, las propiedades y restricciones de cada clase
JADEBean Generator — Plugin para producir clases Java a partir de la ontología, para que JADE puede utilizar y entender la ontología
Protégé
Instalación
Instalar Protégé 4.2 beta
Instalar Graphviz 2.28.0 (http://www.graphviz.org)
Configurar Graphviz en las opciones de OWLViz de Protégé.
Ejemplo:Ontología de Pizzas
Ejemplo:Ontología de Pizzas
Ejemplo:Ontología de Pizzas
Ejercicio 1: Crear una nueva ontología
Iniciar Protégé
Ontology IRIURI (Uniform Resource Identifiers): estándar para identificar recursos (documentos, personas, cosas abstractas) y nombres de relaciones.
IRI (Internationalized Resource Identifiers):
URIs + caracteres alfabéticos no-latinos (Unicode en lugar de ASCII).
Menú “File / Save as...” permite guardar en la ontología que se va creando, usando diversos formatos (OWL/XML).
Ejercicio 2: Añadir una anotación
Vista de las clases
Ejercicio 3: Crear clases
Pulsar botón Classes.
Pulsar botón Add: crea una nueva subclase de la clase seleccionada (en este caso :Thing)
Crear, repitiendo este proceso, las clases: Pizza, PizzaTopping y PizzaBase.
Clases Disjuntas
OWL asume que las clases solapanPizza PizzaTopping
= individual
Un individuo podría ser a la vez una Pizza y un PizzaTopping a la vez
Éste no es el caso
Ejercicio 4: Clases disjuntas
1. Seleccionar la clase Pizza in la jerarquía de clases.
2. Hacer disjuntas las tres clases usando el botón Clases Disjuntas en la vista de descripción de clases.
Ejercicio 5: ‘Create Class Hierarchy’
Crear FinaYCrujiente y PanGrueso como subclases de PizzaBase
Usar la opción del menú Tools / Create Class Hierarchy
Make all primitive siblings disjoint
Ejercicio 6: ‘Create Class Hierarchy’
Crear como subclases de PizzaTopping
Añadir Topping como sufijo de todas las subclases: Suffix all in list with
Árbol indentado por tabs para entrar una jerarq. de clases.
Make all new classess disjoint
Ejercicio 6: ‘Create Class Hierarchy’
Make all primitive siblings disjoint
Crear como subclases de PizzaTopping
Añadir Topping como sufijo de todas las subclases: Suffix all in list with
Árbol indentado por tabs para entrar una jerarq. de clases.
¿Qué tenemos?
Árbol de clases disjuntas
Esta separación se hereda hacia abajo en el árbol. Ej.: algo que es un TomateTopping no puede ser una Pizza porque su superclase, PizzaTopping, es disjunta de Pizza.
¿Qué echamos de menos?
No es un modelo enriquecido semánticamente.
Aparte de es un tipo de y no es un tipo de, no hay otra información de interés.
Queremos decir más cosas sobre los individuos Pizza, tal como su relación con otros individuos.
Esto se puede hacer con propiedades.
Pizza PizzaTopping
= individual
Propiedades de OWL
Object properties: enlazan individuos.
Datatype properties
Annotation properties
Ejercicio 7: Crear propiedad del Objeto
Pulsar el botón Object Properties.
Pulsar el botón Add Object Property, para añadir la propiedad tieneIngrediente
Ejercicio 7: Crear propiedad del Objeto
Pulsar el botón Object Properties.
Pulsar el botón Add Object Property, para añadir la propiedad tieneIngrediente
Pulsar el botón Domains (intersection) para indicar que el dominio de esta propiedad es Pizza.
Ejercicio 8: Crear sub-propiedades
Crear tieneTopping y tieneBase como sub-props. de tieneIngrediente
Seleccionar la propiedad tieneIngrediente en la jerarquía de propiedades.
Pulsar el botón Add subproperty.
Ejercicio 9: Crear propiedades inversasCrear props. inversas:
esIngredienteDe inversa de tieneIngrediente
esBaseDe inversa de tieneBase
esToppingDe inversa de tieneTopping
Usar el icono Add de Inverse Properties en la vista Properties Description.
Tipos de Propiedades de OWL
Un individuo con una propiedad funcional tendrá como mucho un individuo relacionado con él por dicha propiedad
OWL-DL no permite que las propiedades de tipo de datos sean transitivas, simétricas o tengan inversas. OWL-DL: Propiedades de tipos de datos sólo son Allows for multiple values y Inverse Functional.
Ejercicio 10: Hacer funcional la propiedad tieneBase
1. Seleccionar la propiedad tieneBase en la jerarquía de propiedades en Object Properties.
2. Marcar el tick Functional en el Property Characteristics View.
Tipos de Propiedades de OWL
Un individuo con una propiedad inversa funcional indica que la propiedad inversa es funcional
OWL-DL no permite que las propiedades de tipo de datos sean transitivas, simétricas o tengan inversas. OWL-DL: Propiedades de tipos de datos sólo son Allows for multiple values y Inverse Functional.
Tipos de Propiedades de OWL
OWL-DL no permite que las propiedades de tipo de datos sean transitivas, simétricas o tengan inversas. OWL-DL: Propiedades de tipos de datos sólo son Allows for multiple values y Inverse Functional.
Una propiedad transitiva que relaciona un individuo a con b, y esa misma propiedad relaciona b con c, se infiere que a y c están relacionados por dicha propiedad
Ejercicio 10: Hacer transitiva la propiedad
tieneIngrediente1. Seleccionar la propiedad tieneIngrediente
en la jerarquía de propiedades en Object Properties.
2. Marcar el tick Transitive en el Property Characteristics View.
3. Seleccionar la propiedad esIngredienteDe, inversa de tieneIngrediente, marcarla como transitiva.
Tipos de Propiedades de OWL
Una propiedad simétrica relaciona un individuo a con b, entonces b está relacionado con a por dicha propiedad
OWL-DL no permite que las propiedades de tipo de datos sean transitivas, simétricas o tengan inversas. OWL-DL: Propiedades de tipos de datos sólo son Allows for multiple values y Inverse Functional.
Tipos de Propiedades de OWL
Una propiedad asimétrica relaciona un individuo a con b, entonces b no puede estar relacionado con a por dicha propiedad
OWL-DL no permite que las propiedades de tipo de datos sean transitivas, simétricas o tengan inversas. OWL-DL: Propiedades de tipos de datos sólo son Allows for multiple values y Inverse Functional.
Tipos de Propiedades de OWL
Una propiedad reflexiva relaciona un individuo consigo mismo
OWL-DL no permite que las propiedades de tipo de datos sean transitivas, simétricas o tengan inversas. OWL-DL: Propiedades de tipos de datos sólo son Allows for multiple values y Inverse Functional.
Tipos de Propiedades de OWL
Una propiedad irreflexiva relaciona un individuo con otro individuo que no puede ser él mismo
OWL-DL no permite que las propiedades de tipo de datos sean transitivas, simétricas o tengan inversas. OWL-DL: Propiedades de tipos de datos sólo son Allows for multiple values y Inverse Functional.
Dominios y Rangos de Propiedades
Propiedades enlazan individuos del Dominio con individuos del Rango.
Ejercicio 11: Especificar Dominio y Rango de las propiedad tieneTopping
1. Seleccionar la propiedad tieneTopping en la jerarquía de propiedades en Object Properties.
2. Usar Add al lado de Domains (intersection) para añadir Pizza.
3. Usar Add al lado de Ranges (intersection) para añadir PizzaTopping.
4. Añadir a esToppingDe como Dominio PizzaTopping y como Rango Pizza
Ejercicio 11: Especificar Dominio y Rango de las
propiedad tieneBase1. Seleccionar la propiedad tieneBase en
la jerarquía de propiedades en Object Properties.
2. Usar Add al lado de Domains (intersection) para añadir Pizza.
3. Usar Add al lado de Ranges (intersection) para añadir PizzaBase.
4. Añadir a esBaseDe como Dominio PizzaBase y como Rango Pizza
Restricciones
Restricciones de cuantificación
Restricciones de cardinalidad
Restricciones tieneValor
Se ven y se editan usando la vista de descripción de Clases.
RestriccionesCrear restricción
Restricciones de Cuantificación
Restricciones Existenciales
Restricciones Universales
Restricciones de CuantificaciónRestricciones Existenciales
describen clases de individuos que participan en al menos una relación en una propiedad específica para miembros de una clase determinada.
Restricciones Universalesdescriben clases de individuos que para una determinada propiedad sólo tienen relaciones con miembros de una clase particular.
Ejercicio 12: Añadir restricción a la clase Pizza
1. Seleccionar la clase Pizza en la jerarquía de clases.
2. Pulsar Add de SubClass Of de la vista de descripción de clases.
3. Pulsar el botón Class expression editor.
4. Introducir la restricción (usar TAB para autocompletar): Una Pizza DEBE tener una PizzaBase
4.1. Propiedad
4.2.Tipo de restricción (some - existenc.; only - univ.).
4.3.Filtro para la restricción.
tieneBase
somePizzaBase
Condición NECESARIASIGNIFICADO: Restricciones especifican superclases anónimas de la clase descrita.
Ejercicio 13: Crear nuevos tipos de Pizza
1. Crear una subclase de Pizza llamada PizzaConNombre.
2. Crear una subclase de PizzaConNombre llamada PizzaMargarita.
3. Añadir un comentario a la clase PizzaMargarita usando la vista Annotations: “Una pizza que sólo tiene Mozzarella y Tomate”.
Ejercicio 14: Crear restricción
Restricción existencial (some): Una PizzaMargarita tiene al menos un MozzarellaTopping.
Ejercicio 15: Crear restricción
Restricción existencial (some): Una PizzaMargarita tiene al menos un TomateTopping.
Ejercicio 16: Crear clase PizzaAmericana
1. Crear un duplicado de la PizzaMargarita que será la PizzaAmericana.
2. Añadir a la PizzaAmericana la restricción existencial de que tiene al menos un topping de pepperoni.
Ejercicio 16: Crear clase PizzaAmericana y PizzaSoho
1. Crear un duplicado de la PizzaAmericana que será la PizzaAmericanaPicante.
2. Añadir a la PizzaAmericanaPicante la restricción existencial de que tiene al menos un topping de pimiento jalapeño.
3. Crear un duplicado de la PizzaMargarita que será la PizzaSoho.
4. Añadir a la PizzaSoho las restricciones existenciales de que tiene al menos un topping de oliva y uno de parmesano.
5. Usar la opción de menú Edit / Make primitive siblings disjoint, para hacer disjuntos todos los nuevos tipos de pizza.