jueves, 29 de mayo de 2014

Ya podéis utilizar nuestros datos en JSON-LD

Ya sabéis que estamos trabajando continuamente en facilitar el acceso a nuestra API y el uso de nuestros datos, para que podáis incorporarlos en vuestras aplicaciones. Por ejemplo, recientemente incluimos un formato como GeoJSON, del que ya hemos hablado en algunos posts previos, y que os permite mostrar fácilmente nuestros datos en varios servidores de mapas.

Hoy tenemos una muy buena noticia para todos los que usáis nuestra API (y también para los que nos seguís y aún no os habéis registrado en nuestro portal de desarrolladores). Teniendo en cuenta el feedback que hemos recibido de algunos de vosotros, hemos decidido incluir un nuevo formato (JSON-LD) que os permitirá procesar JSON de una manera más reutilizable, y que está siendo ya utilizado, por ejemplo, por schema.org.

Tal y como se describe en la página principal de JSON-LD, este formato combina la sencillez de JSON con un contexto que facilita su tratamiento, proporcionando identificadores únicos (URIs) para las propiedades que se utilizan en el documento JSON. Esto también permite transformar estos datos automáticamente a formatos como RDF (que ya sabéis que también os proporcionamos en nuestra API de manera nativa).

Aquí tenéis un ejemplo de una salida en JSON-LD, para la siguiente URI:


{
"@graph" : [ {
"@id" : "http://datos.localidata.com/recurso/comercio/Provincia/Madrid/Municipio/madrid/Local/11007335L10",
"localidata:direccionComercial" : "CALLE ABADA, 2, MADRID, ESPAÑA",
"rdfs:label" : "BELLAS ARTES BAZAR"
}, {
"@id" : "http://datos.localidata.com/recurso/comercio/Provincia/Madrid/Municipio/madrid/Local/11007335L10.rdf?_sort=label",
"os:itemsPerPage" : {
"@type" : "xsd:long",
"@value" : "10"
},
"os:startIndex" : {
"@type" : "xsd:long",
"@value" : "1"
},
"items" : {
"@list" : [ "http://datos.localidata.com/recurso/comercio/Provincia/Madrid/Municipio/madrid/Local/11007335L10" ]
},
"api:page" : {
"@type" : "xsd:long",
"@value" : "0"
},
"xhv:first" : {
"@id" : "http://datos.localidata.com/recurso/comercio/Provincia/Madrid/Municipio/madrid/Local/11007335L10.rdf?_sort=label&_page=0"
}
} ],
"@context" : {
"direccionComercial" : {
"@id" : "http://datos.localidata.com/def/City#direccionComercial",
"@type" : "@id"
},
"label" : {
"@id" : "http://www.w3.org/2000/01/rdf-schema#label",
"@type" : "@id"
},
"rest" : {
"@id" : "http://www.w3.org/1999/02/22-rdf-syntax-ns#rest",
"@type" : "@id"
},
"first" : {
"@id" : "http://www.w3.org/1999/02/22-rdf-syntax-ns#first",
"@type" : "@id"
},
"itemsPerPage" : {
"@id" : "http://a9.com/-/spec/opensearch/1.1/itemsPerPage",
"@type" : "@id"
},
"startIndex" : {
"@id" : "http://a9.com/-/spec/opensearch/1.1/startIndex",
"@type" : "@id"
},
"items" : {
"@id" : "http://purl.org/linked-data/api/vocab#items",
"@type" : "@id"
},
"page" : {
"@id" : "http://purl.org/linked-data/api/vocab#page",
"@type" : "@id"
},
"rdfs" : "http://www.w3.org/2000/01/rdf-schema#",
"os" : "http://a9.com/-/spec/opensearch/1.1/",
"localidata" : "http://datos.localidata.com/def/City#",
"dct" : "http://purl.org/dc/terms/",
"xsd" : "http://www.w3.org/2001/XMLSchema#",
"rdf" : "http://www.w3.org/1999/02/22-rdf-syntax-ns#",
"api" : "http://purl.org/linked-data/api/vocab#",
"xhv" : "http://www.w3.org/1999/xhtml/vocab#"
}
}



Por supuesto, siempre podéis utilizar nuestra API desde la línea de comandos, y hacer la siguiente petición:
curl -H "Accept:application/ld+json" http://datos.localidata.com/recurso/comercio/Provincia/Madrid/Municipio/madrid/Local/11007335L10?api_key=<<API_KEY>>
En alguno de nuestros próximos posts os contaremos con más detalle cómo podéis explotar al máximo este formato. De momento, os recomendamos ir probando...

lunes, 5 de mayo de 2014

¿Qué farmacias tengo cerca?

Recientemente nos han preguntado si nuestra API podría servir para poder encontrar rápidamente las farmacias que están cerca del sitio en el que nos encontramos (y quien dice farmacias, dice cualquier otro tipo de local comercial). Hoy os explicamos cómo obtenerlas y cómo mostrarlas fácilmente en Google Maps y CartoDB.

Ya sabéis lo primero que os vamos a decir, que tenéis que solicitar vuestra API_key para poder replicar lo que estamos haciendo aquí. Cada vez tenemos más usuarios, y muchos de vosotros nos estáis dando ideas muy buenas para mejorar la API y así dar soporte a las necesidades que tenéis. Seguid así.

Bueno, pues suponiendo que tenemos ya nuestra API key, lo primero es buscar en el portal de desarrollador la llamada que nos permite buscar locales de un tipo concreto alrededor nuestro. Aquí la tenéis:
http://datos.localidata.com/recurso/comercio/Provincia/Madrid/Municipio/madrid/Local/NE/<LatitudNE>/<LongitudNE>/SO/<LatitudSO>/<LongitudSO>/AE/label/<actividadEconomica>

donde:
  • <LatitudNE><LongitudNE> y <LatitudSO><LongitudSO> nos delimita el bounding box en el que queremos buscar.
  • <actividadEconomica> es cualquier texto contenido en cualquiera de las actividades económicas del local.
Supongamos que estamos en MediaLab-Prado (C/ Alameda, 15) en Madrid. Google o nuestro GPS nos dirá que estamos en el lugar con latitud y longitud (40.4108,-3.6938). En este caso vamos a seleccionar como punto NE el siguiente (40.413967, -3.688840) y como punto SO el siguiente (
40.408592, -3.702165), que se corresponden con el rectángulo (bounding box) que se muestra en la siguiente figura.

Así que la llamada a nuestra API sería la siguiente:

Si utilizamos un navegador Web para acceder a esta URI, obtendremos algo parecido a lo siguiente:

Con esto ya tenemos las direcciones de las farmacias que se encuentran en este bounding box. Ahora ya sólo queda obtener más información (por ejemplo, sus coordenadas) y mostrar estas farmacias en un mapa.

En primer lugar, para obtener las coordenadas de todos estos recursos usaremos alguna de las dos vistas _view=ampliada o _view=coordenadas, y subiremos el tamaño de las páginas para tener más de 10, que son las que obtendremos por defecto. Además, usaremos la extensión .geojson para mostrarla en Google Maps y CartoDB, como ya hemos descrito en algunos posts anteriores.


Aquí tenemos las visualizaciones en Google Maps (en este enlace hay que cambiar la API key para que sea la vuestra) y CartoDB:

https://dl.dropboxusercontent.com/u/1406775/farmaciasMediaLabPrado.html


http://cdb.io/1ncl2ca


¿Y si os pidiéramos ahora que buscaseis los bancos cercanos? ¿Cómo lo haríais?