Here is an example of a verifiable credential I want to create
{
"@context": ["https://www.w3.org/2018/credentials/v1"],
"credentialSubject": {
"id": "did:example:not-a-real-did",
"competence": ["AM", "B"],
"dateOfBirth": "1995-09-23",
"name": "Frank Franksson",
"picture": "some-random-url.png",
"ssn": "19950923-9965"
},
"holder": "did:ethr:goerli:0x027d0d3347a44b5469a8acd6e9195f6e5c3b7253ddce558238d096dd927b23055a",
"id": "https://verify.stepstone.com/credentials/c7c077a6-f0c0-4843-9718-68dfba008587",
"issuanceDate": "2022-11-18T09:00:38.000Z",
"issuer": {
"id": "did:ethr:goerli:0x02f163e34f0c84d85bf0b5becc119c86362e36fab4c9247515610a0b1cc4eff74a"
},
"proof": {
"jwt": "eyJhbGciOiJFUzI1NksiLCJ0eXAiOiJKV1QifQ.eyJ2cCI6eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvMjAxOC9jcmVkZW50aWFscy92MSJdLCJ0eXBlIjpbIlZlcmlmaWFibGVQcmVzZW50YXRpb24iLCJWZXJpZmlhYmxlQ3JlZGVudGlhbCIsIlN3ZWRpc2hEcml2ZXJzTGljZW5zZSJdfSwiaXNzdWVyIjp7ImlkIjoiZGlkOmV0aHI6Z29lcmxpOjB4MDJmMTYzZTM0ZjBjODRkODViZjBiNWJlY2MxMTljODYzNjJlMzZmYWI0YzkyNDc1MTU2MTBhMGIxY2M0ZWZmNzRhIn0sImNyZWRlbnRpYWxTdWJqZWN0Ijp7InNzbiI6IjE5OTUwOTIzLTk5NjUiLCJkYXRlT2ZCaXJ0aCI6IjE5OTUtMDktMjMiLCJuYW1lIjoiRnJhbmsgRnJhbmtzc29uIiwicGljdHVyZSI6InN1cGVyLWdvb2QtbG9va2luZy5wbmciLCJjb21wZXRlbmNlIjpbIkFNIiwiQiJdLCJpZCI6InNvbWUgZGlkIn0sInByb29mIjp7InR5cGUiOiJKd3RQcm9vZjIwMjAiLCJjcmVhdGVkIjoiMjAyMi0xMS0xOFQwOTowMDozOC4wMDBaIiwicHJvb2ZQdXJwb3NlIjoiYXNzZXJ0aW9uTWV0aG9kIiwidmVyaWZpY2F0aW9uTWV0aG9kIjoiaHR0cHM6Ly9leGFtcGxlLmVkdS9pc3N1ZXJzLzU2NTA0OSNrZXktMSIsImp3cyI6ImV5SmhiR2NpT2lKRlV6STFOa3NpTENKMGVYQWlPaUpLVjFRaWZRLmV5SjJZeUk2ZXlKQVkyOXVkR1Y0ZENJNld5Sm9kSFJ3Y3pvdkwzZDNkeTUzTXk1dmNtY3ZNakF4T0M5amNtVmtaVzUwYVdGc2N5OTJNU0pkTENKMGVYQmxJanBiSWxabGNtbG1hV0ZpYkdWRGNtVmtaVzUwYVdGc0lpd2lVM2RsWkdsemFFUnlhWFpsY25OTWFXTmxibk5sSWwwc0ltTnlaV1JsYm5ScFlXeFRkV0pxWldOMElqcDdJbk56YmlJNklqRTVPVFV3T1RJekxUazVOalVpTENKa1lYUmxUMlpDYVhKMGFDSTZJakU1T1RVdE1Ea3RNak1pTENKdVlXMWxJam9pUm5KaGJtc2dSbkpoYm10emMyOXVJaXdpY0dsamRIVnlaU0k2SW5OMWNHVnlMV2R2YjJRdGJHOXZhMmx1Wnk1d2JtY2lMQ0pqYjIxd1pYUmxibU5sSWpwYklrRk5JaXdpUWlKZGZYMHNJbk4xWWlJNkluTnZiV1VnWkdsa0lpd2lhblJwSWpvaWFIUjBjSE02THk5MlpYSnBabmt1YzNSbGNITjBiMjVsTG1OdmJTOWpjbVZrWlc1MGFXRnNjeTlqTjJNd056ZGhOaTFtTUdNd0xUUTRORE10T1RjeE9DMDJPR1JtWW1Fd01EZzFPRGNpTENKdVltWWlPakUyTmpnM05qSXdNemdzSW1semN5STZJbVJwWkRwbGRHaHlPbWR2WlhKc2FUb3dlREF5WmpFMk0yVXpOR1l3WXpnMFpEZzFZbVl3WWpWaVpXTmpNVEU1WXpnMk16WXlaVE0yWm1GaU5HTTVNalEzTlRFMU5qRXdZVEJpTVdOak5HVm1aamMwWVNKOS5LZU04STNCWWlxaVBUcDNLWDNBUThHMHU4ODlYS0hKbkJqYlFvQXpqOTFzY2Y5UDZVM1NQN05sZVVpVjJQREZRMTdlMWV4Qk9HdndLbWRoMzhRNFJwZyJ9LCJqdGkiOiJodHRwczovL3ZlcmlmeS5zdGVwc3RvbmUuY29tL2NyZWRlbnRpYWxzL2M3YzA3N2E2LWYwYzAtNDg0My05NzE4LTY4ZGZiYTAwODU4NyIsIm5iZiI6MTY2ODc2MjAzOCwiaXNzIjoiZGlkOmV0aHI6Z29lcmxpOjB4MDI3ZDBkMzM0N2E0NGI1NDY5YThhY2Q2ZTkxOTVmNmU1YzNiNzI1M2RkY2U1NTgyMzhkMDk2ZGQ5MjdiMjMwNTVhIn0.-9Kd8qEpZXNDWw-RsHO9nzh-citxi8yaas_Yhaxfx4ykj4HqJz3h3SvD94HRRTWFRvXty8z2Hl3FP1vCExVLIg",
"type": "JwtProof2020"
},
"type": [
"VerifiablePresentation",
"VerifiableCredential",
"SwedishDriversLicense"
]
}
But right now I'm only using the standard @context
for verifiable credentials, I also want to include the custom fields for my specific verifiable credential like so:
{
"@context":
[
"https://www.w3.org/2018/credentials/v1",
"https://www.example.org/2022/swedish-drivers-license.jsonld"
],
....
}
How do I define my custom context https://www.example.org/2022/swedish-drivers-license.jsonld
so that it matches my credential? Do I have to build on top of someone else's ontology or can is it possible for me to define the base definitions myself? How do I define that there is a required field "name" of type "string"?
This is how far I've gotten:
{
"@context": [
{
"competence": "http://example.com/vocabulary#competence",
"dateOfBirth": "http://example.com/vocabulary#dateOfBirth",
"name": "http://example.com/vocabulary#name",
"picture": "http://example.com/vocabulary#picture",
"ssn": "http://example.com/vocabulary#ssn",
}
]
}
But everything is just a uri and all examples I've found also just keep defining things in terms of more uri:s until they end at "http://schema.org/"
. Can I define what an "ssn"
myself is without referencing a third party?
Update 1
Here is my current solution:
{
"@context": [
"https://www.w3.org/2018/credentials/v1",
{
"competence": "https://schema.org/swedishdriverslicence/competence",
"dateOfBirth": "https://schema.org/birthDate",
"name": "https://schema.org/givenName",
"picture": {
"@id": "http://schema.org/image",
"@type": "@id"
},
"ssn": "https://example.org/sweden/ssn"
}
],
"credentialSubject": {
"id": "did:example:not-a-real-did",
"competence": ["AM", "B"],
"dateOfBirth": "1995-09-23",
"name": "Frank Franksson",
"picture": "some-random-url.png",
"ssn": "19950923-9965"
},
"holder": "did:ethr:goerli:0x027d0d3347a44b5469a8acd6e9195f6e5c3b7253ddce558238d096dd927b23055a",
"id": "https://example.org/credentials/c7c077a6-f0c0-4843-9718-68dfba008587",
"issuanceDate": "2022-11-18T09:00:38.000Z",
"issuer": {
"id": "did:ethr:goerli:0x02f163e34f0c84d85bf0b5becc119c86362e36fab4c9247515610a0b1cc4eff74a"
},
"proof": {
"jwt": "eyJhbGciOiJFUzI1NksiLCJ0eXAiOiJKV1QifQ.eyJ2cCI6eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvMjAxOC9jcmVkZW50aWFscy92MSJdLCJ0eXBlIjpbIlZlcmlmaWFibGVQcmVzZW50YXRpb24iLCJWZXJpZmlhYmxlQ3JlZGVudGlhbCIsIlN3ZWRpc2hEcml2ZXJzTGljZW5zZSJdfSwiaXNzdWVyIjp7ImlkIjoiZGlkOmV0aHI6Z29lcmxpOjB4MDJmMTYzZTM0ZjBjODRkODViZjBiNWJlY2MxMTljODYzNjJlMzZmYWI0YzkyNDc1MTU2MTBhMGIxY2M0ZWZmNzRhIn0sImNyZWRlbnRpYWxTdWJqZWN0Ijp7InNzbiI6IjE5OTUwOTIzLTk5NjUiLCJkYXRlT2ZCaXJ0aCI6IjE5OTUtMDktMjMiLCJuYW1lIjoiRnJhbmsgRnJhbmtzc29uIiwicGljdHVyZSI6InN1cGVyLWdvb2QtbG9va2luZy5wbmciLCJjb21wZXRlbmNlIjpbIkFNIiwiQiJdLCJpZCI6InNvbWUgZGlkIn0sInByb29mIjp7InR5cGUiOiJKd3RQcm9vZjIwMjAiLCJjcmVhdGVkIjoiMjAyMi0xMS0xOFQwOTowMDozOC4wMDBaIiwicHJvb2ZQdXJwb3NlIjoiYXNzZXJ0aW9uTWV0aG9kIiwidmVyaWZpY2F0aW9uTWV0aG9kIjoiaHR0cHM6Ly9leGFtcGxlLmVkdS9pc3N1ZXJzLzU2NTA0OSNrZXktMSIsImp3cyI6ImV5SmhiR2NpT2lKRlV6STFOa3NpTENKMGVYQWlPaUpLVjFRaWZRLmV5SjJZeUk2ZXlKQVkyOXVkR1Y0ZENJNld5Sm9kSFJ3Y3pvdkwzZDNkeTUzTXk1dmNtY3ZNakF4T0M5amNtVmtaVzUwYVdGc2N5OTJNU0pkTENKMGVYQmxJanBiSWxabGNtbG1hV0ZpYkdWRGNtVmtaVzUwYVdGc0lpd2lVM2RsWkdsemFFUnlhWFpsY25OTWFXTmxibk5sSWwwc0ltTnlaV1JsYm5ScFlXeFRkV0pxWldOMElqcDdJbk56YmlJNklqRTVPVFV3T1RJekxUazVOalVpTENKa1lYUmxUMlpDYVhKMGFDSTZJakU1T1RVdE1Ea3RNak1pTENKdVlXMWxJam9pUm5KaGJtc2dSbkpoYm10emMyOXVJaXdpY0dsamRIVnlaU0k2SW5OMWNHVnlMV2R2YjJRdGJHOXZhMmx1Wnk1d2JtY2lMQ0pqYjIxd1pYUmxibU5sSWpwYklrRk5JaXdpUWlKZGZYMHNJbk4xWWlJNkluTnZiV1VnWkdsa0lpd2lhblJwSWpvaWFIUjBjSE02THk5MlpYSnBabmt1YzNSbGNITjBiMjVsTG1OdmJTOWpjbVZrWlc1MGFXRnNjeTlqTjJNd056ZGhOaTFtTUdNd0xUUTRORE10T1RjeE9DMDJPR1JtWW1Fd01EZzFPRGNpTENKdVltWWlPakUyTmpnM05qSXdNemdzSW1semN5STZJbVJwWkRwbGRHaHlPbWR2WlhKc2FUb3dlREF5WmpFMk0yVXpOR1l3WXpnMFpEZzFZbVl3WWpWaVpXTmpNVEU1WXpnMk16WXlaVE0yWm1GaU5HTTVNalEzTlRFMU5qRXdZVEJpTVdOak5HVm1aamMwWVNKOS5LZU04STNCWWlxaVBUcDNLWDNBUThHMHU4ODlYS0hKbkJqYlFvQXpqOTFzY2Y5UDZVM1NQN05sZVVpVjJQREZRMTdlMWV4Qk9HdndLbWRoMzhRNFJwZyJ9LCJqdGkiOiJodHRwczovL3ZlcmlmeS5zdGVwc3RvbmUuY29tL2NyZWRlbnRpYWxzL2M3YzA3N2E2LWYwYzAtNDg0My05NzE4LTY4ZGZiYTAwODU4NyIsIm5iZiI6MTY2ODc2MjAzOCwiaXNzIjoiZGlkOmV0aHI6Z29lcmxpOjB4MDI3ZDBkMzM0N2E0NGI1NDY5YThhY2Q2ZTkxOTVmNmU1YzNiNzI1M2RkY2U1NTgyMzhkMDk2ZGQ5MjdiMjMwNTVhIn0.-9Kd8qEpZXNDWw-RsHO9nzh-citxi8yaas_Yhaxfx4ykj4HqJz3h3SvD94HRRTWFRvXty8z2Hl3FP1vCExVLIg",
"type": "JwtProof2020"
},
"type": [
"VerifiablePresentation",
"VerifiableCredential",
"SwedishDriversLicense"
]
}
You can view it in the playground