httk
httk property definitionsProperty definitions using the OPTIMADE property definition format, hosted by httk
Note: prerelease version v0.1, subject to change

Space groups (property)

This page documents an OPTIMADE Property Definition. See https://schemas.optimade.org/ for more information.

ID: https://schemas.httk.org/defs/v0.1/datasets/spacegroups
Definition name: spacegroups

Property name: Space groups
Description: Ordered table of crystallographic space-group setting records. Each item describes one concrete Hall/International Tables setting of a space group, including symbols, classifications, symmetry operations, asymmetric-unit information, Wyckoff positions, and related auxiliary data. The companion top-level indicies.index_hall_entry_to_spacegroups lookup maps normalized Hall entries to indices in this list; it is not an OPTIMADE property.
Type: list

Requirements/Conventions:

Examples:

Formats: [JSON] [MD]

JSON definition:

{
    "$id": "https://schemas.httk.org/defs/v0.1/datasets/spacegroups",
    "$schema": "https://schemas.optimade.org/meta/v1.3/optimade/property_definition.json",
    "title": "Space groups",
    "$comment": "Dataset of spacegroups entries.",
    "x-optimade-type": "list",
    "x-optimade-definition": {
        "kind": "property",
        "version": "0.1.0",
        "format": "1.3",
        "name": "spacegroups",
        "label": "spacegroups_dataset"
    },
    "x-optimade-unit": "inapplicable",
    "type": [
        "array",
        "null"
    ],
    "description": "Ordered table of crystallographic space-group setting records.\nEach item describes one concrete Hall/International Tables setting of a space group, including symbols, classifications, symmetry operations, asymmetric-unit information, Wyckoff positions, and related auxiliary data.\nThe companion top-level `indicies.index_hall_entry_to_spacegroups` lookup maps normalized Hall entries to indices in this list; it is not an OPTIMADE property.\n\n**Requirements/Conventions**:\n\n- Items MUST be ordered in the same setting order as `spacegroup_symbols.json.gz`, with additional cctbx-only Hall settings kept in their IT-number block.\n- A single IT number can occur in several items.\n- The `setting_it_nc` property gives the corresponding International Tables `n:c` setting code when applicable.",
    "items": {
        "$id": "https://schemas.httk.org/defs/v0.1/entrytypes/spacegroups",
        "x-optimade-type": "dictionary",
        "x-optimade-unit": "inapplicable",
        "type": [
            "object",
            "null"
        ],
        "title": "httk space group symmetry fields",
        "x-optimade-definition": {
            "kind": "entrytype",
            "format": "1.3",
            "version": "0.1.0",
            "name": "spacegroups",
            "label": "spacegroups_entrytype_httk"
        },
        "properties": {
            "id": {
                "$id": "https://schemas.optimade.org/defs/v1.2/properties/core/id",
                "x-optimade-requirements": {
                    "support": "must",
                    "sortable": true,
                    "query-support": "all mandatory",
                    "response-level": "always"
                },
                "title": "ID",
                "x-optimade-type": "string",
                "x-optimade-definition": {
                    "label": "id_core",
                    "kind": "property",
                    "version": "1.2.0",
                    "format": "1.2",
                    "name": "id"
                },
                "type": [
                    "string"
                ],
                "description": "A unique string referencing a specific entry in the database.\n\n**Requirements/Conventions:**\n\n- Taken together, the ID and entry type MUST uniquely identify the entry.\n- Reasonably short IDs are encouraged and SHOULD NOT be longer than 255 characters.\n- IDs MAY change over time.",
                "examples": [
                    "db/1234567",
                    "cod/2000000",
                    "cod/2000000@1234567",
                    "nomad/L1234567890",
                    "42"
                ],
                "x-optimade-unit": "inapplicable"
            },
            "type": {
                "$id": "https://schemas.optimade.org/defs/v1.2/properties/core/type",
                "x-optimade-requirements": {
                    "support": "must",
                    "sortable": true,
                    "query-support": "all mandatory",
                    "response-level": "always"
                },
                "title": "type",
                "x-optimade-type": "string",
                "x-optimade-definition": {
                    "label": "type_core",
                    "kind": "property",
                    "version": "1.2.0",
                    "format": "1.2",
                    "name": "type"
                },
                "type": [
                    "string"
                ],
                "description": "The name of the type of an entry.\n\n**Requirements/Conventions:**\n\n- MUST be an existing entry type.\n- The entry of type <type> and ID <id> MUST be returned in response to a request for /<type>/<id> under the versioned or unversioned base URL serving the API.",
                "examples": [
                    "structures"
                ],
                "x-optimade-unit": "inapplicable"
            },
            "immutable_id": {
                "$id": "https://schemas.optimade.org/defs/v1.2/properties/core/immutable_id",
                "x-optimade-requirements": {
                    "support": "may",
                    "sortable": false,
                    "query-support": "all mandatory",
                    "response-level": "may"
                },
                "title": "immutable ID",
                "x-optimade-type": "string",
                "x-optimade-definition": {
                    "label": "immutable_id_core",
                    "kind": "property",
                    "version": "1.2.0",
                    "format": "1.2",
                    "name": "immutable_id"
                },
                "type": [
                    "string",
                    "null"
                ],
                "description": "The entry's immutable ID (e.g., a UUID).\n\n**Requirements/Conventions:**\n\n- This is important for databases having preferred IDs that point to \"the latest version\" of a record, but still offer access to older variants.\n- This ID maps to the version-specific record, in case it changes in the future.",
                "examples": [
                    "8bd3e750-b477-41a0-9b11-3a799f21b44f",
                    "fjeiwoj,54;@=%<>#32"
                ],
                "x-optimade-unit": "inapplicable"
            },
            "last_modified": {
                "$id": "https://schemas.optimade.org/defs/v1.2/properties/core/last_modified",
                "x-optimade-requirements": {
                    "support": "should",
                    "sortable": false,
                    "query-support": "all mandatory",
                    "response-level": "must"
                },
                "title": "last modified",
                "x-optimade-type": "timestamp",
                "x-optimade-definition": {
                    "label": "last_modified_core",
                    "kind": "property",
                    "version": "1.2.0",
                    "format": "1.2",
                    "name": "last_modified"
                },
                "type": [
                    "string",
                    "null"
                ],
                "format": "date-time",
                "description": "Date and time representing when the entry was last modified.",
                "examples": [
                    "2007-04-05T14:30:20Z"
                ],
                "x-optimade-unit": "inapplicable"
            },
            "asu": {
                "$id": "https://schemas.httk.org/defs/v0.1/properties/spacegroups/asu",
                "x-optimade-requirements": {
                    "support": "may",
                    "sortable": false,
                    "query-support": "none",
                    "response-level": "may"
                },
                "title": "Asymmetric unit",
                "x-optimade-type": "dictionary",
                "x-optimade-definition": {
                    "kind": "property",
                    "version": "0.1.0",
                    "format": "1.3",
                    "name": "asu",
                    "label": "asu_spacegroups"
                },
                "x-optimade-unit": "inapplicable",
                "type": [
                    "object",
                    "null"
                ],
                "description": "Direct-space asymmetric unit for the space-group setting, represented as a bounded non-recursive set of half-space cuts and boundary ownership rules.\n\nThe representation is equivalent to the recursive cctbx direct-space ASU cut expression documented by Grosse-Kunstleve et al., Acta Cryst. A67, 269 (2011), but stores the volume, face, edge, and vertex rules in separate fixed-depth tables.\nThe recursive node shape of that source representation is described by `/defs/v0.1/properties/spacegroups/asu_cut`.\nA point is inside the ASU volume only if all `volume_cuts` pass.\nEach volume cut tests an oriented plane from `planes`: a positive plane value includes the point, a negative value excludes it, and an exactly zero value uses `when_zero`.\nBoundary rules are disjunctive normal form rule tables: the outer `dnf` list is OR, each inner list is AND, and each term tests one oriented plane and uses its own `on_zero` action.\nFace rules may descend to edge rules on equality, edge rules may descend to vertex rules on equality, and vertex rules terminate with include or exclude actions.\n\nThe original cctbx-style recursive data structure can be recovered from this bounded representation with the following routine:\n\n```python\ndef bounded_asu_to_cctbx_recursive_data(bounded):\n    planes = {plane[\"id\"]: plane for plane in bounded[\"planes\"]}\n    rules = {level: {rule[\"id\"]: rule for rule in bounded[f\"{level}_rules\"]}\n             for level in (\"face\", \"edge\", \"vertex\")}\n\n    def expr_from_terms(terms, op):\n        out = terms[0] if terms else None\n        for term in terms[1:]:\n            out = {\"kind\": \"expr\", \"op\": op, \"lhs\": out, \"rhs\": term}\n        return out\n\n    def expr_from_rule(level, rule_id):\n        clauses = []\n        for clause in rules[level][rule_id][\"dnf\"]:\n            terms = [cut_from_action(t[\"plane_id\"], t[\"on_zero\"], level)\n                     for t in clause]\n            clauses.append(expr_from_terms(terms, \"&\"))\n        return expr_from_terms(clauses, \"|\")\n\n    def cut_from_action(plane_id, action, level):\n        plane = planes[plane_id]\n        if action[\"action\"] in (\"include\", \"exclude\"):\n            condition = None\n            inclusive = action[\"action\"] == \"include\"\n        else:\n            next_level = {\"volume\": \"face\", \"face\": \"edge\", \"edge\": \"vertex\"}[level]\n            condition = expr_from_rule(next_level, action[\"rule_id\"])\n            inclusive = True\n        return {\n            \"kind\": \"cut\",\n            \"normal\": plane[\"normal\"],\n            \"const\": plane[\"const\"],\n            \"inclusive\": inclusive,\n            \"condition\": condition,\n        }\n\n    return {\n        \"cuts\": [cut_from_action(cut[\"plane_id\"], cut[\"when_zero\"], \"volume\")\n                 for cut in bounded[\"volume_cuts\"]],\n        \"shape_only_cuts\": [\n            {\n                \"kind\": \"cut\",\n                \"normal\": planes[cut[\"plane_id\"]][\"normal\"],\n                \"const\": planes[cut[\"plane_id\"]][\"const\"],\n                \"inclusive\": True,\n                \"condition\": None,\n            }\n            for cut in bounded[\"volume_cuts\"]\n        ],\n    }\n```\n\n**Requirements/Conventions**:\n\n- It MUST be a dictionary with the following keys:\n\n    - **planes**: REQUIRED; List of dictionaries.\n      Registry of all oriented affine planes used by volume cuts and boundary rules.\n      The plane value is `normal[0]*x + normal[1]*y + normal[2]*z + const` in fractional coordinates.\n      The positive side of the plane is the inside half-space for the corresponding cut term.\n\n    - **volume\\_cuts**: REQUIRED; List of dictionaries.\n      Top-level volume cuts combined as one conjunction.\n      Each volume cut references one plane and gives explicit actions for positive, negative, and zero plane values.\n\n    - **face\\_rules**: REQUIRED; List of dictionaries.\n      Rule table for two-dimensional face-boundary ownership.\n      Face rules are evaluated only when a volume cut plane value is exactly zero.\n\n    - **edge\\_rules**: REQUIRED; List of dictionaries.\n      Rule table for one-dimensional edge-boundary ownership.\n      Edge rules are evaluated only after a volume cut and a face-level term both evaluate exactly to zero.\n\n    - **vertex\\_rules**: REQUIRED; List of dictionaries.\n      Terminal rule table for zero-dimensional vertex-boundary ownership.\n      Vertex rules cannot descend to another rule level.\n\nPlane coefficients are covector components in the fractional basis; `normal` is not generally a Cartesian unit normal.\nAll signs and equality tests refer to `normal dot (x,y,z) + const`, with exact rational coefficients.\nA zero-boundary action is consulted only on the plane: a false boundary condition never includes a point on the negative side.\nPlane and rule identifiers are local to this ASU record; every reference MUST resolve in the appropriate registry and every registry identifier MUST be unique within its table.\nThe `include` and `exclude` actions return true and false for the current cut or term; all top-level cuts must still pass.\nThe shape-only representation closes all top-level boundaries and omits their ownership refinements, so it is unsuitable for assigning boundary points uniquely.\nThe example below is the full half-open unit-cube ASU of P1.",
                "properties": {
                    "planes": {
                        "x-optimade-type": "list",
                        "x-optimade-unit": "inapplicable",
                        "type": [
                            "array",
                            "null"
                        ],
                        "description": "Registry of oriented affine planes used by the ASU cuts and rules.",
                        "items": {
                            "x-optimade-type": "dictionary",
                            "x-optimade-unit": "inapplicable",
                            "type": [
                                "object"
                            ],
                            "required": [
                                "id",
                                "normal",
                                "const"
                            ],
                            "description": "One oriented affine plane in fractional coordinates.",
                            "properties": {
                                "id": {
                                    "x-optimade-type": "string",
                                    "x-optimade-unit": "inapplicable",
                                    "type": [
                                        "string"
                                    ],
                                    "description": "Stable identifier used by `volume_cuts` and rule terms to refer to this plane."
                                },
                                "normal": {
                                    "x-optimade-type": "list",
                                    "x-optimade-unit": "inapplicable",
                                    "x-optimade-dimensions": {
                                        "names": [
                                            "dim_lattice"
                                        ],
                                        "sizes": [
                                            3
                                        ]
                                    },
                                    "type": [
                                        "array"
                                    ],
                                    "description": "The three exact rational coefficients multiplying `x`, `y`, and `z` in the plane equation.",
                                    "items": {
                                        "$id": "https://schemas.httk.org/defs/v0.1/properties/core/fraction",
                                        "title": "Fraction",
                                        "x-optimade-type": "string",
                                        "x-optimade-definition": {
                                            "label": "fraction_core",
                                            "kind": "property",
                                            "version": "0.1.0",
                                            "format": "1.3",
                                            "name": "fraction"
                                        },
                                        "type": [
                                            "string",
                                            "null"
                                        ],
                                        "description": "A numerical representation formed as the quotient of two numbers represented as a string.",
                                        "examples": [
                                            "2/3",
                                            "5/42",
                                            "10",
                                            "0"
                                        ],
                                        "x-optimade-unit": "inapplicable"
                                    }
                                },
                                "const": {
                                    "$id": "https://schemas.httk.org/defs/v0.1/properties/core/fraction",
                                    "title": "Fraction",
                                    "x-optimade-type": "string",
                                    "x-optimade-definition": {
                                        "label": "fraction_core",
                                        "kind": "property",
                                        "version": "0.1.0",
                                        "format": "1.3",
                                        "name": "fraction"
                                    },
                                    "type": [
                                        "string",
                                        "null"
                                    ],
                                    "description": "A numerical representation formed as the quotient of two numbers represented as a string.",
                                    "examples": [
                                        "2/3",
                                        "5/42",
                                        "10",
                                        "0"
                                    ],
                                    "x-optimade-unit": "inapplicable"
                                }
                            }
                        }
                    },
                    "volume_cuts": {
                        "x-optimade-type": "list",
                        "x-optimade-unit": "inapplicable",
                        "type": [
                            "array",
                            "null"
                        ],
                        "description": "Top-level ASU volume cuts, combined as an AND-list.",
                        "items": {
                            "x-optimade-type": "dictionary",
                            "x-optimade-unit": "inapplicable",
                            "type": [
                                "object"
                            ],
                            "required": [
                                "id",
                                "plane_id",
                                "when_positive",
                                "when_negative",
                                "when_zero"
                            ],
                            "description": "One top-level oriented cut of the three-dimensional ASU volume.",
                            "properties": {
                                "id": {
                                    "x-optimade-type": "string",
                                    "x-optimade-unit": "inapplicable",
                                    "type": [
                                        "string"
                                    ],
                                    "description": "Stable identifier for this volume cut."
                                },
                                "plane_id": {
                                    "x-optimade-type": "string",
                                    "x-optimade-unit": "inapplicable",
                                    "type": [
                                        "string"
                                    ],
                                    "description": "Identifier of the plane tested by this volume cut."
                                },
                                "when_positive": {
                                    "x-optimade-type": "string",
                                    "x-optimade-unit": "inapplicable",
                                    "type": [
                                        "string"
                                    ],
                                    "enum": [
                                        "include"
                                    ],
                                    "description": "Action for positive plane values."
                                },
                                "when_negative": {
                                    "x-optimade-type": "string",
                                    "x-optimade-unit": "inapplicable",
                                    "type": [
                                        "string"
                                    ],
                                    "enum": [
                                        "exclude"
                                    ],
                                    "description": "Action for negative plane values."
                                },
                                "when_zero": {
                                    "x-optimade-type": "dictionary",
                                    "x-optimade-unit": "inapplicable",
                                    "type": [
                                        "object"
                                    ],
                                    "required": [
                                        "action"
                                    ],
                                    "description": "Action for points exactly on the volume-cut plane.",
                                    "properties": {
                                        "action": {
                                            "x-optimade-type": "string",
                                            "x-optimade-unit": "inapplicable",
                                            "type": [
                                                "string"
                                            ],
                                            "enum": [
                                                "include",
                                                "exclude",
                                                "evaluate_face_rule"
                                            ],
                                            "description": "Boundary action for this equality case."
                                        },
                                        "rule_id": {
                                            "x-optimade-type": "string",
                                            "x-optimade-unit": "inapplicable",
                                            "type": [
                                                "string",
                                                "null"
                                            ],
                                            "description": "Identifier of the face rule to evaluate when `action` is `evaluate_face_rule`."
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "face_rules": {
                        "x-optimade-type": "list",
                        "x-optimade-unit": "inapplicable",
                        "type": [
                            "array",
                            "null"
                        ],
                        "description": "Disjunctive-normal-form face-boundary ownership rules.",
                        "items": {
                            "x-optimade-type": "dictionary",
                            "x-optimade-unit": "inapplicable",
                            "type": [
                                "object"
                            ],
                            "required": [
                                "id",
                                "dnf"
                            ],
                            "description": "One face-level ownership rule.",
                            "properties": {
                                "id": {
                                    "x-optimade-type": "string",
                                    "x-optimade-unit": "inapplicable",
                                    "type": [
                                        "string"
                                    ],
                                    "description": "Stable identifier for this face rule."
                                },
                                "dnf": {
                                    "x-optimade-type": "list",
                                    "x-optimade-unit": "inapplicable",
                                    "type": [
                                        "array"
                                    ],
                                    "description": "OR-list of AND-lists of face-level terms.",
                                    "items": {
                                        "x-optimade-type": "list",
                                        "x-optimade-unit": "inapplicable",
                                        "type": [
                                            "array"
                                        ],
                                        "description": "One AND-clause in the face-level rule.",
                                        "items": {
                                            "x-optimade-type": "dictionary",
                                            "x-optimade-unit": "inapplicable",
                                            "type": [
                                                "object"
                                            ],
                                            "required": [
                                                "plane_id",
                                                "on_zero"
                                            ],
                                            "description": "One face-level plane test.",
                                            "properties": {
                                                "plane_id": {
                                                    "x-optimade-type": "string",
                                                    "x-optimade-unit": "inapplicable",
                                                    "type": [
                                                        "string"
                                                    ],
                                                    "description": "Identifier of the plane tested by this term."
                                                },
                                                "on_zero": {
                                                    "x-optimade-type": "dictionary",
                                                    "x-optimade-unit": "inapplicable",
                                                    "type": [
                                                        "object"
                                                    ],
                                                    "required": [
                                                        "action"
                                                    ],
                                                    "description": "Action for points exactly on this face-level term plane.",
                                                    "properties": {
                                                        "action": {
                                                            "x-optimade-type": "string",
                                                            "x-optimade-unit": "inapplicable",
                                                            "type": [
                                                                "string"
                                                            ],
                                                            "enum": [
                                                                "include",
                                                                "exclude",
                                                                "evaluate_edge_rule"
                                                            ],
                                                            "description": "Boundary action for this equality case."
                                                        },
                                                        "rule_id": {
                                                            "x-optimade-type": "string",
                                                            "x-optimade-unit": "inapplicable",
                                                            "type": [
                                                                "string",
                                                                "null"
                                                            ],
                                                            "description": "Identifier of the edge rule to evaluate when `action` is `evaluate_edge_rule`."
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "edge_rules": {
                        "x-optimade-type": "list",
                        "x-optimade-unit": "inapplicable",
                        "type": [
                            "array",
                            "null"
                        ],
                        "description": "Disjunctive-normal-form edge-boundary ownership rules.",
                        "items": {
                            "x-optimade-type": "dictionary",
                            "x-optimade-unit": "inapplicable",
                            "type": [
                                "object"
                            ],
                            "required": [
                                "id",
                                "dnf"
                            ],
                            "description": "One edge-level ownership rule.",
                            "properties": {
                                "id": {
                                    "x-optimade-type": "string",
                                    "x-optimade-unit": "inapplicable",
                                    "type": [
                                        "string"
                                    ],
                                    "description": "Stable identifier for this edge rule."
                                },
                                "dnf": {
                                    "x-optimade-type": "list",
                                    "x-optimade-unit": "inapplicable",
                                    "type": [
                                        "array"
                                    ],
                                    "description": "OR-list of AND-lists of edge-level terms.",
                                    "items": {
                                        "x-optimade-type": "list",
                                        "x-optimade-unit": "inapplicable",
                                        "type": [
                                            "array"
                                        ],
                                        "description": "One AND-clause in the edge-level rule.",
                                        "items": {
                                            "x-optimade-type": "dictionary",
                                            "x-optimade-unit": "inapplicable",
                                            "type": [
                                                "object"
                                            ],
                                            "required": [
                                                "plane_id",
                                                "on_zero"
                                            ],
                                            "description": "One edge-level plane test.",
                                            "properties": {
                                                "plane_id": {
                                                    "x-optimade-type": "string",
                                                    "x-optimade-unit": "inapplicable",
                                                    "type": [
                                                        "string"
                                                    ],
                                                    "description": "Identifier of the plane tested by this term."
                                                },
                                                "on_zero": {
                                                    "x-optimade-type": "dictionary",
                                                    "x-optimade-unit": "inapplicable",
                                                    "type": [
                                                        "object"
                                                    ],
                                                    "required": [
                                                        "action"
                                                    ],
                                                    "description": "Action for points exactly on this edge-level term plane.",
                                                    "properties": {
                                                        "action": {
                                                            "x-optimade-type": "string",
                                                            "x-optimade-unit": "inapplicable",
                                                            "type": [
                                                                "string"
                                                            ],
                                                            "enum": [
                                                                "include",
                                                                "exclude",
                                                                "evaluate_vertex_rule"
                                                            ],
                                                            "description": "Boundary action for this equality case."
                                                        },
                                                        "rule_id": {
                                                            "x-optimade-type": "string",
                                                            "x-optimade-unit": "inapplicable",
                                                            "type": [
                                                                "string",
                                                                "null"
                                                            ],
                                                            "description": "Identifier of the vertex rule to evaluate when `action` is `evaluate_vertex_rule`."
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "vertex_rules": {
                        "x-optimade-type": "list",
                        "x-optimade-unit": "inapplicable",
                        "type": [
                            "array",
                            "null"
                        ],
                        "description": "Disjunctive-normal-form terminal vertex-boundary ownership rules.",
                        "items": {
                            "x-optimade-type": "dictionary",
                            "x-optimade-unit": "inapplicable",
                            "type": [
                                "object"
                            ],
                            "required": [
                                "id",
                                "dnf"
                            ],
                            "description": "One terminal vertex-level ownership rule.",
                            "properties": {
                                "id": {
                                    "x-optimade-type": "string",
                                    "x-optimade-unit": "inapplicable",
                                    "type": [
                                        "string"
                                    ],
                                    "description": "Stable identifier for this vertex rule."
                                },
                                "dnf": {
                                    "x-optimade-type": "list",
                                    "x-optimade-unit": "inapplicable",
                                    "type": [
                                        "array"
                                    ],
                                    "description": "OR-list of AND-lists of terminal vertex-level terms.",
                                    "items": {
                                        "x-optimade-type": "list",
                                        "x-optimade-unit": "inapplicable",
                                        "type": [
                                            "array"
                                        ],
                                        "description": "One AND-clause in the vertex-level rule.",
                                        "items": {
                                            "x-optimade-type": "dictionary",
                                            "x-optimade-unit": "inapplicable",
                                            "type": [
                                                "object"
                                            ],
                                            "required": [
                                                "plane_id",
                                                "on_zero"
                                            ],
                                            "description": "One terminal vertex-level plane test.",
                                            "properties": {
                                                "plane_id": {
                                                    "x-optimade-type": "string",
                                                    "x-optimade-unit": "inapplicable",
                                                    "type": [
                                                        "string"
                                                    ],
                                                    "description": "Identifier of the plane tested by this term."
                                                },
                                                "on_zero": {
                                                    "x-optimade-type": "dictionary",
                                                    "x-optimade-unit": "inapplicable",
                                                    "type": [
                                                        "object"
                                                    ],
                                                    "required": [
                                                        "action"
                                                    ],
                                                    "description": "Terminal action for points exactly on this vertex-level term plane.",
                                                    "properties": {
                                                        "action": {
                                                            "x-optimade-type": "string",
                                                            "x-optimade-unit": "inapplicable",
                                                            "type": [
                                                                "string"
                                                            ],
                                                            "enum": [
                                                                "include",
                                                                "exclude"
                                                            ],
                                                            "description": "Terminal boundary action for this equality case."
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                },
                "examples": [
                    {
                        "planes": [
                            {
                                "id": "p0",
                                "normal": [
                                    "1",
                                    "0",
                                    "0"
                                ],
                                "const": "0"
                            },
                            {
                                "id": "p1",
                                "normal": [
                                    "-1",
                                    "0",
                                    "0"
                                ],
                                "const": "1"
                            },
                            {
                                "id": "p2",
                                "normal": [
                                    "0",
                                    "1",
                                    "0"
                                ],
                                "const": "0"
                            },
                            {
                                "id": "p3",
                                "normal": [
                                    "0",
                                    "-1",
                                    "0"
                                ],
                                "const": "1"
                            },
                            {
                                "id": "p4",
                                "normal": [
                                    "0",
                                    "0",
                                    "1"
                                ],
                                "const": "0"
                            },
                            {
                                "id": "p5",
                                "normal": [
                                    "0",
                                    "0",
                                    "-1"
                                ],
                                "const": "1"
                            }
                        ],
                        "volume_cuts": [
                            {
                                "id": "v0",
                                "plane_id": "p0",
                                "when_positive": "include",
                                "when_negative": "exclude",
                                "when_zero": {
                                    "action": "include"
                                }
                            },
                            {
                                "id": "v1",
                                "plane_id": "p1",
                                "when_positive": "include",
                                "when_negative": "exclude",
                                "when_zero": {
                                    "action": "exclude"
                                }
                            },
                            {
                                "id": "v2",
                                "plane_id": "p2",
                                "when_positive": "include",
                                "when_negative": "exclude",
                                "when_zero": {
                                    "action": "include"
                                }
                            },
                            {
                                "id": "v3",
                                "plane_id": "p3",
                                "when_positive": "include",
                                "when_negative": "exclude",
                                "when_zero": {
                                    "action": "exclude"
                                }
                            },
                            {
                                "id": "v4",
                                "plane_id": "p4",
                                "when_positive": "include",
                                "when_negative": "exclude",
                                "when_zero": {
                                    "action": "include"
                                }
                            },
                            {
                                "id": "v5",
                                "plane_id": "p5",
                                "when_positive": "include",
                                "when_negative": "exclude",
                                "when_zero": {
                                    "action": "exclude"
                                }
                            }
                        ],
                        "face_rules": [],
                        "edge_rules": [],
                        "vertex_rules": []
                    }
                ]
            },
            "asu_str": {
                "$id": "https://schemas.httk.org/defs/v0.1/properties/spacegroups/asu_str",
                "x-optimade-requirements": {
                    "support": "may",
                    "sortable": false,
                    "query-support": "none",
                    "response-level": "may"
                },
                "title": "Asymmetric unit string",
                "x-optimade-type": "string",
                "x-optimade-definition": {
                    "kind": "property",
                    "version": "0.1.0",
                    "format": "1.3",
                    "name": "asu_str",
                    "label": "asu_str_spacegroups"
                },
                "type": [
                    "string",
                    "null"
                ],
                "description": "Plain string rendering of the asymmetric-unit restrictions for the space-group setting.\n\nThe structured representation in `asu` is canonical; this string is a rendering for display and quick inspection.\n\nSemicolon-separated cuts are combined by AND.\nA bracketed condition following a cut is evaluated only on that cut's zero plane; positive values pass without it and negative values fail regardless of it.",
                "x-optimade-unit": "inapplicable",
                "examples": [
                    "x>=0; x<1; y>=0; y<1; z>=0; z<1",
                    "x>=0 [y>=0 [z<=1/2] & y<=1/2 [z<=1/2]]; x<=1/2 [y>=0 [z<=1/2] & y<=1/2 [z<=1/2]]; y>=0; y<1; z>=0; z<1"
                ]
            },
            "asu_shape_only_str": {
                "$id": "https://schemas.httk.org/defs/v0.1/properties/spacegroups/asu_shape_only_str",
                "x-optimade-requirements": {
                    "support": "may",
                    "sortable": false,
                    "query-support": "none",
                    "response-level": "may"
                },
                "title": "Shape-only asymmetric unit string",
                "x-optimade-type": "string",
                "x-optimade-definition": {
                    "kind": "property",
                    "version": "0.1.0",
                    "format": "1.3",
                    "name": "asu_shape_only_str",
                    "label": "asu_shape_only_str_spacegroups"
                },
                "type": [
                    "string",
                    "null"
                ],
                "description": "Plain string rendering of the geometric shape part of the asymmetric-unit restrictions, without conditional refinements.\n\nThe structured representation in `asu` is canonical; this string is a rendering for display and quick inspection.\n\nThis is the closure of the volume shape: all top-level boundaries are included and lower-dimensional ownership rules are discarded.\nIt MUST NOT be used as a substitute for `asu` when assigning symmetry-equivalent boundary points to an ASU.",
                "x-optimade-unit": "inapplicable",
                "examples": [
                    "x>=0; x<=1; y>=0; y<=1; z>=0; z<=1",
                    "x>=0; x<=1/2; y>=0; y<=1; z>=0; z<=1"
                ]
            },
            "bravais_type": {
                "$id": "https://schemas.httk.org/defs/v0.1/properties/spacegroups/bravais_type",
                "x-optimade-requirements": {
                    "support": "may",
                    "sortable": false,
                    "query-support": "none",
                    "response-level": "may"
                },
                "title": "Bravais type",
                "x-optimade-type": "string",
                "x-compatibility": [
                    "https://www.iucr.org/__data/iucr/cifdic_html/2/cif_sym.dic/Ispace_group.Bravais_type.html"
                ],
                "x-optimade-definition": {
                    "kind": "property",
                    "version": "0.1.0",
                    "format": "1.3",
                    "name": "bravais_type",
                    "label": "bravais_type_spacegroups"
                },
                "type": [
                    "string",
                    "null"
                ],
                "description": "The Bravais type of the translational lattice.\n\nThe symbol consists of a lower-case crystal-family letter followed by an upper-case centring symbol.\nSide-centred settings (`A`, `B`, or `C` centring) are normalized to the setting-independent `S` symbol for monoclinic and orthorhombic lattices.\nBody-centred monoclinic settings keep the symbol `mI`, which describes the same lattice type as `mS` in a different conventional cell choice.\n\nThe first character follows the crystal-family notation: `a` denotes triclinic (anorthic), and `h` covers the hexagonal family, which includes trigonal and hexagonal crystal systems.\nRhombohedral lattices have `hR` in both hexagonal-axis and primitive rhombohedral-axis descriptions; `centring_type: P` in rhombohedral axes does not imply `hP`.\nThe retained `mI` alternative means the vocabulary has 15 symbols for 14 Bravais lattice types.",
                "x-optimade-unit": "inapplicable",
                "enum": [
                    "aP",
                    "mP",
                    "mS",
                    "mI",
                    "oP",
                    "oS",
                    "oF",
                    "oI",
                    "tP",
                    "tI",
                    "hP",
                    "hR",
                    "cP",
                    "cI",
                    "cF",
                    null
                ],
                "examples": [
                    "aP",
                    "mS"
                ]
            },
            "cctbx_fft_grid_factors": {
                "$id": "https://schemas.httk.org/defs/v0.1/properties/spacegroups/cctbx_fft_grid_factors",
                "x-optimade-requirements": {
                    "support": "may",
                    "sortable": false,
                    "query-support": "none",
                    "response-level": "may"
                },
                "title": "cctbx FFT grid factors",
                "x-optimade-type": "dictionary",
                "x-optimade-definition": {
                    "kind": "property",
                    "version": "0.1.0",
                    "format": "1.3",
                    "name": "cctbx_fft_grid_factors",
                    "label": "cctbx_fft_grid_factors_spacegroups"
                },
                "type": [
                    "object",
                    "null"
                ],
                "description": "FFT grid-factor requirements derived from cctbx for the space group, its structure seminvariants, and its Euclidean normalizer.\n\nEach value is a list of three positive integers, one per crystallographic axis, giving the factors that the corresponding FFT grid dimension must be divisible by for symmetry-adapted sampling.\n\n**Requirements/Conventions**:\n\n- It MUST be a dictionary with the following keys:\n\n    - **space\\_group**: REQUIRED; List of 3 Integers.\n      Per-axis grid factors required by the space-group translations.\n\n    - **seminvariant**: REQUIRED; List of 3 Integers.\n      Per-axis grid factors required by the structure-seminvariant vectors and moduli.\n\n    - **euclidean**: REQUIRED; List of 3 Integers.\n      Per-axis grid factors obtained by refining the seminvariant factors against the Euclidean normalizer.\n\nThese factors impose divisibility constraints; they are not grid dimensions or a resolution prescription.\nChoose grid dimensions as appropriate multiples and also enforce rotational compatibility, including relations between axes mixed by the symmetry.\nPer-axis factors alone do not certify that an arbitrary three-dimensional grid is invariant under all rotations.\nThe `euclidean` factors are computed by refining the seminvariant gridding with the finite cctbx Euclidean-normalizer group in this same setting.",
                "x-optimade-unit": "inapplicable",
                "properties": {
                    "space_group": {
                        "x-optimade-type": "list",
                        "x-optimade-dimensions": {
                            "names": [
                                "dim_lattice"
                            ],
                            "sizes": [
                                3
                            ]
                        },
                        "type": [
                            "array",
                            "null"
                        ],
                        "description": "FFT grid factors arising from the space-group translations.",
                        "items": {
                            "x-optimade-type": "integer",
                            "type": [
                                "integer",
                                "null"
                            ],
                            "description": "One grid factor.",
                            "x-optimade-unit": "inapplicable"
                        },
                        "x-optimade-unit": "inapplicable"
                    },
                    "seminvariant": {
                        "x-optimade-type": "list",
                        "x-optimade-dimensions": {
                            "names": [
                                "dim_lattice"
                            ],
                            "sizes": [
                                3
                            ]
                        },
                        "type": [
                            "array",
                            "null"
                        ],
                        "description": "FFT grid factors arising from structure seminvariants.",
                        "items": {
                            "x-optimade-type": "integer",
                            "type": [
                                "integer",
                                "null"
                            ],
                            "description": "One grid factor.",
                            "x-optimade-unit": "inapplicable"
                        },
                        "x-optimade-unit": "inapplicable"
                    },
                    "euclidean": {
                        "x-optimade-type": "list",
                        "x-optimade-dimensions": {
                            "names": [
                                "dim_lattice"
                            ],
                            "sizes": [
                                3
                            ]
                        },
                        "type": [
                            "array",
                            "null"
                        ],
                        "description": "FFT grid factors arising from Euclidean-normalizer considerations.",
                        "items": {
                            "x-optimade-type": "integer",
                            "type": [
                                "integer",
                                "null"
                            ],
                            "description": "One grid factor.",
                            "x-optimade-unit": "inapplicable"
                        },
                        "x-optimade-unit": "inapplicable"
                    }
                },
                "examples": [
                    {
                        "space_group": [
                            1,
                            1,
                            1
                        ],
                        "seminvariant": [
                            1,
                            1,
                            1
                        ],
                        "euclidean": [
                            1,
                            1,
                            1
                        ]
                    },
                    {
                        "space_group": [
                            1,
                            1,
                            1
                        ],
                        "seminvariant": [
                            2,
                            2,
                            2
                        ],
                        "euclidean": [
                            2,
                            2,
                            2
                        ]
                    }
                ]
            },
            "centering_translations": {
                "$id": "https://schemas.httk.org/defs/v0.1/properties/spacegroups/centering_translations",
                "x-optimade-requirements": {
                    "support": "may",
                    "sortable": false,
                    "query-support": "none",
                    "response-level": "may"
                },
                "title": "Centering translations",
                "x-optimade-type": "list",
                "x-optimade-definition": {
                    "kind": "property",
                    "version": "0.1.0",
                    "format": "1.3",
                    "name": "centering_translations",
                    "label": "centering_translations_spacegroups"
                },
                "x-optimade-unit": "inapplicable",
                "type": [
                    "array",
                    "null"
                ],
                "description": "Centering translations of the conventional cell.\n\nEach list member is one exact fractional-coordinate centering translation as defined by `/properties/symmetry/centering_translation`.\nThe zero translation `(0,0,0)` is listed first.",
                "items": {
                    "$id": "https://schemas.httk.org/defs/v0.1/properties/symmetry/centering_translation",
                    "title": "Centering translation",
                    "x-optimade-type": "list",
                    "x-optimade-definition": {
                        "kind": "property",
                        "version": "0.1.0",
                        "format": "1.3",
                        "name": "centering_translation",
                        "label": "centering_translation_symmetry"
                    },
                    "x-optimade-unit": "inapplicable",
                    "type": [
                        "array",
                        "null"
                    ],
                    "description": "One centering translation of a conventional crystallographic cell.\n\nThe translation is represented in fractional coordinates using exact fraction strings.\n\n**Requirements/Conventions**:\n\n- It MUST be a list of three exact fractional-coordinate components.\n- The zero translation is included in centering-translation lists and is normally listed first.\n\nThe components are coefficients of the recorded cell basis vectors, not Cartesian lengths.\nTranslations differing by an integer vector represent the same centering class; the generated list uses representatives modulo integer cell translations.",
                    "x-optimade-dimensions": {
                        "names": [
                            "dim_lattice"
                        ],
                        "sizes": [
                            3
                        ]
                    },
                    "items": {
                        "$id": "https://schemas.httk.org/defs/v0.1/properties/core/fraction",
                        "title": "Fraction",
                        "x-optimade-type": "string",
                        "x-optimade-definition": {
                            "label": "fraction_core",
                            "kind": "property",
                            "version": "0.1.0",
                            "format": "1.3",
                            "name": "fraction"
                        },
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "A numerical representation formed as the quotient of two numbers represented as a string.",
                        "examples": [
                            "2/3",
                            "5/42",
                            "10",
                            "0"
                        ],
                        "x-optimade-unit": "inapplicable"
                    },
                    "examples": [
                        [
                            "0",
                            "0",
                            "0"
                        ],
                        [
                            "1/2",
                            "1/2",
                            "0"
                        ]
                    ]
                },
                "examples": [
                    [
                        [
                            "0",
                            "0",
                            "0"
                        ]
                    ],
                    [
                        [
                            "0",
                            "0",
                            "0"
                        ],
                        [
                            "1/2",
                            "1/2",
                            "0"
                        ]
                    ]
                ]
            },
            "centring_type": {
                "$id": "https://schemas.httk.org/defs/v0.1/properties/spacegroups/centring_type",
                "x-optimade-requirements": {
                    "support": "may",
                    "sortable": false,
                    "query-support": "none",
                    "response-level": "may"
                },
                "title": "Centring type",
                "x-optimade-type": "string",
                "x-compatibility": [
                    "https://www.iucr.org/__data/iucr/cifdic_html/2/cif_sym.dic/Ispace_group.centring_type.html"
                ],
                "x-optimade-definition": {
                    "kind": "property",
                    "version": "0.1.0",
                    "format": "1.3",
                    "name": "centring_type",
                    "label": "centring_type_spacegroups"
                },
                "type": [
                    "string",
                    "null"
                ],
                "description": "The lattice centring symbol for the crystallographic setting.\n\nThis setting-dependent symbol identifies primitive, face-centred, body-centred, rhombohedral, or hexagonal centring as represented in the setting record.\nThe value `Rrev` denotes the reverse rhombohedral setting.\n\nThe symbol describes the recorded coordinate cell, whereas `bravais_type` describes its lattice type.\nA rhombohedral lattice in primitive rhombohedral axes has centring symbol `P`; in hexagonal axes it has rhombohedral centring.\nNull denotes unavailable classification, not an additional centring type.",
                "x-optimade-unit": "inapplicable",
                "enum": [
                    "P",
                    "A",
                    "B",
                    "C",
                    "F",
                    "I",
                    "R",
                    "H",
                    "Rrev",
                    null
                ],
                "examples": [
                    "P",
                    "C"
                ]
            },
            "crystal_system": {
                "$id": "https://schemas.httk.org/defs/v0.1/properties/pointgroups/crystal_system",
                "x-optimade-requirements": {
                    "support": "may",
                    "sortable": false,
                    "query-support": "none",
                    "response-level": "may"
                },
                "title": "Crystal system",
                "x-optimade-type": "string",
                "x-compatibility": [
                    "https://www.iucr.org/__data/iucr/cifdic_html/2/cif_sym.dic/Ispace_group.crystal_system.html"
                ],
                "x-optimade-definition": {
                    "kind": "property",
                    "version": "0.1.0",
                    "format": "1.3",
                    "name": "crystal_system",
                    "label": "crystal_system_pointgroups"
                },
                "type": [
                    "string",
                    "null"
                ],
                "description": "The crystal system of the space group or point group.\n\nValues use the conventional crystallographic system names.\n\nThis classifies the crystallographic point symmetry, not a measured set of lattice lengths and angles.\nTrigonal groups remain trigonal whether described in hexagonal or rhombohedral axes; use `bravais_type` on a space-group record for the translational lattice type.\nNull denotes unavailable classification, not an additional crystal system.",
                "x-optimade-unit": "inapplicable",
                "enum": [
                    "triclinic",
                    "monoclinic",
                    "orthorhombic",
                    "tetragonal",
                    "trigonal",
                    "hexagonal",
                    "cubic",
                    null
                ],
                "examples": [
                    "triclinic",
                    "monoclinic"
                ]
            },
            "hall": {
                "$id": "https://schemas.httk.org/defs/v0.1/properties/spacegroups/hall",
                "x-optimade-requirements": {
                    "support": "may",
                    "sortable": false,
                    "query-support": "none",
                    "response-level": "may"
                },
                "title": "Hall symbol",
                "x-optimade-type": "string",
                "x-compatibility": [
                    "https://schemas.optimade.org/defs/v1.2/properties/optimade/structures/space_group_symbol_hall"
                ],
                "x-optimade-definition": {
                    "kind": "property",
                    "version": "0.1.0",
                    "format": "1.3",
                    "name": "hall",
                    "label": "hall_spacegroups"
                },
                "type": [
                    "string",
                    "null"
                ],
                "description": "The Hall symbol for a crystallographic space-group setting.\n\nHall symbols encode the generators and origin choice of a space-group setting in a form intended to identify the setting unambiguously.\nThe normalized lookup-key form of this symbol, using lowercase letters and underscores in place of spaces, is provided by `hall_entry`.",
                "x-optimade-unit": "inapplicable",
                "examples": [
                    "P 1",
                    "C 2y"
                ]
            },
            "hall_aliases": {
                "$id": "https://schemas.httk.org/defs/v0.1/properties/spacegroups/hall_aliases",
                "x-optimade-requirements": {
                    "support": "may",
                    "sortable": false,
                    "query-support": "none",
                    "response-level": "may"
                },
                "title": "Hall symbol aliases",
                "x-optimade-type": "list",
                "x-optimade-definition": {
                    "kind": "property",
                    "version": "0.1.0",
                    "format": "1.3",
                    "name": "hall_aliases",
                    "label": "hall_aliases_spacegroups"
                },
                "type": [
                    "array",
                    "null"
                ],
                "description": "Alternate ASCII Hall symbols or Hall-setting keys associated with the same generated setting.\n\nAliases capture duplicate or equivalent Hall-table forms that identify the same setting in the generated tables.\n\n**Requirements/Conventions**:\n\n- The preferred display symbol is stored in `hall`.\n- Alias values SHOULD NOT be assumed to be unique across all settings without also considering the setting key.",
                "x-optimade-unit": "inapplicable",
                "examples": [
                    [
                        "A -2yac"
                    ],
                    [
                        "C -2ybc"
                    ]
                ],
                "items": {
                    "x-optimade-type": "string",
                    "type": [
                        "string",
                        "null"
                    ],
                    "description": "One alternate symbol string.",
                    "x-optimade-unit": "inapplicable"
                }
            },
            "hall_entry": {
                "$id": "https://schemas.httk.org/defs/v0.1/properties/spacegroups/hall_entry",
                "x-optimade-requirements": {
                    "support": "may",
                    "sortable": false,
                    "query-support": "none",
                    "response-level": "may"
                },
                "title": "Hall entry",
                "x-optimade-type": "string",
                "x-optimade-definition": {
                    "kind": "property",
                    "version": "0.1.0",
                    "format": "1.3",
                    "name": "hall_entry",
                    "label": "hall_entry_spacegroups"
                },
                "type": [
                    "string",
                    "null"
                ],
                "description": "Normalized Hall-table entry key used internally by the generated datasets.\n\nThe value is derived from the Hall symbol by using lowercase letters and underscores in place of spaces. It is stable for lookup within these data files, while the display Hall symbol is provided separately by `hall` and its formatted variants.\n\n**Requirements/Conventions**:\n\n- This field identifies a concrete Hall setting, not only an IT space-group type.\n- The same value is normally used as the key of the containing `spacegroups` map.\n\nThe normalization is `hall.strip().replace(\" \", \"_\").lower()`; signs, quotes, asterisks, and origin-shift notation are retained.\nThe key is a coordinate-setting identifier, not a numeric spglib Hall number.\nDifferent conventional H-M entry labels can resolve to the same Hall-entry record.",
                "x-optimade-unit": "inapplicable",
                "examples": [
                    "p_1",
                    "-p_1"
                ]
            },
            "hm_entry": {
                "$id": "https://schemas.httk.org/defs/v0.1/properties/spacegroups/hm_entry",
                "x-optimade-requirements": {
                    "support": "may",
                    "sortable": false,
                    "query-support": "none",
                    "response-level": "may"
                },
                "title": "Hermann-Mauguin entry",
                "x-optimade-type": "string",
                "x-optimade-definition": {
                    "kind": "property",
                    "version": "0.1.0",
                    "format": "1.3",
                    "name": "hm_entry",
                    "label": "hm_entry_spacegroups"
                },
                "type": [
                    "string",
                    "null"
                ],
                "description": "The Hermann-Mauguin entry label for a conventional space-group setting from table A1.4.2.7 of the [International Tables for Crystallography (2006). Volume B, Reciprocal space. ISBN: 978-0-7923-6592-1, doi:10.1107/97809553602060000102](https://doi.org/10.1107/97809553602060000102).\n\nThe symbol is a full Hermann-Mauguin-style setting label, except that:\n\n* The older glide-plane letters are used, rather than the newer `e` notation introduced in the Fourth Edition of the International Tables for Crystallography (1995) for the space groups Aem2 (39), Aea2 (41), Cmce (64), Cmme (67) and Ccce (68).\n* When necessary to disambiguate the 530 conventional settings, an origin-choice suffix (`:1`, `:2`) is used.\n\n**Requirements/Conventions**:\n\n- The value MUST be written as a plain string with spaces between Hermann-Mauguin symbol parts.\n- The disambiguation suffix MUST be a colon `:`  and an integer appended to the string without whitespace, for example `:1` or `:2`.\n\nThis lookup key preserves capitalization and spaces: unlike `hall_entry`, it is not lowercased or underscore-normalized.\nH-M entries and their aliases are resolved through the dataset's H-M-entry index; more than one conventional label can identify the same generated Hall record.\nThis label selects a setting convention; use the embedded affine operations to perform coordinate transformations.",
                "x-optimade-unit": "inapplicable",
                "examples": [
                    "P 1",
                    "C c c a:1",
                    "C c c b:2"
                ]
            },
            "harker_planes": {
                "$id": "https://schemas.httk.org/defs/v0.1/properties/spacegroups/harker_planes",
                "x-optimade-requirements": {
                    "support": "may",
                    "sortable": false,
                    "query-support": "none",
                    "response-level": "may"
                },
                "title": "Harker planes",
                "x-optimade-type": "list",
                "x-optimade-definition": {
                    "kind": "property",
                    "version": "0.1.0",
                    "format": "1.3",
                    "name": "harker_planes",
                    "label": "harker_planes_spacegroups"
                },
                "x-optimade-unit": "inapplicable",
                "type": [
                    "array",
                    "null"
                ],
                "description": "Harker planes of the space group in fractional Patterson coordinates.\n\nEach entry describes one plane or special-position condition with an expression and optional exact normal, point, and constant data.\n\nA Harker plane contains Patterson displacement vectors between symmetry-related sites.\nFor a contributing operation `(W,w)`, those displacements are parameterized by `(W-I)*x+w`; the algebraic rendering may reverse parameter signs without changing the plane.\nThe current generator emits the cctbx plane descriptors `algebraic`, `normal`, and `point`; the optional `xyz` and `const` fields are retained but are not emitted.\nHere `normal` is the direct-lattice direction returned by cctbx for the rotation axis, and `point` is a fractional point on the plane.\nFor lattice metric g, a displacement u lies in that plane when `normal^T*g*(u-point) = 0`; the fractional components of `normal` must not be treated as a Cartesian unit normal or a reciprocal covector.\nThe list covers planes constructed by cctbx's Harker-plane routine; it is not an enumeration of all Patterson peaks, Harker lines, or special points.",
                "items": {
                    "x-optimade-type": "dictionary",
                    "x-optimade-unit": "inapplicable",
                    "type": [
                        "object",
                        "null"
                    ],
                    "description": "One Harker plane or special-position condition.",
                    "properties": {
                        "algebraic": {
                            "x-optimade-type": "string",
                            "x-optimade-unit": "inapplicable",
                            "type": [
                                "string",
                                "null"
                            ],
                            "description": "Algebraic expression for the condition when emitted by cctbx."
                        },
                        "xyz": {
                            "x-optimade-type": "string",
                            "x-optimade-unit": "inapplicable",
                            "type": [
                                "string",
                                "null"
                            ],
                            "description": "Optional plane expression in `x,y,z` notation; not emitted by the current generator."
                        },
                        "normal": {
                            "x-optimade-type": "list",
                            "x-optimade-unit": "inapplicable",
                            "x-optimade-dimensions": {
                                "names": [
                                    "dim_lattice"
                                ],
                                "sizes": [
                                    3
                                ]
                            },
                            "type": [
                                "array",
                                "null"
                            ],
                            "description": "Integer direct-lattice direction normal to the plane in the physical metric, following cctbx's rotation-axis convention.",
                            "items": {
                                "x-optimade-type": "integer",
                                "x-optimade-unit": "inapplicable",
                                "type": [
                                    "integer"
                                ],
                                "description": "One integer component of the normal vector."
                            }
                        },
                        "point": {
                            "x-optimade-type": "list",
                            "x-optimade-unit": "inapplicable",
                            "x-optimade-dimensions": {
                                "names": [
                                    "dim_lattice"
                                ],
                                "sizes": [
                                    3
                                ]
                            },
                            "type": [
                                "array",
                                "null"
                            ],
                            "description": "Point on the plane.",
                            "items": {
                                "$id": "https://schemas.httk.org/defs/v0.1/properties/core/fraction",
                                "title": "Fraction",
                                "x-optimade-type": "string",
                                "x-optimade-definition": {
                                    "label": "fraction_core",
                                    "kind": "property",
                                    "version": "0.1.0",
                                    "format": "1.3",
                                    "name": "fraction"
                                },
                                "type": [
                                    "string",
                                    "null"
                                ],
                                "description": "A numerical representation formed as the quotient of two numbers represented as a string.",
                                "examples": [
                                    "2/3",
                                    "5/42",
                                    "10",
                                    "0"
                                ],
                                "x-optimade-unit": "inapplicable"
                            }
                        },
                        "const": {
                            "$id": "https://schemas.httk.org/defs/v0.1/properties/core/fraction",
                            "title": "Fraction",
                            "x-optimade-type": "string",
                            "x-optimade-definition": {
                                "label": "fraction_core",
                                "kind": "property",
                                "version": "0.1.0",
                                "format": "1.3",
                                "name": "fraction"
                            },
                            "type": [
                                "string",
                                "null"
                            ],
                            "description": "A numerical representation formed as the quotient of two numbers represented as a string.",
                            "examples": [
                                "2/3",
                                "5/42",
                                "10",
                                "0"
                            ],
                            "x-optimade-unit": "inapplicable"
                        }
                    }
                },
                "examples": [
                    [
                        {
                            "algebraic": "2*x,0,2*z",
                            "normal": [
                                0,
                                1,
                                0
                            ],
                            "point": [
                                "0",
                                "0",
                                "0"
                            ]
                        }
                    ]
                ]
            },
            "hm_cctbx_universal": {
                "$id": "https://schemas.httk.org/defs/v0.1/properties/spacegroups/hm_cctbx_universal",
                "x-optimade-requirements": {
                    "support": "may",
                    "sortable": false,
                    "query-support": "none",
                    "response-level": "may"
                },
                "title": "Universal cctbx Hermann-Mauguin symbol",
                "x-optimade-type": "string",
                "x-optimade-definition": {
                    "kind": "property",
                    "version": "0.1.0",
                    "format": "1.3",
                    "name": "hm_cctbx_universal",
                    "label": "hm_cctbx_universal_spacegroups"
                },
                "type": [
                    "string",
                    "null"
                ],
                "description": "Universal Hermann-Mauguin symbol returned by cctbx for this setting.\n\nThis field records the cctbx-internal universal symbol used during generation. It is useful for diagnostics and for tracing generator behavior, but it is not the International Tables preferred symbol. Prefer `hm_short`, `hm_full`, and `hm_extended` for table-facing symbol data.",
                "x-optimade-unit": "inapplicable",
                "examples": [
                    "P 1",
                    "P -1"
                ]
            },
            "hm_extended": {
                "$id": "https://schemas.httk.org/defs/v0.1/properties/spacegroups/hm_extended",
                "x-optimade-requirements": {
                    "support": "may",
                    "sortable": false,
                    "query-support": "none",
                    "response-level": "may"
                },
                "title": "Extended Hermann-Mauguin symbol",
                "x-optimade-type": "string",
                "x-compatibility": [
                    "https://schemas.optimade.org/defs/v1.2/properties/optimade/structures/space_group_symbol_hermann_mauguin_extended"
                ],
                "x-optimade-definition": {
                    "kind": "property",
                    "version": "0.1.0",
                    "format": "1.3",
                    "name": "hm_extended",
                    "label": "hm_extended_spacegroups"
                },
                "type": [
                    "string",
                    "null"
                ],
                "description": "The setting-specific extended Hermann-Mauguin symbol for the space-group setting.\n\nExtended Hermann-Mauguin symbols give additional symmetry-element information compared with the short symbol.\nMulti-line values preserve line breaks and spacing used to align the extended symbol components.\nUnlike the short and full symbols, extended symbols are defined per setting only, so no `hm_extended_std` standard-symbol counterpart exists.",
                "x-optimade-unit": "inapplicable",
                "examples": [
                    "P 1",
                    "C 1 2 1\n  21"
                ]
            },
            "hm_extended_aliases": {
                "$id": "https://schemas.httk.org/defs/v0.1/properties/spacegroups/hm_extended_aliases",
                "x-optimade-requirements": {
                    "support": "may",
                    "sortable": false,
                    "query-support": "none",
                    "response-level": "may"
                },
                "title": "Extended Hermann-Mauguin symbol aliases",
                "x-optimade-type": "list",
                "x-optimade-definition": {
                    "kind": "property",
                    "version": "0.1.0",
                    "format": "1.3",
                    "name": "hm_extended_aliases",
                    "label": "hm_extended_aliases_spacegroups"
                },
                "type": [
                    "array",
                    "null"
                ],
                "description": "Alternate ASCII forms of `hm_extended` that are accepted for the same generated setting.\n\nThe preferred symbol is stored in `hm_extended`.",
                "x-optimade-unit": "inapplicable",
                "examples": [
                    [
                        "A b m 2\n c c 21"
                    ],
                    [
                        "B m a 2\n c c 21"
                    ]
                ],
                "items": {
                    "x-optimade-type": "string",
                    "type": [
                        "string",
                        "null"
                    ],
                    "description": "One alternate symbol string.",
                    "x-optimade-unit": "inapplicable"
                }
            },
            "hm_extended_old": {
                "$id": "https://schemas.httk.org/defs/v0.1/properties/spacegroups/hm_extended_old",
                "x-optimade-requirements": {
                    "support": "may",
                    "sortable": false,
                    "query-support": "none",
                    "response-level": "may"
                },
                "title": "Extended Hermann-Mauguin symbol in old notation",
                "x-optimade-type": "string",
                "x-optimade-definition": {
                    "kind": "property",
                    "version": "0.1.0",
                    "format": "1.3",
                    "name": "hm_extended_old",
                    "label": "hm_extended_old_spacegroups"
                },
                "type": [
                    "string",
                    "null"
                ],
                "description": "The older extended Hermann-Mauguin symbol retained as an alias for symbols superseded by newer `e`-glide notation.\n\nHermann-Mauguin symbols describe crystallographic space groups using lattice-centering symbols and symmetry-element symbols. The setting-specific fields describe the concrete Hall/International Tables setting of the current record. The `*_std` fields describe the IT-standard setting for the space-group type and can therefore be identical across multiple settings with the same IT number.\n\n**Requirements/Conventions**:\n\n- The plain string form uses spaces between symbol parts where this is needed for unambiguous parsing.\n- The extended symbol MAY contain multiple lines; line breaks and spacing encode the alignment used in International Tables extended symbols.\n- Older-symbol fields are present only where an older International Tables form is retained for comparison or aliasing.",
                "x-optimade-unit": "inapplicable",
                "examples": [
                    "A b m 2\n c c 21",
                    "C 2 m b\n 21 a a"
                ]
            },
            "hm_full": {
                "$id": "https://schemas.httk.org/defs/v0.1/properties/spacegroups/hm_full",
                "x-optimade-requirements": {
                    "support": "may",
                    "sortable": false,
                    "query-support": "none",
                    "response-level": "may"
                },
                "title": "Full Hermann-Mauguin symbol",
                "x-optimade-type": "string",
                "x-compatibility": [
                    "https://www.iucr.org/__data/iucr/cifdic_html/2/cif_sym.dic/Ispace_group.name_H-M_full.html"
                ],
                "x-optimade-definition": {
                    "kind": "property",
                    "version": "0.1.0",
                    "format": "1.3",
                    "name": "hm_full",
                    "label": "hm_full_spacegroups"
                },
                "type": [
                    "string",
                    "null"
                ],
                "description": "The setting-specific full Hermann-Mauguin symbol for the space-group setting.\n\nThe full symbol expands the short Hermann-Mauguin notation to include the symmetry entries for all relevant crystallographic directions in the setting represented by the containing Hall record.",
                "x-optimade-unit": "inapplicable",
                "examples": [
                    "P 1",
                    "C 1 2 1"
                ]
            },
            "hm_full_aliases": {
                "$id": "https://schemas.httk.org/defs/v0.1/properties/spacegroups/hm_full_aliases",
                "x-optimade-requirements": {
                    "support": "may",
                    "sortable": false,
                    "query-support": "none",
                    "response-level": "may"
                },
                "title": "Full Hermann-Mauguin symbol aliases",
                "x-optimade-type": "list",
                "x-optimade-definition": {
                    "kind": "property",
                    "version": "0.1.0",
                    "format": "1.3",
                    "name": "hm_full_aliases",
                    "label": "hm_full_aliases_spacegroups"
                },
                "type": [
                    "array",
                    "null"
                ],
                "description": "Alternate ASCII forms of `hm_full` that are accepted for the same generated setting.\n\nThe preferred symbol is stored in `hm_full`.",
                "x-optimade-unit": "inapplicable",
                "examples": [
                    [
                        "F 23"
                    ],
                    [
                        "I 23"
                    ]
                ],
                "items": {
                    "x-optimade-type": "string",
                    "type": [
                        "string",
                        "null"
                    ],
                    "description": "One alternate symbol string.",
                    "x-optimade-unit": "inapplicable"
                }
            },
            "hm_full_old": {
                "$id": "https://schemas.httk.org/defs/v0.1/properties/spacegroups/hm_full_old",
                "x-optimade-requirements": {
                    "support": "may",
                    "sortable": false,
                    "query-support": "none",
                    "response-level": "may"
                },
                "title": "Full Hermann-Mauguin symbol in old notation",
                "x-optimade-type": "string",
                "x-optimade-definition": {
                    "kind": "property",
                    "version": "0.1.0",
                    "format": "1.3",
                    "name": "hm_full_old",
                    "label": "hm_full_old_spacegroups"
                },
                "type": [
                    "string",
                    "null"
                ],
                "description": "The older full Hermann-Mauguin symbol retained as an alias for symbols superseded by newer `e`-glide notation.\n\nHermann-Mauguin symbols describe crystallographic space groups using lattice-centering symbols and symmetry-element symbols. The setting-specific fields describe the concrete Hall/International Tables setting of the current record. The `*_std` fields describe the IT-standard setting for the space-group type and can therefore be identical across multiple settings with the same IT number.\n\n**Requirements/Conventions**:\n\n- The plain string form uses spaces between symbol parts where this is needed for unambiguous parsing.\n- Older-symbol fields are present only where an older International Tables form is retained for comparison or aliasing.",
                "x-optimade-unit": "inapplicable",
                "examples": [
                    "A b m 2",
                    "C 2 m b"
                ]
            },
            "hm_full_std": {
                "$id": "https://schemas.httk.org/defs/v0.1/properties/spacegroups/hm_full_std",
                "x-optimade-requirements": {
                    "support": "may",
                    "sortable": false,
                    "query-support": "none",
                    "response-level": "may"
                },
                "title": "Standard full Hermann-Mauguin symbol",
                "x-optimade-type": "string",
                "x-optimade-definition": {
                    "kind": "property",
                    "version": "0.1.0",
                    "format": "1.3",
                    "name": "hm_full_std",
                    "label": "hm_full_std_spacegroups"
                },
                "type": [
                    "string",
                    "null"
                ],
                "description": "The International Tables standard full Hermann-Mauguin symbol for the space-group type.\n\nHermann-Mauguin symbols describe crystallographic space groups using lattice-centering symbols and symmetry-element symbols. The setting-specific fields describe the concrete Hall/International Tables setting of the current record. The `*_std` fields describe the IT-standard setting for the space-group type and can therefore be identical across multiple settings with the same IT number.\n\n**Requirements/Conventions**:\n\n- The plain string form uses spaces between symbol parts where this is needed for unambiguous parsing.\n- Older-symbol fields are present only where an older International Tables form is retained for comparison or aliasing.",
                "x-optimade-unit": "inapplicable",
                "examples": [
                    "P 1",
                    "P -1"
                ]
            },
            "hm_short": {
                "$id": "https://schemas.httk.org/defs/v0.1/properties/spacegroups/hm_short",
                "x-optimade-requirements": {
                    "support": "may",
                    "sortable": false,
                    "query-support": "none",
                    "response-level": "may"
                },
                "title": "Short Hermann-Mauguin symbol",
                "x-optimade-type": "string",
                "x-compatibility": [
                    "https://schemas.optimade.org/defs/v1.2/properties/optimade/structures/space_group_symbol_hermann_mauguin"
                ],
                "x-optimade-definition": {
                    "kind": "property",
                    "version": "0.1.0",
                    "format": "1.3",
                    "name": "hm_short",
                    "label": "hm_short_spacegroups"
                },
                "type": [
                    "string",
                    "null"
                ],
                "description": "The setting-specific short Hermann-Mauguin symbol for the space-group setting.\n\nThis field gives the concise Hermann-Mauguin notation used for the concrete Hall setting represented by the containing record.\nIt is compatible with OPTIMADE's `space_group_symbol_hermann_mauguin`.",
                "x-optimade-unit": "inapplicable",
                "examples": [
                    "P 1",
                    "C 2"
                ]
            },
            "hm_short_aliases": {
                "$id": "https://schemas.httk.org/defs/v0.1/properties/spacegroups/hm_short_aliases",
                "x-optimade-requirements": {
                    "support": "may",
                    "sortable": false,
                    "query-support": "none",
                    "response-level": "may"
                },
                "title": "Short Hermann-Mauguin symbol aliases",
                "x-optimade-type": "list",
                "x-optimade-definition": {
                    "kind": "property",
                    "version": "0.1.0",
                    "format": "1.3",
                    "name": "hm_short_aliases",
                    "label": "hm_short_aliases_spacegroups"
                },
                "type": [
                    "array",
                    "null"
                ],
                "description": "Alternate ASCII forms of `hm_short` that are accepted for the same generated setting.\n\nThe preferred symbol is stored in `hm_short`.",
                "x-optimade-unit": "inapplicable",
                "examples": [
                    [
                        "C c c a",
                        "C c c b"
                    ],
                    [
                        "A b a a",
                        "A c a a"
                    ]
                ],
                "items": {
                    "x-optimade-type": "string",
                    "type": [
                        "string",
                        "null"
                    ],
                    "description": "One alternate symbol string.",
                    "x-optimade-unit": "inapplicable"
                }
            },
            "hm_short_old": {
                "$id": "https://schemas.httk.org/defs/v0.1/properties/spacegroups/hm_short_old",
                "x-optimade-requirements": {
                    "support": "may",
                    "sortable": false,
                    "query-support": "none",
                    "response-level": "may"
                },
                "title": "Short Hermann-Mauguin symbol in old notation",
                "x-optimade-type": "string",
                "x-optimade-definition": {
                    "kind": "property",
                    "version": "0.1.0",
                    "format": "1.3",
                    "name": "hm_short_old",
                    "label": "hm_short_old_spacegroups"
                },
                "type": [
                    "string",
                    "null"
                ],
                "description": "The older short Hermann-Mauguin symbol retained as an alias for symbols superseded by newer `e`-glide notation.\n\nHermann-Mauguin symbols describe crystallographic space groups using lattice-centering symbols and symmetry-element symbols.\nThe setting-specific fields describe the concrete Hall/International Tables setting of the current record.\nThe `*_std` fields describe the IT-standard setting for the space-group type and can therefore be identical across multiple settings with the same IT number.\n\n**Requirements/Conventions**:\n\n- The plain string form uses spaces between symbol parts where this is needed for unambiguous parsing.\n- Older-symbol fields are present only where an older International Tables form is retained for comparison or aliasing.",
                "x-optimade-unit": "inapplicable",
                "examples": [
                    "A b m 2",
                    "C 2 m b"
                ]
            },
            "hm_short_std": {
                "$id": "https://schemas.httk.org/defs/v0.1/properties/spacegroups/hm_short_std",
                "x-optimade-requirements": {
                    "support": "may",
                    "sortable": false,
                    "query-support": "none",
                    "response-level": "may"
                },
                "title": "Standard short Hermann-Mauguin symbol",
                "x-optimade-type": "string",
                "x-optimade-definition": {
                    "kind": "property",
                    "version": "0.1.0",
                    "format": "1.3",
                    "name": "hm_short_std",
                    "label": "hm_short_std_spacegroups"
                },
                "type": [
                    "string",
                    "null"
                ],
                "description": "The International Tables standard short Hermann-Mauguin symbol for the space-group type.\n\nHermann-Mauguin symbols describe crystallographic space groups using lattice-centering symbols and symmetry-element symbols.\nThe setting-specific fields describe the concrete Hall/International Tables setting of the current record.\nThe `*_std` fields describe the IT-standard setting for the space-group type and can therefore be identical across multiple settings with the same IT number.\n\n**Requirements/Conventions**:\n\n- The plain string form uses spaces between symbol parts where this is needed for unambiguous parsing.",
                "x-optimade-unit": "inapplicable",
                "examples": [
                    "P 1",
                    "P -1"
                ]
            },
            "is_centric": {
                "$id": "https://schemas.httk.org/defs/v0.1/properties/spacegroups/is_centric",
                "x-optimade-requirements": {
                    "support": "may",
                    "sortable": false,
                    "query-support": "none",
                    "response-level": "may"
                },
                "title": "is centric",
                "x-optimade-type": "boolean",
                "x-optimade-definition": {
                    "kind": "property",
                    "version": "0.1.0",
                    "format": "1.3",
                    "name": "is_centric",
                    "label": "is_centric_spacegroups"
                },
                "type": [
                    "boolean",
                    "null"
                ],
                "description": "Whether the space group contains an inversion operation `(W,w)` with `W = -I`.\nThe inversion center need not be the coordinate origin; one such center is at `w/2` in fractional coordinates.\nThis tests the space-group symmetry, not the centricity of an individual diffraction reflection.",
                "x-optimade-unit": "inapplicable",
                "examples": [
                    false,
                    true
                ]
            },
            "is_chiral": {
                "$id": "https://schemas.httk.org/defs/v0.1/properties/spacegroups/is_chiral",
                "x-optimade-requirements": {
                    "support": "may",
                    "sortable": false,
                    "query-support": "none",
                    "response-level": "may"
                },
                "title": "is chiral",
                "x-optimade-type": "boolean",
                "x-optimade-definition": {
                    "kind": "property",
                    "version": "0.1.0",
                    "format": "1.3",
                    "name": "is_chiral",
                    "label": "is_chiral_spacegroups"
                },
                "type": [
                    "boolean",
                    "null"
                ],
                "description": "Whether every operation of the space group preserves handedness, i.e. every linear part has determinant +1.\nThis is cctbx's `is_chiral()` convention and identifies the 65 Sohncke space-group types, excluding mirrors, inversion, glide reflections, and rotoinversions.\nIt does not mean that the space-group type belongs to one of the 11 enantiomorphic pairs; that is recorded by `is_enantiomorphic`.\nIt does not by itself determine the handedness or chirality of a molecular motif.",
                "x-optimade-unit": "inapplicable",
                "examples": [
                    true,
                    false
                ]
            },
            "is_enantiomorphic": {
                "$id": "https://schemas.httk.org/defs/v0.1/properties/spacegroups/is_enantiomorphic",
                "x-optimade-requirements": {
                    "support": "may",
                    "sortable": false,
                    "query-support": "none",
                    "response-level": "may"
                },
                "title": "is enantiomorphic",
                "x-optimade-type": "boolean",
                "x-optimade-definition": {
                    "kind": "property",
                    "version": "0.1.0",
                    "format": "1.3",
                    "name": "is_enantiomorphic",
                    "label": "is_enantiomorphic_spacegroups"
                },
                "type": [
                    "boolean",
                    "null"
                ],
                "description": "Boolean flag indicating whether the space-group type belongs to an enantiomorphic pair.\n\nThis identifies the 22 space-group types belonging to 11 pairs of distinct enantiomorphic types.\nThe partner IT number is given by `it_number_enantiomorphic`; membership is more restrictive than the Sohncke-group flag `is_chiral`.",
                "x-optimade-unit": "inapplicable",
                "examples": [
                    false,
                    true
                ]
            },
            "is_reference_setting": {
                "$id": "https://schemas.httk.org/defs/v0.1/properties/spacegroups/is_reference_setting",
                "x-optimade-requirements": {
                    "support": "may",
                    "sortable": false,
                    "query-support": "none",
                    "response-level": "may"
                },
                "title": "is reference setting",
                "x-optimade-type": "boolean",
                "x-optimade-definition": {
                    "kind": "property",
                    "version": "0.1.0",
                    "format": "1.3",
                    "name": "is_reference_setting",
                    "label": "is_reference_setting_spacegroups"
                },
                "type": [
                    "boolean",
                    "null"
                ],
                "description": "Whether cctbx identifies this Hall setting as its reference setting for the space-group type.\nThis is the reference used by cctbx's change-of-basis machinery; it must not be inferred solely from the setting-specific Hermann-Mauguin symbol.\nFor the pipeline's selected IT-standard setting, use `index_it_number_to_std_spacegroups` in the dataset's companion `indicies` structure.",
                "x-optimade-unit": "inapplicable",
                "examples": [
                    true,
                    false
                ]
            },
            "it_coordinate_system_code": {
                "$id": "https://schemas.httk.org/defs/v0.1/properties/spacegroups/it_coordinate_system_code",
                "x-optimade-requirements": {
                    "support": "may",
                    "sortable": false,
                    "query-support": "none",
                    "response-level": "may"
                },
                "title": "International Tables coordinate-system code",
                "x-optimade-type": "string",
                "x-compatibility": [
                    "https://www.iucr.org/__data/iucr/cifdic_html/2/cif_sym.dic/Ispace_group.IT_coordinate_system_code.html"
                ],
                "x-optimade-definition": {
                    "kind": "property",
                    "version": "0.1.0",
                    "format": "1.3",
                    "name": "it_coordinate_system_code",
                    "label": "it_coordinate_system_code_spacegroups"
                },
                "type": [
                    "string",
                    "null"
                ],
                "description": "The International Tables coordinate-system code for the setting.\n\nThe code distinguishes setting choices such as monoclinic unique-axis and cell choices, orthorhombic axis settings, tetragonal/cubic origin choices, and trigonal hexagonal or rhombohedral axes.",
                "x-optimade-unit": "inapplicable",
                "examples": [
                    "b1",
                    "2"
                ]
            },
            "it_number": {
                "$id": "https://schemas.httk.org/defs/v0.1/properties/spacegroups/it_number",
                "x-optimade-requirements": {
                    "support": "may",
                    "sortable": false,
                    "query-support": "none",
                    "response-level": "may"
                },
                "title": "International Tables space-group number",
                "x-optimade-type": "integer",
                "x-compatibility": [
                    "https://schemas.optimade.org/defs/v1.2/properties/optimade/structures/space_group_it_number"
                ],
                "x-optimade-definition": {
                    "kind": "property",
                    "version": "0.1.0",
                    "format": "1.3",
                    "name": "it_number",
                    "label": "it_number_spacegroups"
                },
                "type": [
                    "integer",
                    "null"
                ],
                "description": "The International Tables space-group number.\n\nThis integer identifies the space-group type numbered 1 through 230 in International Tables for Crystallography. Multiple Hall settings can share the same `it_number`.",
                "x-optimade-unit": "inapplicable",
                "examples": [
                    1,
                    5
                ]
            },
            "it_number_enantiomorphic": {
                "$id": "https://schemas.httk.org/defs/v0.1/properties/spacegroups/it_number_enantiomorphic",
                "x-optimade-requirements": {
                    "support": "may",
                    "sortable": false,
                    "query-support": "none",
                    "response-level": "may"
                },
                "title": "International Tables number of the enantiomorph",
                "x-optimade-type": "integer",
                "x-optimade-definition": {
                    "kind": "property",
                    "version": "0.1.0",
                    "format": "1.3",
                    "name": "it_number_enantiomorphic",
                    "label": "it_number_enantiomorphic_spacegroups"
                },
                "type": [
                    "integer",
                    "null"
                ],
                "description": "International Tables number of the enantiomorphic partner space group, when one exists.\n\nThe value is null for space groups without a distinct enantiomorphic partner.",
                "x-optimade-unit": "inapplicable",
                "examples": [
                    78,
                    76
                ]
            },
            "laue_class": {
                "$id": "https://schemas.httk.org/defs/v0.1/properties/pointgroups/laue_class",
                "x-optimade-requirements": {
                    "support": "may",
                    "sortable": false,
                    "query-support": "none",
                    "response-level": "may"
                },
                "title": "Laue class",
                "x-optimade-type": "string",
                "x-compatibility": [
                    "https://www.iucr.org/__data/iucr/cifdic_html/2/cif_sym.dic/Ispace_group.Laue_class.html"
                ],
                "x-optimade-definition": {
                    "kind": "property",
                    "version": "0.1.0",
                    "format": "1.3",
                    "name": "laue_class",
                    "label": "laue_class_pointgroups"
                },
                "type": [
                    "string",
                    "null"
                ],
                "description": "The Laue class associated with the space group or point group.\n\nThe Laue class groups point groups that become equivalent when inversion symmetry is included.\n\nIt is the centrosymmetric point-group type generated by the original point group together with inversion.\nIts use as diffraction symmetry invokes the usual Friedel-pair equivalence; anomalous-scattering measurements need not have that intensity symmetry.",
                "x-optimade-unit": "inapplicable",
                "enum": [
                    "-1",
                    "2/m",
                    "mmm",
                    "4/m",
                    "4/mmm",
                    "-3",
                    "-3m",
                    "6/m",
                    "6/mmm",
                    "m-3",
                    "m-3m",
                    null
                ],
                "examples": [
                    "-1",
                    "2/m"
                ]
            },
            "n_centering_translations": {
                "$id": "https://schemas.httk.org/defs/v0.1/properties/spacegroups/n_centering_translations",
                "x-optimade-requirements": {
                    "support": "may",
                    "sortable": false,
                    "query-support": "none",
                    "response-level": "may"
                },
                "title": "Number of centering translations",
                "x-optimade-type": "integer",
                "x-optimade-definition": {
                    "kind": "property",
                    "version": "0.1.0",
                    "format": "1.3",
                    "name": "n_centering_translations",
                    "label": "n_centering_translations_spacegroups"
                },
                "type": [
                    "integer",
                    "null"
                ],
                "description": "Number of centering translations in the conventional cell of the space-group setting.\n\nWhen the entry contains a `centering_translations` list, this value MUST equal its length.",
                "x-optimade-unit": "inapplicable",
                "examples": [
                    1,
                    2
                ]
            },
            "n_pointgroup_symops": {
                "$id": "https://schemas.httk.org/defs/v0.1/properties/pointgroups/n_pointgroup_symops",
                "x-optimade-requirements": {
                    "support": "may",
                    "sortable": false,
                    "query-support": "none",
                    "response-level": "may"
                },
                "title": "Number of point-group operations",
                "x-optimade-type": "integer",
                "x-optimade-definition": {
                    "kind": "property",
                    "version": "0.1.0",
                    "format": "1.3",
                    "name": "n_pointgroup_symops",
                    "label": "n_pointgroup_symops_pointgroups"
                },
                "type": [
                    "integer",
                    "null"
                ],
                "description": "Number of point-group symmetry operations.\n\nFor a space-group entry this is the number of operations of the point group of the space group, and it MUST equal the length of the `symops_representative` list when present.\n\nPoint-group entries do not carry this field; their operation count is `order`.\nFor a space-group entry it is the order of the quotient by the full translation subgroup and MUST equal `n_symops / n_centering_translations`.\nInversion and other improper point operations are included.",
                "x-optimade-unit": "inapplicable",
                "examples": [
                    1,
                    2
                ]
            },
            "n_symops": {
                "$id": "https://schemas.httk.org/defs/v0.1/properties/spacegroups/n_symops",
                "x-optimade-requirements": {
                    "support": "may",
                    "sortable": false,
                    "query-support": "none",
                    "response-level": "may"
                },
                "title": "Number of symops",
                "x-optimade-type": "integer",
                "x-optimade-definition": {
                    "kind": "property",
                    "version": "0.1.0",
                    "format": "1.3",
                    "name": "n_symops",
                    "label": "n_symops_spacegroups"
                },
                "type": [
                    "integer",
                    "null"
                ],
                "description": "Number of symmetry operations in the finite operation list of the generated entry.\n\nWhen the entry contains a `symops` list, this value MUST equal its length.",
                "x-optimade-unit": "inapplicable",
                "examples": [
                    1,
                    2
                ]
            },
            "point_group": {
                "$id": "https://schemas.httk.org/defs/v0.1/properties/spacegroups/point_group",
                "x-optimade-requirements": {
                    "support": "may",
                    "sortable": false,
                    "query-support": "none",
                    "response-level": "may"
                },
                "title": "Point-group Hermann-Mauguin symbol",
                "x-optimade-type": "string",
                "x-compatibility": [
                    "https://www.iucr.org/__data/iucr/cifdic_html/2/cif_sym.dic/Ispace_group.point_group_H-M.html"
                ],
                "x-optimade-definition": {
                    "kind": "property",
                    "version": "0.1.0",
                    "format": "1.3",
                    "name": "point_group",
                    "label": "point_group_spacegroups"
                },
                "type": [
                    "string",
                    "null"
                ],
                "description": "The Hermann-Mauguin point-group symbol for the crystallographic point group of the space group.\n\nThis field identifies the crystallographic point group obtained from the space group by removing translational components.\nThe value uses the same Hermann-Mauguin symbol vocabulary as the `hm_symbol` key of the pointgroups entries, defined by `/defs/v0.1/properties/pointgroups/hm_symbol`, and can be used to look up the corresponding pointgroups entry.\n\nRemoving translations means taking the quotient by the full translation subgroup and identifying the resulting linear point group.\nThe pointgroups table uses its own reference coordinate frame; equality of the symbol does not assert equality of the fractional matrices in different Hall settings.",
                "x-optimade-unit": "inapplicable",
                "enum": [
                    "1",
                    "-1",
                    "2",
                    "m",
                    "2/m",
                    "222",
                    "mm2",
                    "mmm",
                    "4",
                    "-4",
                    "4/m",
                    "422",
                    "4mm",
                    "-42m",
                    "4/mmm",
                    "3",
                    "-3",
                    "32",
                    "3m",
                    "-3m",
                    "6",
                    "-6",
                    "6/m",
                    "622",
                    "6mm",
                    "-62m",
                    "6/mmm",
                    "23",
                    "m-3",
                    "432",
                    "-43m",
                    "m-3m",
                    null
                ],
                "examples": [
                    "1",
                    "2/m",
                    "m-3m"
                ]
            },
            "schoenflies": {
                "$id": "https://schemas.httk.org/defs/v0.1/properties/spacegroups/schoenflies",
                "x-optimade-requirements": {
                    "support": "may",
                    "sortable": false,
                    "query-support": "none",
                    "response-level": "may"
                },
                "title": "Schoenflies symbol",
                "x-optimade-type": "string",
                "x-compatibility": [
                    "https://www.iucr.org/__data/iucr/cifdic_html/2/cif_sym.dic/Ispace_group.name_Schoenflies.html"
                ],
                "x-optimade-definition": {
                    "kind": "property",
                    "version": "0.1.0",
                    "format": "1.3",
                    "name": "schoenflies",
                    "label": "schoenflies_spacegroups"
                },
                "type": [
                    "string",
                    "null"
                ],
                "description": "The Schoenflies symbol for the space-group type.\n\nThe ASCII form follows the CIF convention for `_space_group.name_Schoenflies`, using a period to separate the Schoenflies point-group symbol from the superscript index.",
                "x-optimade-unit": "inapplicable",
                "enum": [
                    "C1.1",
                    "Ci.1",
                    "C2.1",
                    "C2.2",
                    "C2.3",
                    "Cs.1",
                    "Cs.2",
                    "Cs.3",
                    "Cs.4",
                    "C2h.1",
                    "C2h.2",
                    "C2h.3",
                    "C2h.4",
                    "C2h.5",
                    "C2h.6",
                    "D2.1",
                    "D2.2",
                    "D2.3",
                    "D2.4",
                    "D2.5",
                    "D2.6",
                    "D2.7",
                    "D2.8",
                    "D2.9",
                    "C2v.1",
                    "C2v.2",
                    "C2v.3",
                    "C2v.4",
                    "C2v.5",
                    "C2v.6",
                    "C2v.7",
                    "C2v.8",
                    "C2v.9",
                    "C2v.10",
                    "C2v.11",
                    "C2v.12",
                    "C2v.13",
                    "C2v.14",
                    "C2v.15",
                    "C2v.16",
                    "C2v.17",
                    "C2v.18",
                    "C2v.19",
                    "C2v.20",
                    "C2v.21",
                    "C2v.22",
                    "D2h.1",
                    "D2h.2",
                    "D2h.3",
                    "D2h.4",
                    "D2h.5",
                    "D2h.6",
                    "D2h.7",
                    "D2h.8",
                    "D2h.9",
                    "D2h.10",
                    "D2h.11",
                    "D2h.12",
                    "D2h.13",
                    "D2h.14",
                    "D2h.15",
                    "D2h.16",
                    "D2h.17",
                    "D2h.18",
                    "D2h.19",
                    "D2h.20",
                    "D2h.21",
                    "D2h.22",
                    "D2h.23",
                    "D2h.24",
                    "D2h.25",
                    "D2h.26",
                    "D2h.27",
                    "D2h.28",
                    "C4.1",
                    "C4.2",
                    "C4.3",
                    "C4.4",
                    "C4.5",
                    "C4.6",
                    "S4.1",
                    "S4.2",
                    "C4h.1",
                    "C4h.2",
                    "C4h.3",
                    "C4h.4",
                    "C4h.5",
                    "C4h.6",
                    "D4.1",
                    "D4.2",
                    "D4.3",
                    "D4.4",
                    "D4.5",
                    "D4.6",
                    "D4.7",
                    "D4.8",
                    "D4.9",
                    "D4.10",
                    "C4v.1",
                    "C4v.2",
                    "C4v.3",
                    "C4v.4",
                    "C4v.5",
                    "C4v.6",
                    "C4v.7",
                    "C4v.8",
                    "C4v.9",
                    "C4v.10",
                    "C4v.11",
                    "C4v.12",
                    "D2d.1",
                    "D2d.2",
                    "D2d.3",
                    "D2d.4",
                    "D2d.5",
                    "D2d.6",
                    "D2d.7",
                    "D2d.8",
                    "D2d.9",
                    "D2d.10",
                    "D2d.11",
                    "D2d.12",
                    "D4h.1",
                    "D4h.2",
                    "D4h.3",
                    "D4h.4",
                    "D4h.5",
                    "D4h.6",
                    "D4h.7",
                    "D4h.8",
                    "D4h.9",
                    "D4h.10",
                    "D4h.11",
                    "D4h.12",
                    "D4h.13",
                    "D4h.14",
                    "D4h.15",
                    "D4h.16",
                    "D4h.17",
                    "D4h.18",
                    "D4h.19",
                    "D4h.20",
                    "C3.1",
                    "C3.2",
                    "C3.3",
                    "C3.4",
                    "C3i.1",
                    "C3i.2",
                    "D3.1",
                    "D3.2",
                    "D3.3",
                    "D3.4",
                    "D3.5",
                    "D3.6",
                    "D3.7",
                    "C3v.1",
                    "C3v.2",
                    "C3v.3",
                    "C3v.4",
                    "C3v.5",
                    "C3v.6",
                    "D3d.1",
                    "D3d.2",
                    "D3d.3",
                    "D3d.4",
                    "D3d.5",
                    "D3d.6",
                    "C6.1",
                    "C6.2",
                    "C6.3",
                    "C6.4",
                    "C6.5",
                    "C6.6",
                    "C3h.1",
                    "C6h.1",
                    "C6h.2",
                    "D6.1",
                    "D6.2",
                    "D6.3",
                    "D6.4",
                    "D6.5",
                    "D6.6",
                    "C6v.1",
                    "C6v.2",
                    "C6v.3",
                    "C6v.4",
                    "D3h.1",
                    "D3h.2",
                    "D3h.3",
                    "D3h.4",
                    "D6h.1",
                    "D6h.2",
                    "D6h.3",
                    "D6h.4",
                    "T.1",
                    "T.2",
                    "T.3",
                    "T.4",
                    "T.5",
                    "Th.1",
                    "Th.2",
                    "Th.3",
                    "Th.4",
                    "Th.5",
                    "Th.6",
                    "Th.7",
                    "O.1",
                    "O.2",
                    "O.3",
                    "O.4",
                    "O.5",
                    "O.6",
                    "O.7",
                    "O.8",
                    "Td.1",
                    "Td.2",
                    "Td.3",
                    "Td.4",
                    "Td.5",
                    "Td.6",
                    "Oh.1",
                    "Oh.2",
                    "Oh.3",
                    "Oh.4",
                    "Oh.5",
                    "Oh.6",
                    "Oh.7",
                    "Oh.8",
                    "Oh.9",
                    "Oh.10",
                    null
                ],
                "examples": [
                    "C1.1",
                    "C2.3"
                ]
            },
            "setting": {
                "$id": "https://schemas.httk.org/defs/v0.1/properties/spacegroups/setting",
                "x-optimade-requirements": {
                    "support": "may",
                    "sortable": false,
                    "query-support": "none",
                    "response-level": "may"
                },
                "title": "Setting annotation",
                "x-optimade-type": "string",
                "x-optimade-definition": {
                    "kind": "property",
                    "version": "0.1.0",
                    "format": "1.3",
                    "name": "setting",
                    "label": "setting_spacegroups"
                },
                "type": [
                    "string",
                    "null"
                ],
                "description": "Setting suffix or setting annotation extracted from the cctbx universal Hermann-Mauguin symbol in `hm_cctbx_universal`.\n\nThe value is the part of the universal symbol after the colon when one is present, for example the origin-choice code `1` or `2`, the rhombohedral- or hexagonal-axes code `r` or `h`, or an axis code such as `b1`.\nWhen the universal symbol has no colon, the value is any trailing parenthesized basis-change qualifier, for example `(c,a,b)`.\nThe value is an empty string when the universal symbol carries no setting annotation.\nSee also `setting_it_nc` and `it_coordinate_system_code` for the corresponding International Tables identifiers.",
                "x-optimade-unit": "inapplicable",
                "examples": [
                    "2",
                    "(c,a,b)"
                ]
            },
            "setting_it_nc": {
                "$id": "https://schemas.httk.org/defs/v0.1/properties/spacegroups/setting_it_nc",
                "x-optimade-requirements": {
                    "support": "may",
                    "sortable": false,
                    "query-support": "none",
                    "response-level": "may"
                },
                "title": "International Tables setting code n:c",
                "x-optimade-type": "string",
                "x-optimade-definition": {
                    "kind": "property",
                    "version": "0.1.0",
                    "format": "1.3",
                    "name": "setting_it_nc",
                    "label": "setting_it_nc_spacegroups"
                },
                "type": [
                    "string",
                    "null"
                ],
                "description": "International Tables setting identifier in `n:c` notation.\n\nThe part before the colon is the International Tables space-group number.\nThe part after the colon is the coordinate-system or origin-choice qualifier used to distinguish settings that share the same IT number.\n\n**Requirements/Conventions**:\n\n- Triclinic, hexagonal, and many unique settings use only the IT number, for example `1`.\n- Monoclinic settings use qualifiers such as `b1`, `-b1`, `c2`, or `a3`.\n- Orthorhombic settings use qualifiers such as `abc`, `cab`, `1abc`, or `2bca` when needed.\n- Tetragonal and cubic origin choices use qualifiers such as `1` and `2`; trigonal axis choices use qualifiers such as `H` and `R`.",
                "x-optimade-unit": "inapplicable",
                "examples": [
                    "1",
                    "2"
                ]
            },
            "setting_it_nc_aliases": {
                "$id": "https://schemas.httk.org/defs/v0.1/properties/spacegroups/setting_it_nc_aliases",
                "x-optimade-requirements": {
                    "support": "may",
                    "sortable": false,
                    "query-support": "none",
                    "response-level": "may"
                },
                "title": "International Tables setting-code aliases",
                "x-optimade-type": "list",
                "x-optimade-definition": {
                    "kind": "property",
                    "version": "0.1.0",
                    "format": "1.3",
                    "name": "setting_it_nc_aliases",
                    "label": "setting_it_nc_aliases_spacegroups"
                },
                "type": [
                    "array",
                    "null"
                ],
                "description": "A list of International Tables `n:c` setting identifiers that are alternatives to the one designated as the main one.\n\nThis field is used only when the source tables expose more than one conventional label for the same setting.",
                "x-optimade-unit": "inapplicable",
                "items": {
                    "x-optimade-type": "string",
                    "type": [
                        "string",
                        "null"
                    ],
                    "description": "One alternate symbol string.",
                    "x-optimade-unit": "inapplicable"
                },
                "examples": [
                    [
                        "68:1ba-c"
                    ],
                    [
                        "68:1-cba"
                    ]
                ]
            },
            "setting_plaintext": {
                "$id": "https://schemas.httk.org/defs/v0.1/properties/spacegroups/setting_plaintext",
                "x-optimade-requirements": {
                    "support": "may",
                    "sortable": false,
                    "query-support": "none",
                    "response-level": "may"
                },
                "title": "Setting plaintext",
                "x-optimade-type": "string",
                "x-optimade-definition": {
                    "kind": "property",
                    "version": "0.1.0",
                    "format": "1.3",
                    "name": "setting_plaintext",
                    "label": "setting_plaintext_spacegroups"
                },
                "type": [
                    "string",
                    "null"
                ],
                "description": "Human-readable description of the International Tables coordinate-system setting.\n\nThis field expands `setting_it_nc` into a short phrase such as a monoclinic unique-axis and cell-choice description, an orthorhombic axis permutation, or an origin-choice description.",
                "x-optimade-unit": "inapplicable",
                "examples": [
                    "unique axis b",
                    "unique axis c"
                ]
            },
            "spacegroup_symbols": {
                "$id": "https://schemas.httk.org/defs/v0.1/properties/spacegroups/spacegroup_symbols",
                "x-optimade-requirements": {
                    "support": "may",
                    "sortable": false,
                    "query-support": "none",
                    "response-level": "may"
                },
                "title": "Space-group symbols",
                "x-optimade-type": "list",
                "x-optimade-definition": {
                    "kind": "property",
                    "version": "0.1.0",
                    "format": "1.3",
                    "name": "spacegroup_symbols",
                    "label": "spacegroup_symbols_spacegroups"
                },
                "x-optimade-unit": "inapplicable",
                "type": [
                    "array",
                    "null"
                ],
                "description": "Ordered table of conventional space-group symbol rows.\n\nEach row describes one Hall setting where the International Tables symbol data is available, including the IT coordinate-system code, Hall symbol, IT number, and Hermann-Mauguin symbols.\n\n**Requirements/Conventions**:\n\n- It MUST be a list of dictionaries.\n- Each dictionary SHOULD contain the setting identifier `setting_it_nc`, the Hall symbol `hall`, the International Tables number `it_number`, and the setting-specific Hermann-Mauguin symbols `hm_short`, `hm_full`, and `hm_extended` when available.\n- The order SHOULD follow the conventional ITA/Hall setting order used by the generated `symmetry_basics` space-group table.",
                "items": {
                    "x-optimade-type": "dictionary",
                    "x-optimade-unit": "inapplicable",
                    "type": [
                        "object",
                        "null"
                    ],
                    "description": "One space-group symbol row.",
                    "properties": {
                        "setting_it_nc": {
                            "$id": "https://schemas.httk.org/defs/v0.1/properties/spacegroups/setting_it_nc",
                            "title": "International Tables setting code n:c",
                            "x-optimade-type": "string",
                            "x-optimade-definition": {
                                "kind": "property",
                                "version": "0.1.0",
                                "format": "1.3",
                                "name": "setting_it_nc",
                                "label": "setting_it_nc_spacegroups"
                            },
                            "type": [
                                "string",
                                "null"
                            ],
                            "description": "International Tables setting identifier in `n:c` notation.\n\nThe part before the colon is the International Tables space-group number.\nThe part after the colon is the coordinate-system or origin-choice qualifier used to distinguish settings that share the same IT number.\n\n**Requirements/Conventions**:\n\n- Triclinic, hexagonal, and many unique settings use only the IT number, for example `1`.\n- Monoclinic settings use qualifiers such as `b1`, `-b1`, `c2`, or `a3`.\n- Orthorhombic settings use qualifiers such as `abc`, `cab`, `1abc`, or `2bca` when needed.\n- Tetragonal and cubic origin choices use qualifiers such as `1` and `2`; trigonal axis choices use qualifiers such as `H` and `R`.",
                            "x-optimade-unit": "inapplicable",
                            "examples": [
                                "1",
                                "2"
                            ]
                        },
                        "hall_entry": {
                            "$id": "https://schemas.httk.org/defs/v0.1/properties/spacegroups/hall_entry",
                            "title": "Hall entry",
                            "x-optimade-type": "string",
                            "x-optimade-definition": {
                                "kind": "property",
                                "version": "0.1.0",
                                "format": "1.3",
                                "name": "hall_entry",
                                "label": "hall_entry_spacegroups"
                            },
                            "type": [
                                "string",
                                "null"
                            ],
                            "description": "Normalized Hall-table entry key used internally by the generated datasets.\n\nThe value is derived from the Hall symbol by using lowercase letters and underscores in place of spaces. It is stable for lookup within these data files, while the display Hall symbol is provided separately by `hall` and its formatted variants.\n\n**Requirements/Conventions**:\n\n- This field identifies a concrete Hall setting, not only an IT space-group type.\n- The same value is normally used as the key of the containing `spacegroups` map.\n\nThe normalization is `hall.strip().replace(\" \", \"_\").lower()`; signs, quotes, asterisks, and origin-shift notation are retained.\nThe key is a coordinate-setting identifier, not a numeric spglib Hall number.\nDifferent conventional H-M entry labels can resolve to the same Hall-entry record.",
                            "x-optimade-unit": "inapplicable",
                            "examples": [
                                "p_1",
                                "-p_1"
                            ]
                        },
                        "hall": {
                            "$id": "https://schemas.httk.org/defs/v0.1/properties/spacegroups/hall",
                            "title": "Hall symbol",
                            "x-optimade-type": "string",
                            "x-compatibility": [
                                "https://schemas.optimade.org/defs/v1.2/properties/optimade/structures/space_group_symbol_hall"
                            ],
                            "x-optimade-definition": {
                                "kind": "property",
                                "version": "0.1.0",
                                "format": "1.3",
                                "name": "hall",
                                "label": "hall_spacegroups"
                            },
                            "type": [
                                "string",
                                "null"
                            ],
                            "description": "The Hall symbol for a crystallographic space-group setting.\n\nHall symbols encode the generators and origin choice of a space-group setting in a form intended to identify the setting unambiguously.\nThe normalized lookup-key form of this symbol, using lowercase letters and underscores in place of spaces, is provided by `hall_entry`.",
                            "x-optimade-unit": "inapplicable",
                            "examples": [
                                "P 1",
                                "C 2y"
                            ]
                        },
                        "it_number": {
                            "$id": "https://schemas.httk.org/defs/v0.1/properties/spacegroups/it_number",
                            "title": "International Tables space-group number",
                            "x-optimade-type": "integer",
                            "x-compatibility": [
                                "https://schemas.optimade.org/defs/v1.2/properties/optimade/structures/space_group_it_number"
                            ],
                            "x-optimade-definition": {
                                "kind": "property",
                                "version": "0.1.0",
                                "format": "1.3",
                                "name": "it_number",
                                "label": "it_number_spacegroups"
                            },
                            "type": [
                                "integer",
                                "null"
                            ],
                            "description": "The International Tables space-group number.\n\nThis integer identifies the space-group type numbered 1 through 230 in International Tables for Crystallography. Multiple Hall settings can share the same `it_number`.",
                            "x-optimade-unit": "inapplicable",
                            "examples": [
                                1,
                                5
                            ]
                        },
                        "hm_short": {
                            "$id": "https://schemas.httk.org/defs/v0.1/properties/spacegroups/hm_short",
                            "title": "Short Hermann-Mauguin symbol",
                            "x-optimade-type": "string",
                            "x-compatibility": [
                                "https://schemas.optimade.org/defs/v1.2/properties/optimade/structures/space_group_symbol_hermann_mauguin"
                            ],
                            "x-optimade-definition": {
                                "kind": "property",
                                "version": "0.1.0",
                                "format": "1.3",
                                "name": "hm_short",
                                "label": "hm_short_spacegroups"
                            },
                            "type": [
                                "string",
                                "null"
                            ],
                            "description": "The setting-specific short Hermann-Mauguin symbol for the space-group setting.\n\nThis field gives the concise Hermann-Mauguin notation used for the concrete Hall setting represented by the containing record.\nIt is compatible with OPTIMADE's `space_group_symbol_hermann_mauguin`.",
                            "x-optimade-unit": "inapplicable",
                            "examples": [
                                "P 1",
                                "C 2"
                            ]
                        },
                        "hm_full": {
                            "$id": "https://schemas.httk.org/defs/v0.1/properties/spacegroups/hm_full",
                            "title": "Full Hermann-Mauguin symbol",
                            "x-optimade-type": "string",
                            "x-compatibility": [
                                "https://www.iucr.org/__data/iucr/cifdic_html/2/cif_sym.dic/Ispace_group.name_H-M_full.html"
                            ],
                            "x-optimade-definition": {
                                "kind": "property",
                                "version": "0.1.0",
                                "format": "1.3",
                                "name": "hm_full",
                                "label": "hm_full_spacegroups"
                            },
                            "type": [
                                "string",
                                "null"
                            ],
                            "description": "The setting-specific full Hermann-Mauguin symbol for the space-group setting.\n\nThe full symbol expands the short Hermann-Mauguin notation to include the symmetry entries for all relevant crystallographic directions in the setting represented by the containing Hall record.",
                            "x-optimade-unit": "inapplicable",
                            "examples": [
                                "P 1",
                                "C 1 2 1"
                            ]
                        },
                        "hm_extended": {
                            "$id": "https://schemas.httk.org/defs/v0.1/properties/spacegroups/hm_extended",
                            "title": "Extended Hermann-Mauguin symbol",
                            "x-optimade-type": "string",
                            "x-compatibility": [
                                "https://schemas.optimade.org/defs/v1.2/properties/optimade/structures/space_group_symbol_hermann_mauguin_extended"
                            ],
                            "x-optimade-definition": {
                                "kind": "property",
                                "version": "0.1.0",
                                "format": "1.3",
                                "name": "hm_extended",
                                "label": "hm_extended_spacegroups"
                            },
                            "type": [
                                "string",
                                "null"
                            ],
                            "description": "The setting-specific extended Hermann-Mauguin symbol for the space-group setting.\n\nExtended Hermann-Mauguin symbols give additional symmetry-element information compared with the short symbol.\nMulti-line values preserve line breaks and spacing used to align the extended symbol components.\nUnlike the short and full symbols, extended symbols are defined per setting only, so no `hm_extended_std` standard-symbol counterpart exists.",
                            "x-optimade-unit": "inapplicable",
                            "examples": [
                                "P 1",
                                "C 1 2 1\n  21"
                            ]
                        },
                        "hm_extended_old": {
                            "$id": "https://schemas.httk.org/defs/v0.1/properties/spacegroups/hm_extended_old",
                            "title": "Extended Hermann-Mauguin symbol in old notation",
                            "x-optimade-type": "string",
                            "x-optimade-definition": {
                                "kind": "property",
                                "version": "0.1.0",
                                "format": "1.3",
                                "name": "hm_extended_old",
                                "label": "hm_extended_old_spacegroups"
                            },
                            "type": [
                                "string",
                                "null"
                            ],
                            "description": "The older extended Hermann-Mauguin symbol retained as an alias for symbols superseded by newer `e`-glide notation.\n\nHermann-Mauguin symbols describe crystallographic space groups using lattice-centering symbols and symmetry-element symbols. The setting-specific fields describe the concrete Hall/International Tables setting of the current record. The `*_std` fields describe the IT-standard setting for the space-group type and can therefore be identical across multiple settings with the same IT number.\n\n**Requirements/Conventions**:\n\n- The plain string form uses spaces between symbol parts where this is needed for unambiguous parsing.\n- The extended symbol MAY contain multiple lines; line breaks and spacing encode the alignment used in International Tables extended symbols.\n- Older-symbol fields are present only where an older International Tables form is retained for comparison or aliasing.",
                            "x-optimade-unit": "inapplicable",
                            "examples": [
                                "A b m 2\n c c 21",
                                "C 2 m b\n 21 a a"
                            ]
                        },
                        "hm_short_old": {
                            "$id": "https://schemas.httk.org/defs/v0.1/properties/spacegroups/hm_short_old",
                            "title": "Short Hermann-Mauguin symbol in old notation",
                            "x-optimade-type": "string",
                            "x-optimade-definition": {
                                "kind": "property",
                                "version": "0.1.0",
                                "format": "1.3",
                                "name": "hm_short_old",
                                "label": "hm_short_old_spacegroups"
                            },
                            "type": [
                                "string",
                                "null"
                            ],
                            "description": "The older short Hermann-Mauguin symbol retained as an alias for symbols superseded by newer `e`-glide notation.\n\nHermann-Mauguin symbols describe crystallographic space groups using lattice-centering symbols and symmetry-element symbols.\nThe setting-specific fields describe the concrete Hall/International Tables setting of the current record.\nThe `*_std` fields describe the IT-standard setting for the space-group type and can therefore be identical across multiple settings with the same IT number.\n\n**Requirements/Conventions**:\n\n- The plain string form uses spaces between symbol parts where this is needed for unambiguous parsing.\n- Older-symbol fields are present only where an older International Tables form is retained for comparison or aliasing.",
                            "x-optimade-unit": "inapplicable",
                            "examples": [
                                "A b m 2",
                                "C 2 m b"
                            ]
                        },
                        "hm_full_old": {
                            "$id": "https://schemas.httk.org/defs/v0.1/properties/spacegroups/hm_full_old",
                            "title": "Full Hermann-Mauguin symbol in old notation",
                            "x-optimade-type": "string",
                            "x-optimade-definition": {
                                "kind": "property",
                                "version": "0.1.0",
                                "format": "1.3",
                                "name": "hm_full_old",
                                "label": "hm_full_old_spacegroups"
                            },
                            "type": [
                                "string",
                                "null"
                            ],
                            "description": "The older full Hermann-Mauguin symbol retained as an alias for symbols superseded by newer `e`-glide notation.\n\nHermann-Mauguin symbols describe crystallographic space groups using lattice-centering symbols and symmetry-element symbols. The setting-specific fields describe the concrete Hall/International Tables setting of the current record. The `*_std` fields describe the IT-standard setting for the space-group type and can therefore be identical across multiple settings with the same IT number.\n\n**Requirements/Conventions**:\n\n- The plain string form uses spaces between symbol parts where this is needed for unambiguous parsing.\n- Older-symbol fields are present only where an older International Tables form is retained for comparison or aliasing.",
                            "x-optimade-unit": "inapplicable",
                            "examples": [
                                "A b m 2",
                                "C 2 m b"
                            ]
                        }
                    }
                },
                "examples": [
                    [
                        {
                            "setting_it_nc": "1",
                            "hall": "P 1",
                            "it_number": 1,
                            "hm_short": "P 1",
                            "hm_full": "P 1",
                            "hm_extended": "P 1"
                        }
                    ]
                ]
            },
            "spglib_hall": {
                "$id": "https://schemas.httk.org/defs/v0.1/properties/spacegroups/spglib_hall",
                "x-optimade-requirements": {
                    "support": "may",
                    "sortable": false,
                    "query-support": "none",
                    "response-level": "may"
                },
                "title": "Spglib Hall symbol",
                "x-optimade-type": "string",
                "x-optimade-definition": {
                    "kind": "property",
                    "version": "0.1.0",
                    "format": "1.3",
                    "name": "spglib_hall",
                    "label": "spglib_hall_spacegroups"
                },
                "type": [
                    "string",
                    "null"
                ],
                "description": "The Hall symbol for this setting as spelled by the spglib library.\n\nThis is the Hall symbol spglib associates with the Hall numbers in `spglib_hall_numbers`.\nIt denotes the same setting as `hall` but may differ in spelling or spacing conventions.",
                "x-optimade-unit": "inapplicable",
                "examples": [
                    "P 1",
                    "-P 1"
                ]
            },
            "spglib_hall_numbers": {
                "$id": "https://schemas.httk.org/defs/v0.1/properties/spacegroups/spglib_hall_numbers",
                "x-optimade-requirements": {
                    "support": "may",
                    "sortable": false,
                    "query-support": "none",
                    "response-level": "may"
                },
                "title": "Spglib Hall numbers",
                "x-optimade-type": "list",
                "x-optimade-definition": {
                    "kind": "property",
                    "version": "0.1.0",
                    "format": "1.3",
                    "name": "spglib_hall_numbers",
                    "label": "spglib_hall_numbers_spacegroups"
                },
                "type": [
                    "array",
                    "null"
                ],
                "description": "The spglib Hall numbers corresponding to this Hall setting.\n\nSpglib enumerates 530 settings with Hall numbers 1 to 530.\nDistinct spglib Hall numbers can share one Hall symbol, so this is a sorted list of every spglib Hall number whose Hall symbol matches this entry.",
                "x-optimade-unit": "inapplicable",
                "items": {
                    "x-optimade-type": "integer",
                    "x-optimade-unit": "inapplicable",
                    "type": [
                        "integer"
                    ]
                },
                "examples": [
                    [
                        1
                    ],
                    [
                        2
                    ]
                ]
            },
            "structure_seminvariants": {
                "$id": "https://schemas.httk.org/defs/v0.1/properties/spacegroups/structure_seminvariants",
                "x-optimade-requirements": {
                    "support": "may",
                    "sortable": false,
                    "query-support": "none",
                    "response-level": "may"
                },
                "title": "Structure seminvariants",
                "x-optimade-type": "list",
                "x-optimade-definition": {
                    "kind": "property",
                    "version": "0.1.0",
                    "format": "1.3",
                    "name": "structure_seminvariants",
                    "label": "structure_seminvariants_spacegroups"
                },
                "type": [
                    "array",
                    "null"
                ],
                "description": "Structure-seminvariant vectors and moduli for the space-group setting, describing allowed changes of origin that preserve its symmetry description.\n\nThese are useful for phase-origin constraints in structure determination and for comparing origin choices; they also enter cctbx's FFT gridding restrictions.\nFor a Miller-index column h, the phase of a reflection is a structure seminvariant precisely when every listed pair `(v,m)` satisfies `v dot h = 0 (mod m)` for `m > 0`, or `v dot h = 0` as an ordinary equality for `m = 0`.\nA positive modulus describes a discrete allowed origin shift `v/m`; modulus zero describes arbitrary continuous shifts parallel to v, not division by zero.\nThese restrictions concern phase changes under allowed origins; they are not systematic-absence conditions on reflection intensities.\n\n**Requirements/Conventions**:\n\n- It MUST be a list of dictionaries, each with the following keys:\n\n    - **vector**: REQUIRED; List of 3 Integers.\n      Structure-seminvariant vector in the fractional-coordinate basis, paired with Miller indices in its reciprocal basis.\n\n    - **modulus**: REQUIRED; Integer.\n      Positive modulus for a discrete shift, or zero for a continuous origin-shift direction.",
                "x-optimade-unit": "inapplicable",
                "items": {
                    "x-optimade-type": "dictionary",
                    "type": [
                        "object",
                        "null"
                    ],
                    "description": "One structure-seminvariant condition vector.",
                    "properties": {
                        "vector": {
                            "x-optimade-type": "list",
                            "x-optimade-dimensions": {
                                "names": [
                                    "dim_lattice"
                                ],
                                "sizes": [
                                    3
                                ]
                            },
                            "type": [
                                "array",
                                "null"
                            ],
                            "description": "Integer vector defining the seminvariant congruence.",
                            "items": {
                                "x-optimade-type": "integer",
                                "type": [
                                    "integer",
                                    "null"
                                ],
                                "description": "One vector component.",
                                "x-optimade-unit": "inapplicable"
                            },
                            "x-optimade-unit": "inapplicable"
                        },
                        "modulus": {
                            "x-optimade-type": "integer",
                            "type": [
                                "integer",
                                "null"
                            ],
                            "description": "Positive modulus for the discrete seminvariant congruence, or zero for an exact equality associated with a continuous allowed shift.",
                            "x-optimade-unit": "inapplicable"
                        }
                    },
                    "x-optimade-unit": "inapplicable"
                },
                "examples": [
                    [
                        {
                            "vector": [
                                1,
                                0,
                                0
                            ],
                            "modulus": 0
                        },
                        {
                            "vector": [
                                0,
                                1,
                                0
                            ],
                            "modulus": 0
                        },
                        {
                            "vector": [
                                0,
                                0,
                                1
                            ],
                            "modulus": 0
                        }
                    ],
                    [
                        {
                            "vector": [
                                1,
                                0,
                                0
                            ],
                            "modulus": 2
                        },
                        {
                            "vector": [
                                0,
                                1,
                                0
                            ],
                            "modulus": 2
                        },
                        {
                            "vector": [
                                0,
                                0,
                                1
                            ],
                            "modulus": 2
                        }
                    ]
                ]
            },
            "symops": {
                "$id": "https://schemas.httk.org/defs/v0.1/properties/spacegroups/symops",
                "x-optimade-requirements": {
                    "support": "may",
                    "sortable": false,
                    "query-support": "none",
                    "response-level": "may"
                },
                "title": "Symmetry operations",
                "x-optimade-type": "list",
                "x-optimade-definition": {
                    "kind": "property",
                    "version": "0.1.0",
                    "format": "1.3",
                    "name": "symops",
                    "label": "symops_spacegroups"
                },
                "x-optimade-unit": "inapplicable",
                "type": [
                    "array",
                    "null"
                ],
                "description": "Full list of symmetry-operation descriptors for a space-group setting.\n\nEach list member is an operation on the format defined by the property definition: https://schemas.httk.org/defs/v0.1/properties/symmetry/op\n\nThe infinite space group is represented by a finite list modulo integer translations of the recorded cell.\nCentering translations, inversion, and screw/glide translations are included in this list.\nAdding arbitrary integer translations to the listed translation vectors recovers the full space group.\nConsequently `n_symops` is the general-position multiplicity in this cell, not the order of the infinite group.",
                "items": {
                    "$id": "https://schemas.httk.org/defs/v0.1/properties/symmetry/op",
                    "title": "Operation",
                    "x-optimade-type": "dictionary",
                    "x-optimade-definition": {
                        "kind": "property",
                        "version": "0.1.0",
                        "format": "1.3",
                        "name": "op",
                        "label": "op_symmetry"
                    },
                    "x-optimade-unit": "inapplicable",
                    "type": [
                        "object",
                        "null"
                    ],
                    "description": "Information related to a crystallographic operation acting within one coordinate setting.\n\nRepresents an affine_transformation that is a crystallographic operation within one setting.\nThe affine map itself is stored in the embedded `affine_transformation` field.\nThe remaining fields classify the operation crystallographically, for example by rotation type, axis, sense, and screw or glide component.\n\n**Requirements/Conventions**:\n\n- It MUST be a dictionary with the following keys:\n\n    - **affine\\_transformation**: REQUIRED; Dictionary.\n      Exact affine map for the operation.\n      It MUST follow `/defs/v0.1/properties/symmetry/affine_transformation`.\n\n    - **operation\\_kind**: OPTIONAL; String.\n      The value `euclidean` identifies an operation emitted within a Euclidean-normalizer table; ordinary point-group and space-group operation records omit it.\n\n    - **rot\\_type**: OPTIONAL; String.\n      Crystallographic operation-type label for the linear part.\n\n    - **axis**: OPTIONAL; List of 3 Integers.\n      Operation axis or invariant direction using the integer-vector convention returned by the generator.\n\n    - **sense**: OPTIONAL; Integer.\n      Rotation sense/sign convention returned by the generator; `0` is used when no handed rotation sense is applicable.\n\n    - **screw\\_glide**: OPTIONAL; List of 3 Fractions (String).\n      Screw-axis or glide-plane component associated with a space-group affine operation.\n\n    - **origin\\_shift**: OPTIONAL; List of 3 Fractions (String).\n      Origin shift associated with the screw/glide decomposition of a space-group affine operation.\n\n- Whether the operation is proper follows from the sign of the `det` field of `affine_transformation`; no separate properness flag is stored.\n\nWriting the affine part as `(W,w)`, the intrinsic translation `screw_glide = v` is defined by `(W,w)^n = (I,n*v)`, where `n` is the order of `W`.\nThe reported `origin_shift = q` satisfies `(I-W)*q = w-v`; moving the coordinate origin to `q` leaves the intrinsic translation `v`.\nIt locates the symmetry element and is not a second translation to add to `w`.\nFor a proper rotation, `axis` is the integer direction fixed by `W`; for a rotoinversion it is the rotation axis fixed by `-W`, hence for a mirror it is the plane-normal direction.\nThese are direct-lattice direction components, not Cartesian unit vectors or reciprocal-plane indices.\nThe identity and inversion use `[0,0,0]` because neither has a unique axis.\nThe signed `sense` follows cctbx's rotation/rotoinversion convention about that reported axis; converting a rotoinversion to a Schoenflies rotation-reflection symbol can reverse the rotation sense.",
                    "properties": {
                        "affine_transformation": {
                            "$id": "https://schemas.httk.org/defs/v0.1/properties/symmetry/affine_transformation",
                            "title": "Affine transformation",
                            "x-optimade-type": "dictionary",
                            "x-optimade-definition": {
                                "kind": "property",
                                "version": "0.1.0",
                                "format": "1.3",
                                "name": "affine_transformation",
                                "label": "affine_transformation_symmetry"
                            },
                            "x-optimade-unit": "inapplicable",
                            "type": [
                                "object",
                                "null"
                            ],
                            "description": "An affine transformation acting on fractional crystallographic coordinates.\n\nAn invertible affine transformation preserves collinearity and parallelism, but need not preserve Euclidean distances or angles.\nA singular affine map can collapse a line or plane to a lower-dimensional image.\nThe transformation is represented by a 3 by 3 matrix and a 3-vector, both serialized with exact string entries.\nWith column vectors, the map is `u_out = matrix * u_in + vector`; matrix rows specify the three output components.\nThe containing property identifies whether `u_in` denotes fractional coordinates or abstract Wyckoff parameters and identifies the input and output settings.\nNo wrapping modulo lattice translations is implicit in this equation; apply any required periodic reduction only in the specified output setting.\nThe transformation may, for example, represent an operation within one setting, a setting transform, a subgroup embedding, a normalizer representative, or a parametric coordinate map for a Wyckoff-position orbit representative.\nWhen used as a parametric coordinate map, the matrix may be singular because special Wyckoff positions can constrain or identify parameters.\n\n**Requirements/Conventions**:\n\n- It MUST be a dictionary with the following keys:\n\n    - **matrix**: REQUIRED; Exact 3x3 matrix.\n      Matrix part of the affine transformation.\n      It MUST be represented as a list of three row lists, each containing three exact rational entries represented as strings.\n\n    - **vector**: REQUIRED; List of 3 Fractions (String).\n      Translation or origin-shift vector of the affine transformation in fractional coordinates.\n\n    - **xyz**: OPTIONAL; String.\n      Coordinate expression for the affine transformation in `x,y,z` notation when available.\n      It MUST express the same affine map as `matrix` and `vector`, using `x,y,z` for the input components.\n\n    - **det**: OPTIONAL; Integer.\n      Determinant of `matrix` when the generator emits it.\n\n    - **is\\_orthogonal**: OPTIONAL; Boolean.\n      Whether the linear part preserves the crystallographic metric family specified by the containing setting; this is not a test of the fractional matrix against the Cartesian identity metric.",
                            "properties": {
                                "matrix": {
                                    "x-optimade-type": "list",
                                    "x-optimade-unit": "inapplicable",
                                    "x-optimade-dimensions": {
                                        "names": [
                                            "dim_lattice",
                                            "dim_lattice"
                                        ],
                                        "sizes": [
                                            3,
                                            3
                                        ]
                                    },
                                    "type": [
                                        "array",
                                        "null"
                                    ],
                                    "description": "Exact 3 by 3 matrix part of the affine transformation.",
                                    "items": {
                                        "x-optimade-type": "list",
                                        "x-optimade-unit": "inapplicable",
                                        "x-optimade-dimensions": {
                                            "names": [
                                                "dim_lattice"
                                            ],
                                            "sizes": [
                                                3
                                            ]
                                        },
                                        "type": [
                                            "array"
                                        ],
                                        "description": "One row of the exact 3 by 3 matrix.",
                                        "items": {
                                            "$id": "https://schemas.httk.org/defs/v0.1/properties/core/fraction",
                                            "title": "Fraction",
                                            "x-optimade-type": "string",
                                            "x-optimade-definition": {
                                                "label": "fraction_core",
                                                "kind": "property",
                                                "version": "0.1.0",
                                                "format": "1.3",
                                                "name": "fraction"
                                            },
                                            "type": [
                                                "string",
                                                "null"
                                            ],
                                            "description": "A numerical representation formed as the quotient of two numbers represented as a string.",
                                            "examples": [
                                                "2/3",
                                                "5/42",
                                                "10",
                                                "0"
                                            ],
                                            "x-optimade-unit": "inapplicable"
                                        }
                                    }
                                },
                                "vector": {
                                    "x-optimade-type": "list",
                                    "x-optimade-unit": "inapplicable",
                                    "x-optimade-dimensions": {
                                        "names": [
                                            "dim_lattice"
                                        ],
                                        "sizes": [
                                            3
                                        ]
                                    },
                                    "type": [
                                        "array",
                                        "null"
                                    ],
                                    "description": "Exact fractional-coordinate vector part of the affine transformation.",
                                    "items": {
                                        "$id": "https://schemas.httk.org/defs/v0.1/properties/core/fraction",
                                        "title": "Fraction",
                                        "x-optimade-type": "string",
                                        "x-optimade-definition": {
                                            "label": "fraction_core",
                                            "kind": "property",
                                            "version": "0.1.0",
                                            "format": "1.3",
                                            "name": "fraction"
                                        },
                                        "type": [
                                            "string",
                                            "null"
                                        ],
                                        "description": "A numerical representation formed as the quotient of two numbers represented as a string.",
                                        "examples": [
                                            "2/3",
                                            "5/42",
                                            "10",
                                            "0"
                                        ],
                                        "x-optimade-unit": "inapplicable"
                                    }
                                },
                                "xyz": {
                                    "$id": "https://schemas.httk.org/defs/v0.1/properties/symmetry/op_xyz",
                                    "title": "Operation xyz",
                                    "x-optimade-type": "string",
                                    "x-compatibility": [
                                        "https://schemas.optimade.org/defs/v1.2/properties/optimade/common/symmetry_operation_xyz",
                                        "https://www.iucr.org/__data/iucr/cifdic_html/2/cif_sym.dic/Ispace_group_symop.operation_xyz.html"
                                    ],
                                    "x-optimade-definition": {
                                        "kind": "property",
                                        "version": "0.1.0",
                                        "format": "1.3",
                                        "name": "op_xyz",
                                        "label": "op_xyz_symmetry"
                                    },
                                    "x-optimade-unit": "inapplicable",
                                    "type": [
                                        "string",
                                        "null"
                                    ],
                                    "description": "Coordinate operation expressed in the algebraic xyz form, also known as Jones' faithful representation (Bradley & Cracknell, 1972: pp. 35-37; adapted for computer strings).\n\nThe following definition is adapted from (and meant to be compatible with) the IUCr symCIF version 1.0.1 dictionary definition of `_space_group_symop.operation_xyz` referenced to: International Tables for Crystallography (2002). Volume A, Space-group symmetry, edited by Th. Hahn, 5th. ed. (Kluwer Academic Publishers).\nIt is available at: https://www.iucr.org/__data/iucr/cifdic_html/2/cif_sym.dic/Ispace_group_symop.operation_xyz.html\n\nIf W is a matrix representation of the rotational part of the symmetry operation defined by the positions and signs of x, y and z, and w is a column of translations defined by the fractions, an equivalent position X' is generated from a given position X by the equation: X' = WX + w.",
                                    "x-undef-pattern": "^([-+]?[xyz]([-+][xyz])?([-+](1/2|[12]/3|[1-3]/4|[1-5]/6))?|[-+]?(1/2|[12]/3|[1-3]/4|[1-5]/6)([-+][xyz]([-+][xyz])?)?),([-+]?[xyz]([-+][xyz])?([-+](1/2|[12]/3|[1-3]/4|[1-5]/6))?|[-+]?(1/2|[12]/3|[1-3]/4|[1-5]/6)([-+][xyz]([-+][xyz])?)?),([-+]?[xyz]([-+][xyz])?([-+](1/2|[12]/3|[1-3]/4|[1-5]/6))?|[-+]?(1/2|[12]/3|[1-3]/4|[1-5]/6)([-+][xyz]([-+][xyz])?)?)$",
                                    "examples": [
                                        "-x,-y,z",
                                        "x,1/2-y,1/2+z"
                                    ]
                                },
                                "det": {
                                    "x-optimade-type": "integer",
                                    "x-optimade-unit": "inapplicable",
                                    "type": [
                                        "integer",
                                        "null"
                                    ],
                                    "description": "Determinant of the matrix part when emitted by the generator.\nThis optional integer annotation MUST equal the exact determinant of `matrix`; its absence does not imply determinant one.\nRational matrices can have noninteger determinants, in which case this integer annotation is omitted."
                                },
                                "is_orthogonal": {
                                    "x-optimade-type": "boolean",
                                    "x-optimade-unit": "inapplicable",
                                    "type": [
                                        "boolean",
                                        "null"
                                    ],
                                    "description": "Whether the matrix part is an isometry of the setting's metric, i.e. it preserves every metric tensor of the setting's crystal family expressed in this basis.\nFor a same-setting matrix `M` and metric tensor `g`, the criterion is `M^T g M = g` for every positive-definite metric in that family.\nThis is orthogonality with respect to the actual (generally non-Cartesian) lattice metric, not orthogonality of the matrix as a plain array: hexagonal sixfold rotations are isometries, whereas a cell-enlarging transform is not."
                                }
                            },
                            "examples": [
                                {
                                    "matrix": [
                                        [
                                            "-1",
                                            "0",
                                            "0"
                                        ],
                                        [
                                            "0",
                                            "-1",
                                            "0"
                                        ],
                                        [
                                            "0",
                                            "0",
                                            "1"
                                        ]
                                    ],
                                    "vector": [
                                        "0",
                                        "0",
                                        "0"
                                    ],
                                    "xyz": "-x,-y,z",
                                    "det": 1,
                                    "is_orthogonal": true
                                }
                            ]
                        },
                        "operation_kind": {
                            "x-optimade-type": "string",
                            "x-optimade-unit": "inapplicable",
                            "type": [
                                "string"
                            ],
                            "enum": [
                                "euclidean"
                            ],
                            "description": "Euclidean-normalizer context when present; this does not change the operation's affine action."
                        },
                        "rot_type": {
                            "x-optimade-type": "string",
                            "x-optimade-unit": "inapplicable",
                            "type": [
                                "string",
                                "null"
                            ],
                            "description": "Symbolic crystallographic operation-type label for the linear part.",
                            "enum": [
                                "1",
                                "-1",
                                "2",
                                "m",
                                "3",
                                "-3",
                                "4",
                                "-4",
                                "6",
                                "-6",
                                null
                            ]
                        },
                        "axis": {
                            "x-optimade-type": "list",
                            "x-optimade-unit": "inapplicable",
                            "x-optimade-dimensions": {
                                "names": [
                                    "dim_lattice"
                                ],
                                "sizes": [
                                    3
                                ]
                            },
                            "type": [
                                "array",
                                "null"
                            ],
                            "description": "Integer-vector axis or invariant-direction descriptor for the operation.",
                            "items": {
                                "x-optimade-type": "integer",
                                "x-optimade-unit": "inapplicable",
                                "type": [
                                    "integer"
                                ],
                                "description": "One integer component of the axis vector."
                            }
                        },
                        "sense": {
                            "x-optimade-type": "integer",
                            "x-optimade-unit": "inapplicable",
                            "type": [
                                "integer",
                                "null"
                            ],
                            "description": "Rotation sense/sign convention returned by the generator; zero for identity, inversion, twofold rotation, and mirror operations.",
                            "enum": [
                                -1,
                                0,
                                1,
                                null
                            ]
                        },
                        "screw_glide": {
                            "x-optimade-type": "list",
                            "x-optimade-unit": "inapplicable",
                            "x-optimade-dimensions": {
                                "names": [
                                    "dim_lattice"
                                ],
                                "sizes": [
                                    3
                                ]
                            },
                            "type": [
                                "array",
                                "null"
                            ],
                            "description": "Screw-axis or glide-plane component represented exactly as a list of fraction strings.",
                            "items": {
                                "$id": "https://schemas.httk.org/defs/v0.1/properties/core/fraction",
                                "title": "Fraction",
                                "x-optimade-type": "string",
                                "x-optimade-definition": {
                                    "label": "fraction_core",
                                    "kind": "property",
                                    "version": "0.1.0",
                                    "format": "1.3",
                                    "name": "fraction"
                                },
                                "type": [
                                    "string",
                                    "null"
                                ],
                                "description": "A numerical representation formed as the quotient of two numbers represented as a string.",
                                "examples": [
                                    "2/3",
                                    "5/42",
                                    "10",
                                    "0"
                                ],
                                "x-optimade-unit": "inapplicable"
                            }
                        },
                        "origin_shift": {
                            "x-optimade-type": "list",
                            "x-optimade-unit": "inapplicable",
                            "x-optimade-dimensions": {
                                "names": [
                                    "dim_lattice"
                                ],
                                "sizes": [
                                    3
                                ]
                            },
                            "type": [
                                "array",
                                "null"
                            ],
                            "description": "Origin-shift descriptor represented exactly as a list of fraction strings.",
                            "items": {
                                "$id": "https://schemas.httk.org/defs/v0.1/properties/core/fraction",
                                "title": "Fraction",
                                "x-optimade-type": "string",
                                "x-optimade-definition": {
                                    "label": "fraction_core",
                                    "kind": "property",
                                    "version": "0.1.0",
                                    "format": "1.3",
                                    "name": "fraction"
                                },
                                "type": [
                                    "string",
                                    "null"
                                ],
                                "description": "A numerical representation formed as the quotient of two numbers represented as a string.",
                                "examples": [
                                    "2/3",
                                    "5/42",
                                    "10",
                                    "0"
                                ],
                                "x-optimade-unit": "inapplicable"
                            }
                        }
                    },
                    "examples": [
                        {
                            "affine_transformation": {
                                "matrix": [
                                    [
                                        "-1",
                                        "0",
                                        "0"
                                    ],
                                    [
                                        "0",
                                        "-1",
                                        "0"
                                    ],
                                    [
                                        "0",
                                        "0",
                                        "1"
                                    ]
                                ],
                                "vector": [
                                    "0",
                                    "0",
                                    "0"
                                ],
                                "xyz": "-x,-y,z",
                                "det": 1,
                                "is_orthogonal": true
                            },
                            "rot_type": "2",
                            "sense": 0,
                            "axis": [
                                0,
                                0,
                                1
                            ],
                            "screw_glide": [
                                "0",
                                "0",
                                "0"
                            ],
                            "origin_shift": [
                                "0",
                                "0",
                                "0"
                            ]
                        }
                    ]
                },
                "examples": [
                    [
                        {
                            "affine_transformation": {
                                "matrix": [
                                    [
                                        "1",
                                        "0",
                                        "0"
                                    ],
                                    [
                                        "0",
                                        "1",
                                        "0"
                                    ],
                                    [
                                        "0",
                                        "0",
                                        "1"
                                    ]
                                ],
                                "vector": [
                                    "0",
                                    "0",
                                    "0"
                                ],
                                "xyz": "x,y,z"
                            },
                            "rot_type": "1",
                            "sense": 0,
                            "axis": [
                                0,
                                0,
                                0
                            ],
                            "screw_glide": [
                                "0",
                                "0",
                                "0"
                            ],
                            "origin_shift": [
                                "0",
                                "0",
                                "0"
                            ]
                        }
                    ]
                ]
            },
            "symops_mod_centering": {
                "$id": "https://schemas.httk.org/defs/v0.1/properties/spacegroups/symops_mod_centering",
                "x-optimade-requirements": {
                    "support": "may",
                    "sortable": false,
                    "query-support": "none",
                    "response-level": "may"
                },
                "title": "Symmetry operations modulo centering translations",
                "x-optimade-type": "list",
                "x-optimade-definition": {
                    "kind": "property",
                    "version": "0.1.0",
                    "format": "1.3",
                    "name": "symops_mod_centering",
                    "label": "symops_mod_centering_spacegroups"
                },
                "x-optimade-unit": "inapplicable",
                "type": [
                    "array",
                    "null"
                ],
                "description": "Representative symmetry-operation descriptors modulo centering translations.\n\nEach list member is an operation on the format defined by the property definition: https://schemas.httk.org/defs/v0.1/properties/symmetry/op\n\nTwo listed full operations are equivalent here when their matrices agree and their translation vectors differ by a centering translation modulo integer cell translations.\nThere is one representative for each point-group operation, including inversion-related operations.\nFor a space-group record, the list length MUST equal `n_pointgroup_symops`.\nCombining each representative with every `centering_translations` vector and reducing translations modulo integers recovers `symops` as a set.",
                "items": {
                    "$id": "https://schemas.httk.org/defs/v0.1/properties/symmetry/op",
                    "title": "Operation",
                    "x-optimade-type": "dictionary",
                    "x-optimade-definition": {
                        "kind": "property",
                        "version": "0.1.0",
                        "format": "1.3",
                        "name": "op",
                        "label": "op_symmetry"
                    },
                    "x-optimade-unit": "inapplicable",
                    "type": [
                        "object",
                        "null"
                    ],
                    "description": "Information related to a crystallographic operation acting within one coordinate setting.\n\nRepresents an affine_transformation that is a crystallographic operation within one setting.\nThe affine map itself is stored in the embedded `affine_transformation` field.\nThe remaining fields classify the operation crystallographically, for example by rotation type, axis, sense, and screw or glide component.\n\n**Requirements/Conventions**:\n\n- It MUST be a dictionary with the following keys:\n\n    - **affine\\_transformation**: REQUIRED; Dictionary.\n      Exact affine map for the operation.\n      It MUST follow `/defs/v0.1/properties/symmetry/affine_transformation`.\n\n    - **operation\\_kind**: OPTIONAL; String.\n      The value `euclidean` identifies an operation emitted within a Euclidean-normalizer table; ordinary point-group and space-group operation records omit it.\n\n    - **rot\\_type**: OPTIONAL; String.\n      Crystallographic operation-type label for the linear part.\n\n    - **axis**: OPTIONAL; List of 3 Integers.\n      Operation axis or invariant direction using the integer-vector convention returned by the generator.\n\n    - **sense**: OPTIONAL; Integer.\n      Rotation sense/sign convention returned by the generator; `0` is used when no handed rotation sense is applicable.\n\n    - **screw\\_glide**: OPTIONAL; List of 3 Fractions (String).\n      Screw-axis or glide-plane component associated with a space-group affine operation.\n\n    - **origin\\_shift**: OPTIONAL; List of 3 Fractions (String).\n      Origin shift associated with the screw/glide decomposition of a space-group affine operation.\n\n- Whether the operation is proper follows from the sign of the `det` field of `affine_transformation`; no separate properness flag is stored.\n\nWriting the affine part as `(W,w)`, the intrinsic translation `screw_glide = v` is defined by `(W,w)^n = (I,n*v)`, where `n` is the order of `W`.\nThe reported `origin_shift = q` satisfies `(I-W)*q = w-v`; moving the coordinate origin to `q` leaves the intrinsic translation `v`.\nIt locates the symmetry element and is not a second translation to add to `w`.\nFor a proper rotation, `axis` is the integer direction fixed by `W`; for a rotoinversion it is the rotation axis fixed by `-W`, hence for a mirror it is the plane-normal direction.\nThese are direct-lattice direction components, not Cartesian unit vectors or reciprocal-plane indices.\nThe identity and inversion use `[0,0,0]` because neither has a unique axis.\nThe signed `sense` follows cctbx's rotation/rotoinversion convention about that reported axis; converting a rotoinversion to a Schoenflies rotation-reflection symbol can reverse the rotation sense.",
                    "properties": {
                        "affine_transformation": {
                            "$id": "https://schemas.httk.org/defs/v0.1/properties/symmetry/affine_transformation",
                            "title": "Affine transformation",
                            "x-optimade-type": "dictionary",
                            "x-optimade-definition": {
                                "kind": "property",
                                "version": "0.1.0",
                                "format": "1.3",
                                "name": "affine_transformation",
                                "label": "affine_transformation_symmetry"
                            },
                            "x-optimade-unit": "inapplicable",
                            "type": [
                                "object",
                                "null"
                            ],
                            "description": "An affine transformation acting on fractional crystallographic coordinates.\n\nAn invertible affine transformation preserves collinearity and parallelism, but need not preserve Euclidean distances or angles.\nA singular affine map can collapse a line or plane to a lower-dimensional image.\nThe transformation is represented by a 3 by 3 matrix and a 3-vector, both serialized with exact string entries.\nWith column vectors, the map is `u_out = matrix * u_in + vector`; matrix rows specify the three output components.\nThe containing property identifies whether `u_in` denotes fractional coordinates or abstract Wyckoff parameters and identifies the input and output settings.\nNo wrapping modulo lattice translations is implicit in this equation; apply any required periodic reduction only in the specified output setting.\nThe transformation may, for example, represent an operation within one setting, a setting transform, a subgroup embedding, a normalizer representative, or a parametric coordinate map for a Wyckoff-position orbit representative.\nWhen used as a parametric coordinate map, the matrix may be singular because special Wyckoff positions can constrain or identify parameters.\n\n**Requirements/Conventions**:\n\n- It MUST be a dictionary with the following keys:\n\n    - **matrix**: REQUIRED; Exact 3x3 matrix.\n      Matrix part of the affine transformation.\n      It MUST be represented as a list of three row lists, each containing three exact rational entries represented as strings.\n\n    - **vector**: REQUIRED; List of 3 Fractions (String).\n      Translation or origin-shift vector of the affine transformation in fractional coordinates.\n\n    - **xyz**: OPTIONAL; String.\n      Coordinate expression for the affine transformation in `x,y,z` notation when available.\n      It MUST express the same affine map as `matrix` and `vector`, using `x,y,z` for the input components.\n\n    - **det**: OPTIONAL; Integer.\n      Determinant of `matrix` when the generator emits it.\n\n    - **is\\_orthogonal**: OPTIONAL; Boolean.\n      Whether the linear part preserves the crystallographic metric family specified by the containing setting; this is not a test of the fractional matrix against the Cartesian identity metric.",
                            "properties": {
                                "matrix": {
                                    "x-optimade-type": "list",
                                    "x-optimade-unit": "inapplicable",
                                    "x-optimade-dimensions": {
                                        "names": [
                                            "dim_lattice",
                                            "dim_lattice"
                                        ],
                                        "sizes": [
                                            3,
                                            3
                                        ]
                                    },
                                    "type": [
                                        "array",
                                        "null"
                                    ],
                                    "description": "Exact 3 by 3 matrix part of the affine transformation.",
                                    "items": {
                                        "x-optimade-type": "list",
                                        "x-optimade-unit": "inapplicable",
                                        "x-optimade-dimensions": {
                                            "names": [
                                                "dim_lattice"
                                            ],
                                            "sizes": [
                                                3
                                            ]
                                        },
                                        "type": [
                                            "array"
                                        ],
                                        "description": "One row of the exact 3 by 3 matrix.",
                                        "items": {
                                            "$id": "https://schemas.httk.org/defs/v0.1/properties/core/fraction",
                                            "title": "Fraction",
                                            "x-optimade-type": "string",
                                            "x-optimade-definition": {
                                                "label": "fraction_core",
                                                "kind": "property",
                                                "version": "0.1.0",
                                                "format": "1.3",
                                                "name": "fraction"
                                            },
                                            "type": [
                                                "string",
                                                "null"
                                            ],
                                            "description": "A numerical representation formed as the quotient of two numbers represented as a string.",
                                            "examples": [
                                                "2/3",
                                                "5/42",
                                                "10",
                                                "0"
                                            ],
                                            "x-optimade-unit": "inapplicable"
                                        }
                                    }
                                },
                                "vector": {
                                    "x-optimade-type": "list",
                                    "x-optimade-unit": "inapplicable",
                                    "x-optimade-dimensions": {
                                        "names": [
                                            "dim_lattice"
                                        ],
                                        "sizes": [
                                            3
                                        ]
                                    },
                                    "type": [
                                        "array",
                                        "null"
                                    ],
                                    "description": "Exact fractional-coordinate vector part of the affine transformation.",
                                    "items": {
                                        "$id": "https://schemas.httk.org/defs/v0.1/properties/core/fraction",
                                        "title": "Fraction",
                                        "x-optimade-type": "string",
                                        "x-optimade-definition": {
                                            "label": "fraction_core",
                                            "kind": "property",
                                            "version": "0.1.0",
                                            "format": "1.3",
                                            "name": "fraction"
                                        },
                                        "type": [
                                            "string",
                                            "null"
                                        ],
                                        "description": "A numerical representation formed as the quotient of two numbers represented as a string.",
                                        "examples": [
                                            "2/3",
                                            "5/42",
                                            "10",
                                            "0"
                                        ],
                                        "x-optimade-unit": "inapplicable"
                                    }
                                },
                                "xyz": {
                                    "$id": "https://schemas.httk.org/defs/v0.1/properties/symmetry/op_xyz",
                                    "title": "Operation xyz",
                                    "x-optimade-type": "string",
                                    "x-compatibility": [
                                        "https://schemas.optimade.org/defs/v1.2/properties/optimade/common/symmetry_operation_xyz",
                                        "https://www.iucr.org/__data/iucr/cifdic_html/2/cif_sym.dic/Ispace_group_symop.operation_xyz.html"
                                    ],
                                    "x-optimade-definition": {
                                        "kind": "property",
                                        "version": "0.1.0",
                                        "format": "1.3",
                                        "name": "op_xyz",
                                        "label": "op_xyz_symmetry"
                                    },
                                    "x-optimade-unit": "inapplicable",
                                    "type": [
                                        "string",
                                        "null"
                                    ],
                                    "description": "Coordinate operation expressed in the algebraic xyz form, also known as Jones' faithful representation (Bradley & Cracknell, 1972: pp. 35-37; adapted for computer strings).\n\nThe following definition is adapted from (and meant to be compatible with) the IUCr symCIF version 1.0.1 dictionary definition of `_space_group_symop.operation_xyz` referenced to: International Tables for Crystallography (2002). Volume A, Space-group symmetry, edited by Th. Hahn, 5th. ed. (Kluwer Academic Publishers).\nIt is available at: https://www.iucr.org/__data/iucr/cifdic_html/2/cif_sym.dic/Ispace_group_symop.operation_xyz.html\n\nIf W is a matrix representation of the rotational part of the symmetry operation defined by the positions and signs of x, y and z, and w is a column of translations defined by the fractions, an equivalent position X' is generated from a given position X by the equation: X' = WX + w.",
                                    "x-undef-pattern": "^([-+]?[xyz]([-+][xyz])?([-+](1/2|[12]/3|[1-3]/4|[1-5]/6))?|[-+]?(1/2|[12]/3|[1-3]/4|[1-5]/6)([-+][xyz]([-+][xyz])?)?),([-+]?[xyz]([-+][xyz])?([-+](1/2|[12]/3|[1-3]/4|[1-5]/6))?|[-+]?(1/2|[12]/3|[1-3]/4|[1-5]/6)([-+][xyz]([-+][xyz])?)?),([-+]?[xyz]([-+][xyz])?([-+](1/2|[12]/3|[1-3]/4|[1-5]/6))?|[-+]?(1/2|[12]/3|[1-3]/4|[1-5]/6)([-+][xyz]([-+][xyz])?)?)$",
                                    "examples": [
                                        "-x,-y,z",
                                        "x,1/2-y,1/2+z"
                                    ]
                                },
                                "det": {
                                    "x-optimade-type": "integer",
                                    "x-optimade-unit": "inapplicable",
                                    "type": [
                                        "integer",
                                        "null"
                                    ],
                                    "description": "Determinant of the matrix part when emitted by the generator.\nThis optional integer annotation MUST equal the exact determinant of `matrix`; its absence does not imply determinant one.\nRational matrices can have noninteger determinants, in which case this integer annotation is omitted."
                                },
                                "is_orthogonal": {
                                    "x-optimade-type": "boolean",
                                    "x-optimade-unit": "inapplicable",
                                    "type": [
                                        "boolean",
                                        "null"
                                    ],
                                    "description": "Whether the matrix part is an isometry of the setting's metric, i.e. it preserves every metric tensor of the setting's crystal family expressed in this basis.\nFor a same-setting matrix `M` and metric tensor `g`, the criterion is `M^T g M = g` for every positive-definite metric in that family.\nThis is orthogonality with respect to the actual (generally non-Cartesian) lattice metric, not orthogonality of the matrix as a plain array: hexagonal sixfold rotations are isometries, whereas a cell-enlarging transform is not."
                                }
                            },
                            "examples": [
                                {
                                    "matrix": [
                                        [
                                            "-1",
                                            "0",
                                            "0"
                                        ],
                                        [
                                            "0",
                                            "-1",
                                            "0"
                                        ],
                                        [
                                            "0",
                                            "0",
                                            "1"
                                        ]
                                    ],
                                    "vector": [
                                        "0",
                                        "0",
                                        "0"
                                    ],
                                    "xyz": "-x,-y,z",
                                    "det": 1,
                                    "is_orthogonal": true
                                }
                            ]
                        },
                        "operation_kind": {
                            "x-optimade-type": "string",
                            "x-optimade-unit": "inapplicable",
                            "type": [
                                "string"
                            ],
                            "enum": [
                                "euclidean"
                            ],
                            "description": "Euclidean-normalizer context when present; this does not change the operation's affine action."
                        },
                        "rot_type": {
                            "x-optimade-type": "string",
                            "x-optimade-unit": "inapplicable",
                            "type": [
                                "string",
                                "null"
                            ],
                            "description": "Symbolic crystallographic operation-type label for the linear part.",
                            "enum": [
                                "1",
                                "-1",
                                "2",
                                "m",
                                "3",
                                "-3",
                                "4",
                                "-4",
                                "6",
                                "-6",
                                null
                            ]
                        },
                        "axis": {
                            "x-optimade-type": "list",
                            "x-optimade-unit": "inapplicable",
                            "x-optimade-dimensions": {
                                "names": [
                                    "dim_lattice"
                                ],
                                "sizes": [
                                    3
                                ]
                            },
                            "type": [
                                "array",
                                "null"
                            ],
                            "description": "Integer-vector axis or invariant-direction descriptor for the operation.",
                            "items": {
                                "x-optimade-type": "integer",
                                "x-optimade-unit": "inapplicable",
                                "type": [
                                    "integer"
                                ],
                                "description": "One integer component of the axis vector."
                            }
                        },
                        "sense": {
                            "x-optimade-type": "integer",
                            "x-optimade-unit": "inapplicable",
                            "type": [
                                "integer",
                                "null"
                            ],
                            "description": "Rotation sense/sign convention returned by the generator; zero for identity, inversion, twofold rotation, and mirror operations.",
                            "enum": [
                                -1,
                                0,
                                1,
                                null
                            ]
                        },
                        "screw_glide": {
                            "x-optimade-type": "list",
                            "x-optimade-unit": "inapplicable",
                            "x-optimade-dimensions": {
                                "names": [
                                    "dim_lattice"
                                ],
                                "sizes": [
                                    3
                                ]
                            },
                            "type": [
                                "array",
                                "null"
                            ],
                            "description": "Screw-axis or glide-plane component represented exactly as a list of fraction strings.",
                            "items": {
                                "$id": "https://schemas.httk.org/defs/v0.1/properties/core/fraction",
                                "title": "Fraction",
                                "x-optimade-type": "string",
                                "x-optimade-definition": {
                                    "label": "fraction_core",
                                    "kind": "property",
                                    "version": "0.1.0",
                                    "format": "1.3",
                                    "name": "fraction"
                                },
                                "type": [
                                    "string",
                                    "null"
                                ],
                                "description": "A numerical representation formed as the quotient of two numbers represented as a string.",
                                "examples": [
                                    "2/3",
                                    "5/42",
                                    "10",
                                    "0"
                                ],
                                "x-optimade-unit": "inapplicable"
                            }
                        },
                        "origin_shift": {
                            "x-optimade-type": "list",
                            "x-optimade-unit": "inapplicable",
                            "x-optimade-dimensions": {
                                "names": [
                                    "dim_lattice"
                                ],
                                "sizes": [
                                    3
                                ]
                            },
                            "type": [
                                "array",
                                "null"
                            ],
                            "description": "Origin-shift descriptor represented exactly as a list of fraction strings.",
                            "items": {
                                "$id": "https://schemas.httk.org/defs/v0.1/properties/core/fraction",
                                "title": "Fraction",
                                "x-optimade-type": "string",
                                "x-optimade-definition": {
                                    "label": "fraction_core",
                                    "kind": "property",
                                    "version": "0.1.0",
                                    "format": "1.3",
                                    "name": "fraction"
                                },
                                "type": [
                                    "string",
                                    "null"
                                ],
                                "description": "A numerical representation formed as the quotient of two numbers represented as a string.",
                                "examples": [
                                    "2/3",
                                    "5/42",
                                    "10",
                                    "0"
                                ],
                                "x-optimade-unit": "inapplicable"
                            }
                        }
                    },
                    "examples": [
                        {
                            "affine_transformation": {
                                "matrix": [
                                    [
                                        "-1",
                                        "0",
                                        "0"
                                    ],
                                    [
                                        "0",
                                        "-1",
                                        "0"
                                    ],
                                    [
                                        "0",
                                        "0",
                                        "1"
                                    ]
                                ],
                                "vector": [
                                    "0",
                                    "0",
                                    "0"
                                ],
                                "xyz": "-x,-y,z",
                                "det": 1,
                                "is_orthogonal": true
                            },
                            "rot_type": "2",
                            "sense": 0,
                            "axis": [
                                0,
                                0,
                                1
                            ],
                            "screw_glide": [
                                "0",
                                "0",
                                "0"
                            ],
                            "origin_shift": [
                                "0",
                                "0",
                                "0"
                            ]
                        }
                    ]
                },
                "examples": [
                    [
                        {
                            "affine_transformation": {
                                "matrix": [
                                    [
                                        "1",
                                        "0",
                                        "0"
                                    ],
                                    [
                                        "0",
                                        "1",
                                        "0"
                                    ],
                                    [
                                        "0",
                                        "0",
                                        "1"
                                    ]
                                ],
                                "vector": [
                                    "0",
                                    "0",
                                    "0"
                                ],
                                "xyz": "x,y,z"
                            },
                            "rot_type": "1",
                            "sense": 0,
                            "axis": [
                                0,
                                0,
                                0
                            ],
                            "screw_glide": [
                                "0",
                                "0",
                                "0"
                            ],
                            "origin_shift": [
                                "0",
                                "0",
                                "0"
                            ]
                        }
                    ]
                ]
            },
            "symops_generators": {
                "$id": "https://schemas.httk.org/defs/v0.1/properties/spacegroups/symops_generators",
                "x-optimade-requirements": {
                    "support": "may",
                    "sortable": false,
                    "query-support": "none",
                    "response-level": "may"
                },
                "title": "Symmetry operation generators",
                "x-optimade-type": "list",
                "x-optimade-definition": {
                    "kind": "property",
                    "version": "0.1.0",
                    "format": "1.3",
                    "name": "symops_generators",
                    "label": "symops_generators_spacegroups"
                },
                "x-optimade-unit": "inapplicable",
                "type": [
                    "array",
                    "null"
                ],
                "description": "Generator subset of the finite symmetry-operation list for a space-group setting.\nComposition of these operations, with translations reduced modulo integer cell translations, generates `symops`, including the centering translations.\nInteger cell translations are implicit generators of the infinite space group.\nThe generator selects operations greedily; the list is not promised to have the smallest possible cardinality.\nIdentity is omitted, so the P1 list is empty.\n\nEach list member is an operation on the format defined by the property definition: https://schemas.httk.org/defs/v0.1/properties/symmetry/op",
                "items": {
                    "$id": "https://schemas.httk.org/defs/v0.1/properties/symmetry/op",
                    "title": "Operation",
                    "x-optimade-type": "dictionary",
                    "x-optimade-definition": {
                        "kind": "property",
                        "version": "0.1.0",
                        "format": "1.3",
                        "name": "op",
                        "label": "op_symmetry"
                    },
                    "x-optimade-unit": "inapplicable",
                    "type": [
                        "object",
                        "null"
                    ],
                    "description": "Information related to a crystallographic operation acting within one coordinate setting.\n\nRepresents an affine_transformation that is a crystallographic operation within one setting.\nThe affine map itself is stored in the embedded `affine_transformation` field.\nThe remaining fields classify the operation crystallographically, for example by rotation type, axis, sense, and screw or glide component.\n\n**Requirements/Conventions**:\n\n- It MUST be a dictionary with the following keys:\n\n    - **affine\\_transformation**: REQUIRED; Dictionary.\n      Exact affine map for the operation.\n      It MUST follow `/defs/v0.1/properties/symmetry/affine_transformation`.\n\n    - **operation\\_kind**: OPTIONAL; String.\n      The value `euclidean` identifies an operation emitted within a Euclidean-normalizer table; ordinary point-group and space-group operation records omit it.\n\n    - **rot\\_type**: OPTIONAL; String.\n      Crystallographic operation-type label for the linear part.\n\n    - **axis**: OPTIONAL; List of 3 Integers.\n      Operation axis or invariant direction using the integer-vector convention returned by the generator.\n\n    - **sense**: OPTIONAL; Integer.\n      Rotation sense/sign convention returned by the generator; `0` is used when no handed rotation sense is applicable.\n\n    - **screw\\_glide**: OPTIONAL; List of 3 Fractions (String).\n      Screw-axis or glide-plane component associated with a space-group affine operation.\n\n    - **origin\\_shift**: OPTIONAL; List of 3 Fractions (String).\n      Origin shift associated with the screw/glide decomposition of a space-group affine operation.\n\n- Whether the operation is proper follows from the sign of the `det` field of `affine_transformation`; no separate properness flag is stored.\n\nWriting the affine part as `(W,w)`, the intrinsic translation `screw_glide = v` is defined by `(W,w)^n = (I,n*v)`, where `n` is the order of `W`.\nThe reported `origin_shift = q` satisfies `(I-W)*q = w-v`; moving the coordinate origin to `q` leaves the intrinsic translation `v`.\nIt locates the symmetry element and is not a second translation to add to `w`.\nFor a proper rotation, `axis` is the integer direction fixed by `W`; for a rotoinversion it is the rotation axis fixed by `-W`, hence for a mirror it is the plane-normal direction.\nThese are direct-lattice direction components, not Cartesian unit vectors or reciprocal-plane indices.\nThe identity and inversion use `[0,0,0]` because neither has a unique axis.\nThe signed `sense` follows cctbx's rotation/rotoinversion convention about that reported axis; converting a rotoinversion to a Schoenflies rotation-reflection symbol can reverse the rotation sense.",
                    "properties": {
                        "affine_transformation": {
                            "$id": "https://schemas.httk.org/defs/v0.1/properties/symmetry/affine_transformation",
                            "title": "Affine transformation",
                            "x-optimade-type": "dictionary",
                            "x-optimade-definition": {
                                "kind": "property",
                                "version": "0.1.0",
                                "format": "1.3",
                                "name": "affine_transformation",
                                "label": "affine_transformation_symmetry"
                            },
                            "x-optimade-unit": "inapplicable",
                            "type": [
                                "object",
                                "null"
                            ],
                            "description": "An affine transformation acting on fractional crystallographic coordinates.\n\nAn invertible affine transformation preserves collinearity and parallelism, but need not preserve Euclidean distances or angles.\nA singular affine map can collapse a line or plane to a lower-dimensional image.\nThe transformation is represented by a 3 by 3 matrix and a 3-vector, both serialized with exact string entries.\nWith column vectors, the map is `u_out = matrix * u_in + vector`; matrix rows specify the three output components.\nThe containing property identifies whether `u_in` denotes fractional coordinates or abstract Wyckoff parameters and identifies the input and output settings.\nNo wrapping modulo lattice translations is implicit in this equation; apply any required periodic reduction only in the specified output setting.\nThe transformation may, for example, represent an operation within one setting, a setting transform, a subgroup embedding, a normalizer representative, or a parametric coordinate map for a Wyckoff-position orbit representative.\nWhen used as a parametric coordinate map, the matrix may be singular because special Wyckoff positions can constrain or identify parameters.\n\n**Requirements/Conventions**:\n\n- It MUST be a dictionary with the following keys:\n\n    - **matrix**: REQUIRED; Exact 3x3 matrix.\n      Matrix part of the affine transformation.\n      It MUST be represented as a list of three row lists, each containing three exact rational entries represented as strings.\n\n    - **vector**: REQUIRED; List of 3 Fractions (String).\n      Translation or origin-shift vector of the affine transformation in fractional coordinates.\n\n    - **xyz**: OPTIONAL; String.\n      Coordinate expression for the affine transformation in `x,y,z` notation when available.\n      It MUST express the same affine map as `matrix` and `vector`, using `x,y,z` for the input components.\n\n    - **det**: OPTIONAL; Integer.\n      Determinant of `matrix` when the generator emits it.\n\n    - **is\\_orthogonal**: OPTIONAL; Boolean.\n      Whether the linear part preserves the crystallographic metric family specified by the containing setting; this is not a test of the fractional matrix against the Cartesian identity metric.",
                            "properties": {
                                "matrix": {
                                    "x-optimade-type": "list",
                                    "x-optimade-unit": "inapplicable",
                                    "x-optimade-dimensions": {
                                        "names": [
                                            "dim_lattice",
                                            "dim_lattice"
                                        ],
                                        "sizes": [
                                            3,
                                            3
                                        ]
                                    },
                                    "type": [
                                        "array",
                                        "null"
                                    ],
                                    "description": "Exact 3 by 3 matrix part of the affine transformation.",
                                    "items": {
                                        "x-optimade-type": "list",
                                        "x-optimade-unit": "inapplicable",
                                        "x-optimade-dimensions": {
                                            "names": [
                                                "dim_lattice"
                                            ],
                                            "sizes": [
                                                3
                                            ]
                                        },
                                        "type": [
                                            "array"
                                        ],
                                        "description": "One row of the exact 3 by 3 matrix.",
                                        "items": {
                                            "$id": "https://schemas.httk.org/defs/v0.1/properties/core/fraction",
                                            "title": "Fraction",
                                            "x-optimade-type": "string",
                                            "x-optimade-definition": {
                                                "label": "fraction_core",
                                                "kind": "property",
                                                "version": "0.1.0",
                                                "format": "1.3",
                                                "name": "fraction"
                                            },
                                            "type": [
                                                "string",
                                                "null"
                                            ],
                                            "description": "A numerical representation formed as the quotient of two numbers represented as a string.",
                                            "examples": [
                                                "2/3",
                                                "5/42",
                                                "10",
                                                "0"
                                            ],
                                            "x-optimade-unit": "inapplicable"
                                        }
                                    }
                                },
                                "vector": {
                                    "x-optimade-type": "list",
                                    "x-optimade-unit": "inapplicable",
                                    "x-optimade-dimensions": {
                                        "names": [
                                            "dim_lattice"
                                        ],
                                        "sizes": [
                                            3
                                        ]
                                    },
                                    "type": [
                                        "array",
                                        "null"
                                    ],
                                    "description": "Exact fractional-coordinate vector part of the affine transformation.",
                                    "items": {
                                        "$id": "https://schemas.httk.org/defs/v0.1/properties/core/fraction",
                                        "title": "Fraction",
                                        "x-optimade-type": "string",
                                        "x-optimade-definition": {
                                            "label": "fraction_core",
                                            "kind": "property",
                                            "version": "0.1.0",
                                            "format": "1.3",
                                            "name": "fraction"
                                        },
                                        "type": [
                                            "string",
                                            "null"
                                        ],
                                        "description": "A numerical representation formed as the quotient of two numbers represented as a string.",
                                        "examples": [
                                            "2/3",
                                            "5/42",
                                            "10",
                                            "0"
                                        ],
                                        "x-optimade-unit": "inapplicable"
                                    }
                                },
                                "xyz": {
                                    "$id": "https://schemas.httk.org/defs/v0.1/properties/symmetry/op_xyz",
                                    "title": "Operation xyz",
                                    "x-optimade-type": "string",
                                    "x-compatibility": [
                                        "https://schemas.optimade.org/defs/v1.2/properties/optimade/common/symmetry_operation_xyz",
                                        "https://www.iucr.org/__data/iucr/cifdic_html/2/cif_sym.dic/Ispace_group_symop.operation_xyz.html"
                                    ],
                                    "x-optimade-definition": {
                                        "kind": "property",
                                        "version": "0.1.0",
                                        "format": "1.3",
                                        "name": "op_xyz",
                                        "label": "op_xyz_symmetry"
                                    },
                                    "x-optimade-unit": "inapplicable",
                                    "type": [
                                        "string",
                                        "null"
                                    ],
                                    "description": "Coordinate operation expressed in the algebraic xyz form, also known as Jones' faithful representation (Bradley & Cracknell, 1972: pp. 35-37; adapted for computer strings).\n\nThe following definition is adapted from (and meant to be compatible with) the IUCr symCIF version 1.0.1 dictionary definition of `_space_group_symop.operation_xyz` referenced to: International Tables for Crystallography (2002). Volume A, Space-group symmetry, edited by Th. Hahn, 5th. ed. (Kluwer Academic Publishers).\nIt is available at: https://www.iucr.org/__data/iucr/cifdic_html/2/cif_sym.dic/Ispace_group_symop.operation_xyz.html\n\nIf W is a matrix representation of the rotational part of the symmetry operation defined by the positions and signs of x, y and z, and w is a column of translations defined by the fractions, an equivalent position X' is generated from a given position X by the equation: X' = WX + w.",
                                    "x-undef-pattern": "^([-+]?[xyz]([-+][xyz])?([-+](1/2|[12]/3|[1-3]/4|[1-5]/6))?|[-+]?(1/2|[12]/3|[1-3]/4|[1-5]/6)([-+][xyz]([-+][xyz])?)?),([-+]?[xyz]([-+][xyz])?([-+](1/2|[12]/3|[1-3]/4|[1-5]/6))?|[-+]?(1/2|[12]/3|[1-3]/4|[1-5]/6)([-+][xyz]([-+][xyz])?)?),([-+]?[xyz]([-+][xyz])?([-+](1/2|[12]/3|[1-3]/4|[1-5]/6))?|[-+]?(1/2|[12]/3|[1-3]/4|[1-5]/6)([-+][xyz]([-+][xyz])?)?)$",
                                    "examples": [
                                        "-x,-y,z",
                                        "x,1/2-y,1/2+z"
                                    ]
                                },
                                "det": {
                                    "x-optimade-type": "integer",
                                    "x-optimade-unit": "inapplicable",
                                    "type": [
                                        "integer",
                                        "null"
                                    ],
                                    "description": "Determinant of the matrix part when emitted by the generator.\nThis optional integer annotation MUST equal the exact determinant of `matrix`; its absence does not imply determinant one.\nRational matrices can have noninteger determinants, in which case this integer annotation is omitted."
                                },
                                "is_orthogonal": {
                                    "x-optimade-type": "boolean",
                                    "x-optimade-unit": "inapplicable",
                                    "type": [
                                        "boolean",
                                        "null"
                                    ],
                                    "description": "Whether the matrix part is an isometry of the setting's metric, i.e. it preserves every metric tensor of the setting's crystal family expressed in this basis.\nFor a same-setting matrix `M` and metric tensor `g`, the criterion is `M^T g M = g` for every positive-definite metric in that family.\nThis is orthogonality with respect to the actual (generally non-Cartesian) lattice metric, not orthogonality of the matrix as a plain array: hexagonal sixfold rotations are isometries, whereas a cell-enlarging transform is not."
                                }
                            },
                            "examples": [
                                {
                                    "matrix": [
                                        [
                                            "-1",
                                            "0",
                                            "0"
                                        ],
                                        [
                                            "0",
                                            "-1",
                                            "0"
                                        ],
                                        [
                                            "0",
                                            "0",
                                            "1"
                                        ]
                                    ],
                                    "vector": [
                                        "0",
                                        "0",
                                        "0"
                                    ],
                                    "xyz": "-x,-y,z",
                                    "det": 1,
                                    "is_orthogonal": true
                                }
                            ]
                        },
                        "operation_kind": {
                            "x-optimade-type": "string",
                            "x-optimade-unit": "inapplicable",
                            "type": [
                                "string"
                            ],
                            "enum": [
                                "euclidean"
                            ],
                            "description": "Euclidean-normalizer context when present; this does not change the operation's affine action."
                        },
                        "rot_type": {
                            "x-optimade-type": "string",
                            "x-optimade-unit": "inapplicable",
                            "type": [
                                "string",
                                "null"
                            ],
                            "description": "Symbolic crystallographic operation-type label for the linear part.",
                            "enum": [
                                "1",
                                "-1",
                                "2",
                                "m",
                                "3",
                                "-3",
                                "4",
                                "-4",
                                "6",
                                "-6",
                                null
                            ]
                        },
                        "axis": {
                            "x-optimade-type": "list",
                            "x-optimade-unit": "inapplicable",
                            "x-optimade-dimensions": {
                                "names": [
                                    "dim_lattice"
                                ],
                                "sizes": [
                                    3
                                ]
                            },
                            "type": [
                                "array",
                                "null"
                            ],
                            "description": "Integer-vector axis or invariant-direction descriptor for the operation.",
                            "items": {
                                "x-optimade-type": "integer",
                                "x-optimade-unit": "inapplicable",
                                "type": [
                                    "integer"
                                ],
                                "description": "One integer component of the axis vector."
                            }
                        },
                        "sense": {
                            "x-optimade-type": "integer",
                            "x-optimade-unit": "inapplicable",
                            "type": [
                                "integer",
                                "null"
                            ],
                            "description": "Rotation sense/sign convention returned by the generator; zero for identity, inversion, twofold rotation, and mirror operations.",
                            "enum": [
                                -1,
                                0,
                                1,
                                null
                            ]
                        },
                        "screw_glide": {
                            "x-optimade-type": "list",
                            "x-optimade-unit": "inapplicable",
                            "x-optimade-dimensions": {
                                "names": [
                                    "dim_lattice"
                                ],
                                "sizes": [
                                    3
                                ]
                            },
                            "type": [
                                "array",
                                "null"
                            ],
                            "description": "Screw-axis or glide-plane component represented exactly as a list of fraction strings.",
                            "items": {
                                "$id": "https://schemas.httk.org/defs/v0.1/properties/core/fraction",
                                "title": "Fraction",
                                "x-optimade-type": "string",
                                "x-optimade-definition": {
                                    "label": "fraction_core",
                                    "kind": "property",
                                    "version": "0.1.0",
                                    "format": "1.3",
                                    "name": "fraction"
                                },
                                "type": [
                                    "string",
                                    "null"
                                ],
                                "description": "A numerical representation formed as the quotient of two numbers represented as a string.",
                                "examples": [
                                    "2/3",
                                    "5/42",
                                    "10",
                                    "0"
                                ],
                                "x-optimade-unit": "inapplicable"
                            }
                        },
                        "origin_shift": {
                            "x-optimade-type": "list",
                            "x-optimade-unit": "inapplicable",
                            "x-optimade-dimensions": {
                                "names": [
                                    "dim_lattice"
                                ],
                                "sizes": [
                                    3
                                ]
                            },
                            "type": [
                                "array",
                                "null"
                            ],
                            "description": "Origin-shift descriptor represented exactly as a list of fraction strings.",
                            "items": {
                                "$id": "https://schemas.httk.org/defs/v0.1/properties/core/fraction",
                                "title": "Fraction",
                                "x-optimade-type": "string",
                                "x-optimade-definition": {
                                    "label": "fraction_core",
                                    "kind": "property",
                                    "version": "0.1.0",
                                    "format": "1.3",
                                    "name": "fraction"
                                },
                                "type": [
                                    "string",
                                    "null"
                                ],
                                "description": "A numerical representation formed as the quotient of two numbers represented as a string.",
                                "examples": [
                                    "2/3",
                                    "5/42",
                                    "10",
                                    "0"
                                ],
                                "x-optimade-unit": "inapplicable"
                            }
                        }
                    },
                    "examples": [
                        {
                            "affine_transformation": {
                                "matrix": [
                                    [
                                        "-1",
                                        "0",
                                        "0"
                                    ],
                                    [
                                        "0",
                                        "-1",
                                        "0"
                                    ],
                                    [
                                        "0",
                                        "0",
                                        "1"
                                    ]
                                ],
                                "vector": [
                                    "0",
                                    "0",
                                    "0"
                                ],
                                "xyz": "-x,-y,z",
                                "det": 1,
                                "is_orthogonal": true
                            },
                            "rot_type": "2",
                            "sense": 0,
                            "axis": [
                                0,
                                0,
                                1
                            ],
                            "screw_glide": [
                                "0",
                                "0",
                                "0"
                            ],
                            "origin_shift": [
                                "0",
                                "0",
                                "0"
                            ]
                        }
                    ]
                },
                "examples": [
                    [],
                    [
                        {
                            "rot_type": "2",
                            "sense": 0,
                            "axis": [
                                0,
                                1,
                                0
                            ],
                            "screw_glide": [
                                "0",
                                "0",
                                "0"
                            ],
                            "origin_shift": [
                                "0",
                                "0",
                                "0"
                            ],
                            "affine_transformation": {
                                "matrix": [
                                    [
                                        "-1",
                                        "0",
                                        "0"
                                    ],
                                    [
                                        "0",
                                        "1",
                                        "0"
                                    ],
                                    [
                                        "0",
                                        "0",
                                        "-1"
                                    ]
                                ],
                                "vector": [
                                    "0",
                                    "0",
                                    "0"
                                ],
                                "xyz": "-x,y,-z",
                                "det": 1,
                                "is_orthogonal": true
                            }
                        }
                    ]
                ]
            },
            "symops_representative": {
                "$id": "https://schemas.httk.org/defs/v0.1/properties/spacegroups/symops_representative",
                "x-optimade-requirements": {
                    "support": "may",
                    "sortable": false,
                    "query-support": "none",
                    "response-level": "may"
                },
                "title": "Representative symmetry operations",
                "x-optimade-type": "list",
                "x-optimade-definition": {
                    "kind": "property",
                    "version": "0.1.0",
                    "format": "1.3",
                    "name": "symops_representative",
                    "label": "symops_representative_spacegroups"
                },
                "x-optimade-unit": "inapplicable",
                "type": [
                    "array",
                    "null"
                ],
                "description": "Representative symmetry-operation descriptors modulo centering translations: one full-group operation (including inversion-related operations where present) per coset of the centring translations.\n\nEach list member is an operation on the format defined by the property definition: https://schemas.httk.org/defs/v0.1/properties/symmetry/op\n\nThis is a convenience copy of `symops_mod_centering` and MUST equal that list, including its order and operation descriptors.\nIt is not cctbx's internal list additionally factored by inversion.",
                "items": {
                    "$id": "https://schemas.httk.org/defs/v0.1/properties/symmetry/op",
                    "title": "Operation",
                    "x-optimade-type": "dictionary",
                    "x-optimade-definition": {
                        "kind": "property",
                        "version": "0.1.0",
                        "format": "1.3",
                        "name": "op",
                        "label": "op_symmetry"
                    },
                    "x-optimade-unit": "inapplicable",
                    "type": [
                        "object",
                        "null"
                    ],
                    "description": "Information related to a crystallographic operation acting within one coordinate setting.\n\nRepresents an affine_transformation that is a crystallographic operation within one setting.\nThe affine map itself is stored in the embedded `affine_transformation` field.\nThe remaining fields classify the operation crystallographically, for example by rotation type, axis, sense, and screw or glide component.\n\n**Requirements/Conventions**:\n\n- It MUST be a dictionary with the following keys:\n\n    - **affine\\_transformation**: REQUIRED; Dictionary.\n      Exact affine map for the operation.\n      It MUST follow `/defs/v0.1/properties/symmetry/affine_transformation`.\n\n    - **operation\\_kind**: OPTIONAL; String.\n      The value `euclidean` identifies an operation emitted within a Euclidean-normalizer table; ordinary point-group and space-group operation records omit it.\n\n    - **rot\\_type**: OPTIONAL; String.\n      Crystallographic operation-type label for the linear part.\n\n    - **axis**: OPTIONAL; List of 3 Integers.\n      Operation axis or invariant direction using the integer-vector convention returned by the generator.\n\n    - **sense**: OPTIONAL; Integer.\n      Rotation sense/sign convention returned by the generator; `0` is used when no handed rotation sense is applicable.\n\n    - **screw\\_glide**: OPTIONAL; List of 3 Fractions (String).\n      Screw-axis or glide-plane component associated with a space-group affine operation.\n\n    - **origin\\_shift**: OPTIONAL; List of 3 Fractions (String).\n      Origin shift associated with the screw/glide decomposition of a space-group affine operation.\n\n- Whether the operation is proper follows from the sign of the `det` field of `affine_transformation`; no separate properness flag is stored.\n\nWriting the affine part as `(W,w)`, the intrinsic translation `screw_glide = v` is defined by `(W,w)^n = (I,n*v)`, where `n` is the order of `W`.\nThe reported `origin_shift = q` satisfies `(I-W)*q = w-v`; moving the coordinate origin to `q` leaves the intrinsic translation `v`.\nIt locates the symmetry element and is not a second translation to add to `w`.\nFor a proper rotation, `axis` is the integer direction fixed by `W`; for a rotoinversion it is the rotation axis fixed by `-W`, hence for a mirror it is the plane-normal direction.\nThese are direct-lattice direction components, not Cartesian unit vectors or reciprocal-plane indices.\nThe identity and inversion use `[0,0,0]` because neither has a unique axis.\nThe signed `sense` follows cctbx's rotation/rotoinversion convention about that reported axis; converting a rotoinversion to a Schoenflies rotation-reflection symbol can reverse the rotation sense.",
                    "properties": {
                        "affine_transformation": {
                            "$id": "https://schemas.httk.org/defs/v0.1/properties/symmetry/affine_transformation",
                            "title": "Affine transformation",
                            "x-optimade-type": "dictionary",
                            "x-optimade-definition": {
                                "kind": "property",
                                "version": "0.1.0",
                                "format": "1.3",
                                "name": "affine_transformation",
                                "label": "affine_transformation_symmetry"
                            },
                            "x-optimade-unit": "inapplicable",
                            "type": [
                                "object",
                                "null"
                            ],
                            "description": "An affine transformation acting on fractional crystallographic coordinates.\n\nAn invertible affine transformation preserves collinearity and parallelism, but need not preserve Euclidean distances or angles.\nA singular affine map can collapse a line or plane to a lower-dimensional image.\nThe transformation is represented by a 3 by 3 matrix and a 3-vector, both serialized with exact string entries.\nWith column vectors, the map is `u_out = matrix * u_in + vector`; matrix rows specify the three output components.\nThe containing property identifies whether `u_in` denotes fractional coordinates or abstract Wyckoff parameters and identifies the input and output settings.\nNo wrapping modulo lattice translations is implicit in this equation; apply any required periodic reduction only in the specified output setting.\nThe transformation may, for example, represent an operation within one setting, a setting transform, a subgroup embedding, a normalizer representative, or a parametric coordinate map for a Wyckoff-position orbit representative.\nWhen used as a parametric coordinate map, the matrix may be singular because special Wyckoff positions can constrain or identify parameters.\n\n**Requirements/Conventions**:\n\n- It MUST be a dictionary with the following keys:\n\n    - **matrix**: REQUIRED; Exact 3x3 matrix.\n      Matrix part of the affine transformation.\n      It MUST be represented as a list of three row lists, each containing three exact rational entries represented as strings.\n\n    - **vector**: REQUIRED; List of 3 Fractions (String).\n      Translation or origin-shift vector of the affine transformation in fractional coordinates.\n\n    - **xyz**: OPTIONAL; String.\n      Coordinate expression for the affine transformation in `x,y,z` notation when available.\n      It MUST express the same affine map as `matrix` and `vector`, using `x,y,z` for the input components.\n\n    - **det**: OPTIONAL; Integer.\n      Determinant of `matrix` when the generator emits it.\n\n    - **is\\_orthogonal**: OPTIONAL; Boolean.\n      Whether the linear part preserves the crystallographic metric family specified by the containing setting; this is not a test of the fractional matrix against the Cartesian identity metric.",
                            "properties": {
                                "matrix": {
                                    "x-optimade-type": "list",
                                    "x-optimade-unit": "inapplicable",
                                    "x-optimade-dimensions": {
                                        "names": [
                                            "dim_lattice",
                                            "dim_lattice"
                                        ],
                                        "sizes": [
                                            3,
                                            3
                                        ]
                                    },
                                    "type": [
                                        "array",
                                        "null"
                                    ],
                                    "description": "Exact 3 by 3 matrix part of the affine transformation.",
                                    "items": {
                                        "x-optimade-type": "list",
                                        "x-optimade-unit": "inapplicable",
                                        "x-optimade-dimensions": {
                                            "names": [
                                                "dim_lattice"
                                            ],
                                            "sizes": [
                                                3
                                            ]
                                        },
                                        "type": [
                                            "array"
                                        ],
                                        "description": "One row of the exact 3 by 3 matrix.",
                                        "items": {
                                            "$id": "https://schemas.httk.org/defs/v0.1/properties/core/fraction",
                                            "title": "Fraction",
                                            "x-optimade-type": "string",
                                            "x-optimade-definition": {
                                                "label": "fraction_core",
                                                "kind": "property",
                                                "version": "0.1.0",
                                                "format": "1.3",
                                                "name": "fraction"
                                            },
                                            "type": [
                                                "string",
                                                "null"
                                            ],
                                            "description": "A numerical representation formed as the quotient of two numbers represented as a string.",
                                            "examples": [
                                                "2/3",
                                                "5/42",
                                                "10",
                                                "0"
                                            ],
                                            "x-optimade-unit": "inapplicable"
                                        }
                                    }
                                },
                                "vector": {
                                    "x-optimade-type": "list",
                                    "x-optimade-unit": "inapplicable",
                                    "x-optimade-dimensions": {
                                        "names": [
                                            "dim_lattice"
                                        ],
                                        "sizes": [
                                            3
                                        ]
                                    },
                                    "type": [
                                        "array",
                                        "null"
                                    ],
                                    "description": "Exact fractional-coordinate vector part of the affine transformation.",
                                    "items": {
                                        "$id": "https://schemas.httk.org/defs/v0.1/properties/core/fraction",
                                        "title": "Fraction",
                                        "x-optimade-type": "string",
                                        "x-optimade-definition": {
                                            "label": "fraction_core",
                                            "kind": "property",
                                            "version": "0.1.0",
                                            "format": "1.3",
                                            "name": "fraction"
                                        },
                                        "type": [
                                            "string",
                                            "null"
                                        ],
                                        "description": "A numerical representation formed as the quotient of two numbers represented as a string.",
                                        "examples": [
                                            "2/3",
                                            "5/42",
                                            "10",
                                            "0"
                                        ],
                                        "x-optimade-unit": "inapplicable"
                                    }
                                },
                                "xyz": {
                                    "$id": "https://schemas.httk.org/defs/v0.1/properties/symmetry/op_xyz",
                                    "title": "Operation xyz",
                                    "x-optimade-type": "string",
                                    "x-compatibility": [
                                        "https://schemas.optimade.org/defs/v1.2/properties/optimade/common/symmetry_operation_xyz",
                                        "https://www.iucr.org/__data/iucr/cifdic_html/2/cif_sym.dic/Ispace_group_symop.operation_xyz.html"
                                    ],
                                    "x-optimade-definition": {
                                        "kind": "property",
                                        "version": "0.1.0",
                                        "format": "1.3",
                                        "name": "op_xyz",
                                        "label": "op_xyz_symmetry"
                                    },
                                    "x-optimade-unit": "inapplicable",
                                    "type": [
                                        "string",
                                        "null"
                                    ],
                                    "description": "Coordinate operation expressed in the algebraic xyz form, also known as Jones' faithful representation (Bradley & Cracknell, 1972: pp. 35-37; adapted for computer strings).\n\nThe following definition is adapted from (and meant to be compatible with) the IUCr symCIF version 1.0.1 dictionary definition of `_space_group_symop.operation_xyz` referenced to: International Tables for Crystallography (2002). Volume A, Space-group symmetry, edited by Th. Hahn, 5th. ed. (Kluwer Academic Publishers).\nIt is available at: https://www.iucr.org/__data/iucr/cifdic_html/2/cif_sym.dic/Ispace_group_symop.operation_xyz.html\n\nIf W is a matrix representation of the rotational part of the symmetry operation defined by the positions and signs of x, y and z, and w is a column of translations defined by the fractions, an equivalent position X' is generated from a given position X by the equation: X' = WX + w.",
                                    "x-undef-pattern": "^([-+]?[xyz]([-+][xyz])?([-+](1/2|[12]/3|[1-3]/4|[1-5]/6))?|[-+]?(1/2|[12]/3|[1-3]/4|[1-5]/6)([-+][xyz]([-+][xyz])?)?),([-+]?[xyz]([-+][xyz])?([-+](1/2|[12]/3|[1-3]/4|[1-5]/6))?|[-+]?(1/2|[12]/3|[1-3]/4|[1-5]/6)([-+][xyz]([-+][xyz])?)?),([-+]?[xyz]([-+][xyz])?([-+](1/2|[12]/3|[1-3]/4|[1-5]/6))?|[-+]?(1/2|[12]/3|[1-3]/4|[1-5]/6)([-+][xyz]([-+][xyz])?)?)$",
                                    "examples": [
                                        "-x,-y,z",
                                        "x,1/2-y,1/2+z"
                                    ]
                                },
                                "det": {
                                    "x-optimade-type": "integer",
                                    "x-optimade-unit": "inapplicable",
                                    "type": [
                                        "integer",
                                        "null"
                                    ],
                                    "description": "Determinant of the matrix part when emitted by the generator.\nThis optional integer annotation MUST equal the exact determinant of `matrix`; its absence does not imply determinant one.\nRational matrices can have noninteger determinants, in which case this integer annotation is omitted."
                                },
                                "is_orthogonal": {
                                    "x-optimade-type": "boolean",
                                    "x-optimade-unit": "inapplicable",
                                    "type": [
                                        "boolean",
                                        "null"
                                    ],
                                    "description": "Whether the matrix part is an isometry of the setting's metric, i.e. it preserves every metric tensor of the setting's crystal family expressed in this basis.\nFor a same-setting matrix `M` and metric tensor `g`, the criterion is `M^T g M = g` for every positive-definite metric in that family.\nThis is orthogonality with respect to the actual (generally non-Cartesian) lattice metric, not orthogonality of the matrix as a plain array: hexagonal sixfold rotations are isometries, whereas a cell-enlarging transform is not."
                                }
                            },
                            "examples": [
                                {
                                    "matrix": [
                                        [
                                            "-1",
                                            "0",
                                            "0"
                                        ],
                                        [
                                            "0",
                                            "-1",
                                            "0"
                                        ],
                                        [
                                            "0",
                                            "0",
                                            "1"
                                        ]
                                    ],
                                    "vector": [
                                        "0",
                                        "0",
                                        "0"
                                    ],
                                    "xyz": "-x,-y,z",
                                    "det": 1,
                                    "is_orthogonal": true
                                }
                            ]
                        },
                        "operation_kind": {
                            "x-optimade-type": "string",
                            "x-optimade-unit": "inapplicable",
                            "type": [
                                "string"
                            ],
                            "enum": [
                                "euclidean"
                            ],
                            "description": "Euclidean-normalizer context when present; this does not change the operation's affine action."
                        },
                        "rot_type": {
                            "x-optimade-type": "string",
                            "x-optimade-unit": "inapplicable",
                            "type": [
                                "string",
                                "null"
                            ],
                            "description": "Symbolic crystallographic operation-type label for the linear part.",
                            "enum": [
                                "1",
                                "-1",
                                "2",
                                "m",
                                "3",
                                "-3",
                                "4",
                                "-4",
                                "6",
                                "-6",
                                null
                            ]
                        },
                        "axis": {
                            "x-optimade-type": "list",
                            "x-optimade-unit": "inapplicable",
                            "x-optimade-dimensions": {
                                "names": [
                                    "dim_lattice"
                                ],
                                "sizes": [
                                    3
                                ]
                            },
                            "type": [
                                "array",
                                "null"
                            ],
                            "description": "Integer-vector axis or invariant-direction descriptor for the operation.",
                            "items": {
                                "x-optimade-type": "integer",
                                "x-optimade-unit": "inapplicable",
                                "type": [
                                    "integer"
                                ],
                                "description": "One integer component of the axis vector."
                            }
                        },
                        "sense": {
                            "x-optimade-type": "integer",
                            "x-optimade-unit": "inapplicable",
                            "type": [
                                "integer",
                                "null"
                            ],
                            "description": "Rotation sense/sign convention returned by the generator; zero for identity, inversion, twofold rotation, and mirror operations.",
                            "enum": [
                                -1,
                                0,
                                1,
                                null
                            ]
                        },
                        "screw_glide": {
                            "x-optimade-type": "list",
                            "x-optimade-unit": "inapplicable",
                            "x-optimade-dimensions": {
                                "names": [
                                    "dim_lattice"
                                ],
                                "sizes": [
                                    3
                                ]
                            },
                            "type": [
                                "array",
                                "null"
                            ],
                            "description": "Screw-axis or glide-plane component represented exactly as a list of fraction strings.",
                            "items": {
                                "$id": "https://schemas.httk.org/defs/v0.1/properties/core/fraction",
                                "title": "Fraction",
                                "x-optimade-type": "string",
                                "x-optimade-definition": {
                                    "label": "fraction_core",
                                    "kind": "property",
                                    "version": "0.1.0",
                                    "format": "1.3",
                                    "name": "fraction"
                                },
                                "type": [
                                    "string",
                                    "null"
                                ],
                                "description": "A numerical representation formed as the quotient of two numbers represented as a string.",
                                "examples": [
                                    "2/3",
                                    "5/42",
                                    "10",
                                    "0"
                                ],
                                "x-optimade-unit": "inapplicable"
                            }
                        },
                        "origin_shift": {
                            "x-optimade-type": "list",
                            "x-optimade-unit": "inapplicable",
                            "x-optimade-dimensions": {
                                "names": [
                                    "dim_lattice"
                                ],
                                "sizes": [
                                    3
                                ]
                            },
                            "type": [
                                "array",
                                "null"
                            ],
                            "description": "Origin-shift descriptor represented exactly as a list of fraction strings.",
                            "items": {
                                "$id": "https://schemas.httk.org/defs/v0.1/properties/core/fraction",
                                "title": "Fraction",
                                "x-optimade-type": "string",
                                "x-optimade-definition": {
                                    "label": "fraction_core",
                                    "kind": "property",
                                    "version": "0.1.0",
                                    "format": "1.3",
                                    "name": "fraction"
                                },
                                "type": [
                                    "string",
                                    "null"
                                ],
                                "description": "A numerical representation formed as the quotient of two numbers represented as a string.",
                                "examples": [
                                    "2/3",
                                    "5/42",
                                    "10",
                                    "0"
                                ],
                                "x-optimade-unit": "inapplicable"
                            }
                        }
                    },
                    "examples": [
                        {
                            "affine_transformation": {
                                "matrix": [
                                    [
                                        "-1",
                                        "0",
                                        "0"
                                    ],
                                    [
                                        "0",
                                        "-1",
                                        "0"
                                    ],
                                    [
                                        "0",
                                        "0",
                                        "1"
                                    ]
                                ],
                                "vector": [
                                    "0",
                                    "0",
                                    "0"
                                ],
                                "xyz": "-x,-y,z",
                                "det": 1,
                                "is_orthogonal": true
                            },
                            "rot_type": "2",
                            "sense": 0,
                            "axis": [
                                0,
                                0,
                                1
                            ],
                            "screw_glide": [
                                "0",
                                "0",
                                "0"
                            ],
                            "origin_shift": [
                                "0",
                                "0",
                                "0"
                            ]
                        }
                    ]
                },
                "examples": [
                    [
                        {
                            "affine_transformation": {
                                "matrix": [
                                    [
                                        "1",
                                        "0",
                                        "0"
                                    ],
                                    [
                                        "0",
                                        "1",
                                        "0"
                                    ],
                                    [
                                        "0",
                                        "0",
                                        "1"
                                    ]
                                ],
                                "vector": [
                                    "0",
                                    "0",
                                    "0"
                                ],
                                "xyz": "x,y,z"
                            },
                            "rot_type": "1",
                            "sense": 0,
                            "axis": [
                                0,
                                0,
                                0
                            ],
                            "screw_glide": [
                                "0",
                                "0",
                                "0"
                            ],
                            "origin_shift": [
                                "0",
                                "0",
                                "0"
                            ]
                        }
                    ]
                ]
            },
            "wyckoff": {
                "$id": "https://schemas.httk.org/defs/v0.1/properties/spacegroups/wyckoff",
                "x-optimade-requirements": {
                    "support": "may",
                    "sortable": false,
                    "query-support": "none",
                    "response-level": "may"
                },
                "title": "Wyckoff positions",
                "x-optimade-type": "list",
                "x-optimade-definition": {
                    "kind": "property",
                    "version": "0.1.0",
                    "format": "1.3",
                    "name": "wyckoff",
                    "label": "wyckoff_spacegroups"
                },
                "x-optimade-unit": "inapplicable",
                "type": [
                    "array",
                    "null"
                ],
                "description": "Wyckoff-position table for a specific space-group setting.\n\nEach list item describes one Wyckoff position and includes the Wyckoff letter as ordinary data.\nThis list representation avoids using JSON dictionary keys as crystallographic data.\nItems follow `/properties/symmetry/wyckoff_position`.\n\n**Requirements/Conventions**:\n\n- It MUST be a list of dictionaries.\n- Each item MUST include `letter`, identifying the Wyckoff letter for that position in the setting.\n- `orbit` contains the full orbit as affine transformations from Wyckoff-position parameters to fractional coordinates.\n- `orbit_mod_centering` contains one representative modulo centering translations in the same representation.\n\nLetters identify positions only together with the space-group setting; do not join different settings by letter alone.\nThe general position and the special positions use a common fractional coordinate basis, but each position has its own parameterization.\nMultiplicities refer to the stored setting's cell, including rhombohedral-axis cells where applicable.",
                "items": {
                    "$id": "https://schemas.httk.org/defs/v0.1/properties/symmetry/wyckoff_position",
                    "title": "Wyckoff position",
                    "x-optimade-type": "dictionary",
                    "x-optimade-definition": {
                        "kind": "property",
                        "version": "0.1.0",
                        "format": "1.3",
                        "name": "wyckoff_position",
                        "label": "wyckoff_position_symmetry"
                    },
                    "x-optimade-unit": "inapplicable",
                    "type": [
                        "object",
                        "null"
                    ],
                    "description": "Information related to a Wyckoff position in a space-group setting.\n\nA Wyckoff position is a family of point orbits whose site-symmetry subgroups are conjugate within the space group.\nDistinct choices of free parameters generally give distinct orbits belonging to the same Wyckoff position; multiplicity and an unoriented site-symmetry symbol alone need not identify the position uniquely.\nThe property is a dictionary containing information about the multiplicity, oriented site-symmetry symbol, representative coordinate, full orbit, and orbit factorized modulo centering translations.\n\n**Requirements/Conventions**:\n\n- It MUST be a dictionary with the following keys:\n\n    - **letter**: REQUIRED; String.\n      Wyckoff letter for this position in the setting.\n\n    - **multiplicity**: REQUIRED; Integer.\n      Multiplicity of the Wyckoff position in the unit cell of the recorded setting, including its centering translations.\n      It MUST equal the length of `orbit`.\n\n    - **sitesym**: REQUIRED; String.\n      Oriented site-symmetry symbol.\n\n    - **hasfreedom**: REQUIRED; List of booleans.\n      Flags identifying the generator's parameter slots `x`, `y`, and `z` in its Wyckoff parameterization.\n      A repeated parameter in two output coordinates does not represent two independent freedoms.\n\n    - **first\\_orbit\\_ita**: OPTIONAL; String.\n      Source-convention representative retained for comparison with `first_orbit`, including when the two expressions agree.\n\n    - **first\\_orbit**: REQUIRED; String.\n      First representative coordinate expression used by the generator.\n      It MUST equal the `xyz` field of `orbit[0]`.\n\n    - **orbit**: REQUIRED; List.\n      Full orbit as a list of affine transformations from Wyckoff-position parameters to fractional coordinates.\n      The first item is the canonical representative whose degrees of freedom can be chosen to place it inside the asymmetric unit.\n\n    - **orbit\\_mod\\_centering**: REQUIRED; List.\n      Orbit representatives modulo centering translations, represented in the same form as `orbit`.",
                    "properties": {
                        "letter": {
                            "$id": "https://schemas.optimade.org/defs/v1.3/properties/optimade/common/wyckoff_position",
                            "title": "Wyckoff position",
                            "x-optimade-type": "string",
                            "x-optimade-definition": {
                                "label": "wyckoff_position_optimade_common",
                                "kind": "property",
                                "version": "1.3.0",
                                "format": "1.2",
                                "name": "wyckoff_position"
                            },
                            "description": "The Wyckoff symbol for a site.",
                            "x-optimade-unit": "inapplicable",
                            "type": [
                                "string"
                            ],
                            "maxLength": 1,
                            "enum": [
                                "a",
                                "b",
                                "c",
                                "d",
                                "e",
                                "f",
                                "g",
                                "h",
                                "i",
                                "j",
                                "k",
                                "l",
                                "m",
                                "n",
                                "o",
                                "p",
                                "q",
                                "r",
                                "s",
                                "t",
                                "u",
                                "v",
                                "w",
                                "x",
                                "y",
                                "z",
                                "\u03b1"
                            ]
                        },
                        "multiplicity": {
                            "x-optimade-type": "integer",
                            "x-optimade-unit": "inapplicable",
                            "x-compatible": [
                                "https://www.iucr.org/__data/iucr/cifdic_html/3/CORE_DIC/Ispace_group_Wyckoff.multiplicity.html"
                            ],
                            "type": [
                                "integer",
                                "null"
                            ],
                            "description": "Multiplicity of the Wyckoff position in the unit cell of the recorded setting, including its centering translations."
                        },
                        "sitesym": {
                            "x-optimade-type": "string",
                            "x-optimade-unit": "inapplicable",
                            "x-compatible": [
                                "https://www.iucr.org/__data/iucr/cifdic_html/3/CORE_DIC/Ispace_group_Wyckoff.site_symmetry.html"
                            ],
                            "type": [
                                "string",
                                "null"
                            ],
                            "description": "The site-symmetry symbol for the subgroup of the space group that leaves the point fixed.\nThe symmetry direction is determined by the Hermann-Mauguin symbol of the space group, as given in International Tables for Crystallography Volume A, Section 2.2.12 (2006)."
                        },
                        "hasfreedom": {
                            "x-optimade-type": "list",
                            "x-optimade-unit": "inapplicable",
                            "x-optimade-dimensions": {
                                "names": [
                                    "dim_lattice"
                                ],
                                "sizes": [
                                    3
                                ]
                            },
                            "type": [
                                "array",
                                "null"
                            ],
                            "description": "Three booleans identifying the parameter slots `x`, `y`, and `z` introduced when simplifying the source special-position projector.\nThey are not flags for independent motions along the three spatial axes; several output coordinates may depend on the same parameter.\nUse the stored affine maps to determine coordinate dependence and use their matrix rank for the dimension of the parameterized manifold.",
                            "items": {
                                "x-optimade-type": "boolean",
                                "x-optimade-unit": "inapplicable",
                                "type": [
                                    "boolean"
                                ],
                                "description": "Whether the corresponding parameter slot is used by the source parameterization."
                            }
                        },
                        "first_orbit_ita": {
                            "x-optimade-type": "string",
                            "x-optimade-unit": "inapplicable",
                            "type": [
                                "string",
                                "null"
                            ],
                            "description": "Representative coordinate expression following the source convention in the International Tables of Crystallography Volume A (2006), before selection of the ASU-intersecting orbit member.\nIt may equal `first_orbit`; its parameter and letter conventions include the generator's documented editorial choices."
                        },
                        "first_orbit": {
                            "x-optimade-type": "string",
                            "x-optimade-unit": "inapplicable",
                            "type": [
                                "string",
                                "null"
                            ],
                            "description": "Representative coordinate expression for the Wyckoff position chosen such that the degrees of freedom can be chosen to place it inside the asymmetric unit obtained from cctbx.\nThis value MUST equal the `xyz` field of `orbit[0]`; it is repeated here as a directly queryable convenience field."
                        },
                        "orbit": {
                            "x-optimade-type": "list",
                            "x-optimade-unit": "inapplicable",
                            "type": [
                                "array",
                                "null"
                            ],
                            "description": "Full orbit of the Wyckoff position.\nEach item is an affine transformation from the Wyckoff-position parameter vector `(x, y, z)` to one fractional coordinate in the orbit.\nThe same parameter vector MUST be used for every item to construct one complete orbit.\nThe matrix part may be singular because special Wyckoff positions can constrain or identify parameters.\nMultiplicity counts distinct points modulo integer cell translations at generic parameter values; special parameter values can increase site symmetry and collapse orbit points.\nThe chosen first member intersects the ASU for some parameter values, not necessarily for every substitution.",
                            "items": {
                                "$id": "https://schemas.httk.org/defs/v0.1/properties/symmetry/affine_transformation",
                                "title": "Affine transformation",
                                "x-optimade-type": "dictionary",
                                "x-optimade-definition": {
                                    "kind": "property",
                                    "version": "0.1.0",
                                    "format": "1.3",
                                    "name": "affine_transformation",
                                    "label": "affine_transformation_symmetry"
                                },
                                "x-optimade-unit": "inapplicable",
                                "type": [
                                    "object",
                                    "null"
                                ],
                                "description": "An affine transformation acting on fractional crystallographic coordinates.\n\nAn invertible affine transformation preserves collinearity and parallelism, but need not preserve Euclidean distances or angles.\nA singular affine map can collapse a line or plane to a lower-dimensional image.\nThe transformation is represented by a 3 by 3 matrix and a 3-vector, both serialized with exact string entries.\nWith column vectors, the map is `u_out = matrix * u_in + vector`; matrix rows specify the three output components.\nThe containing property identifies whether `u_in` denotes fractional coordinates or abstract Wyckoff parameters and identifies the input and output settings.\nNo wrapping modulo lattice translations is implicit in this equation; apply any required periodic reduction only in the specified output setting.\nThe transformation may, for example, represent an operation within one setting, a setting transform, a subgroup embedding, a normalizer representative, or a parametric coordinate map for a Wyckoff-position orbit representative.\nWhen used as a parametric coordinate map, the matrix may be singular because special Wyckoff positions can constrain or identify parameters.\n\n**Requirements/Conventions**:\n\n- It MUST be a dictionary with the following keys:\n\n    - **matrix**: REQUIRED; Exact 3x3 matrix.\n      Matrix part of the affine transformation.\n      It MUST be represented as a list of three row lists, each containing three exact rational entries represented as strings.\n\n    - **vector**: REQUIRED; List of 3 Fractions (String).\n      Translation or origin-shift vector of the affine transformation in fractional coordinates.\n\n    - **xyz**: OPTIONAL; String.\n      Coordinate expression for the affine transformation in `x,y,z` notation when available.\n      It MUST express the same affine map as `matrix` and `vector`, using `x,y,z` for the input components.\n\n    - **det**: OPTIONAL; Integer.\n      Determinant of `matrix` when the generator emits it.\n\n    - **is\\_orthogonal**: OPTIONAL; Boolean.\n      Whether the linear part preserves the crystallographic metric family specified by the containing setting; this is not a test of the fractional matrix against the Cartesian identity metric.",
                                "properties": {
                                    "matrix": {
                                        "x-optimade-type": "list",
                                        "x-optimade-unit": "inapplicable",
                                        "x-optimade-dimensions": {
                                            "names": [
                                                "dim_lattice",
                                                "dim_lattice"
                                            ],
                                            "sizes": [
                                                3,
                                                3
                                            ]
                                        },
                                        "type": [
                                            "array",
                                            "null"
                                        ],
                                        "description": "Exact 3 by 3 matrix part of the affine transformation.",
                                        "items": {
                                            "x-optimade-type": "list",
                                            "x-optimade-unit": "inapplicable",
                                            "x-optimade-dimensions": {
                                                "names": [
                                                    "dim_lattice"
                                                ],
                                                "sizes": [
                                                    3
                                                ]
                                            },
                                            "type": [
                                                "array"
                                            ],
                                            "description": "One row of the exact 3 by 3 matrix.",
                                            "items": {
                                                "$id": "https://schemas.httk.org/defs/v0.1/properties/core/fraction",
                                                "title": "Fraction",
                                                "x-optimade-type": "string",
                                                "x-optimade-definition": {
                                                    "label": "fraction_core",
                                                    "kind": "property",
                                                    "version": "0.1.0",
                                                    "format": "1.3",
                                                    "name": "fraction"
                                                },
                                                "type": [
                                                    "string",
                                                    "null"
                                                ],
                                                "description": "A numerical representation formed as the quotient of two numbers represented as a string.",
                                                "examples": [
                                                    "2/3",
                                                    "5/42",
                                                    "10",
                                                    "0"
                                                ],
                                                "x-optimade-unit": "inapplicable"
                                            }
                                        }
                                    },
                                    "vector": {
                                        "x-optimade-type": "list",
                                        "x-optimade-unit": "inapplicable",
                                        "x-optimade-dimensions": {
                                            "names": [
                                                "dim_lattice"
                                            ],
                                            "sizes": [
                                                3
                                            ]
                                        },
                                        "type": [
                                            "array",
                                            "null"
                                        ],
                                        "description": "Exact fractional-coordinate vector part of the affine transformation.",
                                        "items": {
                                            "$id": "https://schemas.httk.org/defs/v0.1/properties/core/fraction",
                                            "title": "Fraction",
                                            "x-optimade-type": "string",
                                            "x-optimade-definition": {
                                                "label": "fraction_core",
                                                "kind": "property",
                                                "version": "0.1.0",
                                                "format": "1.3",
                                                "name": "fraction"
                                            },
                                            "type": [
                                                "string",
                                                "null"
                                            ],
                                            "description": "A numerical representation formed as the quotient of two numbers represented as a string.",
                                            "examples": [
                                                "2/3",
                                                "5/42",
                                                "10",
                                                "0"
                                            ],
                                            "x-optimade-unit": "inapplicable"
                                        }
                                    },
                                    "xyz": {
                                        "$id": "https://schemas.httk.org/defs/v0.1/properties/symmetry/op_xyz",
                                        "title": "Operation xyz",
                                        "x-optimade-type": "string",
                                        "x-compatibility": [
                                            "https://schemas.optimade.org/defs/v1.2/properties/optimade/common/symmetry_operation_xyz",
                                            "https://www.iucr.org/__data/iucr/cifdic_html/2/cif_sym.dic/Ispace_group_symop.operation_xyz.html"
                                        ],
                                        "x-optimade-definition": {
                                            "kind": "property",
                                            "version": "0.1.0",
                                            "format": "1.3",
                                            "name": "op_xyz",
                                            "label": "op_xyz_symmetry"
                                        },
                                        "x-optimade-unit": "inapplicable",
                                        "type": [
                                            "string",
                                            "null"
                                        ],
                                        "description": "Coordinate operation expressed in the algebraic xyz form, also known as Jones' faithful representation (Bradley & Cracknell, 1972: pp. 35-37; adapted for computer strings).\n\nThe following definition is adapted from (and meant to be compatible with) the IUCr symCIF version 1.0.1 dictionary definition of `_space_group_symop.operation_xyz` referenced to: International Tables for Crystallography (2002). Volume A, Space-group symmetry, edited by Th. Hahn, 5th. ed. (Kluwer Academic Publishers).\nIt is available at: https://www.iucr.org/__data/iucr/cifdic_html/2/cif_sym.dic/Ispace_group_symop.operation_xyz.html\n\nIf W is a matrix representation of the rotational part of the symmetry operation defined by the positions and signs of x, y and z, and w is a column of translations defined by the fractions, an equivalent position X' is generated from a given position X by the equation: X' = WX + w.",
                                        "x-undef-pattern": "^([-+]?[xyz]([-+][xyz])?([-+](1/2|[12]/3|[1-3]/4|[1-5]/6))?|[-+]?(1/2|[12]/3|[1-3]/4|[1-5]/6)([-+][xyz]([-+][xyz])?)?),([-+]?[xyz]([-+][xyz])?([-+](1/2|[12]/3|[1-3]/4|[1-5]/6))?|[-+]?(1/2|[12]/3|[1-3]/4|[1-5]/6)([-+][xyz]([-+][xyz])?)?),([-+]?[xyz]([-+][xyz])?([-+](1/2|[12]/3|[1-3]/4|[1-5]/6))?|[-+]?(1/2|[12]/3|[1-3]/4|[1-5]/6)([-+][xyz]([-+][xyz])?)?)$",
                                        "examples": [
                                            "-x,-y,z",
                                            "x,1/2-y,1/2+z"
                                        ]
                                    },
                                    "det": {
                                        "x-optimade-type": "integer",
                                        "x-optimade-unit": "inapplicable",
                                        "type": [
                                            "integer",
                                            "null"
                                        ],
                                        "description": "Determinant of the matrix part when emitted by the generator.\nThis optional integer annotation MUST equal the exact determinant of `matrix`; its absence does not imply determinant one.\nRational matrices can have noninteger determinants, in which case this integer annotation is omitted."
                                    },
                                    "is_orthogonal": {
                                        "x-optimade-type": "boolean",
                                        "x-optimade-unit": "inapplicable",
                                        "type": [
                                            "boolean",
                                            "null"
                                        ],
                                        "description": "Whether the matrix part is an isometry of the setting's metric, i.e. it preserves every metric tensor of the setting's crystal family expressed in this basis.\nFor a same-setting matrix `M` and metric tensor `g`, the criterion is `M^T g M = g` for every positive-definite metric in that family.\nThis is orthogonality with respect to the actual (generally non-Cartesian) lattice metric, not orthogonality of the matrix as a plain array: hexagonal sixfold rotations are isometries, whereas a cell-enlarging transform is not."
                                    }
                                },
                                "examples": [
                                    {
                                        "matrix": [
                                            [
                                                "-1",
                                                "0",
                                                "0"
                                            ],
                                            [
                                                "0",
                                                "-1",
                                                "0"
                                            ],
                                            [
                                                "0",
                                                "0",
                                                "1"
                                            ]
                                        ],
                                        "vector": [
                                            "0",
                                            "0",
                                            "0"
                                        ],
                                        "xyz": "-x,-y,z",
                                        "det": 1,
                                        "is_orthogonal": true
                                    }
                                ]
                            }
                        },
                        "orbit_mod_centering": {
                            "x-optimade-type": "list",
                            "x-optimade-unit": "inapplicable",
                            "type": [
                                "array",
                                "null"
                            ],
                            "description": "Representatives of the Wyckoff-position orbit modulo centering translations.\nEach item has the same affine-transformation representation as an item in `orbit`.\nIts length MUST equal `multiplicity / n_centering_translations` for the containing space-group setting.\nAdding every centering translation to these orbit members and reducing modulo integer cell translations recovers the full orbit as a set at generic parameter values.",
                            "items": {
                                "$id": "https://schemas.httk.org/defs/v0.1/properties/symmetry/affine_transformation",
                                "title": "Affine transformation",
                                "x-optimade-type": "dictionary",
                                "x-optimade-definition": {
                                    "kind": "property",
                                    "version": "0.1.0",
                                    "format": "1.3",
                                    "name": "affine_transformation",
                                    "label": "affine_transformation_symmetry"
                                },
                                "x-optimade-unit": "inapplicable",
                                "type": [
                                    "object",
                                    "null"
                                ],
                                "description": "An affine transformation acting on fractional crystallographic coordinates.\n\nAn invertible affine transformation preserves collinearity and parallelism, but need not preserve Euclidean distances or angles.\nA singular affine map can collapse a line or plane to a lower-dimensional image.\nThe transformation is represented by a 3 by 3 matrix and a 3-vector, both serialized with exact string entries.\nWith column vectors, the map is `u_out = matrix * u_in + vector`; matrix rows specify the three output components.\nThe containing property identifies whether `u_in` denotes fractional coordinates or abstract Wyckoff parameters and identifies the input and output settings.\nNo wrapping modulo lattice translations is implicit in this equation; apply any required periodic reduction only in the specified output setting.\nThe transformation may, for example, represent an operation within one setting, a setting transform, a subgroup embedding, a normalizer representative, or a parametric coordinate map for a Wyckoff-position orbit representative.\nWhen used as a parametric coordinate map, the matrix may be singular because special Wyckoff positions can constrain or identify parameters.\n\n**Requirements/Conventions**:\n\n- It MUST be a dictionary with the following keys:\n\n    - **matrix**: REQUIRED; Exact 3x3 matrix.\n      Matrix part of the affine transformation.\n      It MUST be represented as a list of three row lists, each containing three exact rational entries represented as strings.\n\n    - **vector**: REQUIRED; List of 3 Fractions (String).\n      Translation or origin-shift vector of the affine transformation in fractional coordinates.\n\n    - **xyz**: OPTIONAL; String.\n      Coordinate expression for the affine transformation in `x,y,z` notation when available.\n      It MUST express the same affine map as `matrix` and `vector`, using `x,y,z` for the input components.\n\n    - **det**: OPTIONAL; Integer.\n      Determinant of `matrix` when the generator emits it.\n\n    - **is\\_orthogonal**: OPTIONAL; Boolean.\n      Whether the linear part preserves the crystallographic metric family specified by the containing setting; this is not a test of the fractional matrix against the Cartesian identity metric.",
                                "properties": {
                                    "matrix": {
                                        "x-optimade-type": "list",
                                        "x-optimade-unit": "inapplicable",
                                        "x-optimade-dimensions": {
                                            "names": [
                                                "dim_lattice",
                                                "dim_lattice"
                                            ],
                                            "sizes": [
                                                3,
                                                3
                                            ]
                                        },
                                        "type": [
                                            "array",
                                            "null"
                                        ],
                                        "description": "Exact 3 by 3 matrix part of the affine transformation.",
                                        "items": {
                                            "x-optimade-type": "list",
                                            "x-optimade-unit": "inapplicable",
                                            "x-optimade-dimensions": {
                                                "names": [
                                                    "dim_lattice"
                                                ],
                                                "sizes": [
                                                    3
                                                ]
                                            },
                                            "type": [
                                                "array"
                                            ],
                                            "description": "One row of the exact 3 by 3 matrix.",
                                            "items": {
                                                "$id": "https://schemas.httk.org/defs/v0.1/properties/core/fraction",
                                                "title": "Fraction",
                                                "x-optimade-type": "string",
                                                "x-optimade-definition": {
                                                    "label": "fraction_core",
                                                    "kind": "property",
                                                    "version": "0.1.0",
                                                    "format": "1.3",
                                                    "name": "fraction"
                                                },
                                                "type": [
                                                    "string",
                                                    "null"
                                                ],
                                                "description": "A numerical representation formed as the quotient of two numbers represented as a string.",
                                                "examples": [
                                                    "2/3",
                                                    "5/42",
                                                    "10",
                                                    "0"
                                                ],
                                                "x-optimade-unit": "inapplicable"
                                            }
                                        }
                                    },
                                    "vector": {
                                        "x-optimade-type": "list",
                                        "x-optimade-unit": "inapplicable",
                                        "x-optimade-dimensions": {
                                            "names": [
                                                "dim_lattice"
                                            ],
                                            "sizes": [
                                                3
                                            ]
                                        },
                                        "type": [
                                            "array",
                                            "null"
                                        ],
                                        "description": "Exact fractional-coordinate vector part of the affine transformation.",
                                        "items": {
                                            "$id": "https://schemas.httk.org/defs/v0.1/properties/core/fraction",
                                            "title": "Fraction",
                                            "x-optimade-type": "string",
                                            "x-optimade-definition": {
                                                "label": "fraction_core",
                                                "kind": "property",
                                                "version": "0.1.0",
                                                "format": "1.3",
                                                "name": "fraction"
                                            },
                                            "type": [
                                                "string",
                                                "null"
                                            ],
                                            "description": "A numerical representation formed as the quotient of two numbers represented as a string.",
                                            "examples": [
                                                "2/3",
                                                "5/42",
                                                "10",
                                                "0"
                                            ],
                                            "x-optimade-unit": "inapplicable"
                                        }
                                    },
                                    "xyz": {
                                        "$id": "https://schemas.httk.org/defs/v0.1/properties/symmetry/op_xyz",
                                        "title": "Operation xyz",
                                        "x-optimade-type": "string",
                                        "x-compatibility": [
                                            "https://schemas.optimade.org/defs/v1.2/properties/optimade/common/symmetry_operation_xyz",
                                            "https://www.iucr.org/__data/iucr/cifdic_html/2/cif_sym.dic/Ispace_group_symop.operation_xyz.html"
                                        ],
                                        "x-optimade-definition": {
                                            "kind": "property",
                                            "version": "0.1.0",
                                            "format": "1.3",
                                            "name": "op_xyz",
                                            "label": "op_xyz_symmetry"
                                        },
                                        "x-optimade-unit": "inapplicable",
                                        "type": [
                                            "string",
                                            "null"
                                        ],
                                        "description": "Coordinate operation expressed in the algebraic xyz form, also known as Jones' faithful representation (Bradley & Cracknell, 1972: pp. 35-37; adapted for computer strings).\n\nThe following definition is adapted from (and meant to be compatible with) the IUCr symCIF version 1.0.1 dictionary definition of `_space_group_symop.operation_xyz` referenced to: International Tables for Crystallography (2002). Volume A, Space-group symmetry, edited by Th. Hahn, 5th. ed. (Kluwer Academic Publishers).\nIt is available at: https://www.iucr.org/__data/iucr/cifdic_html/2/cif_sym.dic/Ispace_group_symop.operation_xyz.html\n\nIf W is a matrix representation of the rotational part of the symmetry operation defined by the positions and signs of x, y and z, and w is a column of translations defined by the fractions, an equivalent position X' is generated from a given position X by the equation: X' = WX + w.",
                                        "x-undef-pattern": "^([-+]?[xyz]([-+][xyz])?([-+](1/2|[12]/3|[1-3]/4|[1-5]/6))?|[-+]?(1/2|[12]/3|[1-3]/4|[1-5]/6)([-+][xyz]([-+][xyz])?)?),([-+]?[xyz]([-+][xyz])?([-+](1/2|[12]/3|[1-3]/4|[1-5]/6))?|[-+]?(1/2|[12]/3|[1-3]/4|[1-5]/6)([-+][xyz]([-+][xyz])?)?),([-+]?[xyz]([-+][xyz])?([-+](1/2|[12]/3|[1-3]/4|[1-5]/6))?|[-+]?(1/2|[12]/3|[1-3]/4|[1-5]/6)([-+][xyz]([-+][xyz])?)?)$",
                                        "examples": [
                                            "-x,-y,z",
                                            "x,1/2-y,1/2+z"
                                        ]
                                    },
                                    "det": {
                                        "x-optimade-type": "integer",
                                        "x-optimade-unit": "inapplicable",
                                        "type": [
                                            "integer",
                                            "null"
                                        ],
                                        "description": "Determinant of the matrix part when emitted by the generator.\nThis optional integer annotation MUST equal the exact determinant of `matrix`; its absence does not imply determinant one.\nRational matrices can have noninteger determinants, in which case this integer annotation is omitted."
                                    },
                                    "is_orthogonal": {
                                        "x-optimade-type": "boolean",
                                        "x-optimade-unit": "inapplicable",
                                        "type": [
                                            "boolean",
                                            "null"
                                        ],
                                        "description": "Whether the matrix part is an isometry of the setting's metric, i.e. it preserves every metric tensor of the setting's crystal family expressed in this basis.\nFor a same-setting matrix `M` and metric tensor `g`, the criterion is `M^T g M = g` for every positive-definite metric in that family.\nThis is orthogonality with respect to the actual (generally non-Cartesian) lattice metric, not orthogonality of the matrix as a plain array: hexagonal sixfold rotations are isometries, whereas a cell-enlarging transform is not."
                                    }
                                },
                                "examples": [
                                    {
                                        "matrix": [
                                            [
                                                "-1",
                                                "0",
                                                "0"
                                            ],
                                            [
                                                "0",
                                                "-1",
                                                "0"
                                            ],
                                            [
                                                "0",
                                                "0",
                                                "1"
                                            ]
                                        ],
                                        "vector": [
                                            "0",
                                            "0",
                                            "0"
                                        ],
                                        "xyz": "-x,-y,z",
                                        "det": 1,
                                        "is_orthogonal": true
                                    }
                                ]
                            }
                        }
                    },
                    "examples": [
                        {
                            "letter": "e",
                            "multiplicity": 2,
                            "sitesym": "1",
                            "hasfreedom": [
                                true,
                                true,
                                true
                            ],
                            "first_orbit": "x,y,z",
                            "orbit": [
                                {
                                    "matrix": [
                                        [
                                            "1",
                                            "0",
                                            "0"
                                        ],
                                        [
                                            "0",
                                            "1",
                                            "0"
                                        ],
                                        [
                                            "0",
                                            "0",
                                            "1"
                                        ]
                                    ],
                                    "vector": [
                                        "0",
                                        "0",
                                        "0"
                                    ],
                                    "xyz": "x,y,z"
                                },
                                {
                                    "matrix": [
                                        [
                                            "-1",
                                            "0",
                                            "0"
                                        ],
                                        [
                                            "0",
                                            "1",
                                            "0"
                                        ],
                                        [
                                            "0",
                                            "0",
                                            "-1"
                                        ]
                                    ],
                                    "vector": [
                                        "0",
                                        "0",
                                        "0"
                                    ],
                                    "xyz": "-x,y,-z"
                                }
                            ],
                            "orbit_mod_centering": [
                                {
                                    "matrix": [
                                        [
                                            "1",
                                            "0",
                                            "0"
                                        ],
                                        [
                                            "0",
                                            "1",
                                            "0"
                                        ],
                                        [
                                            "0",
                                            "0",
                                            "1"
                                        ]
                                    ],
                                    "vector": [
                                        "0",
                                        "0",
                                        "0"
                                    ],
                                    "xyz": "x,y,z"
                                },
                                {
                                    "matrix": [
                                        [
                                            "-1",
                                            "0",
                                            "0"
                                        ],
                                        [
                                            "0",
                                            "1",
                                            "0"
                                        ],
                                        [
                                            "0",
                                            "0",
                                            "-1"
                                        ]
                                    ],
                                    "vector": [
                                        "0",
                                        "0",
                                        "0"
                                    ],
                                    "xyz": "-x,y,-z"
                                }
                            ]
                        }
                    ]
                },
                "examples": [
                    [
                        {
                            "letter": "e",
                            "multiplicity": 2,
                            "sitesym": "1",
                            "hasfreedom": [
                                true,
                                true,
                                true
                            ],
                            "first_orbit": "x,y,z",
                            "orbit": [
                                {
                                    "matrix": [
                                        [
                                            "1",
                                            "0",
                                            "0"
                                        ],
                                        [
                                            "0",
                                            "1",
                                            "0"
                                        ],
                                        [
                                            "0",
                                            "0",
                                            "1"
                                        ]
                                    ],
                                    "vector": [
                                        "0",
                                        "0",
                                        "0"
                                    ],
                                    "xyz": "x,y,z"
                                },
                                {
                                    "matrix": [
                                        [
                                            "-1",
                                            "0",
                                            "0"
                                        ],
                                        [
                                            "0",
                                            "1",
                                            "0"
                                        ],
                                        [
                                            "0",
                                            "0",
                                            "-1"
                                        ]
                                    ],
                                    "vector": [
                                        "0",
                                        "0",
                                        "0"
                                    ],
                                    "xyz": "-x,y,-z"
                                }
                            ],
                            "orbit_mod_centering": [
                                {
                                    "matrix": [
                                        [
                                            "1",
                                            "0",
                                            "0"
                                        ],
                                        [
                                            "0",
                                            "1",
                                            "0"
                                        ],
                                        [
                                            "0",
                                            "0",
                                            "1"
                                        ]
                                    ],
                                    "vector": [
                                        "0",
                                        "0",
                                        "0"
                                    ],
                                    "xyz": "x,y,z"
                                },
                                {
                                    "matrix": [
                                        [
                                            "-1",
                                            "0",
                                            "0"
                                        ],
                                        [
                                            "0",
                                            "1",
                                            "0"
                                        ],
                                        [
                                            "0",
                                            "0",
                                            "-1"
                                        ]
                                    ],
                                    "vector": [
                                        "0",
                                        "0",
                                        "0"
                                    ],
                                    "xyz": "-x,y,-z"
                                }
                            ]
                        }
                    ]
                ]
            },
            "wyckoff_sets": {
                "$id": "https://schemas.httk.org/defs/v0.1/properties/spacegroups/wyckoff_sets",
                "x-optimade-requirements": {
                    "support": "may",
                    "sortable": false,
                    "query-support": "none",
                    "response-level": "may"
                },
                "title": "Wyckoff sets",
                "x-optimade-type": "list",
                "x-optimade-definition": {
                    "kind": "property",
                    "version": "0.1.0",
                    "format": "1.3",
                    "name": "wyckoff_sets",
                    "label": "wyckoff_sets_spacegroups"
                },
                "type": [
                    "array",
                    "null"
                ],
                "description": "Sets of Wyckoff letters related by normalizer operations.\n\nEach inner list groups Wyckoff positions that can be interchanged by the relevant normalizer action.\n\nThe generator forms these classes using the finite group obtained by expanding cctbx's additional Euclidean-normalizer generators in the recorded Hall setting.\nEvery Wyckoff letter occurs in exactly one inner list, including singleton lists.\nA normalizer-induced permutation preserves multiplicity and the conjugacy type of site symmetry, although the oriented site-symmetry symbols can change.\nThis grouping describes the generated Euclidean-normalizer action; it is not a claim to enumerate equivalence under the full affine normalizer or its continuous freedoms.",
                "x-optimade-unit": "inapplicable",
                "items": {
                    "x-optimade-type": "list",
                    "type": [
                        "array",
                        "null"
                    ],
                    "description": "One Wyckoff-set combination.",
                    "items": {
                        "x-optimade-type": "string",
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Wyckoff letter.",
                        "x-optimade-unit": "inapplicable"
                    },
                    "x-optimade-unit": "inapplicable"
                },
                "examples": [
                    [
                        [
                            "a"
                        ]
                    ],
                    [
                        [
                            "i"
                        ],
                        [
                            "h"
                        ],
                        [
                            "g"
                        ]
                    ]
                ]
            },
            "asu_markup": {
                "$id": "https://schemas.httk.org/defs/v0.1/properties/spacegroups/asu_markup",
                "x-optimade-requirements": {
                    "support": "may",
                    "sortable": false,
                    "query-support": "none",
                    "response-level": "may"
                },
                "title": "Asymmetric unit markups",
                "x-optimade-definition": {
                    "kind": "property",
                    "version": "0.1.0",
                    "format": "1.3",
                    "name": "asu_markup",
                    "label": "asu_markup_spacegroups"
                },
                "description": "Display-oriented renderings of the plain-string asymmetric-unit restrictions in `asu_str`.\n\nThe plain string value is stored in the corresponding unsuffixed property; this object only provides alternate markup forms for display.",
                "x-optimade-type": "dictionary",
                "x-optimade-unit": "inapplicable",
                "type": [
                    "object",
                    "null"
                ],
                "properties": {
                    "html": {
                        "x-optimade-type": "string",
                        "x-optimade-unit": "inapplicable",
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "HTML rendering of the sibling string."
                    },
                    "latex": {
                        "x-optimade-type": "string",
                        "x-optimade-unit": "inapplicable",
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "LaTeX rendering of the sibling string."
                    },
                    "unicode": {
                        "x-optimade-type": "string",
                        "x-optimade-unit": "inapplicable",
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Unicode rendering of the sibling string."
                    }
                },
                "examples": [
                    {
                        "html": "<i>P</i> 2<sub>1</sub>/<i>c</i>",
                        "latex": "\\mathit{P}\\,2_{1}/c",
                        "unicode": "P2\u2081/c"
                    }
                ]
            },
            "asu_shape_only_markup": {
                "$id": "https://schemas.httk.org/defs/v0.1/properties/spacegroups/asu_shape_only_markup",
                "x-optimade-requirements": {
                    "support": "may",
                    "sortable": false,
                    "query-support": "none",
                    "response-level": "may"
                },
                "title": "Shape-only asymmetric unit markups",
                "x-optimade-definition": {
                    "kind": "property",
                    "version": "0.1.0",
                    "format": "1.3",
                    "name": "asu_shape_only_markup",
                    "label": "asu_shape_only_markup_spacegroups"
                },
                "description": "Display-oriented renderings of the plain-string shape-only asymmetric-unit restrictions in `asu_shape_only_str`.\n\nThe plain string value is stored in the corresponding unsuffixed property; this object only provides alternate markup forms for display.",
                "x-optimade-type": "dictionary",
                "x-optimade-unit": "inapplicable",
                "type": [
                    "object",
                    "null"
                ],
                "properties": {
                    "html": {
                        "x-optimade-type": "string",
                        "x-optimade-unit": "inapplicable",
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "HTML rendering of the sibling string."
                    },
                    "latex": {
                        "x-optimade-type": "string",
                        "x-optimade-unit": "inapplicable",
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "LaTeX rendering of the sibling string."
                    },
                    "unicode": {
                        "x-optimade-type": "string",
                        "x-optimade-unit": "inapplicable",
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Unicode rendering of the sibling string."
                    }
                },
                "examples": [
                    {
                        "html": "<i>P</i> 2<sub>1</sub>/<i>c</i>",
                        "latex": "\\mathit{P}\\,2_{1}/c",
                        "unicode": "P2\u2081/c"
                    }
                ]
            },
            "hall_markup": {
                "$id": "https://schemas.httk.org/defs/v0.1/properties/spacegroups/hall_markup",
                "x-optimade-requirements": {
                    "support": "may",
                    "sortable": false,
                    "query-support": "none",
                    "response-level": "may"
                },
                "title": "Hall symbol markups",
                "x-optimade-definition": {
                    "kind": "property",
                    "version": "0.1.0",
                    "format": "1.3",
                    "name": "hall_markup",
                    "label": "hall_markup_spacegroups"
                },
                "description": "Display-oriented renderings of the Hall symbol in `hall`.\n\nThe plain string value is stored in the corresponding unsuffixed property; this object only provides alternate markup forms for display.",
                "x-optimade-type": "dictionary",
                "x-optimade-unit": "inapplicable",
                "type": [
                    "object",
                    "null"
                ],
                "properties": {
                    "html": {
                        "x-optimade-type": "string",
                        "x-optimade-unit": "inapplicable",
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "HTML rendering of the sibling string."
                    },
                    "latex": {
                        "x-optimade-type": "string",
                        "x-optimade-unit": "inapplicable",
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "LaTeX rendering of the sibling string."
                    },
                    "unicode": {
                        "x-optimade-type": "string",
                        "x-optimade-unit": "inapplicable",
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Unicode rendering of the sibling string."
                    }
                },
                "examples": [
                    {
                        "html": "<i>P</i> 2<sub>1</sub>/<i>c</i>",
                        "latex": "\\mathit{P}\\,2_{1}/c",
                        "unicode": "P2\u2081/c"
                    }
                ]
            },
            "hall_aliases_markup": {
                "$id": "https://schemas.httk.org/defs/v0.1/properties/spacegroups/hall_aliases_markup",
                "x-optimade-requirements": {
                    "support": "may",
                    "sortable": false,
                    "query-support": "none",
                    "response-level": "may"
                },
                "title": "Hall alias markups",
                "x-optimade-type": "list",
                "x-optimade-definition": {
                    "kind": "property",
                    "version": "0.1.0",
                    "format": "1.3",
                    "name": "hall_aliases_markup",
                    "label": "hall_aliases_markup_spacegroups"
                },
                "x-optimade-unit": "inapplicable",
                "type": [
                    "array",
                    "null"
                ],
                "description": "Display-oriented renderings corresponding element-by-element to the alternate Hall symbols in `hall_aliases`.\n\nThe plain string values are stored in the corresponding unsuffixed alias list; this list only provides alternate markup forms for display.",
                "items": {
                    "$id": "https://schemas.httk.org/defs/v0.1/properties/core/string_markups",
                    "title": "String markups",
                    "x-optimade-type": "dictionary",
                    "x-optimade-definition": {
                        "kind": "property",
                        "version": "0.1.0",
                        "format": "1.3",
                        "name": "string_markups",
                        "label": "string_markups_core"
                    },
                    "x-optimade-unit": "inapplicable",
                    "type": [
                        "object",
                        "null"
                    ],
                    "description": "Strings with alternate markup and/or encoding for display rendering.\n\nThe object is intended for display-oriented variants only, a sibling property should be used for canonical plain string value.\n\n**Requirements/Conventions**:\n\n- It MUST be a dictionary with the following keys:\n\n    - **html**: OPTIONAL; String.\n      HTML rendering of the sibling string, using inline HTML elements where needed for typographic structure such as subscripts, superscripts, overlines, fractions, and line breaks.\n\n    - **latex**: OPTIONAL; String.\n      LaTeX rendering of the sibling string, suitable for use with a LaTeX or MathJax-like renderer.\n\n    - **unicode**: OPTIONAL; String.\n      Unicode rendering of the sibling string, using Unicode code points for display features where practical.",
                    "properties": {
                        "html": {
                            "x-optimade-type": "string",
                            "x-optimade-unit": "inapplicable",
                            "type": [
                                "string",
                                "null"
                            ],
                            "description": "HTML rendering of the sibling string."
                        },
                        "latex": {
                            "x-optimade-type": "string",
                            "x-optimade-unit": "inapplicable",
                            "type": [
                                "string",
                                "null"
                            ],
                            "description": "LaTeX rendering of the sibling string."
                        },
                        "unicode": {
                            "x-optimade-type": "string",
                            "x-optimade-unit": "inapplicable",
                            "type": [
                                "string",
                                "null"
                            ],
                            "description": "Unicode rendering of the sibling string."
                        }
                    },
                    "examples": [
                        {
                            "html": "<i>P</i> 2<sub>1</sub>/<i>c</i>",
                            "latex": "\\mathit{P}\\,2_{1}/c",
                            "unicode": "P2\u2081/c"
                        }
                    ]
                },
                "examples": [
                    [
                        {
                            "html": "<i>P</i> 1",
                            "latex": "\\mathrm{P} 1",
                            "unicode": "P 1"
                        }
                    ]
                ]
            },
            "hm_short_markup": {
                "$id": "https://schemas.httk.org/defs/v0.1/properties/spacegroups/hm_short_markup",
                "x-optimade-requirements": {
                    "support": "may",
                    "sortable": false,
                    "query-support": "none",
                    "response-level": "may"
                },
                "title": "Short Hermann-Mauguin symbol markups",
                "x-optimade-definition": {
                    "kind": "property",
                    "version": "0.1.0",
                    "format": "1.3",
                    "name": "hm_short_markup",
                    "label": "hm_short_markup_spacegroups"
                },
                "description": "Display-oriented renderings of the setting-specific short Hermann-Mauguin symbol in `hm_short`.\n\nThe plain string value is stored in the corresponding unsuffixed property; this object only provides alternate markup forms for display.",
                "x-optimade-type": "dictionary",
                "x-optimade-unit": "inapplicable",
                "type": [
                    "object",
                    "null"
                ],
                "properties": {
                    "html": {
                        "x-optimade-type": "string",
                        "x-optimade-unit": "inapplicable",
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "HTML rendering of the sibling string."
                    },
                    "latex": {
                        "x-optimade-type": "string",
                        "x-optimade-unit": "inapplicable",
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "LaTeX rendering of the sibling string."
                    },
                    "unicode": {
                        "x-optimade-type": "string",
                        "x-optimade-unit": "inapplicable",
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Unicode rendering of the sibling string."
                    }
                },
                "examples": [
                    {
                        "html": "<i>P</i> 2<sub>1</sub>/<i>c</i>",
                        "latex": "\\mathit{P}\\,2_{1}/c",
                        "unicode": "P2\u2081/c"
                    }
                ]
            },
            "hm_short_std_markup": {
                "$id": "https://schemas.httk.org/defs/v0.1/properties/spacegroups/hm_short_std_markup",
                "x-optimade-requirements": {
                    "support": "may",
                    "sortable": false,
                    "query-support": "none",
                    "response-level": "may"
                },
                "title": "Standard short Hermann-Mauguin symbol markups",
                "x-optimade-definition": {
                    "kind": "property",
                    "version": "0.1.0",
                    "format": "1.3",
                    "name": "hm_short_std_markup",
                    "label": "hm_short_std_markup_spacegroups"
                },
                "description": "Display-oriented renderings of the ITA-standard short Hermann-Mauguin symbol in `hm_short_std`.\n\nThe plain string value is stored in the corresponding unsuffixed property; this object only provides alternate markup forms for display.",
                "x-optimade-type": "dictionary",
                "x-optimade-unit": "inapplicable",
                "type": [
                    "object",
                    "null"
                ],
                "properties": {
                    "html": {
                        "x-optimade-type": "string",
                        "x-optimade-unit": "inapplicable",
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "HTML rendering of the sibling string."
                    },
                    "latex": {
                        "x-optimade-type": "string",
                        "x-optimade-unit": "inapplicable",
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "LaTeX rendering of the sibling string."
                    },
                    "unicode": {
                        "x-optimade-type": "string",
                        "x-optimade-unit": "inapplicable",
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Unicode rendering of the sibling string."
                    }
                },
                "examples": [
                    {
                        "html": "<i>P</i> 2<sub>1</sub>/<i>c</i>",
                        "latex": "\\mathit{P}\\,2_{1}/c",
                        "unicode": "P2\u2081/c"
                    }
                ]
            },
            "hm_full_markup": {
                "$id": "https://schemas.httk.org/defs/v0.1/properties/spacegroups/hm_full_markup",
                "x-optimade-requirements": {
                    "support": "may",
                    "sortable": false,
                    "query-support": "none",
                    "response-level": "may"
                },
                "title": "Full Hermann-Mauguin symbol markups",
                "x-optimade-definition": {
                    "kind": "property",
                    "version": "0.1.0",
                    "format": "1.3",
                    "name": "hm_full_markup",
                    "label": "hm_full_markup_spacegroups"
                },
                "description": "Display-oriented renderings of the setting-specific full Hermann-Mauguin symbol in `hm_full`.\n\nThe plain string value is stored in the corresponding unsuffixed property; this object only provides alternate markup forms for display.",
                "x-optimade-type": "dictionary",
                "x-optimade-unit": "inapplicable",
                "type": [
                    "object",
                    "null"
                ],
                "properties": {
                    "html": {
                        "x-optimade-type": "string",
                        "x-optimade-unit": "inapplicable",
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "HTML rendering of the sibling string."
                    },
                    "latex": {
                        "x-optimade-type": "string",
                        "x-optimade-unit": "inapplicable",
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "LaTeX rendering of the sibling string."
                    },
                    "unicode": {
                        "x-optimade-type": "string",
                        "x-optimade-unit": "inapplicable",
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Unicode rendering of the sibling string."
                    }
                },
                "examples": [
                    {
                        "html": "<i>P</i> 2<sub>1</sub>/<i>c</i>",
                        "latex": "\\mathit{P}\\,2_{1}/c",
                        "unicode": "P2\u2081/c"
                    }
                ]
            },
            "hm_full_std_markup": {
                "$id": "https://schemas.httk.org/defs/v0.1/properties/spacegroups/hm_full_std_markup",
                "x-optimade-requirements": {
                    "support": "may",
                    "sortable": false,
                    "query-support": "none",
                    "response-level": "may"
                },
                "title": "Standard full Hermann-Mauguin symbol markups",
                "x-optimade-definition": {
                    "kind": "property",
                    "version": "0.1.0",
                    "format": "1.3",
                    "name": "hm_full_std_markup",
                    "label": "hm_full_std_markup_spacegroups"
                },
                "description": "Display-oriented renderings of the ITA-standard full Hermann-Mauguin symbol in `hm_full_std`.\n\nThe plain string value is stored in the corresponding unsuffixed property; this object only provides alternate markup forms for display.",
                "x-optimade-type": "dictionary",
                "x-optimade-unit": "inapplicable",
                "type": [
                    "object",
                    "null"
                ],
                "properties": {
                    "html": {
                        "x-optimade-type": "string",
                        "x-optimade-unit": "inapplicable",
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "HTML rendering of the sibling string."
                    },
                    "latex": {
                        "x-optimade-type": "string",
                        "x-optimade-unit": "inapplicable",
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "LaTeX rendering of the sibling string."
                    },
                    "unicode": {
                        "x-optimade-type": "string",
                        "x-optimade-unit": "inapplicable",
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Unicode rendering of the sibling string."
                    }
                },
                "examples": [
                    {
                        "html": "<i>P</i> 2<sub>1</sub>/<i>c</i>",
                        "latex": "\\mathit{P}\\,2_{1}/c",
                        "unicode": "P2\u2081/c"
                    }
                ]
            },
            "hm_extended_markup": {
                "$id": "https://schemas.httk.org/defs/v0.1/properties/spacegroups/hm_extended_markup",
                "x-optimade-requirements": {
                    "support": "may",
                    "sortable": false,
                    "query-support": "none",
                    "response-level": "may"
                },
                "title": "Extended Hermann-Mauguin symbol markups",
                "x-optimade-definition": {
                    "kind": "property",
                    "version": "0.1.0",
                    "format": "1.3",
                    "name": "hm_extended_markup",
                    "label": "hm_extended_markup_spacegroups"
                },
                "description": "Display-oriented renderings of the extended Hermann-Mauguin symbol in `hm_extended`.\n\nThe plain string value is stored in the corresponding unsuffixed property; this object only provides alternate markup forms for display.",
                "x-optimade-type": "dictionary",
                "x-optimade-unit": "inapplicable",
                "type": [
                    "object",
                    "null"
                ],
                "properties": {
                    "html": {
                        "x-optimade-type": "string",
                        "x-optimade-unit": "inapplicable",
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "HTML rendering of the sibling string."
                    },
                    "latex": {
                        "x-optimade-type": "string",
                        "x-optimade-unit": "inapplicable",
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "LaTeX rendering of the sibling string."
                    },
                    "unicode": {
                        "x-optimade-type": "string",
                        "x-optimade-unit": "inapplicable",
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Unicode rendering of the sibling string."
                    }
                },
                "examples": [
                    {
                        "html": "<i>P</i> 2<sub>1</sub>/<i>c</i>",
                        "latex": "\\mathit{P}\\,2_{1}/c",
                        "unicode": "P2\u2081/c"
                    }
                ]
            },
            "hm_short_aliases_markup": {
                "$id": "https://schemas.httk.org/defs/v0.1/properties/spacegroups/hm_short_aliases_markup",
                "x-optimade-requirements": {
                    "support": "may",
                    "sortable": false,
                    "query-support": "none",
                    "response-level": "may"
                },
                "title": "Short Hermann-Mauguin alias markups",
                "x-optimade-type": "list",
                "x-optimade-definition": {
                    "kind": "property",
                    "version": "0.1.0",
                    "format": "1.3",
                    "name": "hm_short_aliases_markup",
                    "label": "hm_short_aliases_markup_spacegroups"
                },
                "x-optimade-unit": "inapplicable",
                "type": [
                    "array",
                    "null"
                ],
                "description": "Display-oriented renderings corresponding element-by-element to the alternate short Hermann-Mauguin symbols in `hm_short_aliases`.\n\nThe plain string values are stored in the corresponding unsuffixed alias list; this list only provides alternate markup forms for display.",
                "items": {
                    "$id": "https://schemas.httk.org/defs/v0.1/properties/core/string_markups",
                    "title": "String markups",
                    "x-optimade-type": "dictionary",
                    "x-optimade-definition": {
                        "kind": "property",
                        "version": "0.1.0",
                        "format": "1.3",
                        "name": "string_markups",
                        "label": "string_markups_core"
                    },
                    "x-optimade-unit": "inapplicable",
                    "type": [
                        "object",
                        "null"
                    ],
                    "description": "Strings with alternate markup and/or encoding for display rendering.\n\nThe object is intended for display-oriented variants only, a sibling property should be used for canonical plain string value.\n\n**Requirements/Conventions**:\n\n- It MUST be a dictionary with the following keys:\n\n    - **html**: OPTIONAL; String.\n      HTML rendering of the sibling string, using inline HTML elements where needed for typographic structure such as subscripts, superscripts, overlines, fractions, and line breaks.\n\n    - **latex**: OPTIONAL; String.\n      LaTeX rendering of the sibling string, suitable for use with a LaTeX or MathJax-like renderer.\n\n    - **unicode**: OPTIONAL; String.\n      Unicode rendering of the sibling string, using Unicode code points for display features where practical.",
                    "properties": {
                        "html": {
                            "x-optimade-type": "string",
                            "x-optimade-unit": "inapplicable",
                            "type": [
                                "string",
                                "null"
                            ],
                            "description": "HTML rendering of the sibling string."
                        },
                        "latex": {
                            "x-optimade-type": "string",
                            "x-optimade-unit": "inapplicable",
                            "type": [
                                "string",
                                "null"
                            ],
                            "description": "LaTeX rendering of the sibling string."
                        },
                        "unicode": {
                            "x-optimade-type": "string",
                            "x-optimade-unit": "inapplicable",
                            "type": [
                                "string",
                                "null"
                            ],
                            "description": "Unicode rendering of the sibling string."
                        }
                    },
                    "examples": [
                        {
                            "html": "<i>P</i> 2<sub>1</sub>/<i>c</i>",
                            "latex": "\\mathit{P}\\,2_{1}/c",
                            "unicode": "P2\u2081/c"
                        }
                    ]
                },
                "examples": [
                    [
                        {
                            "html": "<i>P</i> 1",
                            "latex": "\\mathrm{P} 1",
                            "unicode": "P 1"
                        }
                    ]
                ]
            },
            "hm_full_aliases_markup": {
                "$id": "https://schemas.httk.org/defs/v0.1/properties/spacegroups/hm_full_aliases_markup",
                "x-optimade-requirements": {
                    "support": "may",
                    "sortable": false,
                    "query-support": "none",
                    "response-level": "may"
                },
                "title": "Full Hermann-Mauguin alias markups",
                "x-optimade-type": "list",
                "x-optimade-definition": {
                    "kind": "property",
                    "version": "0.1.0",
                    "format": "1.3",
                    "name": "hm_full_aliases_markup",
                    "label": "hm_full_aliases_markup_spacegroups"
                },
                "x-optimade-unit": "inapplicable",
                "type": [
                    "array",
                    "null"
                ],
                "description": "Display-oriented renderings corresponding element-by-element to the alternate full Hermann-Mauguin symbols in `hm_full_aliases`.\n\nThe plain string values are stored in the corresponding unsuffixed alias list; this list only provides alternate markup forms for display.",
                "items": {
                    "$id": "https://schemas.httk.org/defs/v0.1/properties/core/string_markups",
                    "title": "String markups",
                    "x-optimade-type": "dictionary",
                    "x-optimade-definition": {
                        "kind": "property",
                        "version": "0.1.0",
                        "format": "1.3",
                        "name": "string_markups",
                        "label": "string_markups_core"
                    },
                    "x-optimade-unit": "inapplicable",
                    "type": [
                        "object",
                        "null"
                    ],
                    "description": "Strings with alternate markup and/or encoding for display rendering.\n\nThe object is intended for display-oriented variants only, a sibling property should be used for canonical plain string value.\n\n**Requirements/Conventions**:\n\n- It MUST be a dictionary with the following keys:\n\n    - **html**: OPTIONAL; String.\n      HTML rendering of the sibling string, using inline HTML elements where needed for typographic structure such as subscripts, superscripts, overlines, fractions, and line breaks.\n\n    - **latex**: OPTIONAL; String.\n      LaTeX rendering of the sibling string, suitable for use with a LaTeX or MathJax-like renderer.\n\n    - **unicode**: OPTIONAL; String.\n      Unicode rendering of the sibling string, using Unicode code points for display features where practical.",
                    "properties": {
                        "html": {
                            "x-optimade-type": "string",
                            "x-optimade-unit": "inapplicable",
                            "type": [
                                "string",
                                "null"
                            ],
                            "description": "HTML rendering of the sibling string."
                        },
                        "latex": {
                            "x-optimade-type": "string",
                            "x-optimade-unit": "inapplicable",
                            "type": [
                                "string",
                                "null"
                            ],
                            "description": "LaTeX rendering of the sibling string."
                        },
                        "unicode": {
                            "x-optimade-type": "string",
                            "x-optimade-unit": "inapplicable",
                            "type": [
                                "string",
                                "null"
                            ],
                            "description": "Unicode rendering of the sibling string."
                        }
                    },
                    "examples": [
                        {
                            "html": "<i>P</i> 2<sub>1</sub>/<i>c</i>",
                            "latex": "\\mathit{P}\\,2_{1}/c",
                            "unicode": "P2\u2081/c"
                        }
                    ]
                },
                "examples": [
                    [
                        {
                            "html": "<i>P</i> 1",
                            "latex": "\\mathrm{P} 1",
                            "unicode": "P 1"
                        }
                    ]
                ]
            },
            "hm_extended_aliases_markup": {
                "$id": "https://schemas.httk.org/defs/v0.1/properties/spacegroups/hm_extended_aliases_markup",
                "x-optimade-requirements": {
                    "support": "may",
                    "sortable": false,
                    "query-support": "none",
                    "response-level": "may"
                },
                "title": "Extended Hermann-Mauguin alias markups",
                "x-optimade-type": "list",
                "x-optimade-definition": {
                    "kind": "property",
                    "version": "0.1.0",
                    "format": "1.3",
                    "name": "hm_extended_aliases_markup",
                    "label": "hm_extended_aliases_markup_spacegroups"
                },
                "x-optimade-unit": "inapplicable",
                "type": [
                    "array",
                    "null"
                ],
                "description": "Display-oriented renderings corresponding element-by-element to the alternate extended Hermann-Mauguin symbols in `hm_extended_aliases`.\n\nThe plain string values are stored in the corresponding unsuffixed alias list; this list only provides alternate markup forms for display.",
                "items": {
                    "$id": "https://schemas.httk.org/defs/v0.1/properties/core/string_markups",
                    "title": "String markups",
                    "x-optimade-type": "dictionary",
                    "x-optimade-definition": {
                        "kind": "property",
                        "version": "0.1.0",
                        "format": "1.3",
                        "name": "string_markups",
                        "label": "string_markups_core"
                    },
                    "x-optimade-unit": "inapplicable",
                    "type": [
                        "object",
                        "null"
                    ],
                    "description": "Strings with alternate markup and/or encoding for display rendering.\n\nThe object is intended for display-oriented variants only, a sibling property should be used for canonical plain string value.\n\n**Requirements/Conventions**:\n\n- It MUST be a dictionary with the following keys:\n\n    - **html**: OPTIONAL; String.\n      HTML rendering of the sibling string, using inline HTML elements where needed for typographic structure such as subscripts, superscripts, overlines, fractions, and line breaks.\n\n    - **latex**: OPTIONAL; String.\n      LaTeX rendering of the sibling string, suitable for use with a LaTeX or MathJax-like renderer.\n\n    - **unicode**: OPTIONAL; String.\n      Unicode rendering of the sibling string, using Unicode code points for display features where practical.",
                    "properties": {
                        "html": {
                            "x-optimade-type": "string",
                            "x-optimade-unit": "inapplicable",
                            "type": [
                                "string",
                                "null"
                            ],
                            "description": "HTML rendering of the sibling string."
                        },
                        "latex": {
                            "x-optimade-type": "string",
                            "x-optimade-unit": "inapplicable",
                            "type": [
                                "string",
                                "null"
                            ],
                            "description": "LaTeX rendering of the sibling string."
                        },
                        "unicode": {
                            "x-optimade-type": "string",
                            "x-optimade-unit": "inapplicable",
                            "type": [
                                "string",
                                "null"
                            ],
                            "description": "Unicode rendering of the sibling string."
                        }
                    },
                    "examples": [
                        {
                            "html": "<i>P</i> 2<sub>1</sub>/<i>c</i>",
                            "latex": "\\mathit{P}\\,2_{1}/c",
                            "unicode": "P2\u2081/c"
                        }
                    ]
                },
                "examples": [
                    [
                        {
                            "html": "<i>P</i> 1",
                            "latex": "\\mathrm{P} 1",
                            "unicode": "P 1"
                        }
                    ]
                ]
            },
            "schoenflies_markup": {
                "$id": "https://schemas.httk.org/defs/v0.1/properties/spacegroups/schoenflies_markup",
                "x-optimade-requirements": {
                    "support": "may",
                    "sortable": false,
                    "query-support": "none",
                    "response-level": "may"
                },
                "title": "Schoenflies symbol markups",
                "x-optimade-definition": {
                    "kind": "property",
                    "version": "0.1.0",
                    "format": "1.3",
                    "name": "schoenflies_markup",
                    "label": "schoenflies_markup_spacegroups"
                },
                "description": "Display-oriented renderings of the space-group Schoenflies symbol in `schoenflies`.\nThe plain string value is stored in the corresponding unsuffixed property; this object only provides alternate markup forms for display.",
                "x-optimade-type": "dictionary",
                "x-optimade-unit": "inapplicable",
                "type": [
                    "object",
                    "null"
                ],
                "properties": {
                    "html": {
                        "x-optimade-type": "string",
                        "x-optimade-unit": "inapplicable",
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "HTML rendering of the sibling string."
                    },
                    "latex": {
                        "x-optimade-type": "string",
                        "x-optimade-unit": "inapplicable",
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "LaTeX rendering of the sibling string."
                    },
                    "unicode": {
                        "x-optimade-type": "string",
                        "x-optimade-unit": "inapplicable",
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Unicode rendering of the sibling string."
                    }
                },
                "examples": [
                    {
                        "html": "<i>P</i> 2<sub>1</sub>/<i>c</i>",
                        "latex": "\\mathit{P}\\,2_{1}/c",
                        "unicode": "P2\u2081/c"
                    }
                ]
            }
        }
    },
    "examples": [
        [
            {
                "setting_it_nc": "5:b1",
                "it_number": 5,
                "hall_entry": "c_2y"
            }
        ]
    ]
}