#opendata con Yahoo Pipes

miércoles, 19 de enero de 2011
A pesar de que el movimiento #opendata dentro de la iniciativa de #oGov es relativamente reciente, la extracción de datos publicados en la web no es algo tan nuevo. La iniciativa #opendata recomienda la semantificación de contenidos y la exposición de los mismos en formatos abiertos tales como RDF o JSON. Sin embargo, tal y como acabo de mencionar ya existian con anterioridad otro tipo de iniciativas y plataformas para la extracción, exposición y generación de valor añadido a los datos expuestos. En este caso es importante destacar una de las más extendidas como son las aplicaciones web híbridas o mashups.

Un mashup de datos es básicamente una aplicación web que provee un servicio determinado haciendo uso de fuentes de datos de información de la cual no es dueña. La información necesaria es consumida de diversas fuentes de datos y formatos y es tratada en la lógica de negocio del mashup para posteriormente proporcionar el resultado de su procesamiento. Una de las plataformas más conocidas para el desarrollo de mashups de datos es Yahoo Pipes


Yahoo Pipes nos proporciona una interfaz web para el diseño, depuración y publicación de mashups de una forma rápida y sencilla. El único requisito para poder acceder es disponer de una cuenta de usuario en Yahoo. Una vez dentro del diseñador de mashups dispondremos de un conjunto de componentes con el que podremos definir la lógica de extracción e integración de datos. Visto esto, he desarrollado un pequeño experimento consistente en extraer y consumir datos de la web mediante la definición de un mashup en Yahoo Pipes y posteriormente publicar estos datos tratados en un formato abierto. Para ello he decidido además extraer datos de una fuente de datos no liberada, es decir, quiero extraer, exponer, consumir y generar valor a partir de datos no publicados en un catalogo RISP (Reutilización de Información del Sector Público), o lo que es lo mismo, a partir de una plataforma que no podriamos considerar a priori #opendata, voy a hacer uso de Yahoo Pipes para consumir los datos que en esta hay publicados y a exponerlos tras su tratamiento.

Para realizar nuestro pequeño experimento he optado por usar como fuente de datos la web del Servicio Andaluz de Empleo de la Junta de Andalucía. Voy a extraer datos de su sección Mapa de Recursos, concretamente simulando la operativa que ya se proporciona en esta web de obtención de la oficina del Servicio Andaluz de Empleo más cercana a partir de un código postal introducido por el usuario. En la siguiente imagen vemos una captura de la web mencionada proporcionando el servicio que acabamos de detallar:


Partimos de la base de que no tenemos acceso a la fuente de datos de donde se obtienen los datos de las oficinas y de que en la web del Servicio Andaluz de Empleo no se proporciona esta información en ningun formato reutilizable. 

A continuación pasamos a definir un mashup en Yahoo Pipes cuya lógica de negocio implemente el comportamiento de la búsqueda de oficinas del Servicio Andaluz de Empleo de su web. El mashup definido puede observarse en la siguiente figura:



Para el desarrollo de este mashup hemos usado los siguientes componentes:

Number Input Module: nos proporciona un método de entrada de datos de tipo numérico. Hemos definido un mensaje descriptivo para el formulario que se mostrará así como un valor por defecto, concretamente un código postal de Sevilla (41007). Más info de este componente aqui.

URL Builder: nos proporciona un método para construir URLs a partir de una URL base y sus correspondientes parámetros. Más info de este componente aqui. Concretamente para nuestro ejemplo hemos definido dos parámetros, el que determina que estamos consultando recursos de tipo 'Oficina del Servicio Andaluz de Empleo', definido por el valor 'prov1' dentro del parámetro combo, y el código postal definido por el parámetro 'cp' al cual le hemos inyectado el valor que introducirá el usuario definido en el componente anterior. La URL en concreto que hemos construido es:


Fetch Page: nos proporciona a partir de una URL su contenido en formato HTML, podemos opcionalmente seleccionar un subconjunto de ese contenido. En este caso hemos usado esta opción para extraer del código HTML resultante la porción donde se encuentra formateado el resultado de la consulta  que invocamos a partir de la URL construida en el componente anterior y que es inyectada a este. Más info de este componente aqui.

Create RSS: nos proporciona un mecanismo para poder mostrar el resultado obtenido del componente anterior bien formateado bajo RSS. Más info de este componente aqui.

Pipe Output: expone el resultado de la lógica definida en el mashup. Para más información de estos, asi como del resto de componentes de Yahoo Pipes, acceder aqui.

Una vez diseñado, pasamos a guardarlo y a exponerlo dentro de la plataforma de Yahoo Pipes. Así pues lo que se nos proporcionará en un formulario a partir del cual introduciremos un código postal y la ejecución del mashup nos dará el resultado deseado, además con la posibilidad de obtener el resultado obtenido en formatos abiertos tales como JSON:

Podeis acceder a este mashup y comprobar su funcionamiento, asi como obtener la definición en JSON del ejemplo. De esta forma hemos visto que es posible llevar a cabo la extracción de datos de una fuente de datos que podriamos considerar 'no #opendata'. Inconvenientes de esta solución: fundamentalmente la dependencia que se crea con el contenido HTML del website del que se esta consumiendo la información. Supongamos que la fuente de datos es una base de datos sobre la que se hace una consulta y cuyo resultado se muestra en un gestor de contenidos como es el caso, concretamente OpenCMS para esta web. En el caso de que el contenido HTML se autogenere y/o que cambiemos de gestor de contenidos, aun a pesar de que el modelo de datos permanezca intacto, la extracción podría dejar de funcionar.  Es por esto que lo más recomendable es que nuestras soluciones de #opendata extraigan directamente la información de la fuente de datos y de otros catálogos RISP.


Compárteme en: Eskup Facebook Tuenti Meneame Bitacoras Google Yahoo Windows Live

0 comentarios:

Publicar un comentario