¿Qué es SOFIA2?

SOFIA (SMART OBJECTS FOR INTELLIGENT APPLICATIONS) es un proyecto I+D Artemis de tres años (finalizado en marzo de 2012) en el que participaron 19 partners de cuatro países de la UE incluyendo Indra, Nokia, Philips, Fiat y Acciona. Ver más

SOFIA puede definirse como: un middleware que permite la interoperabilidad de múltiples sistemas y dispositivos ofreciendo una plataforma semántica interoperable que permite poner información del mundo real a disposición de aplicaciones inteligentes (Internet of Things) con un enfoque open source, multilenguaje y agnóstico de las comunicaciones.

Los conceptos básicos de SOFIA son:

Smart Space

o representa el entorno virtual donde diferentes aplicaciones interoperan para ofrecer una funcionalidad compleja.

o Los Smart Spaces pueden comunicarse entre ellos estableciendo relaciones de confianza.

SIB (Semantic Information Broker)

o Es el núcleo de la Plataforma: recibe, procesa y almacena toda la información de las aplicaciones conectadas la plataforma SOFIA, actuando de bróker de información para permitir la interoperabilidad entre aplicaciones.

o En él se reflejan todos los conceptos existentes en el dominio (reflejados en las ontologías) y su estado actual (instancias particulares de ontologías).

KP (Knowledge Processor)

o Es cada una de las aplicaciones que interopera a través del SIB en el espacio.

o Cada aplicación trabaja con instancias de los conceptos relevantes del dominio (ontología) para la que están diseñada

SSAP (Smart Space Access Protocol)

o Es el lenguaje de mensajería estándar para comunicar entre los SIBs y los KPs.

o Existen dos implementaciones: SSAP-XML: formato XML (mayor ancho de banda) y SSAP-JSON, pensado para comunicaciones con dispositivos móviles, navegadores,…

El lenguaje soporta mensajes para:

o Autenticación de un KP a un SIB

o Conexión/desconexión a un SIB

o Inserción/actualización/borrado de información en un SIB

o Recuperación de Información de un SIB

o Suscripción/baja suscripción ante ciertos eventos o reglas

o Notificación cambios desde un SIB a suscriptores

Ontologías

o Representan el modelo de dominio con el que se trabaja en el Sistema.

Al acabar el proyecto marco Indra apuesta por reaprovechar el conocimiento adquirido durante el proyecto Artemis y usar SOFIA como Infraestructura para el desarrollo de una Plataforma a la que dota de estas capacidades:

Visión Enterprise de SOFIA integrando en sus capacidades: aplicable a proyectos

· Interfaces Big Data (Hadoop) para almacenamiento y datawarehouse.

· Capacidades razonamiento temporal.

· Capacidades integración con Backends.

· Capacidades almacenamiento y consultas geográficas.

· Inclusión de mecanismos de seguridad plugeables.

Multiplataforma: Interfaces REST, Web Service,…

· Interfaces WebServices y REST: smartphone, dispositivos,…

Simplificación de la Plataforma

· Ampliación SSAP con protocolo JSON: ligero y apropiado para dispositivos.

· Simplificación desarrollo ontologías y lenguaje consultas, se propone la definición de ontologías en JSON (son mucho menos verbosas y sencillas de crear que las ontologías tradicionales RDF):

· Consola Web de administración para la gestión de todos los elementos de la Plataforma: ontologías, usuarios, reglas,…

Escalabilidad Horizontal:

· Añadiendo elementos que escalan horizontalmente a todos los niveles (DataGrids, Almacenamiento, Procesamiento,…)

Personalizable y adaptable: a través de plugins

dando lugar a lo que se denomina SOFIA2:

A nivel de funcionalidad Funcionalmente los módulos que componen SOFIA2 son:

En breve ampliaremos la información sobre la Plataforma SOFIA2, dando más detalle sobre su licencia, sus componentes, su despliegue,…incluso como mapea con la Plataforma FI-WARE (en esencia SOFIA2 podría verse como un bundle de GEs FI-WARE dentro del ámbito Data/Context Management System.

Ejecutando una aplicación Web como un JAR standalone

En el Blog ya hemos tratado el tema de desplegar una aplicación Web como un JAR:

Desde este referido a Tomcat 7: https://unpocodejava.wordpress.com/2011/02/13/tomcat-7-embebido/

A este que explica cómo usar Jetty: https://unpocodejava.wordpress.com/2012/07/06/un-poco-de-jetty-un-servidor-web-ligero-ligero/

A este último que se refiere a Spring Boot y su capacidad para ejecutarse sobre un contenedor embebido: https://unpocodejava.wordpress.com/2013/09/05/un-poco-de-spring-boot/

En este caso nos referimos a una entrada de que explica cómo configurar Maven para lanzar nuestra aplicación Web como un JAR con Tomcat 7: