chemicalml 0.2.1 → 0.4.0

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 (352) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/release.yml +21 -14
  3. data/.rubocop.yml +23 -0
  4. data/CHANGELOG.md +32 -0
  5. data/CLAUDE.md +49 -1
  6. data/README.adoc +154 -26
  7. data/TODO.align/61-parallel-array-attrs.md +54 -0
  8. data/TODO.align/62-per-element-attribute-gaps.md +49 -0
  9. data/TODO.align/63-universal-children-mixin.md +42 -0
  10. data/TODO.align/64-per-element-child-gaps.md +81 -0
  11. data/TODO.align/65-simple-unit-convention.md +40 -0
  12. data/TODO.align/66-schema24-legacy-children.md +32 -0
  13. data/TODO.align/67-final-verification.md +32 -0
  14. data/TODO.align/68-detection-coverage.md +33 -0
  15. data/TODO.align/69-json-yaml-roundtrip.md +27 -0
  16. data/TODO.align/70-iterative-walker.md +40 -0
  17. data/TODO.align/71-violation-value.md +25 -0
  18. data/TODO.align/72-close-child-gaps.md +66 -0
  19. data/TODO.align/73-schema24-parse-limitation.md +64 -0
  20. data/TODO.align/74-final-verification-round18.md +15 -0
  21. data/TODO.align/75-key-value-mappings.md +43 -0
  22. data/TODO.align/76-schema24-workaround.md +57 -0
  23. data/TODO.align/77-convention-coverage-matrix.md +31 -0
  24. data/TODO.align/78-fixture-audit.md +23 -0
  25. data/TODO.align/79-final-verification-round19.md +15 -0
  26. data/TODO.align/80-xsd-enum-constants.md +35 -0
  27. data/TODO.align/81-enum-validation-constraints.md +29 -0
  28. data/TODO.align/82-reference-resolver.md +33 -0
  29. data/TODO.align/83-toml-roundtrip.md +20 -0
  30. data/TODO.align/84-final-verification-round21.md +16 -0
  31. data/TODO.align/85-bond-distinct-atoms.md +25 -0
  32. data/TODO.align/86-references-should-resolve.md +20 -0
  33. data/TODO.align/87-cli-utility.md +26 -0
  34. data/TODO.align/88-diverse-fixtures.md +26 -0
  35. data/TODO.align/89-final-verification-round22.md +15 -0
  36. data/TODO.align/90-bond-stereo-completeness.md +31 -0
  37. data/TODO.align/91-atomparity-distinct.md +21 -0
  38. data/TODO.align/92-unit-dictionary-completeness.md +28 -0
  39. data/TODO.align/93-yard-docs.md +23 -0
  40. data/TODO.align/94-final-verification-round23.md +15 -0
  41. data/TODO.align/README.round17.md +28 -0
  42. data/TODO.align/README.round18.md +37 -0
  43. data/TODO.align/README.round19.md +40 -0
  44. data/TODO.align/README.round20.md +49 -0
  45. data/TODO.align/README.round21.md +35 -0
  46. data/TODO.align/README.round22.md +48 -0
  47. data/TODO.align/README.round23.md +46 -0
  48. data/TODO.align/README.round24.md +53 -0
  49. data/TODO.align/README.round25.md +66 -0
  50. data/TODO.align/README.round26.md +55 -0
  51. data/TODO.align/README.round27.md +51 -0
  52. data/TODO.align/README.round28.md +61 -0
  53. data/TODO.align/README.round29.md +64 -0
  54. data/TODO.align/README.round30.md +50 -0
  55. data/TODO.align/README.round31.md +54 -0
  56. data/TODO.align/README.round32.md +67 -0
  57. data/TODO.align/README.round33.md +62 -0
  58. data/TODO.align/README.round34.md +70 -0
  59. data/chemicalml.gemspec +1 -1
  60. data/docs/constraints.md +161 -0
  61. data/docs/generate_constraint_docs.rb +44 -0
  62. data/exe/chemicalml +6 -0
  63. data/lib/chemicalml/cli/base.rb +68 -0
  64. data/lib/chemicalml/cli/command.rb +43 -0
  65. data/lib/chemicalml/cli/constraints_command.rb +27 -0
  66. data/lib/chemicalml/cli/conventions_command.rb +14 -0
  67. data/lib/chemicalml/cli/dictionaries_command.rb +14 -0
  68. data/lib/chemicalml/cli/elements_command.rb +17 -0
  69. data/lib/chemicalml/cli/enums_command.rb +17 -0
  70. data/lib/chemicalml/cli/info_command.rb +77 -0
  71. data/lib/chemicalml/cli/inspect_command.rb +39 -0
  72. data/lib/chemicalml/cli/validate_command.rb +54 -0
  73. data/lib/chemicalml/cli.rb +43 -0
  74. data/lib/chemicalml/cml/base/abundance.rb +18 -8
  75. data/lib/chemicalml/cml/base/action.rb +34 -16
  76. data/lib/chemicalml/cml/base/action_list.rb +35 -17
  77. data/lib/chemicalml/cml/base/alternative.rb +13 -4
  78. data/lib/chemicalml/cml/base/amount.rb +14 -6
  79. data/lib/chemicalml/cml/base/angle.rb +28 -13
  80. data/lib/chemicalml/cml/base/annotation.rb +14 -6
  81. data/lib/chemicalml/cml/base/any_cml.rb +12 -5
  82. data/lib/chemicalml/cml/base/appinfo.rb +14 -6
  83. data/lib/chemicalml/cml/base/arg.rb +47 -13
  84. data/lib/chemicalml/cml/base/array.rb +40 -19
  85. data/lib/chemicalml/cml/base/array_list.rb +14 -6
  86. data/lib/chemicalml/cml/base/atom.rb +84 -28
  87. data/lib/chemicalml/cml/base/atom_array.rb +60 -23
  88. data/lib/chemicalml/cml/base/atom_parity.rb +14 -6
  89. data/lib/chemicalml/cml/base/atom_set.rb +14 -6
  90. data/lib/chemicalml/cml/base/atom_type.rb +25 -9
  91. data/lib/chemicalml/cml/base/atom_type_list.rb +22 -8
  92. data/lib/chemicalml/cml/base/atomic_basis_function.rb +33 -13
  93. data/lib/chemicalml/cml/base/band.rb +21 -8
  94. data/lib/chemicalml/cml/base/band_list.rb +15 -7
  95. data/lib/chemicalml/cml/base/basis_set.rb +24 -9
  96. data/lib/chemicalml/cml/base/bond.rb +36 -10
  97. data/lib/chemicalml/cml/base/bond_array.rb +34 -11
  98. data/lib/chemicalml/cml/base/bond_set.rb +14 -6
  99. data/lib/chemicalml/cml/base/bond_stereo.rb +20 -9
  100. data/lib/chemicalml/cml/base/bond_type.rb +23 -8
  101. data/lib/chemicalml/cml/base/bond_type_list.rb +22 -8
  102. data/lib/chemicalml/cml/base/cell_parameter.rb +28 -10
  103. data/lib/chemicalml/cml/base/cml_module.rb +42 -11
  104. data/lib/chemicalml/cml/base/common_children.rb +35 -0
  105. data/lib/chemicalml/cml/base/complex_object.rb +12 -5
  106. data/lib/chemicalml/cml/base/condition_list.rb +26 -10
  107. data/lib/chemicalml/cml/base/crystal.rb +26 -10
  108. data/lib/chemicalml/cml/base/definition.rb +14 -5
  109. data/lib/chemicalml/cml/base/description.rb +16 -6
  110. data/lib/chemicalml/cml/base/dictionary.rb +28 -11
  111. data/lib/chemicalml/cml/base/dictionary_entry.rb +69 -10
  112. data/lib/chemicalml/cml/base/dimension.rb +26 -12
  113. data/lib/chemicalml/cml/base/document.rb +24 -8
  114. data/lib/chemicalml/cml/base/documentation.rb +12 -5
  115. data/lib/chemicalml/cml/base/eigen.rb +32 -8
  116. data/lib/chemicalml/cml/base/electron.rb +26 -12
  117. data/lib/chemicalml/cml/base/enumeration.rb +16 -7
  118. data/lib/chemicalml/cml/base/expression.rb +21 -6
  119. data/lib/chemicalml/cml/base/float.rb +22 -10
  120. data/lib/chemicalml/cml/base/float_array.rb +24 -11
  121. data/lib/chemicalml/cml/base/formula.rb +31 -10
  122. data/lib/chemicalml/cml/base/fragment.rb +30 -12
  123. data/lib/chemicalml/cml/base/fragment_list.rb +24 -9
  124. data/lib/chemicalml/cml/base/gradient.rb +19 -6
  125. data/lib/chemicalml/cml/base/identifier.rb +18 -8
  126. data/lib/chemicalml/cml/base/integer.rb +22 -10
  127. data/lib/chemicalml/cml/base/integer_array.rb +24 -11
  128. data/lib/chemicalml/cml/base/isotope.rb +28 -9
  129. data/lib/chemicalml/cml/base/isotope_list.rb +17 -8
  130. data/lib/chemicalml/cml/base/join.rb +25 -9
  131. data/lib/chemicalml/cml/base/kpoint.rb +16 -7
  132. data/lib/chemicalml/cml/base/kpoint_list.rb +15 -7
  133. data/lib/chemicalml/cml/base/label.rb +14 -6
  134. data/lib/chemicalml/cml/base/lattice.rb +35 -10
  135. data/lib/chemicalml/cml/base/lattice_vector.rb +16 -7
  136. data/lib/chemicalml/cml/base/length.rb +26 -12
  137. data/lib/chemicalml/cml/base/line3.rb +18 -8
  138. data/lib/chemicalml/cml/base/link.rb +41 -20
  139. data/lib/chemicalml/cml/base/list.rb +22 -10
  140. data/lib/chemicalml/cml/base/map.rb +32 -11
  141. data/lib/chemicalml/cml/base/matrix.rb +32 -15
  142. data/lib/chemicalml/cml/base/mechanism.rb +20 -7
  143. data/lib/chemicalml/cml/base/mechanism_component.rb +14 -6
  144. data/lib/chemicalml/cml/base/metadata.rb +18 -8
  145. data/lib/chemicalml/cml/base/metadata_list.rb +27 -8
  146. data/lib/chemicalml/cml/base/molecule.rb +92 -26
  147. data/lib/chemicalml/cml/base/molecule_list.rb +26 -8
  148. data/lib/chemicalml/cml/base/name.rb +10 -4
  149. data/lib/chemicalml/cml/base/object.rb +18 -8
  150. data/lib/chemicalml/cml/base/observation.rb +16 -7
  151. data/lib/chemicalml/cml/base/operator.rb +14 -6
  152. data/lib/chemicalml/cml/base/parameter.rb +33 -13
  153. data/lib/chemicalml/cml/base/parameter_list.rb +27 -8
  154. data/lib/chemicalml/cml/base/particle.rb +20 -9
  155. data/lib/chemicalml/cml/base/peak.rb +73 -26
  156. data/lib/chemicalml/cml/base/peak_group.rb +62 -26
  157. data/lib/chemicalml/cml/base/peak_list.rb +24 -9
  158. data/lib/chemicalml/cml/base/peak_structure.rb +40 -13
  159. data/lib/chemicalml/cml/base/plane3.rb +14 -6
  160. data/lib/chemicalml/cml/base/point3.rb +14 -6
  161. data/lib/chemicalml/cml/base/potential.rb +17 -6
  162. data/lib/chemicalml/cml/base/potential_form.rb +30 -7
  163. data/lib/chemicalml/cml/base/potential_list.rb +15 -7
  164. data/lib/chemicalml/cml/base/product.rb +45 -10
  165. data/lib/chemicalml/cml/base/product_list.rb +29 -9
  166. data/lib/chemicalml/cml/base/property.rb +29 -11
  167. data/lib/chemicalml/cml/base/property_list.rb +23 -8
  168. data/lib/chemicalml/cml/base/reactant.rb +45 -10
  169. data/lib/chemicalml/cml/base/reactant_list.rb +29 -9
  170. data/lib/chemicalml/cml/base/reaction.rb +74 -20
  171. data/lib/chemicalml/cml/base/reaction_list.rb +23 -8
  172. data/lib/chemicalml/cml/base/reaction_scheme.rb +43 -13
  173. data/lib/chemicalml/cml/base/reaction_step.rb +30 -12
  174. data/lib/chemicalml/cml/base/reaction_step_list.rb +30 -11
  175. data/lib/chemicalml/cml/base/reactive_centre.rb +31 -6
  176. data/lib/chemicalml/cml/base/region.rb +20 -9
  177. data/lib/chemicalml/cml/base/related_entry.rb +11 -3
  178. data/lib/chemicalml/cml/base/sample.rb +30 -7
  179. data/lib/chemicalml/cml/base/scalar.rb +32 -15
  180. data/lib/chemicalml/cml/base/spectator.rb +25 -6
  181. data/lib/chemicalml/cml/base/spectator_list.rb +20 -7
  182. data/lib/chemicalml/cml/base/spectrum.rb +57 -18
  183. data/lib/chemicalml/cml/base/spectrum_data.rb +19 -9
  184. data/lib/chemicalml/cml/base/spectrum_list.rb +28 -9
  185. data/lib/chemicalml/cml/base/sphere3.rb +14 -6
  186. data/lib/chemicalml/cml/base/stmml.rb +12 -5
  187. data/lib/chemicalml/cml/base/string.rb +14 -6
  188. data/lib/chemicalml/cml/base/string_array.rb +22 -10
  189. data/lib/chemicalml/cml/base/substance.rb +36 -14
  190. data/lib/chemicalml/cml/base/substance_list.rb +29 -10
  191. data/lib/chemicalml/cml/base/symmetry.rb +31 -9
  192. data/lib/chemicalml/cml/base/system.rb +21 -10
  193. data/lib/chemicalml/cml/base/table.rb +38 -13
  194. data/lib/chemicalml/cml/base/table_cell.rb +12 -5
  195. data/lib/chemicalml/cml/base/table_content.rb +19 -9
  196. data/lib/chemicalml/cml/base/table_header.rb +15 -7
  197. data/lib/chemicalml/cml/base/table_header_cell.rb +22 -10
  198. data/lib/chemicalml/cml/base/table_row.rb +15 -7
  199. data/lib/chemicalml/cml/base/table_row_list.rb +15 -7
  200. data/lib/chemicalml/cml/base/tcell.rb +16 -7
  201. data/lib/chemicalml/cml/base/torsion.rb +28 -13
  202. data/lib/chemicalml/cml/base/transform3.rb +12 -5
  203. data/lib/chemicalml/cml/base/transition_state.rb +23 -5
  204. data/lib/chemicalml/cml/base/trow.rb +22 -6
  205. data/lib/chemicalml/cml/base/unit.rb +39 -16
  206. data/lib/chemicalml/cml/base/unit_list.rb +34 -12
  207. data/lib/chemicalml/cml/base/unit_type.rb +30 -10
  208. data/lib/chemicalml/cml/base/unit_type_list.rb +29 -11
  209. data/lib/chemicalml/cml/base/vector3.rb +14 -6
  210. data/lib/chemicalml/cml/base/xaxis.rb +32 -10
  211. data/lib/chemicalml/cml/base/yaxis.rb +30 -10
  212. data/lib/chemicalml/cml/base/z_matrix.rb +26 -5
  213. data/lib/chemicalml/cml/base.rb +139 -138
  214. data/lib/chemicalml/cml/canonical_comparison.rb +54 -0
  215. data/lib/chemicalml/cml/elements.rb +145 -136
  216. data/lib/chemicalml/cml/enums.rb +55 -0
  217. data/lib/chemicalml/cml/namespace.rb +2 -3
  218. data/lib/chemicalml/cml/patterns.rb +33 -0
  219. data/lib/chemicalml/cml/reference_resolver.rb +137 -0
  220. data/lib/chemicalml/cml/role.rb +138 -138
  221. data/lib/chemicalml/cml/schema24/configuration.rb +11 -1
  222. data/lib/chemicalml/cml/schema24.rb +139 -139
  223. data/lib/chemicalml/cml/schema3.rb +123 -123
  224. data/lib/chemicalml/cml/visitable.rb +77 -3
  225. data/lib/chemicalml/cml/wire_class_registry.rb +3 -3
  226. data/lib/chemicalml/cml/xhtml/p.rb +21 -0
  227. data/lib/chemicalml/cml/xhtml.rb +20 -0
  228. data/lib/chemicalml/cml.rb +164 -129
  229. data/lib/chemicalml/context_configuration.rb +4 -2
  230. data/lib/chemicalml/convention/cascade/constraints/reaction_scheme_must_have_content.rb +33 -0
  231. data/lib/chemicalml/convention/cascade/constraints/reaction_step_list_must_contain_steps.rb +31 -0
  232. data/lib/chemicalml/convention/cascade/constraints/reaction_step_must_have_reaction_or_lists.rb +33 -0
  233. data/lib/chemicalml/convention/cascade/constraints/reactive_centre_atom_refs_should_be_present.rb +34 -0
  234. data/lib/chemicalml/convention/cascade/constraints.rb +18 -0
  235. data/lib/chemicalml/convention/cascade.rb +43 -0
  236. data/lib/chemicalml/convention/compchem/constraints/array_rules.rb +1 -1
  237. data/lib/chemicalml/convention/compchem/constraints/calculation_requires_finalization.rb +1 -1
  238. data/lib/chemicalml/convention/compchem/constraints/compchem_module_must_contain_job_list.rb +2 -1
  239. data/lib/chemicalml/convention/compchem/constraints/environment_at_most_one_property_list.rb +1 -1
  240. data/lib/chemicalml/convention/compchem/constraints/environment_must_not_contain_parameter.rb +1 -1
  241. data/lib/chemicalml/convention/compchem/constraints/finalization_at_most_one_molecule.rb +1 -1
  242. data/lib/chemicalml/convention/compchem/constraints/finalization_at_most_one_property_list.rb +1 -1
  243. data/lib/chemicalml/convention/compchem/constraints/finalization_must_have_content.rb +44 -0
  244. data/lib/chemicalml/convention/compchem/constraints/finalization_must_not_contain_parameter.rb +1 -1
  245. data/lib/chemicalml/convention/compchem/constraints/initialization_at_most_one_molecule.rb +1 -1
  246. data/lib/chemicalml/convention/compchem/constraints/initialization_at_most_one_parameter_list.rb +1 -1
  247. data/lib/chemicalml/convention/compchem/constraints/initialization_must_have_content.rb +54 -0
  248. data/lib/chemicalml/convention/compchem/constraints/initialization_must_not_contain_property.rb +1 -1
  249. data/lib/chemicalml/convention/compchem/constraints/job_list_module_must_have_id.rb +1 -0
  250. data/lib/chemicalml/convention/compchem/constraints/job_module_at_most_one_environment.rb +1 -1
  251. data/lib/chemicalml/convention/compchem/constraints/job_module_at_most_one_finalization.rb +1 -1
  252. data/lib/chemicalml/convention/compchem/constraints/job_module_must_have_id.rb +1 -0
  253. data/lib/chemicalml/convention/compchem/constraints/job_must_contain_initialization.rb +1 -0
  254. data/lib/chemicalml/convention/compchem/constraints/matrix_rules.rb +1 -1
  255. data/lib/chemicalml/convention/compchem/constraints/scalar_units.rb +1 -1
  256. data/lib/chemicalml/convention/compchem/constraints.rb +4 -0
  257. data/lib/chemicalml/convention/compchem.rb +4 -2
  258. data/lib/chemicalml/convention/constraint.rb +40 -9
  259. data/lib/chemicalml/convention/coordinator.rb +4 -3
  260. data/lib/chemicalml/convention/detection.rb +10 -4
  261. data/lib/chemicalml/convention/dictionary/constraints/dictionary_must_have_namespace.rb +1 -0
  262. data/lib/chemicalml/convention/dictionary/constraints/dictionary_namespace_should_end_with_slash_or_hash.rb +1 -1
  263. data/lib/chemicalml/convention/dictionary/constraints/entry_id_must_match_pattern.rb +1 -1
  264. data/lib/chemicalml/convention/dictionary/constraints/entry_ids_unique_within_dictionary.rb +1 -1
  265. data/lib/chemicalml/convention/dictionary/constraints/entry_must_contain_definition.rb +15 -1
  266. data/lib/chemicalml/convention/dictionary/constraints/entry_must_have_id_and_term.rb +1 -1
  267. data/lib/chemicalml/convention/dictionary/constraints/entry_must_have_unit_type.rb +1 -0
  268. data/lib/chemicalml/convention/dictionary/constraints/entry_units_co_constraints.rb +1 -1
  269. data/lib/chemicalml/convention/dictionary/constraints.rb +8 -8
  270. data/lib/chemicalml/convention/dictionary.rb +2 -2
  271. data/lib/chemicalml/convention/molecular/constraints/atom_array_must_be_child_of_molecule_or_formula.rb +1 -0
  272. data/lib/chemicalml/convention/molecular/constraints/atom_array_must_contain_atoms.rb +15 -6
  273. data/lib/chemicalml/convention/molecular/constraints/atom_coordinates_must_be_paired.rb +1 -1
  274. data/lib/chemicalml/convention/molecular/constraints/atom_element_type_should_be_in_periodic_table.rb +39 -0
  275. data/lib/chemicalml/convention/molecular/constraints/atom_id_must_match_pattern.rb +3 -2
  276. data/lib/chemicalml/convention/molecular/constraints/atom_ids_unique_within_molecule.rb +1 -0
  277. data/lib/chemicalml/convention/molecular/constraints/atom_must_have_element_type.rb +1 -1
  278. data/lib/chemicalml/convention/molecular/constraints/atom_must_have_id.rb +2 -1
  279. data/lib/chemicalml/convention/molecular/constraints/atom_parity_atom_refs4_should_be_distinct.rb +44 -0
  280. data/lib/chemicalml/convention/molecular/constraints/atom_parity_should_include_parent_atom.rb +65 -0
  281. data/lib/chemicalml/convention/molecular/constraints/bond_array_must_be_child_of_molecule.rb +1 -0
  282. data/lib/chemicalml/convention/molecular/constraints/bond_atom_refs2_should_be_distinct.rb +44 -0
  283. data/lib/chemicalml/convention/molecular/constraints/bond_id_should_match_pattern.rb +38 -0
  284. data/lib/chemicalml/convention/molecular/constraints/bond_ids_unique_within_molecule.rb +1 -0
  285. data/lib/chemicalml/convention/molecular/constraints/bond_must_have_atom_refs2.rb +1 -1
  286. data/lib/chemicalml/convention/molecular/constraints/bond_must_have_order.rb +2 -1
  287. data/lib/chemicalml/convention/molecular/constraints/bond_must_reference_atoms_in_same_molecule.rb +1 -0
  288. data/lib/chemicalml/convention/molecular/constraints/bond_order_other_must_have_dict_ref.rb +1 -0
  289. data/lib/chemicalml/convention/molecular/constraints/bond_order_should_be_in_enum.rb +39 -0
  290. data/lib/chemicalml/convention/molecular/constraints/bond_order_should_not_be_numeric.rb +1 -1
  291. data/lib/chemicalml/convention/molecular/constraints/bond_stereo_atom_refs4_should_be_distinct.rb +43 -0
  292. data/lib/chemicalml/convention/molecular/constraints/bond_stereo_cis_trans_must_have_atom_refs4.rb +1 -1
  293. data/lib/chemicalml/convention/molecular/constraints/bond_stereo_other_must_have_dict_ref.rb +1 -0
  294. data/lib/chemicalml/convention/molecular/constraints/bond_stereo_should_be_in_enum.rb +38 -0
  295. data/lib/chemicalml/convention/molecular/constraints/bond_stereo_wedge_hash_must_have_atom_refs2.rb +1 -1
  296. data/lib/chemicalml/convention/molecular/constraints/dict_ref_should_resolve.rb +59 -0
  297. data/lib/chemicalml/convention/molecular/constraints/molecule_atom_array_mutually_exclusive_with_children.rb +1 -0
  298. data/lib/chemicalml/convention/molecular/constraints/molecule_bond_array_mutually_exclusive_with_children.rb +1 -0
  299. data/lib/chemicalml/convention/molecular/constraints/molecule_chirality_should_be_in_enum.rb +38 -0
  300. data/lib/chemicalml/convention/molecular/constraints/molecule_count_must_not_appear_on_top_level.rb +1 -0
  301. data/lib/chemicalml/convention/molecular/constraints/molecule_id_should_match_pattern.rb +38 -0
  302. data/lib/chemicalml/convention/molecular/constraints/molecule_must_have_id.rb +1 -1
  303. data/lib/chemicalml/convention/molecular/constraints/property_must_have_dict_ref.rb +1 -1
  304. data/lib/chemicalml/convention/molecular/constraints/property_scalar_data_type_matches_dictionary.rb +58 -0
  305. data/lib/chemicalml/convention/molecular/constraints/references_should_resolve.rb +37 -0
  306. data/lib/chemicalml/convention/molecular/constraints/scalar_must_have_data_type.rb +1 -1
  307. data/lib/chemicalml/convention/molecular/constraints.rb +49 -23
  308. data/lib/chemicalml/convention/molecular.rb +15 -2
  309. data/lib/chemicalml/convention/registry.rb +79 -11
  310. data/lib/chemicalml/convention/simple_unit/constraints/root_must_be_unit_list.rb +24 -0
  311. data/lib/chemicalml/convention/simple_unit/constraints/unit_must_have_power.rb +32 -0
  312. data/lib/chemicalml/convention/simple_unit/constraints/unit_must_have_symbol.rb +31 -0
  313. data/lib/chemicalml/convention/simple_unit/constraints.rb +16 -0
  314. data/lib/chemicalml/convention/simple_unit.rb +37 -0
  315. data/lib/chemicalml/convention/spectroscopy/constraints/peak_list_must_contain_peaks.rb +31 -0
  316. data/lib/chemicalml/convention/spectroscopy/constraints/peak_should_have_values.rb +34 -0
  317. data/lib/chemicalml/convention/spectroscopy/constraints/spectrum_must_have_content.rb +31 -0
  318. data/lib/chemicalml/convention/spectroscopy/constraints/spectrum_must_have_convention.rb +32 -0
  319. data/lib/chemicalml/convention/spectroscopy/constraints/spectrum_must_have_format.rb +31 -0
  320. data/lib/chemicalml/convention/spectroscopy/constraints.rb +20 -0
  321. data/lib/chemicalml/convention/spectroscopy.rb +41 -0
  322. data/lib/chemicalml/convention/unit_dictionary/constraints/unit_list_must_contain_at_least_one_unit.rb +1 -0
  323. data/lib/chemicalml/convention/unit_dictionary/constraints/unit_list_must_have_namespace.rb +1 -1
  324. data/lib/chemicalml/convention/unit_dictionary/constraints/unit_must_contain_definition.rb +1 -0
  325. data/lib/chemicalml/convention/unit_dictionary/constraints/unit_must_have_id.rb +1 -0
  326. data/lib/chemicalml/convention/unit_dictionary/constraints/unit_must_have_multiplier_or_constant_to_si.rb +34 -0
  327. data/lib/chemicalml/convention/unit_dictionary/constraints/unit_must_have_parent_si.rb +32 -0
  328. data/lib/chemicalml/convention/unit_dictionary/constraints/unit_must_have_symbol_and_unit_type.rb +1 -1
  329. data/lib/chemicalml/convention/unit_dictionary/constraints/unit_must_have_title.rb +32 -0
  330. data/lib/chemicalml/convention/unit_dictionary/constraints/unit_parent_si_should_resolve.rb +45 -0
  331. data/lib/chemicalml/convention/unit_dictionary/constraints/unit_unit_type_should_resolve.rb +46 -0
  332. data/lib/chemicalml/convention/unit_dictionary/constraints.rb +10 -0
  333. data/lib/chemicalml/convention/unit_dictionary.rb +7 -2
  334. data/lib/chemicalml/convention/unit_type_dictionary/constraints/unit_type_id_must_match_pattern.rb +1 -1
  335. data/lib/chemicalml/convention/unit_type_dictionary/constraints/unit_type_list_must_contain_at_least_one_unit_type.rb +1 -0
  336. data/lib/chemicalml/convention/unit_type_dictionary/constraints/unit_type_list_must_have_namespace.rb +1 -1
  337. data/lib/chemicalml/convention/unit_type_dictionary/constraints/unit_type_must_contain_definition.rb +1 -0
  338. data/lib/chemicalml/convention/unit_type_dictionary/constraints/unit_type_must_have_id_and_name.rb +1 -1
  339. data/lib/chemicalml/convention/unit_type_dictionary.rb +2 -2
  340. data/lib/chemicalml/convention/validation_report.rb +30 -3
  341. data/lib/chemicalml/convention/violation.rb +9 -3
  342. data/lib/chemicalml/convention.rb +41 -14
  343. data/lib/chemicalml/dictionary.rb +13 -9
  344. data/lib/chemicalml/logger.rb +47 -0
  345. data/lib/chemicalml/schema/definition.rb +2 -2
  346. data/lib/chemicalml/schema.rb +7 -7
  347. data/lib/chemicalml/version.rb +1 -1
  348. data/lib/chemicalml/versioned_parser.rb +10 -10
  349. data/lib/chemicalml.rb +78 -15
  350. data/lib/tasks/reference_fetch.rake +30 -31
  351. data/lib/tasks/scrape_fixtures.rake +23 -24
  352. metadata +118 -5
@@ -7,6 +7,8 @@ module Chemicalml
7
7
  def self.included(klass)
8
8
  klass.class_eval do
9
9
  include Chemicalml::Cml::Role::Lattice
10
+ include Chemicalml::Cml::Base::CommonChildren
11
+
10
12
  attribute :id, :string
11
13
  attribute :title, :string
12
14
  attribute :dict_ref, :string
@@ -14,20 +16,43 @@ module Chemicalml
14
16
  attribute :latticeType, :string
15
17
  attribute :units, :string
16
18
 
17
- attribute :lattice_vectors, :latticeVector, collection: true
19
+ attribute :lattice_vectors, :latticeVector, collection: true
20
+ attribute :matrices, :matrix, collection: true
21
+ attribute :scalars, :scalar, collection: true
22
+ attribute :symmetries, :symmetry, collection: true
18
23
 
19
24
  attribute :space_type, :string
20
25
  xml do
21
26
  namespace Chemicalml::Cml::Namespace
22
- map_element "latticeVector", to: :lattice_vectors
23
- root "lattice"
24
- map_attribute "id", to: :id
25
- map_attribute "title", to: :title
26
- map_attribute "dictRef", to: :dict_ref
27
- map_attribute "convention", to: :convention
28
- map_attribute "latticeType", to: :latticeType
29
- map_attribute "units", to: :units
30
- map_attribute "spaceType", to: :space_type
27
+ map_element 'latticeVector', to: :lattice_vectors
28
+ map_element 'matrix', to: :matrices
29
+ map_element 'scalar', to: :scalars
30
+ map_element 'symmetry', to: :symmetries
31
+ root 'lattice'
32
+ map_attribute 'id', to: :id
33
+ map_attribute 'title', to: :title
34
+ map_attribute 'dictRef', to: :dict_ref
35
+ map_attribute 'convention', to: :convention
36
+ map_attribute 'latticeType', to: :latticeType
37
+ map_attribute 'units', to: :units
38
+ map_attribute 'spaceType', to: :space_type
39
+ end
40
+ key_value do
41
+ map 'metadataList', to: :metadata_lists
42
+ map 'label', to: :labels
43
+ map 'name', to: :names
44
+ map 'description', to: :descriptions
45
+ map 'latticeVector', to: :lattice_vectors
46
+ map 'matrix', to: :matrices
47
+ map 'scalar', to: :scalars
48
+ map 'symmetry', to: :symmetries
49
+ map 'id', to: :id
50
+ map 'title', to: :title
51
+ map 'dictRef', to: :dict_ref
52
+ map 'convention', to: :convention
53
+ map 'latticeType', to: :latticeType
54
+ map 'units', to: :units
55
+ map 'spaceType', to: :space_type
31
56
  end
32
57
  end
33
58
  end
@@ -7,6 +7,7 @@ module Chemicalml
7
7
  def self.included(klass)
8
8
  klass.class_eval do
9
9
  include Chemicalml::Cml::Role::LatticeVector
10
+
10
11
  attribute :id, :string
11
12
  attribute :title, :string
12
13
  attribute :dict_ref, :string
@@ -16,13 +17,21 @@ module Chemicalml
16
17
  attribute :periodic, :string
17
18
  xml do
18
19
  namespace Chemicalml::Cml::Namespace
19
- root "latticeVector"
20
- map_attribute "id", to: :id
21
- map_attribute "title", to: :title
22
- map_attribute "dictRef", to: :dict_ref
23
- map_attribute "convention", to: :convention
24
- map_attribute "units", to: :units
25
- map_attribute "periodic", to: :periodic
20
+ root 'latticeVector'
21
+ map_attribute 'id', to: :id
22
+ map_attribute 'title', to: :title
23
+ map_attribute 'dictRef', to: :dict_ref
24
+ map_attribute 'convention', to: :convention
25
+ map_attribute 'units', to: :units
26
+ map_attribute 'periodic', to: :periodic
27
+ end
28
+ key_value do
29
+ map 'id', to: :id
30
+ map 'title', to: :title
31
+ map 'dictRef', to: :dict_ref
32
+ map 'convention', to: :convention
33
+ map 'units', to: :units
34
+ map 'periodic', to: :periodic
26
35
  end
27
36
  end
28
37
  end
@@ -7,6 +7,7 @@ module Chemicalml
7
7
  def self.included(klass)
8
8
  klass.class_eval do
9
9
  include Chemicalml::Cml::Role::Length
10
+
10
11
  attribute :id, :string
11
12
  attribute :title, :string
12
13
  attribute :dict_ref, :string
@@ -21,18 +22,31 @@ module Chemicalml
21
22
  attribute :ref, :string
22
23
  xml do
23
24
  namespace Chemicalml::Cml::Namespace
24
- root "length"
25
- map_attribute "id", to: :id
26
- map_attribute "title", to: :title
27
- map_attribute "dictRef", to: :dict_ref
28
- map_attribute "convention", to: :convention
29
- map_attribute "atomRefs2", to: :atomRefs2
30
- map_attribute "units", to: :units
31
- map_attribute "errorValue", to: :error_value
32
- map_attribute "errorBasis", to: :error_basis
33
- map_attribute "min", to: :min
34
- map_attribute "max", to: :max
35
- map_attribute "ref", to: :ref
25
+ root 'length'
26
+ map_attribute 'id', to: :id
27
+ map_attribute 'title', to: :title
28
+ map_attribute 'dictRef', to: :dict_ref
29
+ map_attribute 'convention', to: :convention
30
+ map_attribute 'atomRefs2', to: :atomRefs2
31
+ map_attribute 'units', to: :units
32
+ map_attribute 'errorValue', to: :error_value
33
+ map_attribute 'errorBasis', to: :error_basis
34
+ map_attribute 'min', to: :min
35
+ map_attribute 'max', to: :max
36
+ map_attribute 'ref', to: :ref
37
+ end
38
+ key_value do
39
+ map 'id', to: :id
40
+ map 'title', to: :title
41
+ map 'dictRef', to: :dict_ref
42
+ map 'convention', to: :convention
43
+ map 'atomRefs2', to: :atomRefs2
44
+ map 'units', to: :units
45
+ map 'errorValue', to: :error_value
46
+ map 'errorBasis', to: :error_basis
47
+ map 'min', to: :min
48
+ map 'max', to: :max
49
+ map 'ref', to: :ref
36
50
  end
37
51
  end
38
52
  end
@@ -7,6 +7,7 @@ module Chemicalml
7
7
  def self.included(klass)
8
8
  klass.class_eval do
9
9
  include Chemicalml::Cml::Role::Line3
10
+
10
11
  attribute :id, :string
11
12
  attribute :title, :string
12
13
  attribute :dict_ref, :string
@@ -18,15 +19,24 @@ module Chemicalml
18
19
  attribute :vector3, :string
19
20
  xml do
20
21
  namespace Chemicalml::Cml::Namespace
21
- root "line3"
22
- map_attribute "id", to: :id
23
- map_attribute "title", to: :title
24
- map_attribute "dictRef", to: :dict_ref
25
- map_attribute "convention", to: :convention
22
+ root 'line3'
23
+ map_attribute 'id', to: :id
24
+ map_attribute 'title', to: :title
25
+ map_attribute 'dictRef', to: :dict_ref
26
+ map_attribute 'convention', to: :convention
26
27
  map_content to: :content
27
- map_attribute "units", to: :units
28
- map_attribute "point3", to: :point3
29
- map_attribute "vector3", to: :vector3
28
+ map_attribute 'units', to: :units
29
+ map_attribute 'point3', to: :point3
30
+ map_attribute 'vector3', to: :vector3
31
+ end
32
+ key_value do
33
+ map 'id', to: :id
34
+ map 'title', to: :title
35
+ map 'dictRef', to: :dict_ref
36
+ map 'convention', to: :convention
37
+ map 'units', to: :units
38
+ map 'point3', to: :point3
39
+ map 'vector3', to: :vector3
30
40
  end
31
41
  end
32
42
  end
@@ -7,6 +7,7 @@ module Chemicalml
7
7
  def self.included(klass)
8
8
  klass.class_eval do
9
9
  include Chemicalml::Cml::Role::Link
10
+
10
11
  attribute :id, :string
11
12
  attribute :title, :string
12
13
  attribute :dict_ref, :string
@@ -29,26 +30,46 @@ module Chemicalml
29
30
  attribute :link_type, :string
30
31
  xml do
31
32
  namespace Chemicalml::Cml::Namespace
32
- root "link"
33
- map_attribute "id", to: :id
34
- map_attribute "title", to: :title
35
- map_attribute "dictRef", to: :dict_ref
36
- map_attribute "convention", to: :convention
37
- map_attribute "href", to: :href
38
- map_attribute "rel", to: :rel
39
- map_attribute "title", to: :title
40
- map_attribute "type", to: :type
41
- map_attribute "role", to: :role
42
- map_attribute "from", to: :from
43
- map_attribute "to", to: :to
44
- map_attribute "ref", to: :ref
45
- map_attribute "fromType", to: :from_type
46
- map_attribute "toType", to: :to_type
47
- map_attribute "fromSet", to: :from_set
48
- map_attribute "toSet", to: :to_set
49
- map_attribute "fromContext", to: :from_context
50
- map_attribute "toContext", to: :to_context
51
- map_attribute "linkType", to: :link_type
33
+ root 'link'
34
+ map_attribute 'id', to: :id
35
+ map_attribute 'title', to: :title
36
+ map_attribute 'dictRef', to: :dict_ref
37
+ map_attribute 'convention', to: :convention
38
+ map_attribute 'href', to: :href
39
+ map_attribute 'rel', to: :rel
40
+ map_attribute 'title', to: :title
41
+ map_attribute 'type', to: :type
42
+ map_attribute 'role', to: :role
43
+ map_attribute 'from', to: :from
44
+ map_attribute 'to', to: :to
45
+ map_attribute 'ref', to: :ref
46
+ map_attribute 'fromType', to: :from_type
47
+ map_attribute 'toType', to: :to_type
48
+ map_attribute 'fromSet', to: :from_set
49
+ map_attribute 'toSet', to: :to_set
50
+ map_attribute 'fromContext', to: :from_context
51
+ map_attribute 'toContext', to: :to_context
52
+ map_attribute 'linkType', to: :link_type
53
+ end
54
+ key_value do
55
+ map 'id', to: :id
56
+ map 'title', to: :title
57
+ map 'dictRef', to: :dict_ref
58
+ map 'convention', to: :convention
59
+ map 'href', to: :href
60
+ map 'rel', to: :rel
61
+ map 'type', to: :type
62
+ map 'role', to: :role
63
+ map 'from', to: :from
64
+ map 'to', to: :to
65
+ map 'ref', to: :ref
66
+ map 'fromType', to: :from_type
67
+ map 'toType', to: :to_type
68
+ map 'fromSet', to: :from_set
69
+ map 'toSet', to: :to_set
70
+ map 'fromContext', to: :from_context
71
+ map 'toContext', to: :to_context
72
+ map 'linkType', to: :link_type
52
73
  end
53
74
  end
54
75
  end
@@ -7,6 +7,7 @@ module Chemicalml
7
7
  def self.included(klass)
8
8
  klass.class_eval do
9
9
  include Chemicalml::Cml::Role::List
10
+
10
11
  attribute :id, :string
11
12
  attribute :title, :string
12
13
  attribute :dict_ref, :string
@@ -19,16 +20,27 @@ module Chemicalml
19
20
  attribute :type, :string
20
21
  xml do
21
22
  namespace Chemicalml::Cml::Namespace
22
- root "list"
23
- map_attribute "id", to: :id
24
- map_attribute "title", to: :title
25
- map_attribute "dictRef", to: :dict_ref
26
- map_attribute "convention", to: :convention
27
- map_element "scalar", to: :scalars
28
- map_element "array", to: :arrays
29
- map_element "matrix", to: :matrices
30
- map_element "list", to: :lists
31
- map_attribute "type", to: :type
23
+ root 'list'
24
+ map_attribute 'id', to: :id
25
+ map_attribute 'title', to: :title
26
+ map_attribute 'dictRef', to: :dict_ref
27
+ map_attribute 'convention', to: :convention
28
+ map_element 'scalar', to: :scalars
29
+ map_element 'array', to: :arrays
30
+ map_element 'matrix', to: :matrices
31
+ map_element 'list', to: :lists
32
+ map_attribute 'type', to: :type
33
+ end
34
+ key_value do
35
+ map 'scalar', to: :scalars
36
+ map 'array', to: :arrays
37
+ map 'matrix', to: :matrices
38
+ map 'list', to: :lists
39
+ map 'id', to: :id
40
+ map 'title', to: :title
41
+ map 'dictRef', to: :dict_ref
42
+ map 'convention', to: :convention
43
+ map 'type', to: :type
32
44
  end
33
45
  end
34
46
  end
@@ -7,6 +7,8 @@ module Chemicalml
7
7
  def self.included(klass)
8
8
  klass.class_eval do
9
9
  include Chemicalml::Cml::Role::Map
10
+ include Chemicalml::Cml::Base::CommonChildren
11
+
10
12
  attribute :id, :string
11
13
  attribute :title, :string
12
14
  attribute :dict_ref, :string
@@ -18,19 +20,38 @@ module Chemicalml
18
20
  attribute :from_context, :string
19
21
  attribute :to_context, :string
20
22
  attribute :role, :string
23
+ attribute :links, :link, collection: true
21
24
  xml do
22
25
  namespace Chemicalml::Cml::Namespace
23
- root "map"
24
- map_attribute "id", to: :id
25
- map_attribute "title", to: :title
26
- map_attribute "dictRef", to: :dict_ref
27
- map_attribute "convention", to: :convention
28
- map_attribute "ref", to: :ref
29
- map_attribute "fromType", to: :from_type
30
- map_attribute "toType", to: :to_type
31
- map_attribute "fromContext", to: :from_context
32
- map_attribute "toContext", to: :to_context
33
- map_attribute "role", to: :role
26
+ root 'map'
27
+ map_attribute 'id', to: :id
28
+ map_attribute 'title', to: :title
29
+ map_attribute 'dictRef', to: :dict_ref
30
+ map_attribute 'convention', to: :convention
31
+ map_attribute 'ref', to: :ref
32
+ map_attribute 'fromType', to: :from_type
33
+ map_attribute 'toType', to: :to_type
34
+ map_attribute 'fromContext', to: :from_context
35
+ map_attribute 'toContext', to: :to_context
36
+ map_attribute 'role', to: :role
37
+ map_element 'link', to: :links
38
+ end
39
+ key_value do
40
+ map 'metadataList', to: :metadata_lists
41
+ map 'label', to: :labels
42
+ map 'name', to: :names
43
+ map 'description', to: :descriptions
44
+ map 'link', to: :links
45
+ map 'id', to: :id
46
+ map 'title', to: :title
47
+ map 'dictRef', to: :dict_ref
48
+ map 'convention', to: :convention
49
+ map 'ref', to: :ref
50
+ map 'fromType', to: :from_type
51
+ map 'toType', to: :to_type
52
+ map 'fromContext', to: :from_context
53
+ map 'toContext', to: :to_context
54
+ map 'role', to: :role
34
55
  end
35
56
  end
36
57
  end
@@ -7,6 +7,7 @@ module Chemicalml
7
7
  def self.included(klass)
8
8
  klass.class_eval do
9
9
  include Chemicalml::Cml::Role::Matrix
10
+
10
11
  attribute :id, :string
11
12
  attribute :title, :string
12
13
  attribute :dict_ref, :string
@@ -25,22 +26,38 @@ module Chemicalml
25
26
  attribute :max_value_array, :string
26
27
  xml do
27
28
  namespace Chemicalml::Cml::Namespace
28
- root "matrix"
29
- map_attribute "id", to: :id
30
- map_attribute "title", to: :title
31
- map_attribute "dictRef", to: :dict_ref
32
- map_attribute "dataType", to: :data_type
33
- map_attribute "units", to: :units
34
- map_attribute "rows", to: :rows
35
- map_attribute "columns", to: :columns
36
- map_attribute "delimiter", to: :delimiter
29
+ root 'matrix'
30
+ map_attribute 'id', to: :id
31
+ map_attribute 'title', to: :title
32
+ map_attribute 'dictRef', to: :dict_ref
33
+ map_attribute 'dataType', to: :data_type
34
+ map_attribute 'units', to: :units
35
+ map_attribute 'rows', to: :rows
36
+ map_attribute 'columns', to: :columns
37
+ map_attribute 'delimiter', to: :delimiter
37
38
  map_content to: :content
38
- map_attribute "convention", to: :convention
39
- map_attribute "matrixType", to: :matrix_type
40
- map_attribute "errorValueArray", to: :error_value_array
41
- map_attribute "errorBasis", to: :error_basis
42
- map_attribute "minValueArray", to: :min_value_array
43
- map_attribute "maxValueArray", to: :max_value_array
39
+ map_attribute 'convention', to: :convention
40
+ map_attribute 'matrixType', to: :matrix_type
41
+ map_attribute 'errorValueArray', to: :error_value_array
42
+ map_attribute 'errorBasis', to: :error_basis
43
+ map_attribute 'minValueArray', to: :min_value_array
44
+ map_attribute 'maxValueArray', to: :max_value_array
45
+ end
46
+ key_value do
47
+ map 'id', to: :id
48
+ map 'title', to: :title
49
+ map 'dictRef', to: :dict_ref
50
+ map 'dataType', to: :data_type
51
+ map 'units', to: :units
52
+ map 'rows', to: :rows
53
+ map 'columns', to: :columns
54
+ map 'delimiter', to: :delimiter
55
+ map 'convention', to: :convention
56
+ map 'matrixType', to: :matrix_type
57
+ map 'errorValueArray', to: :error_value_array
58
+ map 'errorBasis', to: :error_basis
59
+ map 'minValueArray', to: :min_value_array
60
+ map 'maxValueArray', to: :max_value_array
44
61
  end
45
62
  end
46
63
  end
@@ -7,21 +7,34 @@ module Chemicalml
7
7
  def self.included(klass)
8
8
  klass.class_eval do
9
9
  include Chemicalml::Cml::Role::Mechanism
10
+ include Chemicalml::Cml::Base::CommonChildren
11
+
10
12
  attribute :id, :string
11
13
  attribute :title, :string
12
14
  attribute :dict_ref, :string
13
15
  attribute :convention, :string
14
16
 
15
- attribute :mechanism_components, :mechanismComponent, collection: true
17
+ attribute :mechanism_components, :mechanismComponent, collection: true
16
18
 
17
19
  xml do
18
20
  namespace Chemicalml::Cml::Namespace
19
- map_element "mechanismComponent", to: :mechanism_components
20
- root "mechanism"
21
- map_attribute "id", to: :id
22
- map_attribute "title", to: :title
23
- map_attribute "dictRef", to: :dict_ref
24
- map_attribute "convention", to: :convention
21
+ map_element 'mechanismComponent', to: :mechanism_components
22
+ root 'mechanism'
23
+ map_attribute 'id', to: :id
24
+ map_attribute 'title', to: :title
25
+ map_attribute 'dictRef', to: :dict_ref
26
+ map_attribute 'convention', to: :convention
27
+ end
28
+ key_value do
29
+ map 'metadataList', to: :metadata_lists
30
+ map 'label', to: :labels
31
+ map 'name', to: :names
32
+ map 'description', to: :descriptions
33
+ map 'mechanismComponent', to: :mechanism_components
34
+ map 'id', to: :id
35
+ map 'title', to: :title
36
+ map 'dictRef', to: :dict_ref
37
+ map 'convention', to: :convention
25
38
  end
26
39
  end
27
40
  end
@@ -7,6 +7,7 @@ module Chemicalml
7
7
  def self.included(klass)
8
8
  klass.class_eval do
9
9
  include Chemicalml::Cml::Role::MechanismComponent
10
+
10
11
  attribute :id, :string
11
12
  attribute :title, :string
12
13
  attribute :dict_ref, :string
@@ -15,12 +16,19 @@ module Chemicalml
15
16
 
16
17
  xml do
17
18
  namespace Chemicalml::Cml::Namespace
18
- root "mechanismComponent"
19
- map_attribute "id", to: :id
20
- map_attribute "title", to: :title
21
- map_attribute "dictRef", to: :dict_ref
22
- map_attribute "convention", to: :convention
23
- map_attribute "role", to: :role
19
+ root 'mechanismComponent'
20
+ map_attribute 'id', to: :id
21
+ map_attribute 'title', to: :title
22
+ map_attribute 'dictRef', to: :dict_ref
23
+ map_attribute 'convention', to: :convention
24
+ map_attribute 'role', to: :role
25
+ end
26
+ key_value do
27
+ map 'id', to: :id
28
+ map 'title', to: :title
29
+ map 'dictRef', to: :dict_ref
30
+ map 'convention', to: :convention
31
+ map 'role', to: :role
24
32
  end
25
33
  end
26
34
  end
@@ -7,6 +7,7 @@ module Chemicalml
7
7
  def self.included(klass)
8
8
  klass.class_eval do
9
9
  include Chemicalml::Cml::Role::Metadata
10
+
10
11
  attribute :id, :string
11
12
  attribute :name, :string
12
13
  attribute :content, :string
@@ -17,14 +18,23 @@ module Chemicalml
17
18
  attribute :metadata_type, :string
18
19
  xml do
19
20
  namespace Chemicalml::Cml::Namespace
20
- root "metadata"
21
- map_attribute "id", to: :id
22
- map_attribute "name", to: :name
23
- map_attribute "content", to: :content
24
- map_attribute "convention", to: :convention
25
- map_attribute "title", to: :title
26
- map_attribute "dictRef", to: :dict_ref
27
- map_attribute "metadataType", to: :metadata_type
21
+ root 'metadata'
22
+ map_attribute 'id', to: :id
23
+ map_attribute 'name', to: :name
24
+ map_attribute 'content', to: :content
25
+ map_attribute 'convention', to: :convention
26
+ map_attribute 'title', to: :title
27
+ map_attribute 'dictRef', to: :dict_ref
28
+ map_attribute 'metadataType', to: :metadata_type
29
+ end
30
+ key_value do
31
+ map 'id', to: :id
32
+ map 'name', to: :name
33
+ map 'content', to: :content
34
+ map 'convention', to: :convention
35
+ map 'title', to: :title
36
+ map 'dictRef', to: :dict_ref
37
+ map 'metadataType', to: :metadata_type
28
38
  end
29
39
  end
30
40
  end
@@ -7,6 +7,8 @@ module Chemicalml
7
7
  def self.included(klass)
8
8
  klass.class_eval do
9
9
  include Chemicalml::Cml::Role::MetadataList
10
+ include Chemicalml::Cml::Base::CommonChildren
11
+
10
12
  attribute :id, :string
11
13
  attribute :title, :string
12
14
  attribute :dict_ref, :string
@@ -15,16 +17,33 @@ module Chemicalml
15
17
  attribute :convention, :string
16
18
  attribute :name, :string
17
19
  attribute :role, :string
20
+ attribute :metadata_lists_inner, :metadataList, collection: true
21
+
18
22
  xml do
19
23
  namespace Chemicalml::Cml::Namespace
20
- root "metadataList"
21
- map_attribute "id", to: :id
22
- map_attribute "title", to: :title
23
- map_attribute "dictRef", to: :dict_ref
24
- map_element "metadata", to: :metadata
25
- map_attribute "convention", to: :convention
26
- map_attribute "name", to: :name
27
- map_attribute "role", to: :role
24
+ root 'metadataList'
25
+ map_attribute 'id', to: :id
26
+ map_attribute 'title', to: :title
27
+ map_attribute 'dictRef', to: :dict_ref
28
+ map_element 'metadata', to: :metadata
29
+ map_element 'metadataList', to: :metadata_lists_inner
30
+ map_attribute 'convention', to: :convention
31
+ map_attribute 'name', to: :name
32
+ map_attribute 'role', to: :role
33
+ end
34
+ key_value do
35
+ map 'metadataList', to: :metadata_lists
36
+ map 'label', to: :labels
37
+ map 'name', to: :names
38
+ map 'description', to: :descriptions
39
+ map 'metadata', to: :metadata
40
+ map 'metadataList', to: :metadata_lists_inner
41
+ map 'id', to: :id
42
+ map 'title', to: :title
43
+ map 'dictRef', to: :dict_ref
44
+ map 'convention', to: :convention
45
+ map 'name', to: :name
46
+ map 'role', to: :role
28
47
  end
29
48
  end
30
49
  end