diff --git a/index.html b/index.html index e384a97..ee576cc 100644 --- a/index.html +++ b/index.html @@ -57,7 +57,8 @@ name: "Patrick St. Louis", url: "https://www.linkedin.com/in/patrick-stlouis/", company: "Open Security and Identity", - companyURL: "https://opsecid.ca/" + companyURL: "https://opsecid.ca/", + w3cid: 162334 }], authors: [{ @@ -100,9 +101,12 @@ alternateFormats: [ {uri: "diff-20111214.html", label: "diff to previous version"} ], */ localBiblio: { - ENTRY: { - title: "Example Title", - href: "https://website.example/document", + OCA: { + title: "Overlays Capture Architecture Specification", + href: "https://oca.colossi.network/specification/", + authors: ["Human Colossus Foundation"], + status: "Living Specification", + date: "2024" }, }, lint: {"no-unused-dfns": false}, @@ -278,9 +282,9 @@
+ OCABundle is used by an issuer to specify rendering instructions + based on an Overlays Capture Architecture (OCA) Bundle as defined in [[[OCA]]]. + OCA provides a standardized way to define schemas with semantic overlays that + enable multi-language support, data entry formats, sensitive data flagging, and + rich metadata for rendering verifiable credentials in a consistent and + interoperable manner. +
+ ++ An OCA Bundle consists of a capture base that defines the core structure + and data types of the credential attributes, along with various overlays + that provide additional context such as labels, character encoding, format + specifications, entry codes, and information overlays. This layered approach + enables flexible and culturally-aware rendering of credentials while maintaining + data integrity. +
+ ++ When OCA is used as a render method for [=verifiable credentials=], the capture + base in the OCA Bundle uses JSON paths (as defined in [[[RFC6901]]]) as attribute + names to reference properties from the root of the [=verifiable credential=] + document, and defines the data type for each attribute. For example, + an attribute named `/credentialSubject/degree/name` would reference the `name` + property within the nested `degree` object of the credential's `credentialSubject`. + The overlays then provide presentation metadata such as human-readable labels in + multiple languages, formatting rules for dates and numbers, constraints for data + entry, and descriptive information about each attribute. This separation allows + the same credential data to be rendered differently based on context, locale, or + user preferences while maintaining a consistent semantic foundation. +
+ ++ When an [=issuer=] desires to specify OCA-based rendering instructions + for a [=verifiable credential=], they MAY add a `renderMethod` property + that uses the data model described below. +
+ +Property | +Description | +
---|---|
id | ++A REQUIRED [=string=] that follows the [[[URL]]] specification and, when fetched, +dereferences to an OCA Bundle in JSON format. The OCA Bundle contains the capture +base and associated overlays needed for rendering the credential. + | +
type | ++A REQUIRED [=string=] that MUST be the value `OCABundle`. + | +
name | ++An OPTIONAL human-readable [=string=] that can be displayed to provide a hint to +the type of rendering that will be performed. This property might be used in a +graphical interface that enables an individual to select between multiple +presentation modes. + | +
description | ++An OPTIONAL human-readable [=string=] that provides a more detailed description +of the OCA-based rendering method and when it might be useful. + | +
digestMultibase | ++An OPTIONAL multibase-encoded Multihash of the OCA Bundle. The multibase +value MUST be `u` (base64url-nopad) and the multihash value MUST be SHA-2 with +256 bits of output (0x12 in the multicodec table). This property can be used by +verifiers to ensure the integrity of the fetched OCA Bundle. + | +
version | ++An OPTIONAL [=string=] that specifies the OCA specification version that the +referenced OCA Bundle conforms to (e.g., "v2.0.0-rc1", "v2.0.0", "v1.0"). +This property helps renderers determine compatibility and select appropriate +processing logic for the OCA Bundle format. + | +
+ The data model shown above is expressed in a [=verifiable credential=] in + the example below. +
+ +
+{
+ "@context": [
+ "https://www.w3.org/ns/credentials/v2",
+ "https://www.w3.org/ns/credentials/examples/v2"
+ ],
+ "type": ["VerifiableCredential", "UniversityDegreeCredential"],
+ "issuer": {
+ "id": "https://example.edu/issuers/565049",
+ "name": "Example University"
+ },
+ "validFrom": "2024-01-01T00:00:00Z",
+ "credentialSubject": {
+ "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
+ "degree": {
+ "type": "BachelorDegree",
+ "name": "Bachelor of Science and Arts",
+ "degreeType": "Undergraduate",
+ "major": "Computer Science"
+ }
+ },
+ "renderMethod": [{
+ "id": "https://example.edu/oca-bundles/degree-2024.json",
+ "type": "OCABundle",
+ "name": "University Degree Display",
+ "description": "Renders the degree credential with multi-language support",
+ "digestMultibase": "uEiC96D8xPcVfm...WNcMF4Kc-Yw",
+ "version": "v2.0.0-rc1"
+ }]
+}
+
+
+ + In this example, the OCA Bundle located at + `https://example.edu/oca-bundles/degree-2024.json` contains the capture + base and overlays necessary to render the credential. The bundle might + include label overlays for multiple languages, format overlays for date + and number formatting, and information overlays with descriptions of each + attribute. +
+ ++ An example OCA Bundle structure for this credential might look like: +
+ ++{ + "bundle": { + "v": "OCAS11JSON000646_", + "digest": "EBfdlu8R27Fbx-ehrqwIxQ-na4B7A4LqidzXqj8gkzHp", + "capture_base": { + "digest": "ECui6bAv2zzW2gMVQbKT3M7g2q4r6yWKf2Y2k9CDa8Nq", + "type": "spec/capture_base/2.0.0", + "attributes": { + "/credentialSubject/degree/type": "Text", + "/credentialSubject/degree/name": "Text", + "/credentialSubject/degree/degreeType": "Text", + "/credentialSubject/degree/major": "Text" + }, + "classification": "" + }, + "overlays": [ + { + "digest": "EMzAk6N2iI1K5EpS9YqU7WxTc8BvPq1RgFn0D4XyJwLz", + "type": "spec/overlays/meta/2.0.0", + "capture_base": "ECui6bAv2zzW2gMVQbKT3M7g2q4r6yWKf2Y2k9CDa8Nq", + "name": "University Degree Credential", + "description": "Academic degree credential issued by universities" + }, + { + "digest": "EJqWh3K9fF8H2BmP6VnR4TxQz5YsLm8NcDk7A1UvGtIw", + "type": "spec/overlays/label/2.0.0", + "capture_base": "ECui6bAv2zzW2gMVQbKT3M7g2q4r6yWKf2Y2k9CDa8Nq", + "language": "en", + "attribute_labels": { + "/credentialSubject/degree/type": "Degree Type", + "/credentialSubject/degree/name": "Degree Name", + "/credentialSubject/degree/degreeType": "Degree Classification", + "/credentialSubject/degree/major": "Major" + } + }, + { + "digest": "EKpXi4L0gG9I3CnQ7WoS5UyRa6ZtNo9OdEl8B2VwHuJx", + "type": "spec/overlays/label/2.0.0", + "capture_base": "ECui6bAv2zzW2gMVQbKT3M7g2q4r6yWKf2Y2k9CDa8Nq", + "language": "fr", + "attribute_labels": { + "/credentialSubject/degree/type": "Type de diplôme", + "/credentialSubject/degree/name": "Nom du diplôme", + "/credentialSubject/degree/degreeType": "Classification du diplôme", + "/credentialSubject/degree/major": "Spécialisation" + } + }, + { + "digest": "ELrYj5M1hH0J4DoR8XpT6VzSb7AuOp0QeFm9C3WxIvKy", + "type": "spec/overlays/information/2.0.0", + "capture_base": "ECui6bAv2zzW2gMVQbKT3M7g2q4r6yWKf2Y2k9CDa8Nq", + "language": "en", + "attribute_information": { + "/credentialSubject/degree/type": "The type of academic degree awarded", + "/credentialSubject/degree/name": "The full official name of the degree", + "/credentialSubject/degree/degreeType": "Classification level (e.g., Undergraduate, Graduate)", + "/credentialSubject/degree/major": "The primary field of study" + } + }, + { + "digest": "ENaZl7O3jJ2L6FqT0ZrV8XyUd9CwRs2ShGo1E5YzKxMa", + "type": "spec/overlays/sensitive/2.0.0", + "capture_base": "ECui6bAv2zzW2gMVQbKT3M7g2q4r6yWKf2Y2k9CDa8Nq", + "attributes": [ + "/credentialSubject/degree/name" + ] + } + ] + } +} ++ +
+ Implementers can use the OCA Bundle to generate appropriate user interfaces, + select language-specific labels, apply format specifications, and ensure + consistent rendering across different applications and platforms. +
+