Consumiendo #opendata y generando valor

jueves, 13 de enero de 2011
Como se comento con anterioridad, la verdadera riqueza de introducir soluciones #opendata dentro de una organización consiste en la posibilidad de que los datos que se liberan pueden ser no solo consultados por los ciudadanos a través de la plataforma sobre la que se exponen, sino también consumidos desde otras plataformas o sistemas y pueden emplearse para generar valor añadido a la información que se expone desde el origen de los mismos.

En este caso vamos a ver como, a partir de los datos que hemos extraido y expuesto, desarrollar una solución de consumo de dichos datos. Para ello me he permitido reconfigurar la extracción de los datos que tenia previamente y he añadido una nueva consulta para obtener al conjunto de usuarios de yourtask (nuestro pequeño cajón desastre para cacharreo) que han informado sus datos de contacto. Concretamente:

1
2
3
4
5
6
7
$triplify['queries']=array(
 'users'=>array("SELECT p.id AS id, p.usuario AS 'foaf:name',
  CONCAT(m.direccion,' ',m.codigopostal,' ', m.localidad)
  as 'foaf:based_near' FROM usuarios p
  INNER JOIN miscelanea m ON (p.id=m.idusuario)",
  "SELECT u.id AS id, u.usuario AS 'foaf:name' FROM usuarios u",),
 );

Una vez hemos configurado esta extracción y comprobamos que efectivamente se esta exponiendo de forma correcta, pasamos a definir una pequeña aplicación que consume estos datos y genere valor añadido a los mismos. Concrétamente a modo de ejemplo supongamos que somos un proveedor que tenemos que realizar una ronda de visitas a nuestros clientes, y que nuestros clientes han publicado en su plataforma #opendata sus datos de contacto donde se incluye su dirección. Dada la ubicación de uno de mis clientes necesito una aplicación web que pueda consumir por ejemplo en mi dispositivo móvil que me proporcione una ruta a través de Google Maps para ir a ver a mi siguiente cliente. Vamos a suponer que la identificación de ambos clientes es un parametro que se proporciona a traves de la URL de acceso al servicio.

Planteado este supuesto, y suponiendo que la plataforma #opendata de mi cliente es yourtask, hemos decidido consumir los datos expuestos en formato JSON, de tal forma que hemos desarrollado la siguiente aplicación en PHP:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?php
// Punto de acceso a los datos expuestos en JSON
$url = "http://yourtask.webcindario.com/yourtask/opendata/triplify/?t-output=json";

// Accedemos al contenido del fichero JSON con los datos
$file = fopen($url, "r");
$text = "";
while ($t = fgets($file, 1024)){
$text .= $t;
}

// Procesamos el contenido
$finaltext1 = str_replace('http:\/\/yourtask.webcindario.com\/yourtask\/opendata\/triplify\/users\/','users',$text);
$finaltext2 = str_replace('http:\/\/xmlns.com\/foaf\/0.1\/name','name',$finaltext1);
$finaltext3 = str_replace('http:\/\/xmlns.com\/foaf\/0.1\/based_near','based_near',$finaltext2);

// Decodificamos el fichero JSON
$json = json_decode($finaltext3);

// Comprobamos que los parametros de URL se han introducido
if(isset($_GET['idorigen']) && isset($_GET['iddestino'])){

// Obtenemos la direccion origen y destino
$origen = $json->$_GET['idorigen']->based_near->value;
$destino = $json->$_GET['iddestino']->based_near->value;

// Redireccion a Google Maps con los parametros deseados
echo "<body onload=\"location.href= 'http://maps.google.es/maps?f=d&source=s_d&saddr=".$origen."&daddr=".$destino."'\"></body>";

}else{
echo 'Error! no se han proporcionado origen y/o destino';
exit;
}
?>

Como podemos observar, hemos accedido al punto de acceso de la información que queremos consumir a traves de la URL semantificada de la plataforma #opendata, he solicitado que la quiero consumir en formato JSON y he pasado a procesarlo a traves de las funciones JSON de PHP. Tras acceder al servicio vemos que el resultado es el deseado:


Podéis acceder a una demo de este servicio y comprobar que efectivamente los datos de origen y destino son correctos a traves de la siguiente consulta SPARQL

Como vemos, esto es solo un ejemplo de juguete, donde hemos podido ver como la semantificación de contenidos y apertura de los mismos posibilita el desarrollo de soluciones de terceros que generan valor añadido a los datos que se publican. Para ver más aplicaciones os recomiendo daros una vuelta por Desafio AbreDatos . Esta iniciativa fue celebrada en Abril del pasado año 2010 donde durante dos días se celebro un concurso de desarrollo de soluciones de consumo de datos públicos, algunas de ellas muy interesantes como infocarretera, para conocer el estado de las carreteras del Pais Vasco, o LosPresusDe, para ver la como se ha repartido la partida presupuestaria en un determinado municipio, o Sena2Info, para conocer un ranking de intervenciones en el senado. El listado completo de proyectos aqui.


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

0 comentarios:

Publicar un comentario