JavaScript Object Notation for Linked Data es un método basado en JSON para añadir datos estructurados, completando la anotación JSON con elementos de contexto de forma que se puedan entender las relaciones semánticas que le dan sentido.
Plataforma da un soporte inicial sobre sus ontologías, pudiendo recoger o insertar los datos vía API Rest en formato JSON-LD, indicando el contexto deseado. De esta forma, los datos insertados en las ontologías podrán devolverse en formato JSON normal, o con su contexto.
Para ello, es necesario marcar el check que indica que soporta JSON-LD en la creación o edición de la ontología, además de informar su contexto. En este caso el esquema utilizado forma parte del diccionario de Schema.org en el cual se encuentra todo tipo de datos (types) que pueden utilizarse.
Una vez tengamos creada nuestra ontología, pasaremos a crear un API con las operaciones básicas GET y POST. De esta forma, podremos seleccionar desde el swagger generado, o vía Postman por ejemplo, el tipo de dato que enviamos o deseamos recibir.
Si nuestra ontología soporta formato JSON-LD, se podrá insertar datos en dicho formato, al igual que en formato JSON normal, indicándolo siempre en el Request body ("Content-Type: application/ld+json").
En las operaciones de GET, habrá que indicarlo en la respuesta ("accept: application/ld+json").
En el caso en el que la ontología no soporte el formato JSON-LD, el API devolverá un error 406 Not Acceptable.
De esta forma, los datos se devuelven con el formato deseado, indicando el contexto de forma extendida y el tipo de dato usado (@type).
[ { "http://schema.org/_id": [ { "http://schema.org/$oid": [ { "@value": { "chars": "62061c2ae3cdeb27d2212c31", "string": "62061c2ae3cdeb27d2212c31", "valueType": "STRING" } } ] } ], "@type": [ { "chars": "http://schema.org/Person", "string": "http://schema.org/Person", "valueType": "STRING" } ], "http://schema.org/email": [ { "@value": { "chars": "info@example.com", "string": "info@example.com", "valueType": "STRING" } } ], "http://schema.org/image": [ { "@id": { "chars": "janedoe.jpg", "string": "janedoe.jpg", "valueType": "STRING" } } ], "http://schema.org/jobTitle": [ { "@value": { "chars": "Research Assistant", "string": "Research Assistant", "valueType": "STRING" } } ], "http://schema.org/name": [ { "@value": { "chars": "Jane Doe", "string": "Jane Doe", "valueType": "STRING" } } ], "http://schema.org/contextData": [ { "http://schema.org/user": [ { "@value": { "chars": "administrator", "string": "administrator", "valueType": "STRING" } } ], "http://schema.org/timezoneId": [ { "@value": { "chars": "UTC", "string": "UTC", "valueType": "STRING" } } ], "http://schema.org/timestamp": [ { "@value": { "chars": "2022-02-11T08:19:54Z", "string": "2022-02-11T08:19:54Z", "valueType": "STRING" } } ], "http://schema.org/timestampMillis": [ { "@value": { "integral": true, "valueType": "NUMBER" } } ], "http://schema.org/source": [ { "@value": { "chars": "INTERNAL_ROUTER", "string": "INTERNAL_ROUTER", "valueType": "STRING" } } ] } ] } ]