nmdc-schema 11.12.1__py3-none-any.whl → 11.14.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (20) hide show
  1. nmdc_schema/migrators/{migrator_from_11_11_0_to_11_12_0.py → migrator_from_11_11_0_to_11_13_0.py} +3 -3
  2. nmdc_schema/migrators/migrator_from_11_13_0_to_11_14_0.py +35 -0
  3. nmdc_schema/migrators/partials/migrator_from_11_11_0_to_11_13_0/__init__.py +30 -0
  4. nmdc_schema/migrators/partials/{migrator_from_11_11_0_to_11_12_0/migrator_from_11_11_0_to_11_12_0_part_1.py → migrator_from_11_11_0_to_11_13_0/migrator_from_11_11_0_to_11_13_0_part_1.py} +1 -1
  5. nmdc_schema/migrators/partials/{migrator_from_11_11_0_to_11_12_0/migrator_from_11_11_0_to_11_12_0_part_2.py → migrator_from_11_11_0_to_11_13_0/migrator_from_11_11_0_to_11_13_0_part_2.py} +2 -2
  6. nmdc_schema/migrators/partials/migrator_from_11_11_0_to_11_13_0/migrator_from_11_11_0_to_11_13_0_part_3.py +47 -0
  7. nmdc_schema/migrators/partials/{migrator_from_11_11_0_to_11_12_0 → migrator_from_11_13_0_to_11_14_0}/__init__.py +5 -5
  8. nmdc_schema/migrators/partials/migrator_from_11_13_0_to_11_14_0/migrator_from_11_13_0_to_11_14_0_part_1.py +113 -0
  9. nmdc_schema/migrators/partials/migrator_from_11_13_0_to_11_14_0/migrator_from_11_13_0_to_11_14_0_part_2.py +40 -0
  10. nmdc_schema/nmdc-pydantic.py +10558 -12093
  11. nmdc_schema/nmdc.py +328 -104
  12. nmdc_schema/nmdc.schema.json +187 -129
  13. nmdc_schema/nmdc_materialized_patterns.json +10799 -12067
  14. nmdc_schema/nmdc_materialized_patterns.schema.json +197 -128
  15. nmdc_schema/nmdc_materialized_patterns.yaml +7466 -8294
  16. {nmdc_schema-11.12.1.dist-info → nmdc_schema-11.14.0.dist-info}/METADATA +5 -5
  17. {nmdc_schema-11.12.1.dist-info → nmdc_schema-11.14.0.dist-info}/RECORD +20 -15
  18. {nmdc_schema-11.12.1.dist-info → nmdc_schema-11.14.0.dist-info}/entry_points.txt +0 -8
  19. {nmdc_schema-11.12.1.dist-info → nmdc_schema-11.14.0.dist-info}/WHEEL +0 -0
  20. {nmdc_schema-11.12.1.dist-info → nmdc_schema-11.14.0.dist-info}/licenses/LICENSE +0 -0
nmdc_schema/nmdc.py CHANGED
@@ -1,5 +1,5 @@
1
1
  # Auto generated from nmdc.yaml by pythongen.py version: 0.0.1
2
- # Generation date: 2025-10-09T18:05:09
2
+ # Generation date: 2025-12-08T16:54:05
3
3
  # Schema: NMDC
4
4
  #
5
5
  # id: https://w3id.org/nmdc/nmdc
@@ -60,7 +60,7 @@ from linkml_runtime.linkml_model.types import Boolean, Decimal, Double, Float, I
60
60
  from linkml_runtime.utils.metamodelcore import Bool, Decimal, URIorCURIE
61
61
 
62
62
  metamodel_version = "1.7.0"
63
- version = "11.12.1"
63
+ version = "11.14.0"
64
64
 
65
65
  # Namespaces
66
66
  BFO = CurieNamespace('BFO', 'http://purl.obolibrary.org/obo/BFO_')
@@ -224,10 +224,6 @@ class EnvironmentalMaterialTermId(OntologyClassId):
224
224
  pass
225
225
 
226
226
 
227
- class ChemicalEntityId(OntologyClassId):
228
- pass
229
-
230
-
231
227
  class MaterialEntityId(NamedThingId):
232
228
  pass
233
229
 
@@ -1506,39 +1502,6 @@ class EnvironmentalMaterialTerm(OntologyClass):
1506
1502
  self.type = str(self.class_class_curie)
1507
1503
 
1508
1504
 
1509
- @dataclass(repr=False)
1510
- class ChemicalEntity(OntologyClass):
1511
- """
1512
- An atom or molecule that can be represented with a chemical formula. Include lipids, glycans, natural products,
1513
- drugs. There may be different terms for distinct acid-base forms, protonation states. A chemical entity is a
1514
- physical entity that pertains to chemistry or biochemistry.
1515
- """
1516
- _inherited_slots: ClassVar[list[str]] = []
1517
-
1518
- class_class_uri: ClassVar[URIRef] = NMDC["ChemicalEntity"]
1519
- class_class_curie: ClassVar[str] = "nmdc:ChemicalEntity"
1520
- class_name: ClassVar[str] = "ChemicalEntity"
1521
- class_model_uri: ClassVar[URIRef] = NMDC.ChemicalEntity
1522
-
1523
- id: Union[str, ChemicalEntityId] = None
1524
- type: Union[str, URIorCURIE] = None
1525
- chemical_formula: Optional[str] = None
1526
-
1527
- def __post_init__(self, *_: str, **kwargs: Any):
1528
- if self._is_empty(self.id):
1529
- self.MissingRequiredField("id")
1530
- if not isinstance(self.id, ChemicalEntityId):
1531
- self.id = ChemicalEntityId(self.id)
1532
-
1533
- if self.chemical_formula is not None and not isinstance(self.chemical_formula, str):
1534
- self.chemical_formula = str(self.chemical_formula)
1535
-
1536
- super().__post_init__(**kwargs)
1537
- if self._is_empty(self.type):
1538
- self.MissingRequiredField("type")
1539
- self.type = str(self.class_class_curie)
1540
-
1541
-
1542
1505
  @dataclass(repr=False)
1543
1506
  class OntologyRelation(YAMLRoot):
1544
1507
  """
@@ -1679,6 +1642,7 @@ class Biosample(Sample):
1679
1642
  img_identifiers: Optional[Union[Union[str, ExternalIdentifier], list[Union[str, ExternalIdentifier]]]] = empty_list()
1680
1643
  neon_biosample_identifiers: Optional[Union[Union[str, ExternalIdentifier], list[Union[str, ExternalIdentifier]]]] = empty_list()
1681
1644
  alternative_names: Optional[Union[str, list[str]]] = empty_list()
1645
+ provenance_metadata: Optional[Union[dict, "ProvenanceMetadata"]] = None
1682
1646
  gold_biosample_identifiers: Optional[Union[Union[str, URIorCURIE], list[Union[str, URIorCURIE]]]] = empty_list()
1683
1647
  insdc_biosample_identifiers: Optional[Union[Union[str, ExternalIdentifier], list[Union[str, ExternalIdentifier]]]] = empty_list()
1684
1648
  emsl_biosample_identifiers: Optional[Union[Union[str, ExternalIdentifier], list[Union[str, ExternalIdentifier]]]] = empty_list()
@@ -2163,6 +2127,7 @@ class Biosample(Sample):
2163
2127
  ecosystem_type: Optional[str] = None
2164
2128
  ecosystem_subtype: Optional[str] = None
2165
2129
  specific_ecosystem: Optional[str] = None
2130
+ ecosystem_path_id: Optional[int] = None
2166
2131
  add_date: Optional[str] = None
2167
2132
  community: Optional[str] = None
2168
2133
  habitat: Optional[str] = None
@@ -2198,10 +2163,10 @@ class Biosample(Sample):
2198
2163
  start_date_inc: Optional[str] = None
2199
2164
  start_time_inc: Optional[str] = None
2200
2165
  project_id: Optional[str] = None
2201
- replicate_number: Optional[str] = None
2166
+ replicate_number: Optional[int] = None
2202
2167
  sample_shipped: Optional[str] = None
2203
2168
  sample_type: Optional[Union[str, "SampleTypeEnum"]] = None
2204
- technical_reps: Optional[str] = None
2169
+ technical_reps: Optional[int] = None
2205
2170
  analysis_type: Optional[Union[Union[str, "AnalysisTypeEnum"], list[Union[str, "AnalysisTypeEnum"]]]] = empty_list()
2206
2171
  sample_link: Optional[Union[str, list[str]]] = empty_list()
2207
2172
  bulk_elect_conductivity: Optional[Union[dict, QuantityValue]] = None
@@ -2267,6 +2232,9 @@ class Biosample(Sample):
2267
2232
  self.alternative_names = [self.alternative_names] if self.alternative_names is not None else []
2268
2233
  self.alternative_names = [v if isinstance(v, str) else str(v) for v in self.alternative_names]
2269
2234
 
2235
+ if self.provenance_metadata is not None and not isinstance(self.provenance_metadata, ProvenanceMetadata):
2236
+ self.provenance_metadata = ProvenanceMetadata(**as_dict(self.provenance_metadata))
2237
+
2270
2238
  if not isinstance(self.gold_biosample_identifiers, list):
2271
2239
  self.gold_biosample_identifiers = [self.gold_biosample_identifiers] if self.gold_biosample_identifiers is not None else []
2272
2240
  self.gold_biosample_identifiers = [v if isinstance(v, URIorCURIE) else URIorCURIE(v) for v in self.gold_biosample_identifiers]
@@ -3784,6 +3752,9 @@ class Biosample(Sample):
3784
3752
  if self.specific_ecosystem is not None and not isinstance(self.specific_ecosystem, str):
3785
3753
  self.specific_ecosystem = str(self.specific_ecosystem)
3786
3754
 
3755
+ if self.ecosystem_path_id is not None and not isinstance(self.ecosystem_path_id, int):
3756
+ self.ecosystem_path_id = int(self.ecosystem_path_id)
3757
+
3787
3758
  if self.add_date is not None and not isinstance(self.add_date, str):
3788
3759
  self.add_date = str(self.add_date)
3789
3760
 
@@ -3889,8 +3860,8 @@ class Biosample(Sample):
3889
3860
  if self.project_id is not None and not isinstance(self.project_id, str):
3890
3861
  self.project_id = str(self.project_id)
3891
3862
 
3892
- if self.replicate_number is not None and not isinstance(self.replicate_number, str):
3893
- self.replicate_number = str(self.replicate_number)
3863
+ if self.replicate_number is not None and not isinstance(self.replicate_number, int):
3864
+ self.replicate_number = int(self.replicate_number)
3894
3865
 
3895
3866
  if self.sample_shipped is not None and not isinstance(self.sample_shipped, str):
3896
3867
  self.sample_shipped = str(self.sample_shipped)
@@ -3898,8 +3869,8 @@ class Biosample(Sample):
3898
3869
  if self.sample_type is not None and not isinstance(self.sample_type, SampleTypeEnum):
3899
3870
  self.sample_type = SampleTypeEnum(self.sample_type)
3900
3871
 
3901
- if self.technical_reps is not None and not isinstance(self.technical_reps, str):
3902
- self.technical_reps = str(self.technical_reps)
3872
+ if self.technical_reps is not None and not isinstance(self.technical_reps, int):
3873
+ self.technical_reps = int(self.technical_reps)
3903
3874
 
3904
3875
  if not isinstance(self.analysis_type, list):
3905
3876
  self.analysis_type = [self.analysis_type] if self.analysis_type is not None else []
@@ -5379,6 +5350,7 @@ class DataObject(InformationObject):
5379
5350
  url: Optional[str] = None
5380
5351
  was_generated_by: Optional[Union[str, DataEmitterProcessId]] = None
5381
5352
  in_manifest: Optional[Union[Union[str, ManifestId], list[Union[str, ManifestId]]]] = empty_list()
5353
+ superseded_by: Optional[Union[str, WorkflowExecutionId]] = None
5382
5354
 
5383
5355
  def __post_init__(self, *_: str, **kwargs: Any):
5384
5356
  if self._is_empty(self.id):
@@ -5429,6 +5401,9 @@ class DataObject(InformationObject):
5429
5401
  self.in_manifest = [self.in_manifest] if self.in_manifest is not None else []
5430
5402
  self.in_manifest = [v if isinstance(v, ManifestId) else ManifestId(v) for v in self.in_manifest]
5431
5403
 
5404
+ if self.superseded_by is not None and not isinstance(self.superseded_by, WorkflowExecutionId):
5405
+ self.superseded_by = WorkflowExecutionId(self.superseded_by)
5406
+
5432
5407
  super().__post_init__(**kwargs)
5433
5408
  if self._is_empty(self.type):
5434
5409
  self.MissingRequiredField("type")
@@ -5659,6 +5634,7 @@ class WorkflowExecution(DataEmitterProcess):
5659
5634
  execution_resource: Optional[Union[str, "ExecutionResourceEnum"]] = None
5660
5635
  version: Optional[str] = None
5661
5636
  processing_institution_workflow_metadata: Optional[str] = None
5637
+ superseded_by: Optional[Union[str, WorkflowExecutionId]] = None
5662
5638
  has_output: Optional[Union[Union[str, DataObjectId], list[Union[str, DataObjectId]]]] = empty_list()
5663
5639
 
5664
5640
  def __post_init__(self, *_: str, **kwargs: Any):
@@ -5701,6 +5677,9 @@ class WorkflowExecution(DataEmitterProcess):
5701
5677
  if self.processing_institution_workflow_metadata is not None and not isinstance(self.processing_institution_workflow_metadata, str):
5702
5678
  self.processing_institution_workflow_metadata = str(self.processing_institution_workflow_metadata)
5703
5679
 
5680
+ if self.superseded_by is not None and not isinstance(self.superseded_by, WorkflowExecutionId):
5681
+ self.superseded_by = WorkflowExecutionId(self.superseded_by)
5682
+
5704
5683
  if not isinstance(self.has_output, list):
5705
5684
  self.has_output = [self.has_output] if self.has_output is not None else []
5706
5685
  self.has_output = [v if isinstance(v, DataObjectId) else DataObjectId(v) for v in self.has_output]
@@ -5756,8 +5735,9 @@ class MetagenomeAssembly(WorkflowExecution):
5756
5735
  gc_avg: Optional[float] = None
5757
5736
  num_input_reads: Optional[float] = None
5758
5737
  num_aligned_reads: Optional[float] = None
5759
- insdc_assembly_identifiers: Optional[str] = None
5738
+ insdc_assembly_identifiers: Optional[Union[str, list[str]]] = empty_list()
5760
5739
  was_informed_by: Optional[Union[Union[str, NucleotideSequencingId], list[Union[str, NucleotideSequencingId]]]] = empty_list()
5740
+ superseded_by: Optional[Union[str, MetagenomeAssemblyId]] = None
5761
5741
 
5762
5742
  def __post_init__(self, *_: str, **kwargs: Any):
5763
5743
  if self._is_empty(self.id):
@@ -5846,13 +5826,17 @@ class MetagenomeAssembly(WorkflowExecution):
5846
5826
  if self.num_aligned_reads is not None and not isinstance(self.num_aligned_reads, float):
5847
5827
  self.num_aligned_reads = float(self.num_aligned_reads)
5848
5828
 
5849
- if self.insdc_assembly_identifiers is not None and not isinstance(self.insdc_assembly_identifiers, str):
5850
- self.insdc_assembly_identifiers = str(self.insdc_assembly_identifiers)
5829
+ if not isinstance(self.insdc_assembly_identifiers, list):
5830
+ self.insdc_assembly_identifiers = [self.insdc_assembly_identifiers] if self.insdc_assembly_identifiers is not None else []
5831
+ self.insdc_assembly_identifiers = [v if isinstance(v, str) else str(v) for v in self.insdc_assembly_identifiers]
5851
5832
 
5852
5833
  if not isinstance(self.was_informed_by, list):
5853
5834
  self.was_informed_by = [self.was_informed_by] if self.was_informed_by is not None else []
5854
5835
  self.was_informed_by = [v if isinstance(v, NucleotideSequencingId) else NucleotideSequencingId(v) for v in self.was_informed_by]
5855
5836
 
5837
+ if self.superseded_by is not None and not isinstance(self.superseded_by, MetagenomeAssemblyId):
5838
+ self.superseded_by = MetagenomeAssemblyId(self.superseded_by)
5839
+
5856
5840
  super().__post_init__(**kwargs)
5857
5841
  if self._is_empty(self.type):
5858
5842
  self.MissingRequiredField("type")
@@ -5901,8 +5885,9 @@ class MetatranscriptomeAssembly(WorkflowExecution):
5901
5885
  gc_avg: Optional[float] = None
5902
5886
  num_input_reads: Optional[float] = None
5903
5887
  num_aligned_reads: Optional[float] = None
5904
- insdc_assembly_identifiers: Optional[str] = None
5888
+ insdc_assembly_identifiers: Optional[Union[str, list[str]]] = empty_list()
5905
5889
  was_informed_by: Optional[Union[Union[str, NucleotideSequencingId], list[Union[str, NucleotideSequencingId]]]] = empty_list()
5890
+ superseded_by: Optional[Union[str, MetatranscriptomeAssemblyId]] = None
5906
5891
 
5907
5892
  def __post_init__(self, *_: str, **kwargs: Any):
5908
5893
  if self._is_empty(self.id):
@@ -5991,13 +5976,17 @@ class MetatranscriptomeAssembly(WorkflowExecution):
5991
5976
  if self.num_aligned_reads is not None and not isinstance(self.num_aligned_reads, float):
5992
5977
  self.num_aligned_reads = float(self.num_aligned_reads)
5993
5978
 
5994
- if self.insdc_assembly_identifiers is not None and not isinstance(self.insdc_assembly_identifiers, str):
5995
- self.insdc_assembly_identifiers = str(self.insdc_assembly_identifiers)
5979
+ if not isinstance(self.insdc_assembly_identifiers, list):
5980
+ self.insdc_assembly_identifiers = [self.insdc_assembly_identifiers] if self.insdc_assembly_identifiers is not None else []
5981
+ self.insdc_assembly_identifiers = [v if isinstance(v, str) else str(v) for v in self.insdc_assembly_identifiers]
5996
5982
 
5997
5983
  if not isinstance(self.was_informed_by, list):
5998
5984
  self.was_informed_by = [self.was_informed_by] if self.was_informed_by is not None else []
5999
5985
  self.was_informed_by = [v if isinstance(v, NucleotideSequencingId) else NucleotideSequencingId(v) for v in self.was_informed_by]
6000
5986
 
5987
+ if self.superseded_by is not None and not isinstance(self.superseded_by, MetatranscriptomeAssemblyId):
5988
+ self.superseded_by = MetatranscriptomeAssemblyId(self.superseded_by)
5989
+
6001
5990
  super().__post_init__(**kwargs)
6002
5991
  if self._is_empty(self.type):
6003
5992
  self.MissingRequiredField("type")
@@ -6024,6 +6013,7 @@ class MetatranscriptomeExpressionAnalysis(WorkflowExecution):
6024
6013
  processing_institution: Union[str, "ProcessingInstitutionEnum"] = None
6025
6014
  img_identifiers: Optional[Union[Union[str, ExternalIdentifier], list[Union[str, ExternalIdentifier]]]] = empty_list()
6026
6015
  was_informed_by: Optional[Union[Union[str, NucleotideSequencingId], list[Union[str, NucleotideSequencingId]]]] = empty_list()
6016
+ superseded_by: Optional[Union[str, MetatranscriptomeExpressionAnalysisId]] = None
6027
6017
 
6028
6018
  def __post_init__(self, *_: str, **kwargs: Any):
6029
6019
  if self._is_empty(self.id):
@@ -6039,6 +6029,9 @@ class MetatranscriptomeExpressionAnalysis(WorkflowExecution):
6039
6029
  self.was_informed_by = [self.was_informed_by] if self.was_informed_by is not None else []
6040
6030
  self.was_informed_by = [v if isinstance(v, NucleotideSequencingId) else NucleotideSequencingId(v) for v in self.was_informed_by]
6041
6031
 
6032
+ if self.superseded_by is not None and not isinstance(self.superseded_by, MetatranscriptomeExpressionAnalysisId):
6033
+ self.superseded_by = MetatranscriptomeExpressionAnalysisId(self.superseded_by)
6034
+
6042
6035
  super().__post_init__(**kwargs)
6043
6036
  if self._is_empty(self.type):
6044
6037
  self.MissingRequiredField("type")
@@ -6071,6 +6064,7 @@ class MagsAnalysis(WorkflowExecution):
6071
6064
  unbinned_contig_num: Optional[int] = None
6072
6065
  img_identifiers: Optional[Union[Union[str, ExternalIdentifier], list[Union[str, ExternalIdentifier]]]] = empty_list()
6073
6066
  was_informed_by: Optional[Union[Union[str, NucleotideSequencingId], list[Union[str, NucleotideSequencingId]]]] = empty_list()
6067
+ superseded_by: Optional[Union[str, MagsAnalysisId]] = None
6074
6068
 
6075
6069
  def __post_init__(self, *_: str, **kwargs: Any):
6076
6070
  if self._is_empty(self.id):
@@ -6105,6 +6099,9 @@ class MagsAnalysis(WorkflowExecution):
6105
6099
  self.was_informed_by = [self.was_informed_by] if self.was_informed_by is not None else []
6106
6100
  self.was_informed_by = [v if isinstance(v, NucleotideSequencingId) else NucleotideSequencingId(v) for v in self.was_informed_by]
6107
6101
 
6102
+ if self.superseded_by is not None and not isinstance(self.superseded_by, MagsAnalysisId):
6103
+ self.superseded_by = MagsAnalysisId(self.superseded_by)
6104
+
6108
6105
  super().__post_init__(**kwargs)
6109
6106
  if self._is_empty(self.type):
6110
6107
  self.MissingRequiredField("type")
@@ -6138,6 +6135,7 @@ class ReadQcAnalysis(WorkflowExecution):
6138
6135
  output_read_bases: Optional[float] = None
6139
6136
  output_read_count: Optional[float] = None
6140
6137
  was_informed_by: Optional[Union[Union[str, NucleotideSequencingId], list[Union[str, NucleotideSequencingId]]]] = empty_list()
6138
+ superseded_by: Optional[Union[str, ReadQcAnalysisId]] = None
6141
6139
 
6142
6140
  def __post_init__(self, *_: str, **kwargs: Any):
6143
6141
  if self._is_empty(self.id):
@@ -6167,6 +6165,9 @@ class ReadQcAnalysis(WorkflowExecution):
6167
6165
  self.was_informed_by = [self.was_informed_by] if self.was_informed_by is not None else []
6168
6166
  self.was_informed_by = [v if isinstance(v, NucleotideSequencingId) else NucleotideSequencingId(v) for v in self.was_informed_by]
6169
6167
 
6168
+ if self.superseded_by is not None and not isinstance(self.superseded_by, ReadQcAnalysisId):
6169
+ self.superseded_by = ReadQcAnalysisId(self.superseded_by)
6170
+
6170
6171
  super().__post_init__(**kwargs)
6171
6172
  if self._is_empty(self.type):
6172
6173
  self.MissingRequiredField("type")
@@ -6192,6 +6193,7 @@ class ReadBasedTaxonomyAnalysis(WorkflowExecution):
6192
6193
  has_input: Union[Union[str, DataObjectId], list[Union[str, DataObjectId]]] = None
6193
6194
  processing_institution: Union[str, "ProcessingInstitutionEnum"] = None
6194
6195
  was_informed_by: Optional[Union[Union[str, NucleotideSequencingId], list[Union[str, NucleotideSequencingId]]]] = empty_list()
6196
+ superseded_by: Optional[Union[str, ReadBasedTaxonomyAnalysisId]] = None
6195
6197
 
6196
6198
  def __post_init__(self, *_: str, **kwargs: Any):
6197
6199
  if self._is_empty(self.id):
@@ -6203,6 +6205,9 @@ class ReadBasedTaxonomyAnalysis(WorkflowExecution):
6203
6205
  self.was_informed_by = [self.was_informed_by] if self.was_informed_by is not None else []
6204
6206
  self.was_informed_by = [v if isinstance(v, NucleotideSequencingId) else NucleotideSequencingId(v) for v in self.was_informed_by]
6205
6207
 
6208
+ if self.superseded_by is not None and not isinstance(self.superseded_by, ReadBasedTaxonomyAnalysisId):
6209
+ self.superseded_by = ReadBasedTaxonomyAnalysisId(self.superseded_by)
6210
+
6206
6211
  super().__post_init__(**kwargs)
6207
6212
  if self._is_empty(self.type):
6208
6213
  self.MissingRequiredField("type")
@@ -6228,6 +6233,7 @@ class MetabolomicsAnalysis(WorkflowExecution):
6228
6233
  has_metabolite_identifications: Optional[Union[Union[dict, MetaboliteIdentification], list[Union[dict, MetaboliteIdentification]]]] = empty_list()
6229
6234
  uses_calibration: Optional[Union[str, CalibrationInformationId]] = None
6230
6235
  was_informed_by: Optional[Union[Union[str, MassSpectrometryId], list[Union[str, MassSpectrometryId]]]] = empty_list()
6236
+ superseded_by: Optional[Union[str, MetabolomicsAnalysisId]] = None
6231
6237
 
6232
6238
  def __post_init__(self, *_: str, **kwargs: Any):
6233
6239
  if self._is_empty(self.id):
@@ -6251,6 +6257,9 @@ class MetabolomicsAnalysis(WorkflowExecution):
6251
6257
  self.was_informed_by = [self.was_informed_by] if self.was_informed_by is not None else []
6252
6258
  self.was_informed_by = [v if isinstance(v, MassSpectrometryId) else MassSpectrometryId(v) for v in self.was_informed_by]
6253
6259
 
6260
+ if self.superseded_by is not None and not isinstance(self.superseded_by, MetabolomicsAnalysisId):
6261
+ self.superseded_by = MetabolomicsAnalysisId(self.superseded_by)
6262
+
6254
6263
  super().__post_init__(**kwargs)
6255
6264
  if self._is_empty(self.type):
6256
6265
  self.MissingRequiredField("type")
@@ -6274,6 +6283,7 @@ class NomAnalysis(WorkflowExecution):
6274
6283
  processing_institution: Union[str, "ProcessingInstitutionEnum"] = None
6275
6284
  uses_calibration: Optional[Union[str, CalibrationInformationId]] = None
6276
6285
  was_informed_by: Optional[Union[Union[str, MassSpectrometryId], list[Union[str, MassSpectrometryId]]]] = empty_list()
6286
+ superseded_by: Optional[Union[str, NomAnalysisId]] = None
6277
6287
 
6278
6288
  def __post_init__(self, *_: str, **kwargs: Any):
6279
6289
  if self._is_empty(self.id):
@@ -6288,6 +6298,9 @@ class NomAnalysis(WorkflowExecution):
6288
6298
  self.was_informed_by = [self.was_informed_by] if self.was_informed_by is not None else []
6289
6299
  self.was_informed_by = [v if isinstance(v, MassSpectrometryId) else MassSpectrometryId(v) for v in self.was_informed_by]
6290
6300
 
6301
+ if self.superseded_by is not None and not isinstance(self.superseded_by, NomAnalysisId):
6302
+ self.superseded_by = NomAnalysisId(self.superseded_by)
6303
+
6291
6304
  super().__post_init__(**kwargs)
6292
6305
  if self._is_empty(self.type):
6293
6306
  self.MissingRequiredField("type")
@@ -6341,6 +6354,7 @@ class MetatranscriptomeAnnotation(AnnotatingWorkflow):
6341
6354
  has_input: Optional[Union[Union[str, NamedThingId], list[Union[str, NamedThingId]]]] = empty_list()
6342
6355
  has_output: Optional[Union[Union[str, NamedThingId], list[Union[str, NamedThingId]]]] = empty_list()
6343
6356
  was_informed_by: Optional[Union[Union[str, NucleotideSequencingId], list[Union[str, NucleotideSequencingId]]]] = empty_list()
6357
+ superseded_by: Optional[Union[str, MetatranscriptomeAnnotationId]] = None
6344
6358
 
6345
6359
  def __post_init__(self, *_: str, **kwargs: Any):
6346
6360
  if self._is_empty(self.id):
@@ -6368,6 +6382,9 @@ class MetatranscriptomeAnnotation(AnnotatingWorkflow):
6368
6382
  self.was_informed_by = [self.was_informed_by] if self.was_informed_by is not None else []
6369
6383
  self.was_informed_by = [v if isinstance(v, NucleotideSequencingId) else NucleotideSequencingId(v) for v in self.was_informed_by]
6370
6384
 
6385
+ if self.superseded_by is not None and not isinstance(self.superseded_by, MetatranscriptomeAnnotationId):
6386
+ self.superseded_by = MetatranscriptomeAnnotationId(self.superseded_by)
6387
+
6371
6388
  super().__post_init__(**kwargs)
6372
6389
  if self._is_empty(self.type):
6373
6390
  self.MissingRequiredField("type")
@@ -6391,6 +6408,7 @@ class MetaproteomicsAnalysis(AnnotatingWorkflow):
6391
6408
  processing_institution: Union[str, "ProcessingInstitutionEnum"] = None
6392
6409
  metaproteomics_analysis_category: Union[str, "MetaproteomicsAnalysisCategoryEnum"] = None
6393
6410
  was_informed_by: Optional[Union[Union[str, MassSpectrometryId], list[Union[str, MassSpectrometryId]]]] = empty_list()
6411
+ superseded_by: Optional[Union[str, MetaproteomicsAnalysisId]] = None
6394
6412
 
6395
6413
  def __post_init__(self, *_: str, **kwargs: Any):
6396
6414
  if self._is_empty(self.id):
@@ -6407,6 +6425,9 @@ class MetaproteomicsAnalysis(AnnotatingWorkflow):
6407
6425
  self.was_informed_by = [self.was_informed_by] if self.was_informed_by is not None else []
6408
6426
  self.was_informed_by = [v if isinstance(v, MassSpectrometryId) else MassSpectrometryId(v) for v in self.was_informed_by]
6409
6427
 
6428
+ if self.superseded_by is not None and not isinstance(self.superseded_by, MetaproteomicsAnalysisId):
6429
+ self.superseded_by = MetaproteomicsAnalysisId(self.superseded_by)
6430
+
6410
6431
  super().__post_init__(**kwargs)
6411
6432
  if self._is_empty(self.type):
6412
6433
  self.MissingRequiredField("type")
@@ -6459,10 +6480,46 @@ class MetagenomeAnnotation(AnnotatingWorkflow):
6459
6480
  self.type = str(self.class_class_curie)
6460
6481
 
6461
6482
 
6483
+ @dataclass(repr=False)
6484
+ class ProvenanceMetadata(YAMLRoot):
6485
+ """
6486
+ Metadata pertaining to how a record was created.
6487
+ """
6488
+ _inherited_slots: ClassVar[list[str]] = []
6489
+
6490
+ class_class_uri: ClassVar[URIRef] = NMDC["ProvenanceMetadata"]
6491
+ class_class_curie: ClassVar[str] = "nmdc:ProvenanceMetadata"
6492
+ class_name: ClassVar[str] = "ProvenanceMetadata"
6493
+ class_model_uri: ClassVar[URIRef] = NMDC.ProvenanceMetadata
6494
+
6495
+ type: Union[str, URIorCURIE] = None
6496
+ git_url: Optional[str] = None
6497
+ version: Optional[str] = None
6498
+ source_system_of_record: Optional[Union[str, "SourceSystemEnum"]] = None
6499
+
6500
+ def __post_init__(self, *_: str, **kwargs: Any):
6501
+ if self._is_empty(self.type):
6502
+ self.MissingRequiredField("type")
6503
+ self.type = str(self.class_class_curie)
6504
+
6505
+ if self.git_url is not None and not isinstance(self.git_url, str):
6506
+ self.git_url = str(self.git_url)
6507
+
6508
+ if self.version is not None and not isinstance(self.version, str):
6509
+ self.version = str(self.version)
6510
+
6511
+ if self.source_system_of_record is not None and not isinstance(self.source_system_of_record, SourceSystemEnum):
6512
+ self.source_system_of_record = SourceSystemEnum(self.source_system_of_record)
6513
+
6514
+ super().__post_init__(**kwargs)
6515
+
6516
+
6462
6517
  # Enumerations
6463
6518
  class CalibrationTargetEnum(EnumDefinitionImpl):
6464
6519
 
6465
- mass_charge_ratio = PermissibleValue(text="mass_charge_ratio")
6520
+ mass_charge_ratio = PermissibleValue(
6521
+ text="mass_charge_ratio",
6522
+ title="m/z")
6466
6523
  retention_time = PermissibleValue(text="retention_time")
6467
6524
  retention_index = PermissibleValue(text="retention_index")
6468
6525
 
@@ -6503,7 +6560,7 @@ class MassSpectrometryAcquisitionStrategyEnum(EnumDefinitionImpl):
6503
6560
 
6504
6561
  data_independent_acquisition = PermissibleValue(
6505
6562
  text="data_independent_acquisition",
6506
- description="""['Data independent mass spectrometer acquisition method wherein the full mass range is fragmented. Examples of such an approach include MS^E, AIF, and bbCID.']""")
6563
+ description="""Data independent mass spectrometer acquisition method wherein the full mass range is fragmented. Examples of such an approach include MS^E, AIF, and bbCID.""")
6507
6564
  data_dependent_acquisition = PermissibleValue(
6508
6565
  text="data_dependent_acquisition",
6509
6566
  description="""Mass spectrometer data acquisition method wherein MSn spectra are triggered based on the m/z of precursor ions detected in the same run.""")
@@ -6585,15 +6642,19 @@ class EluentIntroductionCategoryEnum(EnumDefinitionImpl):
6585
6642
 
6586
6643
  liquid_chromatography = PermissibleValue(
6587
6644
  text="liquid_chromatography",
6645
+ title="liquid chromatography",
6588
6646
  description="""The processed sample is introduced into the mass spectrometer through a liquid chromatography process.""")
6589
6647
  gas_chromatography = PermissibleValue(
6590
6648
  text="gas_chromatography",
6649
+ title="gas chromatography",
6591
6650
  description="""The processed sample is introduced into the mass spectrometer through a gas chromatography process.""")
6592
6651
  direct_infusion_syringe = PermissibleValue(
6593
6652
  text="direct_infusion_syringe",
6653
+ title="direct infusion syringe",
6594
6654
  description="""The processed sample is introduced into the mass spectrometer through a direct infusion process using a syringe.""")
6595
6655
  direct_infusion_autosampler = PermissibleValue(
6596
6656
  text="direct_infusion_autosampler",
6657
+ title="direct infusion autosampler",
6597
6658
  description="""The processed sample is introduced into the mass spectrometer through a direct infusion process using an autosampler.""")
6598
6659
 
6599
6660
  _defn = EnumDefinition(
@@ -6767,18 +6828,23 @@ class SamplePortionEnum(EnumDefinitionImpl):
6767
6828
  pellet = PermissibleValue(text="pellet")
6768
6829
  organic_layer = PermissibleValue(
6769
6830
  text="organic_layer",
6831
+ title="Organic layer",
6770
6832
  description="The portion of a mixture containing dissolved organic material")
6771
6833
  aqueous_layer = PermissibleValue(
6772
6834
  text="aqueous_layer",
6835
+ title="Aqueous layer",
6773
6836
  description="The portion of a mixture containing molecules dissolved in water")
6774
6837
  interlayer = PermissibleValue(
6775
6838
  text="interlayer",
6839
+ title="Interlayer",
6776
6840
  description="The layer of material between liquid layers of a separated mixture")
6777
6841
  chloroform_layer = PermissibleValue(
6778
6842
  text="chloroform_layer",
6843
+ title="Chloroform layer",
6779
6844
  description="The portion of a mixture containing molecules dissolved in chloroform")
6780
6845
  methanol_layer = PermissibleValue(
6781
6846
  text="methanol_layer",
6847
+ title="Methanol layer",
6782
6848
  description="The portion of a mixture containing molecules dissolved in methanol")
6783
6849
 
6784
6850
  _defn = EnumDefinition(
@@ -6859,20 +6925,25 @@ class BiosampleCategoryEnum(EnumDefinitionImpl):
6859
6925
  """
6860
6926
  LTER = PermissibleValue(
6861
6927
  text="LTER",
6928
+ title="National Science Foundation's Long Term Ecological Research Network",
6862
6929
  meaning=None)
6863
6930
  SIP = PermissibleValue(text="SIP")
6864
6931
  SFA = PermissibleValue(
6865
6932
  text="SFA",
6933
+ title="Department of Energy Office of Science Biological and Environmental Research Program Laboratory Science Focus Areas",
6866
6934
  description="""Science Focus Area projects funded through the Department of Energy Office of Science Biological and Environmental Research Program""",
6867
6935
  meaning=None)
6868
6936
  FICUS = PermissibleValue(
6869
6937
  text="FICUS",
6938
+ title="Facilities Integrating Collaborations for User Science",
6870
6939
  meaning=None)
6871
6940
  NEON = PermissibleValue(
6872
6941
  text="NEON",
6942
+ title="National Science Foundation's National Ecological Observatory Network",
6873
6943
  meaning=None)
6874
6944
  BRC = PermissibleValue(
6875
6945
  text="BRC",
6946
+ title="Bioenergy Research Centers",
6876
6947
  description="""Bioenergy Research Centers funded by the Biological Systems Science Division of the U.S. Department of Energy's Biological and Environmental Research Program.""",
6877
6948
  meaning=None)
6878
6949
 
@@ -7024,6 +7095,7 @@ class UnitEnum(EnumDefinitionImpl):
7024
7095
 
7025
7096
  Cel = PermissibleValue(
7026
7097
  text="Cel",
7098
+ title="degrees Celsius",
7027
7099
  description="""The Unified Code for Units of Measure (UCUM) representation of degrees Celsius; a SI unit of temperature equal to one unit Kelvin.""")
7028
7100
  cm = PermissibleValue(
7029
7101
  text="cm",
@@ -7057,6 +7129,7 @@ class UnitEnum(EnumDefinitionImpl):
7057
7129
  description="The Unified Code for Units of Measure (UCUM) representation of millimeter.")
7058
7130
  a = PermissibleValue(
7059
7131
  text="a",
7132
+ title="years",
7060
7133
  description="The Unified Code for Units of Measure (UCUM) representation of year.")
7061
7134
  uL = PermissibleValue(
7062
7135
  text="uL",
@@ -7084,6 +7157,7 @@ class UnitEnum(EnumDefinitionImpl):
7084
7157
  description="The Unified Code for Units of Measure (UCUM) representation of kilogram.")
7085
7158
  lx = PermissibleValue(
7086
7159
  text="lx",
7160
+ title="lux",
7087
7161
  description="The Unified Code for Units of Measure (UCUM) representation of lux.")
7088
7162
  deg = PermissibleValue(
7089
7163
  text="deg",
@@ -7195,6 +7269,7 @@ class UnitEnum(EnumDefinitionImpl):
7195
7269
  description="The Unified Code for Units of Measure (UCUM) representation of gray (absorbed dose).")
7196
7270
  RAD = PermissibleValue(
7197
7271
  text="RAD",
7272
+ title="rad (radiation absorbed dose)",
7198
7273
  description="The Unified Code for Units of Measure (UCUM) representation of rad (radiation absorbed dose).")
7199
7274
  m3 = PermissibleValue(
7200
7275
  text="m3",
@@ -7219,6 +7294,7 @@ class UnitEnum(EnumDefinitionImpl):
7219
7294
  setattr(cls, "J/K",
7220
7295
  PermissibleValue(
7221
7296
  text="J/K",
7297
+ title="J/degree Celsius",
7222
7298
  description="The Unified Code for Units of Measure (UCUM) representation of joule per kelvin."))
7223
7299
  setattr(cls, "m/s",
7224
7300
  PermissibleValue(
@@ -7287,6 +7363,7 @@ class UnitEnum(EnumDefinitionImpl):
7287
7363
  setattr(cls, "umol/m2/s",
7288
7364
  PermissibleValue(
7289
7365
  text="umol/m2/s",
7366
+ title="micromoles per square meter per second",
7290
7367
  description="""The Unified Code for Units of Measure (UCUM) representation of micromoles per square meter per second."""))
7291
7368
  setattr(cls, "mg/m3",
7292
7369
  PermissibleValue(
@@ -7307,6 +7384,7 @@ class UnitEnum(EnumDefinitionImpl):
7307
7384
  setattr(cls, "1",
7308
7385
  PermissibleValue(
7309
7386
  text="1",
7387
+ title="ratio/unitless",
7310
7388
  description="The Unified Code for Units of Measure (UCUM) representation of dimensionless quantity."))
7311
7389
  setattr(cls, "uL/kg",
7312
7390
  PermissibleValue(
@@ -7380,6 +7458,11 @@ class UnitEnum(EnumDefinitionImpl):
7380
7458
  PermissibleValue(
7381
7459
  text="1/d",
7382
7460
  description="The Unified Code for Units of Measure (UCUM) representation of per day (frequency)."))
7461
+ setattr(cls, "1/[sft_i]",
7462
+ PermissibleValue(
7463
+ text="1/[sft_i]",
7464
+ title="per square foot",
7465
+ description="The Unified Code for Units of Measure (UCUM) representation of per square foot."))
7383
7466
  setattr(cls, "kW/m2",
7384
7467
  PermissibleValue(
7385
7468
  text="kW/m2",
@@ -7407,10 +7490,12 @@ class UnitEnum(EnumDefinitionImpl):
7407
7490
  setattr(cls, "[NTU]",
7408
7491
  PermissibleValue(
7409
7492
  text="[NTU]",
7493
+ title="Nephelometric Turbidity Units",
7410
7494
  description="""The Unified Code for Units of Measure (UCUM) representation of Nephelometric Turbidity Units."""))
7411
7495
  setattr(cls, "[FNU]",
7412
7496
  PermissibleValue(
7413
7497
  text="[FNU]",
7498
+ title="Formazin Nephelometric Units",
7414
7499
  description="""The Unified Code for Units of Measure (UCUM) representation of Formazin Nephelometric Units."""))
7415
7500
  setattr(cls, "m3/min",
7416
7501
  PermissibleValue(
@@ -7423,6 +7508,7 @@ class UnitEnum(EnumDefinitionImpl):
7423
7508
  setattr(cls, "[lb_av]",
7424
7509
  PermissibleValue(
7425
7510
  text="[lb_av]",
7511
+ title="pounds (avoirdupois)",
7426
7512
  description="The Unified Code for Units of Measure (UCUM) representation of pound (avoirdupois)."))
7427
7513
  setattr(cls, "kg/kg",
7428
7514
  PermissibleValue(
@@ -7455,6 +7541,7 @@ class UnitEnum(EnumDefinitionImpl):
7455
7541
  setattr(cls, "[g]",
7456
7542
  PermissibleValue(
7457
7543
  text="[g]",
7544
+ title="standard gravity",
7458
7545
  description="The Unified Code for Units of Measure (UCUM) representation of standard gravity."))
7459
7546
  setattr(cls, "m/s2",
7460
7547
  PermissibleValue(
@@ -7471,14 +7558,17 @@ class UnitEnum(EnumDefinitionImpl):
7471
7558
  setattr(cls, "[sft_i]",
7472
7559
  PermissibleValue(
7473
7560
  text="[sft_i]",
7561
+ title="square feet",
7474
7562
  description="The Unified Code for Units of Measure (UCUM) representation of square feet."))
7475
7563
  setattr(cls, "[cft_i]",
7476
7564
  PermissibleValue(
7477
7565
  text="[cft_i]",
7566
+ title="cubic feet",
7478
7567
  description="The Unified Code for Units of Measure (UCUM) representation of cubic feet."))
7479
7568
  setattr(cls, "mm/a",
7480
7569
  PermissibleValue(
7481
7570
  text="mm/a",
7571
+ title="millimeters per year",
7482
7572
  description="The Unified Code for Units of Measure (UCUM) representation of millimeters per year."))
7483
7573
  setattr(cls, "erg/cm2/s",
7484
7574
  PermissibleValue(
@@ -7499,6 +7589,7 @@ class UnitEnum(EnumDefinitionImpl):
7499
7589
  setattr(cls, "[kn_i]",
7500
7590
  PermissibleValue(
7501
7591
  text="[kn_i]",
7592
+ title="knots",
7502
7593
  description="""The Unified Code for Units of Measure (UCUM) representation of knot (nautical miles per hour)."""))
7503
7594
  setattr(cls, "m3/s",
7504
7595
  PermissibleValue(
@@ -7507,6 +7598,7 @@ class UnitEnum(EnumDefinitionImpl):
7507
7598
  setattr(cls, "[in_i]",
7508
7599
  PermissibleValue(
7509
7600
  text="[in_i]",
7601
+ title="inches",
7510
7602
  description="The Unified Code for Units of Measure (UCUM) representation of inch."))
7511
7603
 
7512
7604
  class ExecutionResourceEnum(EnumDefinitionImpl):
@@ -7714,6 +7806,18 @@ class FileTypeEnum(EnumDefinitionImpl):
7714
7806
  PermissibleValue(
7715
7807
  text="Centrifuge Taxonomic Classification",
7716
7808
  description="Centrifuge output read classification file"))
7809
+ setattr(cls, "SingleM Taxonomic Classification",
7810
+ PermissibleValue(
7811
+ text="SingleM Taxonomic Classification",
7812
+ description="SingleM taxonomic classification file"))
7813
+ setattr(cls, "SingleM Krona Plot",
7814
+ PermissibleValue(
7815
+ text="SingleM Krona Plot",
7816
+ description="SingleM krona plot HTML file"))
7817
+ setattr(cls, "SingleM Clustered Report",
7818
+ PermissibleValue(
7819
+ text="SingleM Clustered Report",
7820
+ description="SingleM taxonomic classification results, clustered by OTU"))
7717
7821
  setattr(cls, "Structural Annotation GFF",
7718
7822
  PermissibleValue(
7719
7823
  text="Structural Annotation GFF",
@@ -7935,27 +8039,40 @@ class DoiProviderEnum(EnumDefinitionImpl):
7935
8039
 
7936
8040
  emsl = PermissibleValue(
7937
8041
  text="emsl",
8042
+ title="EMSL",
7938
8043
  meaning=ROR["04rc0xn13"])
7939
8044
  jgi = PermissibleValue(
7940
8045
  text="jgi",
8046
+ title="JGI",
7941
8047
  meaning=ROR["04xm1d337"])
7942
8048
  kbase = PermissibleValue(
7943
8049
  text="kbase",
8050
+ title="KBase",
7944
8051
  meaning=ROR["01znn6x10"])
7945
8052
  osti = PermissibleValue(
7946
8053
  text="osti",
8054
+ title="OSTI",
7947
8055
  meaning=ROR["031478740"])
7948
8056
  ess_dive = PermissibleValue(
7949
8057
  text="ess_dive",
8058
+ title="ESS-DIVE",
7950
8059
  meaning=ROR["01t14bp54"])
7951
- massive = PermissibleValue(text="massive")
7952
- gsc = PermissibleValue(text="gsc")
7953
- zenodo = PermissibleValue(text="zenodo")
8060
+ massive = PermissibleValue(
8061
+ text="massive",
8062
+ title="MassIVE")
8063
+ gsc = PermissibleValue(
8064
+ text="gsc",
8065
+ title="GSC")
8066
+ zenodo = PermissibleValue(
8067
+ text="zenodo",
8068
+ title="Zenodo")
7954
8069
  edi = PermissibleValue(
7955
8070
  text="edi",
8071
+ title="EDI",
7956
8072
  meaning=ROR["0330j0z60"])
7957
8073
  figshare = PermissibleValue(
7958
8074
  text="figshare",
8075
+ title="Figshare",
7959
8076
  meaning=ROR["041mxqs23"])
7960
8077
 
7961
8078
  _defn = EnumDefinition(
@@ -7996,10 +8113,15 @@ class StatusEnum(EnumDefinitionImpl):
7996
8113
 
7997
8114
  class NucleotideSequencingEnum(EnumDefinitionImpl):
7998
8115
 
7999
- metagenome = PermissibleValue(text="metagenome")
8000
- metatranscriptome = PermissibleValue(text="metatranscriptome")
8116
+ metagenome = PermissibleValue(
8117
+ text="metagenome",
8118
+ title="Metagenome")
8119
+ metatranscriptome = PermissibleValue(
8120
+ text="metatranscriptome",
8121
+ title="Metatranscriptome")
8001
8122
  amplicon_sequencing_assay = PermissibleValue(
8002
8123
  text="amplicon_sequencing_assay",
8124
+ title="Amplicon",
8003
8125
  meaning=OBI["0002767"])
8004
8126
 
8005
8127
  _defn = EnumDefinition(
@@ -8008,10 +8130,18 @@ class NucleotideSequencingEnum(EnumDefinitionImpl):
8008
8130
 
8009
8131
  class MassSpectrometryEnum(EnumDefinitionImpl):
8010
8132
 
8011
- metaproteome = PermissibleValue(text="metaproteome")
8012
- metabolome = PermissibleValue(text="metabolome")
8013
- lipidome = PermissibleValue(text="lipidome")
8014
- nom = PermissibleValue(text="nom")
8133
+ metaproteome = PermissibleValue(
8134
+ text="metaproteome",
8135
+ title="Metaproteome")
8136
+ metabolome = PermissibleValue(
8137
+ text="metabolome",
8138
+ title="Metabolome")
8139
+ lipidome = PermissibleValue(
8140
+ text="lipidome",
8141
+ title="Lipidome")
8142
+ nom = PermissibleValue(
8143
+ text="nom",
8144
+ title="Natural Organic Matter")
8015
8145
 
8016
8146
  _defn = EnumDefinition(
8017
8147
  name="MassSpectrometryEnum",
@@ -8038,27 +8168,35 @@ class ProcessingInstitutionEnum(EnumDefinitionImpl):
8038
8168
 
8039
8169
  NMDC = PermissibleValue(
8040
8170
  text="NMDC",
8171
+ title="National Microbiome Data Collaborative",
8041
8172
  meaning=ROR["05cwx3318"])
8042
8173
  UCSD = PermissibleValue(
8043
8174
  text="UCSD",
8175
+ title="University of California, San Diego",
8044
8176
  meaning=ROR["0168r3w48"])
8045
8177
  JGI = PermissibleValue(
8046
8178
  text="JGI",
8179
+ title="Joint Genome Institute",
8047
8180
  meaning=ROR["04xm1d337"])
8048
8181
  EMSL = PermissibleValue(
8049
8182
  text="EMSL",
8183
+ title="Environmental Molecular Sciences Laboratory",
8050
8184
  meaning=ROR["04rc0xn13"])
8051
8185
  Battelle = PermissibleValue(
8052
8186
  text="Battelle",
8187
+ title="Battelle Memorial Institute",
8053
8188
  meaning=ROR["01h5tnr73"])
8054
8189
  ANL = PermissibleValue(
8055
8190
  text="ANL",
8191
+ title="Argonne National Laboratory",
8056
8192
  meaning=ROR["05gvnxz63"])
8057
8193
  UCD_Genome_Center = PermissibleValue(
8058
8194
  text="UCD_Genome_Center",
8195
+ title="University of California, Davis Genome Center",
8059
8196
  meaning=None)
8060
8197
  Azenta = PermissibleValue(
8061
8198
  text="Azenta",
8199
+ title="Azenta Life Sciences",
8062
8200
  meaning=None)
8063
8201
 
8064
8202
  _defn = EnumDefinition(
@@ -8081,6 +8219,28 @@ class DataCategoryEnum(EnumDefinitionImpl):
8081
8219
  name="DataCategoryEnum",
8082
8220
  )
8083
8221
 
8222
+ class SourceSystemEnum(EnumDefinitionImpl):
8223
+
8224
+ NMDC_Submission_Portal = PermissibleValue(
8225
+ text="NMDC_Submission_Portal",
8226
+ description="The National Microbiome Data Collaborative's Submission Portal")
8227
+ GOLD = PermissibleValue(
8228
+ text="GOLD",
8229
+ description="JGI's GOLD system")
8230
+ NEON_Data_Portal = PermissibleValue(
8231
+ text="NEON_Data_Portal",
8232
+ description="National Science Foundation National Ecologial Observatory Network's Data Portal")
8233
+ NCBI = PermissibleValue(
8234
+ text="NCBI",
8235
+ description="National Center for Biotechnology Information database")
8236
+ custom = PermissibleValue(
8237
+ text="custom",
8238
+ description="""Metadata was generated by custom methods such as an offline spreadsheet provided by a user or staff member.""")
8239
+
8240
+ _defn = EnumDefinition(
8241
+ name="SourceSystemEnum",
8242
+ )
8243
+
8084
8244
  class CreditEnum(EnumDefinitionImpl):
8085
8245
 
8086
8246
  Conceptualization = PermissibleValue(
@@ -8190,6 +8350,7 @@ class InstrumentModelEnum(EnumDefinitionImpl):
8190
8350
  orbitrap_eclipse_tribid = PermissibleValue(text="orbitrap_eclipse_tribid")
8191
8351
  orbitrap_q_exactive = PermissibleValue(text="orbitrap_q_exactive")
8192
8352
  orbitrap_iqx_tribrid = PermissibleValue(text="orbitrap_iqx_tribrid")
8353
+ orbitrap_exploris_120 = PermissibleValue(text="orbitrap_exploris_120")
8193
8354
  solarix_7T = PermissibleValue(text="solarix_7T")
8194
8355
  solarix_12T = PermissibleValue(text="solarix_12T")
8195
8356
  solarix_15T = PermissibleValue(text="solarix_15T")
@@ -10417,9 +10578,11 @@ class AnalysisTypeEnum(EnumDefinitionImpl):
10417
10578
  lipidomics = PermissibleValue(text="lipidomics")
10418
10579
  metagenomics = PermissibleValue(
10419
10580
  text="metagenomics",
10581
+ title="Metagenomics",
10420
10582
  description="Standard short-read metagenomic sequencing")
10421
10583
  metagenomics_long_read = PermissibleValue(
10422
10584
  text="metagenomics_long_read",
10585
+ title="Metagenomics (long read)",
10423
10586
  description="Long-read metagenomic sequencing")
10424
10587
  metaproteomics = PermissibleValue(text="metaproteomics")
10425
10588
  metatranscriptomics = PermissibleValue(text="metatranscriptomics")
@@ -10437,36 +10600,38 @@ class AnalysisTypeEnum(EnumDefinitionImpl):
10437
10600
  setattr(cls, "amplicon sequencing assay",
10438
10601
  PermissibleValue(
10439
10602
  text="amplicon sequencing assay",
10603
+ title="Amplicon sequencing assay",
10440
10604
  meaning=OBI["0002767"]))
10441
10605
 
10442
10606
  class SubmissionStatusEnum(EnumDefinitionImpl):
10443
10607
 
10444
10608
  InProgress = PermissibleValue(
10445
10609
  text="InProgress",
10610
+ title="In Progress",
10446
10611
  description="The submitter is currently working on the submission.")
10447
10612
  SubmittedPendingReview = PermissibleValue(
10448
10613
  text="SubmittedPendingReview",
10614
+ title="Submitted - Pending Review",
10449
10615
  description="Submission is ready for NMDC review, the submitter cannot edit.")
10450
- ResubmittedPendingReview = PermissibleValue(
10451
- text="ResubmittedPendingReview",
10452
- description="""Submission has been resubmitted after updates. It is now ready for NMDC review. The submitter cannot edit.""")
10453
10616
  ApprovedHeld = PermissibleValue(
10454
10617
  text="ApprovedHeld",
10618
+ title="Approved - Held",
10455
10619
  description="""Submission has been reviewed and approved. Information is complete, but not yet shared on the data portal. The submitter cannot edit.""")
10456
- PendingUserFacility = PermissibleValue(
10457
- text="PendingUserFacility",
10458
- description="""Submission has been reviewed and approved. Information is complete, but not yet shared on the data portal. Sample information shared with designated user facility and pending approvals. The submitter cannot edit.""")
10620
+ ApprovedPendingUserFacility = PermissibleValue(
10621
+ text="ApprovedPendingUserFacility",
10622
+ title="Approved - Sent to User Facility",
10623
+ description="""Submission has been reviewed and approved by NMDC. Sample information has been shared with designated user facility and is ready for their review. The submitter cannot edit.""")
10459
10624
  UpdatesRequired = PermissibleValue(
10460
10625
  text="UpdatesRequired",
10461
- description="""Submission has been reviewed and submitter edits are required for approval. The submitter can reopen and edit the submission.""")
10462
- InProgressUpdate = PermissibleValue(
10463
- text="InProgressUpdate",
10464
- description="""NMDC reviewer has reopened submission on behalf of submitter. The submitter is currently editing the submission.""")
10626
+ title="Updates Required",
10627
+ description="""Submission has been reviewed and submitter edits are required for approval. The submitter can edit the submission.""")
10465
10628
  Denied = PermissibleValue(
10466
10629
  text="Denied",
10630
+ title="Denied",
10467
10631
  description="Submission has been reviewed and denied. The submitter cannot edit.")
10468
10632
  Released = PermissibleValue(
10469
10633
  text="Released",
10634
+ title="Released",
10470
10635
  description="""Submission has been reviewed and approved and data is released on the data portal. The submitter cannot edit.""")
10471
10636
 
10472
10637
  _defn = EnumDefinition(
@@ -10547,9 +10712,6 @@ slots.count = Slot(uri=NMDC.count, name="count", curie=NMDC.curie('count'),
10547
10712
  slots.functional_annotation_agg = Slot(uri=NMDC.functional_annotation_agg, name="functional_annotation_agg", curie=NMDC.curie('functional_annotation_agg'),
10548
10713
  model_uri=NMDC.functional_annotation_agg, domain=None, range=Optional[Union[Union[dict, FunctionalAnnotationAggMember], list[Union[dict, FunctionalAnnotationAggMember]]]])
10549
10714
 
10550
- slots.ecosystem_path_id = Slot(uri=NMDC.ecosystem_path_id, name="ecosystem_path_id", curie=NMDC.curie('ecosystem_path_id'),
10551
- model_uri=NMDC.ecosystem_path_id, domain=None, range=Optional[str])
10552
-
10553
10715
  slots.sample_collection_year = Slot(uri=NMDC.sample_collection_year, name="sample_collection_year", curie=NMDC.curie('sample_collection_year'),
10554
10716
  model_uri=NMDC.sample_collection_year, domain=None, range=Optional[int])
10555
10717
 
@@ -11190,6 +11352,9 @@ slots.notes = Slot(uri=NMDC.notes, name="notes", curie=NMDC.curie('notes'),
11190
11352
  slots.funding_sources = Slot(uri=NMDC.funding_sources, name="funding_sources", curie=NMDC.curie('funding_sources'),
11191
11353
  model_uri=NMDC.funding_sources, domain=None, range=Optional[Union[str, list[str]]])
11192
11354
 
11355
+ slots.ecosystem_path_id = Slot(uri=NMDC.ecosystem_path_id, name="ecosystem_path_id", curie=NMDC.curie('ecosystem_path_id'),
11356
+ model_uri=NMDC.ecosystem_path_id, domain=None, range=Optional[int])
11357
+
11193
11358
  slots.gold_path_field = Slot(uri=NMDC.gold_path_field, name="gold_path_field", curie=NMDC.curie('gold_path_field'),
11194
11359
  model_uri=NMDC.gold_path_field, domain=None, range=Optional[str])
11195
11360
 
@@ -11268,6 +11433,9 @@ slots.start_date = Slot(uri=NMDC.start_date, name="start_date", curie=NMDC.curie
11268
11433
  slots.end_date = Slot(uri=NMDC.end_date, name="end_date", curie=NMDC.curie('end_date'),
11269
11434
  model_uri=NMDC.end_date, domain=None, range=Optional[str])
11270
11435
 
11436
+ slots.source_system_of_record = Slot(uri=NMDC['basic_classes/source_system_of_record'], name="source_system_of_record", curie=NMDC.curie('basic_classes/source_system_of_record'),
11437
+ model_uri=NMDC.source_system_of_record, domain=None, range=Optional[Union[str, "SourceSystemEnum"]])
11438
+
11271
11439
  slots.associated_studies = Slot(uri=NMDC['basic_classes/associated_studies'], name="associated_studies", curie=NMDC.curie('basic_classes/associated_studies'),
11272
11440
  model_uri=NMDC.associated_studies, domain=None, range=Union[Union[str, StudyId], list[Union[str, StudyId]]])
11273
11441
 
@@ -11349,23 +11517,23 @@ slots.qc_failure_what = Slot(uri=NMDC['basic_classes/qc_failure_what'], name="qc
11349
11517
  slots.protocol_for = Slot(uri=NMDC['basic_classes/protocol_for'], name="protocol_for", curie=NMDC.curie('basic_classes/protocol_for'),
11350
11518
  model_uri=NMDC.protocol_for, domain=None, range=Optional[Union[str, "ProtocolForEnum"]])
11351
11519
 
11352
- slots.emsl_store_temp = Slot(uri=NMDC.emsl_store_temp, name="emsl_store_temp", curie=NMDC.curie('emsl_store_temp'),
11353
- model_uri=NMDC.emsl_store_temp, domain=None, range=Optional[str])
11520
+ slots.superseded_by = Slot(uri=NMDC['basic_classes/superseded_by'], name="superseded_by", curie=NMDC.curie('basic_classes/superseded_by'),
11521
+ model_uri=NMDC.superseded_by, domain=None, range=Optional[Union[str, WorkflowExecutionId]])
11354
11522
 
11355
- slots.project_id = Slot(uri=NMDC.project_id, name="project_id", curie=NMDC.curie('project_id'),
11356
- model_uri=NMDC.project_id, domain=None, range=Optional[str])
11523
+ slots.provenance_metadata = Slot(uri=NMDC['basic_classes/provenance_metadata'], name="provenance_metadata", curie=NMDC.curie('basic_classes/provenance_metadata'),
11524
+ model_uri=NMDC.provenance_metadata, domain=None, range=Optional[Union[dict, ProvenanceMetadata]])
11357
11525
 
11358
- slots.replicate_number = Slot(uri=NMDC.replicate_number, name="replicate_number", curie=NMDC.curie('replicate_number'),
11359
- model_uri=NMDC.replicate_number, domain=None, range=Optional[str])
11526
+ slots.rna_collect_site = Slot(uri=NMDC.rna_collect_site, name="rna_collect_site", curie=NMDC.curie('rna_collect_site'),
11527
+ model_uri=NMDC.rna_collect_site, domain=None, range=Optional[str])
11360
11528
 
11361
- slots.sample_shipped = Slot(uri=NMDC.sample_shipped, name="sample_shipped", curie=NMDC.curie('sample_shipped'),
11362
- model_uri=NMDC.sample_shipped, domain=None, range=Optional[str])
11529
+ slots.rna_isolate_meth = Slot(uri=NMDC.rna_isolate_meth, name="rna_isolate_meth", curie=NMDC.curie('rna_isolate_meth'),
11530
+ model_uri=NMDC.rna_isolate_meth, domain=None, range=Optional[str])
11363
11531
 
11364
- slots.sample_type = Slot(uri=NMDC.sample_type, name="sample_type", curie=NMDC.curie('sample_type'),
11365
- model_uri=NMDC.sample_type, domain=None, range=Optional[Union[str, "SampleTypeEnum"]])
11532
+ slots.rna_organisms = Slot(uri=NMDC.rna_organisms, name="rna_organisms", curie=NMDC.curie('rna_organisms'),
11533
+ model_uri=NMDC.rna_organisms, domain=None, range=Optional[str])
11366
11534
 
11367
- slots.technical_reps = Slot(uri=NMDC.technical_reps, name="technical_reps", curie=NMDC.curie('technical_reps'),
11368
- model_uri=NMDC.technical_reps, domain=None, range=Optional[str])
11535
+ slots.dna_lr_isolate_meth = Slot(uri=NMDC.dna_lr_isolate_meth, name="dna_lr_isolate_meth", curie=NMDC.curie('dna_lr_isolate_meth'),
11536
+ model_uri=NMDC.dna_lr_isolate_meth, domain=None, range=Optional[str])
11369
11537
 
11370
11538
  slots.dna_collect_site = Slot(uri=NMDC.dna_collect_site, name="dna_collect_site", curie=NMDC.curie('dna_collect_site'),
11371
11539
  model_uri=NMDC.dna_collect_site, domain=None, range=Optional[str])
@@ -11376,14 +11544,23 @@ slots.dna_isolate_meth = Slot(uri=NMDC.dna_isolate_meth, name="dna_isolate_meth"
11376
11544
  slots.dna_organisms = Slot(uri=NMDC.dna_organisms, name="dna_organisms", curie=NMDC.curie('dna_organisms'),
11377
11545
  model_uri=NMDC.dna_organisms, domain=None, range=Optional[str])
11378
11546
 
11379
- slots.rna_collect_site = Slot(uri=NMDC.rna_collect_site, name="rna_collect_site", curie=NMDC.curie('rna_collect_site'),
11380
- model_uri=NMDC.rna_collect_site, domain=None, range=Optional[str])
11547
+ slots.emsl_store_temp = Slot(uri=NMDC.emsl_store_temp, name="emsl_store_temp", curie=NMDC.curie('emsl_store_temp'),
11548
+ model_uri=NMDC.emsl_store_temp, domain=None, range=Optional[float])
11381
11549
 
11382
- slots.rna_isolate_meth = Slot(uri=NMDC.rna_isolate_meth, name="rna_isolate_meth", curie=NMDC.curie('rna_isolate_meth'),
11383
- model_uri=NMDC.rna_isolate_meth, domain=None, range=Optional[str])
11550
+ slots.project_id = Slot(uri=NMDC.project_id, name="project_id", curie=NMDC.curie('project_id'),
11551
+ model_uri=NMDC.project_id, domain=None, range=Optional[str])
11384
11552
 
11385
- slots.rna_organisms = Slot(uri=NMDC.rna_organisms, name="rna_organisms", curie=NMDC.curie('rna_organisms'),
11386
- model_uri=NMDC.rna_organisms, domain=None, range=Optional[str])
11553
+ slots.sample_shipped = Slot(uri=NMDC.sample_shipped, name="sample_shipped", curie=NMDC.curie('sample_shipped'),
11554
+ model_uri=NMDC.sample_shipped, domain=None, range=Optional[str])
11555
+
11556
+ slots.sample_type = Slot(uri=NMDC.sample_type, name="sample_type", curie=NMDC.curie('sample_type'),
11557
+ model_uri=NMDC.sample_type, domain=None, range=Optional[Union[str, "SampleTypeEnum"]])
11558
+
11559
+ slots.replicate_number = Slot(uri=NMDC.replicate_number, name="replicate_number", curie=NMDC.curie('replicate_number'),
11560
+ model_uri=NMDC.replicate_number, domain=None, range=Optional[int])
11561
+
11562
+ slots.technical_reps = Slot(uri=NMDC.technical_reps, name="technical_reps", curie=NMDC.curie('technical_reps'),
11563
+ model_uri=NMDC.technical_reps, domain=None, range=Optional[int])
11387
11564
 
11388
11565
  slots.collection_date_inc = Slot(uri=NMDC.collection_date_inc, name="collection_date_inc", curie=NMDC.curie('collection_date_inc'),
11389
11566
  model_uri=NMDC.collection_date_inc, domain=None, range=Optional[str])
@@ -11444,28 +11621,36 @@ slots.img_identifiers = Slot(uri=NMDC.img_identifiers, name="img_identifiers", c
11444
11621
  pattern=re.compile(r'^img\.taxon:[a-zA-Z0-9_][a-zA-Z0-9_\/\.]*$'))
11445
11622
 
11446
11623
  slots.igsn_identifiers = Slot(uri=NMDC.igsn_identifiers, name="igsn_identifiers", curie=NMDC.curie('igsn_identifiers'),
11447
- model_uri=NMDC.igsn_identifiers, domain=None, range=Optional[str])
11624
+ model_uri=NMDC.igsn_identifiers, domain=None, range=Optional[Union[Union[str, ExternalIdentifier], list[Union[str, ExternalIdentifier]]]],
11625
+ pattern=re.compile(r'^[a-zA-Z0-9][a-zA-Z0-9_\.]+:[a-zA-Z0-9_][a-zA-Z0-9_\-\/\.,]*$'))
11448
11626
 
11449
11627
  slots.gold_identifiers = Slot(uri=NMDC.gold_identifiers, name="gold_identifiers", curie=NMDC.curie('gold_identifiers'),
11450
- model_uri=NMDC.gold_identifiers, domain=None, range=Optional[str])
11628
+ model_uri=NMDC.gold_identifiers, domain=None, range=Optional[Union[Union[str, ExternalIdentifier], list[Union[str, ExternalIdentifier]]]],
11629
+ pattern=re.compile(r'^[a-zA-Z0-9][a-zA-Z0-9_\.]+:[a-zA-Z0-9_][a-zA-Z0-9_\-\/\.,]*$'))
11451
11630
 
11452
11631
  slots.emsl_identifiers = Slot(uri=NMDC.emsl_identifiers, name="emsl_identifiers", curie=NMDC.curie('emsl_identifiers'),
11453
- model_uri=NMDC.emsl_identifiers, domain=None, range=Optional[str])
11632
+ model_uri=NMDC.emsl_identifiers, domain=None, range=Optional[Union[Union[str, ExternalIdentifier], list[Union[str, ExternalIdentifier]]]],
11633
+ pattern=re.compile(r'^[a-zA-Z0-9][a-zA-Z0-9_\.]+:[a-zA-Z0-9_][a-zA-Z0-9_\-\/\.,]*$'))
11454
11634
 
11455
11635
  slots.mgnify_identifiers = Slot(uri=NMDC.mgnify_identifiers, name="mgnify_identifiers", curie=NMDC.curie('mgnify_identifiers'),
11456
- model_uri=NMDC.mgnify_identifiers, domain=None, range=Optional[str])
11636
+ model_uri=NMDC.mgnify_identifiers, domain=None, range=Optional[Union[Union[str, ExternalIdentifier], list[Union[str, ExternalIdentifier]]]],
11637
+ pattern=re.compile(r'^[a-zA-Z0-9][a-zA-Z0-9_\.]+:[a-zA-Z0-9_][a-zA-Z0-9_\-\/\.,]*$'))
11457
11638
 
11458
11639
  slots.insdc_identifiers = Slot(uri=NMDC.insdc_identifiers, name="insdc_identifiers", curie=NMDC.curie('insdc_identifiers'),
11459
- model_uri=NMDC.insdc_identifiers, domain=None, range=Optional[str])
11640
+ model_uri=NMDC.insdc_identifiers, domain=None, range=Optional[Union[Union[str, ExternalIdentifier], list[Union[str, ExternalIdentifier]]]],
11641
+ pattern=re.compile(r'^[a-zA-Z0-9][a-zA-Z0-9_\.]+:[a-zA-Z0-9_][a-zA-Z0-9_\-\/\.,]*$'))
11460
11642
 
11461
11643
  slots.neon_identifiers = Slot(uri=NMDC.neon_identifiers, name="neon_identifiers", curie=NMDC.curie('neon_identifiers'),
11462
- model_uri=NMDC.neon_identifiers, domain=None, range=Optional[str])
11644
+ model_uri=NMDC.neon_identifiers, domain=None, range=Optional[Union[Union[str, ExternalIdentifier], list[Union[str, ExternalIdentifier]]]],
11645
+ pattern=re.compile(r'^[a-zA-Z0-9][a-zA-Z0-9_\.]+:[a-zA-Z0-9_][a-zA-Z0-9_\-\/\.,]*$'))
11463
11646
 
11464
11647
  slots.jgi_portal_identifiers = Slot(uri=NMDC.jgi_portal_identifiers, name="jgi_portal_identifiers", curie=NMDC.curie('jgi_portal_identifiers'),
11465
- model_uri=NMDC.jgi_portal_identifiers, domain=None, range=Optional[str])
11648
+ model_uri=NMDC.jgi_portal_identifiers, domain=None, range=Optional[Union[Union[str, ExternalIdentifier], list[Union[str, ExternalIdentifier]]]],
11649
+ pattern=re.compile(r'^[a-zA-Z0-9][a-zA-Z0-9_\.]+:[a-zA-Z0-9_][a-zA-Z0-9_\-\/\.,]*$'))
11466
11650
 
11467
11651
  slots.gnps_identifiers = Slot(uri=NMDC.gnps_identifiers, name="gnps_identifiers", curie=NMDC.curie('gnps_identifiers'),
11468
- model_uri=NMDC.gnps_identifiers, domain=None, range=Optional[str])
11652
+ model_uri=NMDC.gnps_identifiers, domain=None, range=Optional[Union[Union[str, ExternalIdentifier], list[Union[str, ExternalIdentifier]]]],
11653
+ pattern=re.compile(r'^[a-zA-Z0-9][a-zA-Z0-9_\.]+:[a-zA-Z0-9_][a-zA-Z0-9_\-\/\.,]*$'))
11469
11654
 
11470
11655
  slots.study_identifiers = Slot(uri=NMDC.study_identifiers, name="study_identifiers", curie=NMDC.curie('study_identifiers'),
11471
11656
  model_uri=NMDC.study_identifiers, domain=None, range=Optional[Union[Union[str, ExternalIdentifier], list[Union[str, ExternalIdentifier]]]],
@@ -11529,7 +11714,7 @@ slots.emsl_biosample_identifiers = Slot(uri=NMDC.emsl_biosample_identifiers, nam
11529
11714
 
11530
11715
  slots.igsn_biosample_identifiers = Slot(uri=NMDC.igsn_biosample_identifiers, name="igsn_biosample_identifiers", curie=NMDC.curie('igsn_biosample_identifiers'),
11531
11716
  model_uri=NMDC.igsn_biosample_identifiers, domain=None, range=Optional[Union[Union[str, ExternalIdentifier], list[Union[str, ExternalIdentifier]]]],
11532
- pattern=re.compile(r'^[a-zA-Z0-9][a-zA-Z0-9_\.]+:[a-zA-Z0-9_][a-zA-Z0-9_\-\/\.,]*$'))
11717
+ pattern=re.compile(r'^igsn:[A-Za-z]{2,4}[A-Za-z0-9.-]{1,71}$'))
11533
11718
 
11534
11719
  slots.omics_processing_identifiers = Slot(uri=NMDC.omics_processing_identifiers, name="omics_processing_identifiers", curie=NMDC.curie('omics_processing_identifiers'),
11535
11720
  model_uri=NMDC.omics_processing_identifiers, domain=None, range=Optional[Union[Union[str, ExternalIdentifier], list[Union[str, ExternalIdentifier]]]],
@@ -11567,7 +11752,7 @@ slots.assembly_identifiers = Slot(uri=NMDC.assembly_identifiers, name="assembly_
11567
11752
  model_uri=NMDC.assembly_identifiers, domain=None, range=Optional[str])
11568
11753
 
11569
11754
  slots.insdc_assembly_identifiers = Slot(uri=NMDC.insdc_assembly_identifiers, name="insdc_assembly_identifiers", curie=NMDC.curie('insdc_assembly_identifiers'),
11570
- model_uri=NMDC.insdc_assembly_identifiers, domain=None, range=Optional[str],
11755
+ model_uri=NMDC.insdc_assembly_identifiers, domain=None, range=Optional[Union[str, list[str]]],
11571
11756
  pattern=re.compile(r'^insdc.sra:[A-Z]+[0-9]+(\.[0-9]+)?$'))
11572
11757
 
11573
11758
  slots.abs_air_humidity = Slot(uri=MIXS['0000122'], name="abs_air_humidity", curie=MIXS.curie('0000122'),
@@ -13291,6 +13476,9 @@ slots.MetagenomeAssembly_id = Slot(uri=NMDC.id, name="MetagenomeAssembly_id", cu
13291
13476
  slots.MetagenomeAssembly_was_informed_by = Slot(uri=NMDC['basic_classes/was_informed_by'], name="MetagenomeAssembly_was_informed_by", curie=NMDC.curie('basic_classes/was_informed_by'),
13292
13477
  model_uri=NMDC.MetagenomeAssembly_was_informed_by, domain=MetagenomeAssembly, range=Optional[Union[Union[str, NucleotideSequencingId], list[Union[str, NucleotideSequencingId]]]])
13293
13478
 
13479
+ slots.MetagenomeAssembly_superseded_by = Slot(uri=NMDC['basic_classes/superseded_by'], name="MetagenomeAssembly_superseded_by", curie=NMDC.curie('basic_classes/superseded_by'),
13480
+ model_uri=NMDC.MetagenomeAssembly_superseded_by, domain=MetagenomeAssembly, range=Optional[Union[str, MetagenomeAssemblyId]])
13481
+
13294
13482
  slots.MetatranscriptomeAssembly_id = Slot(uri=NMDC.id, name="MetatranscriptomeAssembly_id", curie=NMDC.curie('id'),
13295
13483
  model_uri=NMDC.MetatranscriptomeAssembly_id, domain=MetatranscriptomeAssembly, range=Union[str, MetatranscriptomeAssemblyId],
13296
13484
  pattern=re.compile(r'^[a-zA-Z0-9][a-zA-Z0-9_\.]+:[a-zA-Z0-9_][a-zA-Z0-9_\-\/\.,]*$'))
@@ -13298,6 +13486,9 @@ slots.MetatranscriptomeAssembly_id = Slot(uri=NMDC.id, name="MetatranscriptomeAs
13298
13486
  slots.MetatranscriptomeAssembly_was_informed_by = Slot(uri=NMDC['basic_classes/was_informed_by'], name="MetatranscriptomeAssembly_was_informed_by", curie=NMDC.curie('basic_classes/was_informed_by'),
13299
13487
  model_uri=NMDC.MetatranscriptomeAssembly_was_informed_by, domain=MetatranscriptomeAssembly, range=Optional[Union[Union[str, NucleotideSequencingId], list[Union[str, NucleotideSequencingId]]]])
13300
13488
 
13489
+ slots.MetatranscriptomeAssembly_superseded_by = Slot(uri=NMDC['basic_classes/superseded_by'], name="MetatranscriptomeAssembly_superseded_by", curie=NMDC.curie('basic_classes/superseded_by'),
13490
+ model_uri=NMDC.MetatranscriptomeAssembly_superseded_by, domain=MetatranscriptomeAssembly, range=Optional[Union[str, MetatranscriptomeAssemblyId]])
13491
+
13301
13492
  slots.MetatranscriptomeAnnotation_id = Slot(uri=NMDC.id, name="MetatranscriptomeAnnotation_id", curie=NMDC.curie('id'),
13302
13493
  model_uri=NMDC.MetatranscriptomeAnnotation_id, domain=MetatranscriptomeAnnotation, range=Union[str, MetatranscriptomeAnnotationId],
13303
13494
  pattern=re.compile(r'^[a-zA-Z0-9][a-zA-Z0-9_\.]+:[a-zA-Z0-9_][a-zA-Z0-9_\-\/\.,]*$'))
@@ -13319,6 +13510,9 @@ slots.MetatranscriptomeAnnotation_gold_analysis_project_identifiers = Slot(uri=N
13319
13510
  model_uri=NMDC.MetatranscriptomeAnnotation_gold_analysis_project_identifiers, domain=MetatranscriptomeAnnotation, range=Optional[Union[Union[str, ExternalIdentifier], list[Union[str, ExternalIdentifier]]]],
13320
13511
  pattern=re.compile(r'^gold:Ga[0-9]+$'))
13321
13512
 
13513
+ slots.MetatranscriptomeAnnotation_superseded_by = Slot(uri=NMDC['basic_classes/superseded_by'], name="MetatranscriptomeAnnotation_superseded_by", curie=NMDC.curie('basic_classes/superseded_by'),
13514
+ model_uri=NMDC.MetatranscriptomeAnnotation_superseded_by, domain=MetatranscriptomeAnnotation, range=Optional[Union[str, MetatranscriptomeAnnotationId]])
13515
+
13322
13516
  slots.MetatranscriptomeExpressionAnalysis_id = Slot(uri=NMDC.id, name="MetatranscriptomeExpressionAnalysis_id", curie=NMDC.curie('id'),
13323
13517
  model_uri=NMDC.MetatranscriptomeExpressionAnalysis_id, domain=MetatranscriptomeExpressionAnalysis, range=Union[str, MetatranscriptomeExpressionAnalysisId],
13324
13518
  pattern=re.compile(r'^[a-zA-Z0-9][a-zA-Z0-9_\.]+:[a-zA-Z0-9_][a-zA-Z0-9_\-\/\.,]*$'))
@@ -13330,6 +13524,9 @@ slots.MetatranscriptomeExpressionAnalysis_img_identifiers = Slot(uri=NMDC.img_id
13330
13524
  slots.MetatranscriptomeExpressionAnalysis_was_informed_by = Slot(uri=NMDC['basic_classes/was_informed_by'], name="MetatranscriptomeExpressionAnalysis_was_informed_by", curie=NMDC.curie('basic_classes/was_informed_by'),
13331
13525
  model_uri=NMDC.MetatranscriptomeExpressionAnalysis_was_informed_by, domain=MetatranscriptomeExpressionAnalysis, range=Optional[Union[Union[str, NucleotideSequencingId], list[Union[str, NucleotideSequencingId]]]])
13332
13526
 
13527
+ slots.MetatranscriptomeExpressionAnalysis_superseded_by = Slot(uri=NMDC['basic_classes/superseded_by'], name="MetatranscriptomeExpressionAnalysis_superseded_by", curie=NMDC.curie('basic_classes/superseded_by'),
13528
+ model_uri=NMDC.MetatranscriptomeExpressionAnalysis_superseded_by, domain=MetatranscriptomeExpressionAnalysis, range=Optional[Union[str, MetatranscriptomeExpressionAnalysisId]])
13529
+
13333
13530
  slots.MagsAnalysis_id = Slot(uri=NMDC.id, name="MagsAnalysis_id", curie=NMDC.curie('id'),
13334
13531
  model_uri=NMDC.MagsAnalysis_id, domain=MagsAnalysis, range=Union[str, MagsAnalysisId],
13335
13532
  pattern=re.compile(r'^[a-zA-Z0-9][a-zA-Z0-9_\.]+:[a-zA-Z0-9_][a-zA-Z0-9_\-\/\.,]*$'))
@@ -13341,6 +13538,9 @@ slots.MagsAnalysis_img_identifiers = Slot(uri=NMDC.img_identifiers, name="MagsAn
13341
13538
  slots.MagsAnalysis_was_informed_by = Slot(uri=NMDC['basic_classes/was_informed_by'], name="MagsAnalysis_was_informed_by", curie=NMDC.curie('basic_classes/was_informed_by'),
13342
13539
  model_uri=NMDC.MagsAnalysis_was_informed_by, domain=MagsAnalysis, range=Optional[Union[Union[str, NucleotideSequencingId], list[Union[str, NucleotideSequencingId]]]])
13343
13540
 
13541
+ slots.MagsAnalysis_superseded_by = Slot(uri=NMDC['basic_classes/superseded_by'], name="MagsAnalysis_superseded_by", curie=NMDC.curie('basic_classes/superseded_by'),
13542
+ model_uri=NMDC.MagsAnalysis_superseded_by, domain=MagsAnalysis, range=Optional[Union[str, MagsAnalysisId]])
13543
+
13344
13544
  slots.ReadQcAnalysis_id = Slot(uri=NMDC.id, name="ReadQcAnalysis_id", curie=NMDC.curie('id'),
13345
13545
  model_uri=NMDC.ReadQcAnalysis_id, domain=ReadQcAnalysis, range=Union[str, ReadQcAnalysisId],
13346
13546
  pattern=re.compile(r'^[a-zA-Z0-9][a-zA-Z0-9_\.]+:[a-zA-Z0-9_][a-zA-Z0-9_\-\/\.,]*$'))
@@ -13348,6 +13548,9 @@ slots.ReadQcAnalysis_id = Slot(uri=NMDC.id, name="ReadQcAnalysis_id", curie=NMDC
13348
13548
  slots.ReadQcAnalysis_was_informed_by = Slot(uri=NMDC['basic_classes/was_informed_by'], name="ReadQcAnalysis_was_informed_by", curie=NMDC.curie('basic_classes/was_informed_by'),
13349
13549
  model_uri=NMDC.ReadQcAnalysis_was_informed_by, domain=ReadQcAnalysis, range=Optional[Union[Union[str, NucleotideSequencingId], list[Union[str, NucleotideSequencingId]]]])
13350
13550
 
13551
+ slots.ReadQcAnalysis_superseded_by = Slot(uri=NMDC['basic_classes/superseded_by'], name="ReadQcAnalysis_superseded_by", curie=NMDC.curie('basic_classes/superseded_by'),
13552
+ model_uri=NMDC.ReadQcAnalysis_superseded_by, domain=ReadQcAnalysis, range=Optional[Union[str, ReadQcAnalysisId]])
13553
+
13351
13554
  slots.ReadBasedTaxonomyAnalysis_id = Slot(uri=NMDC.id, name="ReadBasedTaxonomyAnalysis_id", curie=NMDC.curie('id'),
13352
13555
  model_uri=NMDC.ReadBasedTaxonomyAnalysis_id, domain=ReadBasedTaxonomyAnalysis, range=Union[str, ReadBasedTaxonomyAnalysisId],
13353
13556
  pattern=re.compile(r'^[a-zA-Z0-9][a-zA-Z0-9_\.]+:[a-zA-Z0-9_][a-zA-Z0-9_\-\/\.,]*$'))
@@ -13355,6 +13558,9 @@ slots.ReadBasedTaxonomyAnalysis_id = Slot(uri=NMDC.id, name="ReadBasedTaxonomyAn
13355
13558
  slots.ReadBasedTaxonomyAnalysis_was_informed_by = Slot(uri=NMDC['basic_classes/was_informed_by'], name="ReadBasedTaxonomyAnalysis_was_informed_by", curie=NMDC.curie('basic_classes/was_informed_by'),
13356
13559
  model_uri=NMDC.ReadBasedTaxonomyAnalysis_was_informed_by, domain=ReadBasedTaxonomyAnalysis, range=Optional[Union[Union[str, NucleotideSequencingId], list[Union[str, NucleotideSequencingId]]]])
13357
13560
 
13561
+ slots.ReadBasedTaxonomyAnalysis_superseded_by = Slot(uri=NMDC['basic_classes/superseded_by'], name="ReadBasedTaxonomyAnalysis_superseded_by", curie=NMDC.curie('basic_classes/superseded_by'),
13562
+ model_uri=NMDC.ReadBasedTaxonomyAnalysis_superseded_by, domain=ReadBasedTaxonomyAnalysis, range=Optional[Union[str, ReadBasedTaxonomyAnalysisId]])
13563
+
13358
13564
  slots.MetabolomicsAnalysis_id = Slot(uri=NMDC.id, name="MetabolomicsAnalysis_id", curie=NMDC.curie('id'),
13359
13565
  model_uri=NMDC.MetabolomicsAnalysis_id, domain=MetabolomicsAnalysis, range=Union[str, MetabolomicsAnalysisId],
13360
13566
  pattern=re.compile(r'^[a-zA-Z0-9][a-zA-Z0-9_\.]+:[a-zA-Z0-9_][a-zA-Z0-9_\-\/\.,]*$'))
@@ -13362,6 +13568,9 @@ slots.MetabolomicsAnalysis_id = Slot(uri=NMDC.id, name="MetabolomicsAnalysis_id"
13362
13568
  slots.MetabolomicsAnalysis_was_informed_by = Slot(uri=NMDC['basic_classes/was_informed_by'], name="MetabolomicsAnalysis_was_informed_by", curie=NMDC.curie('basic_classes/was_informed_by'),
13363
13569
  model_uri=NMDC.MetabolomicsAnalysis_was_informed_by, domain=MetabolomicsAnalysis, range=Optional[Union[Union[str, MassSpectrometryId], list[Union[str, MassSpectrometryId]]]])
13364
13570
 
13571
+ slots.MetabolomicsAnalysis_superseded_by = Slot(uri=NMDC['basic_classes/superseded_by'], name="MetabolomicsAnalysis_superseded_by", curie=NMDC.curie('basic_classes/superseded_by'),
13572
+ model_uri=NMDC.MetabolomicsAnalysis_superseded_by, domain=MetabolomicsAnalysis, range=Optional[Union[str, MetabolomicsAnalysisId]])
13573
+
13365
13574
  slots.MetaproteomicsAnalysis_id = Slot(uri=NMDC.id, name="MetaproteomicsAnalysis_id", curie=NMDC.curie('id'),
13366
13575
  model_uri=NMDC.MetaproteomicsAnalysis_id, domain=MetaproteomicsAnalysis, range=Union[str, MetaproteomicsAnalysisId],
13367
13576
  pattern=re.compile(r'^[a-zA-Z0-9][a-zA-Z0-9_\.]+:[a-zA-Z0-9_][a-zA-Z0-9_\-\/\.,]*$'))
@@ -13369,6 +13578,9 @@ slots.MetaproteomicsAnalysis_id = Slot(uri=NMDC.id, name="MetaproteomicsAnalysis
13369
13578
  slots.MetaproteomicsAnalysis_was_informed_by = Slot(uri=NMDC['basic_classes/was_informed_by'], name="MetaproteomicsAnalysis_was_informed_by", curie=NMDC.curie('basic_classes/was_informed_by'),
13370
13579
  model_uri=NMDC.MetaproteomicsAnalysis_was_informed_by, domain=MetaproteomicsAnalysis, range=Optional[Union[Union[str, MassSpectrometryId], list[Union[str, MassSpectrometryId]]]])
13371
13580
 
13581
+ slots.MetaproteomicsAnalysis_superseded_by = Slot(uri=NMDC['basic_classes/superseded_by'], name="MetaproteomicsAnalysis_superseded_by", curie=NMDC.curie('basic_classes/superseded_by'),
13582
+ model_uri=NMDC.MetaproteomicsAnalysis_superseded_by, domain=MetaproteomicsAnalysis, range=Optional[Union[str, MetaproteomicsAnalysisId]])
13583
+
13372
13584
  slots.NomAnalysis_id = Slot(uri=NMDC.id, name="NomAnalysis_id", curie=NMDC.curie('id'),
13373
13585
  model_uri=NMDC.NomAnalysis_id, domain=NomAnalysis, range=Union[str, NomAnalysisId],
13374
13586
  pattern=re.compile(r'^[a-zA-Z0-9][a-zA-Z0-9_\.]+:[a-zA-Z0-9_][a-zA-Z0-9_\-\/\.,]*$'))
@@ -13376,6 +13588,9 @@ slots.NomAnalysis_id = Slot(uri=NMDC.id, name="NomAnalysis_id", curie=NMDC.curie
13376
13588
  slots.NomAnalysis_was_informed_by = Slot(uri=NMDC['basic_classes/was_informed_by'], name="NomAnalysis_was_informed_by", curie=NMDC.curie('basic_classes/was_informed_by'),
13377
13589
  model_uri=NMDC.NomAnalysis_was_informed_by, domain=NomAnalysis, range=Optional[Union[Union[str, MassSpectrometryId], list[Union[str, MassSpectrometryId]]]])
13378
13590
 
13591
+ slots.NomAnalysis_superseded_by = Slot(uri=NMDC['basic_classes/superseded_by'], name="NomAnalysis_superseded_by", curie=NMDC.curie('basic_classes/superseded_by'),
13592
+ model_uri=NMDC.NomAnalysis_superseded_by, domain=NomAnalysis, range=Optional[Union[str, NomAnalysisId]])
13593
+
13379
13594
  slots.ChemicalConversionProcess_id = Slot(uri=NMDC.id, name="ChemicalConversionProcess_id", curie=NMDC.curie('id'),
13380
13595
  model_uri=NMDC.ChemicalConversionProcess_id, domain=ChemicalConversionProcess, range=Union[str, ChemicalConversionProcessId],
13381
13596
  pattern=re.compile(r'^[a-zA-Z0-9][a-zA-Z0-9_\.]+:[a-zA-Z0-9_][a-zA-Z0-9_\-\/\.,]*$'))
@@ -13654,4 +13869,13 @@ slots.WorkflowExecution_processing_institution = Slot(uri=NMDC.processing_instit
13654
13869
  model_uri=NMDC.WorkflowExecution_processing_institution, domain=WorkflowExecution, range=Union[str, "ProcessingInstitutionEnum"])
13655
13870
 
13656
13871
  slots.WorkflowExecution_was_informed_by = Slot(uri=NMDC['basic_classes/was_informed_by'], name="WorkflowExecution_was_informed_by", curie=NMDC.curie('basic_classes/was_informed_by'),
13657
- model_uri=NMDC.WorkflowExecution_was_informed_by, domain=WorkflowExecution, range=Union[Union[str, DataGenerationId], list[Union[str, DataGenerationId]]])
13872
+ model_uri=NMDC.WorkflowExecution_was_informed_by, domain=WorkflowExecution, range=Union[Union[str, DataGenerationId], list[Union[str, DataGenerationId]]])
13873
+
13874
+ slots.WorkflowExecution_version = Slot(uri=NMDC.version, name="WorkflowExecution_version", curie=NMDC.curie('version'),
13875
+ model_uri=NMDC.WorkflowExecution_version, domain=WorkflowExecution, range=Optional[str])
13876
+
13877
+ slots.ProvenanceMetadata_version = Slot(uri=NMDC.version, name="ProvenanceMetadata_version", curie=NMDC.curie('version'),
13878
+ model_uri=NMDC.ProvenanceMetadata_version, domain=ProvenanceMetadata, range=Optional[str])
13879
+
13880
+ slots.ProvenanceMetadata_git_url = Slot(uri=NMDC.git_url, name="ProvenanceMetadata_git_url", curie=NMDC.curie('git_url'),
13881
+ model_uri=NMDC.ProvenanceMetadata_git_url, domain=ProvenanceMetadata, range=Optional[str])