[En español|Ejemplos de uso de los datos esDBpedia]

[{TableOfContents }]

!!!R example
It uses the SPARQL R package to query the esDBpedia SPARQL EndPoint. In this example it gets the geolocated resources in the Madrid Community (indeed in Madrid's bounding box]

They are classified by their type. For shake of simplicity the schema.org type has been chosen. A resource can have more than one type (e.g. Alcalá de Henares has Place and Hospital). 
%%prettify
{{{
library(ggplot2)
library(mapproj)
library(ggmap)
library(SPARQL)
endpoint <- "http://es.dbpedia.org/sparql"
query <-
"SELECT *  WHERE {
      ?uri geo:lat ?lat .
      ?uri geo:long ?lon .
      ?uri rdf:type ?thetype .
      FILTER ( (?lat> 40.0  && ?lat < 41.15) &&
               (?lon> 3.1  && ?lon < 4.5)
               && regex(?thetype,'^http://schema.org')
             )
}
"
reslist <- SPARQL(endpoint,query)
df <- reslist$results
df$lon <- -df$lon
df$thetype <- factor(df$thetype)
map.center <- geocode("Madrid, Spain")
map <- get_map(c(lon=map.center$lon, lat=map.center$lat), 
                 source="google",  zoom=9)
ggmap(map) + geom_point(data=df,  
                        aes(x=lon, y=lat, colour=thetype, position="dodge"), 
                        size=6, alpha=0.8
                        )
}}}
%%

The result is this graphic (click on this icon %%slimbox [|Ejemplos de uso de los datos esDBpedia/esDBpedia_SPARQL_R.png]%% if you can not see the legend on the right side of the map):


[{Image src='Ejemplos de uso de los datos esDBpedia/esDBpedia_SPARQL_R.png' align='center'}]

Notes: 
* The lon coordinate (longitude) stored by esDBpedia is positive, that is why we have to add the minus.
* The "dodge" parameter is aimed at distinguish visually two overlapping points. To achieve that, the dots are lightly separated. In areas full of dots is becomes impossible (as is the case for the center of Madrid).
* If anybody knows how to setup a color palette capable of providing a better visualization, please, tell us! :-D.


!!!Javascript example

Kindly provided by Alejandro F.Carrera
%%prettify
{{{
<html><body>
<div id="mapdiv"></div>
<script src="http://www.openlayers.org/api/OpenLayers.js"></script>
<script>

	// SPARQL Query
  	function sparqlQueryJson(queryStr, endpoint, callback, isDebug) {
      var querypart = "query=" + escape(queryStr);
      var xmlhttp = null;
      if(window.XMLHttpRequest) {
        xmlhttp = new XMLHttpRequest();
     } else if(window.ActiveXObject) {
       xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
     } 
     xmlhttp.open('POST', endpoint, true);
     xmlhttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
     xmlhttp.setRequestHeader("Accept", "application/sparql-results+json");
     xmlhttp.onreadystatechange = function() {
       if(xmlhttp.readyState == 4) {
         if(xmlhttp.status == 200) {
           if(isDebug) {
           		// see results of the SPARQL query
           	    alert(xmlhttp.responseText);
           }
           callback(xmlhttp.responseText);
         }
       }
     };
     xmlhttp.send(querypart);
    };
	
	// OSM Map
	map = new OpenLayers.Map("mapdiv");
    map.addLayer(new OpenLayers.Layer.OSM());
	var center = new OpenLayers.LonLat( -3.65 ,40.4).transform(
            new OpenLayers.Projection("EPSG:4326"),
            map.getProjectionObject()
          );
    var zoom=8;
    map.setCenter (center, zoom);
	
	var endpoint = "http://dbpedia.org/sparql";
    var query = "SELECT * WHERE {?uri geo:lat ?lat .?uri geo:long ?lon .?uri rdf:type ?thetype .FILTER ( (?lat> 40.0  && ?lat < 41.15) &&(?lon> -3  && ?lon < 4)&& regex(?thetype,'^http://schema.org'))}" ;
    function myCallback(str) {
		str = eval('(' + str + ')');
        for(var i = 0; i<  str.results.bindings.length; i++) {
		  	var la = str.results.bindings[i].lat.value;
		  	var lo = str.results.bindings[i].lon.value;
		  	var pos = new OpenLayers.LonLat( la ,lo).transform(
            	new OpenLayers.Projection("EPSG:4326"),
            	map.getProjectionObject()
          	);
		  	// Add to map as point (la, lo)
        } 
     }
    sparqlQueryJson(query, endpoint, myCallback, true);
</script>
</head>
</body></html>
}}}
%%

And this is the result:

[{Image src='Ejemplos de uso de los datos esDBpedia/esDBpedia_SPARQL_js.png' align='center'}]

And [this is the improved version|dbpedia_js_v2.html]. INTERACTIVE!!: it allows zooming, each geolocation is a "classic" marker that you can click, and a mini-popup shows the URL of the resource and the schema.org type.



[{Image src='esDBpedia_SPARQL_js.v2.png' align='center'}]