UNIVERSIDAD REY JUAN CARLOS CURSO 2014-2015 Hoja de Problemas Tema 8 Ontologías y Web Semántica Ejercicio 1: Representar utilizando RDF Schema el siguiente conocimiento: La capital de España es Madrid. Puede utilizar un grafo o la notación Turtle. Defina las clases y propiedades que considere oportunas. Todas las URIs creadas tendrán como base http://prueba2.curso2012/. Si lo desea puede utilizar los siguientes prefijos y/o definir otros si es necesario. @prefix p2: <http://prueba2.curso2012/> @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> SOLUCIÓN Turtle: p2:Pais rdf:type rdfs:Class . p2:Ciudad rdf:type rdfs:Class . p2:capital rdf:type rdf:Property . p2:capital rdfs:domain p2:Pais . p2:capital rdfs:range p2:Ciudad . p2:Madrid rdf:type p2:Ciudad . p2:España rdf:type p2:Pais . p2:España p2:capital p2:Madrid . Pág. 1 / 9 UNIVERSIDAD REY JUAN CARLOS CURSO 2014-2015 Hoja de Problemas Tema 8 Ontologías y Web Semántica Ejercicio 2: Representar utilizando RDF Schema el siguiente conocimiento: Picasso pintó el Guernica. Puede utilizar un grafo o la notación Turtle. Defina las clases y propiedades que considere oportunas. Todas las URIs creadas tendrán como base http://prueba2.curso2012/. Si lo desea puede utilizar los siguientes prefijos y/o definir otros si es necesario. @prefix p2: <http://prueba2.curso2012/> @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> SOLUCIÓN rdfs:Class rdf:type rdfs:domain p2:Cuadro rdf:Property rdfs:Class rdf:type p2:autor rdf:type rdfs:range p2:Persona rdf:type rdf:type p2:Guernica p2:autor p2:Picasso Turtle: p2:Persona rdf:type rdfs:Class . p2:Cuadro rdf:type rdfs:Class . p2:Picasso rdf:type p2:Persona . p2:autor rdf:type rdf:Property . p2:autor rdfs:domain p2:Cuadro . p2:autor rdfs:range p2:Persona . p2:Guernica rdf:type p2:Cuadro . p2:Guernica p2:autor p2:Picasso . Pág. 2 / 9 UNIVERSIDAD REY JUAN CARLOS CURSO 2014-2015 Hoja de Problemas Tema 8 Ontologías y Web Semántica Ejercicio 3: Utilizando la herramienta Protege 3.4 realizar los siguientes pasos: 1. Crear un proyecto nuevo • Seleccionar OWL / RDF Files • Después OWL DL 2. Crear la clase Animal y las subclases Tigre, Vaca y Oveja • Tigre v Animal • Vaca v Animal • Oveja v Animal 3. Crear las clase ProductoAnimal y las subclases Leche y Huevos 4. Definir la propiedad “come” con dominio Animal y rango Animal t Planta t ProductoAnimal • El rango en Protege se hace añadiendo las tres clases al rango (en vez de la fórmula) • Otra opción: crear una clase Comida con esas tres subclases 5. Crear instancia de Tigre (p.e. t1) y Vaca (p.e. v1) e indicar que t1 come v1 6. Expresar: algo que come animales es carnívoro: • Carnívoro ´ 9come.Animal • Se recomienda seleccionar la opción “OWL – Preferences – DLSintaxClassDisplay” para utilizar la notación de lógicas de descripciones vista en clase 7. Expresar: un vegetariano es algo que no come animales • Vegetariano ´ 8come.¬Animal (o ¬(9come.Animal) ) 8. Expresar: Los tigres comen vacas • Tigre v 9come.Vaca 9. INFERENCIA 1: clasificar la ontología (activar el razonador si no lo está, menú “Reasoning”). Observar qué se deduce y explicar. 10. INFERENCIA 2: computar instancias. Observar qué se deduce y explicar. 11. Expresar: La vaca es animal vegetariano • Vaca v Animal u Vegetariano (o simplemente añadir Vaca v Vegetariano) 12. Expresar: Las vacas locas son vacas que comen ovejas • VacaLoca v Vaca u 9come.Oveja 13. INFERENCIA 3: comprobar consistencia. Observar qué se deduce y explicar. Pág. 3 / 9 UNIVERSIDAD REY JUAN CARLOS CURSO 2014-2015 Hoja de Problemas Tema 8 Ontologías y Web Semántica 14. Quitar Vegetariano de Vaca (11). Volver a comprobar la consistencia y explicar. 15. Volver a dejar Vaca v Animal u Vegetariano y modificar Vegetariano (7): • Vegetariano ´ 8come.Planta (en vez de ¬Animal) 16. INFERENCIA 4: comprobar consistencia. Observar qué se deduce y explicar. 17. Añadir que Animal es disjunto de Planta. • Animal v ¬Planta • Esto se puede hacer añadiendo el axioma o añadiendo la clase en “disjoints” 18. INFERENCIA 5: comprobar consistencia. Observar qué se deduce y explicar. SOLUCIÓN: INFERENCIA 1: clasificar la ontología. Observar qué se deduce y explicar. • Carnívoro v Animal debido a que come tiene dominio Animal. Si se añade dominio Carnívoro o se quita el dominio Animal entonces no se deduce. • Tigre v Carnívoro por 6 y 8 INFERENCIA 2: computar instancias. Observar qué se deduce y explicar. • t1 y v1 ∈ Animal por subsunción • t1 ∈ Carnívoro por 5 y 6 INFERENCIA 3: comprobar consistencia. Observar qué se deduce y explicar. • VacaLoca es inconsistente porque es Vaca u 9come.Oveja u 8come.¬Animal INFERENCIA 4: comprobar consistencia. Observar qué se deduce y explicar. • Ahora VacaLoca es consistente!! porque no se dice que Oveja sea disjunto de Planta, por tanto podría haber ovejas que fueran también plantas INFERENCIA 5: comprobar consistencia. Observar qué se deduce e intentar explicar porqué. • Ahora VacaLoca es inconsistente, ya que ahora Animal (y por tanto Oveja) son disjuntos de Planta. Pág. 4 / 9 UNIVERSIDAD REY JUAN CARLOS CURSO 2014-2015 Hoja de Problemas Tema 8 Ontologías y Web Semántica Ejercicio 4: 1. Introducir en Protege el siguiente conocimiento: Mujer ´ Persona u Femenino Hombre ´ Persona u ¬Mujer Padre ´ Hombre u 9crea.Persona Madre ´ Mujer u 9crea.Persona Progenitor ´ Padre t Madre Abuela ´ Madre u 9crea.Progenitor Esposa ´ Mujer u 9tieneConyuge.Hombre MadreSinHijas ´ Madre u 8crea.(¬Mujer) 2. 3. 4. 5. Clasificar la taxonomía. Observar el resultado. Introducir algunas instancias Obtener instancias inferidas (type) Introducir inconsistencias, por ejemplo: • Hombre y NO Hombre • Después de tener instancias, especificar que hombre tiene al menos un hijo 6. Realizar algunas consultas SPARQL SOLUCIÓN: Este ejercicio no tiene solución concreta. Pág. 5 / 9 UNIVERSIDAD REY JUAN CARLOS CURSO 2014-2015 Hoja de Problemas Tema 8 Ontologías y Web Semántica Ejercicio 5: Realizar las siguientes consultas SPARQL a la dbpedia (http://dbpedia.org/snorql o http://dbpedia.org/sparql): 1. Capitales de Europa, ordenadas (http://dbpedia.org/class/yago/CapitalsInEurope) PREFIX yago: <http://dbpedia.org/class/yago/> SELECT DISTINCT * WHERE { ?c a yago:CapitalsInEurope. } ORDER BY ?c 2. Capitales de Europa y su nombre, ordenadas (http://dbpedia.org/property/name) PREFIX yago: <http://dbpedia.org/class/yago/> PREFIX dbpprop: <http://dbpedia.org/property/> SELECT DISTINCT ?c ?nombre WHERE { ?c a yago:CapitalsInEurope. ?c dbpprop:name ?nombre. } ORDER BY ?c 3. Capitales de Europa que no tienen nombre, ordenadas SELECT DISTINCT ?c ?nombre WHERE { ?c a yago:CapitalsInEurope. MINUS {?c dbpprop:name ?nombre.} } ORDER BY ?c También: FILTER NOT EXISTS {?c dbpprop:name ?nombre.} 4. Capitales de Europa, su nombre y su nombre nativo, ordenadas (http://dbpedia.org/property/nativeName) SELECT DISTINCT * WHERE { ?c a yago:CapitalsInEurope. ?c dbpprop:name ?nombre. ?c dbpprop:nativeName ?nomNativo } ORDER BY ?c Pág. 6 / 9 UNIVERSIDAD REY JUAN CARLOS CURSO 2014-2015 Hoja de Problemas Tema 8 Ontologías y Web Semántica 5. Capitales de Europa y su nombre (si lo tienen), ordenadas SELECT DISTINCT ?c ?nombre WHERE { ?c a yago:CapitalsInEurope. OPTIONAL {?c dbpprop:name ?nombre}. } ORDER BY ?c 6. Capitales de Europa, su nombre (si lo tienen) y su nombre nativo (si lo tienen), ordenadas SELECT DISTINCT * WHERE { ?c a yago:CapitalsInEurope. OPTIONAL {?c dbpprop:name ?nombre.}. OPTIONAL {?c dbpprop:nativeName ?nomNativo} } ORDER BY ?c 7. Capitales de Europa y, si tienen ambos, su nombre y su nombre nativo, ordenadas SELECT DISTINCT * WHERE { ?c a yago:CapitalsInEurope. OPTIONAL { ?c dbpprop:name ?nombre. ?c dbpprop:nativeName ?nomNativo} } ORDER BY ?c 8. Capitales europeas cuyo nombre contiene una “e” SELECT DISTINCT * WHERE { ?c a yago:CapitalsInEurope. ?c dbpprop:name ?nombre. FILTER regex(?nombre,"e","i") } ORDER BY ?c 9. Capitales europeas y población de más de 2.000.000 habitantes, ordenados por nº habitantes (de mayor a menor) (http://dbpedia.org/ontology/populationTotal) PREFIX dbpedia-owl: <http://dbpedia.org/ontology/> SELECT DISTINCT * WHERE { ?c a yago:CapitalsInEurope. ?c dbpedia-owl:populationTotal ?hab. FILTER (?hab >= 2000000) } ORDER BY DESC(?hab) Pág. 7 / 9 UNIVERSIDAD REY JUAN CARLOS CURSO 2014-2015 Hoja de Problemas Tema 8 Ontologías y Web Semántica 10. Capitales europeas con más de 1000 km2 (en m2) (http://dbpedia.org/ontology/areaTotal) SELECT DISTINCT * WHERE { ?c a yago:CapitalsInEurope. ?c dbpedia-owl:areaTotal ?area. FILTER (?area > 1000000000) } 11. Capitales europeas o asiáticas con más de 1000 km2 (en m2) (http://dbpedia.org/class/yago/CapitalsInAsia) SELECT DISTINCT * WHERE { { ?c a yago:CapitalsInEurope.} UNION { ?c a yago:CapitalsInAsia.} ?c dbpedia-owl:areaTotal ?area. FILTER (?area > 1000000000) } 12. Capitales europeas con más de 1000 km2 (en m2) y capitales de Asia con más de 10 millones de habitantes SELECT DISTINCT * WHERE { { ?c a yago:CapitalsInEurope. ?c dbpedia-owl:areaTotal ?area. FILTER (?area > 1000000000) } UNION { ?lugar a yago:CapitalsInAsia. ?lugar dbpedia-owl:populationTotal ?hab. FILTER (?hab >= 10000000) } } 13. Capitales europeas y población de más de 2.000.000 habitantes, de países de menos de 500.000 km2 (en m2) (http://dbpedia.org/ontology/country) SELECT DISTINCT * WHERE { ?c a yago:CapitalsInEurope. ?c dbpedia-owl:populationTotal ?hab. FILTER (?hab >= 2000000) ?c dbpedia-owl:country ?pais. ?pais dbpedia-owl:areaTotal ?area. FILTER (?area < 500000000000) } Pág. 8 / 9 UNIVERSIDAD REY JUAN CARLOS CURSO 2014-2015 Hoja de Problemas Tema 8 Ontologías y Web Semántica 14. Actores de cine que están casados entre ellos, han participado en la misma película, y tal que uno de ellos ha nacido en un país cuya capital tiene más de 3 millones de habitantes, y el otro ha nacido en una ciudad que tiene un equipo en la NBA • dbpprop:spouse • dbpedia-owl:starring (pelicula – actor) • dbpedia-owl:birthPlace • dbpedia-owl:Country (clase) • dbpedia-owl:capital • dbpedia-owl:populationTotal • dbpprop:city (equipo - ciudad) • yago:NationalBasketballAssociationTeams SELECT DISTINCT ?actor1 ?actor2 WHERE { {?actor1 dbpprop:spouse ?actor2.} UNION {?actor2 dbpprop:spouse ?actor1.} ?peli dbpedia-owl:starring ?actor1. ?peli dbpedia-owl:starring ?actor2. ?actor1 dbpedia-owl:birthPlace ?p1. ?p1 a dbpedia-owl:Country. ?p1 dbpedia-owl:capital ?cap. ?cap dbpedia-owl:populationTotal ?hab. FILTER (?hab > 3000000). ?actor2 dbpedia-owl:birthPlace ?c2. ?equipo dbpprop:city ?c2. ?equipo a yago:NationalBasketballAssociationTeams. } Pág. 9 / 9