@nuggetslife/vc 0.0.30 → 0.2.0
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.
- package/Cargo.toml +11 -0
- package/W3C_CONFORMANCE.md +6 -5
- package/bench/frame_compare.mjs +203 -0
- package/bench/v2_internals.mjs +115 -0
- package/bench/vc_ops.mjs +308 -0
- package/interop-allowlist.json +3 -0
- package/interop-smoke-allowlist.json +3 -0
- package/package.json +8 -7
- package/scripts/fetch-w3c-tests.sh +8 -0
- package/src/jsonld.rs +211 -140
- package/src/ld_signatures.rs +11 -2
- package/test-fixtures/interop/README.md +46 -0
- package/test-fixtures/interop/_contexts/README.md +51 -0
- package/test-fixtures/interop/_contexts/bbs-bound-v1.jsonld +92 -0
- package/test-fixtures/interop/_contexts/citizenship-v1.jsonld +58 -0
- package/test-fixtures/interop/_contexts/credentials-v1.jsonld +316 -0
- package/test-fixtures/interop/_contexts/elm-edc-ap.jsonld +809 -0
- package/test-fixtures/interop/_contexts/essif-schemas-vc-2020-v1.jsonld +47 -0
- package/test-fixtures/interop/_contexts/identity-v2.jsonld +195 -0
- package/test-fixtures/interop/_contexts/nuggets-identity-v1.jsonld +175 -0
- package/test-fixtures/interop/_contexts/nuggets-kyb-v1.jsonld +333 -0
- package/test-fixtures/interop/_contexts/openbadges-v3.jsonld +445 -0
- package/test-fixtures/interop/_contexts/security-bbs-v1.jsonld +93 -0
- package/test-fixtures/interop/ebsi/diploma-elm/README.md +29 -0
- package/test-fixtures/interop/ebsi/diploma-elm/expected.nq +70 -0
- package/test-fixtures/interop/ebsi/diploma-elm/frame.jsonld +24 -0
- package/test-fixtures/interop/ebsi/diploma-elm/input.jsonld +444 -0
- package/test-fixtures/interop/ebsi/diploma-simple/README.md +19 -0
- package/test-fixtures/interop/ebsi/diploma-simple/expected.nq +9 -0
- package/test-fixtures/interop/ebsi/diploma-simple/frame.jsonld +13 -0
- package/test-fixtures/interop/ebsi/diploma-simple/input.jsonld +24 -0
- package/test-fixtures/interop/idv2/full-disclosure/README.md +9 -0
- package/test-fixtures/interop/idv2/full-disclosure/expected.nq +59 -0
- package/test-fixtures/interop/idv2/full-disclosure/frame.jsonld +9 -0
- package/test-fixtures/interop/idv2/full-disclosure/input.jsonld +82 -0
- package/test-fixtures/interop/nuggets/identity-v1/README.md +17 -0
- package/test-fixtures/interop/nuggets/identity-v1/expected.nq +21 -0
- package/test-fixtures/interop/nuggets/identity-v1/frame.jsonld +17 -0
- package/test-fixtures/interop/nuggets/identity-v1/input.jsonld +31 -0
- package/test-fixtures/interop/nuggets/kyb-v1/README.md +15 -0
- package/test-fixtures/interop/nuggets/kyb-v1/expected.nq +18 -0
- package/test-fixtures/interop/nuggets/kyb-v1/frame.jsonld +24 -0
- package/test-fixtures/interop/nuggets/kyb-v1/input.jsonld +60 -0
- package/test-fixtures/interop/openbadges-v3/basic-achievement/README.md +17 -0
- package/test-fixtures/interop/openbadges-v3/basic-achievement/expected.nq +12 -0
- package/test-fixtures/interop/openbadges-v3/basic-achievement/frame.jsonld +17 -0
- package/test-fixtures/interop/openbadges-v3/basic-achievement/input.jsonld +25 -0
- package/test-fixtures/interop/openbadges-v3/with-allowed-values/README.md +11 -0
- package/test-fixtures/interop/openbadges-v3/with-allowed-values/expected.nq +25 -0
- package/test-fixtures/interop/openbadges-v3/with-allowed-values/frame.jsonld +22 -0
- package/test-fixtures/interop/openbadges-v3/with-allowed-values/input.jsonld +40 -0
- package/test-fixtures/interop/vp/single-vc-wrap/README.md +6 -0
- package/test-fixtures/interop/vp/single-vc-wrap/expected.nq +7 -0
- package/test-fixtures/interop/vp/single-vc-wrap/frame.jsonld +17 -0
- package/test-fixtures/interop/vp/single-vc-wrap/input.jsonld +27 -0
- package/test-fixtures/interop/w3c-vc-v1/permanent-resident-card/README.md +5 -0
- package/test-fixtures/interop/w3c-vc-v1/permanent-resident-card/expected.nq +13 -0
- package/test-fixtures/interop/w3c-vc-v1/permanent-resident-card/frame.jsonld +14 -0
- package/test-fixtures/interop/w3c-vc-v1/permanent-resident-card/input.jsonld +29 -0
- package/test_interop.mjs +184 -0
- package/test_interop_smoke.mjs +388 -0
- package/test_jsonld_crossverify.mjs +8 -2
- package/test_w3c_conformance.mjs +80 -7
- package/tools/regen_expected.mjs +108 -0
- package/w3c-baseline.json +881 -263
- package/w3c-denylist.json +6 -1
|
@@ -0,0 +1,445 @@
|
|
|
1
|
+
{
|
|
2
|
+
"__url__": "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json",
|
|
3
|
+
"@context": {
|
|
4
|
+
"@protected": true,
|
|
5
|
+
"id": "@id",
|
|
6
|
+
"type": "@type",
|
|
7
|
+
"OpenBadgeCredential": {
|
|
8
|
+
"@id": "https://purl.imsglobal.org/spec/vc/ob/vocab.html#OpenBadgeCredential"
|
|
9
|
+
},
|
|
10
|
+
"Achievement": {
|
|
11
|
+
"@id": "https://purl.imsglobal.org/spec/vc/ob/vocab.html#Achievement",
|
|
12
|
+
"@context": {
|
|
13
|
+
"@protected": true,
|
|
14
|
+
"id": "@id",
|
|
15
|
+
"type": "@type",
|
|
16
|
+
"achievementType": {
|
|
17
|
+
"@id": "https://purl.imsglobal.org/spec/vc/ob/vocab.html#achievementType"
|
|
18
|
+
},
|
|
19
|
+
"alignment": {
|
|
20
|
+
"@id": "https://purl.imsglobal.org/spec/vc/ob/vocab.html#alignment",
|
|
21
|
+
"@container": "@set"
|
|
22
|
+
},
|
|
23
|
+
"creator": {
|
|
24
|
+
"@id": "https://purl.imsglobal.org/spec/vc/ob/vocab.html#creator"
|
|
25
|
+
},
|
|
26
|
+
"creditsAvailable": {
|
|
27
|
+
"@id": "https://purl.imsglobal.org/spec/vc/ob/vocab.html#creditsAvailable",
|
|
28
|
+
"@type": "https://www.w3.org/2001/XMLSchema#float"
|
|
29
|
+
},
|
|
30
|
+
"criteria": {
|
|
31
|
+
"@id": "https://purl.imsglobal.org/spec/vc/ob/vocab.html#Criteria",
|
|
32
|
+
"@type": "@id"
|
|
33
|
+
},
|
|
34
|
+
"fieldOfStudy": {
|
|
35
|
+
"@id": "https://purl.imsglobal.org/spec/vc/ob/vocab.html#fieldOfStudy"
|
|
36
|
+
},
|
|
37
|
+
"humanCode": {
|
|
38
|
+
"@id": "https://purl.imsglobal.org/spec/vc/ob/vocab.html#humanCode"
|
|
39
|
+
},
|
|
40
|
+
"image": {
|
|
41
|
+
"@id": "https://purl.imsglobal.org/spec/vc/ob/vocab.html#image",
|
|
42
|
+
"@type": "@id"
|
|
43
|
+
},
|
|
44
|
+
"otherIdentifier": {
|
|
45
|
+
"@id": "https://purl.imsglobal.org/spec/vc/ob/vocab.html#otherIdentifier",
|
|
46
|
+
"@container": "@set"
|
|
47
|
+
},
|
|
48
|
+
"related": {
|
|
49
|
+
"@id": "https://purl.imsglobal.org/spec/vc/ob/vocab.html#related",
|
|
50
|
+
"@container": "@set"
|
|
51
|
+
},
|
|
52
|
+
"resultDescription": {
|
|
53
|
+
"@id": "https://purl.imsglobal.org/spec/vc/ob/vocab.html#resultDescription",
|
|
54
|
+
"@container": "@set"
|
|
55
|
+
},
|
|
56
|
+
"specialization": {
|
|
57
|
+
"@id": "https://purl.imsglobal.org/spec/vc/ob/vocab.html#specialization"
|
|
58
|
+
},
|
|
59
|
+
"tag": {
|
|
60
|
+
"@id": "https://schema.org/keywords",
|
|
61
|
+
"@container": "@set"
|
|
62
|
+
},
|
|
63
|
+
"version": {
|
|
64
|
+
"@id": "https://purl.imsglobal.org/spec/vc/ob/vocab.html#version"
|
|
65
|
+
},
|
|
66
|
+
"inLanguage": {
|
|
67
|
+
"@id": "https://schema.org/inLanguage"
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
},
|
|
71
|
+
"AchievementCredential": {
|
|
72
|
+
"@id": "OpenBadgeCredential"
|
|
73
|
+
},
|
|
74
|
+
"AchievementSubject": {
|
|
75
|
+
"@id": "https://purl.imsglobal.org/spec/vc/ob/vocab.html#AchievementSubject",
|
|
76
|
+
"@context": {
|
|
77
|
+
"@protected": true,
|
|
78
|
+
"id": "@id",
|
|
79
|
+
"type": "@type",
|
|
80
|
+
"achievement": {
|
|
81
|
+
"@id": "https://purl.imsglobal.org/spec/vc/ob/vocab.html#achievement"
|
|
82
|
+
},
|
|
83
|
+
"activityEndDate": {
|
|
84
|
+
"@id": "https://purl.imsglobal.org/spec/vc/ob/vocab.html#activityEndDate",
|
|
85
|
+
"@type": "https://www.w3.org/2001/XMLSchema#date"
|
|
86
|
+
},
|
|
87
|
+
"activityStartDate": {
|
|
88
|
+
"@id": "https://purl.imsglobal.org/spec/vc/ob/vocab.html#activityStartDate",
|
|
89
|
+
"@type": "https://www.w3.org/2001/XMLSchema#date"
|
|
90
|
+
},
|
|
91
|
+
"creditsEarned": {
|
|
92
|
+
"@id": "https://purl.imsglobal.org/spec/vc/ob/vocab.html#creditsEarned",
|
|
93
|
+
"@type": "https://www.w3.org/2001/XMLSchema#float"
|
|
94
|
+
},
|
|
95
|
+
"identifier": {
|
|
96
|
+
"@id": "https://purl.imsglobal.org/spec/vc/ob/vocab.html#identifier",
|
|
97
|
+
"@container": "@set"
|
|
98
|
+
},
|
|
99
|
+
"image": {
|
|
100
|
+
"@id": "https://purl.imsglobal.org/spec/vc/ob/vocab.html#image",
|
|
101
|
+
"@type": "@id"
|
|
102
|
+
},
|
|
103
|
+
"licenseNumber": {
|
|
104
|
+
"@id": "https://purl.imsglobal.org/spec/vc/ob/vocab.html#licenseNumber"
|
|
105
|
+
},
|
|
106
|
+
"result": {
|
|
107
|
+
"@id": "https://purl.imsglobal.org/spec/vc/ob/vocab.html#result",
|
|
108
|
+
"@container": "@set"
|
|
109
|
+
},
|
|
110
|
+
"role": {
|
|
111
|
+
"@id": "https://purl.imsglobal.org/spec/vc/ob/vocab.html#role"
|
|
112
|
+
},
|
|
113
|
+
"source": {
|
|
114
|
+
"@id": "https://purl.imsglobal.org/spec/vc/ob/vocab.html#source",
|
|
115
|
+
"@type": "@id"
|
|
116
|
+
},
|
|
117
|
+
"term": {
|
|
118
|
+
"@id": "https://purl.imsglobal.org/spec/vc/ob/vocab.html#term"
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
},
|
|
122
|
+
"Address": {
|
|
123
|
+
"@id": "https://purl.imsglobal.org/spec/vc/ob/vocab.html#Address",
|
|
124
|
+
"@context": {
|
|
125
|
+
"@protected": true,
|
|
126
|
+
"id": "@id",
|
|
127
|
+
"type": "@type",
|
|
128
|
+
"addressCountry": {
|
|
129
|
+
"@id": "https://schema.org/addressCountry"
|
|
130
|
+
},
|
|
131
|
+
"addressCountryCode": {
|
|
132
|
+
"@id": "https://purl.imsglobal.org/spec/vc/ob/vocab.html#CountryCode"
|
|
133
|
+
},
|
|
134
|
+
"addressLocality": {
|
|
135
|
+
"@id": "https://schema.org/addressLocality"
|
|
136
|
+
},
|
|
137
|
+
"addressRegion": {
|
|
138
|
+
"@id": "https://schema.org/addressRegion"
|
|
139
|
+
},
|
|
140
|
+
"geo": {
|
|
141
|
+
"@id": "https://purl.imsglobal.org/spec/vc/ob/vocab.html#GeoCoordinates"
|
|
142
|
+
},
|
|
143
|
+
"postOfficeBoxNumber": {
|
|
144
|
+
"@id": "https://schema.org/postOfficeBoxNumber"
|
|
145
|
+
},
|
|
146
|
+
"postalCode": {
|
|
147
|
+
"@id": "https://schema.org/postalCode"
|
|
148
|
+
},
|
|
149
|
+
"streetAddress": {
|
|
150
|
+
"@id": "https://schema.org/streetAddress"
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
},
|
|
154
|
+
"Alignment": {
|
|
155
|
+
"@id": "https://schema.org/AlignmentObject",
|
|
156
|
+
"@context": {
|
|
157
|
+
"@protected": true,
|
|
158
|
+
"id": "@id",
|
|
159
|
+
"type": "@type",
|
|
160
|
+
"targetCode": {
|
|
161
|
+
"@id": "https://purl.imsglobal.org/spec/vc/ob/vocab.html#targetCode"
|
|
162
|
+
},
|
|
163
|
+
"targetDescription": {
|
|
164
|
+
"@id": "https://schema.org/targetDescription"
|
|
165
|
+
},
|
|
166
|
+
"targetFramework": {
|
|
167
|
+
"@id": "https://schema.org/targetFramework"
|
|
168
|
+
},
|
|
169
|
+
"targetName": {
|
|
170
|
+
"@id": "https://schema.org/targetName"
|
|
171
|
+
},
|
|
172
|
+
"targetType": {
|
|
173
|
+
"@id": "https://purl.imsglobal.org/spec/vc/ob/vocab.html#targetType"
|
|
174
|
+
},
|
|
175
|
+
"targetUrl": {
|
|
176
|
+
"@id": "https://schema.org/targetUrl",
|
|
177
|
+
"@type": "https://www.w3.org/2001/XMLSchema#anyURI"
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
},
|
|
181
|
+
"Criteria": {
|
|
182
|
+
"@id": "https://purl.imsglobal.org/spec/vc/ob/vocab.html#Criteria"
|
|
183
|
+
},
|
|
184
|
+
"EndorsementCredential": {
|
|
185
|
+
"@id": "https://purl.imsglobal.org/spec/vc/ob/vocab.html#EndorsementCredential"
|
|
186
|
+
},
|
|
187
|
+
"EndorsementSubject": {
|
|
188
|
+
"@id": "https://purl.imsglobal.org/spec/vc/ob/vocab.html#EndorsementSubject",
|
|
189
|
+
"@context": {
|
|
190
|
+
"@protected": true,
|
|
191
|
+
"id": "@id",
|
|
192
|
+
"type": "@type",
|
|
193
|
+
"endorsementComment": {
|
|
194
|
+
"@id": "https://purl.imsglobal.org/spec/vc/ob/vocab.html#endorsementComment"
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
},
|
|
198
|
+
"Evidence": {
|
|
199
|
+
"@id": "https://purl.imsglobal.org/spec/vc/ob/vocab.html#Evidence",
|
|
200
|
+
"@context": {
|
|
201
|
+
"@protected": true,
|
|
202
|
+
"id": "@id",
|
|
203
|
+
"type": "@type",
|
|
204
|
+
"audience": {
|
|
205
|
+
"@id": "https://schema.org/audience"
|
|
206
|
+
},
|
|
207
|
+
"genre": {
|
|
208
|
+
"@id": "https://schema.org/genre"
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
},
|
|
212
|
+
"GeoCoordinates": {
|
|
213
|
+
"@id": "https://purl.imsglobal.org/spec/vc/ob/vocab.html#GeoCoordinates",
|
|
214
|
+
"@context": {
|
|
215
|
+
"@protected": true,
|
|
216
|
+
"id": "@id",
|
|
217
|
+
"type": "@type",
|
|
218
|
+
"latitude": {
|
|
219
|
+
"@id": "https://schema.org/latitude"
|
|
220
|
+
},
|
|
221
|
+
"longitude": {
|
|
222
|
+
"@id": "https://schema.org/longitude"
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
},
|
|
226
|
+
"IdentifierEntry": {
|
|
227
|
+
"@id": "https://purl.imsglobal.org/spec/vc/ob/vocab.html#IdentifierEntry",
|
|
228
|
+
"@context": {
|
|
229
|
+
"@protected": true,
|
|
230
|
+
"id": "@id",
|
|
231
|
+
"type": "@type",
|
|
232
|
+
"identifier": {
|
|
233
|
+
"@id": "https://purl.imsglobal.org/spec/vc/ob/vocab.html#identifier"
|
|
234
|
+
},
|
|
235
|
+
"identifierType": {
|
|
236
|
+
"@id": "https://purl.imsglobal.org/spec/vc/ob/vocab.html#identifierType"
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
},
|
|
240
|
+
"IdentityObject": {
|
|
241
|
+
"@id": "https://purl.imsglobal.org/spec/vc/ob/vocab.html#IdentityObject",
|
|
242
|
+
"@context": {
|
|
243
|
+
"@protected": true,
|
|
244
|
+
"id": "@id",
|
|
245
|
+
"type": "@type",
|
|
246
|
+
"hashed": {
|
|
247
|
+
"@id": "https://purl.imsglobal.org/spec/vc/ob/vocab.html#hashed",
|
|
248
|
+
"@type": "https://www.w3.org/2001/XMLSchema#boolean"
|
|
249
|
+
},
|
|
250
|
+
"identityHash": {
|
|
251
|
+
"@id": "https://purl.imsglobal.org/spec/vc/ob/vocab.html#identityHash"
|
|
252
|
+
},
|
|
253
|
+
"identityType": {
|
|
254
|
+
"@id": "https://purl.imsglobal.org/spec/vc/ob/vocab.html#identityType"
|
|
255
|
+
},
|
|
256
|
+
"salt": {
|
|
257
|
+
"@id": "https://purl.imsglobal.org/spec/vc/ob/vocab.html#salt"
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
},
|
|
261
|
+
"Image": {
|
|
262
|
+
"@id": "https://purl.imsglobal.org/spec/vc/ob/vocab.html#Image",
|
|
263
|
+
"@context": {
|
|
264
|
+
"@protected": true,
|
|
265
|
+
"id": "@id",
|
|
266
|
+
"type": "@type",
|
|
267
|
+
"caption": {
|
|
268
|
+
"@id": "https://schema.org/caption"
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
},
|
|
272
|
+
"Profile": {
|
|
273
|
+
"@id": "https://purl.imsglobal.org/spec/vc/ob/vocab.html#Profile",
|
|
274
|
+
"@context": {
|
|
275
|
+
"@protected": true,
|
|
276
|
+
"id": "@id",
|
|
277
|
+
"type": "@type",
|
|
278
|
+
"additionalName": {
|
|
279
|
+
"@id": "https://schema.org/additionalName"
|
|
280
|
+
},
|
|
281
|
+
"address": {
|
|
282
|
+
"@id": "https://purl.imsglobal.org/spec/vc/ob/vocab.html#address",
|
|
283
|
+
"@type": "@id"
|
|
284
|
+
},
|
|
285
|
+
"dateOfBirth": {
|
|
286
|
+
"@id": "https://purl.imsglobal.org/spec/vc/ob/vocab.html#dateOfBirth",
|
|
287
|
+
"@type": "https://www.w3.org/2001/XMLSchema#date"
|
|
288
|
+
},
|
|
289
|
+
"email": {
|
|
290
|
+
"@id": "https://schema.org/email"
|
|
291
|
+
},
|
|
292
|
+
"familyName": {
|
|
293
|
+
"@id": "https://schema.org/familyName"
|
|
294
|
+
},
|
|
295
|
+
"familyNamePrefix": {
|
|
296
|
+
"@id": "https://purl.imsglobal.org/spec/vc/ob/vocab.html#familyNamePrefix"
|
|
297
|
+
},
|
|
298
|
+
"givenName": {
|
|
299
|
+
"@id": "https://schema.org/givenName"
|
|
300
|
+
},
|
|
301
|
+
"honorificPrefix": {
|
|
302
|
+
"@id": "https://schema.org/honorificPrefix"
|
|
303
|
+
},
|
|
304
|
+
"honorificSuffix": {
|
|
305
|
+
"@id": "https://schema.org/honorificSuffix"
|
|
306
|
+
},
|
|
307
|
+
"image": {
|
|
308
|
+
"@id": "https://purl.imsglobal.org/spec/vc/ob/vocab.html#image",
|
|
309
|
+
"@type": "@id"
|
|
310
|
+
},
|
|
311
|
+
"otherIdentifier": {
|
|
312
|
+
"@id": "https://purl.imsglobal.org/spec/vc/ob/vocab.html#otherIdentifier",
|
|
313
|
+
"@container": "@set"
|
|
314
|
+
},
|
|
315
|
+
"parentOrg": {
|
|
316
|
+
"@id": "https://purl.imsglobal.org/spec/vc/ob/vocab.html#parentOrg",
|
|
317
|
+
"@type": "@id"
|
|
318
|
+
},
|
|
319
|
+
"patronymicName": {
|
|
320
|
+
"@id": "https://purl.imsglobal.org/spec/vc/ob/vocab.html#patronymicName"
|
|
321
|
+
},
|
|
322
|
+
"phone": {
|
|
323
|
+
"@id": "https://purl.imsglobal.org/spec/vc/ob/vocab.html#phone"
|
|
324
|
+
},
|
|
325
|
+
"official": {
|
|
326
|
+
"@id": "https://purl.imsglobal.org/spec/vc/ob/vocab.html#official"
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
},
|
|
330
|
+
"Related": {
|
|
331
|
+
"@id": "https://purl.imsglobal.org/spec/vc/ob/vocab.html#Related",
|
|
332
|
+
"@context": {
|
|
333
|
+
"@protected": true,
|
|
334
|
+
"id": "@id",
|
|
335
|
+
"type": "@type",
|
|
336
|
+
"version": {
|
|
337
|
+
"@id": "https://purl.imsglobal.org/spec/vc/ob/vocab.html#version"
|
|
338
|
+
},
|
|
339
|
+
"inLanguage": {
|
|
340
|
+
"@id": "https://schema.org/inLanguage"
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
},
|
|
344
|
+
"Result": {
|
|
345
|
+
"@id": "https://purl.imsglobal.org/spec/vc/ob/vocab.html#Result",
|
|
346
|
+
"@context": {
|
|
347
|
+
"@protected": true,
|
|
348
|
+
"id": "@id",
|
|
349
|
+
"type": "@type",
|
|
350
|
+
"achievedLevel": {
|
|
351
|
+
"@id": "https://purl.imsglobal.org/spec/vc/ob/vocab.html#achievedLevel",
|
|
352
|
+
"@type": "https://www.w3.org/2001/XMLSchema#anyURI"
|
|
353
|
+
},
|
|
354
|
+
"resultDescription": {
|
|
355
|
+
"@id": "https://purl.imsglobal.org/spec/vc/ob/vocab.html#resultDescription",
|
|
356
|
+
"@type": "https://www.w3.org/2001/XMLSchema#anyURI"
|
|
357
|
+
},
|
|
358
|
+
"status": {
|
|
359
|
+
"@id": "https://purl.imsglobal.org/spec/vc/ob/vocab.html#status"
|
|
360
|
+
},
|
|
361
|
+
"value": {
|
|
362
|
+
"@id": "https://schema.org/value"
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
},
|
|
366
|
+
"ResultDescription": {
|
|
367
|
+
"@id": "https://purl.imsglobal.org/spec/vc/ob/vocab.html#ResultDescription",
|
|
368
|
+
"@context": {
|
|
369
|
+
"@protected": true,
|
|
370
|
+
"id": "@id",
|
|
371
|
+
"type": "@type",
|
|
372
|
+
"allowedValue": {
|
|
373
|
+
"@id": "https://purl.imsglobal.org/spec/vc/ob/vocab.html#allowedValue",
|
|
374
|
+
"@container": "@list"
|
|
375
|
+
},
|
|
376
|
+
"requiredLevel": {
|
|
377
|
+
"@id": "https://purl.imsglobal.org/spec/vc/ob/vocab.html#requiredLevel",
|
|
378
|
+
"@type": "https://www.w3.org/2001/XMLSchema#anyURI"
|
|
379
|
+
},
|
|
380
|
+
"requiredValue": {
|
|
381
|
+
"@id": "https://purl.imsglobal.org/spec/vc/ob/vocab.html#requiredValue"
|
|
382
|
+
},
|
|
383
|
+
"resultType": {
|
|
384
|
+
"@id": "https://purl.imsglobal.org/spec/vc/ob/vocab.html#resultType"
|
|
385
|
+
},
|
|
386
|
+
"rubricCriterionLevel": {
|
|
387
|
+
"@id": "https://purl.imsglobal.org/spec/vc/ob/vocab.html#rubricCriterionLevel",
|
|
388
|
+
"@container": "@set"
|
|
389
|
+
},
|
|
390
|
+
"valueMax": {
|
|
391
|
+
"@id": "https://purl.imsglobal.org/spec/vc/ob/vocab.html#valueMax"
|
|
392
|
+
},
|
|
393
|
+
"valueMin": {
|
|
394
|
+
"@id": "https://purl.imsglobal.org/spec/vc/ob/vocab.html#valueMin"
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
},
|
|
398
|
+
"RubricCriterionLevel": {
|
|
399
|
+
"@id": "https://purl.imsglobal.org/spec/vc/ob/vocab.html#RubricCriterionLevel",
|
|
400
|
+
"@context": {
|
|
401
|
+
"@protected": true,
|
|
402
|
+
"id": "@id",
|
|
403
|
+
"type": "@type",
|
|
404
|
+
"level": {
|
|
405
|
+
"@id": "https://purl.imsglobal.org/spec/vc/ob/vocab.html#level"
|
|
406
|
+
},
|
|
407
|
+
"points": {
|
|
408
|
+
"@id": "https://purl.imsglobal.org/spec/vc/ob/vocab.html#points"
|
|
409
|
+
}
|
|
410
|
+
}
|
|
411
|
+
},
|
|
412
|
+
"alignment": {
|
|
413
|
+
"@id": "https://purl.imsglobal.org/spec/vc/ob/vocab.html#alignment",
|
|
414
|
+
"@container": "@set"
|
|
415
|
+
},
|
|
416
|
+
"description": {
|
|
417
|
+
"@id": "https://schema.org/description"
|
|
418
|
+
},
|
|
419
|
+
"endorsement": {
|
|
420
|
+
"@id": "https://purl.imsglobal.org/spec/vc/ob/vocab.html#endorsement",
|
|
421
|
+
"@container": "@set"
|
|
422
|
+
},
|
|
423
|
+
"image": {
|
|
424
|
+
"@id": "https://purl.imsglobal.org/spec/vc/ob/vocab.html#image",
|
|
425
|
+
"@type": "@id"
|
|
426
|
+
},
|
|
427
|
+
"inLanguage": {
|
|
428
|
+
"@id": "https://schema.org/inLanguage"
|
|
429
|
+
},
|
|
430
|
+
"name": {
|
|
431
|
+
"@id": "https://schema.org/name"
|
|
432
|
+
},
|
|
433
|
+
"narrative": {
|
|
434
|
+
"@id": "https://purl.imsglobal.org/spec/vc/ob/vocab.html#narrative"
|
|
435
|
+
},
|
|
436
|
+
"url": {
|
|
437
|
+
"@id": "https://schema.org/url",
|
|
438
|
+
"@type": "https://www.w3.org/2001/XMLSchema#anyURI"
|
|
439
|
+
},
|
|
440
|
+
"awardedDate": {
|
|
441
|
+
"@id": "https://purl.imsglobal.org/spec/vc/ob/vocab.html#awardedDate",
|
|
442
|
+
"@type": "xsd:dateTime"
|
|
443
|
+
}
|
|
444
|
+
}
|
|
445
|
+
}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
{
|
|
2
|
+
"__url__": "https://w3id.org/security/bbs/v1",
|
|
3
|
+
"@context": {
|
|
4
|
+
"@version": 1.1,
|
|
5
|
+
"id": "@id",
|
|
6
|
+
"type": "@type",
|
|
7
|
+
"BbsBlsSignature2020": {
|
|
8
|
+
"@id": "https://w3id.org/security#BbsBlsSignature2020",
|
|
9
|
+
"@context": {
|
|
10
|
+
"@version": 1.1,
|
|
11
|
+
"@protected": true,
|
|
12
|
+
"id": "@id",
|
|
13
|
+
"type": "@type",
|
|
14
|
+
"challenge": "https://w3id.org/security#challenge",
|
|
15
|
+
"created": {
|
|
16
|
+
"@id": "http://purl.org/dc/terms/created",
|
|
17
|
+
"@type": "http://www.w3.org/2001/XMLSchema#dateTime"
|
|
18
|
+
},
|
|
19
|
+
"domain": "https://w3id.org/security#domain",
|
|
20
|
+
"proofValue": "https://w3id.org/security#proofValue",
|
|
21
|
+
"nonce": "https://w3id.org/security#nonce",
|
|
22
|
+
"proofPurpose": {
|
|
23
|
+
"@id": "https://w3id.org/security#proofPurpose",
|
|
24
|
+
"@type": "@vocab",
|
|
25
|
+
"@context": {
|
|
26
|
+
"@version": 1.1,
|
|
27
|
+
"@protected": true,
|
|
28
|
+
"id": "@id",
|
|
29
|
+
"type": "@type",
|
|
30
|
+
"assertionMethod": {
|
|
31
|
+
"@id": "https://w3id.org/security#assertionMethod",
|
|
32
|
+
"@type": "@id",
|
|
33
|
+
"@container": "@set"
|
|
34
|
+
},
|
|
35
|
+
"authentication": {
|
|
36
|
+
"@id": "https://w3id.org/security#authenticationMethod",
|
|
37
|
+
"@type": "@id",
|
|
38
|
+
"@container": "@set"
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
"verificationMethod": {
|
|
43
|
+
"@id": "https://w3id.org/security#verificationMethod",
|
|
44
|
+
"@type": "@id"
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
"BbsBlsSignatureProof2020": {
|
|
49
|
+
"@id": "https://w3id.org/security#BbsBlsSignatureProof2020",
|
|
50
|
+
"@context": {
|
|
51
|
+
"@version": 1.1,
|
|
52
|
+
"@protected": true,
|
|
53
|
+
"id": "@id",
|
|
54
|
+
"type": "@type",
|
|
55
|
+
|
|
56
|
+
"challenge": "https://w3id.org/security#challenge",
|
|
57
|
+
"created": {
|
|
58
|
+
"@id": "http://purl.org/dc/terms/created",
|
|
59
|
+
"@type": "http://www.w3.org/2001/XMLSchema#dateTime"
|
|
60
|
+
},
|
|
61
|
+
"domain": "https://w3id.org/security#domain",
|
|
62
|
+
"nonce": "https://w3id.org/security#nonce",
|
|
63
|
+
"proofPurpose": {
|
|
64
|
+
"@id": "https://w3id.org/security#proofPurpose",
|
|
65
|
+
"@type": "@vocab",
|
|
66
|
+
"@context": {
|
|
67
|
+
"@version": 1.1,
|
|
68
|
+
"@protected": true,
|
|
69
|
+
"id": "@id",
|
|
70
|
+
"type": "@type",
|
|
71
|
+
"sec": "https://w3id.org/security#",
|
|
72
|
+
"assertionMethod": {
|
|
73
|
+
"@id": "https://w3id.org/security#assertionMethod",
|
|
74
|
+
"@type": "@id",
|
|
75
|
+
"@container": "@set"
|
|
76
|
+
},
|
|
77
|
+
"authentication": {
|
|
78
|
+
"@id": "https://w3id.org/security#authenticationMethod",
|
|
79
|
+
"@type": "@id",
|
|
80
|
+
"@container": "@set"
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
},
|
|
84
|
+
"proofValue": "https://w3id.org/security#proofValue",
|
|
85
|
+
"verificationMethod": {
|
|
86
|
+
"@id": "https://w3id.org/security#verificationMethod",
|
|
87
|
+
"@type": "@id"
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
},
|
|
91
|
+
"Bls12381G2Key2020": "https://w3id.org/security#Bls12381G2Key2020"
|
|
92
|
+
}
|
|
93
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# EBSI — diploma-elm (European Digital Credential / ELMv3)
|
|
2
|
+
|
|
3
|
+
European Learning Model v3 sample credential — `Sample-CertOfPart-unsigned.jsonld` from the European Commission's official ELM repo. The upstream sample embeds ~100KB of base64 image/logo blobs inside `MediaObject` nodes; those `MediaObject` subtrees are pruned here for fixture size while preserving the rest of the structural shape verbatim. The `proof` field is also stripped (the harness frames the unsigned input).
|
|
4
|
+
|
|
5
|
+
- Upstream: `https://github.com/european-commission-empl/European-Learning-Model/blob/master/Credentials/JSON-LD%20Examples%20(ELM%20v3)/Sample-CertOfPart-unsigned.jsonld`
|
|
6
|
+
- Upstream context: `http://data.europa.eu/snb/model/context/edc-ap` (sourced from the same repo's `rdf/ap/edc/edc-ap-context.jsonld`)
|
|
7
|
+
- Retrieval date: 2026-05-06
|
|
8
|
+
|
|
9
|
+
## What this fixture exercises
|
|
10
|
+
|
|
11
|
+
- A real `EuropeanDigitalCredential` shape: a `Person` credential subject with deeply nested objects (`hasClaim` → `LearningActivity` → `specifiedBy` → `LearningActivitySpecification`), each carrying `@language`-keyed display strings.
|
|
12
|
+
- An **array-of-objects without `@list` semantics** — `specifiedBy.supplementaryDocument` is a plain JSON array of `WebResource` objects. ELMv3's EDC-AP context does not declare any `@container: @list` terms, so this is the multiset (RDF unordered set) case, which is structurally distinct from OB v3's primitive `@list` (`allowedValue`) covered by `openbadges-v3/with-allowed-values`.
|
|
13
|
+
- Reveal frame discloses subject `familyName`/`givenName` plus `hasClaim.title`, `hasClaim.specifiedBy.title`, and the full `hasClaim.specifiedBy.supplementaryDocument` array.
|
|
14
|
+
|
|
15
|
+
## Pre-existing constraint
|
|
16
|
+
|
|
17
|
+
EBSI's published diploma corpora (both the EBSI4Austria pilot and the ELMv3 reference samples) do not exercise `@list`-with-nested-objects — ELM uses bag/multiset semantics throughout. The gap that motivated this fixture in the Phase B plan (nested `@list`) is therefore not surfaced by any real-world EBSI sample currently published; the array-of-objects case below is the closest distinct shape the corpus offers beyond OB v3's primitive `@list`.
|
|
18
|
+
|
|
19
|
+
## Expected status
|
|
20
|
+
|
|
21
|
+
**Pass.** The harness's offline loader + V2 native frame/canonize handle the EDC-AP context and the deeply-nested `hasClaim` structure cleanly.
|
|
22
|
+
|
|
23
|
+
## V2-pinned `expected.nq` — do NOT regenerate via `regen_expected.mjs`
|
|
24
|
+
|
|
25
|
+
This fixture's `expected.nq` was hand-pinned to V2 native's output during Sprint 4 Phase B-2, closing GitHub issue #61. **Do not** run `node tools/regen_expected.mjs test-fixtures/interop/ebsi/diploma-elm` on this fixture — jsonld.js has a known framing bug here that drops the entire `credentialSubject` subgraph (literally emits `"credentialSubject": null`) when an `@explicit: true` sub-frame is applied to an `@type: @id` property. Regenerating would re-introduce 22 dropped triples and break parity.
|
|
26
|
+
|
|
27
|
+
W3C JSON-LD Framing 1.1 §4 / §4.2 specifies that `@explicit` controls *inclusion criteria* (which properties are retained), not subject retention. V2 native's output is spec-correct; jsonld.js's is not.
|
|
28
|
+
|
|
29
|
+
If the V2 native walker behavior changes intentionally (e.g. a future Phase C fix), update this `expected.nq` by hand by running V2 native's `JsonLd.frame` + `JsonLd.canonize` directly — not via the regen tool.
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
<http://data.europa.eu/snb/credential/25831c2> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2004/02/skos/core#ConceptScheme> .
|
|
2
|
+
<http://data.europa.eu/snb/credential/e34929035b> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2004/02/skos/core#Concept> .
|
|
3
|
+
<http://data.europa.eu/snb/credential/e34929035b> <http://www.w3.org/2004/02/skos/core#inScheme> <http://data.europa.eu/snb/credential/25831c2> .
|
|
4
|
+
<http://data.europa.eu/snb/credential/e34929035b> <http://www.w3.org/2004/02/skos/core#prefLabel> "Generic"@en .
|
|
5
|
+
<http://data.europa.eu/snb/model/ap/edc-generic-full> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://data.europa.eu/snb/model/elm/ShaclValidator2017> .
|
|
6
|
+
<http://publications.europa.eu/resource/authority/country/BEL> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2004/02/skos/core#Concept> .
|
|
7
|
+
<http://publications.europa.eu/resource/authority/country/BEL> <http://www.w3.org/2004/02/skos/core#inScheme> <http://publications.europa.eu/resource/authority/country> .
|
|
8
|
+
<http://publications.europa.eu/resource/authority/country/BEL> <http://www.w3.org/2004/02/skos/core#notation> "country" .
|
|
9
|
+
<http://publications.europa.eu/resource/authority/country/BEL> <http://www.w3.org/2004/02/skos/core#prefLabel> "Belgium"@en .
|
|
10
|
+
<http://publications.europa.eu/resource/authority/country> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2004/02/skos/core#ConceptScheme> .
|
|
11
|
+
<http://publications.europa.eu/resource/authority/language/ENG> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2004/02/skos/core#Concept> .
|
|
12
|
+
<http://publications.europa.eu/resource/authority/language/ENG> <http://www.w3.org/2004/02/skos/core#inScheme> <http://publications.europa.eu/resource/authority/language> .
|
|
13
|
+
<http://publications.europa.eu/resource/authority/language/ENG> <http://www.w3.org/2004/02/skos/core#notation> "language" .
|
|
14
|
+
<http://publications.europa.eu/resource/authority/language/ENG> <http://www.w3.org/2004/02/skos/core#prefLabel> "English"@en .
|
|
15
|
+
<http://publications.europa.eu/resource/authority/language> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2004/02/skos/core#ConceptScheme> .
|
|
16
|
+
<urn:credential:43662fb0-c31c-4afb-b501-e85aea91c0a8> <http://data.europa.eu/snb/model/elm/credentialProfiles> <http://data.europa.eu/snb/credential/e34929035b> .
|
|
17
|
+
<urn:credential:43662fb0-c31c-4afb-b501-e85aea91c0a8> <http://data.europa.eu/snb/model/elm/displayParameter> <urn:epass:displayParameter:1> .
|
|
18
|
+
<urn:credential:43662fb0-c31c-4afb-b501-e85aea91c0a8> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://data.europa.eu/snb/model/elm/EuropeanDigitalCredential> .
|
|
19
|
+
<urn:credential:43662fb0-c31c-4afb-b501-e85aea91c0a8> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <https://www.w3.org/2018/credentials#VerifiableCredential> .
|
|
20
|
+
<urn:credential:43662fb0-c31c-4afb-b501-e85aea91c0a8> <https://www.w3.org/2018/credentials#credentialSchema> <http://data.europa.eu/snb/model/ap/edc-generic-full> .
|
|
21
|
+
<urn:credential:43662fb0-c31c-4afb-b501-e85aea91c0a8> <https://www.w3.org/2018/credentials#credentialSubject> <urn:epass:person:1> .
|
|
22
|
+
<urn:credential:43662fb0-c31c-4afb-b501-e85aea91c0a8> <https://www.w3.org/2018/credentials#issuer> <urn:epass:org:1> .
|
|
23
|
+
<urn:credential:43662fb0-c31c-4afb-b501-e85aea91c0a8> <https://www.w3.org/2018/credentials#validFrom> "2023-06-28T14:30:00Z"^^<http://www.w3.org/2001/XMLSchema#dateTime> .
|
|
24
|
+
<urn:epass:activity:1> <http://data.europa.eu/snb/model/elm/specifiedBy> <urn:epass:learningActivitySpec:1> .
|
|
25
|
+
<urn:epass:activity:1> <http://purl.org/dc/terms/title> "EDC Updates Webinar"@en .
|
|
26
|
+
<urn:epass:activity:1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://data.europa.eu/snb/model/elm/LearningActivity> .
|
|
27
|
+
<urn:epass:address:1> <http://data.europa.eu/snb/model/elm/countryCode> <http://publications.europa.eu/resource/authority/country/BEL> .
|
|
28
|
+
<urn:epass:address:1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://data.europa.eu/snb/model/elm/Address> .
|
|
29
|
+
<urn:epass:displayDetail:1> <http://data.europa.eu/snb/model/elm/page> "1"^^<http://www.w3.org/2001/XMLSchema#positiveInteger> .
|
|
30
|
+
<urn:epass:displayDetail:1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://data.europa.eu/snb/model/elm/DisplayDetail> .
|
|
31
|
+
<urn:epass:displayParameter:1> <http://data.europa.eu/snb/model/elm/individualDisplay> <urn:epass:individualDisplay:1> .
|
|
32
|
+
<urn:epass:displayParameter:1> <http://data.europa.eu/snb/model/elm/primaryLanguage> <http://publications.europa.eu/resource/authority/language/ENG> .
|
|
33
|
+
<urn:epass:displayParameter:1> <http://purl.org/dc/terms/description> "has attended the EDC Updates webinar"@en .
|
|
34
|
+
<urn:epass:displayParameter:1> <http://purl.org/dc/terms/language> <http://publications.europa.eu/resource/authority/language/ENG> .
|
|
35
|
+
<urn:epass:displayParameter:1> <http://purl.org/dc/terms/title> "Certificate of Participation"@en .
|
|
36
|
+
<urn:epass:displayParameter:1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://data.europa.eu/snb/model/elm/DisplayParameter> .
|
|
37
|
+
<urn:epass:individualDisplay:1> <http://data.europa.eu/snb/model/elm/displayDetail> <urn:epass:displayDetail:1> .
|
|
38
|
+
<urn:epass:individualDisplay:1> <http://purl.org/dc/terms/language> <http://publications.europa.eu/resource/authority/language/ENG> .
|
|
39
|
+
<urn:epass:individualDisplay:1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://data.europa.eu/snb/model/elm/IndividualDisplay> .
|
|
40
|
+
<urn:epass:learningActivitySpec:1> <http://data.europa.eu/snb/model/elm/supplementaryDocument> <urn:epass:webResource:2> .
|
|
41
|
+
<urn:epass:learningActivitySpec:1> <http://data.europa.eu/snb/model/elm/supplementaryDocument> <urn:epass:webResource:3> .
|
|
42
|
+
<urn:epass:learningActivitySpec:1> <http://data.europa.eu/snb/model/elm/supplementaryDocument> <urn:epass:webResource:4> .
|
|
43
|
+
<urn:epass:learningActivitySpec:1> <http://purl.org/dc/terms/title> "EDC Updates Webinar"@en .
|
|
44
|
+
<urn:epass:learningActivitySpec:1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://data.europa.eu/snb/model/elm/LearningActivitySpecification> .
|
|
45
|
+
<urn:epass:legalIdentifier:1> <http://purl.org/dc/terms/spatial> <http://publications.europa.eu/resource/authority/country/BEL> .
|
|
46
|
+
<urn:epass:legalIdentifier:1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://data.europa.eu/snb/model/elm/LegalIdentifier> .
|
|
47
|
+
<urn:epass:legalIdentifier:1> <http://www.w3.org/2004/02/skos/core#notation> "0000" .
|
|
48
|
+
<urn:epass:location:1> <http://data.europa.eu/snb/model/elm/address> <urn:epass:address:1> .
|
|
49
|
+
<urn:epass:location:1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://purl.org/dc/terms/Location> .
|
|
50
|
+
<urn:epass:org:1> <http://data.europa.eu/snb/model/elm/location> <urn:epass:location:1> .
|
|
51
|
+
<urn:epass:org:1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://data.europa.eu/snb/model/elm/Organisation> .
|
|
52
|
+
<urn:epass:org:1> <http://www.w3.org/2004/02/skos/core#altLabel> "EDC Support Team"@en .
|
|
53
|
+
<urn:epass:org:1> <http://www.w3.org/ns/regorg#legalName> "European Digital Credentials for Learning Support Team"@en .
|
|
54
|
+
<urn:epass:org:1> <http://www.w3.org/ns/regorg#registration> <urn:epass:legalIdentifier:1> .
|
|
55
|
+
<urn:epass:org:1> <http://xmlns.com/foaf/0.1/homepage> <urn:epass:webResource:1> .
|
|
56
|
+
<urn:epass:person:1> <http://data.europa.eu/snb/model/elm/hasClaim> <urn:epass:activity:1> .
|
|
57
|
+
<urn:epass:person:1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://data.europa.eu/snb/model/elm/Person> .
|
|
58
|
+
<urn:epass:person:1> <http://xmlns.com/foaf/0.1/familyName> "Andromeda"@en .
|
|
59
|
+
<urn:epass:person:1> <http://xmlns.com/foaf/0.1/givenName> "Ana"@en .
|
|
60
|
+
<urn:epass:webResource:1> <http://data.europa.eu/snb/model/elm/contentUrl> "https://europa.eu/europass/en/europass-tools/digital-credentials"^^<http://www.w3.org/2001/XMLSchema#anyURI> .
|
|
61
|
+
<urn:epass:webResource:1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://data.europa.eu/snb/model/elm/WebResource> .
|
|
62
|
+
<urn:epass:webResource:2> <http://data.europa.eu/snb/model/elm/contentUrl> "https://op.europa.eu/en/web/eu-vocabularies/europass"^^<http://www.w3.org/2001/XMLSchema#anyURI> .
|
|
63
|
+
<urn:epass:webResource:2> <http://purl.org/dc/terms/title> "Common European Skills Data Space"@en .
|
|
64
|
+
<urn:epass:webResource:2> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://data.europa.eu/snb/model/elm/WebResource> .
|
|
65
|
+
<urn:epass:webResource:3> <http://data.europa.eu/snb/model/elm/contentUrl> "https://europa.eu/europass/en/news/updates-european-digital-credential-infrastructure"^^<http://www.w3.org/2001/XMLSchema#anyURI> .
|
|
66
|
+
<urn:epass:webResource:3> <http://purl.org/dc/terms/title> "Updates to the European Digital Credential Infrastructure"@en .
|
|
67
|
+
<urn:epass:webResource:3> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://data.europa.eu/snb/model/elm/WebResource> .
|
|
68
|
+
<urn:epass:webResource:4> <http://data.europa.eu/snb/model/elm/contentUrl> "https://github.com/european-commission-empl/European-Learning-Model"^^<http://www.w3.org/2001/XMLSchema#anyURI> .
|
|
69
|
+
<urn:epass:webResource:4> <http://purl.org/dc/terms/title> "ELM on Github"@en .
|
|
70
|
+
<urn:epass:webResource:4> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://data.europa.eu/snb/model/elm/WebResource> .
|