diff --git a/spec/spec.md b/spec/spec.md index e3e787f..579ba82 100644 --- a/spec/spec.md +++ b/spec/spec.md @@ -47,11 +47,60 @@ dd { Evaluating the credibiity of digital information about the real world is a difficult problem, one which is not sufficiently addressed by cryptographic signing or blockchain validation. An open, interoperable, cross-domain web of trust could enable robust credibility assessment; a number of projects pursue this goal. LinkedClaims is a minimal standard to enable links between independent claims: each claim must be addressable (ie have a URI), must be about an addressable subject, and must be cryptographically signed. Several desirable features are also identified, such as the ability to make a determinate hash of claim content. The LinkedClaim pattern already exists in several independent projects and implementations; by defining profiles or mappings for these existing data structures to a LinkedClaim data model, we enable linking them together without requiring changes to their native formats. +This specification defines the fundamental requirements for a claim to be classified as a "linked claim." It introduces the concept of a LinkedClaim profile, outlines how an ecosystem can achieve conformance with the linked claim requirements, and provides guidance on specifying additional requirements through a profile. However, it does not define any specific profile or provide an implementation guide, which are addressed in separate documents. + ## Status of This Document Decentralized Web Node is a _DRAFT_ specification under development within the [Decentralized Identity Foundation](https://identity.foundation) (DIF). It is an active work item of the [Linked Claim Incubation Lab at DIF](https://github.com/decentralized-identity/labs/blob/main/proposals/linked_claims/001_proposal.md) It incorporates requirements and learnings from diverse stakeholders across sectors into a shared specification that meets the collective needs of the community. -The specification will be updated to incorporate feedback, from DIF members and the wider community, with a reference implementation being developed within DIF that exercises the features and requirements defined here. We encourage reviewers to submit [GitHub Issues](https://github.com/decentralized-identity/labs-linkedclaims/issues) as the means by which to communicate feedback and contributions. +The specification will be updated to incorporate feedback, from DIF members and the wider community, with a reference implementation being developed that exercises the features and requirements defined here. We encourage reviewers to submit [GitHub Issues](https://github.com/decentralized-identity/labs-linkedclaims/issues) as the means by which to communicate feedback and contributions. + +## Terminology + +[[def:Linked Claim]] ~ A structured, cryptographically signed document with a URI subject that is itself addressable at a URI, following at least the MUST requirements detailed below. + +[[def:URI]] ~ a Uniform Resource Identifier as defined in https://datatracker.ietf.org/doc/html/rfc3986 + +## Architecture + +```mermaid + +graph LR + subgraph Claim A + A_id["id: URI_A"] + A_subject["subject: URI_B"] + A_content["content: {...}"] + A_sig["signature: xyz"] + end + + subgraph Claim B + B_id["id: URI_B"] + B_subject["subject: URI_X"] + B_content["content: {...}"] + B_sig["signature: xyz"] + end + + subgraph Claim C + C_id["id: URI_C"] + C_subject["subject: URI_B"] + C_content["content: {...}"] + C_sig["signature: xyz"] + end + + %% Claims point to target claim's ID URI + A_subject -.-> B_id + C_subject -.-> B_id + + classDef claim fill:#e6e6fa,stroke:#333,stroke-width:2px; + classDef claimPart fill:#f0f0f0,stroke:#666,stroke-width:1px; + class A_id,B_id,C_id,A_subject,B_subject,C_subject,A_content,B_content,C_content,A_sig,B_sig,C_sig claimPart; + + style Claim A fill:#e6e6fa,stroke:#333,stroke-width:2px; + style Claim B fill:#e6e6fa,stroke:#333,stroke-width:2px; + style Claim C fill:#e6e6fa,stroke:#333,stroke-width:2px; + + linkStyle 0,1 stroke:#666,stroke-width:2px,stroke-dasharray: 5; +```