Workshop sobre la Plataforma. Parte 1: Conceptos previos y Ontologías

Header Onesait Platform Workshop

Esta es la primera parte de un Worshop sobre la Plataforma que puedes realizar en nuestra instancia gratuita y de libre acceso de CloudLab. A lo largo de este Workshop cubriremos los siguientes aspectos:

  • Modelado de dos ontologías: modelaremos las ontologías de este caso practico, una utilizando como base un «Datamodel GSMA» y otra creando la estructura de datos desde cero.
  • Ingesta desde un portal Open Data utilizando el Flow Engine: definiremos dos flujos de información que recuperarán información desde el Open Data de la ciudad de Barcelona y almacenaremos dicha información en las ontologías anteriormente definidas.
  • Creación de un visor GIS: una de las ontologías que hemos modelado almacenará información georreferenciada. Definiremos un visor GIS en la Plataforma para mostrar dicha información sobre un mapa.
  • Creación de un Dashboard: realizaremos un sencillo Dashboard, que estructurará visualmente la información almacenada en la plataforma proveniente del portal Open Data.
  • Exposición en un API REST: utilizaremos el API Manager para exponer una operación con la información de una de las ontologías.

El ejemplo consistirá, como decimos, en una carga de datos desde el portal Open Data de la ciudad de Barcelona. En concreto se elegirán dos recursos del dataset del servicio de alquiler de bicicletas. Estos recursos son:

  • El inventario de estaciones de alquiler.
  • El estado de cada estación, que se refresca periódicamente.

Dentro del diagrama de componentes de la Plataforma, en la siguiente imagen podemos ver marcados los componentes con los que vamos a trabajar:

  1. Control Panel: es la interfaz web con la que actuaremos para trabajar con la Plataforma.
  2. Flow Engine: motor de flujos que hará la ingesta de los datos desde el servicio Open Data del ayuntamiento de Barcelona. En el ejemplo, se definirán dos flujos: uno para consultar y crear el inventario de estaciones en la plataforma y otro para consultar y actualizar periódicamente el estado de las estaciones.
  3. Semantic Broker: proporciona el punto de entrada de la información en la Plataforma. Verifica los permisos de acceso a la información y que esta es correcta, de acuerdo con el esquema definido en la ontología y si es así la pasa al módulo de almacenamiento. En nuestro caso, el Semantic Broker proporciona al Flow Engine de forma transparente, el punto donde tiene que volcar la información consultada en el portal Open Data, y se encarga de validarla con el esquema definido en las ontologías.
  4. Semantic Broker: proporciona el punto de entrada de la información en la Plataforma. Verifica los permisos de acceso a la información y que esta es correcta, de acuerdo con el esquema definido en la ontología y si es así la pasa al módulo de almacenamiento. En nuestro caso, el Semantic Broker proporciona al Flow Engine de forma transparente, el punto donde tiene que volcar la información consultada en el portal Open Data, y se encarga de validarla con el esquema definido en las ontologías.
  5. Multimodel Persistence: proporciona la infraestrucutura física (bases de datos) para el almacenamiento de la información, su consulta y mantenimiento. En el ejemplo, este módulo proporciona la base de datos donde se almacena la información de inventario y estado de estaciones de bicicletas, así como el motor de consultas.
  6. Geo Services: facilita la visualización GIS de la información almacenada en plataforma y que dispone de un componente geográfico. En nuestro ejemplo, el visor GIS permitirá crear un visor HTML5 y JavaScript que visualice la georreferenciación de las estaciones de la ontología de inventario.
  7. Dashboard Engine: permite crear y visualizar de forma gráfica, mediante componentes web HTML5, la información almacenada en la Plataforma. En el ejemplo crearemos un Dashboard que muestre un visor GIS con el inventario de bicicletas georreferenciadas, el estado de todas las estaciones, así como un filtro que indique la comparativa entre bicicletas eléctricas y mecánicas disponibles en cada estación de alquiler.
  8. API Manager: facilita la integración con otros sistemas, permitiendo que la información almacenada en la plataforma pueda ser explotada por otros sistemas, de una forma estándar y controlada mediante un API REST. En el ejemplo crearemos un API REST con una operación que permita conocer el listado de estaciones cuyas bicicletas disponibles estén por debajo de un umbral indicado por un parámetro en el API.
Módulos usados de Onesait Platform.

Modelado de Ontologías

El modelado de una ontología es inherente a la información que esta tiene que almacenar. Por lo que para crear las ontologías consultaremos primero la información devuelta por el servicio Open Data de Bicing.

Portal Open Data.

Concretamente, utilizaremos estos dos recursos:

  • Inventario: que devuelve el inventario de las estaciones en el siguiente formato:
{
   "station_id": 1,
   "name": "GRAN VIA CORTS CATALANES, 760",
   "physical_configuration": "ELECTRICBIKESTATION",
   "lat": 41.3979779,
   "lon": 2.1801069,
   "altitude": 16.0,
   "address": "GRAN VIA CORTS CATALANES, 760",
   "post_code": "08013",
   "capacity": 46,
   "nearby_distance": 1000.0
}
  • Estado: que periódicamente se actualiza, devolviendo el estado de cada estación en el siguiente formato:
{
	"station_id": 1,
	"num_bikes_available": 11,
	"num_bikes_available_types": {
		"mechanical": 11,
		"ebike": 0
	},
	"num_docks_available": 34,
	"is_installed": 1,
	"is_renting": 1,
	"is_returning": 1,
	"last_reported": 1593426290,
	"is_charging_station": true,
	"status": "IN_SERVICE"
}

De este modo, moderaremos dos ontologías:

BicingBCN_Inventory: con el inventario de estaciones. Para crear esta ontología utilizaremos una plantilla GSMA que ya define un estándar para este tipo de información y que mediante transformación previa durante la ingesta, es compatible con la devuelta por el servicio Open Data. Podemos encontrar información sobre este datamodel en este enlace.

Para crear la ontologia, una vez registrados en la Plataforma seguiremos los siguientes pasos:

  • Elegir la opción de Menú: Development > My Ontologies y a continuación el botón «Create».
Menú.
  • Seleccionar la opción «Creation Step by Step».
  • Crear la ontología indicando: nombre, descripción, meta-información, y seleccionar el Template del datamodel «GSMA-Bikestation».
  • Pulsar en «Update Schema» para generar el esquema JSON de la ontología.
  • Finalmente, pulsar en «New».

BicingBCN_Status: ontología con el estado (bicicletas disponibles) de cada una de las estaciones. En este caso no utilizaremos una plantilla de ontología, sino que la crearemos propiedad a propiedad. Las propiedades que tendrá la ontología se basan en las devueltas por el servicio Open Data, que son:

  • station_id
  • numBikesAvailable
  • numBikesMechanical
  • numBikesElectric
  • status

El proceso para crear la ontología BicingBCN_Status es el mismo que para BicingBCN_Inventory, salvo por la plantilla, que en este caso será vacía (plantilla General > Empty Base) y se añadirán las propiedades de forma manual mediante el botón «Add New Property»:

De este modo añadimos una a una las propiedades indicadas anteriormente, como se puede ver en la siguiente imagen:

Finalizamos la creación de la ontología generando el esquema pulsando «Update Schema» y finalmente el botón «New».

Ten en cuenta que este Workshop habrá sido realizado por diferentes usuarios de la Plataforma, y que una de las restricciones que existen a la hora de crear Ontologías es que no pueden existir dos Ontologías con el mismo nombre.

Por ello, lo recomendable sería modificar el nombre de las Ontologías, por ejemplo añadiendo el nombre de tu usuario al final: BicingBCN_Status_rbarrio.

Con esto termina esta primera parte del Workshop, y próximamente seguiremos con la siguiente parte: Ingesta de datos.

Esperamos que lo hayas encontrado interesante y no dudes en dejarnos un comentario con tus impresiones o dudas.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *