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,22 +7,32 @@ 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
13
14
  attribute :convention, :string
14
15
  attribute :content, :string
16
+ attribute :paragraphs, Chemicalml::Cml::Xhtml::P, collection: true
15
17
 
16
18
  attribute :object_class, :string
17
19
  xml do
18
20
  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
21
+ root 'description'
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
24
26
  map_content to: :content
25
- map_attribute "objectClass", to: :object_class
27
+ map_element 'p', to: :paragraphs
28
+ map_attribute 'objectClass', to: :object_class
29
+ end
30
+ key_value do
31
+ map 'id', to: :id
32
+ map 'title', to: :title
33
+ map 'dictRef', to: :dict_ref
34
+ map 'convention', to: :convention
35
+ map 'objectClass', to: :object_class
26
36
  end
27
37
  end
28
38
  end
@@ -7,28 +7,45 @@ 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
13
15
  attribute :convention, :string
14
- attribute :description, :string
15
16
  attribute :entries, :entry, collection: true
17
+ attribute :definitions, :definition, collection: true
16
18
 
17
19
  attribute :id, :string
18
20
  attribute :dict_ref, :string
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 'definition', to: :definitions
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 'definition', to: :definitions
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,24 +7,83 @@ 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
13
14
  attribute :unit_type, :string
14
15
  attribute :units, :string
15
- attribute :definition, :string
16
- attribute :description, :string
16
+ attribute :definition, :definition
17
+ attribute :description, :description
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
@@ -7,6 +7,7 @@ module Chemicalml
7
7
  def self.included(klass)
8
8
  klass.class_eval do
9
9
  include Chemicalml::Cml::Role::Dimension
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 :unit_type, :string
22
23
  xml do
23
24
  namespace Chemicalml::Cml::Namespace
24
- root "dimension"
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 "dataType", to: :dataType
30
- map_attribute "units", to: :units
31
- map_attribute "dimensionBasis", to: :dimension_basis
32
- map_attribute "name", to: :name
33
- map_attribute "power", to: :power
34
- map_attribute "preserve", to: :preserve
35
- map_attribute "unitType", to: :unit_type
25
+ root 'dimension'
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 'dataType', to: :dataType
31
+ map_attribute 'units', to: :units
32
+ map_attribute 'dimensionBasis', to: :dimension_basis
33
+ map_attribute 'name', to: :name
34
+ map_attribute 'power', to: :power
35
+ map_attribute 'preserve', to: :preserve
36
+ map_attribute 'unitType', to: :unit_type
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 'dataType', to: :dataType
44
+ map 'units', to: :units
45
+ map 'dimensionBasis', to: :dimension_basis
46
+ map 'name', to: :name
47
+ map 'power', to: :power
48
+ map 'preserve', to: :preserve
49
+ map 'unitType', to: :unit_type
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::Document
10
+
10
11
  attribute :id, :string
11
12
  attribute :title, :string
12
13
  attribute :dict_ref, :string
@@ -14,17 +15,32 @@ module Chemicalml
14
15
  attribute :molecules, :molecule, collection: true
15
16
  attribute :reaction_lists, :reactionList, collection: true
16
17
  attribute :reactions, :reaction, collection: true
18
+ attribute :reaction_schemes, :reactionScheme, collection: true
19
+ attribute :spectra, :spectrum, collection: true
17
20
 
18
21
  xml do
19
22
  namespace Chemicalml::Cml::Namespace
20
- root "cml"
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_element "molecule", to: :molecules
26
- map_element "reactionList", to: :reaction_lists
27
- map_element "reaction", to: :reactions
23
+ root 'cml'
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 'reactionList', to: :reaction_lists
30
+ map_element 'reaction', to: :reactions
31
+ map_element 'reactionScheme', to: :reaction_schemes
32
+ map_element 'spectrum', to: :spectra
33
+ end
34
+ key_value do
35
+ map 'molecule', to: :molecules
36
+ map 'reactionList', to: :reaction_lists
37
+ map 'reaction', to: :reactions
38
+ map 'reactionScheme', to: :reaction_schemes
39
+ map 'spectrum', to: :spectra
40
+ map 'id', to: :id
41
+ map 'title', to: :title
42
+ map 'dictRef', to: :dict_ref
43
+ map 'convention', to: :convention
28
44
  end
29
45
  end
30
46
  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::Documentation
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 "documentation"
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 'documentation'
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,8 @@ module Chemicalml
7
7
  def self.included(klass)
8
8
  klass.class_eval do
9
9
  include Chemicalml::Cml::Role::Eigen
10
+ include Chemicalml::Cml::Base::CommonChildren
11
+
10
12
  attribute :id, :string
11
13
  attribute :title, :string
12
14
  attribute :dict_ref, :string
@@ -16,17 +18,39 @@ module Chemicalml
16
18
  attribute :content, :string
17
19
 
18
20
  attribute :eigen_orientation, :string
21
+ attribute :orientation, :string
22
+ attribute :arrays, :array, collection: true
23
+ attribute :matrices, :matrix, collection: true
19
24
  xml do
20
25
  namespace Chemicalml::Cml::Namespace
21
- root "eigen"
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 "units", to: :units
27
- map_attribute "type", to: :type
26
+ root 'eigen'
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 'units', to: :units
32
+ map_attribute 'type', to: :type
28
33
  map_content to: :content
29
- map_attribute "eigenOrientation", to: :eigen_orientation
34
+ map_attribute 'eigenOrientation', to: :eigen_orientation
35
+ map_attribute 'orientation', to: :orientation
36
+ map_element 'array', to: :arrays
37
+ map_element 'matrix', to: :matrices
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 'array', to: :arrays
45
+ map 'matrix', to: :matrices
46
+ map 'id', to: :id
47
+ map 'title', to: :title
48
+ map 'dictRef', to: :dict_ref
49
+ map 'convention', to: :convention
50
+ map 'units', to: :units
51
+ map 'type', to: :type
52
+ map 'eigenOrientation', to: :eigen_orientation
53
+ map 'orientation', to: :orientation
30
54
  end
31
55
  end
32
56
  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::Electron
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 "electron"
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 "atomRef", to: :atomRef
30
- map_attribute "bondRef", to: :bondRef
31
- map_attribute "count", to: :count
32
- map_attribute "spinMultiplicity", to: :spinMultiplicity
33
- map_attribute "atomRefs", to: :atom_refs
34
- map_attribute "bondRefs", to: :bond_refs
35
- map_attribute "ref", to: :ref
25
+ root 'electron'
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 'atomRef', to: :atomRef
31
+ map_attribute 'bondRef', to: :bondRef
32
+ map_attribute 'count', to: :count
33
+ map_attribute 'spinMultiplicity', to: :spinMultiplicity
34
+ map_attribute 'atomRefs', to: :atom_refs
35
+ map_attribute 'bondRefs', to: :bond_refs
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 'atomRef', to: :atomRef
44
+ map 'bondRef', to: :bondRef
45
+ map 'count', to: :count
46
+ map 'spinMultiplicity', to: :spinMultiplicity
47
+ map 'atomRefs', to: :atom_refs
48
+ map 'bondRefs', to: :bond_refs
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::Enumeration
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 :default, :string
17
18
  xml do
18
19
  namespace Chemicalml::Cml::Namespace
19
- root "enumeration"
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 "value", to: :value
25
- map_attribute "default", to: :default
20
+ root 'enumeration'
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 'value', to: :value
26
+ map_attribute 'default', to: :default
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 'value', to: :value
34
+ map 'default', to: :default
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::Expression
10
+
10
11
  attribute :title, :string
11
12
  attribute :id, :string
12
13
  attribute :convention, :string
@@ -14,15 +15,29 @@ module Chemicalml
14
15
  attribute :data_type, :string
15
16
  attribute :content, :string
16
17
 
18
+ attribute :operators, :operator, collection: true
19
+ attribute :parameters, :parameter, collection: true
20
+
17
21
  xml do
18
22
  namespace Chemicalml::Cml::Namespace
19
- root "expression"
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
24
- map_attribute "dataType", to: :data_type
23
+ root 'expression'
24
+ map_attribute 'title', to: :title
25
+ map_attribute 'id', to: :id
26
+ map_attribute 'convention', to: :convention
27
+ map_attribute 'dictRef', to: :dict_ref
28
+ map_attribute 'dataType', to: :data_type
25
29
  map_content to: :content
30
+ map_element 'operator', to: :operators
31
+ map_element 'parameter', to: :parameters
32
+ end
33
+ key_value do
34
+ map 'operator', to: :operators
35
+ map 'parameter', to: :parameters
36
+ map 'title', to: :title
37
+ map 'id', to: :id
38
+ map 'convention', to: :convention
39
+ map 'dictRef', to: :dict_ref
40
+ map 'dataType', to: :data_type
26
41
  end
27
42
  end
28
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::Float
10
+
10
11
  attribute :builtin, :string
11
12
  attribute :convention, :string
12
13
  attribute :dict_ref, :string
@@ -20,18 +21,29 @@ module Chemicalml
20
21
 
21
22
  xml do
22
23
  namespace Chemicalml::Cml::Namespace
23
- root "float"
24
- map_attribute "builtin", to: :builtin
25
- map_attribute "convention", to: :convention
26
- map_attribute "dictRef", to: :dict_ref
27
- map_attribute "id", to: :id
28
- map_attribute "title", to: :title
29
- map_attribute "min", to: :min
30
- map_attribute "max", to: :max
31
- map_attribute "units", to: :units
32
- map_attribute "unitsRef", to: :units_ref
24
+ root 'float'
25
+ map_attribute 'builtin', to: :builtin
26
+ map_attribute 'convention', to: :convention
27
+ map_attribute 'dictRef', to: :dict_ref
28
+ map_attribute 'id', to: :id
29
+ map_attribute 'title', to: :title
30
+ map_attribute 'min', to: :min
31
+ map_attribute 'max', to: :max
32
+ map_attribute 'units', to: :units
33
+ map_attribute 'unitsRef', to: :units_ref
33
34
  map_content to: :content
34
35
  end
36
+ key_value do
37
+ map 'builtin', to: :builtin
38
+ map 'convention', to: :convention
39
+ map 'dictRef', to: :dict_ref
40
+ map 'id', to: :id
41
+ map 'title', to: :title
42
+ map 'min', to: :min
43
+ map 'max', to: :max
44
+ map 'units', to: :units
45
+ map 'unitsRef', to: :units_ref
46
+ end
35
47
  end
36
48
  end
37
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::FloatArray
10
+
10
11
  attribute :builtin, :string
11
12
  attribute :convention, :string
12
13
  attribute :dict_ref, :string
@@ -21,19 +22,31 @@ module Chemicalml
21
22
 
22
23
  xml do
23
24
  namespace Chemicalml::Cml::Namespace
24
- root "floatArray"
25
- map_attribute "builtin", to: :builtin
26
- map_attribute "convention", to: :convention
27
- map_attribute "dictRef", to: :dict_ref
28
- map_attribute "id", to: :id
29
- map_attribute "title", to: :title
30
- map_attribute "min", to: :min
31
- map_attribute "max", to: :max
32
- map_attribute "size", to: :size
33
- map_attribute "units", to: :units
34
- map_attribute "unitsRef", to: :units_ref
25
+ root 'floatArray'
26
+ map_attribute 'builtin', to: :builtin
27
+ map_attribute 'convention', to: :convention
28
+ map_attribute 'dictRef', to: :dict_ref
29
+ map_attribute 'id', to: :id
30
+ map_attribute 'title', to: :title
31
+ map_attribute 'min', to: :min
32
+ map_attribute 'max', to: :max
33
+ map_attribute 'size', to: :size
34
+ map_attribute 'units', to: :units
35
+ map_attribute 'unitsRef', to: :units_ref
35
36
  map_content to: :content
36
37
  end
38
+ key_value do
39
+ map 'builtin', to: :builtin
40
+ map 'convention', to: :convention
41
+ map 'dictRef', to: :dict_ref
42
+ map 'id', to: :id
43
+ map 'title', to: :title
44
+ map 'min', to: :min
45
+ map 'max', to: :max
46
+ map 'size', to: :size
47
+ map 'units', to: :units
48
+ map 'unitsRef', to: :units_ref
49
+ end
37
50
  end
38
51
  end
39
52
  end