chemicalml 0.1.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.
- checksums.yaml +7 -0
- data/.gitignore +11 -0
- data/.rubocop.yml +20 -0
- data/CHANGELOG.md +21 -0
- data/CLAUDE.md +198 -0
- data/Gemfile +14 -0
- data/LICENSE +24 -0
- data/NOTICES.adoc +115 -0
- data/README.adoc +87 -0
- data/Rakefile +8 -0
- data/TODO.align/01-cml-base-mixins.md +122 -0
- data/TODO.align/02-real-schema-hierarchies.md +88 -0
- data/TODO.align/03-configuration.md +50 -0
- data/TODO.align/04-parse-entry-points.md +59 -0
- data/TODO.align/05-schema-aware-translator.md +33 -0
- data/TODO.align/06-no-respond-to.md +44 -0
- data/TODO.align/07-canon-xml-comparison.md +43 -0
- data/TODO.align/08-expand-fixtures.md +37 -0
- data/TODO.align/09-final-spec-lint.md +29 -0
- data/TODO.align/10-role-marker-modules.md +54 -0
- data/TODO.align/11-dry-configuration.md +63 -0
- data/TODO.align/12-wire-class-macro.md +51 -0
- data/TODO.align/13-wire-namespace.md +44 -0
- data/TODO.align/14-schema24-correctness.md +37 -0
- data/TODO.align/15-canon-fixture-roundtrip.md +38 -0
- data/TODO.align/16-schema24-convention-coverage.md +33 -0
- data/TODO.align/17-final-spec-lint.md +28 -0
- data/TODO.align/README.md +27 -0
- data/TODO.align/README.round2.md +24 -0
- data/TODO.cml-full/01-reference-docs.md +43 -0
- data/TODO.cml-full/02-schema-versioned-model.md +70 -0
- data/TODO.cml-full/03-fixtures-scrape.md +52 -0
- data/TODO.cml-full/04-convention-framework.md +69 -0
- data/TODO.cml-full/05-dictionary-layer.md +77 -0
- data/TODO.cml-full/06-extend-canonical-translator.md +60 -0
- data/TODO.cml-full/07-attribution-notices.md +42 -0
- data/TODO.cml-full/08-autoload-only.md +48 -0
- data/TODO.cml-full/09-spec-coverage.md +38 -0
- data/TODO.cml-full/README.md +23 -0
- data/chemicalml.gemspec +35 -0
- data/data/dictionaries/_index.yaml +14 -0
- data/data/dictionaries/compchem.yaml +481 -0
- data/data/dictionaries/unit_non_si.yaml +53 -0
- data/data/dictionaries/unit_si.yaml +87 -0
- data/data/dictionaries/unit_type.yaml +113 -0
- data/lib/chemicalml/cml/array.rb +10 -0
- data/lib/chemicalml/cml/atom.rb +10 -0
- data/lib/chemicalml/cml/atom_array.rb +10 -0
- data/lib/chemicalml/cml/atom_parity.rb +10 -0
- data/lib/chemicalml/cml/base/array.rb +36 -0
- data/lib/chemicalml/cml/base/atom.rb +38 -0
- data/lib/chemicalml/cml/base/atom_array.rb +22 -0
- data/lib/chemicalml/cml/base/atom_parity.rb +24 -0
- data/lib/chemicalml/cml/base/bond.rb +28 -0
- data/lib/chemicalml/cml/base/bond_array.rb +22 -0
- data/lib/chemicalml/cml/base/bond_stereo.rb +28 -0
- data/lib/chemicalml/cml/base/cml_module.rb +40 -0
- data/lib/chemicalml/cml/base/dictionary.rb +32 -0
- data/lib/chemicalml/cml/base/dictionary_entry.rb +34 -0
- data/lib/chemicalml/cml/base/document.rb +26 -0
- data/lib/chemicalml/cml/base/formula.rb +38 -0
- data/lib/chemicalml/cml/base/identifier.rb +26 -0
- data/lib/chemicalml/cml/base/label.rb +28 -0
- data/lib/chemicalml/cml/base/list.rb +36 -0
- data/lib/chemicalml/cml/base/matrix.rb +38 -0
- data/lib/chemicalml/cml/base/metadata.rb +30 -0
- data/lib/chemicalml/cml/base/metadata_list.rb +28 -0
- data/lib/chemicalml/cml/base/molecule.rb +40 -0
- data/lib/chemicalml/cml/base/name.rb +26 -0
- data/lib/chemicalml/cml/base/parameter.rb +34 -0
- data/lib/chemicalml/cml/base/parameter_list.rb +28 -0
- data/lib/chemicalml/cml/base/product.rb +22 -0
- data/lib/chemicalml/cml/base/product_list.rb +22 -0
- data/lib/chemicalml/cml/base/property.rb +34 -0
- data/lib/chemicalml/cml/base/property_list.rb +28 -0
- data/lib/chemicalml/cml/base/reactant.rb +22 -0
- data/lib/chemicalml/cml/base/reactant_list.rb +22 -0
- data/lib/chemicalml/cml/base/reaction.rb +32 -0
- data/lib/chemicalml/cml/base/reaction_list.rb +22 -0
- data/lib/chemicalml/cml/base/scalar.rb +32 -0
- data/lib/chemicalml/cml/base/substance.rb +30 -0
- data/lib/chemicalml/cml/base/unit.rb +38 -0
- data/lib/chemicalml/cml/base/unit_list.rb +30 -0
- data/lib/chemicalml/cml/base/unit_type.rb +28 -0
- data/lib/chemicalml/cml/base/unit_type_list.rb +30 -0
- data/lib/chemicalml/cml/base.rb +51 -0
- data/lib/chemicalml/cml/bond.rb +10 -0
- data/lib/chemicalml/cml/bond_array.rb +10 -0
- data/lib/chemicalml/cml/bond_stereo.rb +10 -0
- data/lib/chemicalml/cml/cml_module.rb +10 -0
- data/lib/chemicalml/cml/dictionary.rb +10 -0
- data/lib/chemicalml/cml/dictionary_entry.rb +10 -0
- data/lib/chemicalml/cml/document.rb +10 -0
- data/lib/chemicalml/cml/elements.rb +58 -0
- data/lib/chemicalml/cml/formula.rb +10 -0
- data/lib/chemicalml/cml/identifier.rb +10 -0
- data/lib/chemicalml/cml/label.rb +10 -0
- data/lib/chemicalml/cml/list.rb +10 -0
- data/lib/chemicalml/cml/matrix.rb +10 -0
- data/lib/chemicalml/cml/metadata.rb +10 -0
- data/lib/chemicalml/cml/metadata_list.rb +10 -0
- data/lib/chemicalml/cml/molecule.rb +10 -0
- data/lib/chemicalml/cml/name.rb +10 -0
- data/lib/chemicalml/cml/namespace.rb +17 -0
- data/lib/chemicalml/cml/parameter.rb +10 -0
- data/lib/chemicalml/cml/parameter_list.rb +10 -0
- data/lib/chemicalml/cml/product.rb +10 -0
- data/lib/chemicalml/cml/product_list.rb +10 -0
- data/lib/chemicalml/cml/property.rb +10 -0
- data/lib/chemicalml/cml/property_list.rb +10 -0
- data/lib/chemicalml/cml/reactant.rb +10 -0
- data/lib/chemicalml/cml/reactant_list.rb +10 -0
- data/lib/chemicalml/cml/reaction.rb +10 -0
- data/lib/chemicalml/cml/reaction_list.rb +10 -0
- data/lib/chemicalml/cml/role/array.rb +13 -0
- data/lib/chemicalml/cml/role/atom.rb +13 -0
- data/lib/chemicalml/cml/role/atom_array.rb +13 -0
- data/lib/chemicalml/cml/role/atom_parity.rb +13 -0
- data/lib/chemicalml/cml/role/bond.rb +13 -0
- data/lib/chemicalml/cml/role/bond_array.rb +13 -0
- data/lib/chemicalml/cml/role/bond_stereo.rb +13 -0
- data/lib/chemicalml/cml/role/cml_module.rb +14 -0
- data/lib/chemicalml/cml/role/dictionary.rb +13 -0
- data/lib/chemicalml/cml/role/dictionary_entry.rb +13 -0
- data/lib/chemicalml/cml/role/document.rb +13 -0
- data/lib/chemicalml/cml/role/formula.rb +13 -0
- data/lib/chemicalml/cml/role/identifier.rb +13 -0
- data/lib/chemicalml/cml/role/label.rb +13 -0
- data/lib/chemicalml/cml/role/list.rb +13 -0
- data/lib/chemicalml/cml/role/matrix.rb +13 -0
- data/lib/chemicalml/cml/role/metadata.rb +13 -0
- data/lib/chemicalml/cml/role/metadata_list.rb +13 -0
- data/lib/chemicalml/cml/role/molecule.rb +13 -0
- data/lib/chemicalml/cml/role/name.rb +13 -0
- data/lib/chemicalml/cml/role/parameter.rb +13 -0
- data/lib/chemicalml/cml/role/parameter_list.rb +13 -0
- data/lib/chemicalml/cml/role/product.rb +13 -0
- data/lib/chemicalml/cml/role/product_list.rb +13 -0
- data/lib/chemicalml/cml/role/property.rb +13 -0
- data/lib/chemicalml/cml/role/property_list.rb +13 -0
- data/lib/chemicalml/cml/role/reactant.rb +13 -0
- data/lib/chemicalml/cml/role/reactant_list.rb +13 -0
- data/lib/chemicalml/cml/role/reaction.rb +13 -0
- data/lib/chemicalml/cml/role/reaction_list.rb +13 -0
- data/lib/chemicalml/cml/role/scalar.rb +13 -0
- data/lib/chemicalml/cml/role/substance.rb +13 -0
- data/lib/chemicalml/cml/role/unit.rb +13 -0
- data/lib/chemicalml/cml/role/unit_list.rb +13 -0
- data/lib/chemicalml/cml/role/unit_type.rb +13 -0
- data/lib/chemicalml/cml/role/unit_type_list.rb +13 -0
- data/lib/chemicalml/cml/role.rb +54 -0
- data/lib/chemicalml/cml/scalar.rb +10 -0
- data/lib/chemicalml/cml/schema24/configuration.rb +19 -0
- data/lib/chemicalml/cml/schema24.rb +40 -0
- data/lib/chemicalml/cml/schema3/configuration.rb +17 -0
- data/lib/chemicalml/cml/schema3.rb +40 -0
- data/lib/chemicalml/cml/substance.rb +10 -0
- data/lib/chemicalml/cml/translator/value_translations.rb +265 -0
- data/lib/chemicalml/cml/translator.rb +233 -0
- data/lib/chemicalml/cml/unit.rb +10 -0
- data/lib/chemicalml/cml/unit_list.rb +10 -0
- data/lib/chemicalml/cml/unit_type.rb +10 -0
- data/lib/chemicalml/cml/unit_type_list.rb +10 -0
- data/lib/chemicalml/cml/visitable.rb +65 -0
- data/lib/chemicalml/cml/wire_class_macro.rb +45 -0
- data/lib/chemicalml/cml.rb +55 -0
- data/lib/chemicalml/context_configuration.rb +127 -0
- data/lib/chemicalml/convention/base.rb +48 -0
- data/lib/chemicalml/convention/compchem/constraints/compchem_module_must_contain_job_list.rb +33 -0
- data/lib/chemicalml/convention/compchem/constraints/job_must_contain_initialization.rb +38 -0
- data/lib/chemicalml/convention/compchem/constraints.rb +14 -0
- data/lib/chemicalml/convention/compchem.rb +28 -0
- data/lib/chemicalml/convention/constraint.rb +79 -0
- data/lib/chemicalml/convention/dictionary/constraints/entry_ids_unique_within_dictionary.rb +33 -0
- data/lib/chemicalml/convention/dictionary/constraints/entry_must_have_id_and_term.rb +34 -0
- data/lib/chemicalml/convention/dictionary/constraints.rb +14 -0
- data/lib/chemicalml/convention/dictionary.rb +28 -0
- data/lib/chemicalml/convention/molecular/constraints/atom_array_must_contain_atoms.rb +30 -0
- data/lib/chemicalml/convention/molecular/constraints/atom_ids_unique_within_molecule.rb +42 -0
- data/lib/chemicalml/convention/molecular/constraints/bond_must_reference_atoms_in_same_molecule.rb +54 -0
- data/lib/chemicalml/convention/molecular/constraints.rb +19 -0
- data/lib/chemicalml/convention/molecular.rb +29 -0
- data/lib/chemicalml/convention/registry.rb +50 -0
- data/lib/chemicalml/convention/unit_dictionary/constraints/unit_must_have_symbol_and_unit_type.rb +46 -0
- data/lib/chemicalml/convention/unit_dictionary/constraints.rb +12 -0
- data/lib/chemicalml/convention/unit_dictionary.rb +27 -0
- data/lib/chemicalml/convention/unit_type_dictionary/constraints/unit_type_must_have_id_and_name.rb +34 -0
- data/lib/chemicalml/convention/unit_type_dictionary/constraints.rb +12 -0
- data/lib/chemicalml/convention/unit_type_dictionary.rb +27 -0
- data/lib/chemicalml/convention/violation.rb +36 -0
- data/lib/chemicalml/convention.rb +39 -0
- data/lib/chemicalml/dictionary/entry.rb +59 -0
- data/lib/chemicalml/dictionary/enum.rb +51 -0
- data/lib/chemicalml/dictionary/link.rb +32 -0
- data/lib/chemicalml/dictionary/loader.rb +60 -0
- data/lib/chemicalml/dictionary/model.rb +64 -0
- data/lib/chemicalml/dictionary/registry.rb +75 -0
- data/lib/chemicalml/dictionary.rb +26 -0
- data/lib/chemicalml/errors.rb +7 -0
- data/lib/chemicalml/model/atom.rb +40 -0
- data/lib/chemicalml/model/bond.rb +33 -0
- data/lib/chemicalml/model/cml_array.rb +27 -0
- data/lib/chemicalml/model/cml_module.rb +45 -0
- data/lib/chemicalml/model/document.rb +29 -0
- data/lib/chemicalml/model/formula.rb +34 -0
- data/lib/chemicalml/model/identifier.rb +21 -0
- data/lib/chemicalml/model/label.rb +21 -0
- data/lib/chemicalml/model/matrix.rb +29 -0
- data/lib/chemicalml/model/metadata.rb +23 -0
- data/lib/chemicalml/model/metadata_list.rb +25 -0
- data/lib/chemicalml/model/molecule.rb +38 -0
- data/lib/chemicalml/model/name.rb +21 -0
- data/lib/chemicalml/model/node.rb +45 -0
- data/lib/chemicalml/model/parameter.rb +27 -0
- data/lib/chemicalml/model/parameter_list.rb +25 -0
- data/lib/chemicalml/model/product.rb +21 -0
- data/lib/chemicalml/model/product_list.rb +21 -0
- data/lib/chemicalml/model/property.rb +28 -0
- data/lib/chemicalml/model/property_list.rb +25 -0
- data/lib/chemicalml/model/reactant.rb +21 -0
- data/lib/chemicalml/model/reactant_list.rb +21 -0
- data/lib/chemicalml/model/reaction.rb +41 -0
- data/lib/chemicalml/model/reaction_list.rb +23 -0
- data/lib/chemicalml/model/scalar.rb +25 -0
- data/lib/chemicalml/model/substance.rb +25 -0
- data/lib/chemicalml/model.rb +38 -0
- data/lib/chemicalml/schema/definition.rb +41 -0
- data/lib/chemicalml/schema/registry.rb +30 -0
- data/lib/chemicalml/schema.rb +35 -0
- data/lib/chemicalml/version.rb +5 -0
- data/lib/chemicalml/versioned_parser.rb +43 -0
- data/lib/chemicalml.rb +47 -0
- data/lib/tasks/reference_fetch.rake +105 -0
- data/lib/tasks/scrape_fixtures.rake +133 -0
- data/reference-docs/conventions/compchem.md +141 -0
- data/reference-docs/conventions/dictionary.md +119 -0
- data/reference-docs/conventions/index.md +56 -0
- data/reference-docs/conventions/molecular.md +115 -0
- data/reference-docs/conventions/unit-dictionary.md +92 -0
- data/reference-docs/conventions/unitType-dictionary.md +51 -0
- data/reference-docs/dictionaries/compchem.md +335 -0
- data/reference-docs/dictionaries/index.md +52 -0
- data/reference-docs/examples/schema24-index.md +50 -0
- data/reference-docs/examples/schema3-compchem-index.md +14 -0
- data/reference-docs/examples/schema3-molecular-index.md +28 -0
- data/reference-docs/schemas/schema24/schema.xsd +10624 -0
- data/reference-docs/schemas/schema3/schema.xsd +11459 -0
- metadata +306 -0
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
<!-- Source: http://www.xml-cml.org/convention/compchem -->
|
|
2
|
+
<!-- Editors: Weerapong Phadungsukanan, Sam Adams, Joe Townsend, Jens Thomas -->
|
|
3
|
+
<!-- License: CC-BY-3.0 (http://creativecommons.org/licenses/by/3.0/) -->
|
|
4
|
+
|
|
5
|
+
# CML CompChem Convention
|
|
6
|
+
|
|
7
|
+
**This version:** http://www.xml-cml.org/convention/compchem-20110524
|
|
8
|
+
**Latest version:** http://www.xml-cml.org/convention/compchem
|
|
9
|
+
**Editors:** Weerapong Phadungsukanan, Sam Adams, Joe Townsend (University
|
|
10
|
+
of Cambridge); Jens Thomas (STFC Daresbury Laboratory).
|
|
11
|
+
|
|
12
|
+
## Abstract
|
|
13
|
+
|
|
14
|
+
This specification defines the requirements of the Chemical Markup Language
|
|
15
|
+
CompChem convention.
|
|
16
|
+
|
|
17
|
+
## Namespaces
|
|
18
|
+
|
|
19
|
+
| Prefix | Namespace URI | Description |
|
|
20
|
+
| --- | --- | --- |
|
|
21
|
+
| `cml` | `http://www.xml-cml.org/schema` | Chemical Markup Language elements |
|
|
22
|
+
| `convention` | `http://www.xml-cml.org/convention/` | Standard CML convention namespace |
|
|
23
|
+
| `compchem` | `http://www.xml-cml.org/dictionary/compchem/` | CompChem Dictionary namespace |
|
|
24
|
+
| `xhtml` | `http://www.w3.org/1999/xhtml` | XHTML |
|
|
25
|
+
| `dc` | `http://purl.org/dc/elements/1.1/` | Dublin Core Metadata Element Set, v1.1 |
|
|
26
|
+
|
|
27
|
+
## Applying the CompChem convention
|
|
28
|
+
|
|
29
|
+
The CompChem convention MUST be specified using the `convention`
|
|
30
|
+
attribute on a `module` element, with value `convention:compchem`. A
|
|
31
|
+
CompChem module MUST contain at least one `jobList` module child (e.g.
|
|
32
|
+
`<module dictRef="compchem:jobList" id="jobList-0000">`).
|
|
33
|
+
|
|
34
|
+
## Core concepts
|
|
35
|
+
|
|
36
|
+
- **JobList** — series of successive subtasks
|
|
37
|
+
- **Job** — a computational job (input + calculations + output + environment)
|
|
38
|
+
- **Initialization** — model parameters/inputs (REQUIRED)
|
|
39
|
+
- **Calculation** — computation/optimisation/iteration (OPTIONAL, nestable)
|
|
40
|
+
- **Finalization** — model outputs/results (OPTIONAL)
|
|
41
|
+
- **Environment** — host, software, runtime metadata (OPTIONAL)
|
|
42
|
+
- **User defined concept** — extension modules with a `dictRef`
|
|
43
|
+
|
|
44
|
+
## Structural rules
|
|
45
|
+
|
|
46
|
+
### jobList module
|
|
47
|
+
|
|
48
|
+
- MUST have `dictRef="compchem:jobList"` on a `module` element
|
|
49
|
+
- MUST have an `id` unique within the compchem module
|
|
50
|
+
- MUST contain at least one `job` module child
|
|
51
|
+
- SHOULD have a `title`
|
|
52
|
+
|
|
53
|
+
### job module
|
|
54
|
+
|
|
55
|
+
- MUST have `dictRef="compchem:job"` on a `module` element
|
|
56
|
+
- MUST have an `id` unique within the compchem module
|
|
57
|
+
- MUST contain exactly one `initialization` module child
|
|
58
|
+
- MAY contain zero or more `calculation` module children
|
|
59
|
+
- MAY contain no more than one `finalization` module child
|
|
60
|
+
- MAY contain no more than one `environment` module child
|
|
61
|
+
- If a `calculation` is present, a `finalization` MUST also be present
|
|
62
|
+
|
|
63
|
+
### initialization module
|
|
64
|
+
|
|
65
|
+
- MUST have `dictRef="compchem:initialization"`
|
|
66
|
+
- MUST NOT contain more than one `molecule` child (the molecule MUST
|
|
67
|
+
specify its convention, SHOULD be molecular)
|
|
68
|
+
- MUST NOT contain more than one `parameterList`
|
|
69
|
+
- MAY contain any number of `list` elements (for complex objects like
|
|
70
|
+
basis sets, DFT functionals)
|
|
71
|
+
- MUST contain at least one of: `molecule`, `parameterList`, or a
|
|
72
|
+
user-defined module
|
|
73
|
+
- MUST NOT contain `property` or `propertyList` children
|
|
74
|
+
|
|
75
|
+
### calculation module
|
|
76
|
+
|
|
77
|
+
- MUST have `dictRef="compchem:calculation"`
|
|
78
|
+
- MUST NOT contain more than one `molecule` child
|
|
79
|
+
- MUST contain exactly one `initialization` module child
|
|
80
|
+
- MAY contain zero or more `calculation` module children
|
|
81
|
+
- MAY contain no more than one `finalization` module child
|
|
82
|
+
|
|
83
|
+
### finalization module
|
|
84
|
+
|
|
85
|
+
- MUST have `dictRef="compchem:finalization"`
|
|
86
|
+
- MUST NOT contain more than one `molecule` child
|
|
87
|
+
- MUST NOT contain more than one `propertyList`
|
|
88
|
+
- MUST contain at least one of: `molecule`, `propertyList`, or a
|
|
89
|
+
user-defined module
|
|
90
|
+
- MUST NOT contain `parameter` or `parameterList` children
|
|
91
|
+
|
|
92
|
+
### environment module
|
|
93
|
+
|
|
94
|
+
- MUST have `dictRef="compchem:environment"`
|
|
95
|
+
- MUST NOT contain more than one `propertyList`
|
|
96
|
+
- MUST contain at least one of: `parameterList`, user-defined module
|
|
97
|
+
- MUST NOT contain `parameter` or `parameterList` directly (only via
|
|
98
|
+
`propertyList`)
|
|
99
|
+
|
|
100
|
+
## Value containers
|
|
101
|
+
|
|
102
|
+
CompChem currently only allows `scalar`, `array`, and `matrix` value
|
|
103
|
+
containers.
|
|
104
|
+
|
|
105
|
+
### scalar
|
|
106
|
+
|
|
107
|
+
- MUST have `dataType` attribute: `xsd:string`, `xsd:integer`, or `xsd:double`
|
|
108
|
+
- MUST have `units` if dataType is `xsd:integer` or `xsd:double`
|
|
109
|
+
(even if "unknown" or "dimensionless")
|
|
110
|
+
- MUST NOT have `units` if dataType is `xsd:string`
|
|
111
|
+
|
|
112
|
+
### array
|
|
113
|
+
|
|
114
|
+
- MUST have `size` attribute (minimum 1)
|
|
115
|
+
- `dataType` MUST be `xsd:integer` or `xsd:double`
|
|
116
|
+
- MUST have `units` (even if dimensionless)
|
|
117
|
+
|
|
118
|
+
### matrix
|
|
119
|
+
|
|
120
|
+
- MUST have `rows` and `columns` attributes (minimum 1)
|
|
121
|
+
- `dataType` MUST be `xsd:integer` or `xsd:double`
|
|
122
|
+
- MUST have `units` (even if dimensionless)
|
|
123
|
+
|
|
124
|
+
## Recommended properties/parameters
|
|
125
|
+
|
|
126
|
+
### environment module
|
|
127
|
+
|
|
128
|
+
- `hostName`, `runDate`, `program`, `programVersion`
|
|
129
|
+
|
|
130
|
+
### initialization module
|
|
131
|
+
|
|
132
|
+
- `basisSet`, `charge`, `dftFunctional`, `method`, `pointGroup`,
|
|
133
|
+
`spinMultiplicity`, `task`, `title`, `wavefunctionType`
|
|
134
|
+
|
|
135
|
+
### finalization module
|
|
136
|
+
|
|
137
|
+
- `nuclearRepulsionEnergy`, `totalEnergy`, `wallTime`
|
|
138
|
+
|
|
139
|
+
## Acknowledgements
|
|
140
|
+
|
|
141
|
+
Peter Murray-Rust, Joe Townsend, Sam Adams.
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
<!-- Source: http://www.xml-cml.org/convention/dictionary -->
|
|
2
|
+
<!-- Editors: Sam Adams, Joe Townsend (University of Cambridge) -->
|
|
3
|
+
<!-- License: CC-BY-3.0 (http://creativecommons.org/licenses/by/3.0/) -->
|
|
4
|
+
|
|
5
|
+
# CML Dictionary Convention
|
|
6
|
+
|
|
7
|
+
**This version:** http://www.xml-cml.org/convention/dictionary-20110525
|
|
8
|
+
**Latest version:** http://www.xml-cml.org/convention/dictionary
|
|
9
|
+
**Editors:** Sam Adams, Joe Townsend (University of Cambridge)
|
|
10
|
+
|
|
11
|
+
## Abstract
|
|
12
|
+
|
|
13
|
+
This specification defines the requirements of the Chemical Markup Language
|
|
14
|
+
dictionary convention.
|
|
15
|
+
|
|
16
|
+
## Namespaces
|
|
17
|
+
|
|
18
|
+
| Prefix | Namespace URI | Description |
|
|
19
|
+
| --- | --- | --- |
|
|
20
|
+
| `cml` | `http://www.xml-cml.org/schema` | Chemical Markup Language elements |
|
|
21
|
+
| `convention` | `http://www.xml-cml.org/convention/` | Standard CML convention namespace |
|
|
22
|
+
| `xhtml` | `http://www.w3.org/1999/xhtml` | XHTML |
|
|
23
|
+
|
|
24
|
+
## Applying the dictionary convention
|
|
25
|
+
|
|
26
|
+
The dictionary convention MUST be specified using the `convention`
|
|
27
|
+
attribute on either a `cml` or a `dictionary` element. If specified on a
|
|
28
|
+
`cml` element, that element MUST contain a single child `dictionary`
|
|
29
|
+
element in the CML namespace.
|
|
30
|
+
|
|
31
|
+
## Dictionary Element
|
|
32
|
+
|
|
33
|
+
### Namespace
|
|
34
|
+
|
|
35
|
+
The `dictionary` element MUST have a `namespace` attribute, the value of
|
|
36
|
+
which MUST be a valid URI defining the scope within which the entry terms
|
|
37
|
+
are unique. The namespace URI SHOULD end with `/` or `#` so terms can be
|
|
38
|
+
referenced by appending them to the URI.
|
|
39
|
+
|
|
40
|
+
### Prefix
|
|
41
|
+
|
|
42
|
+
The `dictionary` element SHOULD have a `dictionaryPrefix` attribute
|
|
43
|
+
specifying the default prefix. MUST be a valid XML QName prefix, SHOULD
|
|
44
|
+
be unique within the CML domain.
|
|
45
|
+
|
|
46
|
+
### Title
|
|
47
|
+
|
|
48
|
+
The `dictionary` element SHOULD have a `title` attribute for
|
|
49
|
+
human-readability.
|
|
50
|
+
|
|
51
|
+
### Description
|
|
52
|
+
|
|
53
|
+
The `dictionary` element SHOULD have a single `description` child
|
|
54
|
+
element. MUST contain one or more child elements in the XHTML namespace.
|
|
55
|
+
MUST NOT contain any non-XHTML child elements.
|
|
56
|
+
|
|
57
|
+
### Entries
|
|
58
|
+
|
|
59
|
+
The `dictionary` element MUST contain one or more child `entry` elements,
|
|
60
|
+
and MUST NOT contain any other child elements from the CML namespace.
|
|
61
|
+
|
|
62
|
+
## Entry Elements
|
|
63
|
+
|
|
64
|
+
### Id
|
|
65
|
+
|
|
66
|
+
An `entry` element MUST have an `id` attribute, the value of which MUST
|
|
67
|
+
be unique within the scope of the dictionary. MUST start with a letter,
|
|
68
|
+
MUST only contain letters, numbers, dot, hyphen or underscore.
|
|
69
|
+
|
|
70
|
+
| | | |
|
|
71
|
+
| --- | --- | --- |
|
|
72
|
+
| `IdStartChar` | ::= | `[A-Z] \| [a-z]` |
|
|
73
|
+
| `IdChar` | ::= | `IdStartChar \| [0-9] \| "." \| "-" \| "_"` |
|
|
74
|
+
| `Id` | ::= | `IdStartChar (IdChar)*` |
|
|
75
|
+
|
|
76
|
+
### Term
|
|
77
|
+
|
|
78
|
+
An `entry` element MUST have a `term` attribute, the value of which
|
|
79
|
+
provides a unique nounal phrase linguistically identifying the subject
|
|
80
|
+
of the entry.
|
|
81
|
+
|
|
82
|
+
### Definition
|
|
83
|
+
|
|
84
|
+
An `entry` element MUST contain a single `definition` child element. MUST
|
|
85
|
+
contain one or more child elements in the XHTML namespace. MUST NOT
|
|
86
|
+
contain any non-XHTML child elements.
|
|
87
|
+
|
|
88
|
+
### Description
|
|
89
|
+
|
|
90
|
+
An `entry` element MAY have a single `description` child element providing
|
|
91
|
+
further information: examples, human-readable semantics, hyperlinks. MUST
|
|
92
|
+
contain XHTML child elements only.
|
|
93
|
+
|
|
94
|
+
### Data type
|
|
95
|
+
|
|
96
|
+
When applicable, an `entry` SHOULD have `dataType` attribute, value is a
|
|
97
|
+
QName referencing the data type of the value. Common types:
|
|
98
|
+
`xsd:string`, `xsd:double`, `xsd:integer`, `xsd:boolean`.
|
|
99
|
+
|
|
100
|
+
### Unit type
|
|
101
|
+
|
|
102
|
+
An `entry` MUST have a `unitType` attribute, value is a QName referencing
|
|
103
|
+
the unit type (e.g. temperature). An entry describing a concept that
|
|
104
|
+
should not have units (e.g. name of a program) should have unitType
|
|
105
|
+
`none` in the standard CML unitType dictionary.
|
|
106
|
+
|
|
107
|
+
### Default units
|
|
108
|
+
|
|
109
|
+
When applicable, an `entry` SHOULD have a `units` attribute, value is a
|
|
110
|
+
QName referencing the default units (e.g. Kelvin).
|
|
111
|
+
|
|
112
|
+
If `unitType` is `unknown`, the `units` attribute MUST NOT be present.
|
|
113
|
+
If `unitType` is `none`, the `units` attribute MUST be present and must
|
|
114
|
+
point to `http://www.xml-cml.org/unit/si#none`.
|
|
115
|
+
|
|
116
|
+
## Acknowledgements
|
|
117
|
+
|
|
118
|
+
Peter Murray-Rust, Joe Townsend, Nick England, Weerapong Phadungsukanan,
|
|
119
|
+
Daniel Lowe, Sam Adams, Hannah Barjat.
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
<!-- Source: http://www.xml-cml.org/convention/ -->
|
|
2
|
+
<!-- License: CC-BY-3.0 (http://creativecommons.org/licenses/by/3.0/) -->
|
|
3
|
+
|
|
4
|
+
# CML Conventions
|
|
5
|
+
|
|
6
|
+
Different domains of chemistry think about chemistry differently; often this
|
|
7
|
+
means a very tight specification of rules in *your* area of expertise and
|
|
8
|
+
very little if any applied to the rest. The loosening of the CML content
|
|
9
|
+
model in Schema 3 allows users to combine the elements and attributes as
|
|
10
|
+
they need to represent data. However, users still need to be able to
|
|
11
|
+
specify a set of rules (constraints) which model their particular domain.
|
|
12
|
+
This can be likened to thinking of the elements and attributes of CML as
|
|
13
|
+
representing the allowed vocabulary and the set of rules as a grammar
|
|
14
|
+
specifying how these words are allowed to be put together. The entire set
|
|
15
|
+
of constraints which the CML should conform to is called a `convention`.
|
|
16
|
+
|
|
17
|
+
## Implemented Conventions
|
|
18
|
+
|
|
19
|
+
The list of currently supported conventions is given below:
|
|
20
|
+
|
|
21
|
+
Molecular Convention
|
|
22
|
+
: namespace: `http://www.xml-cml.org/convention/molecular`
|
|
23
|
+
|
|
24
|
+
CompChem Convention
|
|
25
|
+
: namespace: `http://www.xml-cml.org/convention/compchem`
|
|
26
|
+
|
|
27
|
+
Dictionary Convention
|
|
28
|
+
: namespace: `http://www.xml-cml.org/convention/dictionary`
|
|
29
|
+
|
|
30
|
+
Unit Dictionary Convention
|
|
31
|
+
: namespace: `http://www.xml-cml.org/convention/unit-dictionary`
|
|
32
|
+
|
|
33
|
+
Unit-Type Dictionary Convention
|
|
34
|
+
: namespace: `http://www.xml-cml.org/convention/unitType-dictionary`
|
|
35
|
+
|
|
36
|
+
There is also a *toy* convention `simpleUnit` which is used as a very
|
|
37
|
+
simple example in the CMLLite paper. The namespace of the convention is
|
|
38
|
+
`http://www.xml-cml.org/convention/simpleUnit`.
|
|
39
|
+
|
|
40
|
+
The `dictionary` convention is currently in the most finished state and
|
|
41
|
+
acts as a template for how conventions will be described in future.
|
|
42
|
+
|
|
43
|
+
Constraints are defined by using XSL Transformations (XSLT). These allow
|
|
44
|
+
users to put more specific constraints and co-constraints on the allowed
|
|
45
|
+
structure of the CML documents than using only schemas. The output is
|
|
46
|
+
based on the ISO Schematron standard XML report language SVRL
|
|
47
|
+
(Schematron Validation Report Language) to indicate errors and warnings
|
|
48
|
+
in the document.
|
|
49
|
+
|
|
50
|
+
Examples of constraints implemented in the `molecular` convention are:
|
|
51
|
+
|
|
52
|
+
- an `atomArray` must have at least one `atom` child
|
|
53
|
+
- the value of an `atom`'s `id` must be unique within the eldest
|
|
54
|
+
containing molecule
|
|
55
|
+
- a `bond` element must have an `atomRefs2` attribute
|
|
56
|
+
- a `bond` must be between `atom`s within the same molecule
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
<!-- Source: http://www.xml-cml.org/convention/molecular -->
|
|
2
|
+
<!-- Editors: Sam Adams, Joe Townsend (University of Cambridge) -->
|
|
3
|
+
<!-- License: CC-BY-3.0 (http://creativecommons.org/licenses/by/3.0/) -->
|
|
4
|
+
|
|
5
|
+
# CML Molecular Convention
|
|
6
|
+
|
|
7
|
+
**This version:** http://www.xml-cml.org/convention/molecular-20110828
|
|
8
|
+
**Latest version:** http://www.xml-cml.org/convention/molecular
|
|
9
|
+
**Authors:** See acknowledgments.
|
|
10
|
+
**Editors:** Sam Adams, Joe Townsend (University of Cambridge)
|
|
11
|
+
|
|
12
|
+
## Abstract
|
|
13
|
+
|
|
14
|
+
This specification defines the requirements of the Chemical Markup Language
|
|
15
|
+
Molecular convention. This document describes the concepts which are
|
|
16
|
+
introduced in the molecular convention, explains how to compose a document
|
|
17
|
+
that conforms to the molecular convention and illustrates these with
|
|
18
|
+
examples.
|
|
19
|
+
|
|
20
|
+
## Namespaces
|
|
21
|
+
|
|
22
|
+
| Prefix | Namespace URI | Description |
|
|
23
|
+
| --- | --- | --- |
|
|
24
|
+
| `cml` | `http://www.xml-cml.org/schema` | Chemical Markup Language elements |
|
|
25
|
+
| `convention` | `http://www.xml-cml.org/convention/` | Standard CML convention namespace |
|
|
26
|
+
|
|
27
|
+
## Applying the molecular convention
|
|
28
|
+
|
|
29
|
+
The molecular convention MUST be specified using the `convention`
|
|
30
|
+
attribute on a `molecule` element or a `cml` element. The value of the
|
|
31
|
+
attribute MUST be a QName that represents the molecular convention,
|
|
32
|
+
i.e. `convention:molecular`. If the molecular convention is specified
|
|
33
|
+
on a `cml` element then that element MUST have at least one child
|
|
34
|
+
`molecule` element that either has no convention specified or specifies
|
|
35
|
+
the molecular convention.
|
|
36
|
+
|
|
37
|
+
## Molecule Element
|
|
38
|
+
|
|
39
|
+
Within the molecular convention, a `molecule` is REQUIRED to be a child
|
|
40
|
+
of either `cml` or `molecule` elements.
|
|
41
|
+
|
|
42
|
+
A `molecule` MAY hold any combination of:
|
|
43
|
+
|
|
44
|
+
1. a string representation of a molecule (`name`, `label`, or `inline`
|
|
45
|
+
attribute on `formula`)
|
|
46
|
+
2. the chemical composition of a substance (`concise` attribute on
|
|
47
|
+
`formula`, or `atomArray`)
|
|
48
|
+
3. a connection table of `atom`s connected by `bond`s
|
|
49
|
+
|
|
50
|
+
### Molecule sub-rules
|
|
51
|
+
|
|
52
|
+
- `id` — REQUIRED, unique within document scope. Pattern:
|
|
53
|
+
`[A-Za-z][A-Za-z0-9._-]*`
|
|
54
|
+
- `count` — REQUIRED on child molecules, MUST NOT appear on top-level
|
|
55
|
+
molecules. Non-negative number.
|
|
56
|
+
- `atomArray` — at most one. Mutually exclusive with child `molecule`s.
|
|
57
|
+
- `bondArray` — at most one. Mutually exclusive with child `molecule`s.
|
|
58
|
+
- `formula` — any number
|
|
59
|
+
- `property` — any number
|
|
60
|
+
- `label` — any number
|
|
61
|
+
- `name` — any number
|
|
62
|
+
- `formalCharge` — RECOMMENDED
|
|
63
|
+
- `spinMultiplicity` — RECOMMENDED
|
|
64
|
+
- `chirality` — OPTIONAL
|
|
65
|
+
- `spectrum` — any number, each MUST specify its own convention
|
|
66
|
+
|
|
67
|
+
## AtomArray
|
|
68
|
+
|
|
69
|
+
MUST be a child of `molecule` or `formula`. Container for `atom`s.
|
|
70
|
+
MUST contain at least one child `atom`.
|
|
71
|
+
|
|
72
|
+
## BondArray
|
|
73
|
+
|
|
74
|
+
MUST be a child of `molecule`. Container for `bond`s.
|
|
75
|
+
MUST contain at least one child `bond`.
|
|
76
|
+
|
|
77
|
+
## Atom Element
|
|
78
|
+
|
|
79
|
+
MUST be a child of `atomArray`. MUST have `elementType` attribute.
|
|
80
|
+
MUST have `id` if inside an `atomArray` in a `molecule` (optional in
|
|
81
|
+
`formula`).
|
|
82
|
+
|
|
83
|
+
Supported attributes: `x2`/`y2` (2D display, must appear together),
|
|
84
|
+
`x3`/`y3`/`z3` (3D coords in Angstrom, right-handed, must appear
|
|
85
|
+
together), `formalCharge`, `isotopeNumber`, `spinMultiplicity`,
|
|
86
|
+
`count` (only inside `formula`), `atomParity` child, any number of
|
|
87
|
+
`label` and `property` children.
|
|
88
|
+
|
|
89
|
+
## Bond Element
|
|
90
|
+
|
|
91
|
+
MUST be a child of `bondArray`. Bonds are between exactly two `atom`s
|
|
92
|
+
in the same parent `molecule`.
|
|
93
|
+
|
|
94
|
+
- `atomRefs2` — REQUIRED, two distinct atom ids in same molecule
|
|
95
|
+
- `order` — REQUIRED. Recommended values: `S`, `D`, `T`, `Q`, `A`.
|
|
96
|
+
Numeric values NOT recommended. If `other`, MUST have `dictRef`.
|
|
97
|
+
- `id` — RECOMMENDED, unique within eldest containing molecule
|
|
98
|
+
- `bondStereo` child — OPTIONAL
|
|
99
|
+
- `label` children — any number
|
|
100
|
+
|
|
101
|
+
## BondStereo Element
|
|
102
|
+
|
|
103
|
+
MUST be a child of `bond`. Supports cis (`C`) / trans (`T`) and
|
|
104
|
+
wedge (`W`) / hatch (`H`).
|
|
105
|
+
|
|
106
|
+
- If value is `W` or `H` — MUST have `atomRefs2` (the two atoms in the
|
|
107
|
+
parent bond; first = sharp end, second = blunt end). MUST NOT have
|
|
108
|
+
`atomRefs4`.
|
|
109
|
+
- If value is `C` or `T` — MUST have `atomRefs4` (four distinct atom
|
|
110
|
+
ids; two MUST be the parent bond's atoms). MUST NOT have `atomRefs2`.
|
|
111
|
+
- If value is `other` — MUST have `dictRef`.
|
|
112
|
+
|
|
113
|
+
## Acknowledgements
|
|
114
|
+
|
|
115
|
+
Joe Townsend, Peter Murray-Rust, Alex Wade, Sam Adams.
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
<!-- Source: http://www.xml-cml.org/convention/unit-dictionary -->
|
|
2
|
+
<!-- Editors: Sam Adams, Joe Townsend (University of Cambridge) -->
|
|
3
|
+
<!-- License: CC-BY-3.0 (http://creativecommons.org/licenses/by/3.0/) -->
|
|
4
|
+
|
|
5
|
+
# CML Unit Dictionary Convention
|
|
6
|
+
|
|
7
|
+
**This version:** http://www.xml-cml.org/convention/unit-dictionary-20110303
|
|
8
|
+
**Latest version:** http://www.xml-cml.org/convention/unit-dictionary
|
|
9
|
+
**Editors:** Sam Adams, Joe Townsend (University of Cambridge)
|
|
10
|
+
|
|
11
|
+
## Abstract
|
|
12
|
+
|
|
13
|
+
This specification defines the requirements of the Chemical Markup
|
|
14
|
+
Language unit-dictionary convention.
|
|
15
|
+
|
|
16
|
+
## Applying the unit-dictionary convention
|
|
17
|
+
|
|
18
|
+
The unit-dictionary convention MUST be specified using the `convention`
|
|
19
|
+
attribute on a `unitList` element.
|
|
20
|
+
|
|
21
|
+
## UnitList Element
|
|
22
|
+
|
|
23
|
+
### Namespace
|
|
24
|
+
|
|
25
|
+
The `unitList` element MUST have a `namespace` attribute, value MUST be
|
|
26
|
+
a valid URI defining the scope within which the unit ids are unique.
|
|
27
|
+
SHOULD end with `/` or `#`.
|
|
28
|
+
|
|
29
|
+
### Title
|
|
30
|
+
|
|
31
|
+
The `unitList` element SHOULD have a `title` attribute (non-empty).
|
|
32
|
+
|
|
33
|
+
### Description
|
|
34
|
+
|
|
35
|
+
The `unitList` element SHOULD have a single `description` child element.
|
|
36
|
+
MUST contain XHTML child elements only.
|
|
37
|
+
|
|
38
|
+
### Units
|
|
39
|
+
|
|
40
|
+
The `unitList` element MUST contain one or more child `unit` elements,
|
|
41
|
+
and MUST NOT contain any other child elements from the CML namespace.
|
|
42
|
+
|
|
43
|
+
## Unit Elements
|
|
44
|
+
|
|
45
|
+
### Id
|
|
46
|
+
|
|
47
|
+
A `unit` element MUST have an `id` attribute, unique within the
|
|
48
|
+
unitList. Pattern: same as dictionary entry ids.
|
|
49
|
+
|
|
50
|
+
### Title
|
|
51
|
+
|
|
52
|
+
A `unit` element MUST have a `title` attribute — typically the full
|
|
53
|
+
name (id is the abbreviation, e.g. id=`kg`, title=`kilogram`).
|
|
54
|
+
|
|
55
|
+
### Symbol
|
|
56
|
+
|
|
57
|
+
A `unit` element MUST have a `symbol` attribute — the full symbol used
|
|
58
|
+
to represent this unit (e.g. `K`, `Hz`, `J`, `Bq`).
|
|
59
|
+
|
|
60
|
+
### Parent SI
|
|
61
|
+
|
|
62
|
+
A `unit` element MUST have a `parentSI` attribute — QName referencing
|
|
63
|
+
the parent SI unit (e.g. calorie's parentSI is joule).
|
|
64
|
+
|
|
65
|
+
### Multiplier and/or Constant to SI
|
|
66
|
+
|
|
67
|
+
A `unit` element MUST have at least one of `multiplierToSI` or
|
|
68
|
+
`constantToSI` (both doubles).
|
|
69
|
+
|
|
70
|
+
- `multiplierToSI` — factor to multiply by to convert to SI (applied
|
|
71
|
+
before constantToSI). Unity for SI units.
|
|
72
|
+
- `constantToSI` — amount to add to convert to SI (applied after
|
|
73
|
+
multiplierToSI). Zero for SI units.
|
|
74
|
+
|
|
75
|
+
### Unit Type
|
|
76
|
+
|
|
77
|
+
Every `unit` element MUST have a `unitType` attribute — QName
|
|
78
|
+
referencing the unit type (time, temperature, length, force, ...).
|
|
79
|
+
|
|
80
|
+
### Definition
|
|
81
|
+
|
|
82
|
+
A `unit` element MUST contain a single `definition` child element with
|
|
83
|
+
XHTML content.
|
|
84
|
+
|
|
85
|
+
### Description
|
|
86
|
+
|
|
87
|
+
A `unit` element MAY have a single `description` child element with
|
|
88
|
+
XHTML content.
|
|
89
|
+
|
|
90
|
+
## Acknowledgements
|
|
91
|
+
|
|
92
|
+
Peter Murray-Rust, Joe Townsend, Sam Adams, Egon Willighagen.
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
<!-- Source: http://www.xml-cml.org/convention/unitType-dictionary -->
|
|
2
|
+
<!-- Editors: Sam Adams, Joe Townsend (University of Cambridge) -->
|
|
3
|
+
<!-- License: CC-BY-3.0 (http://creativecommons.org/licenses/by/3.0/) -->
|
|
4
|
+
|
|
5
|
+
# CML Unit-Type Dictionary Convention
|
|
6
|
+
|
|
7
|
+
**Latest version:** http://www.xml-cml.org/convention/unitType-dictionary
|
|
8
|
+
**Editors:** Sam Adams, Joe Townsend (University of Cambridge)
|
|
9
|
+
|
|
10
|
+
## Abstract
|
|
11
|
+
|
|
12
|
+
This specification defines the requirements of the Chemical Markup
|
|
13
|
+
Language unitType-dictionary convention. Unit types abstract over
|
|
14
|
+
units: e.g. the units metre, angstrom and picometre are all of type
|
|
15
|
+
*length*; Kelvin is of type *temperature*.
|
|
16
|
+
|
|
17
|
+
## Applying the unitType-dictionary convention
|
|
18
|
+
|
|
19
|
+
The unitType-dictionary convention MUST be specified using the
|
|
20
|
+
`convention` attribute on a `unitTypeList` element.
|
|
21
|
+
|
|
22
|
+
## UnitTypeList Element
|
|
23
|
+
|
|
24
|
+
The `unitTypeList` element MUST have a `namespace` attribute (valid URI,
|
|
25
|
+
SHOULD end with `/` or `#`).
|
|
26
|
+
|
|
27
|
+
The `unitTypeList` element SHOULD have a `title` attribute (non-empty).
|
|
28
|
+
|
|
29
|
+
The `unitTypeList` element SHOULD have a single `description` child
|
|
30
|
+
element with XHTML content.
|
|
31
|
+
|
|
32
|
+
The `unitTypeList` element MUST contain one or more child `unitType`
|
|
33
|
+
elements, and MUST NOT contain any other CML-namespace child elements.
|
|
34
|
+
|
|
35
|
+
## UnitType Elements
|
|
36
|
+
|
|
37
|
+
A `unitType` element MUST have an `id` attribute unique within the
|
|
38
|
+
unitTypeList. Pattern: `[A-Za-z][A-Za-z0-9._-]*`.
|
|
39
|
+
|
|
40
|
+
A `unitType` element MUST have a `name` attribute — the full name of
|
|
41
|
+
the unit type (e.g. `length`, `temperature`, `time`).
|
|
42
|
+
|
|
43
|
+
A `unitType` element MUST contain a single `definition` child element
|
|
44
|
+
with XHTML content.
|
|
45
|
+
|
|
46
|
+
A `unitType` element MAY have a single `description` child element with
|
|
47
|
+
XHTML content.
|
|
48
|
+
|
|
49
|
+
## Acknowledgements
|
|
50
|
+
|
|
51
|
+
Peter Murray-Rust, Joe Townsend, Sam Adams, Egon Willighagen.
|