mhd-model 0.1.40__tar.gz → 0.1.42__tar.gz

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 (104) hide show
  1. {mhd_model-0.1.40 → mhd_model-0.1.42}/PKG-INFO +1 -1
  2. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model/__init__.py +1 -1
  3. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model/convertors/announcement/v0_1/legacy/mhd2announce.py +5 -3
  4. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model/convertors/announcement/v0_1/ms/mhd2announce.py +8 -3
  5. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model/model/v0_1/dataset/profiles/base/graph_nodes.py +2 -0
  6. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model/model/v0_1/dataset/profiles/base/graph_validation.py +48 -0
  7. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model/model/v0_1/dataset/profiles/legacy/graph_validation.py +48 -0
  8. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model/model/v0_1/dataset/profiles/ms/graph_validation.py +48 -0
  9. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model/schemas/mhd/announcement-v0.1.legacy-profile.json +1 -1
  10. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model/schemas/mhd/announcement-v0.1.ms-profile.json +1 -1
  11. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model/schemas/mhd/announcement-v0.1.schema.json +1 -1
  12. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model/schemas/mhd/common-data-model-v0.1.legacy-profile.json +25 -1
  13. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model/schemas/mhd/common-data-model-v0.1.ms-profile.json +25 -1
  14. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model/schemas/mhd/common-data-model-v0.1.schema.json +25 -1
  15. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model.egg-info/PKG-INFO +1 -1
  16. {mhd_model-0.1.40 → mhd_model-0.1.42}/pyproject.toml +2 -2
  17. {mhd_model-0.1.40 → mhd_model-0.1.42}/LICENSE +0 -0
  18. {mhd_model-0.1.40 → mhd_model-0.1.42}/README.md +0 -0
  19. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model/commands/__init__.py +0 -0
  20. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model/commands/cli.py +0 -0
  21. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model/commands/create/__init__.py +0 -0
  22. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model/commands/create/announcement.py +0 -0
  23. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model/commands/create/create.py +0 -0
  24. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model/commands/create/neo4j_input.py +0 -0
  25. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model/commands/create/sdrf.py +0 -0
  26. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model/commands/validate/__init__.py +0 -0
  27. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model/commands/validate/announcement.py +0 -0
  28. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model/commands/validate/mhd_file.py +0 -0
  29. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model/commands/validate/validate.py +0 -0
  30. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model/convertors/__init__.py +0 -0
  31. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model/convertors/announcement/__init__.py +0 -0
  32. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model/convertors/announcement/v0_1/__init__.py +0 -0
  33. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model/convertors/announcement/v0_1/legacy/__init__.py +0 -0
  34. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model/convertors/announcement/v0_1/ms/__init__.py +0 -0
  35. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model/convertors/mhd/__init__.py +0 -0
  36. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model/convertors/mhd/convertor.py +0 -0
  37. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model/convertors/neo4j_enabled_data/__init__.py +0 -0
  38. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model/convertors/neo4j_enabled_data/v0_1/__init__.py +0 -0
  39. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model/convertors/neo4j_enabled_data/v0_1/legacy/__init__.py +0 -0
  40. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model/convertors/neo4j_enabled_data/v0_1/legacy/convertor.py +0 -0
  41. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model/convertors/sdrf/__init__.py +0 -0
  42. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model/convertors/sdrf/mhd2sdrf.py +0 -0
  43. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model/domain_utils.py +0 -0
  44. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model/log_utils.py +0 -0
  45. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model/mhd_client.py +0 -0
  46. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model/model/__init__.py +0 -0
  47. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model/model/definitions.py +0 -0
  48. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model/model/v0_1/__init__.py +0 -0
  49. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model/model/v0_1/announcement/__init__.py +0 -0
  50. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model/model/v0_1/announcement/profiles/__init__.py +0 -0
  51. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model/model/v0_1/announcement/profiles/base/__init__.py +0 -0
  52. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model/model/v0_1/announcement/profiles/base/profile.py +0 -0
  53. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model/model/v0_1/announcement/profiles/legacy/__init__.py +0 -0
  54. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model/model/v0_1/announcement/profiles/legacy/profile.py +0 -0
  55. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model/model/v0_1/announcement/profiles/ms/__init__.py +0 -0
  56. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model/model/v0_1/announcement/profiles/ms/fields.py +0 -0
  57. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model/model/v0_1/announcement/profiles/ms/profile.py +0 -0
  58. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model/model/v0_1/announcement/validation/__init__.py +0 -0
  59. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model/model/v0_1/announcement/validation/base.py +0 -0
  60. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model/model/v0_1/announcement/validation/definitions.py +0 -0
  61. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model/model/v0_1/announcement/validation/validator.py +0 -0
  62. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model/model/v0_1/dataset/__init__.py +0 -0
  63. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model/model/v0_1/dataset/profiles/__init__.py +0 -0
  64. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model/model/v0_1/dataset/profiles/base/__init__.py +0 -0
  65. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model/model/v0_1/dataset/profiles/base/base.py +0 -0
  66. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model/model/v0_1/dataset/profiles/base/dataset_builder.py +0 -0
  67. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model/model/v0_1/dataset/profiles/base/profile.py +0 -0
  68. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model/model/v0_1/dataset/profiles/base/relationships.py +0 -0
  69. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model/model/v0_1/dataset/profiles/legacy/__init__.py +0 -0
  70. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model/model/v0_1/dataset/profiles/legacy/profile.py +0 -0
  71. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model/model/v0_1/dataset/profiles/ms/__init__.py +0 -0
  72. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model/model/v0_1/dataset/profiles/ms/profile.py +0 -0
  73. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model/model/v0_1/dataset/validation/__init__.py +0 -0
  74. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model/model/v0_1/dataset/validation/base.py +0 -0
  75. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model/model/v0_1/dataset/validation/profile/__init__.py +0 -0
  76. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model/model/v0_1/dataset/validation/profile/base.py +0 -0
  77. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model/model/v0_1/dataset/validation/profile/definition.py +0 -0
  78. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model/model/v0_1/dataset/validation/utils.py +0 -0
  79. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model/model/v0_1/dataset/validation/validator.py +0 -0
  80. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model/model/v0_1/rules/__init__.py +0 -0
  81. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model/model/v0_1/rules/cv_definitions.py +0 -0
  82. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model/model/v0_1/rules/managed_cv_terms.py +0 -0
  83. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model/model/v0_1/rules/predefined_cv_terms.py +0 -0
  84. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model/model/v0_1/sdrf/__init__.py +0 -0
  85. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model/model/v0_1/sdrf/model.py +0 -0
  86. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model/schema_utils.py +0 -0
  87. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model/schemas/__init__.py +0 -0
  88. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model/schemas/mhd/__init__.py +0 -0
  89. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model/shared/__init__.py +0 -0
  90. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model/shared/exceptions.py +0 -0
  91. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model/shared/fields.py +0 -0
  92. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model/shared/model.py +0 -0
  93. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model/shared/validation/__init__.py +0 -0
  94. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model/shared/validation/cv_term_helper.py +0 -0
  95. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model/shared/validation/definitions.py +0 -0
  96. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model/shared/validation/registry.py +0 -0
  97. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model/shared/validation/validators.py +0 -0
  98. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model/utils.py +0 -0
  99. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model.egg-info/SOURCES.txt +0 -0
  100. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model.egg-info/dependency_links.txt +0 -0
  101. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model.egg-info/entry_points.txt +0 -0
  102. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model.egg-info/requires.txt +0 -0
  103. {mhd_model-0.1.40 → mhd_model-0.1.42}/mhd_model.egg-info/top_level.txt +0 -0
  104. {mhd_model-0.1.40 → mhd_model-0.1.42}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mhd-model
3
- Version: 0.1.40
3
+ Version: 0.1.42
4
4
  Summary: MetabolomicsHub Common Data Model
5
5
  Author-email: MetabolomicsHub Team <help@metabolomicshub.org>
6
6
  License-Expression: Apache-2.0
@@ -1,7 +1,7 @@
1
1
  import pathlib
2
2
  import sys
3
3
 
4
- __version__ = "v0.1.40"
4
+ __version__ = "v0.1.42"
5
5
 
6
6
  application_root_path = pathlib.Path(__file__).parent.parent
7
7
 
@@ -339,9 +339,9 @@ def create_announcement_file(
339
339
  characteristic_values = get_characteristic_values(all_nodes_map, relationships_map)
340
340
 
341
341
  if not mhd_file_url:
342
- ftp = [str(x) for x in study.dataset_url_list if str(x).startswith("ftp://")]
343
- if ftp:
344
- mhd_file_url = f"{ftp[0]}/{study.repository_identifier}.mhd.json"
342
+ http = [str(x) for x in study.dataset_url_list if str(x).startswith("http://")]
343
+ if http:
344
+ mhd_file_url = f"{http[0]}/{study.repository_identifier}.mhd.json"
345
345
 
346
346
  announcement = AnnouncementLegacyProfile(
347
347
  repository_name=mhd_dataset.repository_name,
@@ -349,6 +349,8 @@ def create_announcement_file(
349
349
  repository_identifier=study.repository_identifier,
350
350
  schema_name=announcement_schema_name,
351
351
  profile_uri=announcement_profile_uri,
352
+ revision=mhd_dataset.repository_revision,
353
+ revision_datetime=mhd_dataset.repository_revision_datetime,
352
354
  mhd_metadata_file_url=AnyUrl(mhd_file_url),
353
355
  dataset_url_list=dataset_url_list,
354
356
  license=study.license,
@@ -261,8 +261,12 @@ def create_announcement_file(
261
261
  announcement_profile_uri=ANNOUNCEMENT_FILE_V0_1_LEGACY_PROFILE_NAME,
262
262
  ):
263
263
  mhd_dataset = MhDatasetMsProfile.model_validate(mhd_file)
264
- nodes_map = {x.id_: x for x in mhd_dataset.graph.nodes}
265
- relationships_map = {x.id_: x for x in mhd_dataset.graph.relationships}
264
+ nodes_map: dict[str, IdentifiableMhdModel] = {
265
+ x.id_: x for x in mhd_dataset.graph.nodes
266
+ }
267
+ relationships_map: dict[str, BaseMhdRelationship] = {
268
+ x.id_: x for x in mhd_dataset.graph.relationships
269
+ }
266
270
 
267
271
  all_nodes_map: dict[str, BaseMhdModel] = {}
268
272
  type_map: dict[str, dict[str, BaseMhdModel]] = {}
@@ -279,7 +283,7 @@ def create_announcement_file(
279
283
  relationship_name_map[rel.relationship_name][rel.id_] = rel
280
284
 
281
285
  if "study" not in type_map:
282
- logger.info("Study not found for in input file")
286
+ logger.error("Study not found for in the input file")
283
287
  return
284
288
  study: graph_nodes.Study = list(type_map["study"].values())[0]
285
289
 
@@ -293,6 +297,7 @@ def create_announcement_file(
293
297
  type_map["publication"].values()
294
298
  )
295
299
  for node in graph_publications:
300
+ relationships_map.get()
296
301
  item = AnnouncementPublication.model_validate(
297
302
  node.model_dump(by_alias=True)
298
303
  )
@@ -32,6 +32,7 @@ class Person(BaseLabeledMhdModel):
32
32
  description="The value of this property MUST be 'person'",
33
33
  ),
34
34
  ] = "person"
35
+ repository_identifier: Annotated[None | str, Field()] = None
35
36
  full_name: Annotated[
36
37
  None | str, Field(min_length=2, description="Full name of person")
37
38
  ] = None
@@ -91,6 +92,7 @@ class Project(BaseLabeledMhdModel):
91
92
  ),
92
93
  ] = "project"
93
94
  title: Annotated[None | str, Field(min_length=2)] = None
95
+ repository_identifier: Annotated[None | str, Field()] = None
94
96
  description: Annotated[None | str, Field()] = None
95
97
  grant_identifier_list: Annotated[None | list[GrantId], Field()] = None
96
98
  doi: Annotated[None | DOI, Field()] = None
@@ -339,6 +339,14 @@ MHD_BASE_VALIDATION_V0_1.mhd_nodes = [
339
339
  min=0,
340
340
  min_for_each_source=0,
341
341
  ),
342
+ RelationshipValidation(
343
+ source="metadata-file",
344
+ relationship_name="reports",
345
+ reverse_relationship_name="reported-in",
346
+ target="metabolite",
347
+ min=0,
348
+ min_for_each_source=0,
349
+ ),
342
350
  ],
343
351
  ),
344
352
  NodeValidation(
@@ -376,6 +384,30 @@ MHD_BASE_VALIDATION_V0_1.mhd_nodes = [
376
384
  min=0,
377
385
  min_for_each_source=1,
378
386
  ),
387
+ RelationshipValidation(
388
+ source="metabolite",
389
+ relationship_name="reported-in",
390
+ reverse_relationship_name="reports",
391
+ target="metadata-file",
392
+ min=0,
393
+ min_for_each_source=0,
394
+ ),
395
+ RelationshipValidation(
396
+ source="metabolite",
397
+ relationship_name="reported-in",
398
+ reverse_relationship_name="reports",
399
+ target="result-file",
400
+ min=0,
401
+ min_for_each_source=0,
402
+ ),
403
+ RelationshipValidation(
404
+ source="metabolite",
405
+ relationship_name="measured-in",
406
+ reverse_relationship_name="measures",
407
+ target="raw-data-file",
408
+ min=0,
409
+ min_for_each_source=0,
410
+ ),
379
411
  ],
380
412
  ),
381
413
  NodeValidation(
@@ -777,6 +809,14 @@ MHD_BASE_VALIDATION_V0_1.mhd_nodes = [
777
809
  min=0,
778
810
  min_for_each_source=0,
779
811
  ),
812
+ RelationshipValidation(
813
+ source="raw-data-file",
814
+ relationship_name="measures",
815
+ reverse_relationship_name="measured-in",
816
+ target="metabolite",
817
+ min=0,
818
+ min_for_each_source=0,
819
+ ),
780
820
  ],
781
821
  ),
782
822
  NodeValidation(
@@ -819,6 +859,14 @@ MHD_BASE_VALIDATION_V0_1.mhd_nodes = [
819
859
  min=0,
820
860
  min_for_each_source=0,
821
861
  ),
862
+ RelationshipValidation(
863
+ source="result-file",
864
+ relationship_name="reports",
865
+ reverse_relationship_name="reported-in",
866
+ target="metabolite",
867
+ min=0,
868
+ min_for_each_source=0,
869
+ ),
822
870
  ],
823
871
  ),
824
872
  NodeValidation(
@@ -333,6 +333,14 @@ MHD_LEGACY_PROFILE_V0_1.mhd_nodes = [
333
333
  min=0,
334
334
  min_for_each_source=0,
335
335
  ),
336
+ RelationshipValidation(
337
+ source="metadata-file",
338
+ relationship_name="reports",
339
+ reverse_relationship_name="reported-in",
340
+ target="metabolite",
341
+ min=0,
342
+ min_for_each_source=0,
343
+ ),
336
344
  ],
337
345
  ),
338
346
  NodeValidation(
@@ -370,6 +378,30 @@ MHD_LEGACY_PROFILE_V0_1.mhd_nodes = [
370
378
  min=0,
371
379
  min_for_each_source=1,
372
380
  ),
381
+ RelationshipValidation(
382
+ source="metabolite",
383
+ relationship_name="reported-in",
384
+ reverse_relationship_name="reports",
385
+ target="metadata-file",
386
+ min=0,
387
+ min_for_each_source=0,
388
+ ),
389
+ RelationshipValidation(
390
+ source="metabolite",
391
+ relationship_name="reported-in",
392
+ reverse_relationship_name="reports",
393
+ target="result-file",
394
+ min=0,
395
+ min_for_each_source=0,
396
+ ),
397
+ RelationshipValidation(
398
+ source="metabolite",
399
+ relationship_name="measured-in",
400
+ reverse_relationship_name="measures",
401
+ target="raw-data-file",
402
+ min=0,
403
+ min_for_each_source=0,
404
+ ),
373
405
  ],
374
406
  ),
375
407
  NodeValidation(
@@ -771,6 +803,14 @@ MHD_LEGACY_PROFILE_V0_1.mhd_nodes = [
771
803
  min=0,
772
804
  min_for_each_source=0,
773
805
  ),
806
+ RelationshipValidation(
807
+ source="raw-data-file",
808
+ relationship_name="measures",
809
+ reverse_relationship_name="measured-in",
810
+ target="metabolite",
811
+ min=0,
812
+ min_for_each_source=0,
813
+ ),
774
814
  ],
775
815
  ),
776
816
  NodeValidation(
@@ -818,6 +858,14 @@ MHD_LEGACY_PROFILE_V0_1.mhd_nodes = [
818
858
  min=0,
819
859
  min_for_each_source=0,
820
860
  ),
861
+ RelationshipValidation(
862
+ source="result-file",
863
+ relationship_name="reports",
864
+ reverse_relationship_name="reported-in",
865
+ target="metabolite",
866
+ min=0,
867
+ min_for_each_source=0,
868
+ ),
821
869
  ],
822
870
  ),
823
871
  NodeValidation(
@@ -337,6 +337,14 @@ MHD_MS_PROFILE_V0_1.mhd_nodes = [
337
337
  min=0,
338
338
  min_for_each_source=0,
339
339
  ),
340
+ RelationshipValidation(
341
+ source="metadata-file",
342
+ relationship_name="reports",
343
+ reverse_relationship_name="reported-in",
344
+ target="metabolite",
345
+ min=0,
346
+ min_for_each_source=0,
347
+ ),
340
348
  ],
341
349
  ),
342
350
  NodeValidation(
@@ -374,6 +382,30 @@ MHD_MS_PROFILE_V0_1.mhd_nodes = [
374
382
  min=0,
375
383
  min_for_each_source=1,
376
384
  ),
385
+ RelationshipValidation(
386
+ source="metabolite",
387
+ relationship_name="reported-in",
388
+ reverse_relationship_name="reports",
389
+ target="metadata-file",
390
+ min=0,
391
+ min_for_each_source=0,
392
+ ),
393
+ RelationshipValidation(
394
+ source="metabolite",
395
+ relationship_name="reported-in",
396
+ reverse_relationship_name="reports",
397
+ target="result-file",
398
+ min=0,
399
+ min_for_each_source=0,
400
+ ),
401
+ RelationshipValidation(
402
+ source="metabolite",
403
+ relationship_name="measured-in",
404
+ reverse_relationship_name="measures",
405
+ target="raw-data-file",
406
+ min=0,
407
+ min_for_each_source=0,
408
+ ),
377
409
  ],
378
410
  ),
379
411
  NodeValidation(
@@ -780,6 +812,14 @@ MHD_MS_PROFILE_V0_1.mhd_nodes = [
780
812
  min=0,
781
813
  min_for_each_source=0,
782
814
  ),
815
+ RelationshipValidation(
816
+ source="raw-data-file",
817
+ relationship_name="measures",
818
+ reverse_relationship_name="measured-in",
819
+ target="metabolite",
820
+ min=0,
821
+ min_for_each_source=0,
822
+ ),
783
823
  ],
784
824
  ),
785
825
  NodeValidation(
@@ -827,6 +867,14 @@ MHD_MS_PROFILE_V0_1.mhd_nodes = [
827
867
  min=0,
828
868
  min_for_each_source=0,
829
869
  ),
870
+ RelationshipValidation(
871
+ source="result-file",
872
+ relationship_name="reports",
873
+ reverse_relationship_name="reported-in",
874
+ target="metabolite",
875
+ min=0,
876
+ min_for_each_source=0,
877
+ ),
830
878
  ],
831
879
  ),
832
880
  NodeValidation(
@@ -1287,4 +1287,4 @@
1287
1287
  ],
1288
1288
  "title": "AnnouncementLegacyProfile",
1289
1289
  "type": "object"
1290
- }
1290
+ }
@@ -1921,4 +1921,4 @@
1921
1921
  ],
1922
1922
  "title": "AnnouncementMsProfile",
1923
1923
  "type": "object"
1924
- }
1924
+ }
@@ -1266,4 +1266,4 @@
1266
1266
  ],
1267
1267
  "title": "AnnouncementBaseProfile",
1268
1268
  "type": "object"
1269
- }
1269
+ }
@@ -1650,6 +1650,18 @@
1650
1650
  "default": null,
1651
1651
  "title": "Label"
1652
1652
  },
1653
+ "repository_identifier": {
1654
+ "anyOf": [
1655
+ {
1656
+ "type": "string"
1657
+ },
1658
+ {
1659
+ "type": "null"
1660
+ }
1661
+ ],
1662
+ "default": null,
1663
+ "title": "Repository Identifier"
1664
+ },
1653
1665
  "full_name": {
1654
1666
  "anyOf": [
1655
1667
  {
@@ -1861,6 +1873,18 @@
1861
1873
  "default": null,
1862
1874
  "title": "Title"
1863
1875
  },
1876
+ "repository_identifier": {
1877
+ "anyOf": [
1878
+ {
1879
+ "type": "string"
1880
+ },
1881
+ {
1882
+ "type": "null"
1883
+ }
1884
+ ],
1885
+ "default": null,
1886
+ "title": "Repository Identifier"
1887
+ },
1864
1888
  "description": {
1865
1889
  "anyOf": [
1866
1890
  {
@@ -4349,4 +4373,4 @@
4349
4373
  ],
4350
4374
  "title": "MhDatasetLegacyProfile",
4351
4375
  "type": "object"
4352
- }
4376
+ }
@@ -1650,6 +1650,18 @@
1650
1650
  "default": null,
1651
1651
  "title": "Label"
1652
1652
  },
1653
+ "repository_identifier": {
1654
+ "anyOf": [
1655
+ {
1656
+ "type": "string"
1657
+ },
1658
+ {
1659
+ "type": "null"
1660
+ }
1661
+ ],
1662
+ "default": null,
1663
+ "title": "Repository Identifier"
1664
+ },
1653
1665
  "full_name": {
1654
1666
  "anyOf": [
1655
1667
  {
@@ -1861,6 +1873,18 @@
1861
1873
  "default": null,
1862
1874
  "title": "Title"
1863
1875
  },
1876
+ "repository_identifier": {
1877
+ "anyOf": [
1878
+ {
1879
+ "type": "string"
1880
+ },
1881
+ {
1882
+ "type": "null"
1883
+ }
1884
+ ],
1885
+ "default": null,
1886
+ "title": "Repository Identifier"
1887
+ },
1864
1888
  "description": {
1865
1889
  "anyOf": [
1866
1890
  {
@@ -4349,4 +4373,4 @@
4349
4373
  ],
4350
4374
  "title": "MhDatasetMsProfile",
4351
4375
  "type": "object"
4352
- }
4376
+ }
@@ -1650,6 +1650,18 @@
1650
1650
  "default": null,
1651
1651
  "title": "Label"
1652
1652
  },
1653
+ "repository_identifier": {
1654
+ "anyOf": [
1655
+ {
1656
+ "type": "string"
1657
+ },
1658
+ {
1659
+ "type": "null"
1660
+ }
1661
+ ],
1662
+ "default": null,
1663
+ "title": "Repository Identifier"
1664
+ },
1653
1665
  "full_name": {
1654
1666
  "anyOf": [
1655
1667
  {
@@ -1861,6 +1873,18 @@
1861
1873
  "default": null,
1862
1874
  "title": "Title"
1863
1875
  },
1876
+ "repository_identifier": {
1877
+ "anyOf": [
1878
+ {
1879
+ "type": "string"
1880
+ },
1881
+ {
1882
+ "type": "null"
1883
+ }
1884
+ ],
1885
+ "default": null,
1886
+ "title": "Repository Identifier"
1887
+ },
1864
1888
  "description": {
1865
1889
  "anyOf": [
1866
1890
  {
@@ -4349,4 +4373,4 @@
4349
4373
  ],
4350
4374
  "title": "MhDatasetBaseProfile",
4351
4375
  "type": "object"
4352
- }
4376
+ }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mhd-model
3
- Version: 0.1.40
3
+ Version: 0.1.42
4
4
  Summary: MetabolomicsHub Common Data Model
5
5
  Author-email: MetabolomicsHub Team <help@metabolomicshub.org>
6
6
  License-Expression: Apache-2.0
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "mhd-model"
3
- version = "0.1.40"
3
+ version = "0.1.42"
4
4
  description = "MetabolomicsHub Common Data Model"
5
5
  authors = [{"name"="MetabolomicsHub Team", "email"="help@metabolomicshub.org"}]
6
6
  license = "Apache-2.0"
@@ -62,7 +62,7 @@ test = [
62
62
  [tool.commitizen]
63
63
  name = "cz_conventional_commits"
64
64
  version_provider = "uv"
65
- version = "0.1.40"
65
+ version = "0.1.42"
66
66
  tag_format = "v$major.$minor.$patch"
67
67
  version_files = [
68
68
  "pyproject.toml:version",
File without changes
File without changes
File without changes