Solución a problema en la integración Gate y Virtuoso

 

Hoy estaba probando de integrar el framework para análisis de lenguaje natural Gate con el repositorio de ontologías Virtuoso. La idea era utilizar LKB Gazetteer, un plugin de Gate que permite generar anotaciones en un texto dado a partir de información proveniente de ontologías. La ventaja de este plugin es que permite gestionar ontologías utilizando el standard de comunicación de Sesame, de forma que todos los repositorios de ontologías compatibles con Sesame funcionarán correctamente con este plugin. Entre ellos, Virtuoso, que es una de las mejores opciones pensando en escalibilidad y rendimiento.

El problema ha aparecido en el momento de configurar el dictionary, que es la carpeta en la que se indica la conexión con el repositorio de ontologías a utilizar y la query a ejecutar.

Gate devolvía el siguiente error:

com.ontotext.kim.client.query.KIMQueryException: Error in repository connection.
	at com.ontotext.kim.util.datastore.PrivateRepositoryFeed.feedTo(PrivateRepositoryFeed.java:105)
	at com.ontotext.kim.model.AliasCacheImpl.loadTrustedMaps(AliasCacheImpl.java:364)
	at com.ontotext.kim.model.AliasCacheImpl.initCache(AliasCacheImpl.java:278)
	at com.ontotext.kim.model.AliasCacheImpl.createInstance(AliasCacheImpl.java:151)
	at com.ontotext.kim.model.AliasCacheImpl.getInstance(AliasCacheImpl.java:107)
	at com.ontotext.kim.gate.KimGazetteer.init(KimGazetteer.java:87)
	at gate.Factory.createResource(Factory.java:385)
	at gate.gui.NewResourceDialog$4.run(NewResourceDialog.java:220)
	at java.lang.Thread.run(Unknown Source)
Caused by: org.openrdf.repository.config.RepositoryConfigException: Unsupported repository type: openrdf:VirtuosoRepository
	at org.openrdf.repository.config.RepositoryImplConfigBase.create(RepositoryImplConfigBase.java:88)
	at org.openrdf.repository.config.RepositoryConfig.parse(RepositoryConfig.java:150)
	at org.openrdf.repository.config.RepositoryConfig.create(RepositoryConfig.java:167)
	at com.ontotext.kim.semanticrepository.UnmanagedRepositoryFactory.createRepository(UnmanagedRepositoryFactory.java:56)
	at com.ontotext.kim.util.datastore.PrivateRepositoryFeed.feedTo(PrivateRepositoryFeed.java:82)
	... 8 more
The loading from Sesame finished
com.ontotext.kim.client.KIMRuntimeException: The loading failed.
	at com.ontotext.kim.model.AliasCacheImpl.loadTrustedMaps(AliasCacheImpl.java:367)
	at com.ontotext.kim.model.AliasCacheImpl.initCache(AliasCacheImpl.java:278)
	at com.ontotext.kim.model.AliasCacheImpl.createInstance(AliasCacheImpl.java:151)
	at com.ontotext.kim.model.AliasCacheImpl.getInstance(AliasCacheImpl.java:107)
	at com.ontotext.kim.gate.KimGazetteer.init(KimGazetteer.java:87)
	at gate.Factory.createResource(Factory.java:385)
	at gate.gui.NewResourceDialog$4.run(NewResourceDialog.java:220)
	at java.lang.Thread.run(Unknown Source)
Caused by: com.ontotext.kim.client.query.KIMQueryException: Error in repository connection.
	at com.ontotext.kim.util.datastore.PrivateRepositoryFeed.feedTo(PrivateRepositoryFeed.java:105)
	at com.ontotext.kim.model.AliasCacheImpl.loadTrustedMaps(AliasCacheImpl.java:364)
	... 7 more
Caused by: org.openrdf.repository.config.RepositoryConfigException: Unsupported repository type: openrdf:VirtuosoRepository
	at org.openrdf.repository.config.RepositoryImplConfigBase.create(RepositoryImplConfigBase.java:88)
	at org.openrdf.repository.config.RepositoryConfig.parse(RepositoryConfig.java:150)
	at org.openrdf.repository.config.RepositoryConfig.create(RepositoryConfig.java:167)
	at com.ontotext.kim.semanticrepository.UnmanagedRepositoryFactory.createRepository(UnmanagedRepositoryFactory.java:56)
	at com.ontotext.kim.util.datastore.PrivateRepositoryFeed.feedTo(PrivateRepositoryFeed.java:82)
	... 8 more

Tal y como indica en la wiki de Virtuoso para instalar el adaptador para Sesame, había añadido los jars necesarios (virt_sesame2.jar y virtjdbc3.jar) para utilizarlo en la carpeta lib del LKB Gazetter.

Gracias a la ayuda del equipo de desarrollo del plugin, he encontrado el error. El problema venía dado porque no tenía en el classpath de Gate los jars necesarios para conectar con el repositorio de Virtuoso. Simplemente había que editar el fichero creole.xml del plugin y añadir estos jars. Así es como queda:

<CREOLE-DIRECTORY>
	<JAR>lib/commons-cli-1.1.jar</JAR>
	<JAR>lib/commons-codec-1.3.jar</JAR>
	<JAR>lib/commons-collections-3.2.1.jar</JAR>
	<JAR>lib/commons-httpclient-3.1.jar</JAR>
	<JAR>lib/kim-api-3.0-RC5.jar</JAR>
	<JAR>lib/kim-util-3.0-RC5.jar</JAR>
	<JAR>lib/slf4j-api-1.5.11.jar</JAR>
	<JAR>lib/slf4j-log4j12-1.5.11.jar</JAR>
	<JAR>lib/trove4j-2.0.2.jar</JAR>
	<JAR>lib/owlim-3.5.jar</JAR>
	<JAR>lib/trree-3.5.jar</JAR>
	<JAR>lib/openrdf-sesame-2.3.3-onejar.jar</JAR>
	<JAR>Gazetteer_LKB.jar</JAR>
	<JAR>lib/virt_sesame2.jar</JAR> 
 <JAR>lib/virtjdbc3.jar</JAR>
<CREOLE>

Con esto ya he podido añadir el plugin a Gate y utilizarlo contra Virtuoso sin más problemas.  Error por no conocer en profundidad el funcionamiento de los plugins de Gate 🙂

Espero que si alguien se encuentra con el mismo problema, esta info le sea de ayuda.

Anuncios
Esta entrada fue publicada en Semantic Web, Uncategorized y etiquetada , , , , . Guarda el enlace permanente.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s