This repository has been archived by the owner on Oct 29, 2019. It is now read-only.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Update ABNF to use matrix parameters #187
Update ABNF to use matrix parameters #187
Changes from 4 commits
acb52c9
559b6e9
fed3903
c7d83ac
976d630
18c70f6
4364b2a
4bf3edc
20e044d
1a25913
fb0d851
9ec0477
File filter
Filter by extension
Conversations
Jump to
There are no files selected for viewing
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.
If DID methods can't or won't implement some of the proposed parameters because of a preference for greater decentralization by limiting the heavy lifting done by resolvers, then there should be the option to not implement. Prefer wording that says if a DID method implements a parameter, that DID method parameter MUST operate uniformly.
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.
+1 this reads like all parameters are required by all DID methods. Should be an IF-MUST. Suggest to change
to
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 all DID methods must be able to resolve a DID to a DID Document, and the first four parameters (
service
,service-type
,key
,key-type
) operate directly on the DID Document, I don't see how a DID method would NOT support them? Those parameters are completely generic.I could however see that a particular implementation of a DID resolver may not support these parameters. E.g. a DID resolver may be able to resolve a DID to its DID Document, but it doesn't have the ability to select services or keys from the DID Document. I agree that probably we want to allow this too.
Does this make sense? Perhaps we mean the same thing anyway?
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. These params don't seem in jeopardy of not being supported by the resolver since these operate on the document returned and is of no consequence to the resolver.
I agree, this shouldn't be of concern to the DID resolver
The parameters which you didn't mention, for example
version-time
would need to operate on a group of DIDs, and therefore be a function of the resolver. I'm I not understanding how parameters likeversion-time
would work?For parameters such as
version-time
, could these be IF the resolver implements they MUST operate in the same way?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.
Depends on what we mean by "DID resolver". Is it just the component that returns the DID Document for a given DID, or does it perform the full dereferencing process for a DID URL. We haven't defined this very well yet. This will go into the separate DID Resolution spec.
It would return the DID Document for a given DID at a certain point in time (e.g. the one from 2 weeks ago, rather than the current DID Document). This will also be defined in more detail in the DID Resolution spec.
Yes that's the idea.
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.
Great point. I've been thinking of the DID resolver as the mechanism that dereferences the DID URL. What happens client side should be a separate concern outside of the DID resolver perhaps? I do agree that this should be defined better.
Great, can we edit this PR so it reads that way?
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 should also be a away to perform a query against a DID method and DID resolver combination to determine which parameters are supported on a DID method by DID method basis.
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.
@rhiaro and @yancyribbens: Do you think 9ec0477 is a step in the right direction to clarify 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.
@mwherman2000 As we have discussed in w3c/did-resolution#25, I agree this is a useful feature that can be supported by DID methods and DID resolvers, however I don't think this is in scope of the DID URL syntax. The proposed grammar always requires a
method-specific-id
as part of the DID URL, therefore there is no way to "perform a query against a DID method" itself using a DID URL.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.
Actually @mwherman2000, I'd like to correct myself. #189 (comment) just reminded me that in fact the
method-specific-id
can be blank, so with this currently proposed grammar, there could actually be an identifier for the method itself. Happy to explore that further...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.
Maybe I missed something - what other kinds of content objects are in scope (and not implementation-specific) to be returned from the DID registry, other than a DID Document?
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.
At RWoT#8 (I wasn't there), the idea of "content references" came up, which means that a DID URL could refer to some object in the registry other than a DID Document. For example, in the Sovrin/Indy universe, there is a use case to refer to schemas and credential definitions. At RWoT#8 the idea was to introduce additional syntax to accomplish this, but now we thought we can also just use matrix parameters to identify such additional objects. I'm not convinced that the concrete parameters that are currently here (
content-type
,content-id
) are ideal. For example, perhaps path or query or fragment could be used instead ofcontent-id
or something like that. I would propose however that we don't let questions about individual matrix parameters stand in the way of merging the PR - we can always fine-tune the exact parameters later.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.
+1. Referencing other objects seems out of scope unless there is a specific use case.
@peacekeeper This sounds like an implementation specific use case.. Any use cases that's specific to more than one implementation?
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 the schema / credential definition example is specific to only the "sov" DID method, but the concept itself (having a mechanism to reference arbitrary content in the target system) could be generic. @ken-ebert and @talltree brought up this requirement of "content references".