Relaciones de Entidades: Vinculando Entidades
A partir de la versión 3.1.0 en el Control Panel se ha pasado a denominar Entidades a las Ontologías. Esto no altera ninguna funcionalidad, simplemente se ha cambiado la nomenclatura para un mejor entendimiento del concepto.
Ya es posible establecer relaciones entre ontologías a través de sus atributos o propiedades. Este tutorial te guiará explicando cómo lograrlo, y también contando las características que implica esta funcionalidad.
Creación de los vínculos/referencias
Las relaciones de ontologías se definen a nivel de JSON Schema, por lo que hay dos maneras de hacerlas:
Desde el asistente de creación
Ve al asistente de creación de Ontología en el menú Desarrollo→Gestión de Ontologías→Nuevo→Creación Paso a Paso.
En este caso, vamos a crear una Ontología que represente las ventas de diferentes empresas en todo el mundo, por lo que esta ontología tendrá las siguientes propiedades:
La propiedad País se expresará como se indica en la norma ISO 3166-1 alfa-3, ya que es la norma que estamos utilizando dentro de la plataforma para varias aplicaciones. Debido a esto, ya tenemos una ontología que modela esta ISO 3166-1, así que vamos a vincular ambas propiedades Sales.country, con ISO3166_1.alpha3.
Haz clic en 'Linked Data', debajo de la tabla de propiedades, y esto hará que aparezca una ventana para añadir/eliminar relaciones entre las ontologías y sus propiedades.
Para hacer la que buscamos, selecciona los siguientes valores:
La propiedad origen (source) es country (país), y la propiedad relacionada (target) alpha3 es de la ontología ISO3166_1.
Nota: Sólo las propiedades del mismo tipo (string, número, entero, objeto...) pueden ser vinculadas.
Nota: La validación es opcional. Si se establece la validación en Verdadero, eso significa que cualquier dato relacionado con esta ontología (Ventas) ingerido por la plataforma pasará por un proceso de validación, donde la plataforma sólo guardará los datos si el código en 'país' existe en la base de datos ISO3166_1.alpha_3. El valor por defecto es Falso.
Una vez seleccionado todo esto, haz clic en Añadir referencia.
Ahora que se hace la referencia, puede cerrar la ventana y hacer clic en Actualizar esquema.
Como puedes ver en el esquema generado, ahora hay un nodo nuevo llamado _references. Este nodo llevará la información necesaria para que la plataforma identifique y opere esta relación de propiedades.
Ahora puedes terminar el proceso de creación haciendo clic en Crear.
Editando un JSON Schema
También puedes hacer referencias programáticas editando el JSON Schema.
Para ello, tienes que crear el nodo '_referencias' desde el nodo raíz. Después, define 'self', 'target' y 'validate'.
'self' debe ser el path absoluto al atributo de la ontología fuente. Ej: El path de Sales.country es datos.properties.country.
'target' tiene la siguiente estructura:
URL to Ontology Schema#Path to property
URL to Ontology Schema: esto es siempre 'ontologies/schema/Ontology
#: Separador de propiedades de ontología.
Path to property: como en 'self', el path absoluto a la propiedad.
'validar' establécelo como verdadero o falso; recomendamos falso.
Nota: Este método puede ser útil para vincular propiedades incrustadas en objetos, por ejemplo, vincular una propiedad (dni, String), con una propiedad (dni, String) dentro de otra propiedad (persona, objeto) : o1.dni → o2.person.dni
Representación gráfica de las ontologías vinculadas
Ahora que has hecho la relación, puedes ir a /controlpanel/main para verla.
Como puedes ver en el gráfico, ambas ontologías, Sales e ISO3166_1 están vinculadas. Si haces clic en la ontología padre (Sales), puedes ver la relación en la descripción.
Esta descripción de la relación es legible. Los atributos se escriben de forma sencilla, evitando el uso de paths de propiedad (esto es sólo para definirlos en el Schema).
Usando QueryTool con INNER JOINs autogenerados
Si vas al servicio de QueryTool en la herramienta Herramientas→Herramienta Consultas y seleccionas una Ontología que ha definido cualquier relación con otra, verás una nueva opción disponible en el servicio: el panel JOIN. Este panel se utiliza para montar automáticamente los INNER JOINS de SQL con las ontologías vinculadas.
Si haces clic en +, aparecerá una nueva ventana para seleccionar el atributo que quieres consultar en la sentencia JOIN.
Una vez seleccionada la propiedad fuente, puedes elegir la propiedad objetivo en Ontología→propiedad disponible para el JOIN.
Haz clic en OK y se creará la consulta. Después podrás ejecutarla para ver los resultados (suponiendo que ya haya datos en la base de datos):
Como puedes ver en los resultados, ambas propiedades, country y alpha3 tienen los mismos valores (ESP).
NOTA: Este ejemplo se realizó con dos ontologías con MongoDB como fuente de datos, pero funcionará igual para los almacenes de ontologías en ElasticSearch.
NOTA: También pueden vincularse ontologías con diferentes fuentes de datos. Todo funcionará excepto los JOINs, pero no es posible hacer JOINs entre ontologías con diferentes fuentes de datos ya que esto aún no está implementado en la plataforma.