Cómo trabajar con Data Model FIWARE/GSMA en Sofia2

La asociación GSMA (asociación de operadores móviles está trabajando en un IoT Big Data Harmonised Data Model

Que define estas entidades: AgriCrop, AgriGreenHouse, AgriParcel, AgriParcelOperation, AgriParcelRecord, AgriPest, AgriProduct, AgriProductType, AgriSoil, AirQualityObserved, Building, BuildingOperation, BuildingType, Device, DeviceModel, DeviceOperation, EnvironmentObserved, Machine, MachineModel, MachineOperation, PointOfInterest, Road, RoadSegment, Subscriber, SubscriptionService,Vehicle, VehicleFault, VehicleType, WaterQualityObserved, WeatherForecast y WeatherObserved.

Por otro lado en la iniciativa FIWAREse han inspirado en el Data Model GSMA para crear los FIWARE Data Models, donde además se han seleccionado un conjunto de Entidades sobre estas de GSMA:

  • Alarms Events related to risk or warning conditions which require action taking.
  • Parks & Gardens Data models intended to make an efficient, effective and sustainable management of green areas.
  • Environment Enable to monitor air quality and other environmental conditions for a healthier living.
  • Point of Interest Specific point locations that someone may find useful or interesting. For instance, weather stations, touristic landmarks, etc.
  • Civic Issue tracking Data models for civic issue tracking interoperable with the de-facto standard Open311.
  • Street Lighting Modeling street lights and all their controlling equipment towards energy-efficient and effective urban illuminance.
  • Device IoT devices (sensors, actuators, wearables, etc.) with their characteristics and dynamic status.
  • Transportation Transportation data models for smart mobility and efficient management of municipal services.
  • Indicators Key performance indicators intended to measure the success of an organization or of a particular activity in which it engages.
  • Waste Management Enable efficient, recycling friendly, municipal or industrial waste management using containers, litters, etc.
  • Parking Real time and static parking data (on street and off street) interoperable with the EU standard DATEX II.
  • Weather Weather observed, weather forecasted or warnings about potential extreme weather conditions.

Los Data Models GSMA y FIWARE se definen en JSON por lo que su representación como Ontología Sofia2 es inmediata (recomendamos al respecto leer el documento Gobierno de Ontologías o el conjunto de posts al respecto).

En Sofia2 se soportan ya estas entidades vía Plantillas (una plantilla sirve para crear ontologías partiendo de una definición):

A continuación veremos cómo Sofia2 permite trabajar con estas entidades, pongamos el ejemplo de la entidad WeatherObserved (This entity contains a harmonised description of the weather at a particular location and time. This entity is primarily associated with the vertical segments of the environment and agriculture but is applicable to many different applications):

Su aspecto es este:

Manos a la obra!!!

1. Comenzaremos por acceder al Panel de Control de Sofia2. Si estamos en la Plataforma de Experimentación y no tenemos usuario podremos crear un usuario aquí.

Una vez hecho el LOGIN si nuestro rol es USUARIO: deberé solicitar el para poder crear Ontologías.

2. Una vez mi usuario tiene rol COLABORADOR podré crear la Ontología que representa la Entidad WeatherObserved.

En el menú Ontologías>Crear Ontología>crear Ontología mediante JSON

Selecciono un nombre como GSMA_WeatherObserved_Ontology

Voy a la sección de Esquema y

Y selecciono como Plantilla:

Finalmente selecciono Crear

Con esto ya tengo creada mi Ontología conforme el Modelo Data Model GSMA.

3. Lo siguiente que haré será cargar unos datos para poder hacer consultas.

Puedo hacer esto desde el simulador de datos para simular instancias de la ontología, pero también puedo acceder a la gestión CRUD para crear desdeun formulariodatos, desde Ontologías>Gestión CRUD de Instancias:

Selecciono en la tabla:

Si me fijo en el ejemplo que ponía antes: http://fiware-datamodels.readthedocs.io/en/latest/Weather/WeatherObserved/doc/spec/index.html

{ 
"id": "Spain-WeatherObserved-2422-2016-11-30T08:00:00",
"type": "WeatherObserved", 
"address": { "addressLocality": "Valladolid", "addressCountry": "ES" }, 
"atmosfericPressure": 938.9, 
"dataProvider": "TEF", 
"dateObserved": "2016-11-30T07:00:00.00Z", 
"location": { "type": "Point", "coordinates": [ -4.754444444, 41.640833333 ] }, 
"precipitation": 0, 
"pressureTendency": 0.5, 
"relativeHumidity": 1, 
"source": "http://www.aemet.es", 
"stationCode": "2422", 
"stationName": "Valladolid", 
"temperature": 3.3, 
"windDirection": -45, 
"windSpeed": 2 
}

Y lo voy copiando en el formulario:

Sigo:

Al final del formulario pudo ver lo que se va a guardar:

Y finalmente seleccionaré

Si voy al comienzo de la pantalla veré que ya se ha insertado:

4. Una vez cargado este dato ya podré consultarlo desde los mecanismos de Sofia2: a través de los conectores, publicarlo como API, en el Visor Open Data,…

Veamos:

Voy a Herramientas>Consola BDTR y BDH:

Selecciono mi Ontología y Generar Query (o la pongo: select * from GSMA_WeatherObserved_Ontology limit 3 )

Que me devuelve los datos de la instancia insertada (además de los datos de Contexto como usuario, KP, momento de inserción), en este caso podemos ver los datos introducidos:

Esta información ya es accesible a través del SIB de Sofia2, a través de cualquiera de las APIs que ofrece.

5. También puedo publicar esta Ontología como un API RESTFul para acceder a ella en una url de tipo:

http://sofia2.com/sib-api/api/v1/gsma_weatherobserved_ontologyes

Para eso iré a API Manager>APIs> Crear API:

Habilitaré los métodos:

GET:

POST para INSERT

PUT para UPDATE

Y CUSTOM QUERY

En la CUSTOM QUERY quiero poder sacar los datos para una estación, por tanto la consulta es como esta: “select * from GSMA_WeatherObserved_Ontology where stationName=’Valladolid’ “

En el UI debe registrarse así:

Es decir el parámetro debe ir entre { } y con un $delante:

select * from GSMA_WeatherObserved_Ontology where stationName={$stationName}

Tras esto puedo probar mi API desde la opción Mis suscripciones>Test&Doc

(antes debo extraer la API Key desde Mi API Key)

En la ventana de invocación en la parte de Headers pondré mi API Key:

Luego seleccionaré

Y en Query Parameters pondré Valladolid

Al invocarlo veo esto:

Esta misma invocación se puede realizar vía curl con una invocación de este estilo (escapamos el $por %24):

curl -v –H "-X-SOFIA2-APIKey:<my_token>" "http://sofia2.com/sib-api/api/v1/gsma_weatherobserved_ontologyes/getByStationName?%24stationName=Valladolid"

Cómo trabajar con Data Model FIWARE/GSMA en Sofia2

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