Conocimiento automático: Creando aplicaciones sobre Freebase

8029 lecturas

Para quienes no lo conocen, Freebase es una enorme base de datos abierta a todo el mundo, similar a Wikipedia. Lo que lo diferencia de ésta es que la información está mucho más estructurada: eso es bueno pues permite que sea más fácil utilizar la información. Desde hace algunas semanas, Freebase permite crear tus propias aplicaciones basadas en esta tremenda base de datos. Sigue leyendo y te explico cómo funciona.

Las aplicaciones creadas sobre Freebase se hacen utilizando un lenguaje llamado MQL, que es una forma de consultar Freebase basado en la sintaxis de JSON.

JSON

De acuerdo a la definición en su sitio web, JSON es "un formato de intercambio de datos ligero". Esto significa básicamente que, similar a XML, sirve para expresar de manera fácil información que será comunicada. Un ejemplo de JSON sería

{
"nombre": "Alvaro",
"dirección": "Av. siempreviva 123, Springfield",
"webpage": [ "http://manzanamecanica.org", "http://mmecanica.org"],
}

Es decir, se empieza con un "{", luego cada campo tiene un nombre (entre comillas), dos puntos y el valor de ese campo (también entre comillas). Para expresar un arreglo se utilizan los símbolos "[" y "]". Entre cada valor o al final de cada tupla campo/valor sigue con una coma. Finalmente todo se cierra con un "}". Probablemente se me escape algún detalle, pero esto es suficiente para seguir con el tema principal. Más información la pueden encontrar en la página oficial de JSON.

MQL

La idea de MQL es que sea similar en espíritu a SQL (el clásico lenguaje de consulta de las bases de datos) pero en formato JSON. Así, por ejemplo, si quiero saber sobre todos los discos de Pink Floyd, sólo debo escribir:

{
  "album": ["name":null]
  "name": "Pink Floyd",
  "type": "/music/artist",
}

En la primera línea indico que quiero todas las cosas (recursos) que sean catalogados como "album". En particular, quiero sólo los nombres de esos álbumes (por eso el "name":null) dentro de los corchetes. En la segunda línea indico que esos "album" deben estar relacionados con algo llamado "Pink Floyd", mientras que en la tercera línea indico que ese algo llamado "Pink Floyd" debe ser algo que es catalogado como "/music/artist". Para construir la consulta, Freebase provee a los usuarios de una interfaz web muy amigable, donde podemos correr nuestra consulta hasta obtener el resultado deseado.

Para tener una idea de cual es el schema con los que se trabaja en Freebase, recomiendo echarle una mirada a la página oficial de schemas.

Construyendo la aplicación

El título de este post es "Creando aplicaciones...", y no "Creando queries...", por lo que nos falta un paso más: El construir nuestra aplicación. Para esto, existen muchas bibliotecas para diversos lenguajes de programación. Sin embargo, me quiero enfocar por ahora en Acre, la plataforma de hosting de aplicaciones de Freebase: Esta te permite crear tu aplicación y publicarla utilizando los servidores de Freebase, nuevamente con una muy amigable interfaz.

Siguiendo nuestro ejemplo anterior (donde queríamos listar todos los discos de Pink Floyd), simplemente debemos escribir el siguiente código:

<html>
<body>

<!--
    YOUR CODE GOES HERE
-->
  <acre:script>
  var q = {
    "name":  "Pink Floyd",
    "type":  "/music/artist",
    "album": []
  };
 
  var o = acre.freebase.mqlread(q);
</acre:script>
<acre:script>var artist = o.result;</acre:script>
<table>
  <tr><th>album:</th>
    <td>

      <ul acre:if="artist['album'].length != 0">
        <li acre:for="a, album in artist['album']">${album}</li>
      </ul>
      <div acre:else=""><ins>[no element]</ins></div>

    </td>
  </tr>
</table>
   
    <!-- Freebase attribution template -->
    ${acre.require("/freebase/apps/attribution/templates").blanket()}

</body>
</html>

Es importante destacar que casi todo este código es generado automáticamente: lo único que hay que hacer es pegar la consulta en MQL en el lugar donde se indica y voilá, ¡tenemos una aplicación! Además es muy fácil correr las aplicaciones para ver cómo va quedando, junto con la ayuda de una consola y varias herramientas más.

Conclusión

La gente de Freebase ha hecho un trabajo impresionante no sólo al crear la base de datos y estructurarla, sino al dejar a disposición de la gente editores muy amigables para crear muchas pequeñas aplicaciones web. En este artículo sólo hemos visto una pasada muy rápida a todas las opciones disponibles, por lo que si estás interesado en jugar un poco más con esto, sugiero que leas atentamente la documentación.

Por cierto, nuestra aplicación de ejemplo, quedó disponible en http://pf-albums.freebaseapps.com/

¡A jugar!

Imagen: Freebase

Foto de Alvaro

— PhD en Ciencias Cognitivas e Investigador en temas de Open Data, Visualizaciones, Web Semántica, eScience y Web Science. Ingeniero civil en computación. Más información »

1 Comentarios

Wen dato!

No cachaba que existía tal fuente de informaciȯn ofrecida con una wena API! Ahora pensar como aprovecharla por el bien de la humanidad :D

Gracias!