diff --git a/vocab/security/template.html b/vocab/security/template.html index 82ad1e4..d678e9f 100644 --- a/vocab/security/template.html +++ b/vocab/security/template.html @@ -155,10 +155,6 @@

Specification of terms

is used to include them in the RDFS representations).

-
Overview diagram of the vocabulary (without the reserved and deprecated items, error codes, and `xsd` datatypes).
A separate, stand-alone SVG version of the diagram, as well as a Diagram description Overview diagram of the vocabulary (without the reserved and deprecated items, error codes, and `xsd` datatypes).

The diagram uses boxes, ellipses, and connecting lines with different "styles" - (border color, end marker, line type) to differentiate their semantic meaning; - these styles identify Property, Class, or Datatype, via the shapes used for the - graph nodes, and Superclass, Domain Of, Range, or Contains, via the styles of the connecting lines. + (border color, end marker, line type) to differentiate their semantic meaning: + "Property", "Class", and "Datatype" are identified by the shape of the + graph node (e.g., an ellipse signifies a "Class"); "Superclass", "Domain Of", "Range", + "Type", and "Contains" relationships are identified by the style of the connecting line. These style names are used in the explanation text that follows, below.

- The diagram is roughly divided into left and right sections - (although there are some common nodes; see later). - To make this description easier to understand, these will be referred to as the - "Proof Section" and the "Verification Section". - Each of these sections has an ellipse at the top, styled as Class, - and respectively labeled as "Proof" and "VerificationMethod". + The diagram is roughly divided into three sections — lower left, lower right, and upper. + To make this description easier to understand, these sections will be respectively referred to + as the "Proof", "Verification Method", and "Verification Relationship" sections. + Shapes in the three sections are connected by lines of different styles; additionally, one box, + labeled as "multibase" and shaped as "Datatype", bridges the two lower sections + ("Proof" and "Verification Method"). +

+

+ Each of these sections has an ellipse at the top, labeled as "Proof", "VerificationMethod", + and "VerificationRelationship", respectively.

Proof Section

- The left side of the Proof Section contains another ellipse, - styled as Class and labeled as "ProofGraph", and connected - to the ellipse labeled as "Proof" with a connecting line styled as Contains. - There is also a box, styled as Property and labeled as "proof", - connected to the ellipse labeled as "ProofGraph" - with a connecting line styled as Range. + The left side of the section contains another ellipse, + labeled as "ProofGraph", and connected with a line + styled as "Contains" to the "Proof" ellipse. + A separate box, styled as "Property" and labeled as "proof", is connected + with a line styled as "Range" to the "ProofGraph" ellipse.

- There are two more ellipses in this section, styled as Class - and labeled as "Ed25519Signature2020" and "DataIntegrityProof", - each connected to the ellipse labeled as "Proof" - with connecting lines styled as Superclass. - The ellipse labeled as "DataIntegrityProof" is - also connected to a box styled as Property, - and labeled as "cryptosuite", with a connecting - line styled as Domain Of. The "cryptosuite" Property box - is connected to a shape - styled as Datatype and labeled as - "cryptosuiteString", with a connecting - line styled as Range. + There are two more ellipses in this section, + labeled as "Ed25519Signature2020" and "DataIntegrityProof", and + each connected to the "Proof" ellipse with lines styled as "Superclass". + The "DataIntegrityProof" ellipse is also connected to a box, styled as "Property" and labeled as + "cryptosuite", with a line styled as "Domain Of". + The "cryptosuite" Property box is connected to a shape, styled as "Datatype" and labeled as "cryptosuiteString", + with a line styled as "Range".

- The right side of the Section contains a column of labeled boxes, - all styled as Property. The labels, from top to - bottom, are "previousProof", "domain", "challenge", "proofPurpose", - "nonce", "created", "proofValue". - The ellipse labeled as "Proof" is connected to all of these with - connecting lines styled as Domain Of. - The box labeled as "previousProof" is also connected to the ellipse - labeled as "Proof" with a connecting line styled as Range. - The box labeled as "proofValue" is connected to a shape styled as Datatype - and labeled as "multibase", with a connecting line styled as Range. - Finally, another box, styled as Property and labeled as "digestMultibase", - is connected to the same "multibase" Datatype shape with - a connecting line styled as Range. + The right side of the section contains a column of labeled boxes, all styled as "Property". + The labels, from top to bottom, are "previousProof", "domain", "challenge", "nonce", "created", and "proofValue". + The "Proof" ellipse is connected to all of these boxes with lines styled as "Domain Of". + The "previousProof" box is also connected to the "Proof" ellipse, with a line styled as "Range". + The "proofValue" box is connected to a shape, styled as "Datatype" and labeled as "multibase", with a line styled as "Range". + Finally, the same "multibase" "Datatype" shape is connected to another box, styled as "Property" and labeled as "digestMultibase", with a line styled as "Range".

-

VerificationMethod Section

+

Verification Method Section

- The right side of this Section contains a column of labeled boxes, - all styled as Property. The labels, from top to bottom, are - "verificationMethod", "authentication", "assertionMethod", - "capabilityDelegation", "capabilityInvocation", and "keyAgreement". - Each of these boxes is connected to - the ellipse labeled "VerificationMethod", - with a connecting line styled as Range. + The left side of this section contains a column of three labeled boxes, all styled as "Property". + The labels, from top to bottom, are "expires", "controller", and "revoked". + Each of these is connected to the "VerificationMethod" ellipse, with a line styled as "Domain Of". + The "expires" "Property" box is also connected to the "Proof" ellipse (in the Proof section), + with a line styled as "Domain Of".

+

- The left side of this Section contains a column of three labeled - boxes, all styled as Property. The labels, from top to bottom, are - "expires", "controller", and "revoked". Each of these is connected - to the ellipse labeled "VerificationMethod", - with connecting lines styled as Domain Of. - The "expires" Property box is also connected to the ellipse - labeled "Proof" in the Proof Section, with a connecting line - styled as Domain Of. + There is also a distinct box, styled as "Property" and labeled as "verificationMethod". + This "verificationMethod" box is connected to the "VerificationMethod" +ellipse, with a connecting line styled as "Range".

- The middle of this section contains three ellipses, - styled as Class, and labeled as - "Multikey, "Ed25519VerificationKey2020", and "JsonWebKey". - Each of these is connected to - the ellipse labeled as "VerificationMethod" - with a connecting line styled as Superclass. + The middle of this section contains three more ellipses, labeled as "Multikey, "Ed25519VerificationKey2020", + and "JsonWebKey". + Each of these is connected to the "VerificationMethod" ellipse, with a line styled as "Superclass".

- Two boxes, styled as Property and labeled as "secretKeyMultibase" - and "publicKeyMultibase", are connected to the ellipse - labeled as "Multikey" with a connecting line styled as Domain Of. - Each of these boxes is also connected to the shape in the Proof - section styled as Datatype and labeled as "multibase", - with connecting lines styled as Range. + Two boxes, styled as "Property" and labeled as "secretKeyMultibase" and "publicKeyMultibase", + are connected to the ellipse labeled as "Multikey" with a line styled as "Domain Of". + Each of these boxes is also connected to the "multibase" "Datatype" shape in the Proof section, + with lines styled as "Range".

- Finally, two boxes, styled as Property and labeled "secretKeyJwk" - and "publicKeyJwk", are connected to the ellipse labeled "JsonWebKey" - with a connecting line styled as Domain Of. - Each of these boxes is also connected to - a shape styled as Datatype and labeled as "rdf:JSON", - with connecting lines styled as Range. + Finally, two boxes, styled as "Property" and labeled as "secretKeyJwk" + and "publicKeyJwk", are connected to the "JsonWebKey" ellipse, + with a line styled as "Domain Of". + Both boxes are also connected to a shape, styled as "Datatype" and labeled as "rdf:JSON", with + lines styled as "Range".

+
+

Verification Relationship Section

+

+ The left side of the section contains a single box, styled as "Property" + and labeled as "proofPurpose". + This box is connected to the "VerificationRelationship" ellipse, + with a line styled as "Range". + It is also connected to the "Proof" ellipse in the Proof section, + with a line styled as "Domain Of". +

- +

+ The right side of the section contains a column of labeled boxes, + all styled as "Property". + The labels, from top to bottom, are "verificationMethod", "authentication", "assertionMethod", "capabilityDelegation", "capabilityInvocation", and "keyAgreement". + Each of these boxes is connected to the "VerificationMethod" ellipse in the Verification Method section, + with a line styled as "Range". + Finally, each of these boxes is also connected to the "VerificationRelationship" ellipse, + with a line styled as "Type". +

+
- - diff --git a/vocab/security/vocabulary.drawio b/vocab/security/vocabulary.drawio index dfb2ef3..eb903b3 100644 --- a/vocab/security/vocabulary.drawio +++ b/vocab/security/vocabulary.drawio @@ -1,20 +1,17 @@ - + - + - - + + - - + + - - - - - + + @@ -25,8 +22,8 @@ - - + + @@ -34,8 +31,8 @@ - - + + @@ -43,8 +40,8 @@ - - + + @@ -55,8 +52,8 @@ - - + + @@ -71,8 +68,8 @@ - - + + @@ -83,8 +80,8 @@ - - + + @@ -94,11 +91,18 @@ - - - - - + + + + + + + + + + + + @@ -109,66 +113,12 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -210,11 +160,6 @@ - - - - - @@ -223,7 +168,7 @@ - + @@ -239,22 +184,22 @@ - + - + - + - + @@ -269,21 +214,19 @@ - + - + - - - + @@ -291,7 +234,7 @@ - + @@ -299,17 +242,15 @@ - - - + - + - + @@ -322,12 +263,12 @@ - + - + @@ -336,7 +277,7 @@ - + @@ -345,7 +286,7 @@ - + @@ -399,42 +340,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -452,7 +357,7 @@ - + @@ -483,11 +388,11 @@ - + - + @@ -543,7 +448,7 @@ - + @@ -557,10 +462,176 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/vocab/security/vocabulary.svg b/vocab/security/vocabulary.svg index 76eab1f..a44211e 100644 --- a/vocab/security/vocabulary.svg +++ b/vocab/security/vocabulary.svg @@ -1,11 +1,13 @@ - - - - - + + + + + + + -
+
@@ -15,13 +17,13 @@
- Graph con... + Graph con... - - + + -
+
Class @@ -29,13 +31,13 @@
- Class + Class - - + + -
+
Property @@ -43,14 +45,16 @@
- Property + Property - - - + + + + + -
+
Superclass @@ -58,14 +62,16 @@
- Superclass + Superclass - - - + + + + + -
+
Domain @@ -73,14 +79,16 @@
- Domain + Domain - - - + + + + + -
+
Range @@ -88,13 +96,13 @@
- Range + Range - - + + -
+
@@ -104,30 +112,30 @@
- Datatype + Datatype - - - - -
-
-
- - VerificationMethod - -
+ + + + + + + +
+ + Type + - + -
+
@@ -137,14 +145,14 @@
- controller + controller
- + -
+
@@ -154,30 +162,22 @@
- revoked + revoked
- - - - - - - - - - - - - - - - + + + + + + + + - + -
+
@@ -187,37 +187,26 @@
- Ed25519VerificationKey2020 - -
- - - - - - - - - - -
-
-
- - Proof - -
-
-
-
- Proof + Ed25519VerificationKey2020
+ + + + + + + + + + + + - + -
+
@@ -227,16 +216,18 @@
- ProofGraph + ProofGraph
- - + + + + - + -
+
@@ -246,16 +237,18 @@
- proof + proof
- - + + + + - + -
+
@@ -265,14 +258,14 @@
- domain + domain
- + -
+
@@ -282,14 +275,14 @@
- challenge + challenge
- + -
+
@@ -299,14 +292,14 @@
- previousProof + previousProof
- + -
+
@@ -317,15 +310,15 @@
- proofPurpose + proofPurpose
- + -
+
@@ -335,14 +328,14 @@
- proofValue + proofValue
- + -
+
@@ -352,14 +345,14 @@
- expiration + expiration
- + -
+
@@ -369,14 +362,14 @@
- nonce + nonce
- + -
+
@@ -386,30 +379,46 @@
- created - -
- - - - - - - - - - - - - - - - + created + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + -
+
@@ -419,14 +428,14 @@
- DataIntegrityProof + DataIntegrityProof
- + -
+
@@ -436,18 +445,22 @@
- Ed25519Signature2020 + Ed25519Signature2020
- - - - + + + + + + + + - + -
+
@@ -457,14 +470,14 @@
- cryptosuite + cryptosuite
- + -
+
cryptosuiteString @@ -472,288 +485,441 @@
- cryptosuiteString + cryptosuiteString
- - - - - - - - + + + + + + + + + + + + +
+
+
+ multibase +
+
+
+
+ multibase +
+
+ + + + + + -
+
- verificationMethod + Multikey
- verificationMethod + Multikey
- - + + + -
+
- authentication + publicKeyMultibase
- authentication + publicKeyMultibase
- - + + -
+
- assertionMethod + secretKeyMultibase
- assertionMethod + secretKeyMultibase
- - + + + + + + + + + + -
+
- capabilityDelegationMethod + JsonWebKey
- capabilityDelegationMethod + JsonWebKey
- - + + + +
+
+
+ rdf:JSON +
+
+
+
+ rdf:JSON +
+ +
+ -
+
- capabilityInvocationMethod -
+ secretKeyJwk
- capabilityInvocationMethod - + secretKeyJwk
- - + + -
+
- keyAgreementMethod + publicKeyJwk + +
+
+
+ + publicKeyJwk + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + digestMultibase
- keyAgreementMethod + digestMultibase
- - + + + + + + + + + + -
+
- multibase + + VerificationRelationship + +
+
+
+ + VerificationRelationship + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + verificationMethod +
- multibase + verificationMethod
- - - - + + -
+
- Multikey + authentication
- Multikey + authentication
- - - + + -
+
- publicKeyMultibase + assertionMethod
- publicKeyMultibase + assertionMethod
- - + + -
+
- secretKeyMultibase + capabilityDelegationMethod
- secretKeyMultibase + capabilityDelegationMethod
- - - - - - + + -
+
- JsonWebKey + capabilityInvocationMethod +
- JsonWebKey + capabilityInvocationMethod +
- - - -
-
- - - rdf:JSON - - - - + + keyAgreementMethod + + + + + + + + + + + + + + + + + + + + + + + + + + + + -
+
- secretKeyJwk + VerificationMethod
- secretKeyJwk + VerificationMethod
- - + + -
+
- publicKeyJwk + Proof
- publicKeyJwk + Proof
- - - - - - - - - - - - - - + + -
+
- digestMultibase + verificationMethod
- digestMultibase + verificationMethod
- - - - + + + + diff --git a/vocab/security/vocabulary.yml b/vocab/security/vocabulary.yml index 545a229..5879ae6 100644 --- a/vocab/security/vocabulary.yml +++ b/vocab/security/vocabulary.yml @@ -33,6 +33,12 @@ class: label: Verification method defined_by: https://www.w3.org/TR/vc-data-integrity/#verification-methods + - id: VerificationRelationship + comment: Instances of this class are verification relationships like, for example, authentication or assertionMethod. These resources can also appear as values of the proofPurpose property. + defined_by: https://www.w3.org/TR/vc-data-integrity/#verification-relationships + upper_value: rdf:Property + context: none + - id: DataIntegrityProof label: A Data Integrity Proof upper_value: sec:Proof @@ -219,7 +225,7 @@ property: - id: proofPurpose label: Proof purpose domain: sec:Proof - range: xsd:string + range: sec:VerificationRelationship defined_by: https://www.w3.org/TR/vc-data-integrity/#dfn-proofpurpose context: [vocab, https://www.w3.org/ns/credentials/v2] @@ -256,18 +262,21 @@ property: - id: authentication label: Authentication method range: sec:VerificationMethod + type: sec:VerificationRelationship defined_by: https://www.w3.org/TR/vc-data-integrity/#dfn-authentication context: [vocab, https://www.w3.org/ns/credentials/v2, https://www.w3.org/ns/did/v1] - id: assertionMethod label: Assertion method range: sec:VerificationMethod + type: sec:VerificationRelationship defined_by: https://www.w3.org/TR/vc-data-integrity/#dfn-assertionmethod context: [vocab, https://www.w3.org/ns/credentials/v2, https://www.w3.org/ns/did/v1] - id: capabilityDelegationMethod label: Capability delegation method range: sec:VerificationMethod + type: sec:VerificationRelationship comment: Historically, this property has often been expressed using `capabilityDelegation` as a shortened term in JSON-LD. Since this shortened term and its mapping to this property are in significant use in the ecosystem, the inconsistency between the short term name (`capabilityDelegation`) and the property identifier (`...#capabilityDelegationMethod`) is expected and should not trigger an error. defined_by: https://www.w3.org/TR/vc-data-integrity/#dfn-capabilitydelegation context: [vocab, https://www.w3.org/ns/credentials/v2, https://www.w3.org/ns/did/v1] @@ -275,12 +284,14 @@ property: - id: capabilityInvocationMethod label: Capability invocation method range: sec:VerificationMethod + type: sec:VerificationRelationship comment: Historically, this property has often been expressed using `capabilityInvocation` as a shortened term in JSON-LD. Since this shortened term and its mapping to this property are in significant use in the ecosystem, the inconsistency between the short term name (`capabilityInvocation`) and the property identifier (`...#capabilityInvocationMethod`) is expected and should not trigger an error. defined_by: https://www.w3.org/TR/vc-data-integrity/#dfn-capabilityinvocation context: [vocab, https://www.w3.org/ns/credentials/v2, https://www.w3.org/ns/did/v1] - id: keyAgreementMethod label: Key agreement protocols + type: sec:VerificationRelationship range: sec:VerificationMethod comment: Historically, this property has often been expressed using `keyAgreement` as a shortened term in JSON-LD. Since this shortened term and its mapping to this property are in significant use in the ecosystem, the inconsistency between the short term name (`keyAgreement`) and the property identifier (`...#keyAgreementMethod`) is expected and should not trigger an error. defined_by: https://www.w3.org/TR/vc-data-integrity/#dfn-keyagreement @@ -462,61 +473,61 @@ property: individual: - id: PROOF_GENERATION_ERROR - upper_value: sec:ProcessingError + type: sec:ProcessingError label: Proof generation error defined_by: https://www.w3.org/TR/vc-data-integrity/#PROOF_GENERATION_ERROR context: none - id: MALFORMED_PROOF_ERROR - upper_value: sec:ProcessingError + type: sec:ProcessingError label: Malformed proof defined_by: https://www.w3.org/TR/vc-data-integrity/#MALFORMED_PROOF_ERROR context: none - id: MISMATCHED_PROOF_PURPOSE_ERROR - upper_value: sec:ProcessingError + type: sec:ProcessingError label: Mismatched proof purpose defined_by: https://www.w3.org/TR/vc-data-integrity/#MISMATCHED_PROOF_PURPOSE_ERROR context: none - id: INVALID_DOMAIN_ERROR - upper_value: sec:ProcessingError + type: sec:ProcessingError label: Invalid proof domain defined_by: https://www.w3.org/TR/vc-data-integrity/#INVALID_DOMAIN_ERROR context: none - id: INVALID_CHALLENGE_ERROR - upper_value: sec:ProcessingError + type: sec:ProcessingError label: Invalid challenge defined_by: https://www.w3.org/TR/vc-data-integrity/#INVALID_CHALLENGE_ERROR context: none - id: INVALID_VERIFICATION_METHOD_URL - upper_value: sec:ProcessingError + type: sec:ProcessingError label: Invalid verification method URL defined_by: https://www.w3.org/TR/vc-data-integrity/#INVALID_VERIFICATION_METHOD_URL context: none - id: INVALID_CONTROLLER_DOCUMENT_ID - upper_value: sec:ProcessingError + type: sec:ProcessingError label: Invalid controller document id defined_by: https://www.w3.org/TR/vc-data-integrity/#INVALID_CONTROLLER_DOCUMENT_ID context: none - id: INVALID_CONTROLLER_DOCUMENT - upper_value: sec:ProcessingError + type: sec:ProcessingError label: Invalid controller document defined_by: https://www.w3.org/TR/vc-data-integrity/#INVALID_CONTROLLER_DOCUMENT context: none - id: INVALID_VERIFICATION_METHOD - upper_value: sec:ProcessingError + type: sec:ProcessingError label: Invalid verification method defined_by: https://www.w3.org/TR/vc-data-integrity/#INVALID_VERIFICATION_METHOD context: none - id: INVALID_PROOF_PURPOSE_FOR_VERIFICATION_METHOD - upper_value: sec:ProcessingError + type: sec:ProcessingError label: Invalid proof purpose for verification method defined_by: https://www.w3.org/TR/vc-data-integrity/#INVALID_PROOF_PURPOSE_FOR_VERIFICATION_METHOD context: none