Identifier Minting and Administration¶
How does identifier minting and administration work in NMDC?
Minting¶
A minting request has these attributes:
service
: a reference to a minter service, e.g. the central minter servicerequester
: a reference to a requesting agent, e.g. a personschema_class
: a reference to a NMDC Schema class, e.g. nmdc:Biosample.how_many
: how many newschema_class
identifiers therequester
wantsservice
to mint
Assuming the requester
is authenticated and is authorized by the service
to mint identifiers,
one or more draft identifiers are minted. Each minted identifier has these attributes:
name
: a literal string value that adheres to the scheme of nmdc:id, e.g. "nmdc:bsm-11-abc123".typecode
: a reference to the ID's typecode component, e.g. withname
"bsm" andschema_class
nmdc:Biosample.shoulder
: a reference to the ID's shoulder component, e.g. withname
"11" andassigned_to
theservice
that minted the ID.status
: a reference to the ID's status, e.g. "draft".
flowchart LR
%% o1[/"(input/output) object"/]
%% s1["(process) step"]
%% t1(["terminator (process start/end)"])
%% d1{decision}
%% b1[("(data)base")]
%% m1[\manual step/]
%% p1[[predefined step]]
classDef literal stroke-dasharray:1 4;
classDef user stroke-dasharray:8 8;
%% request-handler user-story model-diagram
o_typecodename[/"#quot;bsm#quot;"/]:::literal
o_idname[/"#quot;nmdc:bsm-11-abc123#quot;"/]:::literal
o_shouldername[/"#quot;11#quot;"/]:::literal
o_howmany[/"1"/]:::literal
o_request[/"minting request"/]:::user
o_shoulder[/"11"/]
o_typecode[/"bsm"/]
o_schemaclass[/"nmdc:Biosample"/]
o_service[/"Central Minting Service"/]
o_requester[/Alicia/]
o_id_draft1[/draft 1 of ID/]
o_draft[/draft/]
s_minting[minting]
o_typecode-. name .->o_typecodename
o_typecode-. schema_class .->o_schemaclass
click o_schemaclass href "https://microbiomedata.github.io/nmdc-schema/Biosample"
o_request-. service .->o_service
o_request-. requester .->o_requester
o_request-. schema_class .->o_schemaclass
o_request-. how_many .->o_howmany
o_request-->|starts|s_minting[minting]
o_shoulder-. assigned_to .-> o_service
o_shoulder.->|name|o_shouldername
s_minting-- draft_identifier -->o_id_draft1
o_id_draft1-. name .->o_idname
o_id_draft1-. shoulder .->o_shoulder
o_id_draft1-. typecode .-> o_typecode
o_id_draft1-. status .-> o_draft
All typecodes and shoulders are sourced from the database.
All minted identifiers are persisted to the database.