Skip to content

proofPurpose range must be a Class containing verification relationships (was: Discrepancies between the spec and the vocabulary) #248

Closed
@iherman

Description

@iherman

The spec says for the proofPurpose property:

proofPurpose
The reason the proof was created MUST be specified as a string that maps to a URL [URL]. […]

The vocabulary specification claims that the range is an xsd:string, i.e., it is a Literal; but the text above says, in a somewhat convoluted way, that the value, in RDF terminology, is not a literal but a "real" resource.

Looking at the usage of the terms, Example 2 says:

{
  "proof": {
	
	"proofPurpose": "assertionMethod",
    
  }
}

The base context does some tricks using "@type":"@vocab", and the result of these lines result, in Turtle, in the following quads:

_:b0 <https://w3id.org/security#proof> _:b1 .
_:b2 <https://w3id.org/security#proofPurpose> <https://w3id.org/security#assertionMethod> _:b1 .

which shows that the range of proofPurpose is an RDF Resource with, in this case, the URL https://w3id.org/security#assertionMethod.

But then it goes further. The vocabulary specification for assertionMethod (and for authentication, etc...) defines this term as a property with a range VerificationMethod. That does not coincide with the usage in the example. Instead, assertionMethod is used as an individual and not as a property. Also, these individuals have nothing to do, relationship-wise, with the Verification Method. Instead, they could be characterized as individuals, all of the type ProofPurpose (this class is not part of the security vocabulary).

Based on all these, I think the following changes must be done on the di vocabulary:

  • Introduce a new class, called ProofPurpose (formally defined in §2.2)
  • the range of proofPurpose is the (new) ProofPurpose class (and not a string literal, as it says now)
  • the following terms: authentication, assertionMethod, capabilityDelegation, capabilityInvocation, and keyAgreement are all to be defined as individuals, all of the type ProofPurpose (and not as properties as they are now).

cc @dlongley @msporny

(Obviously, if we have an agreement, the creation of the corresponding PR will be on me.)

Metadata

Metadata

Assignees

Labels

CR1This item was processed during the first Candidate Recommendation phase.bugSomething isn't workingeditorialThis issue or PR constitutes an editorial change.pr existsA pull request exists to address this issue.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions