Aller au contenu

Cadrer des données JSON-LD — Numio

Restructure du JSON-LD avec un frame via jsonld.frame : les nœuds qui correspondent au frame (par exemple par @type) deviennent les résultats de premier niveau, et les nœuds qu'ils référencent sont imbriqués à l'intérieur.

Transformer un @graph plat en arbre ayant pour racine le type dont votre application a besoin, par exemple chaque Book avec sa library imbriquée.

JSON-LD

Frame

Quand l’utiliser

  • Transformer un @graph plat en arbre ayant pour racine le type dont votre application a besoin, par exemple chaque Book avec sa library imbriquée.
  • Sélectionner uniquement les nœuds d'un @type dans un jeu de données JSON-LD plus large.

Mode d’emploi

  1. Collez le document source dans l'éditeur JSON-LD.
  2. Écrivez le frame dans l'éditeur Frame : un @context plus des règles de correspondance comme "@type": "Book".
  3. Examinez le résultat ; s'il y a plusieurs correspondances, les nœuds sont listés dans @graph.

JSON-LD + frame

// JSON-LD editor
{
  "@context": {"@vocab": "http://schema.org/"},
  "@graph": [
    {"@id": "http://example.org/lib", "name": "City Library"},
    {"@id": "http://example.org/b1", "@type": "Book", "name": "Dune",
     "holdingArchive": {"@id": "http://example.org/lib"}},
    {"@id": "http://example.org/b2", "@type": "Book", "name": "Emma",
     "holdingArchive": {"@id": "http://example.org/lib"}}
  ]
}

// Frame editor
{"@context": {"@vocab": "http://schema.org/"}, "@type": "Book"}

JSON-LD avec frame

{
  "@context": {
    "@vocab": "http://schema.org/"
  },
  "@graph": [
    {
      "@id": "http://example.org/b1",
      "@type": "Book",
      "holdingArchive": {
        "@id": "http://example.org/lib",
        "name": "City Library"
      },
      "name": "Dune"
    },
    {
      "@id": "http://example.org/b2",
      "@type": "Book",
      "holdingArchive": {
        "@id": "http://example.org/lib",
        "name": "City Library"
      },
      "name": "Emma"
    }
  ]
}

Détails et limites

Ici, les références de nœuds sont remplacées par le nœud référencé : la library est imbriquée dans chaque book.

Un nœud qui ne correspond pas au frame (la library) n'apparaît que comme objet imbriqué, pas comme résultat à part entière.

S'exécute dans votre navigateur avec jsonld.js et ses options de framing par défaut ; @embed, @explicit et les flags similaires peuvent être définis dans le frame lui-même.

FAQ

Comment ne renvoyer que certaines propriétés ?

Ajoutez "@explicit": true au frame et listez les propriétés voulues, chacune avec {} comme valeur.

Pourquoi y a-t-il une clé @graph dans le résultat ?

Quand plusieurs nœuds correspondent au frame, les résultats sont renvoyés dans @graph. Une correspondance unique est renvoyée comme objet de premier niveau.

Pourquoi l'éditeur Frame est-il prérempli avec un contexte schema.org ?

C'est l'exemple par défaut de la page. Ce contexte est une URL distante que votre navigateur doit télécharger ; remplacez-le par un contexte en ligne pour un usage hors ligne. En cas d'échec du téléchargement, la page affiche une erreur indiquant l'URL.

Spécifications et références