Closed kdenhartog closed 2 years ago
ping @dlongley @dmitrizagidulin @msporny
bump
Sorry that I missed this, thanks for the bump. The number of Github notifications I have coming /directly/ to me has reached a point where I'll inevitably miss something if I blink.
As an aside, we should move all relevant issues in this repo over to here:
https://w3c-ccg.github.io/vc-status-list-2021/
We should archive this repo so we don't have active issues on this repo anymore.
Answers below...
It MUST NOT be the URL for the revocation list. Is there something I'm missing here deep in the weeds of JSON-LD that may cause a problem?
Yeah, and it's a nuance everyone needs to be careful of when properly modelling graph-based information. Remember that id
identifies a thing that exists. Other people may use that same identifier, so when you use an id
value, you should imagine other people using the same value and attaching their own properties to that id
.
You should always ask yourself this question: "If I were to merge all the data in the world that uses this id
into the same graph, what would it look like?" The answer if you use the URL for the revocation list is: "That id
will associate every single statusListIndex
in the world with the id
as well as every statusListCredential
. Your merged object would end up looking like this (JSON-LD format):
{
"id": "https://dmv.example.gov/credentials/status/3",
"type": "RevocationList2021",
"statusListIndex": ["1", ..., "94567"] // note the array of 94,567 entries
}
... which is not what we want. credentialStatus
is meant to point to ONE credential status object, not EVERY credential status object.
Note that this isn't a "JSON-LD thing", it's an "information theory" thing. Most JSON developers don't consider this sort of stuff because they expect their data to always be localized to their application/domain (closed world data model). We can't make the same assumptions for an open world data model.
👍 This is a great explanation and is obvious in hindsight now that you point it out since the nodes in the graph would be considered "identical". I don't believe this requires any further action at this point so fine with closing it.
In the
id
property definition it states:What's the reasoning for this? The only thing I could come up with is that the id of the property would be shared across multiple credentials, but I didn't see how that may cause a problem.
Rather, I was thinking that we could make the id the URL to retrieve the statusListCredential and remove the
revocationListCredential
property. This way nearly the same URL isn't included twice.Is there something I'm missing here deep in the weeds of JSON-LD that may cause a problem?