Liigu põhisisu juurde

JSON-LD selgitatuna

JSON-LD on tavaline JSON ühe lisareaga, mis ütleb, mida väljad tähendavad. See rida muudab kohaliku välja nime üleilmselt määratletuks, nii et süsteem, mis pole teie andmeid kunagi näinud, saab siiski aru, millest te räägite. See on olnud W3C standard alates 2014. aastast, nii loevad otsingumootorid just seda lehte, ja sellele toetub W3C andmemudel kontrollitavate tõendite jaoks.

Tavalise JSON-i probleem

JSON ütleb, kuidas andmed kirja pannakse. See ei ütle midagi selle kohta, mida need tähendavad. Väli nimega name võib olla inimene, ettevõte või toode. Väli nimega id võib olla kliendinumber, passinumber või rida kellegi andmebaasis. Kaks süsteemi võivad mõlemad väljastada täiesti kehtivat JSON-i ja ometi olla eri meelt selle iga välja osas.

Praktikas suletakse see lünk kokkuleppega. Kaks poolt panevad kirja, mida väljad tähendavad, ja ehitavad oma tarkvara selle järgi. See toimib ühe liidese puhul, läheb kümne juures kalliks ja lakkab üldse toimimast, kui ühes riigis väljastatud tõendit peab mõistma kontrollija teises riigis, kellega keegi ette ei rääkinud.

Mida @context teeb

JSON-LD sulgeb selle lünga dokumendi sees. @context seob iga lühikese väljanime üleilmselt unikaalse identifikaatoriga, tavaliselt URL-iga, mida haldab see, kes sõnastiku määratles. Väli jääb lühikeseks ja inimesele loetavaks ning muutub masina jaoks üheseks.

Tavaline JSON

{
  "name": "Alex Jansen",
  "birthDate": "1994-03-21",
  "jobTitle": "Compliance Officer"
}

Kehtiv, loetav ja tähenduseta igaühele, kellele keegi pole ette öelnud, mida väljad peaksid sisaldama.

Samad andmed JSON-LD-na

{
  "@context": "https://schema.org",
  "@type": "Person",
  "name": "Alex Jansen",
  "birthDate": "1994-03-21",
  "jobTitle": "Compliance Officer"
}

Iga väli osutab nüüd avaldatud definitsioonile, nii et süsteem, mis pole seda dokumenti kunagi näinud, suudab seda siiski õigesti lugeda.

  • @context nimetab sõnastiku, milles on määratletud dokumendi iga väli.
  • @type ütleb, millist asja dokument kirjeldab, et sellest sõnastikust valitaks õiged definitsioonid.
Kaks lisatud rida ongi kogu vahe. Ükski väärtus ei muutunud.

Andmetes endis ei muutu midagi. Samad väärtused samas kujus kannavad nüüd viidet iga välja definitsioonile. Vastuvõttev süsteem, mis sõnastikku tunneb, teab täpselt, mida talle anti, ja see, mis ei tunne, saab dokumenti ikkagi lugeda tavalise JSON-ina ja ülejäänut eirata.

Selles ongi kogu mõte. Tähendus reisib koos dokumendiga, selle asemel et elada spetsifikatsioonis, milles kaks poolt pidid ette kokku leppima.

Kus see kontrollitavate tõendite juures esile kerkib

W3C Verifiable Credentials Data Model 2.0, mis on alates 15. maist 2025 W3C Recommendation, on ehitatud JSON-LD-le. Iga tõend algab @contextiga, mille esimene väärtus on ühine tõendisõnastik, nii et mõisted, mis on kõigil tõenditel ühised, väljastaja, subjekt, kehtivuskuupäevad ja olekuteave, tähendavad kõikjal sama.

Kõik sellest väljapoole jääv tuleb teisest sõnastikust. Ülikool avaldab ühe diplomiväljade jaoks, kaubanduskoda ühe ettevõtte registreerimisväljade jaoks. Kontrollija, kellele lähevad korda diplomid, laadib esimese, see, kellele lähevad korda ettevõtteandmed, laadib teise, ja kumbagi ei pea muutma, kui teine lisab välja.

Just see lubab ühel tõendivormingul kanda andmeid, mida keegi vormingu kirjutamise ajal ette ei näinud, ja see on omadus, mida avatud ökosüsteem vajab ja suletud profiil mitte.

Seotud andmete allkirjastamine

Tõend tuleb ka allkirjastada ja andmemudel jätab seal teadlikult valiku. Ümbritsev tõestus pakib kogu tõendi allkirjakonteinerisse, näiteks JWT-sse. Baidid allkirjastatakse täpselt sellisena, nagu nad on, nii et kõik, mis neid teel ümber järjestab või ümber vormindab, lõhub allkirja.

Sisseehitatud Data Integrity tõestus töötab vastupidi. Dokument viiakse kõigepealt kanoonilisele kujule, mille määratleb RDF Dataset Canonicalization ja mis on alates 21. maist 2024 W3C Recommendation, ja allkiri katab selle kuju, mitte baite. Kuna kanooniline kuju ei sõltu võtmete järjekorrast, tühikutest ega sellest, milliseid lühinimesid @context parasjagu kasutab, jääb allkiri kehtima ka siis, kui dokument mujal uuesti välja kirjutatakse.

Kuhu see EUDI Walletis sobitub

Mitte sinna, kuhu enamik oletab. Architecture and Reference Framework nimetab Euroopa rahakoti jaoks kaks tõendivormingut, SD-JWT VC ja mdoc, ning kumbki neist ei ole JSON-LD. Organisatsioon, kes täna EUDI Walletisse väljastab, ei kohta teel ühtki @contexti.

Põhjuseks on teostatavus. Mõlemal vormingul on kindel kuju, üks allkirjastamismehhanism ja mitte ühtki dokumenti, mida kontrollija peaks enne mistahes kontrollimist alla laadima. Telefonis töötava rahakoti ja millisekunditega vastama pidava kontrollija jaoks on see väärtuslikum kui avatud sõnastik.

JSON-LD teenib oma koha välja seal, kus andmed peavad liikuma neid määratlenud ökosüsteemist kaugemale: tootepassid ja tarneahela andmed, sektoriülesed pilootprojektid ning tõenditüübid, mida ükski keskne profiil kunagi loetlema ei hakka. Need kaks maailma kattuvad sagedamini, kui nad konkureerivad, ja mõlemas tegutsevad organisatsioonid lõpetavad tavaliselt mõlema toetamisega.

See teine JSON-LD, mida olete juba kasutanud

Ammu enne tõendeid sai JSON-LD-st viis, kuidas veebisait ütleb otsingumootorile, millest leht räägib. Selle plokk lehe lähtekoodis, kasutades schema.orgi sõnastikku, on see, mis muudab lehe tunnustatud artikliks, tooteks, sündmuseks või organisatsiooniks. Sellel lehel on üks.

{
  "@context": "https://schema.org",
  "@type": "Article",
  "headline": "JSON-LD selgitatuna",
  "description": "Mida JSON-LD tavalisele JSON-ile lisab, kuidas @context annab igale väljale ühe tähenduse ja kus kontrollitavad tõendid seda kasutavad.",
  "image": "https://www.credenco.com/images/og-default.jpg",
  "datePublished": "2026-10-15",
  "dateModified": "2026-10-15",
  "inLanguage": "et",
  "mainEntityOfPage": "https://www.credenco.com/et/explained/json-ld",
  "author": {
    "@type": "Organization",
    "name": "Credenco",
    "url": "https://www.credenco.com/"
  },
  "publisher": {
    "@type": "Organization",
    "name": "Credenco",
    "logo": {
      "@type": "ImageObject",
      "url": "https://www.credenco.com/logo.svg"
    }
  }
}

See on sama vorming teise sõnastikuga ja see on kõige selgem viis mõtet näha. Keegi siin ei leppinud ühegi otsingumootoriga milleski kokku. @context osutab schema.orgile, otsingumootor tunneb seda sõnastikku juba, ja lehest saab aru osapool, kellega ta pole kunagi rääkinud. Piiri ületav tõend teeb täpselt sama.

Mis see maksab

Kontekst peab olema kättesaadav. Kontrollija, kes selle kontrollimise hetkel toob, on lisanud turvaotsusele võrgusõltuvuse, ja see, kes seda dokumenti pakub, saab muuta, mida tõend näib ütlevat. Päris juurutused kinnistavad aktsepteeritavad kontekstid ja tarnivad need koos tarkvaraga, selle asemel et neid jooksvalt lahendada.

Ka kanoniseerimine on tõeline töö. Dokumendi muutmine enne allkirjastamist kanooniliseks andmestikuks on tunduvalt rohkem koodi kui baitide allkirjastamine, ja selle veaolukorrad on peened. Dokumendid on pealegi suuremad, mis hakkab lugema QR-koodil või NFC-puudutusel.

Miski sellest ei tee JSON-LD-st valet valikut. See teeb sellest valiku: maksa avatud sõnastike eest seal, kus andmed peavad üle elama kokkuleppe, mis nad lõi, ja jäta need välja seal, kus kindel profiil ütleb juba kõik, mida kaks poolt vajavad.

Mida see sinu jaoks tähendab

Väljastaja

EUDI Walletisse väljastamine tähendab SD-JWT VC-d või mdoci ja JSON-LD ei tule kunagi jutuks. W3C ökosüsteemi väljastamine teeb teie @contextist pikaajalise kohustuse: see on teie väljade avalik definitsioon ja selle muutmine lõhub iga kontrollija, kes vana vahemällu salvestas.

Kontrollija

Otsustage, milliseid kontekste te aktsepteerite, ja tarnige need koos oma tarkvaraga. Ühe toomine kontrollimise ajal teeb kaugserverist osa teie turvaotsusest ja paneb võrgupäringu keset teie vastamisaega.

Arendaja

Lugege JSON-LD dokumenti tavalise JSON-ina, kui vajate ainult üht välja, ja võtke täismootor ette alles seal, kus te tõesti laiendate või kanoniseerite. Enamik keerukusest, mida inimesed JSON-LD-le omistavad, istub allkirjastamisteel, mitte lugemisteel.

Seotud mõisted

Korduma kippuvad küsimused

Kas JSON-LD on ikka lihtsalt JSON?

Jah. Iga JSON-LD dokument on kehtiv JSON ja tarkvara, mis peab lugema ainult üht välja, võib seda nii käsitleda. Lisamehhanism tuleb mängu alles siis, kui dokument laiendatakse täiskujule või kanoniseeritakse allkirjastamiseks, mida enamik tõendit lugevat koodi kunagi ei tee.

Kas EUDI Wallet kasutab JSON-LD-d?

Ei. Architecture and Reference Framework nimetab tõendivormingutena SD-JWT VC ja mdoc ning kumbki neist ei kasuta JSON-LD-d. See loeb W3C kontrollitavate tõendite ökosüsteemides, tootepasside ja tarneahela andmete puhul, mitte Euroopa rahakoti enda juures.

Kas kontrollija laadib @contexti iga kord alla?

Ei peaks. Konteksti toomine kontrollimise ajal paneb võrgupäringu keset turvaotsust ja annab kaugserverile võimaluse muuta seda, mida dokument näib ütlevat. Teostused kinnistavad aktsepteeritavad kontekstid ja tarnivad need koos tarkvaraga, mis kaotab ka viivituse.

Kas see on sama JSON-LD, mida otsingumootorid loevad?

Sama vorming teise sõnastikuga. Veebilehe struktureeritud andmed suunavad oma @contexti schema.orgi poole, tõend aga tõendisõnastiku ja selle poole, mida tal veel vaja on. Töötlusreeglid on mõlemal juhul identsed.

Allikad

  1. JSON-LD 1.1, W3C Recommendation, 16. juuli 2020
  2. Verifiable Credentials Data Model 2.0, W3C Recommendation, 15. mai 2025
  3. Verifiable Credential Data Integrity 1.0, W3C Recommendation, 15. mai 2025
  4. RDF Dataset Canonicalization, W3C Recommendation, 21. mai 2024

See lehekülg on informatiivne ega ole õigusnõu. Siduvate juhiste saamiseks tutvuge otse W3C spetsifikatsioonidega.

Rääkige meiega tõendivormingutest ja koostalitlusvõimest