-
Notifications
You must be signed in to change notification settings - Fork 117
Make the vocabulary URLs and values normative #1159
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
Conversation
Several comments
|
@iherman wrote:
If we refer to the vocabulary normatively, with a hash, then what happens to the normative statement when we (inevitably) add a new term to the vocabulary in v3.0? Does that not break the hash and make the entire v2.0 ecosystem non-conformant? |
Good point; as long as we have the normative vocabulary in the spec for V3.0 as well (and we are careful not to remove a term) we may be fine without a hash. Forget my remark. |
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.
lgtm
text/html | ||
</td> | ||
<td> | ||
https://www.w3.org/2018/credentials/index.html |
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.
No, it is not... There seems to be a bug in the generation process.
I will look into it. That being said (1) this should not hold up this PR if it is voted to be merged and (2) at some point we agreed that the vocabulary definitions should happen when things get to an equilibrium point; it is impossible to keep the vocabulary in sync with so many things pending...
Thanks for notifying this.
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.
@msporny I have contacted you in a separate mail on this possible bug. There is some mystery surrounding the github.io behavior that leads to the disappearance of a full section content...
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 is probably some race condition when it comes to publishing the file, or the build process isn't getting executed before publishing for gh-pages, or some other strange thing like that. Usually when something like this happens, I look in the gh-pages build logs to see if I can see what's going wrong... or I look for something that could be a race condition.
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.
Can I trust you on looking at that? I am pretty much lost when it comes to these github magic...
</tr> | ||
<tr> | ||
<td> | ||
https://w3id.org/security# |
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.
Are we sure we want to make this one normative like this? or should we move this to a w3c origin before taking a normative dependency on it?
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 PR makes it such that it doesn't matter what URL the group decides to make normative, because it explicitly states what vocabulary is the normative one (the W3C published one). This means that the W3C VCWG is effectively taking over how the URL resolves and stating that the only correct resolution is to the W3C Vocabulary (or, whatever vocabulary the W3C VCWG deems is the one it wants to point to, like schema.org).
The benefit here is that we don't have to go around renaming all of the URLs in the ecosystem. What some in the VCWG wanted was to have control over the vocabulary URL and content, this PR does that without introducing any backwards incompatible changes.
text/html | ||
</td> | ||
<td> | ||
https://w3c.github.io/vc-data-integrity/vocab/security/vocabulary.html |
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 should be to a w3c origin, not github.
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 agree, but the appropriate URL doesn't exist at this time.
I would expect that this URL will end up being https://www.w3.org/ns/security
, but the VCWG hasn't set up that URL yet. I'll add an issue marker to that effect to the PR.
application/ld+json | ||
</td> | ||
<td> | ||
https://w3c.github.io/vc-data-integrity/vocab/security/vocabulary.jsonld |
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 should be to a w3c origin
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 agree, but the appropriate URL doesn't exist at this time.
I would expect that this URL will end up being https://www.w3.org/ns/security
, but the VCWG hasn't set up that URL yet. I'll add an issue marker to that effect to the PR.
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.
Can we add an issue marker that lets us change the URL and/or Content for this section, without going through CR again?
That will allow us to fix the github links, IIRC there has been objection to using github.io URLs in w3c documents before.
overall, love the direction of the PR, only a few nits. |
Yes, I'll add two issue markers:
Yes, agreed, having those links in there long term was not the intent... just needed a placeholder that was "under W3C control" (but really, under Github control, which is not ok). |
@iherman wrote:
I'm a -0.8 to copy the entire machine-readable vocabulary into the spec. It takes up a ton of space and no one really looks at it (ever). We did this with the IF we want to freeze the vocabulary for each version (and I'm a -0.75 on doing that), we should snapshot the machine-readable version of it and publish it with the specification. We could then refer to that snapshot via hash (and not take up a ton of space in the spec dumping in text that hardly anyone is going to look at). Thoughts, @iherman ? |
The comparison is not entirely fair: I would be against putting the context file into the document normatively for the reasons I have already stated elsewhere, no matter what. That being said, indeed, the jsonld version of the vocabulary is currently cca 400 lines; after some editorial trick (making a version of it that does not include the comment fields and the like) it may be reduced to 300. I agree, it is longish.
Yes.
But we should still keep the copy in the /TR directory of the publication, because you cannot refer externally (i.e., outside the /TR subdirectory) to a normative part of the spec. Alternative to consider: what about using the HTML details element? Using the respec to include for the jsonld content isn't a big deal (our spec is still tiny compared to HTML, but even compared to EPUB, ie, I do not really buy the argument of the spec being that large), the only real issue is the readability. If there is a normative appendix on the vocabulary that refers to the HTML and Turtle versions and has, inline, the jsonld version in a |
@iherman can you elaborate on what you want to see (maybe an example directory structure)? I don't agree that the spec will be "too large".... I know we have some automation that can help build arbitrary length documents, let's use that... and make sure everything we are saying matters, is defined well, and easily readable / linkable. |
This means that the json-ld file (if it is the one normatively used by the spec) must be in Sounds like an arbitrary rule, but it is related to the secure archival of all specifications. |
a924222
to
73d775d
Compare
6fdf652
to
b214247
Compare
@msporny wrote:
This was done in: 73d775d
This was done in: b214247 A future PR can deal with how we intend to refer to the machine-readable vocabulary documents, how they will be packaged up and published, and whether or not we want to refer to them by hash (my preference) or by inclusion in an HTML details element in the spec (-0.75 for doing this if we just refer to them by hash). I have also added an issue marker for this here: f3d32dd |
@@ -5216,6 +5216,14 @@ <h3>Vocabularies</h3> | |||
location under W3C control. | |||
</p> | |||
|
|||
<p class="issue" title="How to normatively refer to vocabulary files"> |
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.
Since there is issue to leave this comment on, I will leave it here.
hash for vocab seems a bit odd, given we are trusting w3c to maintain both the hash, and the vocab.... an attacker with control of the origin can change both.
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, I agree... which is one of the reasons why I didn't want to use hash or the vocab content in the spec in the first place. Feels like overkill.
Normative, multiple reviews, changes requested and made (issue markers for unresolved issues), no objections, merging. |
This PR is an attempt to address issue #1103 by making the vocabulary URLs and content at those URLs normative. I will note that this PR is experimental, as it's not clear if it addresses all of the concerns raised in #1103.
One thing the PR does not do is refer to each vocabulary by hash (like we do for context files). It doesn't do this because doing so with vocabularies like schema.org is not possible (because the vocabulary is updated on a regular basis and thus the hashes would change on a regular basis). The same is true for the WG's vocabulary files (over time). If we were to refer to them by hash, then the next iteration of the vocabulary would break previous releases. The same is true if we included the vocabulary, verbatim, in the core specification.
So, this PR attempts to make it not matter what the URLs used in the context file are -- the WG specifies exactly which vocabulary each URL included in the context should refer to such that the meaning of the terms (both human readable and machine readable) is under the control of the WG (or delegated to an entity that the WG feels is adequate).
Preview | Diff