Status: Draft v0.1.0 — This section is informative.
Rights Layer is a conceptual, descriptive layer (Principle P7) built for maximal reuse of existing standards (Principle P8). This document explains how Rights Layer expressions interoperate with the identifiers, rule languages, credential formats, vocabularies, and registries that already exist — without depending on any of them (Principle P1). For what each neighboring standard is and how it is positioned, see Comparison with Existing Standards.
Every Rights Layer entity is identified by a URI, and no URI scheme is required or privileged (see Data Model, §1.1):
https: URLs, urn: URNs, did: identifiers, and any other URI scheme
are equally conformant.This neutrality is what allows the same expression structure to point into a land registry, a licensing register, and a shareholder register in one document.
context/rights-layer.jsonld)
maps Rights Layer terms to IRIs, so a document that includes @context
can be processed as an RDF graph — enabling SPARQL querying, merging with
other linked data, and vocabulary alignment (e.g., with Schema.org).@context is OPTIONAL; a
consumer that ignores it processes the same document with identical
meaning. No implementation is forced into RDF tooling.requirementRefRights Layer defines no rule language of its own, and evaluates nothing. An Eligibility carries:
requirement — the human-readable statement of exactly one requirement
(always present), andrequirementRef — an OPTIONAL URI pointing at the requirement’s
authoritative definition in an external system: a statute clause, a
published policy, an ODRL policy, an XACML policy, a LegalRuleML
representation of a norm, or any other external definition. Evaluation of
the requirement is outside the layer.Interoperation pattern:
EligibilityResponseIssued Event; when every Eligibility of the
Action has a verifiable true Response, a Decision is established and
recorded via a DecisionEstablished Event.requirement text preserves human
meaning, and the Responses and Decision history preserve what was
actually answered and established.This keeps Rights Layer stable while any number of policy languages evolve underneath it.
External proof formats plug in through the ProofReference of an Eligibility Response, and through Evidence (see Terminology):
proof MAY reference a W3C Verifiable
Credential or Verifiable Presentation, a signed document, a registry
lookup endpoint, or a paper record locator as the means of establishing
the Response’s authenticity and integrity — proofKind labels the
mechanism as a free-form string. VCs and attestations are one possible
mechanism among many; none is required (NR-10).proof MAY reference the same range of mechanisms
for verifying the Evidence itself.attester role).validFrom /
validUntil.The rule of separation: a credential proves a fact; the Eligibility Response is the Boolean answer it stands behind; the Rights Layer expression states the Right the fact bears on. Verification procedures, reliance decisions, and revocation checking belong to the governing systems, not to this specification.
Rights Layer extends without fragmenting (Principle P10) through two mechanisms defined in the Data Model:
extensions object. Any entity MAY carry additional properties
under extensions, keyed by profile-defined names. Consumers MUST ignore
unknown extensions, and extensions MUST NOT alter core property
semantics.type. An entity’s type is a core term
optionally followed by additional profile types (e.g., a Right that a
land profile also types with its own term). Consumers that know only the
core specification read the core type and remain able to interpret the
expression.A profile is a named set of such extensions for a domain: controlled Action vocabularies (e.g., for land, licensing, or insurance), requirement vocabularies for Eligibilities, extension property definitions, and JSON-LD context additions. Profiles interoperate because every profiled expression is still a conforming core expression; two consumers sharing only the core can always exchange documents, and consumers sharing a profile exchange richer meaning.
Interoperability rules for profile authors and consumers:
specVersionEvery Rights Layer document declares the specification version it was produced under:
{ "type": "RightsExpression", "specVersion": "0.1.0", "entities": [ ... ] }
specVersion follows a major.minor.patch pattern. This draft is
0.1.0; while the major version is 0, any minor version MAY introduce
breaking changes as the specification stabilizes.specVersion before interpreting a document and
SHOULD accept documents whose version they support; behavior for
unsupported versions is deployment-defined (reject, or best-effort read
of core terms).1.0.0 onward is conventional compatibility: patch and
minor versions add without breaking (consumers ignore what they do not
know, consistent with the extension rules above); breaking changes
require a major version. Version-negotiation protocols are out of scope —
Rights Layer defines documents, not transports.The registries the world already runs on — land registries, licensing registers, corporate and shareholder registers, court records, policy administration systems — interoperate with Rights Layer as themselves:
evidenceType such as
registry-extract or licence-record) with evidenceSourceRef pointing
at the registry and a ProofReference describing how the entry can be
verified — a lookup, an extract, a certified copy — in whatever manner
the registry provides.sourceKind: "registration") grounding a
Right, with reference locating the registration.SourceChanged, RightRevoked, …) — append-only, so the
expression’s history remains a faithful trail of what the systems of
record said, and when (Principle P6).This is the general interoperation stance of Rights Layer: reference, never replace. Existing standards carry sessions, proofs, rules, and records; Rights Layer supplies the neutral vocabulary that lets one structure — a right, grounded in a source, exercised through actions under eligibility requirements — be expressed across all of them.