diff --git a/pages/more-background-on-compact-identifiers/openapi.yaml b/pages/more-background-on-compact-identifiers/openapi.yaml index 3a0019cf..db60933d 100644 --- a/pages/more-background-on-compact-identifiers/openapi.yaml +++ b/pages/more-background-on-compact-identifiers/openapi.yaml @@ -27,3 +27,6 @@ tags: - name: Example DRS Client Compact Identifier-Based URI Resolution Process - Registering a new Compact Identifier for Your DRS Server description: $ref: ./tags/ExampleRegisterIdentifier.md + - name: Example How To Handle Extra Metadata for DRS Objects + description: + $ref: ./tags/DRSPlusDataConnect.md diff --git a/pages/more-background-on-compact-identifiers/tags/DRSPlusDataConnect.md b/pages/more-background-on-compact-identifiers/tags/DRSPlusDataConnect.md new file mode 100644 index 00000000..fd704452 --- /dev/null +++ b/pages/more-background-on-compact-identifiers/tags/DRSPlusDataConnect.md @@ -0,0 +1,5 @@ +## DRS and Data Connect + +With DRS objects it may be necessary to attach additional metadata to your objects. We believe that a change to the API of DRS to include metadata is not in the spirit of the DRS spec and in general DRS should have no knowledge of the metadata associated with the objects. We have found that a good GA4GH standard to support this is Data Connect (https://github.com/ga4gh-discovery/data-connect). The general approach would be to have a Data Connect service on your platform and to include "tables" with the ID matching your DRS ID for the same object. This means that if you have metadata associated with an object id `abcd` (ex. additional information about Compound Objects) all you need to do is request the information from the Data Connect client at `/tables/abcd/info`. There are optional functionalities of Data Connect, such as querying of tables, but we do not explore them or give any recommendations here. + +Here is an example of using Data Connect with DRS in the fasp-scripts repository (https://github.com/ga4gh/fasp-scripts/blob/master/notebooks/drs/DRS%20File%20Data.ipynb). In this notebook we can see that data connect is used to get DRS IDs from a platform. Those DRS IDs are then used to gather aditional information about the file that might be necessary for analysis. This is just one example of how DRS and Data Connect can interact with each other to gather information about data on a platform. \ No newline at end of file diff --git a/preview/develop/docs/more-background-on-compact-identifiers.html b/preview/develop/docs/more-background-on-compact-identifiers.html index 2c731990..9ee3bb4b 100644 --- a/preview/develop/docs/more-background-on-compact-identifiers.html +++ b/preview/develop/docs/more-background-on-compact-identifiers.html @@ -1832,10 +1832,14 @@ data-styled.g8[id="sc-iCoGMd"]{content:"gLxhOh,"}/*!sc*/ .fBHEBx{font-family:Montserrat,sans-serif;font-weight:600;font-size:1.85714em;line-height:1.2em;color:#333333;}/*!sc*/ data-styled.g9[id="sc-fujyAs"]{content:"fBHEBx,"}/*!sc*/ +.dFNfzX{font-family:Montserrat,sans-serif;font-weight:600;font-size:1.57143em;line-height:1.2em;color:#333333;margin:0 0 20px;}/*!sc*/ +data-styled.g10[id="sc-pNWdM"]{content:"dFNfzX,"}/*!sc*/ .iUxAWq{cursor:pointer;margin-left:-20px;padding:0;line-height:1;width:20px;display:inline-block;outline:0;}/*!sc*/ .iUxAWq:before{content:'';width:15px;height:15px;background-size:contain;background-image:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgeD0iMCIgeT0iMCIgd2lkdGg9IjUxMiIgaGVpZ2h0PSI1MTIiIHZpZXdCb3g9IjAgMCA1MTIgNTEyIiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCA1MTIgNTEyIiB4bWw6c3BhY2U9InByZXNlcnZlIj48cGF0aCBmaWxsPSIjMDEwMTAxIiBkPSJNNDU5LjcgMjMzLjRsLTkwLjUgOTAuNWMtNTAgNTAtMTMxIDUwLTE4MSAwIC03LjktNy44LTE0LTE2LjctMTkuNC0yNS44bDQyLjEtNDIuMWMyLTIgNC41LTMuMiA2LjgtNC41IDIuOSA5LjkgOCAxOS4zIDE1LjggMjcuMiAyNSAyNSA2NS42IDI0LjkgOTAuNSAwbDkwLjUtOTAuNWMyNS0yNSAyNS02NS42IDAtOTAuNSAtMjQuOS0yNS02NS41LTI1LTkwLjUgMGwtMzIuMiAzMi4yYy0yNi4xLTEwLjItNTQuMi0xMi45LTgxLjYtOC45bDY4LjYtNjguNmM1MC01MCAxMzEtNTAgMTgxIDBDNTA5LjYgMTAyLjMgNTA5LjYgMTgzLjQgNDU5LjcgMjMzLjR6TTIyMC4zIDM4Mi4ybC0zMi4yIDMyLjJjLTI1IDI0LjktNjUuNiAyNC45LTkwLjUgMCAtMjUtMjUtMjUtNjUuNiAwLTkwLjVsOTAuNS05MC41YzI1LTI1IDY1LjUtMjUgOTAuNSAwIDcuOCA3LjggMTIuOSAxNy4yIDE1LjggMjcuMSAyLjQtMS40IDQuOC0yLjUgNi44LTQuNWw0Mi4xLTQyYy01LjQtOS4yLTExLjYtMTgtMTkuNC0yNS44IC01MC01MC0xMzEtNTAtMTgxIDBsLTkwLjUgOTAuNWMtNTAgNTAtNTAgMTMxIDAgMTgxIDUwIDUwIDEzMSA1MCAxODEgMGw2OC42LTY4LjZDMjc0LjYgMzk1LjEgMjQ2LjQgMzkyLjMgMjIwLjMgMzgyLjJ6Ii8+PC9zdmc+Cg==');opacity:0.5;visibility:hidden;display:inline-block;vertical-align:middle;}/*!sc*/ h1:hover > .sc-crzoAE::before,h2:hover > .iUxAWq::before,.iUxAWq:hover::before{visibility:visible;}/*!sc*/ data-styled.g14[id="sc-crzoAE"]{content:"iUxAWq,"}/*!sc*/ +.dvcDrG{height:18px;width:18px;min-width:18px;vertical-align:middle;float:right;-webkit-transition:-webkit-transform 0.2s ease-out;-webkit-transition:transform 0.2s ease-out;transition:transform 0.2s ease-out;-webkit-transform:rotateZ(-90deg);-ms-transform:rotateZ(-90deg);transform:rotateZ(-90deg);}/*!sc*/ +data-styled.g15[id="sc-dIsUp"]{content:"dvcDrG,"}/*!sc*/ .jCdxGr code[class*='language-'],.jCdxGr pre[class*='language-']{text-shadow:0 -0.1em 0.2em black;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none;}/*!sc*/ @media print{.jCdxGr code[class*='language-'],.jCdxGr pre[class*='language-']{text-shadow:none;}}/*!sc*/ .jCdxGr pre[class*='language-']{padding:1em;margin:0.5em 0;overflow:auto;}/*!sc*/ @@ -1899,14 +1903,21 @@ .bcezPY{margin:0;padding:0;}/*!sc*/ .bcezPY:first-child{padding-bottom:32px;}/*!sc*/ .sc-uxdHp .sc-uxdHp{font-size:0.929em;}/*!sc*/ -data-styled.g102[id="sc-uxdHp"]{content:"bcezPY,"}/*!sc*/ +.kUEEAF{margin:0;padding:0;display:none;}/*!sc*/ +.kUEEAF:first-child{padding-bottom:32px;}/*!sc*/ +.sc-uxdHp .sc-uxdHp{font-size:0.929em;}/*!sc*/ +data-styled.g102[id="sc-uxdHp"]{content:"bcezPY,kUEEAF,"}/*!sc*/ .jycHIP{list-style:none inside none;overflow:hidden;text-overflow:ellipsis;padding:0;}/*!sc*/ data-styled.g103[id="sc-biJonm"]{content:"jycHIP,"}/*!sc*/ .iAObOy{cursor:pointer;color:#333333;margin:0;padding:12.5px 20px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;font-family:Montserrat,sans-serif;font-size:0.929em;text-transform:none;background-color:rgba(246,246,248,1);}/*!sc*/ .iAObOy:hover{color:rgba(27,117,187,1);background-color:#d9d9e2;}/*!sc*/ .iAObOy .sc-dIsUp{height:1.5em;width:1.5em;}/*!sc*/ .iAObOy .sc-dIsUp polygon{fill:#333333;}/*!sc*/ -data-styled.g104[id="sc-eHEENL"]{content:"iAObOy,"}/*!sc*/ +.gPowFR{cursor:pointer;color:#333333;margin:0;padding:12.5px 20px;padding-left:40px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;font-family:Montserrat,sans-serif;background-color:rgba(246,246,248,1);}/*!sc*/ +.gPowFR:hover{color:rgba(27,117,187,1);background-color:#e8e8ed;}/*!sc*/ +.gPowFR .sc-dIsUp{height:1.5em;width:1.5em;}/*!sc*/ +.gPowFR .sc-dIsUp polygon{fill:#333333;}/*!sc*/ +data-styled.g104[id="sc-eHEENL"]{content:"iAObOy,gPowFR,"}/*!sc*/ .ylzCN{display:inline-block;vertical-align:middle;width:auto;overflow:hidden;text-overflow:ellipsis;}/*!sc*/ data-styled.g105[id="sc-hzUIXc"]{content:"ylzCN,"}/*!sc*/ .iQlzog{font-size:0.8em;margin-top:10px;text-align:center;position:fixed;width:260px;bottom:0;background:rgba(246,246,248,1);}/*!sc*/ @@ -1947,7 +1958,7 @@ -
n2t.net and identifiers.org for information about all the compact identifiers that are supported. You can choose to use an existing compact identifier provider for your DRS server, as we did in the example above using DOIs ("DRS Client Compact Identifier-Based URI Resolution Process - Existing Compact Identifier Provider"). Just keep in mind, each provider will have their own approach for generating compact identifiers and associating them with a DRS data object URL. Some compact identifier providers, like DOIs, provide a method whereby you can register in their network and get your own prefix, allowing you to mint your own accessions. Other services, like the University of California’s EZID service, provide accounts and a mechanism to mint accessions centrally for each of your data objects. For experimentation we recommend you take a look at the EZID website that allows you to create DOIs and ARKs and associate them with your data object URLs on your DRS server for testing purposes.

+

Example How To Handle Extra Metadata for DRS Objects

DRS and Data Connect

With DRS objects it may be necessary to attach additional metadata to your objects. We believe that a change to the API of DRS to include metadata is not in the spirit of the DRS spec and in general DRS should have no knowledge of the metadata associated with the objects. We have found that a good GA4GH standard to support this is Data Connect (https://github.com/ga4gh-discovery/data-connect). The general approach would be to have a Data Connect service on your platform and to include "tables" with the ID matching your DRS ID for the same object. This means that if you have metadata associated with an object id abcd (ex. additional information about Compound Objects) all you need to do is request the information from the Data Connect client at /tables/abcd/info. There are optional functionalities of Data Connect, such as querying of tables, but we do not explore them or give any recommendations here.

+

Here is an example of using Data Connect with DRS in the fasp-scripts repository (https://github.com/ga4gh/fasp-scripts/blob/master/notebooks/drs/DRS%20File%20Data.ipynb). In this notebook we can see that data connect is used to get DRS IDs from a platform. Those DRS IDs are then used to gather aditional information about the file that might be necessary for analysis. This is just one example of how DRS and Data Connect can interact with each other to gather information about data on a platform.