PREFIX dbo: <http://dbpedia.org/ontology/> PREFIX res: <http://dbpedia.org/resource/> SELECT DISTINCT ?uri WHERE { res:Czech_Republic dbo:currency ?uri . }
con resultado http://dbpedia.org/resource/Czech_koruna
La conversión directa (cambiando res por esres y traduciendo el nombre del páis) sería esta:
PREFIX dbo: <http://dbpedia.org/ontology/> PREFIX esres: <http://es.dbpedia.org/resource/> SELECT DISTINCT ?uri WHERE { esres:República_Checa dbo:currency ?uri . }
pero no devuelve resultados porque en la fecha de extracción de los datos no estaba mapeada "ficha de país".
PREFIX dbp: <http://dbpedia.org/property/> PREFIX res: <http://dbpedia.org/resource/> PREFIX yago: <http://dbpedia.org/class/yago/> PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> SELECT DISTINCT ?uri WHERE { ?uri rdf:type yago:EuropeanUnionMemberStates . { ?uri dbp:currency res:Euro . } UNION { ?uri dbp:currencyCode 'EUR'@en . } UNION { ?uri dbp:currencyCode 'Euro'@en . } }Nota: había un error en la query original (?ur WHERE --> ?uri WHERE)
http://dbpedia.org/resource/Luxembourg |
http://dbpedia.org/resource/Slovenia |
http://dbpedia.org/resource/Estonia |
http://dbpedia.org/resource/Finland |
http://dbpedia.org/resource/Portugal |
http://dbpedia.org/resource/Austria |
http://dbpedia.org/resource/Belgium |
http://dbpedia.org/resource/Spain |
http://dbpedia.org/resource/Italy |
http://dbpedia.org/resource/Malta |
http://dbpedia.org/resource/Greece |
http://dbpedia.org/resource/Cyprus |
Una vez más, la query en inglés usa categorías YAGO, que no están en esDBpedia. La categoría esWikipedia más parecida es Categoría:Países_de_Europa, de forma que la query quedaría así:
PREFIX dbp: <http://dbpedia.org/property/> PREFIX res: <http://dbpedia.org/resource/> PREFIX yago: <http://dbpedia.org/class/yago/> PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX dcterms: <http://purl.org/dc/terms/> SELECT DISTINCT ?uri WHERE { ?uri dcterms:subject <http://es.dbpedia.org/resource/Categoría:Países_de_Europa> . { ?uri dbp:currency res:Euro . } UNION { ?uri dbp:currencyCode 'EUR'@en . } UNION { ?uri dbp:currencyCode 'Euro'@en . } }pero no devuelve resultados. El motivo es que esa categoría devuelve nada más 2 países (y dos anexos). Y, aunque devolviera los correctos, en la fecha de extracción de los datos de esDBpedia no estaba mapeada "ficha de país", por lo que no podríamos sacar su moneda :-(.
PREFIX dbo: <http://dbpedia.org/ontology/> PREFIX res: <http://dbpedia.org/resource/> SELECT DISTINCT ?string WHERE { res:Berlin dbo:areaCode ?string . }
con resultado: "030"@en
La tradicción sencilla res-->esres y Berlin-->Berlín produce esta query
PREFIX dbo: <http://dbpedia.org/ontology/> PREFIX esres: <http://es.dbpedia.org/resource/> SELECT DISTINCT ?string WHERE { esres:Berlín dbo:areaCode ?string . }
que tiene por resultado "B"@es
En la página esWikipedia de Berlín, el atributo "prefijo" tiene el valor "30", y el atributo "matrícula_autos" vale "B". Usa la "Ficha de entidad subnacional".
En enWikipedia, la página de Berlin usa el "Infobox German state", y el atributo "Vorwahl" tiene el valor "030".
En el mapeo de "Ficha de entidad subnacional" hay varios atributos que se mapean a "areaCode": prefijo, prefijo telefónico nombre, prefijo_telefónico_nombre, prefijo telefónico, y prefijo_telefónico. No hay mapeo para el atributo "matrícula_autos".
Raro, raro... Si miramos los datos de Berlín que tenemos en esDBpedia vemos que se han usado varias fichas (mira la propiedad http://es.dbpedia.org/property/wikiPageUsesTemplate), pero ninguna de ellas es "Ficha de entidad subnacional".
Lo marco como
PREFIX dbo: <http://dbpedia.org/ontology/> PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> SELECT DISTINCT ?uri WHERE { ?uri rdf:type dbo:Country . ?uri dbo:officialLanguage ?language . }GROUP BY ?uri HAVING (COUNT(?language) > 2)
con resultado
http://dbpedia.org/resource/Singapore |
http://dbpedia.org/resource/Switzerland |
http://dbpedia.org/resource/Frisia |
http://dbpedia.org/resource/Mauritius_(Commonwealth_realm) |
http://dbpedia.org/resource/South_Ossetia |
http://dbpedia.org/resource/Nineveh_plains |
http://dbpedia.org/resource/Vojvodina |
http://dbpedia.org/resource/Basque_Country_(greater_region) |
http://dbpedia.org/resource/Khmers_Kampuchea-Krom_Federation |
http://dbpedia.org/resource/Basque_Country_%28greater_region%29 |
De nuevo, en esDBpedia, a fecha de la extracción de los datos no había mapeo para Country por lo que no podemos preguntar por officialLanguage.
El intento de sacar la lista de países a partir de alguna categoría esWikipedia tampoco tiene éxito: la Categoría:Países tiene algunas cosas, pero no países.
PREFIX dbo: <http://dbpedia.org/ontology/> PREFIX res: <http://dbpedia.org/resource/> SELECT DISTINCT ?uri WHERE { res:Universal_Studios dbo:owner ?uri . }
con resultado:
http://dbpedia.org/resource/General_Electric |
http://dbpedia.org/resource/Independent_business |
http://dbpedia.org/resource/MCA_Inc. |
http://dbpedia.org/resource/NBCUniversal |
http://dbpedia.org/resource/Vivendi |
http://dbpedia.org/resource/Comcast |
http://dbpedia.org/resource/Seagram |
http://dbpedia.org/resource/Decca_Records |
http://dbpedia.org/resource/Panasonic |
la traducción sencilla (res-->esres, Universal_Studios --> Estudios_Universal) no funciona. El motivo es que esres:Estudios_Universal no tiene la propiedad dbo:owner porque, en esWikipedia, la página de Estudios_Universal no usa ninguna ficha. En esWikipedia usa el "Infobox company".
PREFIX res: <http://dbpedia.org/resource/> PREFIX dbp: <http://dbpedia.org/property/> SELECT DISTINCT ?uri WHERE { res:Yenisei_River dbp:country ?uri . }
que tiene por resultado
http://dbpedia.org/resource/Mongolia |
http://dbpedia.org/resource/Russia |
la traducción sencilla (res --> esres, dbp --> esdbp, Yenesei_River --> Río_Yeneséi) daría esta query
PREFIX esres: <http://es.dbpedia.org/resource/> PREFIX esdbp: <http://es.dbpedia.org/property/> SELECT DISTINCT ?uri WHERE { esres:Río_Yeniséi esdbp:país ?uri . }
que no produce resultados porque en esWikipedia, la página de Río Yeniséi usa "Ficha de cuerpo de agua", que tiene en el atributo "país" el valor
{{RUS}}
En enWikipedia tiene los atributos country y country1 con valores Mongolia (uri) y Rusia (uri).
PREFIX res: <http://dbpedia.org/resource/> PREFIX dbp: <http://dbpedia.org/property/> SELECT DISTINCT ?date WHERE { res:Finland dbp:accessioneudate ?date . }
con respuesta "1"^^<http://www.w3.org/2001/XMLSchema#int> ¡Qué rara! :-)
La traducción sencilla no produce resultados porque, aunque en la ficha de Finland (wikipedia inglesa) está en atributo "accessionEUdate" con valor "1 January 1995", en la esWikipedia la página de Finlandia (que usa "ficha de país") no hay ningún atributo similar :-(
PREFIX yago: <http://dbpedia.org/class/yago/> PREFIX dbo: <http://dbpedia.org/ontology/> PREFIX res: <http://dbpedia.org/resource/> PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> SELECT DISTINCT ?uri WHERE { ?uri rdf:type yago:MonarchsOfTheUnitedKingdom . ?uri dbo:spouse ?spouse . ?spouse dbo:birthPlace res:Germany. }
con respuesta:
http://dbpedia.org/resource/George_III_of_the_United_Kingdom |
http://dbpedia.org/resource/William_IV_of_the_United_Kingdom |
Por lo pronto, en esDBpedia no tenemos las categorías YAGO. No encuentro ninguna categoría esWikipedia que liste los monarcas de Reino Unido.
Otra alternativa sería sacar los reyes a partir de la clase Noble (?uri rdf:type dbo:Noble) pero, en la fecha de extracción de los datos no había mapeo para "ficha de noble".
He hecho el mapeo de la ficha; mapeando, entre otras, la propiedad title. De todos modos, las estadísticas de ficha de noble se puede ver que no hay manera de saber de qué país era ese noble: no hay ningún atributo parecido a "país" o "nacionalidad".
Tampoco se puede explotar esdbp:profesión con filtros del tipo FILTER (regex(?v, "^[rR]ey")). He probado y sólo salen vireyes :-(
PREFIX dbo: <http://dbpedia.org/ontology/> PREFIX res: <http://dbpedia.org/resource/> SELECT DISTINCT ?date WHERE { res:Battle_of_Gettysburg dbo:date ?date . }
con respuesta 1863-07-03
La traducción res-->esres y del literal no es suficiente. Hay que cambiar dbo:date y poner esdbp:fecha
PREFIX dbo: <http://dbpedia.org/ontology/> PREFIX esdbp: <http://es.dbpedia.org/property/> PREFIX esres: <http://es.dbpedia.org/resource/> SELECT DISTINCT ?date WHERE { esres:Batalla_de_Gettysburg dbo:date ?date . }
que da como resultado "Del 1 al 3 de julio de 1863"@es
¿Motivo para tener que usar esdbp:fecha en lugar de dbo:date?
Hay mapeo para la "Ficha de conflicto militar" (usada por la página de esWikipedia de "Batalla de Gettysburg") y en la ficha había atributo que mapease dbo:fecha (atributo "fecha"). En la página esWikipedia se asigna el valor devuelto por la query al atributo "fecha".
Es raro... , ya que otros atributos en la misma situación sí existen las formas dbo: y esdbp:
PREFIX dbo: <http://dbpedia.org/ontology/> PREFIX res: <http://dbpedia.org/resource/> PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> SELECT DISTINCT ?uri WHERE { ?uri rdf:type dbo:Mountain . ?uri dbo:locatedInArea res:Australia . ?uri dbo:elevation ?elevation . } ORDER BY DESC(?elevation) LIMIT 1
con respuesta http://dbpedia.org/resource/Mawson_Peak
La traducción sencilla (res-->esres) no da resultados. Mirando en detalle podemos ver que "ficha de montaña" está mal mapeada: mapea el atributo "Elevación" a dbo:prominence en lugar de dbo:elevation (como hace el mapeo del inglés).
Aun así, sabiendo eso, la query
PREFIX dbo: <http://dbpedia.org/ontology/> PREFIX esdbp: <http://es.dbpedia.org/property/> PREFIX esres: <http://es.dbpedia.org/resource/> PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> SELECT * WHERE { ?uri rdf:type dbo:Mountain . ?uri dbo:locatedInArea esres:Australia . ?uri dbo:prominence ?v }tiene por resultado:
uri | v |
http://es.dbpedia.org/resource/Uluru | 863 |
http://es.dbpedia.org/resource/Pico_Santa_María | 1171 |
El Pico_Mawson está en esWikipedia(2745 m), usa la "ficha de montaña", estaba mapeado en la fecha de la extracción de datos, y tenía el atributo "Elevación" con el valor "2.745 m".
Explicación: la página esWikipedia del Pico_Mawson se creó el 24 abr 2012, 4 días después del dump que se usó para generar los datos. De haber existido esta página en el dump usado para la extracción, se hubiese logrado el resultado correcto.
Ontology Engineering Group. ETSI Informáticos, Universidad Politécnica de Madrid (UPM)