Con el objetivo de habilitar diversos mecanismos de acceso a la información publicada a través de la Interfaz de Interoperabilidad de Contenidos Web (iCMS), además del end-point opensearch que conforma la propia interfaz de iCMS, se han implementado mecanismos de integración con servidores semánticos (en este post nos centraremos en Virtuoso) . Entre otras características, estos sistemas permiten la utilización del lenguaje estándar SPARQL para la consulta de los datos almacenados.
Entre las funcionalidades de iCMS encontramos la gestión de eventos asociados a las colecciones de datos (al iniciar y al modificar las colecciones), permitiendo vincular scripts (en la versión actual de iCMS se da soporte a la inyección de scripts Groovy, aunque en el Roadmap de la solución se encuentra el soporte para otras tecnologías, como pueden ser Python o Ruby) a dichos eventos.
El mecanismo de integración entre iCMS y Virtuoso se apoya en esta funcionalidad, es decir, se trata de un script Groovy que incluye toda la lógica necesaria para conectar con virtuoso, crear los grafos, obtener los recursos/datos (desde los back-ends a través de los drivers iCMS) cuya modificación ha lanzado el evento y finalmente actualizar la información en Virtuoso.
La actualización de los datos en Virtuoso se realiza mediante la ejecución de sentencias INSERT/DELETE de SPARQL a través de los servicios desplegados por Virtuoso.
En la parametrización de las colecciones de datos, cuyo contenido va a ser volcado en Virtuoso, es preciso establecer la configuración del evento que dispara el script Groovy que incluye la lógica de integración con el servidor semántico. Esta configuración sigue el siguiente modelo:
[code]
event {
my_event_script {
path = «/opt/icms/data/scripts/groovy_virtuoso.groovy»
urlSubscription = «http://localhost:8080/icms»
collections = «<nombre_coleccion>»
parameters {
virtuoso_url = «jdbc:virtuoso://localhost:1111»
virtuoso_usr = «icms_virt»
virtuoso_psw = «icms_virt»
virtuoso_graph = «<http://nombre_grafo>»
}
}
}
[/code]
La configuración anterior le indica a iCMS que cuando haya algún cambio en los recursos de la colección definida («nombre_colección» en el ejemplo) se ejecute el script groovy_virtuoso.groovy con los parámetros dados. Dicho script contiene toda la lógica necesaria para rellenar Virtuoso con los nuevos cambios.
En el siguiente gráfico se muestra a alto el proceso de integración entre iCMS y el servidor semántico Virtuoso:
