Obtener categorías de lugares de DBpedia usando SPARQL
-
27-10-2019 - |
Pregunta
El siguiente código consulta DBpedia en busca de lugares dentro de un área geográfica delimitada y devuelve el nombre, latitud y longitud del lugar.También me gustaría que la consulta devuelva la categoría del lugar, por ejemplo, parque, restaurante, museo, etc.
El siguiente código funciona bien.
sparql = SPARQLWrapper("http://dbpedia.org/sparql")
sparql.setQuery("""
PREFIX geo: <http://www.w3.org/2003/01/geo/wgs84_pos#>
PREFIX dbo: <http://dbpedia.org/ontology/>
PREFIX category: <http://dbpedia.org/resource/Category:>
SELECT * WHERE {
?s a dbo:Place .
?s geo:lat ?lat .
?s geo:long ?long .
Intenté agregar el siguiente código para obtener categorías de lugares, pero esto no funciona:
?s category:cat ?cat .
¿Qué debo agregar / cambiar?Gracias.
Solución
Puedes obtener la categoría de un lugar (suponiendo que te refieres al tipo) buscando el tipo (rdfs: type) o el tema (dcterms: subject) de un recurso.En DBPedia, el primero se relaciona con las ontologías DBPedia y Yago y el segundo es una jerarquía SKOS en DBPedia.Aquí hay un ejemplo de consulta:
PREFIX geo: <http://www.w3.org/2003/01/geo/wgs84_pos#>
PREFIX dbo: <http://dbpedia.org/ontology/>
PREFIX dcterms: <http://purl.org/dc/terms/>
SELECT * WHERE {
?s a dbo:Place .
?s geo:lat ?lat .
?s geo:long ?long .
?s a ?type .
?s dcterms:subject ?sub
}
Tenga en cuenta que obtendrá varios tipos y temas para cada lugar.