diff --git a/schemas/src/defs/v1.2/properties/core/features.yaml b/schemas/src/defs/v1.2/properties/core/features.yaml index 1171a4698..891b69690 100644 --- a/schemas/src/defs/v1.2/properties/core/features.yaml +++ b/schemas/src/defs/v1.2/properties/core/features.yaml @@ -5,13 +5,14 @@ x-optimade-type: "list" x-optimade-definition: label: "features_core" kind: "property" - version: "1.2.0" + version: "1.2.1" format: "1.2" name: "features" type: - "array" x-optimade-dimensions: names: ["dim_features"] + sizes: [null] description: |- A list of strings that flag which special features are used by the entry. diff --git a/schemas/src/defs/v1.2/properties/optimade/references/authors.yaml b/schemas/src/defs/v1.2/properties/optimade/references/authors.yaml index c4c928cd3..5626f18f2 100644 --- a/schemas/src/defs/v1.2/properties/optimade/references/authors.yaml +++ b/schemas/src/defs/v1.2/properties/optimade/references/authors.yaml @@ -5,11 +5,12 @@ x-optimade-type: "list" x-optimade-definition: label: "authors_optimade_references" kind: "property" - version: "1.2.0" + version: "1.2.1" format: "1.2" name: "authors" x-optimade-dimensions: names: ["dim_authors"] + sizes: [null] type: - "array" - "null" diff --git a/schemas/src/defs/v1.2/properties/optimade/references/editors.yaml b/schemas/src/defs/v1.2/properties/optimade/references/editors.yaml index 9976bf2e4..1b26eb9d5 100644 --- a/schemas/src/defs/v1.2/properties/optimade/references/editors.yaml +++ b/schemas/src/defs/v1.2/properties/optimade/references/editors.yaml @@ -5,11 +5,12 @@ x-optimade-type: "list" x-optimade-definition: label: "editors_optimade_references" kind: "property" - version: "1.2.0" + version: "1.2.1" format: "1.2" name: "editors" x-optimade-dimensions: names: ["dim_editors"] + sizes: [null] type: - "array" - "null" diff --git a/schemas/src/defs/v1.2/properties/optimade/structures/assemblies.yaml b/schemas/src/defs/v1.2/properties/optimade/structures/assemblies.yaml index ac655d40c..6ea1cf651 100644 --- a/schemas/src/defs/v1.2/properties/optimade/structures/assemblies.yaml +++ b/schemas/src/defs/v1.2/properties/optimade/structures/assemblies.yaml @@ -5,7 +5,7 @@ x-optimade-type: "dictionary" x-optimade-definition: label: "assemblies_optimade_structures" kind: "property" - version: "1.2.0" + version: "1.2.1" format: "1.2" name: "assemblies" type: @@ -117,6 +117,7 @@ properties: x-optimade-type: "list" x-optimade-dimensions: names: ["dim_assembly_groups", "dim_assembly_groups_sites"] + sizes: [null, null] type: - "array" description: |- @@ -135,6 +136,7 @@ properties: x-optimade-type: "list" x-optimade-dimensions: names: ["dim_assembly_groups_sites"] + sizes: [null] type: - "array" description: |- @@ -158,6 +160,7 @@ properties: x-optimade-type: "list" x-optimade-dimensions: names: ["dim_assembly_groups"] + sizes: [null] type: - "array" description: |- diff --git a/schemas/src/defs/v1.2/properties/optimade/structures/dimension_types.yaml b/schemas/src/defs/v1.2/properties/optimade/structures/dimension_types.yaml index bc29710a4..31ec07870 100644 --- a/schemas/src/defs/v1.2/properties/optimade/structures/dimension_types.yaml +++ b/schemas/src/defs/v1.2/properties/optimade/structures/dimension_types.yaml @@ -5,11 +5,12 @@ x-optimade-type: "list" x-optimade-definition: label: "dimension_types_optimade_structures" kind: "property" - version: "1.2.0" + version: "1.2.1" format: "1.2" name: "dimension_types" x-optimade-dimensions: names: ["dim_lattice"] + sizes: [null] type: - "array" - "null" diff --git a/schemas/src/defs/v1.2/properties/optimade/structures/elements.yaml b/schemas/src/defs/v1.2/properties/optimade/structures/elements.yaml index be71935b2..ad503934a 100644 --- a/schemas/src/defs/v1.2/properties/optimade/structures/elements.yaml +++ b/schemas/src/defs/v1.2/properties/optimade/structures/elements.yaml @@ -5,11 +5,12 @@ x-optimade-type: "list" x-optimade-definition: label: "elements_optimade_structures" kind: "property" - version: "1.2.0" + version: "1.2.1" format: "1.2" name: "elements" x-optimade-dimensions: names: ["dim_elements"] + sizes: [null] type: - "array" - "null" diff --git a/schemas/src/defs/v1.2/properties/optimade/structures/elements_ratios.yaml b/schemas/src/defs/v1.2/properties/optimade/structures/elements_ratios.yaml index 4e9f146ce..27e9d0646 100644 --- a/schemas/src/defs/v1.2/properties/optimade/structures/elements_ratios.yaml +++ b/schemas/src/defs/v1.2/properties/optimade/structures/elements_ratios.yaml @@ -5,11 +5,12 @@ x-optimade-type: "list" x-optimade-definition: label: "elements_ratios_optimade_structures" kind: "property" - version: "1.2.0" + version: "1.2.1" format: "1.2" name: "elements_ratios" x-optimade-dimensions: names: ["dim_elements"] + sizes: [null] type: - "array" - "null" diff --git a/schemas/src/defs/v1.2/properties/optimade/structures/nelements.yaml b/schemas/src/defs/v1.2/properties/optimade/structures/nelements.yaml index 091143345..9a609425a 100644 --- a/schemas/src/defs/v1.2/properties/optimade/structures/nelements.yaml +++ b/schemas/src/defs/v1.2/properties/optimade/structures/nelements.yaml @@ -5,7 +5,7 @@ x-optimade-type: "integer" x-optimade-definition: label: "nelements_optimade_structures" kind: "property" - version: "1.2.0" + version: "1.2.1" format: "1.2" name: "nelements" type: @@ -26,7 +26,3 @@ description: |- examples: - 3 x-optimade-unit: "dimensionless" -x-optimade-requirements: - support: "should" - sortable: false - query-support: "all mandatory" diff --git a/schemas/src/defs/v1.2/properties/optimade/structures/space_group_it_number.yaml b/schemas/src/defs/v1.2/properties/optimade/structures/space_group_it_number.yaml index e64364147..5b528acbf 100644 --- a/schemas/src/defs/v1.2/properties/optimade/structures/space_group_it_number.yaml +++ b/schemas/src/defs/v1.2/properties/optimade/structures/space_group_it_number.yaml @@ -5,7 +5,7 @@ x-optimade-type: "integer" x-optimade-definition: label: "space_group_it_number_optimade_structures" kind: "property" - version: "1.2.0" + version: "1.2.1" format: "1.2" name: "space_group_it_number" type: @@ -20,4 +20,4 @@ description: |- - MUST be `null` if `nperiodic_dimensions` is not equal to 3. examples: - 42 -x-optimade-unit: "unapplicable" +x-optimade-unit: "inapplicable" diff --git a/schemas/src/defs/v1.2/properties/optimade/structures/space_group_symbol_hall.yaml b/schemas/src/defs/v1.2/properties/optimade/structures/space_group_symbol_hall.yaml index f39fc6a33..a293539ce 100644 --- a/schemas/src/defs/v1.2/properties/optimade/structures/space_group_symbol_hall.yaml +++ b/schemas/src/defs/v1.2/properties/optimade/structures/space_group_symbol_hall.yaml @@ -5,7 +5,7 @@ x-optimade-type: "string" x-optimade-definition: label: "space_group_symbol_hall_optimade_structures" kind: "property" - version: "1.2.0" + version: "1.2.1" format: "1.2" name: "space_group_symbol_hall" type: @@ -43,4 +43,4 @@ examples: - "-I 4db 2ab 3" - "P 2yb (-1/2*x+z,1/2*x,y)" - "-I 4 2 (1/2*x+1/2*y,-1/2*x+1/2*y,z)" -x-optimade-unit: "unapplicable" +x-optimade-unit: "inapplicable" diff --git a/schemas/src/defs/v1.2/properties/optimade/structures/space_group_symbol_hermann_mauguin.yaml b/schemas/src/defs/v1.2/properties/optimade/structures/space_group_symbol_hermann_mauguin.yaml index e28399ea8..6dff7df7a 100644 --- a/schemas/src/defs/v1.2/properties/optimade/structures/space_group_symbol_hermann_mauguin.yaml +++ b/schemas/src/defs/v1.2/properties/optimade/structures/space_group_symbol_hermann_mauguin.yaml @@ -5,7 +5,7 @@ x-optimade-type: "string" x-optimade-definition: label: "space_group_symbol_hermann_mauguin_optimade_structures" kind: "property" - version: "1.2.0" + version: "1.2.1" format: "1.2" name: "space_group_symbol_hermann_mauguin" type: @@ -32,4 +32,4 @@ description: |- examples: - "C 2" - "P 21 21 21" -x-optimade-unit: "unapplicable" +x-optimade-unit: "inapplicable" diff --git a/schemas/src/defs/v1.2/properties/optimade/structures/space_group_symbol_hermann_mauguin_extended.yaml b/schemas/src/defs/v1.2/properties/optimade/structures/space_group_symbol_hermann_mauguin_extended.yaml index 1965269bd..dbf210aa4 100644 --- a/schemas/src/defs/v1.2/properties/optimade/structures/space_group_symbol_hermann_mauguin_extended.yaml +++ b/schemas/src/defs/v1.2/properties/optimade/structures/space_group_symbol_hermann_mauguin_extended.yaml @@ -5,7 +5,7 @@ x-optimade-type: "string" x-optimade-definition: label: "space_group_symbol_hermann_mauguin_extended_optimade_structures" kind: "property" - version: "1.2.0" + version: "1.2.1" format: "1.2" name: "space_group_symbol_hermann_mauguin_extended" type: @@ -28,4 +28,4 @@ description: |- - IUCr (2005). International Tables for Crystallography vol. A. Space-Group Symmetry. Ed. Theo Hahn. 5-th edition. Dordrecht, Springer. examples: - "C 1 2 1" -x-optimade-unit: "unapplicable" +x-optimade-unit: "inapplicable" diff --git a/schemas/src/defs/v1.2/properties/optimade/structures/space_group_symmetry_operations_xyz.yaml b/schemas/src/defs/v1.2/properties/optimade/structures/space_group_symmetry_operations_xyz.yaml index 345c041f1..36f4e85cd 100644 --- a/schemas/src/defs/v1.2/properties/optimade/structures/space_group_symmetry_operations_xyz.yaml +++ b/schemas/src/defs/v1.2/properties/optimade/structures/space_group_symmetry_operations_xyz.yaml @@ -5,9 +5,12 @@ x-optimade-type: "list" x-optimade-definition: label: "space_group_symmetry_operations_xyz_optimade_structures" kind: "property" - version: "1.2.0" + version: "1.2.1" format: "1.2" name: "space_group_symmetry_operations_xyz" +x-optimade-dimensions: + names: ["dim_symops"] + sizes: [null] type: - "array" - "null" @@ -45,6 +48,6 @@ description: |- examples: - ["x,y,z", "-x,y,-z"] - ["x,y,z", "-x,y,-z", "x+1/2,y+1/2,z", "-x+1/2,y+1/2,-z"] -x-optimade-unit: "unapplicable" +x-optimade-unit: "inapplicable" items: $$inherit: "/v1.2/properties/optimade/common/space_group_symmetry_operation_xyz" diff --git a/schemas/src/defs/v1.2/properties/optimade/structures/species.yaml b/schemas/src/defs/v1.2/properties/optimade/structures/species.yaml index 03eb82792..07914ef82 100644 --- a/schemas/src/defs/v1.2/properties/optimade/structures/species.yaml +++ b/schemas/src/defs/v1.2/properties/optimade/structures/species.yaml @@ -5,11 +5,12 @@ x-optimade-type: "list" x-optimade-definition: label: "species_optimade_structures" kind: "property" - version: "1.2.0" + version: "1.2.1" format: "1.2" name: "species" x-optimade-dimensions: names: ["dim_species"] + sizes: [null] x-optimade-unit-definitions: - $$inherit: "/v1.2/units/si/general/atomicmassunit" type: @@ -90,6 +91,7 @@ items: x-optimade-type: "list" x-optimade-dimensions: names: ["dim_species_chemical_symbols"] + sizes: [null] type: - "array" description: |- @@ -116,6 +118,7 @@ items: x-optimade-type: "list" x-optimade-dimensions: names: ["dim_species_chemical_symbols"] + sizes: [null] type: - "array" description: |- @@ -146,6 +149,7 @@ items: x-optimade-type: "list" x-optimade-dimensions: names: ["dim_species_attached"] + sizes: [null] type: - "array" description: |- @@ -171,6 +175,7 @@ items: x-optimade-type: "list" x-optimade-dimensions: names: ["dim_species_attached"] + sizes: [null] type: - "array" description: |- @@ -194,6 +199,7 @@ items: x-optimade-type: "list" x-optimade-dimensions: names: ["dim_species_chemical_symbols"] + sizes: [null] type: - "array" description: |- diff --git a/schemas/src/defs/v1.2/properties/optimade/structures/species_at_sites.yaml b/schemas/src/defs/v1.2/properties/optimade/structures/species_at_sites.yaml index de9389a5d..fc756b3be 100644 --- a/schemas/src/defs/v1.2/properties/optimade/structures/species_at_sites.yaml +++ b/schemas/src/defs/v1.2/properties/optimade/structures/species_at_sites.yaml @@ -5,11 +5,12 @@ x-optimade-type: "list" x-optimade-definition: label: "species_at_sites_optimade_structures" kind: "property" - version: "1.2.0" + version: "1.2.1" format: "1.2" name: "species_at_sites" x-optimade-dimensions: names: ["dim_sites"] + sizes: [null] type: - "array" - "null" diff --git a/schemas/src/defs/v1.2/properties/optimade/structures/structure_features.yaml b/schemas/src/defs/v1.2/properties/optimade/structures/structure_features.yaml index 86028c400..943ecdc7d 100644 --- a/schemas/src/defs/v1.2/properties/optimade/structures/structure_features.yaml +++ b/schemas/src/defs/v1.2/properties/optimade/structures/structure_features.yaml @@ -5,9 +5,12 @@ $$inherit: "/v1.2/properties/core/features" x-optimade-definition: label: "structure_features_optimade_structures" kind: "property" - version: "1.2.0" + version: "1.2.1" format: "1.2" name: "structure_features" +x-optimade-dimensions: + names: ["dim_structure_features"] + sizes: [null] description: |- A list of strings that flag which special features are used by the structure. diff --git a/schemas/src/defs/v1.3/properties/optimade/structures/fractional_site_positions.yaml b/schemas/src/defs/v1.3/properties/optimade/structures/fractional_site_positions.yaml index 5be553a87..fbbbe86cf 100644 --- a/schemas/src/defs/v1.3/properties/optimade/structures/fractional_site_positions.yaml +++ b/schemas/src/defs/v1.3/properties/optimade/structures/fractional_site_positions.yaml @@ -1,6 +1,6 @@ $$schema: "https://schemas.optimade.org/meta/v1.2/optimade/property_definition" $id: "https://schemas.optimade.org/defs/v1.3/properties/optimade/structures/fractional_site_positions" -title: "Fractional site positions" +title: "fractional site positions" x-optimade-type: "list" x-optimade-definition: label: "fractional_site_positions_optimade_structures" diff --git a/schemas/src/defs/v1.3/properties/optimade/structures/optimization_type.yaml b/schemas/src/defs/v1.3/properties/optimade/structures/optimization_type.yaml index c2074776f..04306c2f7 100644 --- a/schemas/src/defs/v1.3/properties/optimade/structures/optimization_type.yaml +++ b/schemas/src/defs/v1.3/properties/optimade/structures/optimization_type.yaml @@ -1,6 +1,6 @@ $$schema: "https://schemas.optimade.org/meta/v1.2/optimade/property_definition" $id: "https://schemas.optimade.org/defs/v1.3/properties/optimade/structures/optimization_type" -title: "Optimization type" +title: "optimization type" x-optimade-type: "string" x-optimade-definition: label: "optimization_type_optimade_structures" @@ -14,30 +14,32 @@ type: description: |- A string that classifies the type of optimization that has resulted in the structural data. - If the property is `null` or omitted, no information is provided about the type of optimization used to obtain the structural data. + **Requirements/Conventions**: - If present and not `null`, the property SHOULD take one of the following values: + * If the property is `null` or omitted, no information is provided about the type of optimization used to obtain the structural data. - * `experimental`: the structure results from an optimization or refinement process part of an experimental technique, e.g., minimization of the discrepancy between observed and predicted scattered amplitudes from diffraction data. + * If present and not `null`, the property SHOULD take one of the following values: - * `hybrid`: the structure is the result of the combination of an experiment and further optimization based on a reasonable theoretical energy model so that it remains a fair representation of the original experimental structure. + * `experimental`: the structure results from an optimization or refinement process part of an experimental technique, e.g., minimization of the discrepancy between observed and predicted scattered amplitudes from diffraction data. + + * `hybrid`: the structure is the result of the combination of an experiment and further optimization based on a reasonable theoretical energy model so that it remains a fair representation of the original experimental structure. For example, experimental structures relaxed using *ab initio* calculations are in this category. Structures where the experimental coordinates are kept, but one or more elements are substituted for other elements, are not included in this category. - * `global`: the structure has been optimized using a theoretical technique based on a reasonable energy model in a way that takes into account the global energy surface. + * `global`: the structure has been optimized using a theoretical technique based on a reasonable energy model in a way that takes into account the global energy surface. The structure has been optimized into the global energy minimum or into a local minimum within an energy range of the global minimum commonly considered for potential metastability (typically on the scale of 100 meV/atom). A common technique for this type of optimization is to construct the convex hull of thermodynamical stability from the known minima and dismiss structures outside the relevant energy range. - * `local`: the structure has been optimized using a theoretical technique based on a reasonable energy model into a local minimum of the energy surface. + * `local`: the structure has been optimized using a theoretical technique based on a reasonable energy model into a local minimum of the energy surface. For example, structures relaxed using *ab initio* calculations without consideration of the energy of other minima in configuration space qualify for this category. - * `none`: the structure has not undergone an optimization process and is thus, in some sense, arbitrary. + * `none`: the structure has not undergone an optimization process and is thus, in some sense, arbitrary. Structures of this kind can come from, e.g., randomly generated coordinates or non-equilibrium snapshots. - * `indeterminate`: the database declares that the type of optimization used for this specific entry cannot be determined, e.g., because that information is missing. + * `indeterminate`: the database declares that the type of optimization used for this specific entry cannot be determined, e.g., because that information is missing. This value represents a stronger statement (that the database knows that the type of optimization is not known) than an omitted classification (i.e., the field is missing or has the value `null`) which communicates that the property is unknown only in the sense discussed in the section `Properties with an unknown value`.) - * `other`: the structure is the result of some optimization process, but none of the other categories correctly represents the type of optimization used. + * `other`: the structure is the result of some optimization process, but none of the other categories correctly represents the type of optimization used. Other strings prefixed by a database-specific prefix, e.g., `_exmpl_optimized_on_fixed_grid`, SHOULD NOT be used. Other non-standard strings MUST NOT be used. diff --git a/schemas/src/defs/v1.3/properties/optimade/structures/site_coordinate_span.yaml b/schemas/src/defs/v1.3/properties/optimade/structures/site_coordinate_span.yaml index defb31646..372f92204 100644 --- a/schemas/src/defs/v1.3/properties/optimade/structures/site_coordinate_span.yaml +++ b/schemas/src/defs/v1.3/properties/optimade/structures/site_coordinate_span.yaml @@ -1,6 +1,6 @@ $$schema: "https://schemas.optimade.org/meta/v1.2/optimade/property_definition" $id: "https://schemas.optimade.org/defs/v1.3/properties/optimade/structures/site_coordinate_span" -title: "Site coordinate span" +title: "site coordinate span" x-optimade-type: "string" x-optimade-definition: label: "site_coordinate_span_optimade_structures" @@ -50,6 +50,9 @@ description: |- European Mathematical Society (2020). Fundamental domain. Encyclopedia of Mathematics. URL: http://encyclopediaofmath.org/index.php?title=Fundamental_domain&oldid=47023 [accessed 2025-04-30T08:53+03:00]. IUCr (2017). Asymmetric unit. Online Dictionary of Crystallography, URL: https://dictionary.iucr.org/Asymmetric_unit [accessed 2025-04-30T09:01+03:00]. +examples: + - asymmetric_unit + - unit_cell x-optimade-unit: "inapplicable" enum: - fundamental_domain diff --git a/schemas/src/defs/v1.3/properties/optimade/structures/site_coordinate_span_description.yaml b/schemas/src/defs/v1.3/properties/optimade/structures/site_coordinate_span_description.yaml index 1669bbcf4..16f1799ae 100644 --- a/schemas/src/defs/v1.3/properties/optimade/structures/site_coordinate_span_description.yaml +++ b/schemas/src/defs/v1.3/properties/optimade/structures/site_coordinate_span_description.yaml @@ -1,6 +1,6 @@ $$schema: "https://schemas.optimade.org/meta/v1.2/optimade/property_definition" $id: "https://schemas.optimade.org/defs/v1.3/properties/optimade/structures/site_coordinate_span_description" -title: "Site coordinate span description" +title: "site coordinate span description" x-optimade-type: "string" x-optimade-definition: label: "site_coordinate_span_description_optimade_structures" diff --git a/schemas/src/defs/v1.3/properties/optimade/structures/wyckoff_positions.yaml b/schemas/src/defs/v1.3/properties/optimade/structures/wyckoff_positions.yaml index aabb40286..ab8bf58dd 100644 --- a/schemas/src/defs/v1.3/properties/optimade/structures/wyckoff_positions.yaml +++ b/schemas/src/defs/v1.3/properties/optimade/structures/wyckoff_positions.yaml @@ -1,4 +1,4 @@ -$$schema: "https://schemas.optimade.org/meta/v1.3/optimade/property_definition" +$$schema: "https://schemas.optimade.org/meta/v1.2/optimade/property_definition" $id: "https://schemas.optimade.org/defs/v1.3/properties/optimade/structures/wyckoff_positions" title: "Wyckoff positions" x-optimade-type: "list" @@ -10,6 +10,7 @@ x-optimade-definition: name: "wyckoff_positions" x-optimade-dimensions: names: ["dim_sites"] + sizes: [null] type: - "array" - "null" diff --git a/schemas/src/meta/v1.2/optimade/property_definition.yaml b/schemas/src/meta/v1.2/optimade/property_definition.yaml index e9b194cf2..e0ec310d0 100644 --- a/schemas/src/meta/v1.2/optimade/property_definition.yaml +++ b/schemas/src/meta/v1.2/optimade/property_definition.yaml @@ -273,6 +273,7 @@ $defs: Instead, provide information on the length of a list for an implementation to validate. This is communicated in the `sizes` subfield of this field. At this time, `sizes` can only specify a fixed length requirement. type: object additionalProperties: false + required: ['names', 'sizes'] patternProperties: "^x-(?!optimade-)": {} properties: diff --git a/schemas/src/meta/v1.3/optimade/property_definition.yaml b/schemas/src/meta/v1.3/optimade/property_definition.yaml index ae2631034..76a11e88b 100644 --- a/schemas/src/meta/v1.3/optimade/property_definition.yaml +++ b/schemas/src/meta/v1.3/optimade/property_definition.yaml @@ -1,6 +1,12 @@ $schema: "https://json-schema.org/draft/2020-12/schema" $id: "https://schemas.optimade.org/meta/v1.3/optimade/property_definition" title: "OPTIMADE property definition schema" +x-optimade-definition: + label: "property_definition_optimade_meta" + kind: "property" + version: "1.3.0" + format: "1.3" + name: "property_definition" type: object allOf: - $ref: "#/$defs/property_definition_field" @@ -274,6 +280,7 @@ $defs: Instead, provide information on the length of a list for an implementation to validate. This is communicated in the `sizes` subfield of this field. At this time, `sizes` can only specify a fixed length requirement. type: object additionalProperties: false + required: ['names', 'sizes'] patternProperties: "^x-(?!optimade-)": {} properties: @@ -295,6 +302,21 @@ $defs: type: - "integer" - "null" + compactable: + description: |- + For each dimension, defines whether the data can be written in a compact form along that dimension. + If the value is `"no"` for one given dimension, the standard rules to represent lists apply (i.e., the server CANNOT express that property using a compact format). + If the value is any other string for one given dimension (currently, only the string `"constant"` is supported), the server MAY decide to express the data in the response using the compact format defined by that string. + If it decides not to do so, then it MUST use the standard rules to represent lists. + If `compactable` is provided, then a value MUST be given for each dimension. + If `compactable` is not provided, then the default value is `"no"` for each dimension. + type: array + items: + type: + - string + enum: + - "constant" + - "no" x-optimade-unit-definitions: type: array items: