nmdc-schema 11.12.0rc1__py3-none-any.whl → 11.12.1__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.
- nmdc_schema/__init__.py +1 -0
- nmdc_schema/migration_recursion.py +2 -0
- nmdc_schema/migrators/cli/run_migrator.py +10 -14
- nmdc_schema/migrators/helpers.py +24 -0
- nmdc_schema/migrators/migrator_from_11_11_0_to_11_12_0.py +35 -0
- nmdc_schema/migrators/partials/migrator_from_11_11_0_to_11_12_0/__init__.py +28 -0
- 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 +187 -0
- 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 +113 -0
- nmdc_schema/nmdc-pydantic.py +306 -128
- nmdc_schema/nmdc.py +152 -13
- nmdc_schema/nmdc.schema.json +149 -4
- nmdc_schema/nmdc_materialized_patterns.json +403 -193
- nmdc_schema/nmdc_materialized_patterns.schema.json +149 -4
- nmdc_schema/nmdc_materialized_patterns.yaml +355 -164
- nmdc_schema/nmdc_schema_validation_plugin.py +103 -0
- {nmdc_schema-11.12.0rc1.dist-info → nmdc_schema-11.12.1.dist-info}/METADATA +1 -1
- {nmdc_schema-11.12.0rc1.dist-info → nmdc_schema-11.12.1.dist-info}/RECORD +20 -15
- {nmdc_schema-11.12.0rc1.dist-info → nmdc_schema-11.12.1.dist-info}/entry_points.txt +0 -1
- {nmdc_schema-11.12.0rc1.dist-info → nmdc_schema-11.12.1.dist-info}/WHEEL +0 -0
- {nmdc_schema-11.12.0rc1.dist-info → nmdc_schema-11.12.1.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-
|
|
2
|
+
# Generation date: 2025-10-09T18:05:09
|
|
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.
|
|
63
|
+
version = "11.12.1"
|
|
64
64
|
|
|
65
65
|
# Namespaces
|
|
66
66
|
BFO = CurieNamespace('BFO', 'http://purl.obolibrary.org/obo/BFO_')
|
|
@@ -1194,6 +1194,74 @@ class GeolocationValue(AttributeValue):
|
|
|
1194
1194
|
self.type = str(self.class_class_curie)
|
|
1195
1195
|
|
|
1196
1196
|
|
|
1197
|
+
@dataclass(repr=False)
|
|
1198
|
+
class PropertyAssertion(AttributeValue):
|
|
1199
|
+
"""
|
|
1200
|
+
A structured record of data that doesn't fit nicely within the constraints of other NMDC AttributeValues. Uses
|
|
1201
|
+
primitive ranges only.
|
|
1202
|
+
"""
|
|
1203
|
+
_inherited_slots: ClassVar[list[str]] = []
|
|
1204
|
+
|
|
1205
|
+
class_class_uri: ClassVar[URIRef] = NMDC["PropertyAssertion"]
|
|
1206
|
+
class_class_curie: ClassVar[str] = "nmdc:PropertyAssertion"
|
|
1207
|
+
class_name: ClassVar[str] = "PropertyAssertion"
|
|
1208
|
+
class_model_uri: ClassVar[URIRef] = NMDC.PropertyAssertion
|
|
1209
|
+
|
|
1210
|
+
type: Union[str, URIorCURIE] = None
|
|
1211
|
+
has_raw_value: str = None
|
|
1212
|
+
has_attribute_label: Optional[str] = None
|
|
1213
|
+
has_attribute_id: Optional[Union[str, URIorCURIE]] = None
|
|
1214
|
+
has_quantity_kind_id: Optional[Union[str, URIorCURIE]] = None
|
|
1215
|
+
has_value_term_id: Optional[Union[str, URIorCURIE]] = None
|
|
1216
|
+
has_boolean_value: Optional[Union[bool, Bool]] = None
|
|
1217
|
+
has_datetime_value: Optional[str] = None
|
|
1218
|
+
has_numeric_value: Optional[Decimal] = None
|
|
1219
|
+
has_minimum_numeric_value: Optional[Decimal] = None
|
|
1220
|
+
has_maximum_numeric_value: Optional[Decimal] = None
|
|
1221
|
+
has_unit: Optional[str] = None
|
|
1222
|
+
|
|
1223
|
+
def __post_init__(self, *_: str, **kwargs: Any):
|
|
1224
|
+
if self._is_empty(self.has_raw_value):
|
|
1225
|
+
self.MissingRequiredField("has_raw_value")
|
|
1226
|
+
if not isinstance(self.has_raw_value, str):
|
|
1227
|
+
self.has_raw_value = str(self.has_raw_value)
|
|
1228
|
+
|
|
1229
|
+
if self.has_attribute_label is not None and not isinstance(self.has_attribute_label, str):
|
|
1230
|
+
self.has_attribute_label = str(self.has_attribute_label)
|
|
1231
|
+
|
|
1232
|
+
if self.has_attribute_id is not None and not isinstance(self.has_attribute_id, URIorCURIE):
|
|
1233
|
+
self.has_attribute_id = URIorCURIE(self.has_attribute_id)
|
|
1234
|
+
|
|
1235
|
+
if self.has_quantity_kind_id is not None and not isinstance(self.has_quantity_kind_id, URIorCURIE):
|
|
1236
|
+
self.has_quantity_kind_id = URIorCURIE(self.has_quantity_kind_id)
|
|
1237
|
+
|
|
1238
|
+
if self.has_value_term_id is not None and not isinstance(self.has_value_term_id, URIorCURIE):
|
|
1239
|
+
self.has_value_term_id = URIorCURIE(self.has_value_term_id)
|
|
1240
|
+
|
|
1241
|
+
if self.has_boolean_value is not None and not isinstance(self.has_boolean_value, Bool):
|
|
1242
|
+
self.has_boolean_value = Bool(self.has_boolean_value)
|
|
1243
|
+
|
|
1244
|
+
if self.has_datetime_value is not None and not isinstance(self.has_datetime_value, str):
|
|
1245
|
+
self.has_datetime_value = str(self.has_datetime_value)
|
|
1246
|
+
|
|
1247
|
+
if self.has_numeric_value is not None and not isinstance(self.has_numeric_value, Decimal):
|
|
1248
|
+
self.has_numeric_value = Decimal(self.has_numeric_value)
|
|
1249
|
+
|
|
1250
|
+
if self.has_minimum_numeric_value is not None and not isinstance(self.has_minimum_numeric_value, Decimal):
|
|
1251
|
+
self.has_minimum_numeric_value = Decimal(self.has_minimum_numeric_value)
|
|
1252
|
+
|
|
1253
|
+
if self.has_maximum_numeric_value is not None and not isinstance(self.has_maximum_numeric_value, Decimal):
|
|
1254
|
+
self.has_maximum_numeric_value = Decimal(self.has_maximum_numeric_value)
|
|
1255
|
+
|
|
1256
|
+
if self.has_unit is not None and not isinstance(self.has_unit, str):
|
|
1257
|
+
self.has_unit = str(self.has_unit)
|
|
1258
|
+
|
|
1259
|
+
super().__post_init__(**kwargs)
|
|
1260
|
+
if self._is_empty(self.type):
|
|
1261
|
+
self.MissingRequiredField("type")
|
|
1262
|
+
self.type = str(self.class_class_curie)
|
|
1263
|
+
|
|
1264
|
+
|
|
1197
1265
|
@dataclass(repr=False)
|
|
1198
1266
|
class NamedThing(YAMLRoot):
|
|
1199
1267
|
"""
|
|
@@ -1848,7 +1916,7 @@ class Biosample(Sample):
|
|
|
1848
1916
|
micro_biomass_meth: Optional[str] = None
|
|
1849
1917
|
microbial_biomass: Optional[Union[dict, QuantityValue]] = None
|
|
1850
1918
|
mineral_nutr_regm: Optional[Union[Union[dict, TextValue], list[Union[dict, TextValue]]]] = empty_list()
|
|
1851
|
-
misc_param: Optional[Union[Union[dict,
|
|
1919
|
+
misc_param: Optional[Union[Union[dict, PropertyAssertion], list[Union[dict, PropertyAssertion]]]] = empty_list()
|
|
1852
1920
|
n_alkanes: Optional[Union[Union[dict, TextValue], list[Union[dict, TextValue]]]] = empty_list()
|
|
1853
1921
|
nitrate: Optional[Union[dict, QuantityValue]] = None
|
|
1854
1922
|
nitrite: Optional[Union[dict, QuantityValue]] = None
|
|
@@ -2949,7 +3017,7 @@ class Biosample(Sample):
|
|
|
2949
3017
|
|
|
2950
3018
|
if not isinstance(self.misc_param, list):
|
|
2951
3019
|
self.misc_param = [self.misc_param] if self.misc_param is not None else []
|
|
2952
|
-
self.misc_param = [v if isinstance(v,
|
|
3020
|
+
self.misc_param = [v if isinstance(v, PropertyAssertion) else PropertyAssertion(**as_dict(v)) for v in self.misc_param]
|
|
2953
3021
|
|
|
2954
3022
|
if not isinstance(self.n_alkanes, list):
|
|
2955
3023
|
self.n_alkanes = [self.n_alkanes] if self.n_alkanes is not None else []
|
|
@@ -4008,7 +4076,8 @@ class FieldResearchSite(Site):
|
|
|
4008
4076
|
@dataclass(repr=False)
|
|
4009
4077
|
class Instrument(MaterialEntity):
|
|
4010
4078
|
"""
|
|
4011
|
-
A material entity that is designed to perform a function in a scientific investigation, but is not a reagent.
|
|
4079
|
+
A material entity that is designed to perform a function in a scientific investigation, but is not a reagent. This
|
|
4080
|
+
class models the make and model of the instrument, not the specific instance of the instrument.
|
|
4012
4081
|
"""
|
|
4013
4082
|
_inherited_slots: ClassVar[list[str]] = []
|
|
4014
4083
|
|
|
@@ -4736,6 +4805,8 @@ class Protocol(YAMLRoot):
|
|
|
4736
4805
|
url: Optional[str] = None
|
|
4737
4806
|
name: Optional[str] = None
|
|
4738
4807
|
description: Optional[str] = None
|
|
4808
|
+
protocol_for: Optional[Union[str, "ProtocolForEnum"]] = None
|
|
4809
|
+
analysis_type: Optional[Union[Union[str, "AnalysisTypeEnum"], list[Union[str, "AnalysisTypeEnum"]]]] = empty_list()
|
|
4739
4810
|
|
|
4740
4811
|
def __post_init__(self, *_: str, **kwargs: Any):
|
|
4741
4812
|
if self._is_empty(self.type):
|
|
@@ -4751,6 +4822,13 @@ class Protocol(YAMLRoot):
|
|
|
4751
4822
|
if self.description is not None and not isinstance(self.description, str):
|
|
4752
4823
|
self.description = str(self.description)
|
|
4753
4824
|
|
|
4825
|
+
if self.protocol_for is not None and not isinstance(self.protocol_for, ProtocolForEnum):
|
|
4826
|
+
self.protocol_for = ProtocolForEnum(self.protocol_for)
|
|
4827
|
+
|
|
4828
|
+
if not isinstance(self.analysis_type, list):
|
|
4829
|
+
self.analysis_type = [self.analysis_type] if self.analysis_type is not None else []
|
|
4830
|
+
self.analysis_type = [v if isinstance(v, AnalysisTypeEnum) else AnalysisTypeEnum(v) for v in self.analysis_type]
|
|
4831
|
+
|
|
4754
4832
|
super().__post_init__(**kwargs)
|
|
4755
4833
|
|
|
4756
4834
|
|
|
@@ -6989,6 +7067,9 @@ class UnitEnum(EnumDefinitionImpl):
|
|
|
6989
7067
|
atm = PermissibleValue(
|
|
6990
7068
|
text="atm",
|
|
6991
7069
|
description="The Unified Code for Units of Measure (UCUM) representation of atmosphere.")
|
|
7070
|
+
V = PermissibleValue(
|
|
7071
|
+
text="V",
|
|
7072
|
+
description="The Unified Code for Units of Measure (UCUM) representation of volt.")
|
|
6992
7073
|
mV = PermissibleValue(
|
|
6993
7074
|
text="mV",
|
|
6994
7075
|
description="The Unified Code for Units of Measure (UCUM) representation of millivolt.")
|
|
@@ -8292,6 +8373,46 @@ class FailureWhereEnum(EnumDefinitionImpl):
|
|
|
8292
8373
|
description="""The permitted values for describing where in the process, either a lab or analysis workflow step, the failure occurred.""",
|
|
8293
8374
|
)
|
|
8294
8375
|
|
|
8376
|
+
class ProtocolForEnum(EnumDefinitionImpl):
|
|
8377
|
+
"""
|
|
8378
|
+
The permitted values for describing the type of planned process that a protocol describes.
|
|
8379
|
+
"""
|
|
8380
|
+
AnnotatingWorkflow = PermissibleValue(text="AnnotatingWorkflow")
|
|
8381
|
+
ChemicalConversionProcess = PermissibleValue(text="ChemicalConversionProcess")
|
|
8382
|
+
ChromatographicSeparationProcess = PermissibleValue(text="ChromatographicSeparationProcess")
|
|
8383
|
+
CollectingBiosamplesFromSite = PermissibleValue(text="CollectingBiosamplesFromSite")
|
|
8384
|
+
DataEmitterProcess = PermissibleValue(text="DataEmitterProcess")
|
|
8385
|
+
DataGeneration = PermissibleValue(text="DataGeneration")
|
|
8386
|
+
DissolvingProcess = PermissibleValue(text="DissolvingProcess")
|
|
8387
|
+
Extraction = PermissibleValue(text="Extraction")
|
|
8388
|
+
FiltrationProcess = PermissibleValue(text="FiltrationProcess")
|
|
8389
|
+
LibraryPreparation = PermissibleValue(text="LibraryPreparation")
|
|
8390
|
+
MagsAnalysis = PermissibleValue(text="MagsAnalysis")
|
|
8391
|
+
MassSpectrometry = PermissibleValue(text="MassSpectrometry")
|
|
8392
|
+
MaterialProcessing = PermissibleValue(text="MaterialProcessing")
|
|
8393
|
+
MetabolomicsAnalysis = PermissibleValue(text="MetabolomicsAnalysis")
|
|
8394
|
+
MetagenomeAnnotation = PermissibleValue(text="MetagenomeAnnotation")
|
|
8395
|
+
MetagenomeAssembly = PermissibleValue(text="MetagenomeAssembly")
|
|
8396
|
+
MetaproteomicsAnalysis = PermissibleValue(text="MetaproteomicsAnalysis")
|
|
8397
|
+
MetatranscriptomeAnnotation = PermissibleValue(text="MetatranscriptomeAnnotation")
|
|
8398
|
+
MetatranscriptomeAssembly = PermissibleValue(text="MetatranscriptomeAssembly")
|
|
8399
|
+
MetatranscriptomeExpressionAnalysis = PermissibleValue(text="MetatranscriptomeExpressionAnalysis")
|
|
8400
|
+
MixingProcess = PermissibleValue(text="MixingProcess")
|
|
8401
|
+
NomAnalysis = PermissibleValue(text="NomAnalysis")
|
|
8402
|
+
NucleotideSequencing = PermissibleValue(text="NucleotideSequencing")
|
|
8403
|
+
PlannedProcess = PermissibleValue(text="PlannedProcess")
|
|
8404
|
+
Pooling = PermissibleValue(text="Pooling")
|
|
8405
|
+
ReadBasedTaxonomyAnalysis = PermissibleValue(text="ReadBasedTaxonomyAnalysis")
|
|
8406
|
+
ReadQcAnalysis = PermissibleValue(text="ReadQcAnalysis")
|
|
8407
|
+
StorageProcess = PermissibleValue(text="StorageProcess")
|
|
8408
|
+
SubSamplingProcess = PermissibleValue(text="SubSamplingProcess")
|
|
8409
|
+
WorkflowExecution = PermissibleValue(text="WorkflowExecution")
|
|
8410
|
+
|
|
8411
|
+
_defn = EnumDefinition(
|
|
8412
|
+
name="ProtocolForEnum",
|
|
8413
|
+
description="The permitted values for describing the type of planned process that a protocol describes.",
|
|
8414
|
+
)
|
|
8415
|
+
|
|
8295
8416
|
class ArchStrucEnum(EnumDefinitionImpl):
|
|
8296
8417
|
|
|
8297
8418
|
building = PermissibleValue(text="building")
|
|
@@ -10932,7 +11053,7 @@ slots.has_raw_value = Slot(uri=NMDC['attribute_values/has_raw_value'], name="has
|
|
|
10932
11053
|
model_uri=NMDC.has_raw_value, domain=None, range=Optional[str])
|
|
10933
11054
|
|
|
10934
11055
|
slots.has_unit = Slot(uri=NMDC['attribute_values/has_unit'], name="has_unit", curie=NMDC.curie('attribute_values/has_unit'),
|
|
10935
|
-
model_uri=NMDC.has_unit, domain=None, range=
|
|
11056
|
+
model_uri=NMDC.has_unit, domain=None, range=Optional[str], mappings = [QUD["unit"], SCHEMA["unitCode"]])
|
|
10936
11057
|
|
|
10937
11058
|
slots.type = Slot(uri=RDF.type, name="type", curie=RDF.curie('type'),
|
|
10938
11059
|
model_uri=NMDC.type, domain=None, range=Union[str, URIorCURIE])
|
|
@@ -10959,6 +11080,21 @@ slots.websites = Slot(uri=NMDC['attribute_values/websites'], name="websites", cu
|
|
|
10959
11080
|
model_uri=NMDC.websites, domain=None, range=Optional[Union[str, list[str]]],
|
|
10960
11081
|
pattern=re.compile(r'^[Hh][Tt][Tt][Pp][Ss]?:\/\/(?!.*[Dd][Oo][Ii]\.[Oo][Rr][Gg]).*$'))
|
|
10961
11082
|
|
|
11083
|
+
slots.has_attribute_label = Slot(uri=NMDC['attribute_values/has_attribute_label'], name="has_attribute_label", curie=NMDC.curie('attribute_values/has_attribute_label'),
|
|
11084
|
+
model_uri=NMDC.has_attribute_label, domain=None, range=Optional[str])
|
|
11085
|
+
|
|
11086
|
+
slots.has_attribute_id = Slot(uri=NMDC['attribute_values/has_attribute_id'], name="has_attribute_id", curie=NMDC.curie('attribute_values/has_attribute_id'),
|
|
11087
|
+
model_uri=NMDC.has_attribute_id, domain=None, range=Optional[Union[str, URIorCURIE]])
|
|
11088
|
+
|
|
11089
|
+
slots.has_quantity_kind_id = Slot(uri=NMDC['attribute_values/has_quantity_kind_id'], name="has_quantity_kind_id", curie=NMDC.curie('attribute_values/has_quantity_kind_id'),
|
|
11090
|
+
model_uri=NMDC.has_quantity_kind_id, domain=None, range=Optional[Union[str, URIorCURIE]])
|
|
11091
|
+
|
|
11092
|
+
slots.has_value_term_id = Slot(uri=NMDC['attribute_values/has_value_term_id'], name="has_value_term_id", curie=NMDC.curie('attribute_values/has_value_term_id'),
|
|
11093
|
+
model_uri=NMDC.has_value_term_id, domain=None, range=Optional[Union[str, URIorCURIE]])
|
|
11094
|
+
|
|
11095
|
+
slots.has_datetime_value = Slot(uri=NMDC['attribute_values/has_datetime_value'], name="has_datetime_value", curie=NMDC.curie('attribute_values/has_datetime_value'),
|
|
11096
|
+
model_uri=NMDC.has_datetime_value, domain=None, range=Optional[str])
|
|
11097
|
+
|
|
10962
11098
|
slots.processing_institution_workflow_metadata = Slot(uri=NMDC.processing_institution_workflow_metadata, name="processing_institution_workflow_metadata", curie=NMDC.curie('processing_institution_workflow_metadata'),
|
|
10963
11099
|
model_uri=NMDC.processing_institution_workflow_metadata, domain=None, range=Optional[str], mappings = [NCIT["C165211"]])
|
|
10964
11100
|
|
|
@@ -11210,6 +11346,9 @@ slots.qc_failure_where = Slot(uri=NMDC['basic_classes/qc_failure_where'], name="
|
|
|
11210
11346
|
slots.qc_failure_what = Slot(uri=NMDC['basic_classes/qc_failure_what'], name="qc_failure_what", curie=NMDC.curie('basic_classes/qc_failure_what'),
|
|
11211
11347
|
model_uri=NMDC.qc_failure_what, domain=None, range=Optional[Union[str, "FailureWhatEnum"]])
|
|
11212
11348
|
|
|
11349
|
+
slots.protocol_for = Slot(uri=NMDC['basic_classes/protocol_for'], name="protocol_for", curie=NMDC.curie('basic_classes/protocol_for'),
|
|
11350
|
+
model_uri=NMDC.protocol_for, domain=None, range=Optional[Union[str, "ProtocolForEnum"]])
|
|
11351
|
+
|
|
11213
11352
|
slots.emsl_store_temp = Slot(uri=NMDC.emsl_store_temp, name="emsl_store_temp", curie=NMDC.curie('emsl_store_temp'),
|
|
11214
11353
|
model_uri=NMDC.emsl_store_temp, domain=None, range=Optional[str])
|
|
11215
11354
|
|
|
@@ -12143,7 +12282,7 @@ slots.mineral_nutr_regm = Slot(uri=MIXS['0000570'], name="mineral_nutr_regm", cu
|
|
|
12143
12282
|
model_uri=NMDC.mineral_nutr_regm, domain=None, range=Optional[Union[Union[dict, TextValue], list[Union[dict, TextValue]]]])
|
|
12144
12283
|
|
|
12145
12284
|
slots.misc_param = Slot(uri=MIXS['0000752'], name="misc_param", curie=MIXS.curie('0000752'),
|
|
12146
|
-
model_uri=NMDC.misc_param, domain=None, range=Optional[Union[Union[dict,
|
|
12285
|
+
model_uri=NMDC.misc_param, domain=None, range=Optional[Union[Union[dict, PropertyAssertion], list[Union[dict, PropertyAssertion]]]])
|
|
12147
12286
|
|
|
12148
12287
|
slots.n_alkanes = Slot(uri=MIXS['0000503'], name="n_alkanes", curie=MIXS.curie('0000503'),
|
|
12149
12288
|
model_uri=NMDC.n_alkanes, domain=None, range=Optional[Union[Union[dict, TextValue], list[Union[dict, TextValue]]]])
|
|
@@ -13318,9 +13457,6 @@ slots.Biosample_al_sat = Slot(uri=MIXS['0000607'], name="Biosample_al_sat", curi
|
|
|
13318
13457
|
slots.Biosample_al_sat_meth = Slot(uri=MIXS['0000324'], name="Biosample_al_sat_meth", curie=MIXS.curie('0000324'),
|
|
13319
13458
|
model_uri=NMDC.Biosample_al_sat_meth, domain=Biosample, range=Optional[Union[dict, TextValue]])
|
|
13320
13459
|
|
|
13321
|
-
slots.Biosample_annual_precpt = Slot(uri=MIXS['0000644'], name="Biosample_annual_precpt", curie=MIXS.curie('0000644'),
|
|
13322
|
-
model_uri=NMDC.Biosample_annual_precpt, domain=Biosample, range=Optional[Union[dict, QuantityValue]])
|
|
13323
|
-
|
|
13324
13460
|
slots.Biosample_cur_vegetation = Slot(uri=MIXS['0000312'], name="Biosample_cur_vegetation", curie=MIXS.curie('0000312'),
|
|
13325
13461
|
model_uri=NMDC.Biosample_cur_vegetation, domain=Biosample, range=Optional[Union[dict, TextValue]])
|
|
13326
13462
|
|
|
@@ -13351,9 +13487,6 @@ slots.Biosample_tot_carb = Slot(uri=MIXS['0000525'], name="Biosample_tot_carb",
|
|
|
13351
13487
|
slots.Biosample_tot_nitro_cont_meth = Slot(uri=MIXS['0000338'], name="Biosample_tot_nitro_cont_meth", curie=MIXS.curie('0000338'),
|
|
13352
13488
|
model_uri=NMDC.Biosample_tot_nitro_cont_meth, domain=Biosample, range=Optional[str])
|
|
13353
13489
|
|
|
13354
|
-
slots.Biosample_tot_nitro_content = Slot(uri=MIXS['0000530'], name="Biosample_tot_nitro_content", curie=MIXS.curie('0000530'),
|
|
13355
|
-
model_uri=NMDC.Biosample_tot_nitro_content, domain=Biosample, range=Optional[Union[dict, QuantityValue]])
|
|
13356
|
-
|
|
13357
13490
|
slots.Biosample_tot_org_c_meth = Slot(uri=MIXS['0000337'], name="Biosample_tot_org_c_meth", curie=MIXS.curie('0000337'),
|
|
13358
13491
|
model_uri=NMDC.Biosample_tot_org_c_meth, domain=Biosample, range=Optional[Union[dict, TextValue]])
|
|
13359
13492
|
|
|
@@ -13421,6 +13554,12 @@ slots.GeolocationValue_latitude = Slot(uri=WGS84.lat, name="GeolocationValue_lat
|
|
|
13421
13554
|
slots.GeolocationValue_longitude = Slot(uri=WGS84.long, name="GeolocationValue_longitude", curie=WGS84.curie('long'),
|
|
13422
13555
|
model_uri=NMDC.GeolocationValue_longitude, domain=GeolocationValue, range=float, mappings = [SCHEMA["longitude"]])
|
|
13423
13556
|
|
|
13557
|
+
slots.PropertyAssertion_has_raw_value = Slot(uri=NMDC['attribute_values/has_raw_value'], name="PropertyAssertion_has_raw_value", curie=NMDC.curie('attribute_values/has_raw_value'),
|
|
13558
|
+
model_uri=NMDC.PropertyAssertion_has_raw_value, domain=PropertyAssertion, range=str)
|
|
13559
|
+
|
|
13560
|
+
slots.PropertyAssertion_has_unit = Slot(uri=NMDC['attribute_values/has_unit'], name="PropertyAssertion_has_unit", curie=NMDC.curie('attribute_values/has_unit'),
|
|
13561
|
+
model_uri=NMDC.PropertyAssertion_has_unit, domain=PropertyAssertion, range=Optional[str], mappings = [QUD["unit"], SCHEMA["unitCode"]])
|
|
13562
|
+
|
|
13424
13563
|
slots.OntologyClass_id = Slot(uri=NMDC.id, name="OntologyClass_id", curie=NMDC.curie('id'),
|
|
13425
13564
|
model_uri=NMDC.OntologyClass_id, domain=OntologyClass, range=Union[str, OntologyClassId],
|
|
13426
13565
|
pattern=re.compile(r'^[a-zA-Z0-9][a-zA-Z0-9_\.]+:[a-zA-Z0-9_][a-zA-Z0-9_\-\/\.,]*$'))
|
nmdc_schema/nmdc.schema.json
CHANGED
|
@@ -2647,9 +2647,9 @@
|
|
|
2647
2647
|
]
|
|
2648
2648
|
},
|
|
2649
2649
|
"misc_param": {
|
|
2650
|
-
"description": "
|
|
2650
|
+
"description": "Structured miscellaneous property assertions for this Biosample. Use when a value cannot cleanly fit an existing, policy-governed slot.",
|
|
2651
2651
|
"items": {
|
|
2652
|
-
"$ref": "#/$defs/
|
|
2652
|
+
"$ref": "#/$defs/PropertyAssertion"
|
|
2653
2653
|
},
|
|
2654
2654
|
"type": [
|
|
2655
2655
|
"array",
|
|
@@ -8515,7 +8515,7 @@
|
|
|
8515
8515
|
},
|
|
8516
8516
|
"Instrument": {
|
|
8517
8517
|
"additionalProperties": false,
|
|
8518
|
-
"description": "A material entity that is designed to perform a function in a scientific investigation, but is not a reagent.",
|
|
8518
|
+
"description": "A material entity that is designed to perform a function in a scientific investigation, but is not a reagent. This class models the make and model of the instrument, not the specific instance of the instrument.",
|
|
8519
8519
|
"properties": {
|
|
8520
8520
|
"alternative_identifiers": {
|
|
8521
8521
|
"description": "A list of alternative identifiers for the entity.",
|
|
@@ -13128,10 +13128,113 @@
|
|
|
13128
13128
|
"title": "ProfilePositionEnum",
|
|
13129
13129
|
"type": "string"
|
|
13130
13130
|
},
|
|
13131
|
+
"PropertyAssertion": {
|
|
13132
|
+
"additionalProperties": false,
|
|
13133
|
+
"description": "A structured record of data that doesn't fit nicely within the constraints of other NMDC AttributeValues. Uses primitive ranges only.",
|
|
13134
|
+
"properties": {
|
|
13135
|
+
"has_attribute_id": {
|
|
13136
|
+
"description": "CURIE or IRI for the property (MIxS slot, NMDC slot, ENVO/OBI term, etc.).",
|
|
13137
|
+
"type": [
|
|
13138
|
+
"string",
|
|
13139
|
+
"null"
|
|
13140
|
+
]
|
|
13141
|
+
},
|
|
13142
|
+
"has_attribute_label": {
|
|
13143
|
+
"description": "Human-readable label for the property (e.g., MIxS label, ENVO term label).",
|
|
13144
|
+
"type": [
|
|
13145
|
+
"string",
|
|
13146
|
+
"null"
|
|
13147
|
+
]
|
|
13148
|
+
},
|
|
13149
|
+
"has_boolean_value": {
|
|
13150
|
+
"description": "Links a quantity value to a boolean",
|
|
13151
|
+
"type": [
|
|
13152
|
+
"boolean",
|
|
13153
|
+
"null"
|
|
13154
|
+
]
|
|
13155
|
+
},
|
|
13156
|
+
"has_datetime_value": {
|
|
13157
|
+
"description": "Date-time value for the property in ISO-8601 format.",
|
|
13158
|
+
"type": [
|
|
13159
|
+
"string",
|
|
13160
|
+
"null"
|
|
13161
|
+
]
|
|
13162
|
+
},
|
|
13163
|
+
"has_maximum_numeric_value": {
|
|
13164
|
+
"description": "The maximum value part, expressed as number, of the quantity value when the value covers a range.",
|
|
13165
|
+
"type": [
|
|
13166
|
+
"number",
|
|
13167
|
+
"null"
|
|
13168
|
+
]
|
|
13169
|
+
},
|
|
13170
|
+
"has_minimum_numeric_value": {
|
|
13171
|
+
"description": "The minimum value part, expressed as number, of the quantity value when the value covers a range.",
|
|
13172
|
+
"type": [
|
|
13173
|
+
"number",
|
|
13174
|
+
"null"
|
|
13175
|
+
]
|
|
13176
|
+
},
|
|
13177
|
+
"has_numeric_value": {
|
|
13178
|
+
"description": "Links a quantity value to a number",
|
|
13179
|
+
"type": [
|
|
13180
|
+
"number",
|
|
13181
|
+
"null"
|
|
13182
|
+
]
|
|
13183
|
+
},
|
|
13184
|
+
"has_quantity_kind_id": {
|
|
13185
|
+
"description": "Optional CURIE or IRI for the physical quantity kind (e.g., qudt:QuantityKind).",
|
|
13186
|
+
"type": [
|
|
13187
|
+
"string",
|
|
13188
|
+
"null"
|
|
13189
|
+
]
|
|
13190
|
+
},
|
|
13191
|
+
"has_raw_value": {
|
|
13192
|
+
"description": "Original contributor string representation (unparsed)",
|
|
13193
|
+
"type": "string"
|
|
13194
|
+
},
|
|
13195
|
+
"has_unit": {
|
|
13196
|
+
"description": "UCUM unit code (required only when numeric value is present)",
|
|
13197
|
+
"type": [
|
|
13198
|
+
"string",
|
|
13199
|
+
"null"
|
|
13200
|
+
]
|
|
13201
|
+
},
|
|
13202
|
+
"has_value_term_id": {
|
|
13203
|
+
"description": "CURIE or IRI for categorical values (ENVO, PATO, METPO, etc.).",
|
|
13204
|
+
"type": [
|
|
13205
|
+
"string",
|
|
13206
|
+
"null"
|
|
13207
|
+
]
|
|
13208
|
+
},
|
|
13209
|
+
"type": {
|
|
13210
|
+
"description": "the class_uri of the class that has been instantiated",
|
|
13211
|
+
"enum": [
|
|
13212
|
+
"nmdc:PropertyAssertion"
|
|
13213
|
+
],
|
|
13214
|
+
"type": "string"
|
|
13215
|
+
}
|
|
13216
|
+
},
|
|
13217
|
+
"required": [
|
|
13218
|
+
"has_raw_value",
|
|
13219
|
+
"type"
|
|
13220
|
+
],
|
|
13221
|
+
"title": "PropertyAssertion",
|
|
13222
|
+
"type": "object"
|
|
13223
|
+
},
|
|
13131
13224
|
"Protocol": {
|
|
13132
13225
|
"additionalProperties": false,
|
|
13133
13226
|
"description": "",
|
|
13134
13227
|
"properties": {
|
|
13228
|
+
"analysis_type": {
|
|
13229
|
+
"description": "Select all the data types associated or available for this biosample",
|
|
13230
|
+
"items": {
|
|
13231
|
+
"$ref": "#/$defs/AnalysisTypeEnum"
|
|
13232
|
+
},
|
|
13233
|
+
"type": [
|
|
13234
|
+
"array",
|
|
13235
|
+
"null"
|
|
13236
|
+
]
|
|
13237
|
+
},
|
|
13135
13238
|
"description": {
|
|
13136
13239
|
"description": "a human-readable description of a thing",
|
|
13137
13240
|
"type": [
|
|
@@ -13146,6 +13249,10 @@
|
|
|
13146
13249
|
"null"
|
|
13147
13250
|
]
|
|
13148
13251
|
},
|
|
13252
|
+
"protocol_for": {
|
|
13253
|
+
"$ref": "#/$defs/ProtocolForEnum",
|
|
13254
|
+
"description": "The type of planned process that the protocol describes."
|
|
13255
|
+
},
|
|
13149
13256
|
"type": {
|
|
13150
13257
|
"description": "the class_uri of the class that has been instantiated",
|
|
13151
13258
|
"enum": [
|
|
@@ -13184,6 +13291,43 @@
|
|
|
13184
13291
|
"title": "ProtocolCategoryEnum",
|
|
13185
13292
|
"type": "string"
|
|
13186
13293
|
},
|
|
13294
|
+
"ProtocolForEnum": {
|
|
13295
|
+
"description": "The permitted values for describing the type of planned process that a protocol describes.",
|
|
13296
|
+
"enum": [
|
|
13297
|
+
"AnnotatingWorkflow",
|
|
13298
|
+
"ChemicalConversionProcess",
|
|
13299
|
+
"ChromatographicSeparationProcess",
|
|
13300
|
+
"CollectingBiosamplesFromSite",
|
|
13301
|
+
"DataEmitterProcess",
|
|
13302
|
+
"DataGeneration",
|
|
13303
|
+
"DissolvingProcess",
|
|
13304
|
+
"Extraction",
|
|
13305
|
+
"FiltrationProcess",
|
|
13306
|
+
"LibraryPreparation",
|
|
13307
|
+
"MagsAnalysis",
|
|
13308
|
+
"MassSpectrometry",
|
|
13309
|
+
"MaterialProcessing",
|
|
13310
|
+
"MetabolomicsAnalysis",
|
|
13311
|
+
"MetagenomeAnnotation",
|
|
13312
|
+
"MetagenomeAssembly",
|
|
13313
|
+
"MetaproteomicsAnalysis",
|
|
13314
|
+
"MetatranscriptomeAnnotation",
|
|
13315
|
+
"MetatranscriptomeAssembly",
|
|
13316
|
+
"MetatranscriptomeExpressionAnalysis",
|
|
13317
|
+
"MixingProcess",
|
|
13318
|
+
"NomAnalysis",
|
|
13319
|
+
"NucleotideSequencing",
|
|
13320
|
+
"PlannedProcess",
|
|
13321
|
+
"Pooling",
|
|
13322
|
+
"ReadBasedTaxonomyAnalysis",
|
|
13323
|
+
"ReadQcAnalysis",
|
|
13324
|
+
"StorageProcess",
|
|
13325
|
+
"SubSamplingProcess",
|
|
13326
|
+
"WorkflowExecution"
|
|
13327
|
+
],
|
|
13328
|
+
"title": "ProtocolForEnum",
|
|
13329
|
+
"type": "string"
|
|
13330
|
+
},
|
|
13187
13331
|
"QuadPosEnum": {
|
|
13188
13332
|
"description": "",
|
|
13189
13333
|
"enum": [
|
|
@@ -15022,6 +15166,7 @@
|
|
|
15022
15166
|
"g/m3",
|
|
15023
15167
|
"m2",
|
|
15024
15168
|
"atm",
|
|
15169
|
+
"V",
|
|
15025
15170
|
"mV",
|
|
15026
15171
|
"L",
|
|
15027
15172
|
"um",
|
|
@@ -15578,5 +15723,5 @@
|
|
|
15578
15723
|
},
|
|
15579
15724
|
"title": "NMDC",
|
|
15580
15725
|
"type": "object",
|
|
15581
|
-
"version": "11.12.
|
|
15726
|
+
"version": "11.12.1"
|
|
15582
15727
|
}
|