id.sifa.profile.education

sifa.id

Schema Diff

+23 -2

From

CID
bafyreig6i7pilek...
Indexed At
2026-08-06 14:52 UTC
View this version

To

CID
bafyreid3dvmuqs7...
Indexed At
2026-09-25 22:02 UTC
View this version

Compatibility Analysis

Backward Compatible

Backward compatible. 8 non-breaking changes.

Non-Breaking Changes (8)
  • AddedVertex AddedVertex { vertex_id: "id.sifa.defs#agentRef" }
  • AddedVertex AddedVertex { vertex_id: "id.sifa.profile.education:body.agentRef" }
  • AddedVertex AddedVertex { vertex_id: "id.sifa.profile.education:body.eqfLevel" }
  • AddedVertex AddedVertex { vertex_id: "id.sifa.profile.education:body.isPrimary" }
  • AddedEdge AddedEdge { src: "id.sifa.profile.education:body", tgt: "id.sifa.profile.education:body.agentRef", kind: "prop", name: Some("agentRef") }
  • AddedEdge AddedEdge { src: "id.sifa.profile.education:body", tgt: "id.sifa.profile.education:body.eqfLevel", kind: "prop", name: Some("eqfLevel") }
  • AddedEdge AddedEdge { src: "id.sifa.profile.education:body", tgt: "id.sifa.profile.education:body.isPrimary", kind: "prop", name: Some("isPrimary") }
  • AddedEdge AddedEdge { src: "id.sifa.profile.education:body.agentRef", tgt: "id.sifa.defs#agentRef", kind: "ref", name: None }

Migration Guidance

Added Elements

  • AddedVertex { vertex_id: "id.sifa.defs#agentRef" }
  • AddedVertex { vertex_id: "id.sifa.profile.education:body.agentRef" }
  • AddedVertex { vertex_id: "id.sifa.profile.education:body.eqfLevel" }
  • AddedVertex { vertex_id: "id.sifa.profile.education:body.isPrimary" }

Additional Notes

  • Non-breaking: AddedEdge { src: "id.sifa.profile.education:body", tgt: "id.sifa.profile.education:body.agentRef", kind: "prop", name: Some("agentRef") }
  • Non-breaking: AddedEdge { src: "id.sifa.profile.education:body", tgt: "id.sifa.profile.education:body.eqfLevel", kind: "prop", name: Some("eqfLevel") }
  • Non-breaking: AddedEdge { src: "id.sifa.profile.education:body", tgt: "id.sifa.profile.education:body.isPrimary", kind: "prop", name: Some("isPrimary") }
  • Non-breaking: AddedEdge { src: "id.sifa.profile.education:body.agentRef", tgt: "id.sifa.defs#agentRef", kind: "ref", name: None }
1 1
{
2 2
  "$type": "com.atproto.lexicon.schema",
3 3
  "defs": {
4 4
    "main": {
5 5
      "description": "Record representing a single education credential.",
6 6
      "key": "tid",
7 7
      "record": {
8 8
        "properties": {
9 9
          "activities": {
10 10
            "description": "Activities, societies, and extracurriculars.",
11 11
            "maxGraphemes": 1000,
12 12
            "maxLength": 10000,
13 13
            "type": "string"
14 14
          },
15 +
          "agentRef": {
16 +
            "description": "The educational institution, as a single nested reference mirroring the flat institution / institutionDid / entityRef fields. Additive dual-write: the flat fields remain the source of truth for existing consumers.",
17 +
            "ref": "id.sifa.defs#agentRef",
18 +
            "type": "ref"
19 +
          },
15 20
          "createdAt": {
16 21
            "description": "Client-declared timestamp when this record was originally created.",
17 22
            "format": "datetime",
18 23
            "type": "string"
19 24
          },
20 25
          "degree": {
21 26
            "description": "Degree name (e.g., 'Bachelor of Science', 'Master of Arts').",
22 27
            "maxGraphemes": 256,
23 28
            "maxLength": 2560,
24 29
            "type": "string",
25 30
            "x-skos:closeMatch": [
26 31
              "schema:hasCredential",
27 32
              "bibo:degree"
28 33
            ]
29 34
          },
30 35
          "description": {
31 36
            "description": "Additional description or notes about the education.",
32 37
            "maxGraphemes": 5000,
33 38
            "maxLength": 50000,
34 39
            "type": "string"
35 40
          },
36 41
          "endedAt": {
37 42
            "description": "End date (graduation or expected graduation) in YYYY-MM or YYYY-MM-DD format. Omit if currently enrolled.",
38 43
            "type": "string"
39 44
          },
40 45
          "entityRef": {
41 46
            "description": "Portable, app-neutral identifier for the educational institution the user selected from a resolver dropdown: a Wikidata Q-ID URI (http://www.wikidata.org/entity/Q...), a ROR URI, or an LEI URI. Enables deterministic resolution to a canonical entity even before the institution claims an ATproto account. Absent for free-text entries.",
42 47
            "format": "uri",
43 48
            "type": "string"
44 49
          },
50 +
          "eqfLevel": {
51 +
            "description": "Level of the qualification on the European Qualifications Framework (EQF), 1 to 8. 6 is bachelor level, 7 is master level, 8 is doctoral level. Omit when unknown. The free-text degree stays the display name.",
52 +
            "maximum": 8,
53 +
            "minimum": 1,
54 +
            "type": "integer",
55 +
            "x-skos:closeMatch": [
56 +
              "schema:educationalLevel"
57 +
            ],
58 +
            "x-skos:note": "EQF is the value anchor."
59 +
          },
45 60
          "fieldOfStudy": {
46 61
            "description": "Field of study or major.",
47 62
            "maxGraphemes": 256,
48 63
            "maxLength": 2560,
49 64
            "type": "string",
50 65
            "x-skos:closeMatch": [
51 66
              "schema:educationalCredentialAwarded"
52 -
            ]
67 +
            ],
68 +
            "x-skos:note": "ISCED-F is the value anchor."
53 69
          },
54 70
          "grade": {
55 71
            "description": "Grade, GPA, or classification achieved.",
56 72
            "maxGraphemes": 50,
57 73
            "maxLength": 500,
58 74
            "type": "string"
59 75
          },
60 76
          "institution": {
61 77
            "description": "Name of the educational institution.",
62 78
            "maxGraphemes": 256,
63 79
            "maxLength": 2560,
64 80
            "minLength": 1,
65 81
            "type": "string",
66 82
            "x-skos:exactMatch": [
67 83
              "schema:alumniOf"
68 84
            ]
69 85
          },
70 86
          "institutionDid": {
71 87
            "description": "DID of the institution's ATproto account, if one exists.",
72 88
            "format": "did",
73 89
            "type": "string"
74 90
          },
91 +
          "isPrimary": {
92 +
            "description": "Whether this is the user's primary education entry, surfaced in profile Highlights. Any entry may be primary.",
93 +
            "type": "boolean"
94 +
          },
75 95
          "labels": {
76 96
            "description": "Self-label values for this education record.",
77 97
            "refs": [
78 98
              "com.atproto.label.defs#selfLabels"
79 99
            ],
80 100
            "type": "union"
81 101
          },
82 102
          "location": {
83 103
            "description": "Institution location. Sifa enforces ISO 3166-1 alpha-2 country codes at the app layer.",
84 104
            "ref": "community.lexicon.location.address",
85 105
            "type": "ref"
86 106
          },
87 107
          "startedAt": {
88 108
            "description": "Start date in YYYY-MM or YYYY-MM-DD format.",
89 109
            "type": "string"
90 110
          }
91 111
        },
92 112
        "required": [
93 113
          "institution",
94 114
          "createdAt"
95 115
        ],
96 116
        "type": "object"
97 117
      },
98 118
      "type": "record",
99 119
      "x-skos:closeMatch": [
100 120
        "schema:EducationalOccupationalCredential"
101 -
      ]
121 +
      ],
122 +
      "x-skos:note": "One record maps to two schema.org assertions: alumniOf for the institution and hasCredential for the degree."
102 123
    }
103 124
  },
104 125
  "description": "An education entry in the user's professional profile.",
105 126
  "id": "id.sifa.profile.education",
106 127
  "lexicon": 1
107 128
}

Compare Other Versions

Lexicon Garden

@