From eb1369150ead14b2560a1c88ab16b7eeee34870b Mon Sep 17 00:00:00 2001 From: Jeremy Adams Date: Fri, 6 Aug 2021 15:02:38 -0400 Subject: [PATCH 1/5] initial process document and markdown table registry added --- namespace/ga4gh-namespace-identifiers.md | 53 ++++++++++++++++++++++++ namespace/type-prefix-registry.md | 10 +++++ 2 files changed, 63 insertions(+) create mode 100644 namespace/ga4gh-namespace-identifiers.md create mode 100644 namespace/type-prefix-registry.md diff --git a/namespace/ga4gh-namespace-identifiers.md b/namespace/ga4gh-namespace-identifiers.md new file mode 100644 index 0000000..c8ca3e9 --- /dev/null +++ b/namespace/ga4gh-namespace-identifiers.md @@ -0,0 +1,53 @@ +# GA4GH Namespace Identifiers + +This document outlines the cross-workstream, GA4GH-wide namespace identifier system. Identifiers under the `ga4gh` namespace are CURIE-style ids that unambiguously associate the object at the given id with the data model (outlined in a GA4GH specification) it is constructed according to. + +## Background + +The GA4GH mission entails structuring, connecting, and sharing data reliably. A key component of this effort is to be able to `identify` entities, that is, to associate identifiers with entities. Ideally, there will be exactly one identifier for each entity, and one entity for each identifier. Traditionally, identifiers are assigned to entities, which means that disconnected groups must coordinate on identifier assignment. + +The computed identifier scheme proposed in the VR Specification computes identifiers from the data itself. Because identifers depend on the data, groups that independently generate the same variation will generate the same computed identifier for that entity, thereby obviating centralized identifier systems and enabling identifiers to be used in isolated settings such as clinical labs. + +The computed identifier mechanism is broadly applicable and useful to the entire GA4GH ecosystem. Adopting a common identifier scheme will make interoperability of GA4GH entities more obvious to consumers, will enable the entire organization to share common entity definitions (such as sequence identifiers), and will enable all GA4GH products to share tooling that manipulate identified data. In short, it provides an important consistency within the GA4GH ecosystem. + +As a result, we are proposing that the computed identifier scheme described in the VR specification be considered for adoption as a GA4GH-wide standard. If the proposal is accepted by the GA4GH executive committee, the current VR proposal will stand as-is; if the proposal is rejected, the VR proposal will be modified to rescope the computed identifier mechanism to VR and under admininstration of the VR team. + +## Proposal + +The following algorithmic processes, described in depth in the VR [Computed Identifiers](https://vrs.ga4gh.org/en/1.0/impl-guide/computed_identifiers.html#computed-identifiers) proposal, are included in this proposal by reference: + +* **GA4GH Digest Serialization** is the process of converting an object to a canonical binary form based on JSON and inspired by similar (but unratified) JSON standards. This serialization for is used only for the purposes of computing a digest. + +* **GA4GH Truncated Digest** is a convention for using [SHA-512](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf), truncated to 24 bytes, and encoding using [base64url](https://datatracker.ietf.org/doc/html/rfc4648#section-5). + +* **GA4GH Identification** is the CURIE-based syntax for constructing a namespaced and typed identifier for an object. + +## Type Prefixes + +A GA4GH identifier is constructed according to this syntax: + +``` +"ga4gh" ":" type_prefix ":" digest +``` + +The `digest` is computed as described above. The type_prefix is a short alphanumeric code that corresponds to the type of object being represented. If this propsal is accepted, this “type prefix map” would be administered by GA4GH. (Currently, this map is maintained in a YAML file within the vr-spec repository, but it would be relocated on approval of this proposal.) + +We propose the following guidelines for type prefixes: + +* Prefixes SHOULD be short, ideally 2-4 characters. +* Prefixes SHOULD be for concrete types, not polymorphic parent classes. +* A prefix MUST map 1:1 with a schema type. + +See the [type prefix registry](./type-prefix-registry.md) for the current list of approved type prefixes under the `ga4gh` namespace. + +## Type Prefix Submission Process + +All GA4GH work streams are encouraged to use existing type prefixes in their specifications wherever possible, and to submit new type prefixes for data models that aren't currently represented in the registry. + +To add an entry to the type prefix registry: +* Fork the TASC repository in your own user space +* In your user space, create a new branch from `ga4gh:master` +* In the new branch, add an additional row in the markdown table in `type-prefix-registry.md` with your proposed type prefix. +* Create a Pull Request (PR) to the `ga4gh:master` branch +* TASC will review the proposed type prefix and comment and/or request modifications on the PR thread. +* TASC will merge the PR once all comments have been addressed diff --git a/namespace/type-prefix-registry.md b/namespace/type-prefix-registry.md new file mode 100644 index 0000000..9a564d6 --- /dev/null +++ b/namespace/type-prefix-registry.md @@ -0,0 +1,10 @@ +| Type Prefix | Class Name | Definition | Example | Reference | +|-------------|------------|------------|---------|-----------| +| SQ | Sequence | ... | `ga4gh:SQ:...` | [VRS Computed Identifers](https://vrs.ga4gh.org/en/1.2.0/impl-guide/computed_identifiers.html)| +| VA | Allele | ... | `ga4gh:VA.EgHPXXhULTwoP4-ACfs-YCXaeUQJBjH_` | [VRS Computed Identifers](https://vrs.ga4gh.org/en/1.2.0/impl-guide/computed_identifiers.html) | +| VH | Haplotype | ... | `ga4gh:VH:...` | [VRS Computed Identifers](https://vrs.ga4gh.org/en/1.2.0/impl-guide/computed_identifiers.html) | +| VAB | Abundance | ... | `ga4gh:VAB:...` | [VRS Computed Identifers](https://vrs.ga4gh.org/en/1.2.0/impl-guide/computed_identifiers.html) | +| VS | VariationSet | ... | `ga4gh:VS:...` | [VRS Computed Identifers](https://vrs.ga4gh.org/en/1.2.0/impl-guide/computed_identifiers.html) | +| VSL | SequenceLocation | ... | `ga4gh:VSL:...` | [VRS Computed Identifers](https://vrs.ga4gh.org/en/1.2.0/impl-guide/computed_identifiers.html) | +| VCL | ChromosomeLocation | ... | `ga4gh:VCL:...` | [VRS Computed Identifers](https://vrs.ga4gh.org/en/1.2.0/impl-guide/computed_identifiers.html) | +| VT | Text | ... | `ga4gh:VT:...` | [VRS Computed Identifers](https://vrs.ga4gh.org/en/1.2.0/impl-guide/computed_identifiers.html) | From 12bff361af4f3943ab2544deeacbf7f16af2698b Mon Sep 17 00:00:00 2001 From: Jeremy Adams Date: Wed, 5 Jan 2022 14:22:54 -0500 Subject: [PATCH 2/5] various editorial updates --- namespace/ga4gh-namespace-identifiers.md | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/namespace/ga4gh-namespace-identifiers.md b/namespace/ga4gh-namespace-identifiers.md index c8ca3e9..253deb9 100644 --- a/namespace/ga4gh-namespace-identifiers.md +++ b/namespace/ga4gh-namespace-identifiers.md @@ -1,20 +1,18 @@ # GA4GH Namespace Identifiers -This document outlines the cross-workstream, GA4GH-wide namespace identifier system. Identifiers under the `ga4gh` namespace are CURIE-style ids that unambiguously associate the object at the given id with the data model (outlined in a GA4GH specification) it is constructed according to. +This document outlines the cross-workstream, GA4GH-wide namespace identifier system. Identifiers under the `ga4gh` namespace are compact uniform resource identifiers (CURIEs) that unambiguously associate the object at the given id with the data model (outlined in a GA4GH specification) it is constructed according to. ## Background The GA4GH mission entails structuring, connecting, and sharing data reliably. A key component of this effort is to be able to `identify` entities, that is, to associate identifiers with entities. Ideally, there will be exactly one identifier for each entity, and one entity for each identifier. Traditionally, identifiers are assigned to entities, which means that disconnected groups must coordinate on identifier assignment. -The computed identifier scheme proposed in the VR Specification computes identifiers from the data itself. Because identifers depend on the data, groups that independently generate the same variation will generate the same computed identifier for that entity, thereby obviating centralized identifier systems and enabling identifiers to be used in isolated settings such as clinical labs. +The computed identifier scheme proposed in the Variation Representation Specification (VRS) computes identifiers from the data itself. Because identifiers depend on the data, groups that independently generate the same variation will generate the same computed identifier for that entity, thereby obviating centralized identifier systems and enabling identifiers to be used in isolated settings such as clinical labs. The computed identifier mechanism is broadly applicable and useful to the entire GA4GH ecosystem. Adopting a common identifier scheme will make interoperability of GA4GH entities more obvious to consumers, will enable the entire organization to share common entity definitions (such as sequence identifiers), and will enable all GA4GH products to share tooling that manipulate identified data. In short, it provides an important consistency within the GA4GH ecosystem. -As a result, we are proposing that the computed identifier scheme described in the VR specification be considered for adoption as a GA4GH-wide standard. If the proposal is accepted by the GA4GH executive committee, the current VR proposal will stand as-is; if the proposal is rejected, the VR proposal will be modified to rescope the computed identifier mechanism to VR and under admininstration of the VR team. - -## Proposal +## Background -The following algorithmic processes, described in depth in the VR [Computed Identifiers](https://vrs.ga4gh.org/en/1.0/impl-guide/computed_identifiers.html#computed-identifiers) proposal, are included in this proposal by reference: +The following algorithmic processes, described in depth in VRS [Computed Identifiers](https://vrs.ga4gh.org/en/1.0/impl-guide/computed_identifiers.html#computed-identifiers) proposal, are included in this proposal by reference: * **GA4GH Digest Serialization** is the process of converting an object to a canonical binary form based on JSON and inspired by similar (but unratified) JSON standards. This serialization for is used only for the purposes of computing a digest. @@ -30,9 +28,9 @@ A GA4GH identifier is constructed according to this syntax: "ga4gh" ":" type_prefix ":" digest ``` -The `digest` is computed as described above. The type_prefix is a short alphanumeric code that corresponds to the type of object being represented. If this propsal is accepted, this “type prefix map” would be administered by GA4GH. (Currently, this map is maintained in a YAML file within the vr-spec repository, but it would be relocated on approval of this proposal.) +The `digest` is computed as described above. The type_prefix is a short alphanumeric code that corresponds to the type of object being represented. -We propose the following guidelines for type prefixes: +These are our recommendations for type prefixes: * Prefixes SHOULD be short, ideally 2-4 characters. * Prefixes SHOULD be for concrete types, not polymorphic parent classes. From 9662f6e5a8470b3bee20d262273a10f25c5f521c Mon Sep 17 00:00:00 2001 From: Jeremy Adams Date: Wed, 5 Jan 2022 14:29:29 -0500 Subject: [PATCH 3/5] delete a word --- namespace/ga4gh-namespace-identifiers.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/namespace/ga4gh-namespace-identifiers.md b/namespace/ga4gh-namespace-identifiers.md index 253deb9..a2e46aa 100644 --- a/namespace/ga4gh-namespace-identifiers.md +++ b/namespace/ga4gh-namespace-identifiers.md @@ -12,7 +12,7 @@ The computed identifier mechanism is broadly applicable and useful to the entire ## Background -The following algorithmic processes, described in depth in VRS [Computed Identifiers](https://vrs.ga4gh.org/en/1.0/impl-guide/computed_identifiers.html#computed-identifiers) proposal, are included in this proposal by reference: +The following algorithmic processes, described in depth in VRS [Computed Identifiers](https://vrs.ga4gh.org/en/1.0/impl-guide/computed_identifiers.html#computed-identifiers), are included in this proposal by reference: * **GA4GH Digest Serialization** is the process of converting an object to a canonical binary form based on JSON and inspired by similar (but unratified) JSON standards. This serialization for is used only for the purposes of computing a digest. From d433a926314558787455e4a70bd2eed45fcec71e Mon Sep 17 00:00:00 2001 From: Jeremy Adams Date: Wed, 5 Jan 2022 14:39:02 -0500 Subject: [PATCH 4/5] add type prefixes image --- namespace/ga4gh-namespace-identifiers.md | 2 ++ namespace/img/type-prefixes.png | Bin 0 -> 41912 bytes 2 files changed, 2 insertions(+) create mode 100644 namespace/img/type-prefixes.png diff --git a/namespace/ga4gh-namespace-identifiers.md b/namespace/ga4gh-namespace-identifiers.md index a2e46aa..1686d99 100644 --- a/namespace/ga4gh-namespace-identifiers.md +++ b/namespace/ga4gh-namespace-identifiers.md @@ -22,6 +22,8 @@ The following algorithmic processes, described in depth in VRS [Computed Identif ## Type Prefixes +![GA4GH type prefixes](./img/type-prefixes.png) + A GA4GH identifier is constructed according to this syntax: ``` diff --git a/namespace/img/type-prefixes.png b/namespace/img/type-prefixes.png new file mode 100644 index 0000000000000000000000000000000000000000..0367c067fa9f218ba4b9bbcb6650d2c588e74897 GIT binary patch literal 41912 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 Date: Mon, 17 Jan 2022 08:00:50 -1000 Subject: [PATCH 5/5] Update namespace/ga4gh-namespace-identifiers.md Co-authored-by: John Marshall --- namespace/ga4gh-namespace-identifiers.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/namespace/ga4gh-namespace-identifiers.md b/namespace/ga4gh-namespace-identifiers.md index 1686d99..210edb1 100644 --- a/namespace/ga4gh-namespace-identifiers.md +++ b/namespace/ga4gh-namespace-identifiers.md @@ -27,7 +27,7 @@ The following algorithmic processes, described in depth in VRS [Computed Identif A GA4GH identifier is constructed according to this syntax: ``` -"ga4gh" ":" type_prefix ":" digest +"ga4gh" ":" type_prefix "." digest ``` The `digest` is computed as described above. The type_prefix is a short alphanumeric code that corresponds to the type of object being represented.