Category Archives: howto

Useful docs on URIs, httpRange-14, conneg, etc.

Creating proper URIs for information and non-information resources, and designing a system arcquitecture accordingly is a messy business. Some pointers for future reference:

Advertisements

Transforming CSV data to RDF with Grafter

Part of my work is to develop pipelines to transform already existing Open Data (Usually CSVs in some data portal, like CKAN) into RDF and hopefully Linked Data. If I have to do the transformation myself, interactively, I normally use Google Refine with the RDF plugin. However, what I need now is a batch pipeline that I can plug into a bigger Java platform.

Therefore, I’m looking at Grafter. Even though I have never programmed in Clojure (or any other functional language whatsoever!), Grafter’s approach seems very sensible and intuitive. Additionally, I have always wanted to use Tawny-OWL, so probably it will be easier if I learn a bit of Clojure with Grafter first. Coming from Java/Perl/Python, the functional approach felt a bit weird in the beggining, but it actually makes more sense when defining pipelines to process data.

I have gone through the Grafter guide using Leiningen in Ubuntu 14.04. So far so good (I had to install Leiningen manually though, since Ubuntu’s Leiningen package was very outdated). In order to run the Grafter example in Eclipse (Mars), or any other Clojure program, one needs to install first the CounterClockWise plugin. Note that if you want to also use GitHub, like me, there is bug that prevents the project from being properly cloned, when you choose the “New project wizard”: I cloned with the General project wizard, copied the files from another Grafter project, and surprisingly it worked (trying to convert the project to Leiningen/Clojure didn’t work!).

My progress converting data obtained in Gipuzkoa Irekia to RDF can be seen at GitHub. Also, I’m aiming at adding Data Cube SPARQL constraints as Clojure test, here.

 

Tagged , , , , ,

Publicar datos RDF con Amazon EC2 + Virtuoso

Introducción

Para publicar datos en Linked Data necesitamos un servidor web potente con un Triple Store como Virtuoso. A veces nos puede salir mejor utilizar un servicio tipo cloud como Amazon EC2 (por ejemplo meneame lo usa) que tener nuestro propio servidor (de hecho, muchas veces!). En este mini tutorial vamos a publicar un dataset RDF implementando un triple store Virtuoso en una instancia Amazon EC2. Amazon tiene una oferta “free tier” que supongo que será para todo el mundo (puede ser que la tenga por ser usuario premium?); en cualquier caso la instancia que vamos a usar es la que menos prestaciones tiene asi que sera baratísima si no tienes “free tier”. La idea es que con este primer paso luego ya puedes implementar algo más potente, con auto-scale, balanceadores de carga y todo eso.

Crear instancia Amazon EC2

Nos hacemos una cuenta en Amazon Web Services y entramos. Vamos a Services y EC2. Ahi Launch Instance (debajo de create instance). En el menú podriamos elegir una imagen que ya contiene Virtuoso, pero viene con CentOS que es un poco lo peor asi que elegimos Ubuntu Server 64 bits (deberia ser free tier). En el siguiente paso elegimos la instancia t1.micro y le damos a configurar: aquí solo asegurarse de que la instancia tendra una IP publica, “Automatically assign a public IP address to your instances”. En el paso add storage los valores por defecto valen, pero se pueden añadir hasta 30 GB con el free tier, asi que los añadimos (también podemos elegir SSD en vez de magnetico, pero en realidad para lo que vamos hacer aquí da un poco igual todo esto del rendimiento I/O). En tag instance ponemos lo que sea. En security groups hay que añadir las siquientes reglas:

– Una regla para acceder mediante SSH (Yo aqui puse “My computer” por que tengo una IP fija).

– Otra regla “Custom TCP rule”, “port range=8890”, “anywhere” (para que usuarios externos accedan a virtuoso y podamos testear el sistema con consultas SPARQL).

– Otra regla “HTTP anywhere”, por si queremos añadir un servidor Pubby, por ejemplo, para implementar Linked Data mediante negociacion de contenido.

Creamos la instancia y generamos una clave .pem para poder acceder mediante SSH.

Instalar y configurar Virtuoso

Hacemos SSH a nuestra instancia activa y:

– Instalar Virtuoso: sudo apt-get install virtuoso-opensource

– Editar /etc/virtuoso-opensource-6.1 y añadir el path del directorio donde estara el RDF que queremos cargar (nuestra home en la instancia EC2): DirsAllowed = ., /usr/share/virtuoso-opensource-6.1/vad, /home/ubuntu.

– Reiniciar virtuoso: sudo service virtuoso-opensource-6.1 restart.

Cargar RDF en virtuoso

– Como dataset ejemplo, usamos una proteina de UniProt: wget http://www.uniprot.org/uniprot/P08251.rdf.

– Ejecutamos isql con el usuario por defecto dba:isql-vt -U dba

– Añadimos todos los archivos que se encuentren en /home/ubuntu, que terminen en “.rdf”, al grafo http://genomic-resources.eu/uniprot: SQL> ld_dir('/home/ubuntu','*.rdf','http://genomic-resources.eu/uniprot');

– Ejecutar el trabajo propiamente dicho (este proceso es el que tarda si el dataset es grande): SQL> rdf_loader_run ();.

Consultas contra el RDF dataset almacenado en Virtuoso

Si vamos a la IP publica, al SPARQL endpoint (ej. 54.201.244.233:8890/sparql), deberia aparacer un formulario para ejecutar consultas SPARQL. Probamos con:

Pantaila-argazkia 2014-06-20 16:44:06

Deberia dar una larga lista de triples. Happy hacking!

Tagged , , ,