Introducción a las Entidades
Desde la versión 3.1.0-KickOff, en el Control Panel se ha pasado a denominar a las Ontologías como «Entidades». Esto no altera ninguna funcionalidad; simplemente se ha cambiado la nomenclatura para un mejor entendimiento del concepto.
Introducción
La arquitectura de la Plataforma es una arquitectura Data-Centric (centrada en los datos), donde los datos son el activo principal y permanente. En este tipo de arquitecturas el modelo de datos precede a la implementación de cualquier aplicación dada y será válido mucho después de que se reemplacen.
Onesait Platform soporta este tipo de arquitectura a través del concepto de Entidad (previamente denominadas Ontologías), y todas las funcionalidades de la Plataforma se basan en este concepto.
En el caso más simple, se puede comparar una Entidad con una tabla en una base de datos relacional, pero una Entidad puede contener un modelo de dominio completo, lo que requeriría en una base de datos relacional un conjunto de tablas relacionadas.
En este artículo se detallan los motivos por los que es recomendable implementar el modelo de datos utilizando Entidades.
Definición y estructura
En la Plataforma, para la definición de las Entidades se utiliza un esquema en formato JSON-Schema. Este esquema define la estructura de la información que almacenará dicha Entidad, permitiendo validaciones semánticas sobre los datos que se reciban.
Un ejemplo de esquema de definición de una Entidad sería similar a este ejemplo:
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "SensorTemp",
"type": "object",
"required": [
"SensorTemp"
],
"properties": {
"SensorTemp": {
"type": "string",
"$ref": "#/datos"
}
},
"datos": {
"description": "Properties for DataModel SensorTemp",
"type": "object",
"required": [
"measure",
"units",
"timestamp",
"geoposition"
],
"properties": {
"measure": {
"type": "number"
},
"units": {
"type": "string"
},
"timestamp": {
"type": "string",
"format": "date-time"
},
"geoposition": {
"type": "object",
"required": [
"coordinates",
"type"
],
"properties": {
"coordinates": {
"type": "array",
"items": [
{
"type": "number",
"maximum": 180,
"minimum": -180
},
{
"type": "number",
"maximum": 90,
"minimum": -90
}
],
"minItems": 2,
"maxItems": 2
},
"type": {
"type": "string",
"enum": [
"Point"
]
}
},
"additionalProperties": false
}
}
},
"description": "Temperature ontology",
"additionalProperties": true
}
La información que se envíe a la Plataforma utilizando la Entidad deberá cumplir ese esquema de definición.
La unidad de información en la Plataforma se denomina instancia. Una instancia de una Entidad sería el equivalente a un registro en una tabla de base de datos relacional.
Para el ejemplo anterior, una instancia válida de Entidad sería:
{
"SensorTemp": {
"measure": 28.6,
"units": "C",
"timestamp": "2014-01-30T17:14:00Z",
"geoposition": {
"coordinates": [
4,
28.6
],
"type": "Point"
}
}
}
Cualquier instancia que no cumpla semánticamente con el esquema de definición de la Entidad destino será rechazada por la Plataforma, garantizando así la corrección de la información.
Siempre que una instancia se inserta en la Plataforma, se le añade una información de auditoría adicional dentro de una propiedad denominada «ContextData»:
"contextData": {
"deviceTemplate": "clientSensor",
"device": "sensorTemperatura01",
"clientConnection": "53643241-1497-17ea-436e-ba74618f7322 ",
"clientSession": "64376481-4139-48cb-ad6e-dc7bdd8f73ca",
"user": "user_developer",
"timezoneId": "GMT",
"timestamp": "Thu May 31 14:51:31 GMT 2018",
"timestampMillis": 1527778291886
}
Estos datos contextuales incluyen información referida al origen o dispositivo que ha enviado la información, la sesión que se ha utilizado, la zona horaria y el instante en el que se recibió,etc.
Características de las Entidades
Además de su estructura, en las Entidades pueden definirse otra serie de características y propiedades que la definirán. Estas son:
Identificación: el nombre único con el que identificar a la Entidad.
Meta-Información: etiquetas con las que caracterizar la Entidad, que servirán para su filtrado a la hora de hacer búsquedas.
Descripción: texto descriptivo extendido de la Entidad, como su uso, propiedades, características, etc.
Además, contamos con algunas opciones más de caracterización de la Entidad:
Entidad activa: para que la Entidad funcione o se encuentre bloqueada.
Entidad pública: si queremos que la Entidad sea pública, o si la queremos privada.
Permite campos cifrados: si interesa que algunos campos almacenen información sensible y estén cifrados (más información).
Habilita ContextData: si se quiere que la Entidad registre internamente los cambios de escritura y gestión (más información).
Soporta JSON-LD: si interesa que la Entidad pueda trabajar con contexto (más información).
Habilitar el preprocesamiento de clases de datos: opción que permite que la Entidad registre internamente los cambios de escritura y gestión.
En algunos casos, se podrán configurar ciertas opciones avanzadas en la Entidad. Estas opciones pueden ser:
Borrar de la base de datos: esta opción permite el borrado automático de los datos almacenados en la Entidad a partir de un tiempo definido.
Borrar Entidades creadas anteriores a: si se ha habilitado la opción anterior, en este selector se podrá escoger la cantidad de tiempo a partir del cual se irán borrando los datos de la Entidad.
Permite crear un tópico Kafka de ingesta para la Entidad (más información).
Permite crear un tópico Kafka de notificaciones (más información).
Permite crear un tópuco MQTT de ingesta para la Entidad (más información).
Habilita notificaciones al BPM (más información).
Instancia de base de datos: en donde se podrá elegir dónde almacenar la Entidad: MongoDB, Elastic Search, CosmosDB, etc.
Además, cada Entidad tendrá sus propias características y opciones únicas, por lo que recomedamos leer la documentación asociada a cada tipo de Entidad para conocer en detalle todas sus característica.
Si se está empezando a trabajar con las Entidades, recomendamos seguir el siguiente tutorial:
Tipos de Entidades y cómo crearlas
Para facilitar la creación de Entidades, la Plataforma ofrece distintos métodos para registrarlas.
Una vez se ha creado la Entidad en la Plataforma, queda definido el modelo de datos y se puede proceder a implementar funcionalidades sobre la misma.