Adrianistán

El blog de Adrián Arroyo


API de Adrianistán

- Adrián Arroyo Calle

Con unos días de diferencia respecto a la publicación del nuevo blog, ha llegado una característica muy interesante, la API del blog.

Se trata de una API semántica, usando el lenguaje de consulta SPARQL, el cual es una recomendación de W3C. La API solo permite hacer consultas. Aunque teóricamente en SPARQL también se pueden modificar datos, no está activado por motivos evidentes. La API es de acceso público y cualquiera puede usarla, además al ser SPARQL podéis combinar las consultas con bases de datos de otros servidores. La API expone una ontología basada en Schema.org. En esa página encontraréis los nombres de los campos, su formato, etc

En este corto post voy a demostrar como hacer uso de esta funcionalidad. En este artículo no pretendo explicar SPARQL, aunque si veo interés puede ser un futuro tutorial.

Una petición simple

Para hacer una petición, podemos usar cURL o cualquier programa similar para lanzar una petición a https://blog.adrianistan.eu/api. Hay tres requisitos:

  • la petición debe ser POST
  • la petición debe declarar su Content-Type como application/sparql-query (tal y como dicta el estándar W3C)
  • en el cuerpo debe estar la consulta SPARQL en texto plano

Veamos un ejemplo sencillo usando cURL


curl -X POST https://blog.adrianistan.eu/api -d "SELECT ?id WHERE { ?id ?b ?c.} LIMIT 5" --header "Content-Type: application/sparql-query"

El resultado es el siguiente:

El resultado está en formato JSON. Actualmente no es configurable el formato de salida.

Una petición más compleja

Esta primera petición no aportaba gran cosa, simplemente devolvía resultados. Ahora vamos a hacer una query seria.

La query devolverá las URL de la gente que comenta en el blog:


PREFIX schema: <http://schema.org/>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>

SELECT DISTINCT ?url 
WHERE {
    ?comment rdf:type schema:Comment.
    ?comment schema:author ?author.
    ?author schema:url ?url.
    FILTER(!regex(?url,"adrianistan.eu","i")).
}

Y si enviamos la query a la API, nos responde con las URL de vuestros comentarios:

Como véis, la API es bastante potente y aunque su uso vaya a ser anecdótico, quería tener una API de consulta en condiciones.

 

Comentarios

Swicher
Solo por curiosidad, ¿sabes si se puede usar SPARQL con una base de datos No SQL (como MongoDB o RethinkDB)? Tengo un proyecto en mente y creo que esto me podría resultar útil.
Hola @Swicher, la respuesta es sí y no. Sí se puede usar en bases de datos NoSQL, pero ni MongoDB ni RethinkDB son compatibles. Tienes que usar Virtuoso, Neo4j, Apache Jena o la última que acaba de salir, Amazon Neptune. Saludos y suerte con el proyecto!
Swicher
Gracias por el dato, lo tendré en cuenta si en algún momento me pongo con ello. Se que es algo off topic pero pensaba contactarte por que no estaba seguro de si habías recibido mi comentario, por lo que pienso que seria útil si al usuario se le mostrase alguna confirmación después de enviarlo (y de ser posible su mismo comentario junto con la leyenda de "pendiente de moderación" como en Wordpress).
Gracias por el comentario. Hoy en un rato libre he implementado esa funcionalidad, creo que mejora mucho la experiencia de usuario. Saludos!

Añadir comentario

Todos los comentarios están sujetos a moderación