Grupo de Facebook DBpedia en español
Notify Twitter

Figura 1. El SPARQL endpoint de Virtuoso.
El SPARQL endpoint de Virtuoso

Instalación de Virtuoso#

En ese ejemplo se ha usado la versión 6.3 de Virtuoso

1) Descarga Virtuoso Universal Server de OpenLink

(Windows) Por defecto (instalación típica) se instala en C:\Program Files\OpenLink Software\Virtuoso XX. Si seleccionas "instalación custom" puedes elegir el directorio.

(Linux) Elige la versión según la versión de la librería de C que tengas en tu sistema (glibc). Para saber la versión usa el gestor de paquetes y busca glibc. Pulsa el icono para ver un ejemplo en Ubuntu. El instalador es un script que instala en el directorio donde se encuentra el instalador. Ten cuidado para no instalar Virtuoso en el directorio de descargas. En ese directorio se crea la estructura bin, donde se encuentran scripts para arrancar/parar el servidor. También se encuentra la aplicación isql (OJO, hay otra que se llama igual pero es sólo para MySQL).

2) Hay que registrarse para recibir una licencia

3) Por defecto, el servidor escucha por el puerto 8890 por lo que debes probar que está funcionando con http://localhost:8890/index.html

Configurando Virtuoso#

1) Desde la página principal entra en "Conductor"

2) Accede como usuario dba e introduce la contraseña que indicaste en la instalación. Usa tu navegador para ir a http://localhost:8890/sparql. Deberá mostrarte un editor (muy básico) de consultas SPARQL me se muestra en la figura1.

3) En la barra horizontal principal selecciona "RDF". En la barra horizontal secundaria pulsa "Quad Store Upload" (en la versión 6.2 era "RDF Store Upload") Aquí puede seleccionar ficheros de triples que deseas cargar. Si el fichero es muy grande dará error (ver carga de ficheros grandes).

Nota: Los ficheros que cargues se "sumarán" al grafo que indiques en "Named Graph IRI". En nuestro caso la IRI es 'http://es.dbpedia.org'.

4) Tras cargar algún fichero de triples, prueba que está bien mediante una query SPARQL. Hay un editor de SPARQL en la segunda barra horizontal, en "SPARQL".

Usando el SPARQL endpoint#

Apunta tu navegador web a http://localhost:8890. Deberá aparecer un editor (muy sencillo) de consultas SPARQL como el mostrado en la figura 1.

Teclea en el campo "Query text" la consulta SPARQL y pulsa el botón "Run Query" para ejecutarla. Cuidado con los Lee el cuadro de texto titulado "Caracteres españoles" en la parte derecha..

Caracteres españoles

Los caracteres del idioma español (tildes, eñes, etc.) se pueden codificar en "UTF-8 para IRIs".
Para saber las distintas codificaciones mira http://www.utf8-chartable.de

Por ejemplo, la é:
Unicode code point: 00E9
UTF-8: C3A9
HTML: &#xE9
URI: %C3%A9 <-- Esta es la codificación UTF-8 para IRIs

No es un problema de SPARQL sino de la especificación de IRIs (ver http://www.w3.org/TR/rdf-sparql-query/#relIRIs y http://www.ietf.org/rfc/rfc3987.txt)

Ejemplos de consultas SPARQL

Virtuoso como servidor web#

1) En la barra horizontal principal selecciona "Web Application Server"

2) Selecciona "Virtual Domains & Directories"

3) En la línea "Default Web Site" pulsa "New Directory". Se abre una ventana en la que debes seleccionar "file system". Se abre la ventana "HTTP Virtual Directory".

4) En la ventana "HTTP Virtual Directory" hay muchos campos. Sólo hay que rellenar dos:

  • Path: Es la URL que mapeará un directorio físico. E.g.: /testDataDir
  • Physical Path: Es el path (OJO!, relativo al directorio donde esté instalado Virtuoso) de un directorio real. Si no existe, hay que crearlo a mano. E.g.: /datos (Nota Linux: suele ser necesaro usar ln -s para crear links simbólicos). El Physical Path suele ser uno de estos links simbólicos.
  • Default page: por defecto es index.html (OJO!. Tienes que crear ese fichero en el directorio indicado en Physical Path).
5) Comprueba que puedes acceder a la página web

Siguiendo el ejemplo anterior, si apuntas el navegador web a http://localhost:8890/testDataDir deberá mostrate la página index.html que se encuentra en el directorio DIRVIRTUOSO/vsp/datos

Configura el VAD de Virtuoso#

Como se indica en http://wiki.dbpedia.org/Internationalization/Guide hay que seguir estos pasos:

1) Asignar variables

Abre isql e introduce estos valores:

registry_set ('dbp_decode_iri',   'on');                # (or 'off')
registry_set ('dbp_domain',       'http://es.dbpedia.org'); # (the resource namespace)
registry_set ('dbp_graph',        'http://es.dbpedia.org'); # (the graph, usually the same as dbp_domain)
registry_set ('dbp_lang',         'es');                 # (the default language)
registry_set ('dbp_DynamicLocal', 'on');                 # (You have to set DynamicLocal to 1 when in the official domain)
registry_set ('dbp_category',     'Categoria');           # (The wikipedia Translation for Category)
registry_set ('dbp_imprint',      'http://es.dbpedia.org');
registry_set ('dbp_website',      'http://es.dbpedia.org/');
registry_set ('dbp_lhost',        ':80');
registry_set ('dbp_vhost',        'http://es.dbpedia.org');

2) Cargar dbpedia.vad

Para entender qué es VAD, echa un vistazo a Virtuoso VAD docs

Descarga el fichero dbpedia.vad

Desde isql ejecuta

 vad_install ('allowed-dir-path/dbpedia.vad', 0);  #0 stands for reading it from a file
El primer argumento allowed-dir-path es "the file path, which must be in a location that the server process can open, i.e. it is in the DirsAllowed list in the virtuoso.ini file". See offical doc

Consultas SPARQL desde isql#

Cualquier sentencia SPARQL puede ser invocada desde isql anteponiendo a la sentencia el comando sparql, y finalizando la sentencia con ;

Por ejemplo, para la sentencia:

select * from <http://dbpedia.org> where {?s ?p ?o}

el comando isql será:

isql> sparql select * from <http://dbpedia.org> where {?s ?p ?o};


Nota: Virtuoso soporta la especificación SPARQL Update (sentencias INSERT y DELETE). Para usarlo desde el SPARQL Endpoint, el administrador de Virtuoso debe habilitar esta opción mediante Conductor-->System Admin-->User accounts-->Pestaña Users --> Bloque "Account Roles". En la lista "Available" selecciona "SPARQL_SELECT" y pulsa el botón >> para pasarlo a la lista "Selected". No olvides pulsa "Save".

El problema es que así permites que cualquiera que tenga acceso al SPARQL Endpoint pueda invocar sentencias INSERT y DELETE, esto es, crear y borrar triples, desde sólo uno, a todos los almacenados :-(

A través de isql se puede usar INSERT y DELETE sin tener que configurar nada :-)

Encuentra mas Softwares para Manejo de base de datos

Más en Ejemplos de SPARQL Update.