JSON-LD
JavaScript Object Notation for Linked Data
Extension | .jsonld |
---|---|
Type MIME | application/ld+json |
PUID | |
Développé par |
Manu Sporny |
Version initiale |
, |
Type de format | |
Basé sur | |
Norme | |
Site web |
JSON-LD, ou JavaScript Object Notation for Linked Data, est une méthode permettant d'encoder des données structurées (en anglais linked data) en utilisant du JSON. Le but est de fournir un moyen simple aux développeurs de transformer des données existantes en JSON vers du JSON-LD[1]. Cela permet de sérialiser des données de la même manière qu'avec du JSON traditionnel[2]. JSON-LD est une recommandation du World Wide Web Consortium et, par conséquent, est considéré comme un standard[3]. JSON-LD est développé par le JSON for Linking Data Community Group.
Créé par Manu Sporny fin 2008[4], il est depuis le un standard du W3C[5].
Design
[modifier | modifier le code]JSON-LD est designé autour du concept de « contexte » afin de fournir des associations depuis du JSON vers un modèle RDF. Ce contexte permet de lier des propriétés d'objets d'un document JSON vers des concepts dans une ontologie. Afin de faire le lien entre la syntaxe JSON-LD vers RDF, JSON-LD permet de convertir des valeurs en un type spécifié ou d'être étiqueté avec une langue. Un contexte peut être directement intégré dans un document JSON-LD ou placé dans un fichier séparé et référencé à partir de différents documents (à partir de documents JSON traditionnels via un lien d'en-tête HTTP).
Exemple
[modifier | modifier le code]{
"@context": {
"name": "http://xmlns.com/foaf/0.1/name",
"homepage": {
"@id": "http://xmlns.com/foaf/0.1/workplaceHomepage",
"@type": "@id"
},
"Person": "http://xmlns.com/foaf/0.1/Person"
},
"@id": "http://me.example.com",
"@type": "Person",
"name": "John Smith",
"homepage": "http://www.example.com/"
}
L'exemple ci-dessus décrit une personne basée sur l'ontologie RDF FOAF. Premièrement, les deux propriétés JSON name
et homepage
et le type Person
sont mappés aux concepts du vocabulaire FOAF. Dans ce context, la valeur de la propriété homepage
est spécifiée comme étant de type @id
, c'est-à-dire qu'elle est spécifiée comme IRI dans la définition du contexte. Basé sur le modèle RDF, cela permet à la personne décrite dans le document d'être identifiée sans ambiguïté par un IRI. L'utilisation d'IRI résolvables permet aux documents RDF contenant plus d'informations d'être transcludés, ce qui permet aux clients de découvrir de nouvelles données simplement en suivant ces liens.
En ayant annoté sémantiquement toutes les données comme dans l'exemple, un parseur RDF peut identifier que le document contient des informations sur une personne (@type
) et si le parseur comprend le vocabulaire FOAF, il peut déterminer quelles propriétés spécifient le nom de la personne et page d'accueil.
Cas d'utilisation
[modifier | modifier le code]JSON-LD est utilisé par Google pour son Knowledge Graph[6].
Implémentations
[modifier | modifier le code]Des bibliothèques pour JSON-LD existent pour ces langages de programmation: Javascript (jsonld.js), Python (PyLD, RDFLib-jsonld), PHP (php-json-ld, JsonLD), Ruby (JSON-LD for RDF.rb), Java (JSONLD-JAVA), C# (json-ld.net), Go (JSON-goLD).
Notes et références
[modifier | modifier le code]- « JSON-LD Syntax 1.0 », (consulté le )
- « On Using JSON-LD to Create Evolvable RESTful Services », M. Lanthaler and C. Gütl in Proceedings of the 3rd International Workshop on RESTful Design (WS-REST 2012) at WWW2012.
- « What does "Web standard" mean? What is a "Recommendation"? »
- « The Origins of JSON-LD »,
- « A JSON-based Serialization for Linked Data »,
- (en) « Method Entities in Search », sur Google Developers (consulté le )
Voir aussi
[modifier | modifier le code]Articles connexes
[modifier | modifier le code]- JSON : un format de données textuelles dérivé de la notation des objets du langage JavaScript ;
- BSON (Binary JSON) : un format étendant les possibilités du JSON (données temporelles, binaires, etc.), notamment utilisé par MongoDB ;
- TopoJSON : un format de stockage des données topologiques ;
- GeoJSON : un format de stockage des données géographiques ;
- YAML : un autre langage de sérialisation de données.