Construction des données JSON-LD
Introduction
Le format JSON-LD est un format de données structurées basé sur le format JSON. Il permet de décrire des données de manière structurée et de les rendre plus facilement interprétables par les machines. Il est notamment utilisé pour décrire des données sémantiques sur le web.
Syntaxe
La syntaxe JSON-LD est basée sur le format JSON. Elle permet de décrire des données sous forme de graphes.
Un document JSON-LD est un objet JSON qui contient un champ @context qui définit le contexte du document. Le contexte permet de définir des abréviations pour les termes utilisés dans le document.
Voici un exemple de document JSON-LD :
{
"@context": "https://schema.org",
"@graph": [
{
"@type":"WebSite",
"url":"http://www.ksup7.localhost:8080/",
"name":"www",
"description":"La baseline",
"inLanguage":"fr"
}
]
}
Construction des données
La classe AbstractViewModel possède un attribut jsonLdModels qui permet de stocker les modèles JSON-LD (JsonLdModel) associés à la vue.
La liste des modèles JSON-LD est alimentée par le view preparer AbstractViewPreparer qui implémente la méthode prepareJsonLdModels.
public List<JsonLdModel> prepareJsonLdModels(final FrontContext frontContext, final V viewModel) {
}
Chaque vue possédant des données JSON-LD doit implémenter la méthode prepareJsonLdModels et appelée celle-ci dans la méthode prepare.
Modélisation des données
Pour modéliser les données JSON-LD, une classe AbstractJsonLdModel est fournie. Cette classe abstraite implémente l'interface JsonLdModel et contient les attributs @type et @id communs à la plupart des modèles JSON-LD.
/**
* Classe abstraite des modèles JsonLd.
*/
@JsonInclude(JsonInclude.Include.NON_NULL)
public class AbstractJsonLdModel implements JsonLdModel {
@JsonProperty("@type")
protected String type;
@JsonProperty("@id")
protected String id;
public String getType() {
return type;
}
public void setType(final String type) {
this.type = type;
}
public String getId() {
return id;
}
public void setId(final String id) {
this.id = id;
}
}
Récupération des données
La classe AbstractViewModel possède une méthode getAllJsonLdModels qui permet de récupérer la liste de l'ensemble des modèles JSON-LD associés à la vue finale.
Elle possède également une méthode serializeJsonLdModels qui permet de sérialiser les modèles JSON-LD en une chaîne de caractères JSON, cette méthode va demander à chaque viewModel de sérializer ses données JSON-LD via la méthode serialize.
Le handler de contenu ajoute les données JSON-LD à la vue dans la méthode getModelAndView de la facon suivante :
modelAndView.addObject(JSONLD_MODEL, viewModel.serializeJsonLdModels());
Un view preparer JsonLdViewPreparer est également ajouté pour ajouter les données JSON-LD à la vue finale.
Ce view preparer ajoute une vue de type jsonld qui insère les données JSON-LD dans une balise <script>.
/WEB-INF/jsp/seo/jsonld/jsonLd.jsp :
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@graph": ${jsonLdModel}
}
</script>