chemicalml 0.2.1 → 0.3.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 (347) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +23 -0
  3. data/CLAUDE.md +49 -1
  4. data/README.adoc +154 -26
  5. data/TODO.align/61-parallel-array-attrs.md +54 -0
  6. data/TODO.align/62-per-element-attribute-gaps.md +49 -0
  7. data/TODO.align/63-universal-children-mixin.md +42 -0
  8. data/TODO.align/64-per-element-child-gaps.md +81 -0
  9. data/TODO.align/65-simple-unit-convention.md +40 -0
  10. data/TODO.align/66-schema24-legacy-children.md +32 -0
  11. data/TODO.align/67-final-verification.md +32 -0
  12. data/TODO.align/68-detection-coverage.md +33 -0
  13. data/TODO.align/69-json-yaml-roundtrip.md +27 -0
  14. data/TODO.align/70-iterative-walker.md +40 -0
  15. data/TODO.align/71-violation-value.md +25 -0
  16. data/TODO.align/72-close-child-gaps.md +66 -0
  17. data/TODO.align/73-schema24-parse-limitation.md +64 -0
  18. data/TODO.align/74-final-verification-round18.md +15 -0
  19. data/TODO.align/75-key-value-mappings.md +43 -0
  20. data/TODO.align/76-schema24-workaround.md +57 -0
  21. data/TODO.align/77-convention-coverage-matrix.md +31 -0
  22. data/TODO.align/78-fixture-audit.md +23 -0
  23. data/TODO.align/79-final-verification-round19.md +15 -0
  24. data/TODO.align/80-xsd-enum-constants.md +35 -0
  25. data/TODO.align/81-enum-validation-constraints.md +29 -0
  26. data/TODO.align/82-reference-resolver.md +33 -0
  27. data/TODO.align/83-toml-roundtrip.md +20 -0
  28. data/TODO.align/84-final-verification-round21.md +16 -0
  29. data/TODO.align/85-bond-distinct-atoms.md +25 -0
  30. data/TODO.align/86-references-should-resolve.md +20 -0
  31. data/TODO.align/87-cli-utility.md +26 -0
  32. data/TODO.align/88-diverse-fixtures.md +26 -0
  33. data/TODO.align/89-final-verification-round22.md +15 -0
  34. data/TODO.align/90-bond-stereo-completeness.md +31 -0
  35. data/TODO.align/91-atomparity-distinct.md +21 -0
  36. data/TODO.align/92-unit-dictionary-completeness.md +28 -0
  37. data/TODO.align/93-yard-docs.md +23 -0
  38. data/TODO.align/94-final-verification-round23.md +15 -0
  39. data/TODO.align/README.round17.md +28 -0
  40. data/TODO.align/README.round18.md +37 -0
  41. data/TODO.align/README.round19.md +40 -0
  42. data/TODO.align/README.round20.md +49 -0
  43. data/TODO.align/README.round21.md +35 -0
  44. data/TODO.align/README.round22.md +48 -0
  45. data/TODO.align/README.round23.md +46 -0
  46. data/TODO.align/README.round24.md +53 -0
  47. data/TODO.align/README.round25.md +66 -0
  48. data/TODO.align/README.round26.md +55 -0
  49. data/TODO.align/README.round27.md +51 -0
  50. data/TODO.align/README.round28.md +61 -0
  51. data/TODO.align/README.round29.md +64 -0
  52. data/TODO.align/README.round30.md +50 -0
  53. data/TODO.align/README.round31.md +54 -0
  54. data/TODO.align/README.round32.md +67 -0
  55. data/TODO.align/README.round33.md +62 -0
  56. data/TODO.align/README.round34.md +70 -0
  57. data/docs/constraints.md +161 -0
  58. data/docs/generate_constraint_docs.rb +44 -0
  59. data/exe/chemicalml +6 -0
  60. data/lib/chemicalml/cli/base.rb +68 -0
  61. data/lib/chemicalml/cli/command.rb +43 -0
  62. data/lib/chemicalml/cli/constraints_command.rb +27 -0
  63. data/lib/chemicalml/cli/conventions_command.rb +14 -0
  64. data/lib/chemicalml/cli/dictionaries_command.rb +14 -0
  65. data/lib/chemicalml/cli/elements_command.rb +17 -0
  66. data/lib/chemicalml/cli/enums_command.rb +17 -0
  67. data/lib/chemicalml/cli/info_command.rb +77 -0
  68. data/lib/chemicalml/cli/inspect_command.rb +39 -0
  69. data/lib/chemicalml/cli/validate_command.rb +54 -0
  70. data/lib/chemicalml/cli.rb +43 -0
  71. data/lib/chemicalml/cml/base/abundance.rb +18 -8
  72. data/lib/chemicalml/cml/base/action.rb +34 -16
  73. data/lib/chemicalml/cml/base/action_list.rb +35 -17
  74. data/lib/chemicalml/cml/base/alternative.rb +13 -4
  75. data/lib/chemicalml/cml/base/amount.rb +14 -6
  76. data/lib/chemicalml/cml/base/angle.rb +28 -13
  77. data/lib/chemicalml/cml/base/annotation.rb +14 -6
  78. data/lib/chemicalml/cml/base/any_cml.rb +12 -5
  79. data/lib/chemicalml/cml/base/appinfo.rb +14 -6
  80. data/lib/chemicalml/cml/base/arg.rb +47 -13
  81. data/lib/chemicalml/cml/base/array.rb +40 -19
  82. data/lib/chemicalml/cml/base/array_list.rb +14 -6
  83. data/lib/chemicalml/cml/base/atom.rb +84 -28
  84. data/lib/chemicalml/cml/base/atom_array.rb +60 -23
  85. data/lib/chemicalml/cml/base/atom_parity.rb +14 -6
  86. data/lib/chemicalml/cml/base/atom_set.rb +14 -6
  87. data/lib/chemicalml/cml/base/atom_type.rb +25 -9
  88. data/lib/chemicalml/cml/base/atom_type_list.rb +22 -8
  89. data/lib/chemicalml/cml/base/atomic_basis_function.rb +33 -13
  90. data/lib/chemicalml/cml/base/band.rb +21 -8
  91. data/lib/chemicalml/cml/base/band_list.rb +15 -7
  92. data/lib/chemicalml/cml/base/basis_set.rb +24 -9
  93. data/lib/chemicalml/cml/base/bond.rb +36 -10
  94. data/lib/chemicalml/cml/base/bond_array.rb +34 -11
  95. data/lib/chemicalml/cml/base/bond_set.rb +14 -6
  96. data/lib/chemicalml/cml/base/bond_stereo.rb +20 -9
  97. data/lib/chemicalml/cml/base/bond_type.rb +23 -8
  98. data/lib/chemicalml/cml/base/bond_type_list.rb +22 -8
  99. data/lib/chemicalml/cml/base/cell_parameter.rb +28 -10
  100. data/lib/chemicalml/cml/base/cml_module.rb +36 -11
  101. data/lib/chemicalml/cml/base/common_children.rb +35 -0
  102. data/lib/chemicalml/cml/base/complex_object.rb +12 -5
  103. data/lib/chemicalml/cml/base/condition_list.rb +26 -10
  104. data/lib/chemicalml/cml/base/crystal.rb +26 -10
  105. data/lib/chemicalml/cml/base/definition.rb +12 -5
  106. data/lib/chemicalml/cml/base/description.rb +14 -6
  107. data/lib/chemicalml/cml/base/dictionary.rb +27 -10
  108. data/lib/chemicalml/cml/base/dictionary_entry.rb +67 -8
  109. data/lib/chemicalml/cml/base/dimension.rb +26 -12
  110. data/lib/chemicalml/cml/base/document.rb +18 -8
  111. data/lib/chemicalml/cml/base/documentation.rb +12 -5
  112. data/lib/chemicalml/cml/base/eigen.rb +32 -8
  113. data/lib/chemicalml/cml/base/electron.rb +26 -12
  114. data/lib/chemicalml/cml/base/enumeration.rb +16 -7
  115. data/lib/chemicalml/cml/base/expression.rb +21 -6
  116. data/lib/chemicalml/cml/base/float.rb +22 -10
  117. data/lib/chemicalml/cml/base/float_array.rb +24 -11
  118. data/lib/chemicalml/cml/base/formula.rb +31 -10
  119. data/lib/chemicalml/cml/base/fragment.rb +30 -12
  120. data/lib/chemicalml/cml/base/fragment_list.rb +24 -9
  121. data/lib/chemicalml/cml/base/gradient.rb +19 -6
  122. data/lib/chemicalml/cml/base/identifier.rb +18 -8
  123. data/lib/chemicalml/cml/base/integer.rb +22 -10
  124. data/lib/chemicalml/cml/base/integer_array.rb +24 -11
  125. data/lib/chemicalml/cml/base/isotope.rb +28 -9
  126. data/lib/chemicalml/cml/base/isotope_list.rb +17 -8
  127. data/lib/chemicalml/cml/base/join.rb +25 -9
  128. data/lib/chemicalml/cml/base/kpoint.rb +16 -7
  129. data/lib/chemicalml/cml/base/kpoint_list.rb +15 -7
  130. data/lib/chemicalml/cml/base/label.rb +14 -6
  131. data/lib/chemicalml/cml/base/lattice.rb +35 -10
  132. data/lib/chemicalml/cml/base/lattice_vector.rb +16 -7
  133. data/lib/chemicalml/cml/base/length.rb +26 -12
  134. data/lib/chemicalml/cml/base/line3.rb +18 -8
  135. data/lib/chemicalml/cml/base/link.rb +41 -20
  136. data/lib/chemicalml/cml/base/list.rb +22 -10
  137. data/lib/chemicalml/cml/base/map.rb +32 -11
  138. data/lib/chemicalml/cml/base/matrix.rb +32 -15
  139. data/lib/chemicalml/cml/base/mechanism.rb +20 -7
  140. data/lib/chemicalml/cml/base/mechanism_component.rb +14 -6
  141. data/lib/chemicalml/cml/base/metadata.rb +18 -8
  142. data/lib/chemicalml/cml/base/metadata_list.rb +27 -8
  143. data/lib/chemicalml/cml/base/molecule.rb +90 -26
  144. data/lib/chemicalml/cml/base/molecule_list.rb +26 -8
  145. data/lib/chemicalml/cml/base/name.rb +10 -4
  146. data/lib/chemicalml/cml/base/object.rb +18 -8
  147. data/lib/chemicalml/cml/base/observation.rb +16 -7
  148. data/lib/chemicalml/cml/base/operator.rb +14 -6
  149. data/lib/chemicalml/cml/base/parameter.rb +33 -13
  150. data/lib/chemicalml/cml/base/parameter_list.rb +27 -8
  151. data/lib/chemicalml/cml/base/particle.rb +20 -9
  152. data/lib/chemicalml/cml/base/peak.rb +71 -26
  153. data/lib/chemicalml/cml/base/peak_group.rb +62 -26
  154. data/lib/chemicalml/cml/base/peak_list.rb +24 -9
  155. data/lib/chemicalml/cml/base/peak_structure.rb +40 -13
  156. data/lib/chemicalml/cml/base/plane3.rb +14 -6
  157. data/lib/chemicalml/cml/base/point3.rb +14 -6
  158. data/lib/chemicalml/cml/base/potential.rb +17 -6
  159. data/lib/chemicalml/cml/base/potential_form.rb +30 -7
  160. data/lib/chemicalml/cml/base/potential_list.rb +15 -7
  161. data/lib/chemicalml/cml/base/product.rb +45 -10
  162. data/lib/chemicalml/cml/base/product_list.rb +29 -9
  163. data/lib/chemicalml/cml/base/property.rb +29 -11
  164. data/lib/chemicalml/cml/base/property_list.rb +23 -8
  165. data/lib/chemicalml/cml/base/reactant.rb +45 -10
  166. data/lib/chemicalml/cml/base/reactant_list.rb +29 -9
  167. data/lib/chemicalml/cml/base/reaction.rb +74 -20
  168. data/lib/chemicalml/cml/base/reaction_list.rb +23 -8
  169. data/lib/chemicalml/cml/base/reaction_scheme.rb +43 -13
  170. data/lib/chemicalml/cml/base/reaction_step.rb +30 -12
  171. data/lib/chemicalml/cml/base/reaction_step_list.rb +30 -11
  172. data/lib/chemicalml/cml/base/reactive_centre.rb +31 -6
  173. data/lib/chemicalml/cml/base/region.rb +20 -9
  174. data/lib/chemicalml/cml/base/related_entry.rb +11 -3
  175. data/lib/chemicalml/cml/base/sample.rb +30 -7
  176. data/lib/chemicalml/cml/base/scalar.rb +32 -15
  177. data/lib/chemicalml/cml/base/spectator.rb +25 -6
  178. data/lib/chemicalml/cml/base/spectator_list.rb +20 -7
  179. data/lib/chemicalml/cml/base/spectrum.rb +57 -18
  180. data/lib/chemicalml/cml/base/spectrum_data.rb +19 -9
  181. data/lib/chemicalml/cml/base/spectrum_list.rb +28 -9
  182. data/lib/chemicalml/cml/base/sphere3.rb +14 -6
  183. data/lib/chemicalml/cml/base/stmml.rb +12 -5
  184. data/lib/chemicalml/cml/base/string.rb +14 -6
  185. data/lib/chemicalml/cml/base/string_array.rb +22 -10
  186. data/lib/chemicalml/cml/base/substance.rb +36 -14
  187. data/lib/chemicalml/cml/base/substance_list.rb +29 -10
  188. data/lib/chemicalml/cml/base/symmetry.rb +31 -9
  189. data/lib/chemicalml/cml/base/system.rb +21 -10
  190. data/lib/chemicalml/cml/base/table.rb +38 -13
  191. data/lib/chemicalml/cml/base/table_cell.rb +12 -5
  192. data/lib/chemicalml/cml/base/table_content.rb +19 -9
  193. data/lib/chemicalml/cml/base/table_header.rb +15 -7
  194. data/lib/chemicalml/cml/base/table_header_cell.rb +22 -10
  195. data/lib/chemicalml/cml/base/table_row.rb +15 -7
  196. data/lib/chemicalml/cml/base/table_row_list.rb +15 -7
  197. data/lib/chemicalml/cml/base/tcell.rb +16 -7
  198. data/lib/chemicalml/cml/base/torsion.rb +28 -13
  199. data/lib/chemicalml/cml/base/transform3.rb +12 -5
  200. data/lib/chemicalml/cml/base/transition_state.rb +23 -5
  201. data/lib/chemicalml/cml/base/trow.rb +22 -6
  202. data/lib/chemicalml/cml/base/unit.rb +39 -16
  203. data/lib/chemicalml/cml/base/unit_list.rb +34 -12
  204. data/lib/chemicalml/cml/base/unit_type.rb +27 -10
  205. data/lib/chemicalml/cml/base/unit_type_list.rb +29 -11
  206. data/lib/chemicalml/cml/base/vector3.rb +14 -6
  207. data/lib/chemicalml/cml/base/xaxis.rb +30 -10
  208. data/lib/chemicalml/cml/base/yaxis.rb +30 -10
  209. data/lib/chemicalml/cml/base/z_matrix.rb +26 -5
  210. data/lib/chemicalml/cml/base.rb +139 -138
  211. data/lib/chemicalml/cml/canonical_comparison.rb +54 -0
  212. data/lib/chemicalml/cml/elements.rb +145 -136
  213. data/lib/chemicalml/cml/enums.rb +55 -0
  214. data/lib/chemicalml/cml/namespace.rb +2 -3
  215. data/lib/chemicalml/cml/patterns.rb +33 -0
  216. data/lib/chemicalml/cml/reference_resolver.rb +137 -0
  217. data/lib/chemicalml/cml/role.rb +138 -138
  218. data/lib/chemicalml/cml/schema24/configuration.rb +11 -1
  219. data/lib/chemicalml/cml/schema24.rb +139 -139
  220. data/lib/chemicalml/cml/schema3.rb +123 -123
  221. data/lib/chemicalml/cml/visitable.rb +77 -3
  222. data/lib/chemicalml/cml/wire_class_registry.rb +3 -3
  223. data/lib/chemicalml/cml.rb +163 -129
  224. data/lib/chemicalml/context_configuration.rb +4 -2
  225. data/lib/chemicalml/convention/cascade/constraints/reaction_scheme_must_have_content.rb +33 -0
  226. data/lib/chemicalml/convention/cascade/constraints/reaction_step_list_must_contain_steps.rb +31 -0
  227. data/lib/chemicalml/convention/cascade/constraints/reaction_step_must_have_reaction_or_lists.rb +33 -0
  228. data/lib/chemicalml/convention/cascade/constraints/reactive_centre_atom_refs_should_be_present.rb +34 -0
  229. data/lib/chemicalml/convention/cascade/constraints.rb +18 -0
  230. data/lib/chemicalml/convention/cascade.rb +43 -0
  231. data/lib/chemicalml/convention/compchem/constraints/array_rules.rb +1 -1
  232. data/lib/chemicalml/convention/compchem/constraints/calculation_requires_finalization.rb +1 -1
  233. data/lib/chemicalml/convention/compchem/constraints/compchem_module_must_contain_job_list.rb +2 -1
  234. data/lib/chemicalml/convention/compchem/constraints/environment_at_most_one_property_list.rb +1 -1
  235. data/lib/chemicalml/convention/compchem/constraints/environment_must_not_contain_parameter.rb +1 -1
  236. data/lib/chemicalml/convention/compchem/constraints/finalization_at_most_one_molecule.rb +1 -1
  237. data/lib/chemicalml/convention/compchem/constraints/finalization_at_most_one_property_list.rb +1 -1
  238. data/lib/chemicalml/convention/compchem/constraints/finalization_must_have_content.rb +44 -0
  239. data/lib/chemicalml/convention/compchem/constraints/finalization_must_not_contain_parameter.rb +1 -1
  240. data/lib/chemicalml/convention/compchem/constraints/initialization_at_most_one_molecule.rb +1 -1
  241. data/lib/chemicalml/convention/compchem/constraints/initialization_at_most_one_parameter_list.rb +1 -1
  242. data/lib/chemicalml/convention/compchem/constraints/initialization_must_have_content.rb +54 -0
  243. data/lib/chemicalml/convention/compchem/constraints/initialization_must_not_contain_property.rb +1 -1
  244. data/lib/chemicalml/convention/compchem/constraints/job_list_module_must_have_id.rb +1 -0
  245. data/lib/chemicalml/convention/compchem/constraints/job_module_at_most_one_environment.rb +1 -1
  246. data/lib/chemicalml/convention/compchem/constraints/job_module_at_most_one_finalization.rb +1 -1
  247. data/lib/chemicalml/convention/compchem/constraints/job_module_must_have_id.rb +1 -0
  248. data/lib/chemicalml/convention/compchem/constraints/job_must_contain_initialization.rb +1 -0
  249. data/lib/chemicalml/convention/compchem/constraints/matrix_rules.rb +1 -1
  250. data/lib/chemicalml/convention/compchem/constraints/scalar_units.rb +1 -1
  251. data/lib/chemicalml/convention/compchem/constraints.rb +4 -0
  252. data/lib/chemicalml/convention/compchem.rb +4 -2
  253. data/lib/chemicalml/convention/constraint.rb +40 -9
  254. data/lib/chemicalml/convention/coordinator.rb +4 -3
  255. data/lib/chemicalml/convention/detection.rb +10 -4
  256. data/lib/chemicalml/convention/dictionary/constraints/dictionary_must_have_namespace.rb +1 -0
  257. data/lib/chemicalml/convention/dictionary/constraints/dictionary_namespace_should_end_with_slash_or_hash.rb +1 -1
  258. data/lib/chemicalml/convention/dictionary/constraints/entry_id_must_match_pattern.rb +1 -1
  259. data/lib/chemicalml/convention/dictionary/constraints/entry_ids_unique_within_dictionary.rb +1 -1
  260. data/lib/chemicalml/convention/dictionary/constraints/entry_must_contain_definition.rb +1 -0
  261. data/lib/chemicalml/convention/dictionary/constraints/entry_must_have_id_and_term.rb +1 -1
  262. data/lib/chemicalml/convention/dictionary/constraints/entry_must_have_unit_type.rb +1 -0
  263. data/lib/chemicalml/convention/dictionary/constraints/entry_units_co_constraints.rb +1 -1
  264. data/lib/chemicalml/convention/dictionary/constraints.rb +8 -8
  265. data/lib/chemicalml/convention/dictionary.rb +2 -2
  266. data/lib/chemicalml/convention/molecular/constraints/atom_array_must_be_child_of_molecule_or_formula.rb +1 -0
  267. data/lib/chemicalml/convention/molecular/constraints/atom_array_must_contain_atoms.rb +15 -6
  268. data/lib/chemicalml/convention/molecular/constraints/atom_coordinates_must_be_paired.rb +1 -1
  269. data/lib/chemicalml/convention/molecular/constraints/atom_element_type_should_be_in_periodic_table.rb +39 -0
  270. data/lib/chemicalml/convention/molecular/constraints/atom_id_must_match_pattern.rb +3 -2
  271. data/lib/chemicalml/convention/molecular/constraints/atom_ids_unique_within_molecule.rb +1 -0
  272. data/lib/chemicalml/convention/molecular/constraints/atom_must_have_element_type.rb +1 -1
  273. data/lib/chemicalml/convention/molecular/constraints/atom_must_have_id.rb +2 -1
  274. data/lib/chemicalml/convention/molecular/constraints/atom_parity_atom_refs4_should_be_distinct.rb +44 -0
  275. data/lib/chemicalml/convention/molecular/constraints/atom_parity_should_include_parent_atom.rb +65 -0
  276. data/lib/chemicalml/convention/molecular/constraints/bond_array_must_be_child_of_molecule.rb +1 -0
  277. data/lib/chemicalml/convention/molecular/constraints/bond_atom_refs2_should_be_distinct.rb +44 -0
  278. data/lib/chemicalml/convention/molecular/constraints/bond_id_should_match_pattern.rb +38 -0
  279. data/lib/chemicalml/convention/molecular/constraints/bond_ids_unique_within_molecule.rb +1 -0
  280. data/lib/chemicalml/convention/molecular/constraints/bond_must_have_atom_refs2.rb +1 -1
  281. data/lib/chemicalml/convention/molecular/constraints/bond_must_have_order.rb +2 -1
  282. data/lib/chemicalml/convention/molecular/constraints/bond_must_reference_atoms_in_same_molecule.rb +1 -0
  283. data/lib/chemicalml/convention/molecular/constraints/bond_order_other_must_have_dict_ref.rb +1 -0
  284. data/lib/chemicalml/convention/molecular/constraints/bond_order_should_be_in_enum.rb +39 -0
  285. data/lib/chemicalml/convention/molecular/constraints/bond_order_should_not_be_numeric.rb +1 -1
  286. data/lib/chemicalml/convention/molecular/constraints/bond_stereo_atom_refs4_should_be_distinct.rb +43 -0
  287. data/lib/chemicalml/convention/molecular/constraints/bond_stereo_cis_trans_must_have_atom_refs4.rb +1 -1
  288. data/lib/chemicalml/convention/molecular/constraints/bond_stereo_other_must_have_dict_ref.rb +1 -0
  289. data/lib/chemicalml/convention/molecular/constraints/bond_stereo_should_be_in_enum.rb +38 -0
  290. data/lib/chemicalml/convention/molecular/constraints/bond_stereo_wedge_hash_must_have_atom_refs2.rb +1 -1
  291. data/lib/chemicalml/convention/molecular/constraints/dict_ref_should_resolve.rb +59 -0
  292. data/lib/chemicalml/convention/molecular/constraints/molecule_atom_array_mutually_exclusive_with_children.rb +1 -0
  293. data/lib/chemicalml/convention/molecular/constraints/molecule_bond_array_mutually_exclusive_with_children.rb +1 -0
  294. data/lib/chemicalml/convention/molecular/constraints/molecule_chirality_should_be_in_enum.rb +38 -0
  295. data/lib/chemicalml/convention/molecular/constraints/molecule_count_must_not_appear_on_top_level.rb +1 -0
  296. data/lib/chemicalml/convention/molecular/constraints/molecule_id_should_match_pattern.rb +38 -0
  297. data/lib/chemicalml/convention/molecular/constraints/molecule_must_have_id.rb +1 -1
  298. data/lib/chemicalml/convention/molecular/constraints/property_must_have_dict_ref.rb +1 -1
  299. data/lib/chemicalml/convention/molecular/constraints/property_scalar_data_type_matches_dictionary.rb +58 -0
  300. data/lib/chemicalml/convention/molecular/constraints/references_should_resolve.rb +37 -0
  301. data/lib/chemicalml/convention/molecular/constraints/scalar_must_have_data_type.rb +1 -1
  302. data/lib/chemicalml/convention/molecular/constraints.rb +49 -23
  303. data/lib/chemicalml/convention/molecular.rb +15 -2
  304. data/lib/chemicalml/convention/registry.rb +79 -11
  305. data/lib/chemicalml/convention/simple_unit/constraints/root_must_be_unit_list.rb +24 -0
  306. data/lib/chemicalml/convention/simple_unit/constraints/unit_must_have_power.rb +32 -0
  307. data/lib/chemicalml/convention/simple_unit/constraints/unit_must_have_symbol.rb +31 -0
  308. data/lib/chemicalml/convention/simple_unit/constraints.rb +16 -0
  309. data/lib/chemicalml/convention/simple_unit.rb +37 -0
  310. data/lib/chemicalml/convention/spectroscopy/constraints/peak_list_must_contain_peaks.rb +31 -0
  311. data/lib/chemicalml/convention/spectroscopy/constraints/peak_should_have_values.rb +34 -0
  312. data/lib/chemicalml/convention/spectroscopy/constraints/spectrum_must_have_content.rb +31 -0
  313. data/lib/chemicalml/convention/spectroscopy/constraints/spectrum_must_have_convention.rb +32 -0
  314. data/lib/chemicalml/convention/spectroscopy/constraints/spectrum_must_have_format.rb +31 -0
  315. data/lib/chemicalml/convention/spectroscopy/constraints.rb +20 -0
  316. data/lib/chemicalml/convention/spectroscopy.rb +41 -0
  317. data/lib/chemicalml/convention/unit_dictionary/constraints/unit_list_must_contain_at_least_one_unit.rb +1 -0
  318. data/lib/chemicalml/convention/unit_dictionary/constraints/unit_list_must_have_namespace.rb +1 -1
  319. data/lib/chemicalml/convention/unit_dictionary/constraints/unit_must_contain_definition.rb +1 -0
  320. data/lib/chemicalml/convention/unit_dictionary/constraints/unit_must_have_id.rb +1 -0
  321. data/lib/chemicalml/convention/unit_dictionary/constraints/unit_must_have_multiplier_or_constant_to_si.rb +34 -0
  322. data/lib/chemicalml/convention/unit_dictionary/constraints/unit_must_have_parent_si.rb +32 -0
  323. data/lib/chemicalml/convention/unit_dictionary/constraints/unit_must_have_symbol_and_unit_type.rb +1 -1
  324. data/lib/chemicalml/convention/unit_dictionary/constraints/unit_must_have_title.rb +32 -0
  325. data/lib/chemicalml/convention/unit_dictionary/constraints/unit_parent_si_should_resolve.rb +45 -0
  326. data/lib/chemicalml/convention/unit_dictionary/constraints/unit_unit_type_should_resolve.rb +46 -0
  327. data/lib/chemicalml/convention/unit_dictionary/constraints.rb +10 -0
  328. data/lib/chemicalml/convention/unit_dictionary.rb +7 -2
  329. data/lib/chemicalml/convention/unit_type_dictionary/constraints/unit_type_id_must_match_pattern.rb +1 -1
  330. data/lib/chemicalml/convention/unit_type_dictionary/constraints/unit_type_list_must_contain_at_least_one_unit_type.rb +1 -0
  331. data/lib/chemicalml/convention/unit_type_dictionary/constraints/unit_type_list_must_have_namespace.rb +1 -1
  332. data/lib/chemicalml/convention/unit_type_dictionary/constraints/unit_type_must_contain_definition.rb +1 -0
  333. data/lib/chemicalml/convention/unit_type_dictionary/constraints/unit_type_must_have_id_and_name.rb +1 -1
  334. data/lib/chemicalml/convention/unit_type_dictionary.rb +2 -2
  335. data/lib/chemicalml/convention/validation_report.rb +30 -3
  336. data/lib/chemicalml/convention/violation.rb +9 -3
  337. data/lib/chemicalml/convention.rb +41 -14
  338. data/lib/chemicalml/dictionary.rb +13 -9
  339. data/lib/chemicalml/logger.rb +47 -0
  340. data/lib/chemicalml/schema/definition.rb +2 -2
  341. data/lib/chemicalml/schema.rb +7 -7
  342. data/lib/chemicalml/version.rb +1 -1
  343. data/lib/chemicalml/versioned_parser.rb +10 -10
  344. data/lib/chemicalml.rb +78 -15
  345. data/lib/tasks/reference_fetch.rake +30 -31
  346. data/lib/tasks/scrape_fixtures.rake +23 -24
  347. metadata +114 -3
@@ -7,6 +7,7 @@ module Chemicalml
7
7
  def self.included(klass)
8
8
  klass.class_eval do
9
9
  include Chemicalml::Cml::Role::BondStereo
10
+
10
11
  attribute :atom_refs2, :string
11
12
  attribute :atom_refs4, :string
12
13
  attribute :dict_ref, :string
@@ -19,16 +20,26 @@ module Chemicalml
19
20
  attribute :convention_value, :string
20
21
  xml do
21
22
  namespace Chemicalml::Cml::Namespace
22
- root "bondStereo"
23
- map_attribute "atomRefs2", to: :atom_refs2
24
- map_attribute "atomRefs4", to: :atom_refs4
25
- map_attribute "dictRef", to: :dict_ref
23
+ root 'bondStereo'
24
+ map_attribute 'atomRefs2', to: :atom_refs2
25
+ map_attribute 'atomRefs4', to: :atom_refs4
26
+ map_attribute 'dictRef', to: :dict_ref
26
27
  map_content to: :content
27
- map_attribute "atomRefArray", to: :atom_ref_array
28
- map_attribute "title", to: :title
29
- map_attribute "id", to: :id
30
- map_attribute "convention", to: :convention
31
- map_attribute "conventionValue", to: :convention_value
28
+ map_attribute 'atomRefArray', to: :atom_ref_array
29
+ map_attribute 'title', to: :title
30
+ map_attribute 'id', to: :id
31
+ map_attribute 'convention', to: :convention
32
+ map_attribute 'conventionValue', to: :convention_value
33
+ end
34
+ key_value do
35
+ map 'atomRefs2', to: :atom_refs2
36
+ map 'atomRefs4', to: :atom_refs4
37
+ map 'dictRef', to: :dict_ref
38
+ map 'atomRefArray', to: :atom_ref_array
39
+ map 'title', to: :title
40
+ map 'id', to: :id
41
+ map 'convention', to: :convention
42
+ map 'conventionValue', to: :convention_value
32
43
  end
33
44
  end
34
45
  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::BondType
10
+ include Chemicalml::Cml::Base::CommonChildren
11
+
10
12
  attribute :id, :string
11
13
  attribute :title, :string
12
14
  attribute :dict_ref, :string
@@ -17,14 +19,27 @@ module Chemicalml
17
19
  attribute :name, :string
18
20
  xml do
19
21
  namespace Chemicalml::Cml::Namespace
20
- root "bondType"
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 "order", to: :order
26
- map_attribute "ref", to: :ref
27
- map_attribute "name", to: :name
22
+ root 'bondType'
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_attribute 'order', to: :order
28
+ map_attribute 'ref', to: :ref
29
+ map_attribute 'name', to: :name
30
+ end
31
+ key_value do
32
+ map 'metadataList', to: :metadata_lists
33
+ map 'label', to: :labels
34
+ map 'name', to: :names
35
+ map 'description', to: :descriptions
36
+ map 'id', to: :id
37
+ map 'title', to: :title
38
+ map 'dictRef', to: :dict_ref
39
+ map 'convention', to: :convention
40
+ map 'order', to: :order
41
+ map 'ref', to: :ref
42
+ map 'name', to: :name
28
43
  end
29
44
  end
30
45
  end
@@ -7,23 +7,37 @@ module Chemicalml
7
7
  def self.included(klass)
8
8
  klass.class_eval do
9
9
  include Chemicalml::Cml::Role::BondTypeList
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 :bond_types, :bondType, collection: true
17
+ attribute :bond_types, :bondType, collection: true
16
18
 
17
19
  attribute :ref, :string
18
20
  xml do
19
21
  namespace Chemicalml::Cml::Namespace
20
- map_element "bondType", to: :bond_types
21
- root "bondTypeList"
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
26
- map_attribute "ref", to: :ref
22
+ map_element 'bondType', to: :bond_types
23
+ root 'bondTypeList'
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
+ end
30
+ key_value do
31
+ map 'metadataList', to: :metadata_lists
32
+ map 'label', to: :labels
33
+ map 'name', to: :names
34
+ map 'description', to: :descriptions
35
+ map 'bondType', to: :bond_types
36
+ map 'id', to: :id
37
+ map 'title', to: :title
38
+ map 'dictRef', to: :dict_ref
39
+ map 'convention', to: :convention
40
+ map 'ref', to: :ref
27
41
  end
28
42
  end
29
43
  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::CellParameter
10
+
10
11
  attribute :id, :string
11
12
  attribute :title, :string
12
13
  attribute :dict_ref, :string
@@ -17,18 +18,35 @@ module Chemicalml
17
18
 
18
19
  attribute :cell_parameter_type, :string
19
20
  attribute :cell_parameter_error, :string
21
+ attribute :type, :string
22
+ attribute :error, :string
20
23
  xml do
21
24
  namespace Chemicalml::Cml::Namespace
22
- root "cellParameter"
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_attribute "cellType", to: :cellType
28
- map_attribute "parameterType", to: :parameterType
29
- map_attribute "units", to: :units
30
- map_attribute "cellParameterType", to: :cell_parameter_type
31
- map_attribute "cellParameterError", to: :cell_parameter_error
25
+ root 'cellParameter'
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 'cellType', to: :cellType
31
+ map_attribute 'parameterType', to: :parameterType
32
+ map_attribute 'units', to: :units
33
+ map_attribute 'cellParameterType', to: :cell_parameter_type
34
+ map_attribute 'cellParameterError', to: :cell_parameter_error
35
+ map_attribute 'type', to: :type
36
+ map_attribute 'error', to: :error
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 'cellType', to: :cellType
44
+ map 'parameterType', to: :parameterType
45
+ map 'units', to: :units
46
+ map 'cellParameterType', to: :cell_parameter_type
47
+ map 'cellParameterError', to: :cell_parameter_error
48
+ map 'type', to: :type
49
+ map 'error', to: :error
32
50
  end
33
51
  end
34
52
  end
@@ -7,10 +7,15 @@ module Chemicalml
7
7
  def self.included(klass)
8
8
  klass.class_eval do
9
9
  include Chemicalml::Cml::Role::Module
10
+
10
11
  attribute :id, :string
11
12
  attribute :title, :string
12
13
  attribute :dict_ref, :string
13
14
  attribute :convention, :string
15
+ attribute :file_id, :string
16
+ attribute :version, :string
17
+ attribute :role, :string
18
+ attribute :serial, :string
14
19
  attribute :molecules, :molecule, collection: true
15
20
  attribute :modules, :module, collection: true
16
21
  attribute :parameter_lists, :parameterList, collection: true
@@ -20,17 +25,37 @@ module Chemicalml
20
25
 
21
26
  xml do
22
27
  namespace Chemicalml::Cml::Namespace
23
- root "module"
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 "molecule", to: :molecules
29
- map_element "module", to: :modules
30
- map_element "parameterList", to: :parameter_lists
31
- map_element "propertyList", to: :property_lists
32
- map_element "metadataList", to: :metadata_lists
33
- map_element "list", to: :lists
28
+ root 'module'
29
+ map_attribute 'id', to: :id
30
+ map_attribute 'title', to: :title
31
+ map_attribute 'dictRef', to: :dict_ref
32
+ map_attribute 'convention', to: :convention
33
+ map_attribute 'fileId', to: :file_id
34
+ map_attribute 'version', to: :version
35
+ map_attribute 'role', to: :role
36
+ map_attribute 'serial', to: :serial
37
+ map_element 'molecule', to: :molecules
38
+ map_element 'module', to: :modules
39
+ map_element 'parameterList', to: :parameter_lists
40
+ map_element 'propertyList', to: :property_lists
41
+ map_element 'metadataList', to: :metadata_lists
42
+ map_element 'list', to: :lists
43
+ end
44
+ key_value do
45
+ map 'molecule', to: :molecules
46
+ map 'module', to: :modules
47
+ map 'parameterList', to: :parameter_lists
48
+ map 'propertyList', to: :property_lists
49
+ map 'metadataList', to: :metadata_lists
50
+ map 'list', to: :lists
51
+ map 'id', to: :id
52
+ map 'title', to: :title
53
+ map 'dictRef', to: :dict_ref
54
+ map 'convention', to: :convention
55
+ map 'fileId', to: :file_id
56
+ map 'version', to: :version
57
+ map 'role', to: :role
58
+ map 'serial', to: :serial
34
59
  end
35
60
  end
36
61
  end
@@ -0,0 +1,35 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Chemicalml
4
+ module Cml
5
+ module Base
6
+ # Universal CML child elements. The XSD grants metadataList,
7
+ # label, name, and description as children to most CML elements.
8
+ # Mixing this module into a Base::* module adds the four child
9
+ # declarations in one place — keeping DRY discipline.
10
+ #
11
+ # Opt-in: only Base modules whose XSD declares these children
12
+ # include this mixin. This respects MECE ownership — each child
13
+ # declaration lives in exactly one place (here, for the universal
14
+ # set; in the specific Base module for element-specific
15
+ # children).
16
+ module CommonChildren
17
+ def self.included(klass)
18
+ klass.class_eval do
19
+ attribute :metadata_lists, :metadataList, collection: true
20
+ attribute :labels, :label, collection: true
21
+ attribute :names, :name, collection: true
22
+ attribute :descriptions, :description, collection: true
23
+
24
+ xml do
25
+ map_element 'metadataList', to: :metadata_lists
26
+ map_element 'label', to: :labels
27
+ map_element 'name', to: :names
28
+ map_element 'description', to: :descriptions
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
35
+ 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::ComplexObject
10
+
10
11
  attribute :title, :string
11
12
  attribute :id, :string
12
13
  attribute :convention, :string
@@ -15,13 +16,19 @@ module Chemicalml
15
16
 
16
17
  xml do
17
18
  namespace Chemicalml::Cml::Namespace
18
- root "complexObject"
19
- map_attribute "title", to: :title
20
- map_attribute "id", to: :id
21
- map_attribute "convention", to: :convention
22
- map_attribute "dictRef", to: :dict_ref
19
+ root 'complexObject'
20
+ map_attribute 'title', to: :title
21
+ map_attribute 'id', to: :id
22
+ map_attribute 'convention', to: :convention
23
+ map_attribute 'dictRef', to: :dict_ref
23
24
  map_content to: :content
24
25
  end
26
+ key_value do
27
+ map 'title', to: :title
28
+ map 'id', to: :id
29
+ map 'convention', to: :convention
30
+ map 'dictRef', to: :dict_ref
31
+ end
25
32
  end
26
33
  end
27
34
  end
@@ -7,27 +7,43 @@ module Chemicalml
7
7
  def self.included(klass)
8
8
  klass.class_eval do
9
9
  include Chemicalml::Cml::Role::ConditionList
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 :scalars, :scalar, collection: true
17
+ attribute :scalars, :scalar, collection: true
16
18
  attribute :metadata, :metadata
17
19
 
18
20
  attribute :ref, :string
19
21
  attribute :role, :string
20
22
  xml do
21
23
  namespace Chemicalml::Cml::Namespace
22
- map_element "scalar", to: :scalars
23
- map_element "metadata", to: :metadata
24
- root "conditionList"
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 "ref", to: :ref
30
- map_attribute "role", to: :role
24
+ map_element 'scalar', to: :scalars
25
+ map_element 'metadata', to: :metadata
26
+ root 'conditionList'
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 '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 'scalar', to: :scalars
40
+ map 'metadata', to: :metadata
41
+ map 'id', to: :id
42
+ map 'title', to: :title
43
+ map 'dictRef', to: :dict_ref
44
+ map 'convention', to: :convention
45
+ map 'ref', to: :ref
46
+ map 'role', to: :role
31
47
  end
32
48
  end
33
49
  end
@@ -7,27 +7,43 @@ module Chemicalml
7
7
  def self.included(klass)
8
8
  klass.class_eval do
9
9
  include Chemicalml::Cml::Role::Crystal
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 :scalars, :scalar, collection: true
17
+ attribute :scalars, :scalar, collection: true
16
18
  attribute :lattice, :lattice
17
19
  attribute :symmetry, :symmetry
18
20
 
19
21
  attribute :z, :string
20
22
  xml do
21
23
  namespace Chemicalml::Cml::Namespace
22
- map_element "scalar", to: :scalars
23
- map_element "lattice", to: :lattice
24
- map_element "symmetry", to: :symmetry
25
- root "crystal"
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 "z", to: :z
24
+ map_element 'scalar', to: :scalars
25
+ map_element 'lattice', to: :lattice
26
+ map_element 'symmetry', to: :symmetry
27
+ root 'crystal'
28
+ map_attribute 'id', to: :id
29
+ map_attribute 'title', to: :title
30
+ map_attribute 'dictRef', to: :dict_ref
31
+ map_attribute 'convention', to: :convention
32
+ map_attribute 'z', to: :z
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 'scalar', to: :scalars
40
+ map 'lattice', to: :lattice
41
+ map 'symmetry', to: :symmetry
42
+ map 'id', to: :id
43
+ map 'title', to: :title
44
+ map 'dictRef', to: :dict_ref
45
+ map 'convention', to: :convention
46
+ map 'z', to: :z
31
47
  end
32
48
  end
33
49
  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::Definition
10
+
10
11
  attribute :id, :string
11
12
  attribute :title, :string
12
13
  attribute :dict_ref, :string
@@ -15,13 +16,19 @@ module Chemicalml
15
16
 
16
17
  xml do
17
18
  namespace Chemicalml::Cml::Namespace
18
- root "definition"
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
19
+ root 'definition'
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
23
24
  map_content to: :content
24
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
+ end
25
32
  end
26
33
  end
27
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::Description
10
+
10
11
  attribute :id, :string
11
12
  attribute :title, :string
12
13
  attribute :dict_ref, :string
@@ -16,13 +17,20 @@ module Chemicalml
16
17
  attribute :object_class, :string
17
18
  xml do
18
19
  namespace Chemicalml::Cml::Namespace
19
- root "description"
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
20
+ root 'description'
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
24
25
  map_content to: :content
25
- map_attribute "objectClass", to: :object_class
26
+ map_attribute 'objectClass', to: :object_class
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 'objectClass', to: :object_class
26
34
  end
27
35
  end
28
36
  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::Dictionary
10
+ include Chemicalml::Cml::Base::CommonChildren
11
+
10
12
  attribute :title, :string
11
13
  attribute :namespace, :string
12
14
  attribute :dictionary_prefix, :string
@@ -19,16 +21,31 @@ module Chemicalml
19
21
  attribute :href, :string
20
22
  xml do
21
23
  namespace Chemicalml::Cml::Namespace
22
- root "dictionary"
23
- map_attribute "title", to: :title
24
- map_attribute "namespace", to: :namespace
25
- map_attribute "dictionaryPrefix", to: :dictionary_prefix
26
- map_attribute "convention", to: :convention
27
- map_element "description", to: :description
28
- map_element "entry", to: :entries
29
- map_attribute "id", to: :id
30
- map_attribute "dictRef", to: :dict_ref
31
- map_attribute "href", to: :href
24
+ root 'dictionary'
25
+ map_attribute 'title', to: :title
26
+ map_attribute 'namespace', to: :namespace
27
+ map_attribute 'dictionaryPrefix', to: :dictionary_prefix
28
+ map_attribute 'convention', to: :convention
29
+ map_element 'description', to: :description
30
+ map_element 'entry', to: :entries
31
+ map_attribute 'id', to: :id
32
+ map_attribute 'dictRef', to: :dict_ref
33
+ map_attribute 'href', to: :href
34
+ end
35
+ key_value do
36
+ map 'metadataList', to: :metadata_lists
37
+ map 'label', to: :labels
38
+ map 'name', to: :names
39
+ map 'description', to: :descriptions
40
+ map 'description', to: :description
41
+ map 'entry', to: :entries
42
+ map 'title', to: :title
43
+ map 'namespace', to: :namespace
44
+ map 'dictionaryPrefix', to: :dictionary_prefix
45
+ map 'convention', to: :convention
46
+ map 'id', to: :id
47
+ map 'dictRef', to: :dict_ref
48
+ map 'href', to: :href
32
49
  end
33
50
  end
34
51
  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::DictionaryEntry
10
+
10
11
  attribute :id, :string
11
12
  attribute :term, :string
12
13
  attribute :data_type, :string
@@ -14,17 +15,75 @@ module Chemicalml
14
15
  attribute :units, :string
15
16
  attribute :definition, :string
16
17
  attribute :description, :string
18
+ attribute :title, :string
19
+ attribute :convention, :string
20
+
21
+ # XSD facet attributes — describe the data type the entry
22
+ # represents. Emitted by upstream CML dictionaries to
23
+ # constrain the value space of the term.
24
+ attribute :columns, :string
25
+ attribute :rows, :string
26
+ attribute :length, :string
27
+ attribute :min_length, :string
28
+ attribute :max_length, :string
29
+ attribute :pattern, :string
30
+ attribute :min_exclusive, :string
31
+ attribute :min_inclusive, :string
32
+ attribute :max_exclusive, :string
33
+ attribute :max_inclusive, :string
34
+ attribute :fraction_digits, :string
35
+ attribute :total_digits, :string
36
+ attribute :white_space, :string
17
37
 
18
38
  xml do
19
39
  namespace Chemicalml::Cml::Namespace
20
- root "entry"
21
- map_attribute "id", to: :id
22
- map_attribute "term", to: :term
23
- map_attribute "dataType", to: :data_type
24
- map_attribute "unitType", to: :unit_type
25
- map_attribute "units", to: :units
26
- map_element "definition", to: :definition
27
- map_element "description", to: :description
40
+ root 'entry'
41
+ map_attribute 'id', to: :id
42
+ map_attribute 'term', to: :term
43
+ map_attribute 'dataType', to: :data_type
44
+ map_attribute 'unitType', to: :unit_type
45
+ map_attribute 'units', to: :units
46
+ map_attribute 'title', to: :title
47
+ map_attribute 'convention', to: :convention
48
+ map_attribute 'columns', to: :columns
49
+ map_attribute 'rows', to: :rows
50
+ map_attribute 'length', to: :length
51
+ map_attribute 'minLength', to: :min_length
52
+ map_attribute 'maxLength', to: :max_length
53
+ map_attribute 'pattern', to: :pattern
54
+ map_attribute 'minExclusive', to: :min_exclusive
55
+ map_attribute 'minInclusive', to: :min_inclusive
56
+ map_attribute 'maxExclusive', to: :max_exclusive
57
+ map_attribute 'maxInclusive', to: :max_inclusive
58
+ map_attribute 'fractionDigits', to: :fraction_digits
59
+ map_attribute 'totalDigits', to: :total_digits
60
+ map_attribute 'whiteSpace', to: :white_space
61
+ map_element 'definition', to: :definition
62
+ map_element 'description', to: :description
63
+ end
64
+ key_value do
65
+ map 'definition', to: :definition
66
+ map 'description', to: :description
67
+ map 'id', to: :id
68
+ map 'term', to: :term
69
+ map 'dataType', to: :data_type
70
+ map 'unitType', to: :unit_type
71
+ map 'units', to: :units
72
+ map 'title', to: :title
73
+ map 'convention', to: :convention
74
+ map 'columns', to: :columns
75
+ map 'rows', to: :rows
76
+ map 'length', to: :length
77
+ map 'minLength', to: :min_length
78
+ map 'maxLength', to: :max_length
79
+ map 'pattern', to: :pattern
80
+ map 'minExclusive', to: :min_exclusive
81
+ map 'minInclusive', to: :min_inclusive
82
+ map 'maxExclusive', to: :max_exclusive
83
+ map 'maxInclusive', to: :max_inclusive
84
+ map 'fractionDigits', to: :fraction_digits
85
+ map 'totalDigits', to: :total_digits
86
+ map 'whiteSpace', to: :white_space
28
87
  end
29
88
  end
30
89
  end