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.

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top