-
Notifications
You must be signed in to change notification settings - Fork 20
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Rework the data model to support statusPurpose
field.
#24
Conversation
330ecf9
to
fb40f90
Compare
contexts/v1.jsonld
Outdated
@@ -2,7 +2,7 @@ | |||
"@context": { | |||
"@protected": true, | |||
|
|||
"StatusList2021Credential": { | |||
"StatusListCredential2021": { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This shouldn't be changed -- this is a type of Credential
not a Credential2021
, so it should end in just Credential
.
"StatusListCredential2021": { | |
"StatusList2021Credential": { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, considered that. It's strange... can't think of anywhere else that we do this (date stamp in middle of type name). It creates this new rule that people have to remember when using date stamped values... and it's not clear when to use one vs. the other. I'd rather we stick with one rule (dates go at the end) rather than (dates sometimes go in the middle -- here's yet another complex VC thing you have to remember to determine when to do what).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The other rule we have always had is that Credential
is last. This would break that rule.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hmm, I don't think that there's a "new rule" here with date stamps. I think these have already been the rules:
- If you want to date stamp a thing,
X
, with a year,YEAR
, doXYEAR
. - If you want a new type of
Credential
to hold / talk aboutX
it should beXCredential
. This meansXYEARCredential
for date stampedX
's.
I don't think we're date-stamping the credential, we're date-stamping the status list. Then, as part of how this system works, we also need a credential to put the status list in. That's what the credential is ... a credential that holds a StatusList2021
. It's not a credential ... from 2021 (or something?) that is holding an unstamped status list. I'm not sure what the date stamp means if it's put at the end here.
I think it's better that the rules be that the date follows the thing it applies to -- which is the status list definition. The fact that there's a credential to go along with a StatusList2021
is orthogonal, IMO.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
One thing I considered was just dropping the 2021 and just making it "StatusListCredential". Thoughts?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Interesting. I get you. Seems like StatusList2021Credential
agrees the "most" with naming conventions I suppose.
Other options like putting a /vYYYY/
in the path would cause issues with resolution down the line.
Seems weird, but I agree that this particular credential type is far from settled.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Seems like
StatusList2021Credential
agrees the "most" with naming conventions I suppose.
I count that as 2 for, 1 undecided... would be good to get some more opinions on this... /cc @OR13 @mprorock @mkhraisha @tplooker @mavarley @TallTed @peacekeeper
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
StatusList2021Credential
being the Credential that holds the 2021 StatusList which is made up of some number of StatusList2021Entry
Entries seems to make the most sense. I think it will need some clear description of how it was arrived at, something like my first sentence, to carry forward clearly into the 2022 or 2025 or 2057 editions...
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Just so there is more consensus, XYearCredential
seems fine to me. So StatusList2021Credential
is ok. The naming convention reminds me of ECMA script standards such as ES2016
which are working fine in the javascript community.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fixed in 01a681d.
contexts/v1.jsonld
Outdated
"encodedList": "https://w3id.org/vc/status-list#encodedList" | ||
} | ||
}, | ||
|
||
"RevocationList2021Status": { | ||
"StatusListEntry2021": { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It seems like this should be StatusList2021Entry
, i.e., everything should be StatusList2021X
.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Would be good to get some more opinions on this as well. /cc @OR13 @mprorock @mkhraisha @tplooker @mavarley @TallTed @peacekeeper
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fixed in 01a681d.
"@context": { | ||
"@protected": true, | ||
|
||
"id": "@id", | ||
"type": "@type", | ||
|
||
"statusPurpose": | ||
"https://w3id.org/vc/status-list#statusPurpose", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm not sure if this is better than statusType
... but maybe. Still considering.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm concerned about adding too many xType
fields... people are going to get confused between that and the regular type
field. Seems like there's good alignment with proofPurpose
.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah, I think this is probably a good approach.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
+100 @msporny
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Also agreeing here: statusPurpose
is a better name than statusType
which creates ambiguity with numerous other uses of the term type.
index.html
Outdated
@@ -276,7 +283,7 @@ <h2>Data Model</h2> | |||
</p> | |||
|
|||
<section> | |||
<h3>RevocationList2021Status</h3> | |||
<h3>StatusListEntry2021</h3> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Here and throughout:
<h3>StatusListEntry2021</h3> | |
<h3>StatusList2021Entry</h3> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fixed in 01a681d.
index.html
Outdated
@@ -400,25 +361,25 @@ <h3>SuspensionList2021Status</h3> | |||
The <code>statusListCredential</code> property MUST be a URL to a | |||
<a>verifiable credential</a>. When the URL is dereferenced, the resulting | |||
<a>verifiable credential</a> MUST have <code>type</code> property that | |||
includes the <code>StatusList2021Credential</code> value. | |||
includes the <code>StatusListCredential2021</code> value. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Here and throughout:
includes the <code>StatusListCredential2021</code> value. | |
includes the <code>StatusList2021Credential</code> value. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fixed in 01a681d.
contexts/v1.jsonld
Outdated
@@ -2,7 +2,7 @@ | |||
"@context": { | |||
"@protected": true, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I wonder if just include an @vocab
would be a better move here.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why do you think that, @OR13? If we do that, then everything under StatusList2021 becomes a part of the status list vocabulary. Seems like a dangerous thing to just blanket map any term to the status list vocabulary (this is why @vocab
, in general, is a bad idea and shouldn't be used).
This PR reworks the data model to address issue #2 and #3 by doing the following:
type
field now includes a year...StatusList2021
.statusPurpose
field has been added.statusPurpose
field contains a text string instead of a JSON-LD typed value.RevocationListX
andSuspensionListX
types have been removed.Preview | Diff