SISTEMAS BASADOS EN EL CONOCIMIENTO Grado en Ingeniería Informática Hoja de Problemas Tema 4 Web Semántica y Web de Datos 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 1 SISTEMAS BASADOS EN EL CONOCIMIENTO Grado en Ingeniería Informática Hoja de Problemas Tema 4 Web Semántica y Web de Datos 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) 2 SISTEMAS BASADOS EN EL CONOCIMIENTO Grado en Ingeniería Informática Hoja de Problemas Tema 4 Web Semántica y Web de Datos 10. Para cada capital europea de más de 2 millones de habitantes mostrar un texto con el nombre y los habitantes. Por ejemplo: “En Madrid hay 3500000 habitantes” SELECT DISTINCT (CONCAT ("En ",?nombre," hay ",?hab," habitantes")) AS ?frase WHERE { ?c a yago:CapitalsInEurope. ?c dbpprop:name ?nombre. ?c dbpedia-owl:populationTotal ?hab. FILTER (?hab >= 2000000) } ORDER BY DESC(?hab) 11. 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) } 12. 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) } 13. 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) } } 3 SISTEMAS BASADOS EN EL CONOCIMIENTO Grado en Ingeniería Informática Hoja de Problemas Tema 4 Web Semántica y Web de Datos 14. 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) } 15. 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. } 16. Número de capitales europeas SELECT (COUNT(?c) AS ?numCapitales) WHERE { ?c a yago:CapitalsInEurope. } 4 SISTEMAS BASADOS EN EL CONOCIMIENTO Grado en Ingeniería Informática Hoja de Problemas Tema 4 Web Semántica y Web de Datos 17. Número mínimo y máximo de habitantes de las capitales europeas SELECT (MIN(?hab) AS ?minimo) (MAX(?hab) AS ?maximo) WHERE { ?c a yago:CapitalsInEurope. ?c dbpedia-owl:populationTotal ?hab. } 18. Tenistas ganadores de más de cinco torneos Grand Slam (Roland Garros, Wimbledon, Open USA, Open Australia) indicando y ordenado por número de torneos ganados (mayor a menor) • dbpedia-owl:championInSingleMale (torneo – ganador) • dbpedia-owl:category <http://dbpedia.org/resource/Grand_Slam_(tennis)> SELECT ?ganador (COUNT(?torneo) AS ?veces) WHERE { ?torneo dbpedia-owl:championInSingleMale ?ganador. ?torneo dbpedia-owl:category <http://dbpedia.org/resource/Grand_Slam_(tennis)>. } GROUP BY ?ganador HAVING (COUNT(?torneo) > 5) ORDER BY DESC(?veces) 5