@learncard/credential-library 1.0.7 → 1.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -32,11 +32,13 @@ __export(index_exports, {
32
32
  boostDelegate: () => boostDelegate,
33
33
  boostId: () => boostId,
34
34
  boostWithSkills: () => boostWithSkills,
35
+ clrCompetencyAligned: () => clrCompetencyAligned,
35
36
  clrGreatPlainsFull: () => clrGreatPlainsFull,
36
37
  clrMinimal: () => clrMinimal,
37
38
  clrMultiAchievement: () => clrMultiAchievement,
38
39
  clrNdStudentTranscript: () => clrNdStudentTranscript,
39
40
  clrUniversityTranscript: () => clrUniversityTranscript,
41
+ clrWestbridgeFull: () => clrWestbridgeFull,
40
42
  findFixture: () => findFixture,
41
43
  getAllFixtures: () => getAllFixtures,
42
44
  getFixture: () => getFixture,
@@ -10895,6 +10897,3223 @@ var clrGreatPlainsFull = {
10895
10897
  }
10896
10898
  };
10897
10899
 
10900
+ // src/fixtures/clr/westbridge-full.ts
10901
+ var clrWestbridgeFull = {
10902
+ id: "clr/westbridge-full",
10903
+ name: "Westbridge University \u2014 Full Data Science Transcript",
10904
+ description: "A maximally rich CLR v2 transcript for a fictional 4-year Bachelor of Science in Data Science program. Exercises courses, programs, competencies, assessments, alignment, evidence, credentialStatus, termsOfUse, and credentialSchema across 8 semesters.",
10905
+ spec: "clr-v2",
10906
+ profile: "learner-record",
10907
+ features: [
10908
+ "results",
10909
+ "evidence",
10910
+ "alignment",
10911
+ "image",
10912
+ "associations",
10913
+ "nested-credentials",
10914
+ "status",
10915
+ "credential-schema"
10916
+ ],
10917
+ source: "synthetic",
10918
+ signed: false,
10919
+ validity: "valid",
10920
+ tags: ["transcript", "university", "data-science", "comprehensive", "clr-v2", "maximum-data"],
10921
+ credential: {
10922
+ "@context": [
10923
+ "https://www.w3.org/ns/credentials/v2",
10924
+ "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json",
10925
+ "https://purl.imsglobal.org/spec/clr/v2p0/context-2.0.1.json"
10926
+ ],
10927
+ id: "urn:uuid:wb-clr-2025-jordan-reyes-001",
10928
+ type: ["VerifiableCredential", "ClrCredential"],
10929
+ name: "Official Academic Transcript \u2014 Westbridge University",
10930
+ description: "Official academic transcript for the Bachelor of Science in Data Science awarded to Jordan A. Reyes, covering eight semesters of coursework, competency assessments, and degree conferral.",
10931
+ image: {
10932
+ id: "https://westbridgeuniversity.com/wp-content/uploads/2021/03/logo-with-bg-fill.jpg",
10933
+ type: "Image",
10934
+ caption: "Westbridge University official logo"
10935
+ },
10936
+ issuer: {
10937
+ id: "did:web:registrar.westbridge.edu",
10938
+ type: ["Profile"],
10939
+ name: "Westbridge University \u2014 Office of the Registrar",
10940
+ description: "The Office of the Registrar at Westbridge University maintains official academic records and issues verified credentials on behalf of the institution.",
10941
+ url: "https://westbridge.edu/registrar",
10942
+ email: "registrar@westbridge.edu",
10943
+ phone: "+1-555-742-0100",
10944
+ image: {
10945
+ id: "https://westbridgeuniversity.com/wp-content/uploads/2021/03/logo-with-bg-fill.jpg",
10946
+ type: "Image",
10947
+ caption: "Westbridge University official logo"
10948
+ },
10949
+ address: {
10950
+ type: ["Address"],
10951
+ streetAddress: "1 University Boulevard",
10952
+ addressLocality: "Westbridge",
10953
+ addressRegion: "MA",
10954
+ postalCode: "02134",
10955
+ addressCountry: "USA"
10956
+ }
10957
+ },
10958
+ validFrom: "2025-05-20T00:00:00Z",
10959
+ awardedDate: "2025-05-18",
10960
+ credentialStatus: {
10961
+ id: "https://registrar.westbridge.edu/status/2025#42",
10962
+ type: "BitstringStatusListEntry",
10963
+ statusPurpose: "revocation",
10964
+ statusListIndex: "42",
10965
+ statusListCredential: "https://registrar.westbridge.edu/status/2025"
10966
+ },
10967
+ credentialSchema: {
10968
+ id: "https://purl.imsglobal.org/spec/clr/v2p0/schema/json/clr_v2p0_clrcredential_schema.json",
10969
+ type: "1EdTechJsonSchemaValidator2019"
10970
+ },
10971
+ evidence: [
10972
+ {
10973
+ id: "https://registrar.westbridge.edu/transcripts/t-wb-2025-001.pdf",
10974
+ type: ["Evidence"],
10975
+ name: "Official Academic Transcript",
10976
+ description: "Official sealed academic transcript issued by the Westbridge University Office of the Registrar.",
10977
+ genre: "Document",
10978
+ audience: "Employer, Graduate School Admissions"
10979
+ },
10980
+ {
10981
+ id: "https://registrar.westbridge.edu/diplomas/d-wb-2025-001.jpg",
10982
+ type: ["Evidence"],
10983
+ name: "Diploma",
10984
+ description: "Bachelor of Science in Data Science diploma awarded May 18, 2025.",
10985
+ genre: "Image",
10986
+ audience: "General"
10987
+ }
10988
+ ],
10989
+ termsOfUse: [
10990
+ {
10991
+ type: "IssuerPolicy",
10992
+ id: "https://westbridge.edu/policies/transcript-use"
10993
+ }
10994
+ ],
10995
+ credentialSubject: {
10996
+ id: "did:example:wb-student-2025-001",
10997
+ type: ["ClrSubject"],
10998
+ identifier: [
10999
+ {
11000
+ type: "IdentityObject",
11001
+ identityHash: "Jordan A. Reyes",
11002
+ identityType: "name",
11003
+ hashed: false
11004
+ },
11005
+ {
11006
+ type: "IdentityObject",
11007
+ identityHash: "j.reyes@westbridge.edu",
11008
+ identityType: "emailAddress",
11009
+ hashed: false
11010
+ },
11011
+ {
11012
+ type: "IdentityObject",
11013
+ identityHash: "20210042",
11014
+ identityType: "studentId",
11015
+ hashed: false
11016
+ },
11017
+ {
11018
+ type: "IdentityObject",
11019
+ identityHash: "1999-03-14",
11020
+ identityType: "dateOfBirth",
11021
+ hashed: false
11022
+ }
11023
+ ],
11024
+ verifiableCredential: [
11025
+ // ── YEAR 1 · FALL 2021 ────────────────────────────────────────────
11026
+ {
11027
+ "@context": [
11028
+ "https://www.w3.org/ns/credentials/v2",
11029
+ "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json"
11030
+ ],
11031
+ id: "urn:uuid:wb-ds101",
11032
+ type: ["VerifiableCredential", "AchievementCredential"],
11033
+ name: "DS 101 \u2014 Introduction to Data Science",
11034
+ issuer: {
11035
+ id: "did:web:registrar.westbridge.edu",
11036
+ type: ["Profile"],
11037
+ name: "Westbridge University"
11038
+ },
11039
+ validFrom: "2021-12-15T00:00:00Z",
11040
+ credentialSubject: {
11041
+ id: "did:example:wb-student-2025-001",
11042
+ type: ["AchievementSubject"],
11043
+ achievement: {
11044
+ id: "https://westbridge.edu/courses/ds101",
11045
+ type: ["Achievement"],
11046
+ achievementType: "Course",
11047
+ name: "Introduction to Data Science",
11048
+ description: "Foundational survey of the data science lifecycle: data collection, cleaning, exploratory analysis, visualization, and basic predictive modeling using Python.",
11049
+ humanCode: "DS 101",
11050
+ fieldOfStudy: "Data Science",
11051
+ inLanguage: "en",
11052
+ tag: ["foundation", "python", "visualization"],
11053
+ creator: {
11054
+ id: "https://westbridge.edu/departments/data-science",
11055
+ type: ["Profile"],
11056
+ name: "Department of Data Science"
11057
+ },
11058
+ alignment: [
11059
+ {
11060
+ type: ["Alignment"],
11061
+ targetCode: "DS.FOUND.1",
11062
+ targetName: "Data Science Foundations",
11063
+ targetFramework: "Westbridge DS Competency Framework v2",
11064
+ targetType: "CFItem",
11065
+ targetUrl: "https://westbridge.edu/frameworks/ds/FOUND.1",
11066
+ targetDescription: "Demonstrates foundational knowledge of the data science lifecycle."
11067
+ }
11068
+ ],
11069
+ resultDescription: [
11070
+ {
11071
+ id: "urn:uuid:wb-rd-letter",
11072
+ type: ["ResultDescription"],
11073
+ name: "Letter Grade",
11074
+ resultType: "LetterGrade",
11075
+ allowedValue: [
11076
+ "A+",
11077
+ "A",
11078
+ "A-",
11079
+ "B+",
11080
+ "B",
11081
+ "B-",
11082
+ "C+",
11083
+ "C",
11084
+ "C-",
11085
+ "D",
11086
+ "F"
11087
+ ]
11088
+ }
11089
+ ]
11090
+ },
11091
+ result: [
11092
+ {
11093
+ type: ["Result"],
11094
+ value: "A",
11095
+ resultDescription: "urn:uuid:wb-rd-letter"
11096
+ }
11097
+ ],
11098
+ creditsEarned: 3,
11099
+ term: "Fall 2021"
11100
+ }
11101
+ },
11102
+ {
11103
+ "@context": [
11104
+ "https://www.w3.org/ns/credentials/v2",
11105
+ "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json"
11106
+ ],
11107
+ id: "urn:uuid:wb-math151",
11108
+ type: ["VerifiableCredential", "AchievementCredential"],
11109
+ name: "MATH 151 \u2014 Calculus I",
11110
+ issuer: {
11111
+ id: "did:web:registrar.westbridge.edu",
11112
+ type: ["Profile"],
11113
+ name: "Westbridge University"
11114
+ },
11115
+ validFrom: "2021-12-15T00:00:00Z",
11116
+ credentialSubject: {
11117
+ id: "did:example:wb-student-2025-001",
11118
+ type: ["AchievementSubject"],
11119
+ achievement: {
11120
+ id: "https://westbridge.edu/courses/math151",
11121
+ type: ["Achievement"],
11122
+ achievementType: "Course",
11123
+ name: "Calculus I",
11124
+ description: "Limits, derivatives, and integrals of single-variable functions. Applications to optimization, rates of change, and area under curves.",
11125
+ humanCode: "MATH 151",
11126
+ fieldOfStudy: "Mathematics",
11127
+ inLanguage: "en",
11128
+ tag: ["calculus", "mathematics", "foundation"],
11129
+ creator: {
11130
+ id: "https://westbridge.edu/departments/mathematics",
11131
+ type: ["Profile"],
11132
+ name: "Department of Mathematics"
11133
+ },
11134
+ resultDescription: [
11135
+ {
11136
+ id: "urn:uuid:wb-rd-letter",
11137
+ type: ["ResultDescription"],
11138
+ name: "Letter Grade",
11139
+ resultType: "LetterGrade",
11140
+ allowedValue: [
11141
+ "A+",
11142
+ "A",
11143
+ "A-",
11144
+ "B+",
11145
+ "B",
11146
+ "B-",
11147
+ "C+",
11148
+ "C",
11149
+ "C-",
11150
+ "D",
11151
+ "F"
11152
+ ]
11153
+ }
11154
+ ]
11155
+ },
11156
+ result: [
11157
+ {
11158
+ type: ["Result"],
11159
+ value: "A-",
11160
+ resultDescription: "urn:uuid:wb-rd-letter"
11161
+ }
11162
+ ],
11163
+ creditsEarned: 4,
11164
+ term: "Fall 2021"
11165
+ }
11166
+ },
11167
+ {
11168
+ "@context": [
11169
+ "https://www.w3.org/ns/credentials/v2",
11170
+ "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json"
11171
+ ],
11172
+ id: "urn:uuid:wb-cs101",
11173
+ type: ["VerifiableCredential", "AchievementCredential"],
11174
+ name: "CS 101 \u2014 Introduction to Programming",
11175
+ issuer: {
11176
+ id: "did:web:registrar.westbridge.edu",
11177
+ type: ["Profile"],
11178
+ name: "Westbridge University"
11179
+ },
11180
+ validFrom: "2021-12-15T00:00:00Z",
11181
+ credentialSubject: {
11182
+ id: "did:example:wb-student-2025-001",
11183
+ type: ["AchievementSubject"],
11184
+ achievement: {
11185
+ id: "https://westbridge.edu/courses/cs101",
11186
+ type: ["Achievement"],
11187
+ achievementType: "Course",
11188
+ name: "Introduction to Programming",
11189
+ description: "Programming fundamentals using Python: variables, control flow, functions, data structures, file I/O, and introductory object-oriented design.",
11190
+ humanCode: "CS 101",
11191
+ fieldOfStudy: "Computer Science",
11192
+ inLanguage: "en",
11193
+ tag: ["python", "programming", "foundation"],
11194
+ creator: {
11195
+ id: "https://westbridge.edu/departments/computer-science",
11196
+ type: ["Profile"],
11197
+ name: "Department of Computer Science"
11198
+ },
11199
+ resultDescription: [
11200
+ {
11201
+ id: "urn:uuid:wb-rd-letter",
11202
+ type: ["ResultDescription"],
11203
+ name: "Letter Grade",
11204
+ resultType: "LetterGrade",
11205
+ allowedValue: [
11206
+ "A+",
11207
+ "A",
11208
+ "A-",
11209
+ "B+",
11210
+ "B",
11211
+ "B-",
11212
+ "C+",
11213
+ "C",
11214
+ "C-",
11215
+ "D",
11216
+ "F"
11217
+ ]
11218
+ }
11219
+ ]
11220
+ },
11221
+ result: [
11222
+ {
11223
+ type: ["Result"],
11224
+ value: "A",
11225
+ resultDescription: "urn:uuid:wb-rd-letter"
11226
+ }
11227
+ ],
11228
+ creditsEarned: 3,
11229
+ term: "Fall 2021"
11230
+ }
11231
+ },
11232
+ // ── YEAR 1 · SPRING 2022 ──────────────────────────────────────────
11233
+ {
11234
+ "@context": [
11235
+ "https://www.w3.org/ns/credentials/v2",
11236
+ "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json"
11237
+ ],
11238
+ id: "urn:uuid:wb-stat201",
11239
+ type: ["VerifiableCredential", "AchievementCredential"],
11240
+ name: "STAT 201 \u2014 Statistics and Probability",
11241
+ issuer: {
11242
+ id: "did:web:registrar.westbridge.edu",
11243
+ type: ["Profile"],
11244
+ name: "Westbridge University"
11245
+ },
11246
+ validFrom: "2022-05-10T00:00:00Z",
11247
+ credentialSubject: {
11248
+ id: "did:example:wb-student-2025-001",
11249
+ type: ["AchievementSubject"],
11250
+ achievement: {
11251
+ id: "https://westbridge.edu/courses/stat201",
11252
+ type: ["Achievement"],
11253
+ achievementType: "Course",
11254
+ name: "Statistics and Probability",
11255
+ description: "Descriptive statistics, probability distributions, sampling theory, hypothesis testing, confidence intervals, and linear regression.",
11256
+ humanCode: "STAT 201",
11257
+ fieldOfStudy: "Statistics",
11258
+ inLanguage: "en",
11259
+ tag: ["statistics", "probability", "inference"],
11260
+ creator: {
11261
+ id: "https://westbridge.edu/departments/statistics",
11262
+ type: ["Profile"],
11263
+ name: "Department of Statistics and Applied Mathematics"
11264
+ },
11265
+ alignment: [
11266
+ {
11267
+ type: ["Alignment"],
11268
+ targetCode: "DS.STAT.1",
11269
+ targetName: "Statistical Reasoning",
11270
+ targetFramework: "Westbridge DS Competency Framework v2",
11271
+ targetType: "CFItem",
11272
+ targetUrl: "https://westbridge.edu/frameworks/ds/STAT.1",
11273
+ targetDescription: "Applies statistical reasoning to interpret data and draw valid inferences."
11274
+ }
11275
+ ],
11276
+ resultDescription: [
11277
+ {
11278
+ id: "urn:uuid:wb-rd-letter",
11279
+ type: ["ResultDescription"],
11280
+ name: "Letter Grade",
11281
+ resultType: "LetterGrade",
11282
+ allowedValue: [
11283
+ "A+",
11284
+ "A",
11285
+ "A-",
11286
+ "B+",
11287
+ "B",
11288
+ "B-",
11289
+ "C+",
11290
+ "C",
11291
+ "C-",
11292
+ "D",
11293
+ "F"
11294
+ ]
11295
+ }
11296
+ ]
11297
+ },
11298
+ result: [
11299
+ {
11300
+ type: ["Result"],
11301
+ value: "A",
11302
+ resultDescription: "urn:uuid:wb-rd-letter"
11303
+ }
11304
+ ],
11305
+ creditsEarned: 3,
11306
+ term: "Spring 2022"
11307
+ }
11308
+ },
11309
+ {
11310
+ "@context": [
11311
+ "https://www.w3.org/ns/credentials/v2",
11312
+ "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json"
11313
+ ],
11314
+ id: "urn:uuid:wb-math201",
11315
+ type: ["VerifiableCredential", "AchievementCredential"],
11316
+ name: "MATH 201 \u2014 Linear Algebra",
11317
+ issuer: {
11318
+ id: "did:web:registrar.westbridge.edu",
11319
+ type: ["Profile"],
11320
+ name: "Westbridge University"
11321
+ },
11322
+ validFrom: "2022-05-10T00:00:00Z",
11323
+ credentialSubject: {
11324
+ id: "did:example:wb-student-2025-001",
11325
+ type: ["AchievementSubject"],
11326
+ achievement: {
11327
+ id: "https://westbridge.edu/courses/math201",
11328
+ type: ["Achievement"],
11329
+ achievementType: "Course",
11330
+ name: "Linear Algebra",
11331
+ description: "Vectors, matrices, systems of linear equations, eigenvalues and eigenvectors, orthogonality, and applications to data transformations.",
11332
+ humanCode: "MATH 201",
11333
+ fieldOfStudy: "Mathematics",
11334
+ inLanguage: "en",
11335
+ tag: ["linear-algebra", "mathematics"],
11336
+ creator: {
11337
+ id: "https://westbridge.edu/departments/mathematics",
11338
+ type: ["Profile"],
11339
+ name: "Department of Mathematics"
11340
+ },
11341
+ resultDescription: [
11342
+ {
11343
+ id: "urn:uuid:wb-rd-letter",
11344
+ type: ["ResultDescription"],
11345
+ name: "Letter Grade",
11346
+ resultType: "LetterGrade",
11347
+ allowedValue: [
11348
+ "A+",
11349
+ "A",
11350
+ "A-",
11351
+ "B+",
11352
+ "B",
11353
+ "B-",
11354
+ "C+",
11355
+ "C",
11356
+ "C-",
11357
+ "D",
11358
+ "F"
11359
+ ]
11360
+ }
11361
+ ]
11362
+ },
11363
+ result: [
11364
+ {
11365
+ type: ["Result"],
11366
+ value: "B+",
11367
+ resultDescription: "urn:uuid:wb-rd-letter"
11368
+ }
11369
+ ],
11370
+ creditsEarned: 3,
11371
+ term: "Spring 2022"
11372
+ }
11373
+ },
11374
+ {
11375
+ "@context": [
11376
+ "https://www.w3.org/ns/credentials/v2",
11377
+ "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json"
11378
+ ],
11379
+ id: "urn:uuid:wb-ds110",
11380
+ type: ["VerifiableCredential", "AchievementCredential"],
11381
+ name: "DS 110 \u2014 Data Wrangling and Visualization",
11382
+ issuer: {
11383
+ id: "did:web:registrar.westbridge.edu",
11384
+ type: ["Profile"],
11385
+ name: "Westbridge University"
11386
+ },
11387
+ validFrom: "2022-05-10T00:00:00Z",
11388
+ credentialSubject: {
11389
+ id: "did:example:wb-student-2025-001",
11390
+ type: ["AchievementSubject"],
11391
+ achievement: {
11392
+ id: "https://westbridge.edu/courses/ds110",
11393
+ type: ["Achievement"],
11394
+ achievementType: "Course",
11395
+ name: "Data Wrangling and Visualization",
11396
+ description: "Practical data acquisition, cleaning, transformation, and visual storytelling using pandas, Matplotlib, and Seaborn.",
11397
+ humanCode: "DS 110",
11398
+ fieldOfStudy: "Data Science",
11399
+ inLanguage: "en",
11400
+ tag: ["pandas", "visualization", "python"],
11401
+ creator: {
11402
+ id: "https://westbridge.edu/departments/data-science",
11403
+ type: ["Profile"],
11404
+ name: "Department of Data Science"
11405
+ },
11406
+ resultDescription: [
11407
+ {
11408
+ id: "urn:uuid:wb-rd-letter",
11409
+ type: ["ResultDescription"],
11410
+ name: "Letter Grade",
11411
+ resultType: "LetterGrade",
11412
+ allowedValue: [
11413
+ "A+",
11414
+ "A",
11415
+ "A-",
11416
+ "B+",
11417
+ "B",
11418
+ "B-",
11419
+ "C+",
11420
+ "C",
11421
+ "C-",
11422
+ "D",
11423
+ "F"
11424
+ ]
11425
+ }
11426
+ ]
11427
+ },
11428
+ result: [
11429
+ {
11430
+ type: ["Result"],
11431
+ value: "A",
11432
+ resultDescription: "urn:uuid:wb-rd-letter"
11433
+ }
11434
+ ],
11435
+ creditsEarned: 3,
11436
+ term: "Spring 2022"
11437
+ }
11438
+ },
11439
+ // ── YEAR 2 · FALL 2022 ────────────────────────────────────────────
11440
+ {
11441
+ "@context": [
11442
+ "https://www.w3.org/ns/credentials/v2",
11443
+ "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json"
11444
+ ],
11445
+ id: "urn:uuid:wb-ds201",
11446
+ type: ["VerifiableCredential", "AchievementCredential"],
11447
+ name: "DS 201 \u2014 Machine Learning Fundamentals",
11448
+ issuer: {
11449
+ id: "did:web:registrar.westbridge.edu",
11450
+ type: ["Profile"],
11451
+ name: "Westbridge University"
11452
+ },
11453
+ validFrom: "2022-12-14T00:00:00Z",
11454
+ credentialSubject: {
11455
+ id: "did:example:wb-student-2025-001",
11456
+ type: ["AchievementSubject"],
11457
+ achievement: {
11458
+ id: "https://westbridge.edu/courses/ds201",
11459
+ type: ["Achievement"],
11460
+ achievementType: "Course",
11461
+ name: "Machine Learning Fundamentals",
11462
+ description: "Supervised and unsupervised learning algorithms: linear regression, logistic regression, decision trees, k-means, dimensionality reduction. Evaluation metrics and cross-validation.",
11463
+ humanCode: "DS 201",
11464
+ fieldOfStudy: "Data Science",
11465
+ inLanguage: "en",
11466
+ tag: ["machine-learning", "sklearn", "modeling"],
11467
+ creator: {
11468
+ id: "https://westbridge.edu/departments/data-science",
11469
+ type: ["Profile"],
11470
+ name: "Department of Data Science"
11471
+ },
11472
+ alignment: [
11473
+ {
11474
+ type: ["Alignment"],
11475
+ targetCode: "DS.ML.1",
11476
+ targetName: "Machine Learning Literacy",
11477
+ targetFramework: "Westbridge DS Competency Framework v2",
11478
+ targetType: "CFItem",
11479
+ targetUrl: "https://westbridge.edu/frameworks/ds/ML.1",
11480
+ targetDescription: "Applies core ML algorithms and selects appropriate evaluation strategies."
11481
+ }
11482
+ ],
11483
+ resultDescription: [
11484
+ {
11485
+ id: "urn:uuid:wb-rd-letter",
11486
+ type: ["ResultDescription"],
11487
+ name: "Letter Grade",
11488
+ resultType: "LetterGrade",
11489
+ allowedValue: [
11490
+ "A+",
11491
+ "A",
11492
+ "A-",
11493
+ "B+",
11494
+ "B",
11495
+ "B-",
11496
+ "C+",
11497
+ "C",
11498
+ "C-",
11499
+ "D",
11500
+ "F"
11501
+ ]
11502
+ }
11503
+ ]
11504
+ },
11505
+ result: [
11506
+ {
11507
+ type: ["Result"],
11508
+ value: "A",
11509
+ resultDescription: "urn:uuid:wb-rd-letter"
11510
+ }
11511
+ ],
11512
+ creditsEarned: 3,
11513
+ term: "Fall 2022"
11514
+ }
11515
+ },
11516
+ {
11517
+ "@context": [
11518
+ "https://www.w3.org/ns/credentials/v2",
11519
+ "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json"
11520
+ ],
11521
+ id: "urn:uuid:wb-cs201",
11522
+ type: ["VerifiableCredential", "AchievementCredential"],
11523
+ name: "CS 201 \u2014 Data Structures and Algorithms",
11524
+ issuer: {
11525
+ id: "did:web:registrar.westbridge.edu",
11526
+ type: ["Profile"],
11527
+ name: "Westbridge University"
11528
+ },
11529
+ validFrom: "2022-12-14T00:00:00Z",
11530
+ credentialSubject: {
11531
+ id: "did:example:wb-student-2025-001",
11532
+ type: ["AchievementSubject"],
11533
+ achievement: {
11534
+ id: "https://westbridge.edu/courses/cs201",
11535
+ type: ["Achievement"],
11536
+ achievementType: "Course",
11537
+ name: "Data Structures and Algorithms",
11538
+ description: "Arrays, linked lists, trees, graphs, hash tables, sorting algorithms, and complexity analysis.",
11539
+ humanCode: "CS 201",
11540
+ fieldOfStudy: "Computer Science",
11541
+ inLanguage: "en",
11542
+ tag: ["algorithms", "complexity", "data-structures"],
11543
+ creator: {
11544
+ id: "https://westbridge.edu/departments/computer-science",
11545
+ type: ["Profile"],
11546
+ name: "Department of Computer Science"
11547
+ },
11548
+ resultDescription: [
11549
+ {
11550
+ id: "urn:uuid:wb-rd-letter",
11551
+ type: ["ResultDescription"],
11552
+ name: "Letter Grade",
11553
+ resultType: "LetterGrade",
11554
+ allowedValue: [
11555
+ "A+",
11556
+ "A",
11557
+ "A-",
11558
+ "B+",
11559
+ "B",
11560
+ "B-",
11561
+ "C+",
11562
+ "C",
11563
+ "C-",
11564
+ "D",
11565
+ "F"
11566
+ ]
11567
+ }
11568
+ ]
11569
+ },
11570
+ result: [
11571
+ {
11572
+ type: ["Result"],
11573
+ value: "A-",
11574
+ resultDescription: "urn:uuid:wb-rd-letter"
11575
+ }
11576
+ ],
11577
+ creditsEarned: 3,
11578
+ term: "Fall 2022"
11579
+ }
11580
+ },
11581
+ {
11582
+ "@context": [
11583
+ "https://www.w3.org/ns/credentials/v2",
11584
+ "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json"
11585
+ ],
11586
+ id: "urn:uuid:wb-comm201",
11587
+ type: ["VerifiableCredential", "AchievementCredential"],
11588
+ name: "COMM 201 \u2014 Technical Communication for Scientists",
11589
+ issuer: {
11590
+ id: "did:web:registrar.westbridge.edu",
11591
+ type: ["Profile"],
11592
+ name: "Westbridge University"
11593
+ },
11594
+ validFrom: "2022-12-14T00:00:00Z",
11595
+ credentialSubject: {
11596
+ id: "did:example:wb-student-2025-001",
11597
+ type: ["AchievementSubject"],
11598
+ achievement: {
11599
+ id: "https://westbridge.edu/courses/comm201",
11600
+ type: ["Achievement"],
11601
+ achievementType: "Course",
11602
+ name: "Technical Communication for Scientists",
11603
+ description: "Scientific writing, data storytelling, report structure, visualization critique, and oral presentation skills for technical audiences.",
11604
+ humanCode: "COMM 201",
11605
+ fieldOfStudy: "Communications",
11606
+ inLanguage: "en",
11607
+ tag: ["writing", "communication", "presentation"],
11608
+ creator: {
11609
+ id: "https://westbridge.edu/departments/communications",
11610
+ type: ["Profile"],
11611
+ name: "Department of Communications and Media"
11612
+ },
11613
+ resultDescription: [
11614
+ {
11615
+ id: "urn:uuid:wb-rd-letter",
11616
+ type: ["ResultDescription"],
11617
+ name: "Letter Grade",
11618
+ resultType: "LetterGrade",
11619
+ allowedValue: [
11620
+ "A+",
11621
+ "A",
11622
+ "A-",
11623
+ "B+",
11624
+ "B",
11625
+ "B-",
11626
+ "C+",
11627
+ "C",
11628
+ "C-",
11629
+ "D",
11630
+ "F"
11631
+ ]
11632
+ }
11633
+ ]
11634
+ },
11635
+ result: [
11636
+ {
11637
+ type: ["Result"],
11638
+ value: "A",
11639
+ resultDescription: "urn:uuid:wb-rd-letter"
11640
+ }
11641
+ ],
11642
+ creditsEarned: 2,
11643
+ term: "Fall 2022"
11644
+ }
11645
+ },
11646
+ // ── YEAR 2 · SPRING 2023 ──────────────────────────────────────────
11647
+ {
11648
+ "@context": [
11649
+ "https://www.w3.org/ns/credentials/v2",
11650
+ "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json"
11651
+ ],
11652
+ id: "urn:uuid:wb-ds211",
11653
+ type: ["VerifiableCredential", "AchievementCredential"],
11654
+ name: "DS 211 \u2014 Statistical Modeling",
11655
+ issuer: {
11656
+ id: "did:web:registrar.westbridge.edu",
11657
+ type: ["Profile"],
11658
+ name: "Westbridge University"
11659
+ },
11660
+ validFrom: "2023-05-09T00:00:00Z",
11661
+ credentialSubject: {
11662
+ id: "did:example:wb-student-2025-001",
11663
+ type: ["AchievementSubject"],
11664
+ achievement: {
11665
+ id: "https://westbridge.edu/courses/ds211",
11666
+ type: ["Achievement"],
11667
+ achievementType: "Course",
11668
+ name: "Statistical Modeling",
11669
+ description: "Generalized linear models, regularization, time-series analysis, survival analysis, and model diagnostics.",
11670
+ humanCode: "DS 211",
11671
+ fieldOfStudy: "Data Science",
11672
+ inLanguage: "en",
11673
+ tag: ["modeling", "statistics", "regression"],
11674
+ creator: {
11675
+ id: "https://westbridge.edu/departments/data-science",
11676
+ type: ["Profile"],
11677
+ name: "Department of Data Science"
11678
+ },
11679
+ resultDescription: [
11680
+ {
11681
+ id: "urn:uuid:wb-rd-letter",
11682
+ type: ["ResultDescription"],
11683
+ name: "Letter Grade",
11684
+ resultType: "LetterGrade",
11685
+ allowedValue: [
11686
+ "A+",
11687
+ "A",
11688
+ "A-",
11689
+ "B+",
11690
+ "B",
11691
+ "B-",
11692
+ "C+",
11693
+ "C",
11694
+ "C-",
11695
+ "D",
11696
+ "F"
11697
+ ]
11698
+ }
11699
+ ]
11700
+ },
11701
+ result: [
11702
+ {
11703
+ type: ["Result"],
11704
+ value: "A",
11705
+ resultDescription: "urn:uuid:wb-rd-letter"
11706
+ }
11707
+ ],
11708
+ creditsEarned: 3,
11709
+ term: "Spring 2023"
11710
+ }
11711
+ },
11712
+ {
11713
+ "@context": [
11714
+ "https://www.w3.org/ns/credentials/v2",
11715
+ "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json"
11716
+ ],
11717
+ id: "urn:uuid:wb-cs310",
11718
+ type: ["VerifiableCredential", "AchievementCredential"],
11719
+ name: "CS 310 \u2014 Database Systems",
11720
+ issuer: {
11721
+ id: "did:web:registrar.westbridge.edu",
11722
+ type: ["Profile"],
11723
+ name: "Westbridge University"
11724
+ },
11725
+ validFrom: "2023-05-09T00:00:00Z",
11726
+ credentialSubject: {
11727
+ id: "did:example:wb-student-2025-001",
11728
+ type: ["AchievementSubject"],
11729
+ achievement: {
11730
+ id: "https://westbridge.edu/courses/cs310",
11731
+ type: ["Achievement"],
11732
+ achievementType: "Course",
11733
+ name: "Database Systems",
11734
+ description: "Relational model, SQL, query optimization, transactions, NoSQL databases, and data warehousing patterns for analytics.",
11735
+ humanCode: "CS 310",
11736
+ fieldOfStudy: "Computer Science",
11737
+ inLanguage: "en",
11738
+ tag: ["sql", "databases", "nosql"],
11739
+ creator: {
11740
+ id: "https://westbridge.edu/departments/computer-science",
11741
+ type: ["Profile"],
11742
+ name: "Department of Computer Science"
11743
+ },
11744
+ resultDescription: [
11745
+ {
11746
+ id: "urn:uuid:wb-rd-letter",
11747
+ type: ["ResultDescription"],
11748
+ name: "Letter Grade",
11749
+ resultType: "LetterGrade",
11750
+ allowedValue: [
11751
+ "A+",
11752
+ "A",
11753
+ "A-",
11754
+ "B+",
11755
+ "B",
11756
+ "B-",
11757
+ "C+",
11758
+ "C",
11759
+ "C-",
11760
+ "D",
11761
+ "F"
11762
+ ]
11763
+ }
11764
+ ]
11765
+ },
11766
+ result: [
11767
+ {
11768
+ type: ["Result"],
11769
+ value: "A-",
11770
+ resultDescription: "urn:uuid:wb-rd-letter"
11771
+ }
11772
+ ],
11773
+ creditsEarned: 3,
11774
+ term: "Spring 2023"
11775
+ }
11776
+ },
11777
+ {
11778
+ "@context": [
11779
+ "https://www.w3.org/ns/credentials/v2",
11780
+ "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json"
11781
+ ],
11782
+ id: "urn:uuid:wb-econ201",
11783
+ type: ["VerifiableCredential", "AchievementCredential"],
11784
+ name: "ECON 201 \u2014 Econometrics",
11785
+ issuer: {
11786
+ id: "did:web:registrar.westbridge.edu",
11787
+ type: ["Profile"],
11788
+ name: "Westbridge University"
11789
+ },
11790
+ validFrom: "2023-05-09T00:00:00Z",
11791
+ credentialSubject: {
11792
+ id: "did:example:wb-student-2025-001",
11793
+ type: ["AchievementSubject"],
11794
+ achievement: {
11795
+ id: "https://westbridge.edu/courses/econ201",
11796
+ type: ["Achievement"],
11797
+ achievementType: "Course",
11798
+ name: "Econometrics",
11799
+ description: "Causal inference, instrumental variables, difference-in-differences, panel data models, and applied regression in economic contexts.",
11800
+ humanCode: "ECON 201",
11801
+ fieldOfStudy: "Economics",
11802
+ inLanguage: "en",
11803
+ tag: ["causal-inference", "economics", "regression"],
11804
+ creator: {
11805
+ id: "https://westbridge.edu/departments/economics",
11806
+ type: ["Profile"],
11807
+ name: "Department of Economics"
11808
+ },
11809
+ resultDescription: [
11810
+ {
11811
+ id: "urn:uuid:wb-rd-letter",
11812
+ type: ["ResultDescription"],
11813
+ name: "Letter Grade",
11814
+ resultType: "LetterGrade",
11815
+ allowedValue: [
11816
+ "A+",
11817
+ "A",
11818
+ "A-",
11819
+ "B+",
11820
+ "B",
11821
+ "B-",
11822
+ "C+",
11823
+ "C",
11824
+ "C-",
11825
+ "D",
11826
+ "F"
11827
+ ]
11828
+ }
11829
+ ]
11830
+ },
11831
+ result: [
11832
+ {
11833
+ type: ["Result"],
11834
+ value: "B+",
11835
+ resultDescription: "urn:uuid:wb-rd-letter"
11836
+ }
11837
+ ],
11838
+ creditsEarned: 3,
11839
+ term: "Spring 2023"
11840
+ }
11841
+ },
11842
+ // ── YEAR 3 · FALL 2023 ────────────────────────────────────────────
11843
+ {
11844
+ "@context": [
11845
+ "https://www.w3.org/ns/credentials/v2",
11846
+ "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json"
11847
+ ],
11848
+ id: "urn:uuid:wb-ds301",
11849
+ type: ["VerifiableCredential", "AchievementCredential"],
11850
+ name: "DS 301 \u2014 Deep Learning",
11851
+ issuer: {
11852
+ id: "did:web:registrar.westbridge.edu",
11853
+ type: ["Profile"],
11854
+ name: "Westbridge University"
11855
+ },
11856
+ validFrom: "2023-12-13T00:00:00Z",
11857
+ credentialSubject: {
11858
+ id: "did:example:wb-student-2025-001",
11859
+ type: ["AchievementSubject"],
11860
+ achievement: {
11861
+ id: "https://westbridge.edu/courses/ds301",
11862
+ type: ["Achievement"],
11863
+ achievementType: "Course",
11864
+ name: "Deep Learning",
11865
+ description: "Neural network architectures, backpropagation, CNNs, RNNs, transformers, and training at scale using PyTorch.",
11866
+ humanCode: "DS 301",
11867
+ fieldOfStudy: "Data Science",
11868
+ inLanguage: "en",
11869
+ tag: ["deep-learning", "pytorch", "neural-networks"],
11870
+ creator: {
11871
+ id: "https://westbridge.edu/departments/data-science",
11872
+ type: ["Profile"],
11873
+ name: "Department of Data Science"
11874
+ },
11875
+ alignment: [
11876
+ {
11877
+ type: ["Alignment"],
11878
+ targetCode: "DS.ML.3",
11879
+ targetName: "Deep Learning Practice",
11880
+ targetFramework: "Westbridge DS Competency Framework v2",
11881
+ targetType: "CFItem",
11882
+ targetUrl: "https://westbridge.edu/frameworks/ds/ML.3",
11883
+ targetDescription: "Designs, trains, and evaluates deep neural network models for real-world tasks."
11884
+ }
11885
+ ],
11886
+ resultDescription: [
11887
+ {
11888
+ id: "urn:uuid:wb-rd-letter",
11889
+ type: ["ResultDescription"],
11890
+ name: "Letter Grade",
11891
+ resultType: "LetterGrade",
11892
+ allowedValue: [
11893
+ "A+",
11894
+ "A",
11895
+ "A-",
11896
+ "B+",
11897
+ "B",
11898
+ "B-",
11899
+ "C+",
11900
+ "C",
11901
+ "C-",
11902
+ "D",
11903
+ "F"
11904
+ ]
11905
+ }
11906
+ ]
11907
+ },
11908
+ result: [
11909
+ {
11910
+ type: ["Result"],
11911
+ value: "A",
11912
+ resultDescription: "urn:uuid:wb-rd-letter"
11913
+ }
11914
+ ],
11915
+ creditsEarned: 3,
11916
+ term: "Fall 2023"
11917
+ }
11918
+ },
11919
+ {
11920
+ "@context": [
11921
+ "https://www.w3.org/ns/credentials/v2",
11922
+ "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json"
11923
+ ],
11924
+ id: "urn:uuid:wb-ds310",
11925
+ type: ["VerifiableCredential", "AchievementCredential"],
11926
+ name: "DS 310 \u2014 Natural Language Processing",
11927
+ issuer: {
11928
+ id: "did:web:registrar.westbridge.edu",
11929
+ type: ["Profile"],
11930
+ name: "Westbridge University"
11931
+ },
11932
+ validFrom: "2023-12-13T00:00:00Z",
11933
+ credentialSubject: {
11934
+ id: "did:example:wb-student-2025-001",
11935
+ type: ["AchievementSubject"],
11936
+ achievement: {
11937
+ id: "https://westbridge.edu/courses/ds310",
11938
+ type: ["Achievement"],
11939
+ achievementType: "Course",
11940
+ name: "Natural Language Processing",
11941
+ description: "Text preprocessing, word embeddings, sequence models, attention mechanisms, and pre-trained language model fine-tuning.",
11942
+ humanCode: "DS 310",
11943
+ fieldOfStudy: "Data Science",
11944
+ inLanguage: "en",
11945
+ tag: ["nlp", "transformers", "llm"],
11946
+ creator: {
11947
+ id: "https://westbridge.edu/departments/data-science",
11948
+ type: ["Profile"],
11949
+ name: "Department of Data Science"
11950
+ },
11951
+ resultDescription: [
11952
+ {
11953
+ id: "urn:uuid:wb-rd-letter",
11954
+ type: ["ResultDescription"],
11955
+ name: "Letter Grade",
11956
+ resultType: "LetterGrade",
11957
+ allowedValue: [
11958
+ "A+",
11959
+ "A",
11960
+ "A-",
11961
+ "B+",
11962
+ "B",
11963
+ "B-",
11964
+ "C+",
11965
+ "C",
11966
+ "C-",
11967
+ "D",
11968
+ "F"
11969
+ ]
11970
+ }
11971
+ ]
11972
+ },
11973
+ result: [
11974
+ {
11975
+ type: ["Result"],
11976
+ value: "A",
11977
+ resultDescription: "urn:uuid:wb-rd-letter"
11978
+ }
11979
+ ],
11980
+ creditsEarned: 3,
11981
+ term: "Fall 2023"
11982
+ }
11983
+ },
11984
+ {
11985
+ "@context": [
11986
+ "https://www.w3.org/ns/credentials/v2",
11987
+ "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json"
11988
+ ],
11989
+ id: "urn:uuid:wb-phil310",
11990
+ type: ["VerifiableCredential", "AchievementCredential"],
11991
+ name: "PHIL 310 \u2014 Ethics in Artificial Intelligence",
11992
+ issuer: {
11993
+ id: "did:web:registrar.westbridge.edu",
11994
+ type: ["Profile"],
11995
+ name: "Westbridge University"
11996
+ },
11997
+ validFrom: "2023-12-13T00:00:00Z",
11998
+ credentialSubject: {
11999
+ id: "did:example:wb-student-2025-001",
12000
+ type: ["AchievementSubject"],
12001
+ achievement: {
12002
+ id: "https://westbridge.edu/courses/phil310",
12003
+ type: ["Achievement"],
12004
+ achievementType: "Course",
12005
+ name: "Ethics in Artificial Intelligence",
12006
+ description: "Algorithmic bias, fairness, transparency, accountability, privacy, and the societal implications of automated decision-making.",
12007
+ humanCode: "PHIL 310",
12008
+ fieldOfStudy: "Philosophy",
12009
+ inLanguage: "en",
12010
+ tag: ["ethics", "ai", "fairness"],
12011
+ creator: {
12012
+ id: "https://westbridge.edu/departments/philosophy",
12013
+ type: ["Profile"],
12014
+ name: "Department of Philosophy"
12015
+ },
12016
+ alignment: [
12017
+ {
12018
+ type: ["Alignment"],
12019
+ targetCode: "DS.ETHICS.1",
12020
+ targetName: "Responsible AI",
12021
+ targetFramework: "Westbridge DS Competency Framework v2",
12022
+ targetType: "CFItem",
12023
+ targetUrl: "https://westbridge.edu/frameworks/ds/ETHICS.1",
12024
+ targetDescription: "Evaluates AI systems for bias, fairness, and ethical risk."
12025
+ }
12026
+ ],
12027
+ resultDescription: [
12028
+ {
12029
+ id: "urn:uuid:wb-rd-letter",
12030
+ type: ["ResultDescription"],
12031
+ name: "Letter Grade",
12032
+ resultType: "LetterGrade",
12033
+ allowedValue: [
12034
+ "A+",
12035
+ "A",
12036
+ "A-",
12037
+ "B+",
12038
+ "B",
12039
+ "B-",
12040
+ "C+",
12041
+ "C",
12042
+ "C-",
12043
+ "D",
12044
+ "F"
12045
+ ]
12046
+ }
12047
+ ]
12048
+ },
12049
+ result: [
12050
+ {
12051
+ type: ["Result"],
12052
+ value: "A",
12053
+ resultDescription: "urn:uuid:wb-rd-letter"
12054
+ }
12055
+ ],
12056
+ creditsEarned: 3,
12057
+ term: "Fall 2023"
12058
+ }
12059
+ },
12060
+ // ── YEAR 3 · SPRING 2024 ──────────────────────────────────────────
12061
+ {
12062
+ "@context": [
12063
+ "https://www.w3.org/ns/credentials/v2",
12064
+ "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json"
12065
+ ],
12066
+ id: "urn:uuid:wb-ds311",
12067
+ type: ["VerifiableCredential", "AchievementCredential"],
12068
+ name: "DS 311 \u2014 Computer Vision",
12069
+ issuer: {
12070
+ id: "did:web:registrar.westbridge.edu",
12071
+ type: ["Profile"],
12072
+ name: "Westbridge University"
12073
+ },
12074
+ validFrom: "2024-05-07T00:00:00Z",
12075
+ credentialSubject: {
12076
+ id: "did:example:wb-student-2025-001",
12077
+ type: ["AchievementSubject"],
12078
+ achievement: {
12079
+ id: "https://westbridge.edu/courses/ds311",
12080
+ type: ["Achievement"],
12081
+ achievementType: "Course",
12082
+ name: "Computer Vision",
12083
+ description: "Image classification, object detection, semantic segmentation, and generative models using convolutional and vision transformer architectures.",
12084
+ humanCode: "DS 311",
12085
+ fieldOfStudy: "Data Science",
12086
+ inLanguage: "en",
12087
+ tag: ["computer-vision", "cnn", "vit"],
12088
+ creator: {
12089
+ id: "https://westbridge.edu/departments/data-science",
12090
+ type: ["Profile"],
12091
+ name: "Department of Data Science"
12092
+ },
12093
+ resultDescription: [
12094
+ {
12095
+ id: "urn:uuid:wb-rd-letter",
12096
+ type: ["ResultDescription"],
12097
+ name: "Letter Grade",
12098
+ resultType: "LetterGrade",
12099
+ allowedValue: [
12100
+ "A+",
12101
+ "A",
12102
+ "A-",
12103
+ "B+",
12104
+ "B",
12105
+ "B-",
12106
+ "C+",
12107
+ "C",
12108
+ "C-",
12109
+ "D",
12110
+ "F"
12111
+ ]
12112
+ }
12113
+ ]
12114
+ },
12115
+ result: [
12116
+ {
12117
+ type: ["Result"],
12118
+ value: "A",
12119
+ resultDescription: "urn:uuid:wb-rd-letter"
12120
+ }
12121
+ ],
12122
+ creditsEarned: 3,
12123
+ term: "Spring 2024"
12124
+ }
12125
+ },
12126
+ {
12127
+ "@context": [
12128
+ "https://www.w3.org/ns/credentials/v2",
12129
+ "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json"
12130
+ ],
12131
+ id: "urn:uuid:wb-ds320",
12132
+ type: ["VerifiableCredential", "AchievementCredential"],
12133
+ name: "DS 320 \u2014 Big Data Engineering",
12134
+ issuer: {
12135
+ id: "did:web:registrar.westbridge.edu",
12136
+ type: ["Profile"],
12137
+ name: "Westbridge University"
12138
+ },
12139
+ validFrom: "2024-05-07T00:00:00Z",
12140
+ credentialSubject: {
12141
+ id: "did:example:wb-student-2025-001",
12142
+ type: ["AchievementSubject"],
12143
+ achievement: {
12144
+ id: "https://westbridge.edu/courses/ds320",
12145
+ type: ["Achievement"],
12146
+ achievementType: "Course",
12147
+ name: "Big Data Engineering",
12148
+ description: "Distributed computing with Spark, streaming data pipelines with Kafka, data lake architectures, and cloud-native processing on AWS and GCP.",
12149
+ humanCode: "DS 320",
12150
+ fieldOfStudy: "Data Science",
12151
+ inLanguage: "en",
12152
+ tag: ["spark", "kafka", "cloud", "distributed"],
12153
+ creator: {
12154
+ id: "https://westbridge.edu/departments/data-science",
12155
+ type: ["Profile"],
12156
+ name: "Department of Data Science"
12157
+ },
12158
+ resultDescription: [
12159
+ {
12160
+ id: "urn:uuid:wb-rd-letter",
12161
+ type: ["ResultDescription"],
12162
+ name: "Letter Grade",
12163
+ resultType: "LetterGrade",
12164
+ allowedValue: [
12165
+ "A+",
12166
+ "A",
12167
+ "A-",
12168
+ "B+",
12169
+ "B",
12170
+ "B-",
12171
+ "C+",
12172
+ "C",
12173
+ "C-",
12174
+ "D",
12175
+ "F"
12176
+ ]
12177
+ }
12178
+ ]
12179
+ },
12180
+ result: [
12181
+ {
12182
+ type: ["Result"],
12183
+ value: "A-",
12184
+ resultDescription: "urn:uuid:wb-rd-letter"
12185
+ }
12186
+ ],
12187
+ creditsEarned: 3,
12188
+ term: "Spring 2024"
12189
+ }
12190
+ },
12191
+ {
12192
+ "@context": [
12193
+ "https://www.w3.org/ns/credentials/v2",
12194
+ "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json"
12195
+ ],
12196
+ id: "urn:uuid:wb-stat401",
12197
+ type: ["VerifiableCredential", "AchievementCredential"],
12198
+ name: "STAT 401 \u2014 Bayesian Statistics",
12199
+ issuer: {
12200
+ id: "did:web:registrar.westbridge.edu",
12201
+ type: ["Profile"],
12202
+ name: "Westbridge University"
12203
+ },
12204
+ validFrom: "2024-05-07T00:00:00Z",
12205
+ credentialSubject: {
12206
+ id: "did:example:wb-student-2025-001",
12207
+ type: ["AchievementSubject"],
12208
+ achievement: {
12209
+ id: "https://westbridge.edu/courses/stat401",
12210
+ type: ["Achievement"],
12211
+ achievementType: "Course",
12212
+ name: "Bayesian Statistics",
12213
+ description: "Bayesian inference, prior and posterior distributions, MCMC sampling, hierarchical models, and probabilistic programming with Stan.",
12214
+ humanCode: "STAT 401",
12215
+ fieldOfStudy: "Statistics",
12216
+ inLanguage: "en",
12217
+ tag: ["bayesian", "mcmc", "statistics"],
12218
+ creator: {
12219
+ id: "https://westbridge.edu/departments/statistics",
12220
+ type: ["Profile"],
12221
+ name: "Department of Statistics and Applied Mathematics"
12222
+ },
12223
+ resultDescription: [
12224
+ {
12225
+ id: "urn:uuid:wb-rd-letter",
12226
+ type: ["ResultDescription"],
12227
+ name: "Letter Grade",
12228
+ resultType: "LetterGrade",
12229
+ allowedValue: [
12230
+ "A+",
12231
+ "A",
12232
+ "A-",
12233
+ "B+",
12234
+ "B",
12235
+ "B-",
12236
+ "C+",
12237
+ "C",
12238
+ "C-",
12239
+ "D",
12240
+ "F"
12241
+ ]
12242
+ }
12243
+ ]
12244
+ },
12245
+ result: [
12246
+ {
12247
+ type: ["Result"],
12248
+ value: "A",
12249
+ resultDescription: "urn:uuid:wb-rd-letter"
12250
+ }
12251
+ ],
12252
+ creditsEarned: 3,
12253
+ term: "Spring 2024"
12254
+ }
12255
+ },
12256
+ // ── YEAR 4 · FALL 2024 ────────────────────────────────────────────
12257
+ {
12258
+ "@context": [
12259
+ "https://www.w3.org/ns/credentials/v2",
12260
+ "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json"
12261
+ ],
12262
+ id: "urn:uuid:wb-ds401",
12263
+ type: ["VerifiableCredential", "AchievementCredential"],
12264
+ name: "DS 401 \u2014 Advanced Topics in AI",
12265
+ issuer: {
12266
+ id: "did:web:registrar.westbridge.edu",
12267
+ type: ["Profile"],
12268
+ name: "Westbridge University"
12269
+ },
12270
+ validFrom: "2024-12-11T00:00:00Z",
12271
+ credentialSubject: {
12272
+ id: "did:example:wb-student-2025-001",
12273
+ type: ["AchievementSubject"],
12274
+ achievement: {
12275
+ id: "https://westbridge.edu/courses/ds401",
12276
+ type: ["Achievement"],
12277
+ achievementType: "Course",
12278
+ name: "Advanced Topics in AI",
12279
+ description: "Reinforcement learning, multi-agent systems, causal ML, and emerging research directions in large-scale foundation models.",
12280
+ humanCode: "DS 401",
12281
+ fieldOfStudy: "Data Science",
12282
+ inLanguage: "en",
12283
+ tag: ["reinforcement-learning", "causal-ml", "research"],
12284
+ creator: {
12285
+ id: "https://westbridge.edu/departments/data-science",
12286
+ type: ["Profile"],
12287
+ name: "Department of Data Science"
12288
+ },
12289
+ resultDescription: [
12290
+ {
12291
+ id: "urn:uuid:wb-rd-letter",
12292
+ type: ["ResultDescription"],
12293
+ name: "Letter Grade",
12294
+ resultType: "LetterGrade",
12295
+ allowedValue: [
12296
+ "A+",
12297
+ "A",
12298
+ "A-",
12299
+ "B+",
12300
+ "B",
12301
+ "B-",
12302
+ "C+",
12303
+ "C",
12304
+ "C-",
12305
+ "D",
12306
+ "F"
12307
+ ]
12308
+ }
12309
+ ]
12310
+ },
12311
+ result: [
12312
+ {
12313
+ type: ["Result"],
12314
+ value: "A",
12315
+ resultDescription: "urn:uuid:wb-rd-letter"
12316
+ }
12317
+ ],
12318
+ creditsEarned: 3,
12319
+ term: "Fall 2024"
12320
+ }
12321
+ },
12322
+ {
12323
+ "@context": [
12324
+ "https://www.w3.org/ns/credentials/v2",
12325
+ "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json"
12326
+ ],
12327
+ id: "urn:uuid:wb-ds410",
12328
+ type: ["VerifiableCredential", "AchievementCredential"],
12329
+ name: "DS 410 \u2014 MLOps and Production Systems",
12330
+ issuer: {
12331
+ id: "did:web:registrar.westbridge.edu",
12332
+ type: ["Profile"],
12333
+ name: "Westbridge University"
12334
+ },
12335
+ validFrom: "2024-12-11T00:00:00Z",
12336
+ credentialSubject: {
12337
+ id: "did:example:wb-student-2025-001",
12338
+ type: ["AchievementSubject"],
12339
+ achievement: {
12340
+ id: "https://westbridge.edu/courses/ds410",
12341
+ type: ["Achievement"],
12342
+ achievementType: "Course",
12343
+ name: "MLOps and Production Systems",
12344
+ description: "Model versioning, experiment tracking, CI/CD for ML, monitoring, drift detection, and responsible deployment practices.",
12345
+ humanCode: "DS 410",
12346
+ fieldOfStudy: "Data Science",
12347
+ inLanguage: "en",
12348
+ tag: ["mlops", "deployment", "monitoring"],
12349
+ creator: {
12350
+ id: "https://westbridge.edu/departments/data-science",
12351
+ type: ["Profile"],
12352
+ name: "Department of Data Science"
12353
+ },
12354
+ resultDescription: [
12355
+ {
12356
+ id: "urn:uuid:wb-rd-letter",
12357
+ type: ["ResultDescription"],
12358
+ name: "Letter Grade",
12359
+ resultType: "LetterGrade",
12360
+ allowedValue: [
12361
+ "A+",
12362
+ "A",
12363
+ "A-",
12364
+ "B+",
12365
+ "B",
12366
+ "B-",
12367
+ "C+",
12368
+ "C",
12369
+ "C-",
12370
+ "D",
12371
+ "F"
12372
+ ]
12373
+ }
12374
+ ]
12375
+ },
12376
+ result: [
12377
+ {
12378
+ type: ["Result"],
12379
+ value: "A-",
12380
+ resultDescription: "urn:uuid:wb-rd-letter"
12381
+ }
12382
+ ],
12383
+ creditsEarned: 3,
12384
+ term: "Fall 2024"
12385
+ }
12386
+ },
12387
+ {
12388
+ "@context": [
12389
+ "https://www.w3.org/ns/credentials/v2",
12390
+ "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json"
12391
+ ],
12392
+ id: "urn:uuid:wb-ds420",
12393
+ type: ["VerifiableCredential", "AchievementCredential"],
12394
+ name: "DS 420 \u2014 Data Privacy and Security",
12395
+ issuer: {
12396
+ id: "did:web:registrar.westbridge.edu",
12397
+ type: ["Profile"],
12398
+ name: "Westbridge University"
12399
+ },
12400
+ validFrom: "2024-12-11T00:00:00Z",
12401
+ credentialSubject: {
12402
+ id: "did:example:wb-student-2025-001",
12403
+ type: ["AchievementSubject"],
12404
+ achievement: {
12405
+ id: "https://westbridge.edu/courses/ds420",
12406
+ type: ["Achievement"],
12407
+ achievementType: "Course",
12408
+ name: "Data Privacy and Security",
12409
+ description: "Differential privacy, federated learning, anonymization techniques, adversarial attacks, and regulatory compliance (GDPR, FERPA).",
12410
+ humanCode: "DS 420",
12411
+ fieldOfStudy: "Data Science",
12412
+ inLanguage: "en",
12413
+ tag: ["privacy", "security", "differential-privacy"],
12414
+ creator: {
12415
+ id: "https://westbridge.edu/departments/data-science",
12416
+ type: ["Profile"],
12417
+ name: "Department of Data Science"
12418
+ },
12419
+ resultDescription: [
12420
+ {
12421
+ id: "urn:uuid:wb-rd-letter",
12422
+ type: ["ResultDescription"],
12423
+ name: "Letter Grade",
12424
+ resultType: "LetterGrade",
12425
+ allowedValue: [
12426
+ "A+",
12427
+ "A",
12428
+ "A-",
12429
+ "B+",
12430
+ "B",
12431
+ "B-",
12432
+ "C+",
12433
+ "C",
12434
+ "C-",
12435
+ "D",
12436
+ "F"
12437
+ ]
12438
+ }
12439
+ ]
12440
+ },
12441
+ result: [
12442
+ {
12443
+ type: ["Result"],
12444
+ value: "A",
12445
+ resultDescription: "urn:uuid:wb-rd-letter"
12446
+ }
12447
+ ],
12448
+ creditsEarned: 3,
12449
+ term: "Fall 2024"
12450
+ }
12451
+ },
12452
+ // ── YEAR 4 · SPRING 2025 ──────────────────────────────────────────
12453
+ {
12454
+ "@context": [
12455
+ "https://www.w3.org/ns/credentials/v2",
12456
+ "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json"
12457
+ ],
12458
+ id: "urn:uuid:wb-ds490",
12459
+ type: ["VerifiableCredential", "AchievementCredential"],
12460
+ name: "DS 490 \u2014 Data Science Capstone",
12461
+ issuer: {
12462
+ id: "did:web:registrar.westbridge.edu",
12463
+ type: ["Profile"],
12464
+ name: "Westbridge University"
12465
+ },
12466
+ validFrom: "2025-05-07T00:00:00Z",
12467
+ evidence: [
12468
+ {
12469
+ id: "https://westbridge.edu/capstone/2025/reyes-jordan-report.pdf",
12470
+ type: ["Evidence"],
12471
+ name: "Capstone Final Report",
12472
+ description: 'Full written report for DS 490 capstone project: "Equitable Predictive Models for Community Health Resource Allocation".',
12473
+ genre: "Document",
12474
+ audience: "Faculty, Industry Partner"
12475
+ }
12476
+ ],
12477
+ credentialSubject: {
12478
+ id: "did:example:wb-student-2025-001",
12479
+ type: ["AchievementSubject"],
12480
+ achievement: {
12481
+ id: "https://westbridge.edu/courses/ds490",
12482
+ type: ["Achievement"],
12483
+ achievementType: "Course",
12484
+ name: "Data Science Capstone",
12485
+ description: "Year-long applied research project with an external partner. Students formulate a problem, collect and analyze data, and deliver a production-ready solution with full documentation.",
12486
+ humanCode: "DS 490",
12487
+ fieldOfStudy: "Data Science",
12488
+ inLanguage: "en",
12489
+ tag: ["capstone", "research", "applied"],
12490
+ creator: {
12491
+ id: "https://westbridge.edu/departments/data-science",
12492
+ type: ["Profile"],
12493
+ name: "Department of Data Science"
12494
+ },
12495
+ resultDescription: [
12496
+ {
12497
+ id: "urn:uuid:wb-rd-letter",
12498
+ type: ["ResultDescription"],
12499
+ name: "Letter Grade",
12500
+ resultType: "LetterGrade",
12501
+ allowedValue: [
12502
+ "A+",
12503
+ "A",
12504
+ "A-",
12505
+ "B+",
12506
+ "B",
12507
+ "B-",
12508
+ "C+",
12509
+ "C",
12510
+ "C-",
12511
+ "D",
12512
+ "F"
12513
+ ]
12514
+ }
12515
+ ]
12516
+ },
12517
+ result: [
12518
+ {
12519
+ type: ["Result"],
12520
+ value: "A+",
12521
+ resultDescription: "urn:uuid:wb-rd-letter"
12522
+ }
12523
+ ],
12524
+ creditsEarned: 6,
12525
+ term: "Spring 2025"
12526
+ }
12527
+ },
12528
+ {
12529
+ "@context": [
12530
+ "https://www.w3.org/ns/credentials/v2",
12531
+ "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json"
12532
+ ],
12533
+ id: "urn:uuid:wb-ds450",
12534
+ type: ["VerifiableCredential", "AchievementCredential"],
12535
+ name: "DS 450 \u2014 Research Methods in Data Science",
12536
+ issuer: {
12537
+ id: "did:web:registrar.westbridge.edu",
12538
+ type: ["Profile"],
12539
+ name: "Westbridge University"
12540
+ },
12541
+ validFrom: "2025-05-07T00:00:00Z",
12542
+ credentialSubject: {
12543
+ id: "did:example:wb-student-2025-001",
12544
+ type: ["AchievementSubject"],
12545
+ achievement: {
12546
+ id: "https://westbridge.edu/courses/ds450",
12547
+ type: ["Achievement"],
12548
+ achievementType: "Course",
12549
+ name: "Research Methods in Data Science",
12550
+ description: "Experimental design, reproducible research workflows, literature review, IRB protocols, and dissemination of findings through papers and open-source code.",
12551
+ humanCode: "DS 450",
12552
+ fieldOfStudy: "Data Science",
12553
+ inLanguage: "en",
12554
+ tag: ["research", "reproducibility", "methodology"],
12555
+ creator: {
12556
+ id: "https://westbridge.edu/departments/data-science",
12557
+ type: ["Profile"],
12558
+ name: "Department of Data Science"
12559
+ },
12560
+ resultDescription: [
12561
+ {
12562
+ id: "urn:uuid:wb-rd-letter",
12563
+ type: ["ResultDescription"],
12564
+ name: "Letter Grade",
12565
+ resultType: "LetterGrade",
12566
+ allowedValue: [
12567
+ "A+",
12568
+ "A",
12569
+ "A-",
12570
+ "B+",
12571
+ "B",
12572
+ "B-",
12573
+ "C+",
12574
+ "C",
12575
+ "C-",
12576
+ "D",
12577
+ "F"
12578
+ ]
12579
+ }
12580
+ ]
12581
+ },
12582
+ result: [
12583
+ {
12584
+ type: ["Result"],
12585
+ value: "A",
12586
+ resultDescription: "urn:uuid:wb-rd-letter"
12587
+ }
12588
+ ],
12589
+ creditsEarned: 3,
12590
+ term: "Spring 2025"
12591
+ }
12592
+ },
12593
+ {
12594
+ "@context": [
12595
+ "https://www.w3.org/ns/credentials/v2",
12596
+ "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json"
12597
+ ],
12598
+ id: "urn:uuid:wb-ds460",
12599
+ type: ["VerifiableCredential", "AchievementCredential"],
12600
+ name: "DS 460 \u2014 Data Science for Social Impact",
12601
+ issuer: {
12602
+ id: "did:web:registrar.westbridge.edu",
12603
+ type: ["Profile"],
12604
+ name: "Westbridge University"
12605
+ },
12606
+ validFrom: "2025-05-07T00:00:00Z",
12607
+ credentialSubject: {
12608
+ id: "did:example:wb-student-2025-001",
12609
+ type: ["AchievementSubject"],
12610
+ achievement: {
12611
+ id: "https://westbridge.edu/courses/ds460",
12612
+ type: ["Achievement"],
12613
+ achievementType: "Course",
12614
+ name: "Data Science for Social Impact",
12615
+ description: "Applications of data science to public health, education, climate, and civic technology. Covers community-engaged research and responsible disclosure.",
12616
+ humanCode: "DS 460",
12617
+ fieldOfStudy: "Data Science",
12618
+ inLanguage: "en",
12619
+ tag: ["social-impact", "public-health", "civic-tech"],
12620
+ creator: {
12621
+ id: "https://westbridge.edu/departments/data-science",
12622
+ type: ["Profile"],
12623
+ name: "Department of Data Science"
12624
+ },
12625
+ resultDescription: [
12626
+ {
12627
+ id: "urn:uuid:wb-rd-letter",
12628
+ type: ["ResultDescription"],
12629
+ name: "Letter Grade",
12630
+ resultType: "LetterGrade",
12631
+ allowedValue: [
12632
+ "A+",
12633
+ "A",
12634
+ "A-",
12635
+ "B+",
12636
+ "B",
12637
+ "B-",
12638
+ "C+",
12639
+ "C",
12640
+ "C-",
12641
+ "D",
12642
+ "F"
12643
+ ]
12644
+ }
12645
+ ]
12646
+ },
12647
+ result: [
12648
+ {
12649
+ type: ["Result"],
12650
+ value: "A",
12651
+ resultDescription: "urn:uuid:wb-rd-letter"
12652
+ }
12653
+ ],
12654
+ creditsEarned: 3,
12655
+ term: "Spring 2025"
12656
+ }
12657
+ },
12658
+ // ── DEGREE ────────────────────────────────────────────────────────
12659
+ {
12660
+ "@context": [
12661
+ "https://www.w3.org/ns/credentials/v2",
12662
+ "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json"
12663
+ ],
12664
+ id: "urn:uuid:wb-degree-001",
12665
+ type: ["VerifiableCredential", "AchievementCredential"],
12666
+ name: "Bachelor of Science in Data Science",
12667
+ issuer: {
12668
+ id: "did:web:registrar.westbridge.edu",
12669
+ type: ["Profile"],
12670
+ name: "Westbridge University"
12671
+ },
12672
+ validFrom: "2025-05-18T00:00:00Z",
12673
+ credentialSubject: {
12674
+ id: "did:example:wb-student-2025-001",
12675
+ type: ["AchievementSubject"],
12676
+ achievement: {
12677
+ id: "https://westbridge.edu/programs/bs-data-science",
12678
+ type: ["Achievement"],
12679
+ achievementType: "BachelorDegree",
12680
+ name: "Bachelor of Science in Data Science",
12681
+ description: "A four-year undergraduate program preparing graduates to extract insight from complex data through rigorous quantitative, computational, and ethical training.",
12682
+ humanCode: "BS-DS",
12683
+ fieldOfStudy: "Data Science",
12684
+ inLanguage: "en",
12685
+ tag: ["degree", "undergraduate", "data-science"],
12686
+ creator: {
12687
+ id: "https://westbridge.edu/departments/data-science",
12688
+ type: ["Profile"],
12689
+ name: "Department of Data Science"
12690
+ },
12691
+ alignment: [
12692
+ {
12693
+ type: ["Alignment"],
12694
+ targetCode: "ACM-DS-2021",
12695
+ targetName: "ACM Data Science Curricular Guidance",
12696
+ targetFramework: "ACM Computing Curricula 2021",
12697
+ targetType: "CFRubric",
12698
+ targetUrl: "https://www.acm.org/education/curricula-recommendations",
12699
+ targetDescription: "Program aligns with ACM 2021 data science undergraduate guidelines."
12700
+ }
12701
+ ],
12702
+ resultDescription: [
12703
+ {
12704
+ id: "urn:uuid:wb-rd-gpa",
12705
+ type: ["ResultDescription"],
12706
+ name: "Cumulative GPA",
12707
+ resultType: "GradePointAverage",
12708
+ valueMin: "0.0",
12709
+ valueMax: "4.0"
12710
+ },
12711
+ {
12712
+ id: "urn:uuid:wb-rd-credits",
12713
+ type: ["ResultDescription"],
12714
+ name: "Total Credits Earned",
12715
+ resultType: "RawScore",
12716
+ valueMin: "0",
12717
+ valueMax: "128"
12718
+ }
12719
+ ]
12720
+ },
12721
+ result: [
12722
+ {
12723
+ type: ["Result"],
12724
+ value: 3.87,
12725
+ resultDescription: "urn:uuid:wb-rd-gpa"
12726
+ },
12727
+ {
12728
+ type: ["Result"],
12729
+ value: 81,
12730
+ resultDescription: "urn:uuid:wb-rd-credits"
12731
+ }
12732
+ ]
12733
+ }
12734
+ },
12735
+ // ── COMPETENCIES ──────────────────────────────────────────────────
12736
+ {
12737
+ "@context": [
12738
+ "https://www.w3.org/ns/credentials/v2",
12739
+ "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json"
12740
+ ],
12741
+ id: "urn:uuid:wb-comp-001",
12742
+ type: ["VerifiableCredential", "AchievementCredential"],
12743
+ name: "Competency \u2014 Statistical Reasoning",
12744
+ issuer: {
12745
+ id: "did:web:registrar.westbridge.edu",
12746
+ type: ["Profile"],
12747
+ name: "Westbridge University"
12748
+ },
12749
+ validFrom: "2025-05-18T00:00:00Z",
12750
+ credentialSubject: {
12751
+ id: "did:example:wb-student-2025-001",
12752
+ type: ["AchievementSubject"],
12753
+ achievement: {
12754
+ id: "https://westbridge.edu/competencies/statistical-reasoning",
12755
+ type: ["Achievement"],
12756
+ achievementType: "Competency",
12757
+ name: "Statistical Reasoning",
12758
+ description: "Ability to select and apply appropriate statistical methods, interpret results, communicate uncertainty, and critique statistical claims.",
12759
+ fieldOfStudy: "Data Science",
12760
+ alignment: [
12761
+ {
12762
+ type: ["Alignment"],
12763
+ targetCode: "DS.STAT.2",
12764
+ targetName: "Advanced Statistical Reasoning",
12765
+ targetFramework: "Westbridge DS Competency Framework v2",
12766
+ targetType: "CFItem",
12767
+ targetUrl: "https://westbridge.edu/frameworks/ds/STAT.2"
12768
+ }
12769
+ ],
12770
+ resultDescription: [
12771
+ {
12772
+ id: "urn:uuid:wb-rd-comp-level",
12773
+ type: ["ResultDescription"],
12774
+ name: "Competency Level",
12775
+ resultType: "RubricCriterionLevel",
12776
+ allowedValue: [
12777
+ "Developing",
12778
+ "Proficient",
12779
+ "Advanced",
12780
+ "Distinguished"
12781
+ ]
12782
+ }
12783
+ ]
12784
+ },
12785
+ result: [
12786
+ {
12787
+ type: ["Result"],
12788
+ value: "Distinguished",
12789
+ resultDescription: "urn:uuid:wb-rd-comp-level"
12790
+ }
12791
+ ]
12792
+ }
12793
+ },
12794
+ {
12795
+ "@context": [
12796
+ "https://www.w3.org/ns/credentials/v2",
12797
+ "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json"
12798
+ ],
12799
+ id: "urn:uuid:wb-comp-002",
12800
+ type: ["VerifiableCredential", "AchievementCredential"],
12801
+ name: "Competency \u2014 Data Communication",
12802
+ issuer: {
12803
+ id: "did:web:registrar.westbridge.edu",
12804
+ type: ["Profile"],
12805
+ name: "Westbridge University"
12806
+ },
12807
+ validFrom: "2025-05-18T00:00:00Z",
12808
+ credentialSubject: {
12809
+ id: "did:example:wb-student-2025-001",
12810
+ type: ["AchievementSubject"],
12811
+ achievement: {
12812
+ id: "https://westbridge.edu/competencies/data-communication",
12813
+ type: ["Achievement"],
12814
+ achievementType: "Competency",
12815
+ name: "Data Communication",
12816
+ description: "Ability to synthesize analytical findings into clear written, visual, and oral narratives for both technical and non-technical audiences.",
12817
+ fieldOfStudy: "Data Science",
12818
+ resultDescription: [
12819
+ {
12820
+ id: "urn:uuid:wb-rd-comp-level",
12821
+ type: ["ResultDescription"],
12822
+ name: "Competency Level",
12823
+ resultType: "RubricCriterionLevel",
12824
+ allowedValue: [
12825
+ "Developing",
12826
+ "Proficient",
12827
+ "Advanced",
12828
+ "Distinguished"
12829
+ ]
12830
+ }
12831
+ ]
12832
+ },
12833
+ result: [
12834
+ {
12835
+ type: ["Result"],
12836
+ value: "Distinguished",
12837
+ resultDescription: "urn:uuid:wb-rd-comp-level"
12838
+ }
12839
+ ]
12840
+ }
12841
+ },
12842
+ {
12843
+ "@context": [
12844
+ "https://www.w3.org/ns/credentials/v2",
12845
+ "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json"
12846
+ ],
12847
+ id: "urn:uuid:wb-comp-003",
12848
+ type: ["VerifiableCredential", "AchievementCredential"],
12849
+ name: "Competency \u2014 Ethical AI Practice",
12850
+ issuer: {
12851
+ id: "did:web:registrar.westbridge.edu",
12852
+ type: ["Profile"],
12853
+ name: "Westbridge University"
12854
+ },
12855
+ validFrom: "2025-05-18T00:00:00Z",
12856
+ credentialSubject: {
12857
+ id: "did:example:wb-student-2025-001",
12858
+ type: ["AchievementSubject"],
12859
+ achievement: {
12860
+ id: "https://westbridge.edu/competencies/ethical-ai",
12861
+ type: ["Achievement"],
12862
+ achievementType: "Competency",
12863
+ name: "Ethical AI Practice",
12864
+ description: "Ability to identify, analyze, and mitigate bias, fairness, and harm in AI systems; applies ethical frameworks to real-world deployment decisions.",
12865
+ fieldOfStudy: "Data Science",
12866
+ alignment: [
12867
+ {
12868
+ type: ["Alignment"],
12869
+ targetCode: "DS.ETHICS.2",
12870
+ targetName: "Ethical AI Deployment",
12871
+ targetFramework: "Westbridge DS Competency Framework v2",
12872
+ targetType: "CFItem",
12873
+ targetUrl: "https://westbridge.edu/frameworks/ds/ETHICS.2"
12874
+ }
12875
+ ],
12876
+ resultDescription: [
12877
+ {
12878
+ id: "urn:uuid:wb-rd-comp-level",
12879
+ type: ["ResultDescription"],
12880
+ name: "Competency Level",
12881
+ resultType: "RubricCriterionLevel",
12882
+ allowedValue: [
12883
+ "Developing",
12884
+ "Proficient",
12885
+ "Advanced",
12886
+ "Distinguished"
12887
+ ]
12888
+ }
12889
+ ]
12890
+ },
12891
+ result: [
12892
+ {
12893
+ type: ["Result"],
12894
+ value: "Advanced",
12895
+ resultDescription: "urn:uuid:wb-rd-comp-level"
12896
+ }
12897
+ ]
12898
+ }
12899
+ },
12900
+ // ── STANDARDIZED ASSESSMENT ───────────────────────────────────────
12901
+ {
12902
+ "@context": [
12903
+ "https://www.w3.org/ns/credentials/v2",
12904
+ "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json"
12905
+ ],
12906
+ id: "urn:uuid:wb-assess-001",
12907
+ type: ["VerifiableCredential", "AchievementCredential"],
12908
+ name: "ACT Score Report",
12909
+ issuer: {
12910
+ id: "did:web:registrar.westbridge.edu",
12911
+ type: ["Profile"],
12912
+ name: "Westbridge University"
12913
+ },
12914
+ validFrom: "2021-04-17T00:00:00Z",
12915
+ credentialSubject: {
12916
+ id: "did:example:wb-student-2025-001",
12917
+ type: ["AchievementSubject"],
12918
+ achievement: {
12919
+ id: "https://westbridge.edu/assessments/act-2021",
12920
+ type: ["Achievement"],
12921
+ achievementType: "Assessment",
12922
+ name: "ACT College Readiness Assessment",
12923
+ description: "ACT standardized college readiness test scores submitted during undergraduate admission. Scores reported on a 1\u201336 scale per section.",
12924
+ fieldOfStudy: "Assessment",
12925
+ resultDescription: [
12926
+ {
12927
+ id: "urn:uuid:wb-rd-act-composite",
12928
+ type: ["ResultDescription"],
12929
+ name: "Composite",
12930
+ resultType: "RawScore",
12931
+ valueMin: "1",
12932
+ valueMax: "36"
12933
+ },
12934
+ {
12935
+ id: "urn:uuid:wb-rd-act-english",
12936
+ type: ["ResultDescription"],
12937
+ name: "English",
12938
+ resultType: "RawScore",
12939
+ valueMin: "1",
12940
+ valueMax: "36"
12941
+ },
12942
+ {
12943
+ id: "urn:uuid:wb-rd-act-math",
12944
+ type: ["ResultDescription"],
12945
+ name: "Mathematics",
12946
+ resultType: "RawScore",
12947
+ valueMin: "1",
12948
+ valueMax: "36"
12949
+ },
12950
+ {
12951
+ id: "urn:uuid:wb-rd-act-reading",
12952
+ type: ["ResultDescription"],
12953
+ name: "Reading",
12954
+ resultType: "RawScore",
12955
+ valueMin: "1",
12956
+ valueMax: "36"
12957
+ },
12958
+ {
12959
+ id: "urn:uuid:wb-rd-act-science",
12960
+ type: ["ResultDescription"],
12961
+ name: "Science",
12962
+ resultType: "RawScore",
12963
+ valueMin: "1",
12964
+ valueMax: "36"
12965
+ },
12966
+ {
12967
+ id: "urn:uuid:wb-rd-act-writing",
12968
+ type: ["ResultDescription"],
12969
+ name: "Writing",
12970
+ resultType: "RawScore",
12971
+ valueMin: "2",
12972
+ valueMax: "12"
12973
+ }
12974
+ ]
12975
+ },
12976
+ result: [
12977
+ {
12978
+ type: ["Result"],
12979
+ value: 34,
12980
+ resultDescription: "urn:uuid:wb-rd-act-composite"
12981
+ },
12982
+ {
12983
+ type: ["Result"],
12984
+ value: 35,
12985
+ resultDescription: "urn:uuid:wb-rd-act-english"
12986
+ },
12987
+ {
12988
+ type: ["Result"],
12989
+ value: 33,
12990
+ resultDescription: "urn:uuid:wb-rd-act-math"
12991
+ },
12992
+ {
12993
+ type: ["Result"],
12994
+ value: 35,
12995
+ resultDescription: "urn:uuid:wb-rd-act-reading"
12996
+ },
12997
+ {
12998
+ type: ["Result"],
12999
+ value: 33,
13000
+ resultDescription: "urn:uuid:wb-rd-act-science"
13001
+ },
13002
+ {
13003
+ type: ["Result"],
13004
+ value: 10,
13005
+ resultDescription: "urn:uuid:wb-rd-act-writing"
13006
+ }
13007
+ ]
13008
+ }
13009
+ }
13010
+ ],
13011
+ achievement: [
13012
+ {
13013
+ id: "https://westbridge.edu/programs/bs-data-science",
13014
+ type: ["Achievement"],
13015
+ achievementType: "BachelorDegree",
13016
+ name: "Bachelor of Science in Data Science",
13017
+ humanCode: "BS-DS",
13018
+ fieldOfStudy: "Data Science",
13019
+ creator: {
13020
+ id: "https://westbridge.edu/departments/data-science",
13021
+ type: ["Profile"],
13022
+ name: "Department of Data Science"
13023
+ },
13024
+ resultDescription: [
13025
+ {
13026
+ id: "urn:uuid:wb-rd-gpa",
13027
+ type: ["ResultDescription"],
13028
+ name: "Cumulative GPA",
13029
+ resultType: "GradePointAverage",
13030
+ valueMin: "0.0",
13031
+ valueMax: "4.0"
13032
+ }
13033
+ ]
13034
+ }
13035
+ ],
13036
+ association: [
13037
+ // ── COURSE → DEGREE (isChildOf) ───────────────────────────────────
13038
+ // Every course is a component of the BS in Data Science.
13039
+ {
13040
+ type: ["Association"],
13041
+ associationType: "isChildOf",
13042
+ sourceId: "urn:uuid:wb-ds101",
13043
+ targetId: "urn:uuid:wb-degree-001"
13044
+ },
13045
+ // DS 101 → BS-DS
13046
+ {
13047
+ type: ["Association"],
13048
+ associationType: "isChildOf",
13049
+ sourceId: "urn:uuid:wb-math151",
13050
+ targetId: "urn:uuid:wb-degree-001"
13051
+ },
13052
+ // MATH 151 → BS-DS
13053
+ {
13054
+ type: ["Association"],
13055
+ associationType: "isChildOf",
13056
+ sourceId: "urn:uuid:wb-cs101",
13057
+ targetId: "urn:uuid:wb-degree-001"
13058
+ },
13059
+ // CS 101 → BS-DS
13060
+ {
13061
+ type: ["Association"],
13062
+ associationType: "isChildOf",
13063
+ sourceId: "urn:uuid:wb-stat201",
13064
+ targetId: "urn:uuid:wb-degree-001"
13065
+ },
13066
+ // STAT 201 → BS-DS
13067
+ {
13068
+ type: ["Association"],
13069
+ associationType: "isChildOf",
13070
+ sourceId: "urn:uuid:wb-math201",
13071
+ targetId: "urn:uuid:wb-degree-001"
13072
+ },
13073
+ // MATH 201 → BS-DS
13074
+ {
13075
+ type: ["Association"],
13076
+ associationType: "isChildOf",
13077
+ sourceId: "urn:uuid:wb-ds110",
13078
+ targetId: "urn:uuid:wb-degree-001"
13079
+ },
13080
+ // DS 110 → BS-DS
13081
+ {
13082
+ type: ["Association"],
13083
+ associationType: "isChildOf",
13084
+ sourceId: "urn:uuid:wb-ds201",
13085
+ targetId: "urn:uuid:wb-degree-001"
13086
+ },
13087
+ // DS 201 → BS-DS
13088
+ {
13089
+ type: ["Association"],
13090
+ associationType: "isChildOf",
13091
+ sourceId: "urn:uuid:wb-cs201",
13092
+ targetId: "urn:uuid:wb-degree-001"
13093
+ },
13094
+ // CS 201 → BS-DS
13095
+ {
13096
+ type: ["Association"],
13097
+ associationType: "isChildOf",
13098
+ sourceId: "urn:uuid:wb-comm201",
13099
+ targetId: "urn:uuid:wb-degree-001"
13100
+ },
13101
+ // COMM 201 → BS-DS
13102
+ {
13103
+ type: ["Association"],
13104
+ associationType: "isChildOf",
13105
+ sourceId: "urn:uuid:wb-ds211",
13106
+ targetId: "urn:uuid:wb-degree-001"
13107
+ },
13108
+ // DS 211 → BS-DS
13109
+ {
13110
+ type: ["Association"],
13111
+ associationType: "isChildOf",
13112
+ sourceId: "urn:uuid:wb-cs310",
13113
+ targetId: "urn:uuid:wb-degree-001"
13114
+ },
13115
+ // CS 310 → BS-DS
13116
+ {
13117
+ type: ["Association"],
13118
+ associationType: "isChildOf",
13119
+ sourceId: "urn:uuid:wb-econ201",
13120
+ targetId: "urn:uuid:wb-degree-001"
13121
+ },
13122
+ // ECON 201 → BS-DS
13123
+ {
13124
+ type: ["Association"],
13125
+ associationType: "isChildOf",
13126
+ sourceId: "urn:uuid:wb-ds301",
13127
+ targetId: "urn:uuid:wb-degree-001"
13128
+ },
13129
+ // DS 301 → BS-DS
13130
+ {
13131
+ type: ["Association"],
13132
+ associationType: "isChildOf",
13133
+ sourceId: "urn:uuid:wb-ds310",
13134
+ targetId: "urn:uuid:wb-degree-001"
13135
+ },
13136
+ // DS 310 → BS-DS
13137
+ {
13138
+ type: ["Association"],
13139
+ associationType: "isChildOf",
13140
+ sourceId: "urn:uuid:wb-phil310",
13141
+ targetId: "urn:uuid:wb-degree-001"
13142
+ },
13143
+ // PHIL 310 → BS-DS
13144
+ {
13145
+ type: ["Association"],
13146
+ associationType: "isChildOf",
13147
+ sourceId: "urn:uuid:wb-ds311",
13148
+ targetId: "urn:uuid:wb-degree-001"
13149
+ },
13150
+ // DS 311 → BS-DS
13151
+ {
13152
+ type: ["Association"],
13153
+ associationType: "isChildOf",
13154
+ sourceId: "urn:uuid:wb-ds320",
13155
+ targetId: "urn:uuid:wb-degree-001"
13156
+ },
13157
+ // DS 320 → BS-DS
13158
+ {
13159
+ type: ["Association"],
13160
+ associationType: "isChildOf",
13161
+ sourceId: "urn:uuid:wb-stat401",
13162
+ targetId: "urn:uuid:wb-degree-001"
13163
+ },
13164
+ // STAT 401 → BS-DS
13165
+ {
13166
+ type: ["Association"],
13167
+ associationType: "isChildOf",
13168
+ sourceId: "urn:uuid:wb-ds401",
13169
+ targetId: "urn:uuid:wb-degree-001"
13170
+ },
13171
+ // DS 401 → BS-DS
13172
+ {
13173
+ type: ["Association"],
13174
+ associationType: "isChildOf",
13175
+ sourceId: "urn:uuid:wb-ds410",
13176
+ targetId: "urn:uuid:wb-degree-001"
13177
+ },
13178
+ // DS 410 → BS-DS
13179
+ {
13180
+ type: ["Association"],
13181
+ associationType: "isChildOf",
13182
+ sourceId: "urn:uuid:wb-ds420",
13183
+ targetId: "urn:uuid:wb-degree-001"
13184
+ },
13185
+ // DS 420 → BS-DS
13186
+ {
13187
+ type: ["Association"],
13188
+ associationType: "isChildOf",
13189
+ sourceId: "urn:uuid:wb-ds490",
13190
+ targetId: "urn:uuid:wb-degree-001"
13191
+ },
13192
+ // DS 490 → BS-DS
13193
+ {
13194
+ type: ["Association"],
13195
+ associationType: "isChildOf",
13196
+ sourceId: "urn:uuid:wb-ds450",
13197
+ targetId: "urn:uuid:wb-degree-001"
13198
+ },
13199
+ // DS 450 → BS-DS
13200
+ {
13201
+ type: ["Association"],
13202
+ associationType: "isChildOf",
13203
+ sourceId: "urn:uuid:wb-ds460",
13204
+ targetId: "urn:uuid:wb-degree-001"
13205
+ },
13206
+ // DS 460 → BS-DS
13207
+ // ── COMPETENCY / ASSESSMENT → DEGREE (isRelatedTo) ────────────────
13208
+ // Program-level: all three competencies and the ACT score are related to
13209
+ // the degree as a whole (demonstrated across the full program).
13210
+ {
13211
+ type: ["Association"],
13212
+ associationType: "isRelatedTo",
13213
+ sourceId: "urn:uuid:wb-comp-001",
13214
+ targetId: "urn:uuid:wb-degree-001"
13215
+ },
13216
+ // Statistical Reasoning → BS-DS
13217
+ {
13218
+ type: ["Association"],
13219
+ associationType: "isRelatedTo",
13220
+ sourceId: "urn:uuid:wb-comp-002",
13221
+ targetId: "urn:uuid:wb-degree-001"
13222
+ },
13223
+ // Data Communication → BS-DS
13224
+ {
13225
+ type: ["Association"],
13226
+ associationType: "isRelatedTo",
13227
+ sourceId: "urn:uuid:wb-comp-003",
13228
+ targetId: "urn:uuid:wb-degree-001"
13229
+ },
13230
+ // Ethical AI Practice → BS-DS
13231
+ {
13232
+ type: ["Association"],
13233
+ associationType: "isRelatedTo",
13234
+ sourceId: "urn:uuid:wb-assess-001",
13235
+ targetId: "urn:uuid:wb-degree-001"
13236
+ },
13237
+ // ACT → BS-DS
13238
+ // ── COMPETENCY → COURSE (isRelatedTo) ─────────────────────────────
13239
+ // Course-level: each competency is also tied to the specific course(s)
13240
+ // that develop it, derived from matching alignment framework families.
13241
+ // Statistical Reasoning (DS.STAT.*) — STAT 201, DS 211, STAT 401
13242
+ {
13243
+ type: ["Association"],
13244
+ associationType: "isRelatedTo",
13245
+ sourceId: "urn:uuid:wb-comp-001",
13246
+ targetId: "urn:uuid:wb-stat201"
13247
+ },
13248
+ // Statistical Reasoning → STAT 201
13249
+ {
13250
+ type: ["Association"],
13251
+ associationType: "isRelatedTo",
13252
+ sourceId: "urn:uuid:wb-comp-001",
13253
+ targetId: "urn:uuid:wb-ds211"
13254
+ },
13255
+ // Statistical Reasoning → DS 211
13256
+ {
13257
+ type: ["Association"],
13258
+ associationType: "isRelatedTo",
13259
+ sourceId: "urn:uuid:wb-comp-001",
13260
+ targetId: "urn:uuid:wb-stat401"
13261
+ },
13262
+ // Statistical Reasoning → STAT 401
13263
+ // Data Communication — COMM 201
13264
+ {
13265
+ type: ["Association"],
13266
+ associationType: "isRelatedTo",
13267
+ sourceId: "urn:uuid:wb-comp-002",
13268
+ targetId: "urn:uuid:wb-comm201"
13269
+ },
13270
+ // Data Communication → COMM 201
13271
+ // Ethical AI Practice (DS.ETHICS.*) — PHIL 310, DS 420
13272
+ {
13273
+ type: ["Association"],
13274
+ associationType: "isRelatedTo",
13275
+ sourceId: "urn:uuid:wb-comp-003",
13276
+ targetId: "urn:uuid:wb-phil310"
13277
+ },
13278
+ // Ethical AI Practice → PHIL 310
13279
+ {
13280
+ type: ["Association"],
13281
+ associationType: "isRelatedTo",
13282
+ sourceId: "urn:uuid:wb-comp-003",
13283
+ targetId: "urn:uuid:wb-ds420"
13284
+ },
13285
+ // Ethical AI Practice → DS 420
13286
+ // ── PREREQUISITES (precedes) ──────────────────────────────────────
13287
+ // A → B means A must be completed before B.
13288
+ {
13289
+ type: ["Association"],
13290
+ associationType: "precedes",
13291
+ sourceId: "urn:uuid:wb-ds101",
13292
+ targetId: "urn:uuid:wb-ds110"
13293
+ },
13294
+ // DS 101 → DS 110
13295
+ {
13296
+ type: ["Association"],
13297
+ associationType: "precedes",
13298
+ sourceId: "urn:uuid:wb-ds101",
13299
+ targetId: "urn:uuid:wb-ds201"
13300
+ },
13301
+ // DS 101 → DS 201
13302
+ {
13303
+ type: ["Association"],
13304
+ associationType: "precedes",
13305
+ sourceId: "urn:uuid:wb-ds110",
13306
+ targetId: "urn:uuid:wb-ds201"
13307
+ },
13308
+ // DS 110 → DS 201
13309
+ {
13310
+ type: ["Association"],
13311
+ associationType: "precedes",
13312
+ sourceId: "urn:uuid:wb-math151",
13313
+ targetId: "urn:uuid:wb-math201"
13314
+ },
13315
+ // MATH 151 → MATH 201
13316
+ {
13317
+ type: ["Association"],
13318
+ associationType: "precedes",
13319
+ sourceId: "urn:uuid:wb-cs101",
13320
+ targetId: "urn:uuid:wb-cs201"
13321
+ },
13322
+ // CS 101 → CS 201
13323
+ {
13324
+ type: ["Association"],
13325
+ associationType: "precedes",
13326
+ sourceId: "urn:uuid:wb-stat201",
13327
+ targetId: "urn:uuid:wb-ds211"
13328
+ },
13329
+ // STAT 201 → DS 211
13330
+ {
13331
+ type: ["Association"],
13332
+ associationType: "precedes",
13333
+ sourceId: "urn:uuid:wb-cs101",
13334
+ targetId: "urn:uuid:wb-cs310"
13335
+ },
13336
+ // CS 101 → CS 310
13337
+ {
13338
+ type: ["Association"],
13339
+ associationType: "precedes",
13340
+ sourceId: "urn:uuid:wb-cs201",
13341
+ targetId: "urn:uuid:wb-cs310"
13342
+ },
13343
+ // CS 201 → CS 310
13344
+ {
13345
+ type: ["Association"],
13346
+ associationType: "precedes",
13347
+ sourceId: "urn:uuid:wb-ds201",
13348
+ targetId: "urn:uuid:wb-ds301"
13349
+ },
13350
+ // DS 201 → DS 301
13351
+ {
13352
+ type: ["Association"],
13353
+ associationType: "precedes",
13354
+ sourceId: "urn:uuid:wb-ds201",
13355
+ targetId: "urn:uuid:wb-ds310"
13356
+ },
13357
+ // DS 201 → DS 310
13358
+ {
13359
+ type: ["Association"],
13360
+ associationType: "precedes",
13361
+ sourceId: "urn:uuid:wb-ds211",
13362
+ targetId: "urn:uuid:wb-ds311"
13363
+ },
13364
+ // DS 211 → DS 311
13365
+ {
13366
+ type: ["Association"],
13367
+ associationType: "precedes",
13368
+ sourceId: "urn:uuid:wb-ds320",
13369
+ targetId: "urn:uuid:wb-ds401"
13370
+ },
13371
+ // DS 320 → DS 401
13372
+ {
13373
+ type: ["Association"],
13374
+ associationType: "precedes",
13375
+ sourceId: "urn:uuid:wb-phil310",
13376
+ targetId: "urn:uuid:wb-ds420"
13377
+ },
13378
+ // PHIL 310 → DS 420
13379
+ {
13380
+ type: ["Association"],
13381
+ associationType: "precedes",
13382
+ sourceId: "urn:uuid:wb-ds301",
13383
+ targetId: "urn:uuid:wb-ds401"
13384
+ },
13385
+ // DS 301 → DS 401
13386
+ {
13387
+ type: ["Association"],
13388
+ associationType: "precedes",
13389
+ sourceId: "urn:uuid:wb-ds301",
13390
+ targetId: "urn:uuid:wb-ds490"
13391
+ },
13392
+ // DS 301 → DS 490
13393
+ {
13394
+ type: ["Association"],
13395
+ associationType: "precedes",
13396
+ sourceId: "urn:uuid:wb-ds401",
13397
+ targetId: "urn:uuid:wb-ds490"
13398
+ },
13399
+ // DS 401 → DS 490
13400
+ {
13401
+ type: ["Association"],
13402
+ associationType: "precedes",
13403
+ sourceId: "urn:uuid:wb-ds410",
13404
+ targetId: "urn:uuid:wb-ds490"
13405
+ },
13406
+ // DS 410 → DS 490
13407
+ {
13408
+ type: ["Association"],
13409
+ associationType: "precedes",
13410
+ sourceId: "urn:uuid:wb-ds450",
13411
+ targetId: "urn:uuid:wb-ds490"
13412
+ }
13413
+ // DS 450 → DS 490
13414
+ ]
13415
+ }
13416
+ }
13417
+ };
13418
+
13419
+ // src/fixtures/clr/competency-aligned.ts
13420
+ var clrCompetencyAligned = {
13421
+ id: "clr/competency-aligned",
13422
+ name: "Riverside College \u2014 Competency-Aligned Web Development Certificate",
13423
+ description: "A compact CLR v2 transcript that ties courses and a certificate to competency framework alignments, links competency credentials to their parent courses via associations, and carries evidence at the transcript, course, and program levels.",
13424
+ spec: "clr-v2",
13425
+ profile: "learner-record",
13426
+ features: [
13427
+ "results",
13428
+ "evidence",
13429
+ "alignment",
13430
+ "image",
13431
+ "associations",
13432
+ "nested-credentials",
13433
+ "status"
13434
+ ],
13435
+ source: "synthetic",
13436
+ signed: false,
13437
+ validity: "valid",
13438
+ tags: ["transcript", "certificate", "web-development", "clr-v2", "alignment", "competencies"],
13439
+ credential: {
13440
+ "@context": [
13441
+ "https://www.w3.org/ns/credentials/v2",
13442
+ "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json",
13443
+ "https://purl.imsglobal.org/spec/clr/v2p0/context-2.0.1.json"
13444
+ ],
13445
+ id: "urn:uuid:rc-clr-2025-sam-okafor-001",
13446
+ type: ["VerifiableCredential", "ClrCredential"],
13447
+ name: "Web Development Certificate \u2014 Riverside College",
13448
+ description: "Competency-aligned certificate record for Samuel Okafor, documenting four courses, three demonstrated competencies, and the awarded Full-Stack Web Development certificate.",
13449
+ image: {
13450
+ id: "https://www.rcc.edu/_resources/assets/icons/riverside-logo.svg",
13451
+ type: "Image",
13452
+ caption: "Riverside College official logo"
13453
+ },
13454
+ issuer: {
13455
+ id: "did:web:registrar.riverside.edu",
13456
+ type: ["Profile"],
13457
+ name: "Riverside College \u2014 Office of the Registrar",
13458
+ url: "https://riverside.edu/registrar",
13459
+ email: "registrar@riverside.edu",
13460
+ image: {
13461
+ id: "https://www.rcc.edu/_resources/assets/icons/riverside-logo.svg",
13462
+ type: "Image",
13463
+ caption: "Riverside City College official logo"
13464
+ },
13465
+ address: {
13466
+ type: ["Address"],
13467
+ streetAddress: "450 River Road",
13468
+ addressLocality: "Riverside",
13469
+ addressRegion: "CA",
13470
+ postalCode: "92501",
13471
+ addressCountry: "USA"
13472
+ }
13473
+ },
13474
+ validFrom: "2025-06-02T00:00:00Z",
13475
+ awardedDate: "2025-05-30",
13476
+ credentialStatus: {
13477
+ id: "https://registrar.riverside.edu/status/2025#7",
13478
+ type: "BitstringStatusListEntry",
13479
+ statusPurpose: "revocation",
13480
+ statusListIndex: "7",
13481
+ statusListCredential: "https://registrar.riverside.edu/status/2025"
13482
+ },
13483
+ // Top-level evidence — belongs to the transcript as a whole.
13484
+ evidence: [
13485
+ {
13486
+ id: "https://registrar.riverside.edu/transcripts/t-rc-2025-001.pdf",
13487
+ type: ["Evidence"],
13488
+ name: "Official Certificate Transcript",
13489
+ description: "Official sealed certificate transcript issued by the Office of the Registrar.",
13490
+ genre: "Document",
13491
+ audience: "Employer"
13492
+ }
13493
+ ],
13494
+ credentialSubject: {
13495
+ id: "did:example:rc-student-2025-001",
13496
+ type: ["ClrSubject"],
13497
+ identifier: [
13498
+ {
13499
+ type: "IdentityObject",
13500
+ identityHash: "Samuel Okafor",
13501
+ identityType: "name",
13502
+ hashed: false
13503
+ },
13504
+ {
13505
+ type: "IdentityObject",
13506
+ identityHash: "s.okafor@riverside.edu",
13507
+ identityType: "emailAddress",
13508
+ hashed: false
13509
+ },
13510
+ {
13511
+ type: "IdentityObject",
13512
+ identityHash: "RC-2023-0188",
13513
+ identityType: "studentId",
13514
+ hashed: false
13515
+ }
13516
+ ],
13517
+ verifiableCredential: [
13518
+ // ── COURSE 1 ──────────────────────────────────────────────────────
13519
+ {
13520
+ "@context": [
13521
+ "https://www.w3.org/ns/credentials/v2",
13522
+ "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json"
13523
+ ],
13524
+ id: "urn:uuid:rc-web101",
13525
+ type: ["VerifiableCredential", "AchievementCredential"],
13526
+ name: "WEB 101 \u2014 HTML, CSS & Accessibility",
13527
+ issuer: {
13528
+ id: "did:web:registrar.riverside.edu",
13529
+ type: ["Profile"],
13530
+ name: "Riverside College"
13531
+ },
13532
+ validFrom: "2024-09-20T00:00:00Z",
13533
+ // Per-course evidence.
13534
+ evidence: [
13535
+ {
13536
+ id: "https://riverside.edu/portfolios/okafor/web101-landing-page.png",
13537
+ type: ["Evidence"],
13538
+ name: "Accessible Landing Page",
13539
+ description: "Final project: a WCAG 2.1 AA-compliant responsive landing page.",
13540
+ genre: "Image",
13541
+ audience: "Faculty, Employer"
13542
+ }
13543
+ ],
13544
+ credentialSubject: {
13545
+ id: "did:example:rc-student-2025-001",
13546
+ type: ["AchievementSubject"],
13547
+ achievement: {
13548
+ id: "https://riverside.edu/courses/web101",
13549
+ type: ["Achievement"],
13550
+ achievementType: "Course",
13551
+ name: "HTML, CSS & Accessibility",
13552
+ description: "Semantic HTML, modern CSS layout (flexbox, grid), responsive design, and building to WCAG accessibility standards.",
13553
+ humanCode: "WEB 101",
13554
+ fieldOfStudy: "Web Development",
13555
+ inLanguage: "en",
13556
+ // Course → framework competency alignment.
13557
+ alignment: [
13558
+ {
13559
+ type: ["Alignment"],
13560
+ targetCode: "WD.FRONT.1",
13561
+ targetName: "Front-End Fundamentals",
13562
+ targetFramework: "Riverside Web Dev Competency Framework",
13563
+ targetType: "CFItem",
13564
+ targetUrl: "https://riverside.edu/frameworks/wd/FRONT.1",
13565
+ targetDescription: "Builds accessible, responsive interfaces with semantic HTML and modern CSS."
13566
+ },
13567
+ {
13568
+ type: ["Alignment"],
13569
+ targetCode: "ceasn:accessibility-aware-design",
13570
+ targetName: "Accessibility-Aware Design",
13571
+ targetFramework: "Open Skills Network",
13572
+ targetType: "ceasn:Competency",
13573
+ targetUrl: "https://osn.example.org/competencies/accessibility-aware-design"
13574
+ }
13575
+ ],
13576
+ resultDescription: [
13577
+ {
13578
+ id: "urn:uuid:rc-rd-letter",
13579
+ type: ["ResultDescription"],
13580
+ name: "Letter Grade",
13581
+ resultType: "LetterGrade",
13582
+ allowedValue: ["A", "B", "C", "D", "F"]
13583
+ }
13584
+ ]
13585
+ },
13586
+ result: [
13587
+ {
13588
+ type: ["Result"],
13589
+ value: "A",
13590
+ resultDescription: "urn:uuid:rc-rd-letter"
13591
+ }
13592
+ ],
13593
+ creditsEarned: 3,
13594
+ term: "Fall 2024"
13595
+ }
13596
+ },
13597
+ // ── COURSE 2 ──────────────────────────────────────────────────────
13598
+ {
13599
+ "@context": [
13600
+ "https://www.w3.org/ns/credentials/v2",
13601
+ "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json"
13602
+ ],
13603
+ id: "urn:uuid:rc-web150",
13604
+ type: ["VerifiableCredential", "AchievementCredential"],
13605
+ name: "WEB 150 \u2014 JavaScript Programming",
13606
+ issuer: {
13607
+ id: "did:web:registrar.riverside.edu",
13608
+ type: ["Profile"],
13609
+ name: "Riverside College"
13610
+ },
13611
+ validFrom: "2024-12-18T00:00:00Z",
13612
+ evidence: [
13613
+ {
13614
+ id: "https://riverside.edu/portfolios/okafor/web150-todo-app.pdf",
13615
+ type: ["Evidence"],
13616
+ name: "Interactive To-Do App Writeup",
13617
+ description: "Project report for a vanilla-JS task manager with localStorage persistence.",
13618
+ genre: "Document",
13619
+ audience: "Faculty"
13620
+ }
13621
+ ],
13622
+ credentialSubject: {
13623
+ id: "did:example:rc-student-2025-001",
13624
+ type: ["AchievementSubject"],
13625
+ achievement: {
13626
+ id: "https://riverside.edu/courses/web150",
13627
+ type: ["Achievement"],
13628
+ achievementType: "Course",
13629
+ name: "JavaScript Programming",
13630
+ description: "Core JavaScript: types, functions, closures, the DOM, events, asynchronous patterns, and fetch.",
13631
+ humanCode: "WEB 150",
13632
+ fieldOfStudy: "Web Development",
13633
+ inLanguage: "en",
13634
+ alignment: [
13635
+ {
13636
+ type: ["Alignment"],
13637
+ targetCode: "WD.PROG.1",
13638
+ targetName: "Client-Side Programming",
13639
+ targetFramework: "Riverside Web Dev Competency Framework",
13640
+ targetType: "CFItem",
13641
+ targetUrl: "https://riverside.edu/frameworks/wd/PROG.1",
13642
+ targetDescription: "Writes interactive client-side logic using modern JavaScript."
13643
+ }
13644
+ ],
13645
+ resultDescription: [
13646
+ {
13647
+ id: "urn:uuid:rc-rd-letter",
13648
+ type: ["ResultDescription"],
13649
+ name: "Letter Grade",
13650
+ resultType: "LetterGrade",
13651
+ allowedValue: ["A", "B", "C", "D", "F"]
13652
+ }
13653
+ ]
13654
+ },
13655
+ result: [
13656
+ {
13657
+ type: ["Result"],
13658
+ value: "A-",
13659
+ resultDescription: "urn:uuid:rc-rd-letter"
13660
+ }
13661
+ ],
13662
+ creditsEarned: 4,
13663
+ term: "Fall 2024"
13664
+ }
13665
+ },
13666
+ // ── COURSE 3 ──────────────────────────────────────────────────────
13667
+ {
13668
+ "@context": [
13669
+ "https://www.w3.org/ns/credentials/v2",
13670
+ "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json"
13671
+ ],
13672
+ id: "urn:uuid:rc-web220",
13673
+ type: ["VerifiableCredential", "AchievementCredential"],
13674
+ name: "WEB 220 \u2014 React & Component Architecture",
13675
+ issuer: {
13676
+ id: "did:web:registrar.riverside.edu",
13677
+ type: ["Profile"],
13678
+ name: "Riverside College"
13679
+ },
13680
+ validFrom: "2025-05-14T00:00:00Z",
13681
+ credentialSubject: {
13682
+ id: "did:example:rc-student-2025-001",
13683
+ type: ["AchievementSubject"],
13684
+ achievement: {
13685
+ id: "https://riverside.edu/courses/web220",
13686
+ type: ["Achievement"],
13687
+ achievementType: "Course",
13688
+ name: "React & Component Architecture",
13689
+ description: "Building component-based UIs with React: hooks, state management, data fetching, and testing.",
13690
+ humanCode: "WEB 220",
13691
+ fieldOfStudy: "Web Development",
13692
+ inLanguage: "en",
13693
+ alignment: [
13694
+ {
13695
+ type: ["Alignment"],
13696
+ targetCode: "WD.PROG.2",
13697
+ targetName: "Component-Based UI Engineering",
13698
+ targetFramework: "Riverside Web Dev Competency Framework",
13699
+ targetType: "CFItem",
13700
+ targetUrl: "https://riverside.edu/frameworks/wd/PROG.2"
13701
+ }
13702
+ ],
13703
+ resultDescription: [
13704
+ {
13705
+ id: "urn:uuid:rc-rd-letter",
13706
+ type: ["ResultDescription"],
13707
+ name: "Letter Grade",
13708
+ resultType: "LetterGrade",
13709
+ allowedValue: ["A", "B", "C", "D", "F"]
13710
+ }
13711
+ ]
13712
+ },
13713
+ result: [
13714
+ {
13715
+ type: ["Result"],
13716
+ value: "A",
13717
+ resultDescription: "urn:uuid:rc-rd-letter"
13718
+ }
13719
+ ],
13720
+ creditsEarned: 4,
13721
+ term: "Spring 2025"
13722
+ }
13723
+ },
13724
+ // ── COURSE 4 ──────────────────────────────────────────────────────
13725
+ {
13726
+ "@context": [
13727
+ "https://www.w3.org/ns/credentials/v2",
13728
+ "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json"
13729
+ ],
13730
+ id: "urn:uuid:rc-web240",
13731
+ type: ["VerifiableCredential", "AchievementCredential"],
13732
+ name: "WEB 240 \u2014 APIs & Backend Services",
13733
+ issuer: {
13734
+ id: "did:web:registrar.riverside.edu",
13735
+ type: ["Profile"],
13736
+ name: "Riverside College"
13737
+ },
13738
+ validFrom: "2025-05-14T00:00:00Z",
13739
+ evidence: [
13740
+ {
13741
+ id: "https://riverside.edu/portfolios/okafor/web240-api.pdf",
13742
+ type: ["Evidence"],
13743
+ name: "REST API Design Document",
13744
+ description: "Design and implementation notes for a Node/Express REST API with auth.",
13745
+ genre: "Document",
13746
+ audience: "Faculty, Employer"
13747
+ }
13748
+ ],
13749
+ credentialSubject: {
13750
+ id: "did:example:rc-student-2025-001",
13751
+ type: ["AchievementSubject"],
13752
+ achievement: {
13753
+ id: "https://riverside.edu/courses/web240",
13754
+ type: ["Achievement"],
13755
+ achievementType: "Course",
13756
+ name: "APIs & Backend Services",
13757
+ description: "Designing and building RESTful services with Node and Express, authentication, and persistence.",
13758
+ humanCode: "WEB 240",
13759
+ fieldOfStudy: "Web Development",
13760
+ inLanguage: "en",
13761
+ alignment: [
13762
+ {
13763
+ type: ["Alignment"],
13764
+ targetCode: "WD.BACK.1",
13765
+ targetName: "Server-Side Services",
13766
+ targetFramework: "Riverside Web Dev Competency Framework",
13767
+ targetType: "CFItem",
13768
+ targetUrl: "https://riverside.edu/frameworks/wd/BACK.1"
13769
+ }
13770
+ ],
13771
+ resultDescription: [
13772
+ {
13773
+ id: "urn:uuid:rc-rd-letter",
13774
+ type: ["ResultDescription"],
13775
+ name: "Letter Grade",
13776
+ resultType: "LetterGrade",
13777
+ allowedValue: ["A", "B", "C", "D", "F"]
13778
+ }
13779
+ ]
13780
+ },
13781
+ result: [
13782
+ {
13783
+ type: ["Result"],
13784
+ value: "B+",
13785
+ resultDescription: "urn:uuid:rc-rd-letter"
13786
+ }
13787
+ ],
13788
+ creditsEarned: 4,
13789
+ term: "Spring 2025"
13790
+ }
13791
+ },
13792
+ // ── CERTIFICATE (PROGRAM) ─────────────────────────────────────────
13793
+ {
13794
+ "@context": [
13795
+ "https://www.w3.org/ns/credentials/v2",
13796
+ "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json"
13797
+ ],
13798
+ id: "urn:uuid:rc-cert-001",
13799
+ type: ["VerifiableCredential", "AchievementCredential"],
13800
+ name: "Full-Stack Web Development Certificate",
13801
+ issuer: {
13802
+ id: "did:web:registrar.riverside.edu",
13803
+ type: ["Profile"],
13804
+ name: "Riverside College"
13805
+ },
13806
+ validFrom: "2025-05-30T00:00:00Z",
13807
+ // Program-level evidence.
13808
+ evidence: [
13809
+ {
13810
+ id: "https://riverside.edu/certificates/c-rc-2025-001.jpg",
13811
+ type: ["Evidence"],
13812
+ name: "Certificate of Completion",
13813
+ description: "Full-Stack Web Development certificate awarded May 30, 2025.",
13814
+ genre: "Image",
13815
+ audience: "General"
13816
+ }
13817
+ ],
13818
+ credentialSubject: {
13819
+ id: "did:example:rc-student-2025-001",
13820
+ type: ["AchievementSubject"],
13821
+ achievement: {
13822
+ id: "https://riverside.edu/programs/fullstack-cert",
13823
+ type: ["Achievement"],
13824
+ achievementType: "LearningProgram",
13825
+ name: "Full-Stack Web Development Certificate",
13826
+ description: "A professional certificate covering the full web stack: accessible front-ends, interactive JavaScript, React, and backend APIs.",
13827
+ humanCode: "CERT-FSWD",
13828
+ fieldOfStudy: "Web Development",
13829
+ inLanguage: "en",
13830
+ // Program → framework alignment.
13831
+ alignment: [
13832
+ {
13833
+ type: ["Alignment"],
13834
+ targetCode: "OND-WEBDEV",
13835
+ targetName: "O*NET Web Developers (15-1254.00)",
13836
+ targetFramework: "O*NET-SOC 2019",
13837
+ targetType: "CTDL",
13838
+ targetUrl: "https://www.onetonline.org/link/summary/15-1254.00",
13839
+ targetDescription: "Aligns to the O*NET occupational profile for Web Developers."
13840
+ }
13841
+ ],
13842
+ resultDescription: [
13843
+ {
13844
+ id: "urn:uuid:rc-rd-gpa",
13845
+ type: ["ResultDescription"],
13846
+ name: "Certificate GPA",
13847
+ resultType: "GradePointAverage",
13848
+ valueMin: "0.0",
13849
+ valueMax: "4.0"
13850
+ }
13851
+ ]
13852
+ },
13853
+ result: [
13854
+ {
13855
+ type: ["Result"],
13856
+ value: 3.78,
13857
+ resultDescription: "urn:uuid:rc-rd-gpa"
13858
+ }
13859
+ ]
13860
+ }
13861
+ },
13862
+ // ── COMPETENCIES ──────────────────────────────────────────────────
13863
+ {
13864
+ "@context": [
13865
+ "https://www.w3.org/ns/credentials/v2",
13866
+ "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json"
13867
+ ],
13868
+ id: "urn:uuid:rc-comp-frontend",
13869
+ type: ["VerifiableCredential", "AchievementCredential"],
13870
+ name: "Competency \u2014 Accessible Front-End Development",
13871
+ issuer: {
13872
+ id: "did:web:registrar.riverside.edu",
13873
+ type: ["Profile"],
13874
+ name: "Riverside College"
13875
+ },
13876
+ validFrom: "2025-05-30T00:00:00Z",
13877
+ credentialSubject: {
13878
+ id: "did:example:rc-student-2025-001",
13879
+ type: ["AchievementSubject"],
13880
+ achievement: {
13881
+ id: "https://riverside.edu/competencies/accessible-frontend",
13882
+ type: ["Achievement"],
13883
+ achievementType: "Competency",
13884
+ name: "Accessible Front-End Development",
13885
+ description: "Builds responsive, accessible user interfaces that meet WCAG 2.1 AA.",
13886
+ fieldOfStudy: "Web Development",
13887
+ alignment: [
13888
+ {
13889
+ type: ["Alignment"],
13890
+ targetCode: "WD.FRONT.1",
13891
+ targetName: "Front-End Fundamentals",
13892
+ targetFramework: "Riverside Web Dev Competency Framework",
13893
+ targetType: "CFItem",
13894
+ targetUrl: "https://riverside.edu/frameworks/wd/FRONT.1"
13895
+ }
13896
+ ],
13897
+ resultDescription: [
13898
+ {
13899
+ id: "urn:uuid:rc-rd-comp-level",
13900
+ type: ["ResultDescription"],
13901
+ name: "Competency Level",
13902
+ resultType: "RubricCriterionLevel",
13903
+ allowedValue: ["Developing", "Proficient", "Advanced"]
13904
+ }
13905
+ ]
13906
+ },
13907
+ result: [
13908
+ {
13909
+ type: ["Result"],
13910
+ value: "Advanced",
13911
+ resultDescription: "urn:uuid:rc-rd-comp-level"
13912
+ }
13913
+ ]
13914
+ }
13915
+ },
13916
+ {
13917
+ "@context": [
13918
+ "https://www.w3.org/ns/credentials/v2",
13919
+ "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json"
13920
+ ],
13921
+ id: "urn:uuid:rc-comp-js",
13922
+ type: ["VerifiableCredential", "AchievementCredential"],
13923
+ name: "Competency \u2014 JavaScript Application Development",
13924
+ issuer: {
13925
+ id: "did:web:registrar.riverside.edu",
13926
+ type: ["Profile"],
13927
+ name: "Riverside College"
13928
+ },
13929
+ validFrom: "2025-05-30T00:00:00Z",
13930
+ credentialSubject: {
13931
+ id: "did:example:rc-student-2025-001",
13932
+ type: ["AchievementSubject"],
13933
+ achievement: {
13934
+ id: "https://riverside.edu/competencies/javascript-apps",
13935
+ type: ["Achievement"],
13936
+ achievementType: "Competency",
13937
+ name: "JavaScript Application Development",
13938
+ description: "Designs and builds interactive applications using JavaScript and React.",
13939
+ fieldOfStudy: "Web Development",
13940
+ alignment: [
13941
+ {
13942
+ type: ["Alignment"],
13943
+ targetCode: "WD.PROG.2",
13944
+ targetName: "Component-Based UI Engineering",
13945
+ targetFramework: "Riverside Web Dev Competency Framework",
13946
+ targetType: "CFItem",
13947
+ targetUrl: "https://riverside.edu/frameworks/wd/PROG.2"
13948
+ }
13949
+ ],
13950
+ resultDescription: [
13951
+ {
13952
+ id: "urn:uuid:rc-rd-comp-level",
13953
+ type: ["ResultDescription"],
13954
+ name: "Competency Level",
13955
+ resultType: "RubricCriterionLevel",
13956
+ allowedValue: ["Developing", "Proficient", "Advanced"]
13957
+ }
13958
+ ]
13959
+ },
13960
+ result: [
13961
+ {
13962
+ type: ["Result"],
13963
+ value: "Proficient",
13964
+ resultDescription: "urn:uuid:rc-rd-comp-level"
13965
+ }
13966
+ ]
13967
+ }
13968
+ },
13969
+ {
13970
+ "@context": [
13971
+ "https://www.w3.org/ns/credentials/v2",
13972
+ "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json"
13973
+ ],
13974
+ id: "urn:uuid:rc-comp-backend",
13975
+ type: ["VerifiableCredential", "AchievementCredential"],
13976
+ name: "Competency \u2014 Backend API Development",
13977
+ issuer: {
13978
+ id: "did:web:registrar.riverside.edu",
13979
+ type: ["Profile"],
13980
+ name: "Riverside College"
13981
+ },
13982
+ validFrom: "2025-05-30T00:00:00Z",
13983
+ credentialSubject: {
13984
+ id: "did:example:rc-student-2025-001",
13985
+ type: ["AchievementSubject"],
13986
+ achievement: {
13987
+ id: "https://riverside.edu/competencies/backend-apis",
13988
+ type: ["Achievement"],
13989
+ achievementType: "Competency",
13990
+ name: "Backend API Development",
13991
+ description: "Designs and implements secure RESTful services and data persistence.",
13992
+ fieldOfStudy: "Web Development",
13993
+ alignment: [
13994
+ {
13995
+ type: ["Alignment"],
13996
+ targetCode: "WD.BACK.1",
13997
+ targetName: "Server-Side Services",
13998
+ targetFramework: "Riverside Web Dev Competency Framework",
13999
+ targetType: "CFItem",
14000
+ targetUrl: "https://riverside.edu/frameworks/wd/BACK.1"
14001
+ }
14002
+ ],
14003
+ resultDescription: [
14004
+ {
14005
+ id: "urn:uuid:rc-rd-comp-level",
14006
+ type: ["ResultDescription"],
14007
+ name: "Competency Level",
14008
+ resultType: "RubricCriterionLevel",
14009
+ allowedValue: ["Developing", "Proficient", "Advanced"]
14010
+ }
14011
+ ]
14012
+ },
14013
+ result: [
14014
+ {
14015
+ type: ["Result"],
14016
+ value: "Proficient",
14017
+ resultDescription: "urn:uuid:rc-rd-comp-level"
14018
+ }
14019
+ ]
14020
+ }
14021
+ }
14022
+ ],
14023
+ association: [
14024
+ // Courses are part of the certificate.
14025
+ {
14026
+ type: ["Association"],
14027
+ associationType: "isChildOf",
14028
+ sourceId: "urn:uuid:rc-web101",
14029
+ targetId: "urn:uuid:rc-cert-001"
14030
+ },
14031
+ {
14032
+ type: ["Association"],
14033
+ associationType: "isChildOf",
14034
+ sourceId: "urn:uuid:rc-web150",
14035
+ targetId: "urn:uuid:rc-cert-001"
14036
+ },
14037
+ {
14038
+ type: ["Association"],
14039
+ associationType: "isChildOf",
14040
+ sourceId: "urn:uuid:rc-web220",
14041
+ targetId: "urn:uuid:rc-cert-001"
14042
+ },
14043
+ {
14044
+ type: ["Association"],
14045
+ associationType: "isChildOf",
14046
+ sourceId: "urn:uuid:rc-web240",
14047
+ targetId: "urn:uuid:rc-cert-001"
14048
+ },
14049
+ // Competencies are developed by specific courses (parent mapping).
14050
+ {
14051
+ type: ["Association"],
14052
+ associationType: "isRelatedTo",
14053
+ sourceId: "urn:uuid:rc-comp-frontend",
14054
+ targetId: "urn:uuid:rc-web101"
14055
+ },
14056
+ {
14057
+ type: ["Association"],
14058
+ associationType: "isRelatedTo",
14059
+ sourceId: "urn:uuid:rc-comp-js",
14060
+ targetId: "urn:uuid:rc-web150"
14061
+ },
14062
+ {
14063
+ type: ["Association"],
14064
+ associationType: "isRelatedTo",
14065
+ sourceId: "urn:uuid:rc-comp-js",
14066
+ targetId: "urn:uuid:rc-web220"
14067
+ },
14068
+ {
14069
+ type: ["Association"],
14070
+ associationType: "isRelatedTo",
14071
+ sourceId: "urn:uuid:rc-comp-backend",
14072
+ targetId: "urn:uuid:rc-web240"
14073
+ },
14074
+ // Competencies also relate to the overall certificate.
14075
+ {
14076
+ type: ["Association"],
14077
+ associationType: "isRelatedTo",
14078
+ sourceId: "urn:uuid:rc-comp-frontend",
14079
+ targetId: "urn:uuid:rc-cert-001"
14080
+ },
14081
+ {
14082
+ type: ["Association"],
14083
+ associationType: "isRelatedTo",
14084
+ sourceId: "urn:uuid:rc-comp-js",
14085
+ targetId: "urn:uuid:rc-cert-001"
14086
+ },
14087
+ {
14088
+ type: ["Association"],
14089
+ associationType: "isRelatedTo",
14090
+ sourceId: "urn:uuid:rc-comp-backend",
14091
+ targetId: "urn:uuid:rc-cert-001"
14092
+ },
14093
+ // Course sequencing.
14094
+ {
14095
+ type: ["Association"],
14096
+ associationType: "precedes",
14097
+ sourceId: "urn:uuid:rc-web101",
14098
+ targetId: "urn:uuid:rc-web150"
14099
+ },
14100
+ {
14101
+ type: ["Association"],
14102
+ associationType: "precedes",
14103
+ sourceId: "urn:uuid:rc-web150",
14104
+ targetId: "urn:uuid:rc-web220"
14105
+ },
14106
+ {
14107
+ type: ["Association"],
14108
+ associationType: "precedes",
14109
+ sourceId: "urn:uuid:rc-web150",
14110
+ targetId: "urn:uuid:rc-web240"
14111
+ }
14112
+ ]
14113
+ }
14114
+ }
14115
+ };
14116
+
10898
14117
  // src/fixtures/index.ts
10899
14118
  var ALL_FIXTURES = [
10900
14119
  // VC v1
@@ -10940,7 +14159,9 @@ var ALL_FIXTURES = [
10940
14159
  vcV2DigitalId,
10941
14160
  vcV2MembershipCredential,
10942
14161
  vcV2LicenseCredential,
10943
- clrGreatPlainsFull
14162
+ clrGreatPlainsFull,
14163
+ clrWestbridgeFull,
14164
+ clrCompetencyAligned
10944
14165
  ];
10945
14166
 
10946
14167
  // src/registry.ts
@@ -11069,23 +14290,44 @@ var generateUuid = /* @__PURE__ */ __name(() => {
11069
14290
  "crypto.randomUUID is not available in this environment. Please use a modern runtime with Web Crypto API support for secure UUID generation."
11070
14291
  );
11071
14292
  }, "generateUuid");
11072
- var patchIds = /* @__PURE__ */ __name((obj) => {
14293
+ var patchIds = /* @__PURE__ */ __name((obj, idMap) => {
11073
14294
  const result = {};
11074
14295
  for (const [key, value] of Object.entries(obj)) {
11075
14296
  if (key === "id" && typeof value === "string" && value.startsWith("urn:uuid:")) {
11076
- result[key] = `urn:uuid:${generateUuid()}`;
14297
+ const patchedId = idMap.get(value) ?? `urn:uuid:${generateUuid()}`;
14298
+ if (!idMap.has(value)) {
14299
+ idMap.set(value, patchedId);
14300
+ }
14301
+ result[key] = patchedId;
11077
14302
  } else if (Array.isArray(value)) {
11078
14303
  result[key] = value.map(
11079
- (item) => item && typeof item === "object" && !Array.isArray(item) ? patchIds(item) : item
14304
+ (item) => item && typeof item === "object" && !Array.isArray(item) ? patchIds(item, idMap) : item
11080
14305
  );
11081
14306
  } else if (value && typeof value === "object" && !Array.isArray(value)) {
11082
- result[key] = patchIds(value);
14307
+ result[key] = patchIds(value, idMap);
11083
14308
  } else {
11084
14309
  result[key] = value;
11085
14310
  }
11086
14311
  }
11087
14312
  return result;
11088
14313
  }, "patchIds");
14314
+ var remapUuidReferences = /* @__PURE__ */ __name((value, idMap) => {
14315
+ if (typeof value === "string") {
14316
+ return idMap.get(value) ?? value;
14317
+ }
14318
+ if (Array.isArray(value)) {
14319
+ return value.map((item) => remapUuidReferences(item, idMap));
14320
+ }
14321
+ if (value && typeof value === "object") {
14322
+ return Object.fromEntries(
14323
+ Object.entries(value).map(([key, nestedValue]) => [
14324
+ key,
14325
+ remapUuidReferences(nestedValue, idMap)
14326
+ ])
14327
+ );
14328
+ }
14329
+ return value;
14330
+ }, "remapUuidReferences");
11089
14331
  var patchIssuer = /* @__PURE__ */ __name((issuer, issuerDid) => {
11090
14332
  if (typeof issuer === "string") {
11091
14333
  return issuerDid;
@@ -11108,7 +14350,9 @@ var prepareFixture = /* @__PURE__ */ __name((fixture, options) => {
11108
14350
  const { issuerDid, subjectDid, validFrom, validUntil, freshIds = true } = options;
11109
14351
  let credential = JSON.parse(JSON.stringify(fixture.credential));
11110
14352
  if (freshIds) {
11111
- credential = patchIds(credential);
14353
+ const idMap = /* @__PURE__ */ new Map();
14354
+ credential = patchIds(credential, idMap);
14355
+ credential = remapUuidReferences(credential, idMap);
11112
14356
  }
11113
14357
  credential.issuer = patchIssuer(credential.issuer, issuerDid);
11114
14358
  if (subjectDid && credential.credentialSubject) {