### iSamples: A distributed system facilitating access to information about physical samples gathered primarily from the natural environment. * Resolvable, unique identifiers are essential * Collection instances ("iSamples in a box", iSB) hold content * iSamples Central aggregates common view * Flexible topology --- ### iSamples Context ```plantuml !include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Container.puml System(isc, "iSC", "iSamples Central") System_Boundary(isamples, "iSamples"){ System(isb, "iSB", "iSamples-In-A-Box") System_Ext(collection, "Collection", "Collection of sample records") Rel(isb, collection, "Get records from collection; Provide identifiers for collection") } BiRel(isb, isc, "Synchronize records") Person(user, "User", "Data User") Rel(user, isc, "Discover") Rel(user, isb, "Discover") Person(admin, "Admin", "Administrator") Rel_U(admin, isc, "Manage") Rel(admin, isb, "Manage") System(models, "Models", "Community maintained data models and definitions, vocabulaies, ontologies, schemas") Rel(models, isb, "Inform") Rel(models, isc, "Inform") ``` --- ### Current Deployment ```plantuml !include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Container.puml System(isc, "iSC", "iSamples Central") System_Boundary(isamples_geome, "iSamples-GEOME"){ System(isb_geome, "iSB", "GEOME") System_Ext(collection, "GEOME", "Collection of sample records") Rel(isb_geome, collection, "Get records from collection") } System_Boundary(isamples_smith, "iSamples-SMITHSONIAN"){ System(isb_smith, "iSB", "Smithsonian") System_Ext(collection_smith, "Smithsonian", "Collection of sample records") Rel(isb_smith, collection_smith, "Get records from collection") } System_Boundary(isamples_oc, "iSamples-OpenContext"){ System(isb_oc, "iSB", "OpenContext") System_Ext(collection_oc, "OpenContext", "Collection of sample records") Rel(isb_oc, collection_oc, "Get records from collection") } System_Boundary(isamples_sesar, "iSamples-SESAR"){ System(isb_sesar, "iSB", "SESAR") System_Ext(collection_sesar, "SESAR", "Collection of sample records") Rel(isb_sesar, collection_sesar, "Get records from collection") } BiRel(isc, isb_geome, "Synchronize Records") BiRel(isc, isb_smith, "Synchronize Records") BiRel(isc, isb_oc, "Synchronize Records") BiRel(isc, isb_sesar, "Synchronize Records") ``` --- ### Hierarchical ```plantuml !include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Container.puml System(isc, "iSC", "iSamples Central") System(isc2, "iSC 2", "iSamples Central 2") System(isb_a, "iSB") System(isb_b, "iSB") System(isb_c, "iSB") System(isb_a2, "iSB") System(isb_b2, "iSB") Rel(isc, isb_a, "get") Rel(isc, isb_b, "get") Rel(isc, isb_c, "get") Rel(isc2, isc, "get") Rel(isc2, isb_a2, "get") Rel(isc2, isb_b2, "get") ``` --- ### Multiple "Centrals" ```plantuml !include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Container.puml System(isc, "iSC", "iSamples Central") System(isc2, "iSC 2", "iSamples Central 2") System(isb_a, "iSB") System(isb_b, "iSB") System(isb_c, "iSB") Rel(isc, isb_a, "get") Rel(isc, isb_b, "get") Rel(isc2, isb_b, "get") Rel(isc2, isb_c, "get") ``` --- ### SESAR iSamples IGSN Allocation * Where is the allocating authority? * SESAR is generally digital source of truth * But: Collection capabilities vary * Support for normal operations, e.g.: * sub-sampling * transfers * analyses --- ### iSamples IGSN Allocating Authority ```plantuml !include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Container.puml System_Boundary(B,"iSB Allocator"){ System(isc2, "iSC", "iSamples Central") System(isb_a, "iSB") Rel(isb_a, isc2, "records") System_Ext(igsn2, "IGSN", "DataCite IGSN service") BiRel(isb_a, igsn2, "Mint Identifiers") } System_Boundary(A,"iSC Allocator"){ System(isc, "iSC", "iSamples Central") System(isb_b, "iSB") Rel(isb_b, isc, "records") Rel(isc, isb_b, "assign IGSN") System_Ext(igsn, "IGSN", "DataCite IGSN service") BiRel(isc, igsn, "Mint Identifiers") } ``` --- ### iSB as Allocating Agent ```plantuml !include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Container.puml System(isc, "iSC", "iSamples Central\nSESAR?") System_Boundary(isamples, "Collection System"){ System(isb, "iSB", "iSamples-In-A-Box\nAllocating Agent\nSource of truth") System_Ext(collection, "Collection", "Collection of sample records") BiRel(isb, collection, "Get records from collection; Provide identifiers for collection") Person(isbadmin,"iSB Admin") } BiRel_L(isb, isc, "Synchronize records") System_Ext(igsn, "IGSN", "DataCite IGSN service") BiRel(isb, igsn, "Mint Identifiers") Rel(isbadmin, igsn, "Has minting authority") Rel(isbadmin, isb, "Manages") ``` --- ### iSC as Allocating Agent ```plantuml !include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Container.puml System(isc, "iSC", "SESAR\nAllocating Agent\nSource of truth\nMay redirect to iSB") Person(iscadmin,"iSC Admin") System_Boundary(isamples, "Collection System"){ System(isb, "iSB", "Collection") System_Ext(collection, "Collection", "Collection of sample records") BiRel(isb, collection, "Get records from collection; Provide identifiers for collection") Person(isbadmin,"iSB Admin") } BiRel_R(isb, isc, "Synchronize records; Provides IGSNs") System_Ext(igsn, "IGSN", "DataCite IGSN service") BiRel(isc, igsn, "Mint Identifiers") Rel(isbadmin, isb, "Manages") Rel(iscadmin, isc, "Manages") Rel(iscadmin, igsn, "Has minting authority") Rel_R(iscadmin, isbadmin, "Recognizes ownership") ``` --- ```plantuml skinparam monochrome true title Allocation, SESAR as Allocating Agent participant Collection as isb participant "SESAR (iSC)" as isc participant DataCite as igsn == Register Collection == isb -> isc: registerNamespace("TT") note over isc Likely a human action to ensure integrity end note isc -> igsn: Request Prefix note over igsn Prefix allocation requires human action end note igsn --> isc: ok(10.1234) note over isc The IGSN prefix "TT" is associated with the DOI prefix "10.1234" end note isc --> isb: notify == Allocate Identifier == isb -> isc: getIdentifier(TT0001) note right isc IGSN value may be generated by SESAR or requested by Collection end note activate isc isc -> igsn: create(10.1234/TT0001) igsn --> isc: ok isc --> isb: ok deactivate isc ``` --- ```plantuml skinparam monochrome true hide footbox title Resolve IGSN, SESAR Allocating Agent actor User as user participant DataCite as igsn participant "SESAR (iSC)" as isc participant "Collection (iSB)" as isb note over user: User has short form IGSN user -> igsn: resolve(TT0001) note over isc SESAR may also resolve short form IGSNs end note igsn --> user: see SESAR 10.1234/TT0001 == Alt: SESAR managed == user -> isc: resolve(10.1234/TT0001) isc --> user: data == Alt: Collection managed == user -> isc: resolve(10.1234/TT0001) note right isc Client may request SESAR view of metadata via profile property in request header end note isc --> user: see Collection TT0001 user -> isb: resolve(TT0001) isb --> user: data ``` --- ### Summary * Allocation feasible at both iSC and iSB levels * SESAR as a domain specialized iSC instance * Support IGSN allocation for many collections * Simplified accounting for collections * Facilitate IGSN prefix management * Support sample transfers * Assumes * 1:1 IGSN namespace to DOI prefix * SESAR is source of truth * SESAR may redirect to collection ---
{"metaMigratedAt":"2023-06-17T00:33:04.368Z","metaMigratedFrom":"YAML","title":"IGSN Identifier Support","breaks":true,"slideOptions":"{\"theme\":\"white\"}","contributors":"[{\"id\":\"9681a99b-8995-4719-8f14-bd8a20422101\",\"add\":10942,\"del\":2760}]"}
    191 views
   Owned this note