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</ul>

  • 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');</ul>

  • 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!