RDF y sus formatos

Dentro de la Web Semántica, existen muchas formas de «serializar» la información que está expresada en RDF y gracias al Jena esta es una tarea bastante sencilla, usando ResultSetFormater (para consultas ASK y SELECT) y el método write de la clase Model (para CONSTRUCT y DESCRIBE).

Algunas veces me he encontrado con la necesidad de trabajar con los tipos mime de estos formatos, es por eso que elaboro esta tabla que muestra el formato rdf y sus respectivos tipos mime, y alguna información adicional.

Formato Tipo MIME Jena writer Extensiones
Turtle (descripción) text/turtle TURTLE, TTL, Turtle .ttl
N-Triple (descripción) application/n-triples N-TRIPLES, N-TRIPLE .nt
RDF/XML (descripción) application/rdf+xml RDF/XML .rdf
N3 (descripción) text/n3 N3 .n3
JSON-LD (descripción) application/ld+json JSON-LD .jsonld
JSON (descripción) application/json
  1.  RDF/JSON *
  2. Serializing SPARQL Query Results in JSON **
.json

* RDF/JSON nos permite obtener resultados así: http://dbpedia.org/data/Ecuador.json

** Este formato es un estándar definido por la W3C y que es diferente a RDF/JSON y que se obtiene cuando se hace consultas SELECT SPARQL y se fija el formato en JSON.

 

Problemas con Jena y Google App Engine

A los tiempos un post.

Ahora no presento soluciones sino un problema.

Estamos desarrollando un proyecto en el cual trabajamos con Jena (para hacer unas consultas a una ontología). La aplicación es Web y estamos trabajando con GWT 2 (como la han mejorado a la esta herramienta, al fin pude hacer debbug desde la Mac!) la GUI full Ajax y RPC sin problemas. Necesitamos subirla a un servidor público y se me ocurrió subirla al Google App Engine, desde un principio tuve dudas relacionadas sobre las restricciones que impone Google (número de archivos y clases restringidas) y las dudas se convirtieron en problemas.

El problema se da en el método hasNext() de la clase ResultSet para versión 2.5.7 del Jena al parecer deriva de algunas clases no permitidas. Cambié los .jar del Jena a la versión 2.6.2 y el problema se dio en el método create(String) de la clase QueryFactory.

He encontrado los siguientes links que mencionan el algo el problema:

Aquí se detallan los Frameworks y APIs  soportados parcial, total o definitivamente por Google App Engine

Mientras que en éste link se habla sobre un problema que se presenta.

Finalmente aquí se presenta una solución (aunque no estoy seguro que sea para mi problema) trataré de implementar lo que se recomienda.

Por ahora el problema está sin solución, si alguien ha logrado solucionar o tienes más detalles del problema y quiere compartir sus ideas o soluciones, les pido su ayuda.