Μετάβαση στο κύριο περιεχόμενο

Το JSON-LD εξηγείται

Το JSON-LD είναι συνηθισμένο JSON με μία επιπλέον γραμμή που λέει τι σημαίνουν τα πεδία. Αυτή η γραμμή μετατρέπει ένα τοπικό όνομα πεδίου σε παγκοσμίως ορισμένο, ώστε ένα σύστημα που δεν έχει δει ποτέ τα δεδομένα σας να μπορεί παρ' όλα αυτά να καταλάβει για τι πράγμα μιλάτε. Είναι πρότυπο του W3C από το 2014, έτσι διαβάζουν οι μηχανές αναζήτησης αυτήν ακριβώς τη σελίδα, και πάνω σε αυτό στηρίζεται το μοντέλο δεδομένων του W3C για τα επαληθεύσιμα διαπιστευτήρια.

Το πρόβλημα με το απλό JSON

Το JSON λέει πώς γράφονται τα δεδομένα. Δεν λέει τίποτα για το τι σημαίνουν. Ένα πεδίο με όνομα name μπορεί να είναι πρόσωπο, εταιρεία ή προϊόν. Ένα πεδίο με όνομα id μπορεί να είναι αριθμός πελάτη, αριθμός διαβατηρίου ή μια γραμμή στη βάση δεδομένων κάποιου. Δύο συστήματα μπορούν και τα δύο να παράγουν απολύτως έγκυρο JSON και παρ' όλα αυτά να διαφωνούν για κάθε πεδίο του.

Στην πράξη το κενό αυτό κλείνει με μια συμφωνία. Οι δύο πλευρές καταγράφουν τι σημαίνουν τα πεδία και φτιάχνουν ανάλογα το λογισμικό τους. Αυτό λειτουργεί για μία ολοκλήρωση, γίνεται ακριβό στις δέκα και παύει εντελώς να λειτουργεί όταν ένα διαπιστευτήριο που εκδόθηκε σε μια χώρα πρέπει να το καταλάβει ένας επαληθευτής σε άλλη, με τον οποίο δεν μίλησε κανείς εκ των προτέρων.

Τι κάνει το @context

Το JSON-LD κλείνει αυτό το κενό μέσα στο ίδιο το έγγραφο. Ένα @context αντιστοιχίζει κάθε σύντομο όνομα πεδίου σε ένα παγκοσμίως μοναδικό αναγνωριστικό, συνήθως μια διεύθυνση URL που ελέγχει όποιος όρισε το λεξιλόγιο. Το πεδίο παραμένει σύντομο και ευανάγνωστο για τον άνθρωπο και γίνεται σαφές για τη μηχανή.

Απλό JSON

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

Έγκυρο, ευανάγνωστο και χωρίς νόημα για όποιον δεν του έχει πει κανείς εκ των προτέρων τι υποτίθεται ότι περιέχουν τα πεδία.

Τα ίδια δεδομένα ως JSON-LD

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

Κάθε πεδίο δείχνει τώρα σε έναν δημοσιευμένο ορισμό, ώστε ένα σύστημα που δεν έχει δει ποτέ αυτό το έγγραφο να μπορεί παρ' όλα αυτά να το διαβάσει σωστά.

  • @context ονομάζει το λεξιλόγιο στο οποίο ορίζεται κάθε πεδίο του εγγράφου.
  • @type λέει τι είδους πράγμα περιγράφει το έγγραφο, ώστε να επιλεγούν οι σωστοί ορισμοί από εκείνο το λεξιλόγιο.
Δύο γραμμές που προστέθηκαν είναι όλη η διαφορά. Καμία τιμή δεν άλλαξε.

Τίποτα στα ίδια τα δεδομένα δεν αλλάζει. Οι ίδιες τιμές στην ίδια μορφή φέρουν τώρα έναν δείκτη προς τον ορισμό κάθε πεδίου. Ένα σύστημα παραλήπτης που αναγνωρίζει το λεξιλόγιο ξέρει ακριβώς τι του δόθηκε, και ένα που δεν το αναγνωρίζει μπορεί ακόμη να διαβάσει το έγγραφο ως απλό JSON και να αγνοήσει τα υπόλοιπα.

Αυτή είναι όλη η ιδέα. Το νόημα ταξιδεύει μαζί με το έγγραφο αντί να κατοικεί σε μια προδιαγραφή για την οποία οι δύο πλευρές έπρεπε να συμφωνήσουν εκ των προτέρων.

Πού εμφανίζεται στα επαληθεύσιμα διαπιστευτήρια

Το W3C Verifiable Credentials Data Model 2.0, W3C Recommendation από τις 15 Μαΐου 2025, είναι χτισμένο πάνω στο JSON-LD. Κάθε διαπιστευτήριο ανοίγει με ένα @context του οποίου η πρώτη τιμή είναι το κοινό λεξιλόγιο διαπιστευτηρίων, ώστε οι όροι που έχουν κοινούς όλα τα διαπιστευτήρια, ο εκδότης, το υποκείμενο, οι ημερομηνίες ισχύος και οι πληροφορίες κατάστασης, να σημαίνουν παντού το ίδιο.

Οτιδήποτε πέρα από αυτό προέρχεται από ένα δεύτερο λεξιλόγιο. Ένα πανεπιστήμιο δημοσιεύει ένα για τα πεδία των διπλωμάτων, ένα εμπορικό επιμελητήριο ένα για τα πεδία εγγραφής εταιρειών. Ένας επαληθευτής που ενδιαφέρεται για διπλώματα φορτώνει το πρώτο, ένας που ενδιαφέρεται για εταιρικά δεδομένα φορτώνει το δεύτερο, και κανένα από τα δύο δεν χρειάζεται αλλαγή όταν το άλλο προσθέτει πεδίο.

Αυτό είναι που επιτρέπει σε μία μορφή διαπιστευτηρίου να μεταφέρει δεδομένα που κανείς δεν προέβλεψε όταν γράφτηκε η μορφή, και αυτή είναι η ιδιότητα που χρειάζεται ένα ανοιχτό οικοσύστημα και δεν χρειάζεται ένα κλειστό προφίλ.

Υπογραφή συνδεδεμένων δεδομένων

Ένα διαπιστευτήριο πρέπει επίσης να υπογραφεί, και το μοντέλο δεδομένων αφήνει εκεί σκόπιμα μια επιλογή. Μια περιβάλλουσα απόδειξη τυλίγει ολόκληρο το διαπιστευτήριο σε έναν περιέκτη υπογραφής όπως ένα JWT. Τα bytes υπογράφονται ακριβώς όπως είναι, οπότε οτιδήποτε τα αναδιατάσσει ή τα αναμορφώνει στον δρόμο σπάει την υπογραφή.

Μια ενσωματωμένη απόδειξη Data Integrity λειτουργεί αντίστροφα. Το έγγραφο φέρνεται πρώτα σε κανονική μορφή, που ορίζεται από το RDF Dataset Canonicalization και είναι W3C Recommendation από τις 21 Μαΐου 2024, και η υπογραφή καλύπτει εκείνη τη μορφή αντί για τα bytes. Επειδή η κανονική μορφή δεν εξαρτάται από τη σειρά των κλειδιών, από τα κενά ή από το ποια σύντομα ονόματα τυχαίνει να χρησιμοποιεί το @context, η υπογραφή επιβιώνει όταν το έγγραφο ξαναγραφτεί αλλού.

Πού ταιριάζει στο EUDI Wallet

Όχι εκεί που υποθέτουν οι περισσότεροι. Το Architecture and Reference Framework ορίζει δύο μορφές διαπιστευτηρίων για το ευρωπαϊκό πορτοφόλι, το SD-JWT VC και το mdoc, και καμία από τις δύο δεν είναι JSON-LD. Ένας οργανισμός που εκδίδει σήμερα προς το EUDI Wallet δεν θα συναντήσει κανένα @context στον δρόμο.

Ο λόγος είναι η υλοποιησιμότητα. Και οι δύο μορφές έχουν σταθερή δομή, έναν μόνο μηχανισμό υπογραφής και κανένα έγγραφο που να πρέπει να ανακτήσει ο επαληθευτής πριν μπορέσει να ελέγξει οτιδήποτε. Για ένα πορτοφόλι που τρέχει σε τηλέφωνο και έναν επαληθευτή που πρέπει να απαντήσει σε χιλιοστά του δευτερολέπτου, αυτό αξίζει περισσότερο από ένα ανοιχτό λεξιλόγιο.

Το JSON-LD κερδίζει τη θέση του εκεί όπου τα δεδομένα πρέπει να ταξιδέψουν πέρα από το οικοσύστημα που τα όρισε: διαβατήρια προϊόντων και δεδομένα εφοδιαστικής αλυσίδας, διατομεακά πιλοτικά προγράμματα και τύποι διαπιστευτηρίων που κανένα κεντρικό προφίλ δεν πρόκειται ποτέ να απαριθμήσει. Οι δύο κόσμοι επικαλύπτονται συχνότερα απ' όσο ανταγωνίζονται, και οι οργανισμοί που δουλεύουν και στους δύο καταλήγουν συνήθως να υποστηρίζουν και τους δύο.

Το άλλο JSON-LD, αυτό που ήδη έχετε χρησιμοποιήσει

Πολύ πριν από τα διαπιστευτήρια, το JSON-LD έγινε ο τρόπος με τον οποίο ένας ιστότοπος λέει σε μια μηχανή αναζήτησης για τι πράγμα είναι μια σελίδα. Ένα μπλοκ του στον πηγαίο κώδικα της σελίδας, με το λεξιλόγιο του schema.org, είναι αυτό που μετατρέπει μια σελίδα σε αναγνωρισμένο άρθρο, προϊόν, εκδήλωση ή οργανισμό. Αυτή η σελίδα φέρει ένα.

{
  "@context": "https://schema.org",
  "@type": "Article",
  "headline": "Το JSON-LD εξηγείται",
  "description": "Τι προσθέτει το JSON-LD στο απλό JSON, πώς ένα @context δίνει σε κάθε πεδίο ένα νόημα και πού το χρησιμοποιούν τα επαληθεύσιμα διαπιστευτήρια.",
  "image": "https://www.credenco.com/images/og-default.jpg",
  "datePublished": "2026-10-15",
  "dateModified": "2026-10-15",
  "inLanguage": "el",
  "mainEntityOfPage": "https://www.credenco.com/el/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"
    }
  }
}

Είναι η ίδια μορφή με διαφορετικό λεξιλόγιο, και είναι ο πιο καθαρός τρόπος να δει κανείς το νόημα. Κανείς εδώ δεν συμφώνησε τίποτα με καμία μηχανή αναζήτησης. Το @context δείχνει στο schema.org, η μηχανή αναζήτησης γνωρίζει ήδη εκείνο το λεξιλόγιο, και τη σελίδα την καταλαβαίνει ένα μέρος με το οποίο δεν μίλησε ποτέ. Ένα διαπιστευτήριο που περνά σύνορα κάνει ακριβώς το ίδιο.

Τι σας κοστίζει

Το context πρέπει να είναι διαθέσιμο. Ένας επαληθευτής που το ανακτά τη στιγμή της επαλήθευσης έχει προσθέσει μια εξάρτηση δικτύου σε μια απόφαση ασφαλείας, και όποιος σερβίρει εκείνο το έγγραφο μπορεί να αλλάξει αυτό που το διαπιστευτήριο φαίνεται να λέει. Οι πραγματικές εγκαταστάσεις καθηλώνουν τα context που αποδέχονται και τα παραδίδουν με το λογισμικό αντί να τα επιλύουν ζωντανά.

Και η κανονικοποίηση είναι πραγματική δουλειά. Η μετατροπή ενός εγγράφου σε κανονικό σύνολο δεδομένων πριν την υπογραφή είναι σημαντικά περισσότερος κώδικας από την υπογραφή bytes, και οι τρόποι αστοχίας της είναι λεπτοί. Τα έγγραφα είναι επίσης μεγαλύτερα, κάτι που αρχίζει να μετράει σε έναν κωδικό QR ή σε ένα άγγιγμα NFC.

Τίποτα από αυτά δεν κάνει το JSON-LD λάθος επιλογή. Το κάνει μια επιλογή: πληρώστε για ανοιχτά λεξιλόγια εκεί όπου τα δεδομένα πρέπει να ζήσουν περισσότερο από τη συμφωνία που τα δημιούργησε, και παραλείψτε τα εκεί όπου ένα σταθερό προφίλ λέει ήδη όλα όσα χρειάζονται οι δύο πλευρές.

Τι σημαίνει αυτό για εσάς

Εκδότης

Η έκδοση προς το EUDI Wallet σημαίνει SD-JWT VC ή mdoc, και το JSON-LD δεν προκύπτει ποτέ. Η έκδοση προς ένα οικοσύστημα W3C κάνει το @context σας μακροπρόθεσμη δέσμευση: είναι ο δημόσιος ορισμός των πεδίων σας, και η αλλαγή του χαλάει κάθε επαληθευτή που αποθήκευσε στην κρυφή μνήμη τον παλιό.

Επαληθευτής

Αποφασίστε ποια context αποδέχεστε και παραδώστε τα μαζί με το λογισμικό σας. Η ανάκτηση ενός κατά την επαλήθευση κάνει έναν απομακρυσμένο διακομιστή μέρος της απόφασης ασφαλείας σας και βάζει μια κλήση δικτύου στο μέσο του χρόνου απόκρισής σας.

Προγραμματιστής

Διαβάστε ένα έγγραφο JSON-LD ως απλό JSON όταν το μόνο που χρειάζεστε είναι ένα πεδίο, και καταφύγετε σε πλήρη επεξεργαστή μόνο εκεί όπου πραγματικά αναπτύσσετε ή κανονικοποιείτε. Το μεγαλύτερο μέρος της πολυπλοκότητας που αποδίδεται στο JSON-LD βρίσκεται στη διαδρομή της υπογραφής, όχι της ανάγνωσης.

Σχετικοί όροι

Συχνές ερωτήσεις

Το JSON-LD είναι ακόμη απλώς JSON;

Ναι. Κάθε έγγραφο JSON-LD είναι έγκυρο JSON, και λογισμικό που χρειάζεται μόνο να διαβάσει ένα πεδίο μπορεί να το αντιμετωπίσει έτσι. Ο επιπλέον μηχανισμός μπαίνει στο παιχνίδι μόνο όταν αναπτύσσετε ένα έγγραφο στην πλήρη μορφή του ή το κανονικοποιείτε για υπογραφή, κάτι που ο περισσότερος κώδικας που διαβάζει ένα διαπιστευτήριο δεν κάνει ποτέ.

Χρησιμοποιεί το EUDI Wallet JSON-LD;

Όχι. Το Architecture and Reference Framework ορίζει ως μορφές διαπιστευτηρίων το SD-JWT VC και το mdoc, και κανένα από τα δύο δεν χρησιμοποιεί JSON-LD. Έχει σημασία για τα οικοσυστήματα W3C με επαληθεύσιμα διαπιστευτήρια, για τα διαβατήρια προϊόντων και για τα δεδομένα της εφοδιαστικής αλυσίδας, όχι για το ίδιο το ευρωπαϊκό πορτοφόλι.

Κατεβάζει ο επαληθευτής το @context κάθε φορά;

Δεν θα έπρεπε. Η ανάκτηση ενός context κατά την επαλήθευση τοποθετεί μια κλήση δικτύου στο μέσο μιας απόφασης ασφαλείας και δίνει σε έναν απομακρυσμένο διακομιστή τη δυνατότητα να αλλάξει αυτό που το έγγραφο φαίνεται να λέει. Οι υλοποιήσεις καθηλώνουν τα context που αποδέχονται και τα παραδίδουν μαζί με το λογισμικό, κάτι που εξαλείφει και την καθυστέρηση.

Είναι το ίδιο JSON-LD που διαβάζουν οι μηχανές αναζήτησης;

Η ίδια μορφή με διαφορετικό λεξιλόγιο. Τα δομημένα δεδομένα μιας ιστοσελίδας στρέφουν το @context τους στο schema.org, ενώ ένα διαπιστευτήριο το στρέφει στο λεξιλόγιο των διαπιστευτηρίων και σε ό,τι άλλο χρειάζεται. Οι κανόνες επεξεργασίας είναι πανομοιότυποι και στις δύο περιπτώσεις.

Πηγές

  1. JSON-LD 1.1, W3C Recommendation, 16 Ιουλίου 2020
  2. Verifiable Credentials Data Model 2.0, W3C Recommendation, 15 Μαΐου 2025
  3. Verifiable Credential Data Integrity 1.0, W3C Recommendation, 15 Μαΐου 2025
  4. RDF Dataset Canonicalization, W3C Recommendation, 21 Μαΐου 2024

Η σελίδα αυτή είναι ενημερωτική και δεν συνιστά νομική συμβουλή. Για έγκυρη καθοδήγηση συμβουλευτείτε απευθείας τις προδιαγραφές του W3C.

Μιλήστε μαζί μας για μορφές διαπιστευτηρίων και διαλειτουργικότητα