# Anyterial definition provider standard (standard)

This page documents an [OPTIMADE](https://www.optimade.org/) [Standard Definition](https://schemas.optimade.org/#definitions). See [https://schemas.optimade.org/](https://schemas.optimade.org/) for more information.

**ID: [`https://schemas.anyterial.se/defs/v0.1/standards/anyterial`](https://schemas.anyterial.se/defs/v0.1/standards/anyterial.md)**  
**Definition name:** `anyterial`

**Standard name:** Anyterial definition provider standard  
**Description:** The Anyterial definition provider standard, comprising the spacegroups, pointgroups, and transformations entry types for crystallographic symmetry data.  

**Formats:** [[JSON](anyterial.json)] [[MD](anyterial.md)]

This standard defines the following entrytypes:

* **[Anyterial space group symmetry fields (spacegroups)](../entrytypes/spacegroups.md)** (entrytype) - [`https://schemas.anyterial.se/defs/v0.1/entrytypes/spacegroups`](https://schemas.anyterial.se/defs/v0.1/entrytypes/spacegroups.md)  
  

    **Requirements/Conventions:**  

    - **Support:** OPTIONAL.  


* **[Anyterial point group symmetry fields (pointgroups)](../entrytypes/pointgroups.md)** (entrytype) - [`https://schemas.anyterial.se/defs/v0.1/entrytypes/pointgroups`](https://schemas.anyterial.se/defs/v0.1/entrytypes/pointgroups.md)  
  

    **Requirements/Conventions:**  

    - **Support:** OPTIONAL.  


* **[Anyterial transformation fields (transformations)](../entrytypes/transformations.md)** (entrytype) - [`https://schemas.anyterial.se/defs/v0.1/entrytypes/transformations`](https://schemas.anyterial.se/defs/v0.1/entrytypes/transformations.md)  
  

    **Requirements/Conventions:**  

    - **Support:** OPTIONAL.  



**JSON definition:**

``` json
{
    "$id": "https://schemas.anyterial.se/defs/v0.1/standards/anyterial",
    "$schema": "https://schemas.optimade.org/meta/v1.3/optimade/standard_definition.json",
    "title": "Anyterial definition provider standard",
    "description": "The Anyterial definition provider standard, comprising the spacegroups, pointgroups, and transformations entry types for crystallographic symmetry data.",
    "x-optimade-definition": {
        "label": "anyterial_standard",
        "kind": "standard",
        "format": "1.3",
        "version": "0.1.0",
        "name": "anyterial"
    },
    "entrytypes": {
        "spacegroups": {
            "$id": "https://schemas.anyterial.se/defs/v0.1/entrytypes/spacegroups",
            "x-optimade-requirements": {
                "support": "may"
            },
            "type": "object",
            "title": "Anyterial space group symmetry fields",
            "x-optimade-definition": {
                "kind": "entrytype",
                "format": "1.3",
                "version": "0.1.0",
                "name": "spacegroups",
                "label": "spacegroups_entrytype_anyterial"
            },
            "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.anyterial.se/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.",
                    "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.anyterial.se/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.anyterial.se/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"
                                }
                            ],
                            "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"
                                    }
                                }
                            ],
                            "face_rules": [],
                            "edge_rules": [],
                            "vertex_rules": []
                        }
                    ]
                },
                "asu_str": {
                    "$id": "https://schemas.anyterial.se/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.",
                    "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.anyterial.se/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.",
                    "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.anyterial.se/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-system 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.",
                    "x-optimade-unit": "inapplicable",
                    "enum": [
                        "aP",
                        "mP",
                        "mS",
                        "mI",
                        "oP",
                        "oS",
                        "oF",
                        "oI",
                        "tP",
                        "tI",
                        "hP",
                        "hR",
                        "cP",
                        "cI",
                        "cF"
                    ],
                    "examples": [
                        "aP",
                        "mS"
                    ]
                },
                "cctbx_fft_grid_factors": {
                    "$id": "https://schemas.anyterial.se/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.",
                    "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
                            ],
                            "seminvariant": [
                                1,
                                1
                            ],
                            "euclidean": [
                                1,
                                1
                            ]
                        },
                        {
                            "space_group": [
                                1,
                                1
                            ],
                            "seminvariant": [
                                2,
                                2
                            ],
                            "euclidean": [
                                2,
                                2
                            ]
                        }
                    ]
                },
                "centering_translations": {
                    "$id": "https://schemas.anyterial.se/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.anyterial.se/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.",
                        "x-optimade-dimensions": {
                            "names": [
                                "dim_lattice"
                            ],
                            "sizes": [
                                3
                            ]
                        },
                        "items": {
                            "$id": "https://schemas.anyterial.se/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.anyterial.se/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.",
                    "x-optimade-unit": "inapplicable",
                    "enum": [
                        "P",
                        "A",
                        "B",
                        "C",
                        "F",
                        "I",
                        "R",
                        "H",
                        "Rrev"
                    ],
                    "examples": [
                        "P",
                        "C"
                    ]
                },
                "crystal_system": {
                    "$id": "https://schemas.anyterial.se/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.",
                    "x-optimade-unit": "inapplicable",
                    "enum": [
                        "triclinic",
                        "monoclinic",
                        "orthorhombic",
                        "tetragonal",
                        "trigonal",
                        "hexagonal",
                        "cubic"
                    ],
                    "examples": [
                        "triclinic",
                        "monoclinic"
                    ]
                },
                "hall": {
                    "$id": "https://schemas.anyterial.se/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.anyterial.se/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.anyterial.se/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.",
                    "x-optimade-unit": "inapplicable",
                    "examples": [
                        "p_1",
                        "-p_1"
                    ]
                },
                "hm_entry": {
                    "$id": "https://schemas.anyterial.se/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`.",
                    "x-optimade-unit": "inapplicable",
                    "examples": [
                        "P 1",
                        "C c c a:1",
                        "C c c b:2"
                    ]
                },
                "harker_planes": {
                    "$id": "https://schemas.anyterial.se/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.",
                    "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": "Plane equation in `x,y,z` notation when available."
                            },
                            "normal": {
                                "x-optimade-type": "list",
                                "x-optimade-unit": "inapplicable",
                                "x-optimade-dimensions": {
                                    "names": [
                                        "dim_lattice"
                                    ],
                                    "sizes": [
                                        3
                                    ]
                                },
                                "type": [
                                    "array",
                                    "null"
                                ],
                                "description": "Integer normal vector of the plane.",
                                "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.anyterial.se/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.anyterial.se/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.anyterial.se/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.anyterial.se/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.anyterial.se/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.anyterial.se/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.anyterial.se/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.anyterial.se/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.anyterial.se/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.anyterial.se/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.anyterial.se/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.anyterial.se/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.anyterial.se/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.anyterial.se/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.anyterial.se/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": "Boolean flag indicating whether the space group is centric.",
                    "x-optimade-unit": "inapplicable",
                    "examples": [
                        false,
                        true
                    ]
                },
                "is_chiral": {
                    "$id": "https://schemas.anyterial.se/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": "Boolean flag indicating whether the space group is chiral.",
                    "x-optimade-unit": "inapplicable",
                    "examples": [
                        true,
                        false
                    ]
                },
                "is_enantiomorphic": {
                    "$id": "https://schemas.anyterial.se/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.",
                    "x-optimade-unit": "inapplicable",
                    "examples": [
                        false,
                        true
                    ]
                },
                "is_reference_setting": {
                    "$id": "https://schemas.anyterial.se/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": "Boolean flag indicating whether this Hall setting is the selected reference setting for its International Tables space-group number.",
                    "x-optimade-unit": "inapplicable",
                    "examples": [
                        true,
                        false
                    ]
                },
                "it_coordinate_system_code": {
                    "$id": "https://schemas.anyterial.se/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.anyterial.se/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.anyterial.se/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.anyterial.se/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.",
                    "x-optimade-unit": "inapplicable",
                    "enum": [
                        "-1",
                        "2/m",
                        "mmm",
                        "4/m",
                        "4/mmm",
                        "-3",
                        "-3m",
                        "6/m",
                        "6/mmm",
                        "m-3",
                        "m-3m"
                    ],
                    "examples": [
                        "-1",
                        "2/m"
                    ]
                },
                "n_centering_translations": {
                    "$id": "https://schemas.anyterial.se/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.anyterial.se/defs/v0.1/properties/pointgroups/n_pointgroup_symops",
                    "x-optimade-requirements": {
                        "support": "may",
                        "sortable": false,
                        "query-support": "none",
                        "response-level": "may"
                    },
                    "title": "Number of pointgroup symops",
                    "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.",
                    "x-optimade-unit": "inapplicable",
                    "examples": [
                        1,
                        2
                    ]
                },
                "n_symops": {
                    "$id": "https://schemas.anyterial.se/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.anyterial.se/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.",
                    "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"
                    ],
                    "examples": [
                        "1",
                        "2/m",
                        "m-3m"
                    ]
                },
                "schoenflies": {
                    "$id": "https://schemas.anyterial.se/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"
                    ],
                    "examples": [
                        "C1.1",
                        "C2.3"
                    ]
                },
                "setting": {
                    "$id": "https://schemas.anyterial.se/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.anyterial.se/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.anyterial.se/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.anyterial.se/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.anyterial.se/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.anyterial.se/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.anyterial.se/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.",
                                "x-optimade-unit": "inapplicable",
                                "examples": [
                                    "p_1",
                                    "-p_1"
                                ]
                            },
                            "hall": {
                                "$id": "https://schemas.anyterial.se/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.anyterial.se/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.anyterial.se/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.anyterial.se/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.anyterial.se/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.anyterial.se/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.anyterial.se/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.anyterial.se/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.anyterial.se/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.anyterial.se/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.anyterial.se/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.\n\nThese characterize phase restrictions and FFT grid constraints associated with the symmetry.\nThey are on format of a list of dictionaries.\nThe dictionaries MUST contain the fields:\n\n- vector: List of Integer. One structure-seminvariant condition vector.\n- modulus: Integer. Modulus for the seminvariant congruence. ",
                    "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": "Modulus for the seminvariant congruence.",
                                "x-optimade-unit": "inapplicable"
                            }
                        },
                        "x-optimade-unit": "inapplicable"
                    },
                    "examples": [
                        [
                            {
                                "vector": [
                                    1,
                                    0
                                ],
                                "modulus": 0
                            },
                            {
                                "vector": [
                                    0,
                                    1
                                ],
                                "modulus": 0
                            },
                            {
                                "vector": [
                                    0,
                                    0
                                ],
                                "modulus": 0
                            }
                        ],
                        [
                            {
                                "vector": [
                                    1,
                                    0
                                ],
                                "modulus": 2
                            },
                            {
                                "vector": [
                                    0,
                                    1
                                ],
                                "modulus": 2
                            },
                            {
                                "vector": [
                                    0,
                                    0
                                ],
                                "modulus": 2
                            }
                        ]
                    ]
                },
                "symops": {
                    "$id": "https://schemas.anyterial.se/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.anyterial.se/defs/v0.1/properties/symmetry/op",
                    "items": {
                        "$id": "https://schemas.anyterial.se/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    - **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.",
                        "properties": {
                            "affine_transformation": {
                                "$id": "https://schemas.anyterial.se/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 affine transformation is a geometric transformation preserving points, straight lines, and parallelism (collinearity), but may not preserve Euclidean distances and angles.\nThe transformation is represented by a 3 by 3 matrix and a 3-vector, both serialized with exact string entries.\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\n    - **det**: OPTIONAL; Integer.\n      Determinant of `matrix` when the generator emits it.\n\n    - **is\\_orthogonal**: OPTIONAL; Boolean.\n      Whether `matrix` is orthogonal in the exact representation used by the generator.",
                                "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.anyterial.se/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.anyterial.se/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.anyterial.se/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."
                                    },
                                    "is_orthogonal": {
                                        "x-optimade-type": "boolean",
                                        "x-optimade-unit": "inapplicable",
                                        "type": [
                                            "boolean",
                                            "null"
                                        ],
                                        "description": "Whether the matrix part is orthogonal."
                                    }
                                },
                                "examples": [
                                    {
                                        "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": {
                                "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"
                                ]
                            },
                            "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."
                            },
                            "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.anyterial.se/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.anyterial.se/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.anyterial.se/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.anyterial.se/defs/v0.1/properties/symmetry/op",
                    "items": {
                        "$id": "https://schemas.anyterial.se/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    - **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.",
                        "properties": {
                            "affine_transformation": {
                                "$id": "https://schemas.anyterial.se/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 affine transformation is a geometric transformation preserving points, straight lines, and parallelism (collinearity), but may not preserve Euclidean distances and angles.\nThe transformation is represented by a 3 by 3 matrix and a 3-vector, both serialized with exact string entries.\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\n    - **det**: OPTIONAL; Integer.\n      Determinant of `matrix` when the generator emits it.\n\n    - **is\\_orthogonal**: OPTIONAL; Boolean.\n      Whether `matrix` is orthogonal in the exact representation used by the generator.",
                                "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.anyterial.se/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.anyterial.se/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.anyterial.se/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."
                                    },
                                    "is_orthogonal": {
                                        "x-optimade-type": "boolean",
                                        "x-optimade-unit": "inapplicable",
                                        "type": [
                                            "boolean",
                                            "null"
                                        ],
                                        "description": "Whether the matrix part is orthogonal."
                                    }
                                },
                                "examples": [
                                    {
                                        "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": {
                                "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"
                                ]
                            },
                            "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."
                            },
                            "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.anyterial.se/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.anyterial.se/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.anyterial.se/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": "Minimal generator subset of the full symmetry-operation group for a space-group setting.\n\nEach list member is an operation on the format defined by the property definition: https://schemas.anyterial.se/defs/v0.1/properties/symmetry/op",
                    "items": {
                        "$id": "https://schemas.anyterial.se/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    - **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.",
                        "properties": {
                            "affine_transformation": {
                                "$id": "https://schemas.anyterial.se/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 affine transformation is a geometric transformation preserving points, straight lines, and parallelism (collinearity), but may not preserve Euclidean distances and angles.\nThe transformation is represented by a 3 by 3 matrix and a 3-vector, both serialized with exact string entries.\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\n    - **det**: OPTIONAL; Integer.\n      Determinant of `matrix` when the generator emits it.\n\n    - **is\\_orthogonal**: OPTIONAL; Boolean.\n      Whether `matrix` is orthogonal in the exact representation used by the generator.",
                                "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.anyterial.se/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.anyterial.se/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.anyterial.se/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."
                                    },
                                    "is_orthogonal": {
                                        "x-optimade-type": "boolean",
                                        "x-optimade-unit": "inapplicable",
                                        "type": [
                                            "boolean",
                                            "null"
                                        ],
                                        "description": "Whether the matrix part is orthogonal."
                                    }
                                },
                                "examples": [
                                    {
                                        "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": {
                                "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"
                                ]
                            },
                            "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."
                            },
                            "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.anyterial.se/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.anyterial.se/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_representative": {
                    "$id": "https://schemas.anyterial.se/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.\n\nEach list member is an operation on the format defined by the property definition: https://schemas.anyterial.se/defs/v0.1/properties/symmetry/op",
                    "items": {
                        "$id": "https://schemas.anyterial.se/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    - **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.",
                        "properties": {
                            "affine_transformation": {
                                "$id": "https://schemas.anyterial.se/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 affine transformation is a geometric transformation preserving points, straight lines, and parallelism (collinearity), but may not preserve Euclidean distances and angles.\nThe transformation is represented by a 3 by 3 matrix and a 3-vector, both serialized with exact string entries.\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\n    - **det**: OPTIONAL; Integer.\n      Determinant of `matrix` when the generator emits it.\n\n    - **is\\_orthogonal**: OPTIONAL; Boolean.\n      Whether `matrix` is orthogonal in the exact representation used by the generator.",
                                "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.anyterial.se/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.anyterial.se/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.anyterial.se/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."
                                    },
                                    "is_orthogonal": {
                                        "x-optimade-type": "boolean",
                                        "x-optimade-unit": "inapplicable",
                                        "type": [
                                            "boolean",
                                            "null"
                                        ],
                                        "description": "Whether the matrix part is orthogonal."
                                    }
                                },
                                "examples": [
                                    {
                                        "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": {
                                "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"
                                ]
                            },
                            "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."
                            },
                            "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.anyterial.se/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.anyterial.se/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.anyterial.se/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.",
                    "items": {
                        "$id": "https://schemas.anyterial.se/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\nWyckoff positions represent symmetry-equivalent sites partitioned by multiplicity and site symmetry in a given space group.\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 conventional cell.\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 indicating whether each fractional coordinate has a free parameter.\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/structures/wyckoff_positions",
                                "title": "Wyckoff positions",
                                "x-optimade-type": "list",
                                "x-optimade-definition": {
                                    "label": "wyckoff_positions_optimade_structures",
                                    "kind": "property",
                                    "version": "1.3.0",
                                    "format": "1.2",
                                    "name": "wyckoff_positions"
                                },
                                "x-optimade-dimensions": {
                                    "names": [
                                        "dim_sites"
                                    ],
                                    "sizes": [
                                        null
                                    ]
                                },
                                "type": [
                                    "array",
                                    "null"
                                ],
                                "description": "A list of Wyckoff symbols of sites (where values for sites are specified with the same order of the property `cartesian_site_positions` and/or `fractional_site_positions`).\n\n**Requirements/Conventions**:\n\n- MUST have length equal to the number of sites in the structure (first dimension of the list properties `cartesian_site_positions` and/or `fractional_site_positions`).\n- If provided, MUST list a single letter (`a`-`z` or `\u03b1`) Wyckoff position for each site in the structure according to the International Tables for Crystallography vol. A (IUCr, 2016).\n\n**Bibliographic References**:\n\n- IUCr (2016). International Tables for Crystallography vol. A. Space-group Symmetry, Ed. M. I. Aroyo, 6-th edition. Chichester, John Wiley & Sons.",
                                "x-optimade-unit": "inapplicable",
                                "items": {
                                    "$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 conventional cell."
                            },
                            "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": "A list of three booleans indicating whether each fractional coordinate contains a free parameter.",
                                "items": {
                                    "x-optimade-type": "boolean",
                                    "x-optimade-unit": "inapplicable",
                                    "type": [
                                        "boolean"
                                    ],
                                    "description": "A boolean indicating if the corresponding coordinate is free."
                                }
                            },
                            "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), when distinct from `first_orbit`."
                            },
                            "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 matrix part may be singular because special Wyckoff positions can constrain or identify parameters.",
                                "items": {
                                    "$id": "https://schemas.anyterial.se/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 affine transformation is a geometric transformation preserving points, straight lines, and parallelism (collinearity), but may not preserve Euclidean distances and angles.\nThe transformation is represented by a 3 by 3 matrix and a 3-vector, both serialized with exact string entries.\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\n    - **det**: OPTIONAL; Integer.\n      Determinant of `matrix` when the generator emits it.\n\n    - **is\\_orthogonal**: OPTIONAL; Boolean.\n      Whether `matrix` is orthogonal in the exact representation used by the generator.",
                                    "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.anyterial.se/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.anyterial.se/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.anyterial.se/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."
                                        },
                                        "is_orthogonal": {
                                            "x-optimade-type": "boolean",
                                            "x-optimade-unit": "inapplicable",
                                            "type": [
                                                "boolean",
                                                "null"
                                            ],
                                            "description": "Whether the matrix part is orthogonal."
                                        }
                                    },
                                    "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`.",
                                "items": {
                                    "$id": "https://schemas.anyterial.se/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 affine transformation is a geometric transformation preserving points, straight lines, and parallelism (collinearity), but may not preserve Euclidean distances and angles.\nThe transformation is represented by a 3 by 3 matrix and a 3-vector, both serialized with exact string entries.\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\n    - **det**: OPTIONAL; Integer.\n      Determinant of `matrix` when the generator emits it.\n\n    - **is\\_orthogonal**: OPTIONAL; Boolean.\n      Whether `matrix` is orthogonal in the exact representation used by the generator.",
                                    "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.anyterial.se/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.anyterial.se/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.anyterial.se/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."
                                        },
                                        "is_orthogonal": {
                                            "x-optimade-type": "boolean",
                                            "x-optimade-unit": "inapplicable",
                                            "type": [
                                                "boolean",
                                                "null"
                                            ],
                                            "description": "Whether the matrix part is orthogonal."
                                        }
                                    },
                                    "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"
                                    }
                                ],
                                "orbit_mod_centering": [
                                    {
                                        "matrix": [
                                            [
                                                "1",
                                                "0",
                                                "0"
                                            ],
                                            [
                                                "0",
                                                "1",
                                                "0"
                                            ],
                                            [
                                                "0",
                                                "0",
                                                "1"
                                            ]
                                        ],
                                        "vector": [
                                            "0",
                                            "0",
                                            "0"
                                        ],
                                        "xyz": "x,y,z"
                                    }
                                ]
                            }
                        ]
                    ]
                },
                "wyckoff_sets": {
                    "$id": "https://schemas.anyterial.se/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.",
                    "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.anyterial.se/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.anyterial.se/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.anyterial.se/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.anyterial.se/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.anyterial.se/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.anyterial.se/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.anyterial.se/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.anyterial.se/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.anyterial.se/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.anyterial.se/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.anyterial.se/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.anyterial.se/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.anyterial.se/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.anyterial.se/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.anyterial.se/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.anyterial.se/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.anyterial.se/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"
                        }
                    ]
                }
            }
        },
        "pointgroups": {
            "$id": "https://schemas.anyterial.se/defs/v0.1/entrytypes/pointgroups",
            "x-optimade-requirements": {
                "support": "may"
            },
            "type": "object",
            "title": "Anyterial point group symmetry fields",
            "x-optimade-definition": {
                "kind": "entrytype",
                "format": "1.3",
                "version": "0.1.0",
                "name": "pointgroups",
                "label": "pointgroups_entrytype_anyterial"
            },
            "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"
                },
                "character_table_complex": {
                    "$id": "https://schemas.anyterial.se/defs/v0.1/properties/pointgroups/character_table_complex",
                    "x-optimade-requirements": {
                        "support": "may",
                        "sortable": false,
                        "query-support": "none",
                        "response-level": "may"
                    },
                    "title": "Complex character table",
                    "$comment": "Generated from data-generators JSON-LD fields without external definition URLs.",
                    "x-optimade-type": "list",
                    "x-optimade-definition": {
                        "kind": "property",
                        "version": "0.1.0",
                        "format": "1.3",
                        "name": "character_table_complex",
                        "label": "character_table_complex_pointgroups"
                    },
                    "type": [
                        "array",
                        "null"
                    ],
                    "description": "Complex irreducible character table of the crystallographic point group.\n\nRows correspond to complex irreducible representations and columns follow the order of `conjugacy_classes`.\nCharacters are exact complex rational values stored as dictionaries with `re` and `im` fraction strings, so that they round-trip without floating-point loss.",
                    "x-optimade-unit": "inapplicable",
                    "items": {
                        "x-optimade-type": "dictionary",
                        "type": [
                            "object",
                            "null"
                        ],
                        "description": "One row of a point-group character table.",
                        "properties": {
                            "label": {
                                "x-optimade-type": "string",
                                "type": [
                                    "string",
                                    "null"
                                ],
                                "description": "Irreducible-representation label.",
                                "x-optimade-unit": "inapplicable"
                            },
                            "label_markup": {
                                "$id": "https://schemas.anyterial.se/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"
                                    }
                                ]
                            },
                            "dimension": {
                                "x-optimade-type": "integer",
                                "type": [
                                    "integer",
                                    "null"
                                ],
                                "description": "Dimension of the irreducible representation.",
                                "x-optimade-unit": "inapplicable"
                            },
                            "characters": {
                                "x-optimade-type": "list",
                                "type": [
                                    "array",
                                    "null"
                                ],
                                "description": "Characters for the conjugacy classes in table order.",
                                "items": {
                                    "x-optimade-type": "dictionary",
                                    "type": [
                                        "object",
                                        "null"
                                    ],
                                    "description": "One complex character value represented as exact real and imaginary parts.",
                                    "x-optimade-unit": "inapplicable",
                                    "properties": {
                                        "re": {
                                            "x-optimade-type": "string",
                                            "type": [
                                                "string",
                                                "null"
                                            ],
                                            "description": "Exact real part represented as a string.",
                                            "x-optimade-unit": "inapplicable"
                                        },
                                        "im": {
                                            "x-optimade-type": "string",
                                            "type": [
                                                "string",
                                                "null"
                                            ],
                                            "description": "Exact imaginary part represented as a string.",
                                            "x-optimade-unit": "inapplicable"
                                        }
                                    }
                                },
                                "x-optimade-unit": "inapplicable"
                            },
                            "frobenius_schur_indicator": {
                                "x-optimade-type": "integer",
                                "type": [
                                    "integer",
                                    "null"
                                ],
                                "description": "Frobenius-Schur indicator of the representation.",
                                "x-optimade-unit": "inapplicable"
                            },
                            "basis_linear": {
                                "x-optimade-type": "list",
                                "type": [
                                    "array",
                                    "null"
                                ],
                                "description": "Linear basis functions transforming as this representation.",
                                "items": {
                                    "x-optimade-type": "string",
                                    "type": [
                                        "string",
                                        "null"
                                    ],
                                    "description": "One basis function.",
                                    "x-optimade-unit": "inapplicable"
                                },
                                "x-optimade-unit": "inapplicable"
                            },
                            "basis_rotation": {
                                "x-optimade-type": "list",
                                "type": [
                                    "array",
                                    "null"
                                ],
                                "description": "Rotational basis functions transforming as this representation.",
                                "items": {
                                    "x-optimade-type": "string",
                                    "type": [
                                        "string",
                                        "null"
                                    ],
                                    "description": "One rotational basis function.",
                                    "x-optimade-unit": "inapplicable"
                                },
                                "x-optimade-unit": "inapplicable"
                            },
                            "basis_quadratic": {
                                "x-optimade-type": "list",
                                "type": [
                                    "array",
                                    "null"
                                ],
                                "description": "Quadratic basis functions transforming as this representation.",
                                "items": {
                                    "x-optimade-type": "string",
                                    "type": [
                                        "string",
                                        "null"
                                    ],
                                    "description": "One quadratic basis function.",
                                    "x-optimade-unit": "inapplicable"
                                },
                                "x-optimade-unit": "inapplicable"
                            }
                        },
                        "x-optimade-unit": "inapplicable"
                    },
                    "examples": [
                        [
                            {
                                "label": "A",
                                "dimension": 1,
                                "characters": [
                                    1
                                ],
                                "frobenius_schur_indicator": 1,
                                "label_markup": {
                                    "latex": "A",
                                    "unicode": "A"
                                }
                            }
                        ],
                        [
                            {
                                "label": "Ag",
                                "dimension": 1,
                                "characters": [
                                    1,
                                    1
                                ],
                                "frobenius_schur_indicator": 1,
                                "label_markup": {
                                    "latex": "A_{g}",
                                    "unicode": "Ag"
                                }
                            },
                            {
                                "label": "Au",
                                "dimension": 1,
                                "characters": [
                                    1,
                                    -1
                                ],
                                "frobenius_schur_indicator": 1,
                                "label_markup": {
                                    "latex": "A_{u}",
                                    "unicode": "Au"
                                }
                            }
                        ]
                    ]
                },
                "character_table_real": {
                    "$id": "https://schemas.anyterial.se/defs/v0.1/properties/pointgroups/character_table_real",
                    "x-optimade-requirements": {
                        "support": "may",
                        "sortable": false,
                        "query-support": "none",
                        "response-level": "may"
                    },
                    "title": "Real character table",
                    "$comment": "Generated from data-generators JSON-LD fields without external definition URLs.",
                    "x-optimade-type": "list",
                    "x-optimade-definition": {
                        "kind": "property",
                        "version": "0.1.0",
                        "format": "1.3",
                        "name": "character_table_real",
                        "label": "character_table_real_pointgroups"
                    },
                    "type": [
                        "array",
                        "null"
                    ],
                    "description": "Real irreducible character table of the crystallographic point group.\n\nRows correspond to real irreducible representations and columns follow the order of `conjugacy_classes`.\nCharacters of the real table are exact integers and are therefore stored as plain integers, unlike the `re`/`im` fraction-string pairs of `character_table_complex`.",
                    "x-optimade-unit": "inapplicable",
                    "items": {
                        "x-optimade-type": "dictionary",
                        "type": [
                            "object",
                            "null"
                        ],
                        "description": "One row of a point-group character table.",
                        "properties": {
                            "label": {
                                "x-optimade-type": "string",
                                "type": [
                                    "string",
                                    "null"
                                ],
                                "description": "Irreducible-representation label.",
                                "x-optimade-unit": "inapplicable"
                            },
                            "label_markup": {
                                "$id": "https://schemas.anyterial.se/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"
                                    }
                                ]
                            },
                            "dimension": {
                                "x-optimade-type": "integer",
                                "type": [
                                    "integer",
                                    "null"
                                ],
                                "description": "Dimension of the irreducible representation.",
                                "x-optimade-unit": "inapplicable"
                            },
                            "characters": {
                                "x-optimade-type": "list",
                                "type": [
                                    "array",
                                    "null"
                                ],
                                "description": "Characters for the conjugacy classes in table order.",
                                "items": {
                                    "x-optimade-type": "integer",
                                    "type": [
                                        "integer",
                                        "null"
                                    ],
                                    "description": "One real character value represented as an exact integer.",
                                    "x-optimade-unit": "inapplicable"
                                },
                                "x-optimade-unit": "inapplicable"
                            },
                            "frobenius_schur_indicator": {
                                "x-optimade-type": "integer",
                                "type": [
                                    "integer",
                                    "null"
                                ],
                                "description": "Frobenius-Schur indicator of the representation.",
                                "x-optimade-unit": "inapplicable"
                            },
                            "basis_linear": {
                                "x-optimade-type": "list",
                                "type": [
                                    "array",
                                    "null"
                                ],
                                "description": "Linear basis functions transforming as this representation.",
                                "items": {
                                    "x-optimade-type": "string",
                                    "type": [
                                        "string",
                                        "null"
                                    ],
                                    "description": "One basis function.",
                                    "x-optimade-unit": "inapplicable"
                                },
                                "x-optimade-unit": "inapplicable"
                            },
                            "basis_rotation": {
                                "x-optimade-type": "list",
                                "type": [
                                    "array",
                                    "null"
                                ],
                                "description": "Rotational basis functions transforming as this representation.",
                                "items": {
                                    "x-optimade-type": "string",
                                    "type": [
                                        "string",
                                        "null"
                                    ],
                                    "description": "One rotational basis function.",
                                    "x-optimade-unit": "inapplicable"
                                },
                                "x-optimade-unit": "inapplicable"
                            },
                            "basis_quadratic": {
                                "x-optimade-type": "list",
                                "type": [
                                    "array",
                                    "null"
                                ],
                                "description": "Quadratic basis functions transforming as this representation.",
                                "items": {
                                    "x-optimade-type": "string",
                                    "type": [
                                        "string",
                                        "null"
                                    ],
                                    "description": "One quadratic basis function.",
                                    "x-optimade-unit": "inapplicable"
                                },
                                "x-optimade-unit": "inapplicable"
                            }
                        },
                        "x-optimade-unit": "inapplicable"
                    },
                    "examples": [
                        [
                            {
                                "label": "A",
                                "dimension": 1,
                                "characters": [
                                    1
                                ],
                                "basis_linear": [
                                    "x",
                                    "y"
                                ],
                                "basis_rotation": [
                                    "Rx",
                                    "Ry"
                                ],
                                "basis_quadratic": [
                                    "x^2",
                                    "y^2"
                                ],
                                "label_markup": {
                                    "latex": "A",
                                    "unicode": "A"
                                }
                            }
                        ],
                        [
                            {
                                "label": "Ag",
                                "dimension": 1,
                                "characters": [
                                    1,
                                    1
                                ],
                                "basis_rotation": [
                                    "Rx",
                                    "Ry"
                                ],
                                "basis_quadratic": [
                                    "x^2",
                                    "y^2"
                                ],
                                "label_markup": {
                                    "latex": "A_{g}",
                                    "unicode": "Ag"
                                }
                            },
                            {
                                "label": "Au",
                                "dimension": 1,
                                "characters": [
                                    1,
                                    -1
                                ],
                                "basis_linear": [
                                    "x",
                                    "y"
                                ],
                                "label_markup": {
                                    "latex": "A_{u}",
                                    "unicode": "Au"
                                }
                            }
                        ]
                    ]
                },
                "conjugacy_classes": {
                    "$id": "https://schemas.anyterial.se/defs/v0.1/properties/pointgroups/conjugacy_classes",
                    "x-optimade-requirements": {
                        "support": "may",
                        "sortable": false,
                        "query-support": "none",
                        "response-level": "may"
                    },
                    "title": "Conjugacy classes",
                    "x-optimade-type": "list",
                    "x-optimade-definition": {
                        "kind": "property",
                        "version": "0.1.0",
                        "format": "1.3",
                        "name": "conjugacy_classes",
                        "label": "conjugacy_classes_pointgroups"
                    },
                    "type": [
                        "array",
                        "null"
                    ],
                    "description": "Conjugacy classes of a crystallographic point group.\n\nEach class lists its member operation indices, a representative operation, a conventional class label, and operation-type metadata used by the character tables.\nOperation indices refer to positions in the `symops` list of the same point-group record, starting at 0.\n\n**Requirements/Conventions**:\n\n- It MUST be a list of dictionaries, one per conjugacy class, ordered consistently with the character tables.\n- **size** MUST equal the length of **members**.\n- **op\\_type** is the signed integer rotation-type code of the representative operation: `1`, `2`, `3`, `4`, `6` for proper rotations, and the negated value for the corresponding rotoinversions, with `-2` denoting a mirror plane.",
                    "x-optimade-unit": "inapplicable",
                    "items": {
                        "x-optimade-type": "dictionary",
                        "type": [
                            "object",
                            "null"
                        ],
                        "description": "One conjugacy class of a crystallographic point group.",
                        "properties": {
                            "label": {
                                "x-optimade-type": "dictionary",
                                "type": [
                                    "object",
                                    "null"
                                ],
                                "description": "Rendered class label.",
                                "properties": {
                                    "ascii": {
                                        "x-optimade-type": "string",
                                        "type": [
                                            "string",
                                            "null"
                                        ],
                                        "description": "Plain-text rendering intended for logs, command-line output, or compact display.",
                                        "x-optimade-unit": "inapplicable"
                                    },
                                    "unicode": {
                                        "x-optimade-type": "string",
                                        "type": [
                                            "string",
                                            "null"
                                        ],
                                        "description": "Unicode rendering of the same label.",
                                        "x-optimade-unit": "inapplicable"
                                    },
                                    "latex": {
                                        "x-optimade-type": "string",
                                        "type": [
                                            "string",
                                            "null"
                                        ],
                                        "description": "LaTeX rendering of the same label.",
                                        "x-optimade-unit": "inapplicable"
                                    }
                                },
                                "x-optimade-unit": "inapplicable"
                            },
                            "size": {
                                "x-optimade-type": "integer",
                                "type": [
                                    "integer",
                                    "null"
                                ],
                                "description": "Number of point-group operations in the class. It MUST equal the length of `members`.",
                                "x-optimade-unit": "inapplicable"
                            },
                            "members": {
                                "x-optimade-type": "list",
                                "type": [
                                    "array",
                                    "null"
                                ],
                                "description": "Indices into the `symops` list of the operations belonging to this class.",
                                "items": {
                                    "x-optimade-type": "integer",
                                    "type": [
                                        "integer",
                                        "null"
                                    ],
                                    "description": "Operation index into `symops`.",
                                    "x-optimade-unit": "inapplicable"
                                },
                                "x-optimade-unit": "inapplicable"
                            },
                            "representative": {
                                "x-optimade-type": "integer",
                                "type": [
                                    "integer",
                                    "null"
                                ],
                                "description": "Index into `symops` of a representative operation for the class.",
                                "x-optimade-unit": "inapplicable"
                            },
                            "op_type": {
                                "x-optimade-type": "integer",
                                "type": [
                                    "integer",
                                    "null"
                                ],
                                "description": "Signed integer rotation-type code of the representative operation; negative values denote rotoinversions, with `-2` denoting a mirror plane.",
                                "enum": [
                                    1,
                                    -1,
                                    2,
                                    -2,
                                    3,
                                    -3,
                                    4,
                                    -4,
                                    6,
                                    -6
                                ],
                                "x-optimade-unit": "inapplicable"
                            },
                            "op_axis": {
                                "x-optimade-type": "list",
                                "x-optimade-dimensions": {
                                    "names": [
                                        "dim_lattice"
                                    ],
                                    "sizes": [
                                        3
                                    ]
                                },
                                "type": [
                                    "array",
                                    "null"
                                ],
                                "description": "Integer-vector axis or invariant direction of the representative operation; `[0, 0, 0]` when no axis is applicable.",
                                "items": {
                                    "x-optimade-type": "integer",
                                    "type": [
                                        "integer",
                                        "null"
                                    ],
                                    "description": "One integer component of the axis vector.",
                                    "x-optimade-unit": "inapplicable"
                                },
                                "x-optimade-unit": "inapplicable"
                            }
                        },
                        "x-optimade-unit": "inapplicable"
                    },
                    "examples": [
                        [
                            {
                                "label": {
                                    "ascii": "E",
                                    "unicode": "E",
                                    "latex": "E"
                                },
                                "size": 1,
                                "members": [
                                    0
                                ],
                                "representative": 0,
                                "op_type": 1,
                                "op_axis": [
                                    0,
                                    0,
                                    0
                                ]
                            },
                            {
                                "label": {
                                    "ascii": "i",
                                    "unicode": "i",
                                    "latex": "i"
                                },
                                "size": 1,
                                "members": [
                                    1
                                ],
                                "representative": 1,
                                "op_type": -1,
                                "op_axis": [
                                    0,
                                    0,
                                    0
                                ]
                            }
                        ]
                    ]
                },
                "crystal_system": {
                    "$id": "https://schemas.anyterial.se/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.",
                    "x-optimade-unit": "inapplicable",
                    "enum": [
                        "triclinic",
                        "monoclinic",
                        "orthorhombic",
                        "tetragonal",
                        "trigonal",
                        "hexagonal",
                        "cubic"
                    ],
                    "examples": [
                        "triclinic",
                        "monoclinic"
                    ]
                },
                "hm_symbol": {
                    "$id": "https://schemas.anyterial.se/defs/v0.1/properties/pointgroups/hm_symbol",
                    "x-optimade-requirements": {
                        "support": "may",
                        "sortable": false,
                        "query-support": "none",
                        "response-level": "may"
                    },
                    "title": "Hermann-Mauguin symbol",
                    "x-optimade-type": "string",
                    "x-optimade-definition": {
                        "kind": "property",
                        "version": "0.1.0",
                        "format": "1.3",
                        "name": "hm_symbol",
                        "label": "hm_symbol_pointgroups"
                    },
                    "type": [
                        "string",
                        "null"
                    ],
                    "description": "Hermann-Mauguin point-group symbol used as the key and display symbol for a point-group record.\n\nThe value is one of the 32 crystallographic point-group symbols in Hermann-Mauguin notation, written in ASCII with `-` denoting rotoinversion.",
                    "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"
                    ],
                    "examples": [
                        "1",
                        "-1",
                        "m-3m"
                    ]
                },
                "is_centrosymmetric": {
                    "$id": "https://schemas.anyterial.se/defs/v0.1/properties/pointgroups/is_centrosymmetric",
                    "x-optimade-requirements": {
                        "support": "may",
                        "sortable": false,
                        "query-support": "none",
                        "response-level": "may"
                    },
                    "title": "is centrosymmetric",
                    "$comment": "Generated from data-generators JSON-LD fields without external definition URLs.",
                    "x-optimade-type": "boolean",
                    "x-optimade-definition": {
                        "kind": "property",
                        "version": "0.1.0",
                        "format": "1.3",
                        "name": "is_centrosymmetric",
                        "label": "is_centrosymmetric_pointgroups"
                    },
                    "type": [
                        "boolean",
                        "null"
                    ],
                    "description": "Boolean flag indicating whether the point group contains inversion symmetry.",
                    "x-optimade-unit": "inapplicable",
                    "examples": [
                        false,
                        true
                    ]
                },
                "laue_class": {
                    "$id": "https://schemas.anyterial.se/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.",
                    "x-optimade-unit": "inapplicable",
                    "enum": [
                        "-1",
                        "2/m",
                        "mmm",
                        "4/m",
                        "4/mmm",
                        "-3",
                        "-3m",
                        "6/m",
                        "6/mmm",
                        "m-3",
                        "m-3m"
                    ],
                    "examples": [
                        "-1",
                        "2/m"
                    ]
                },
                "n_conjugacy_classes": {
                    "$id": "https://schemas.anyterial.se/defs/v0.1/properties/pointgroups/n_conjugacy_classes",
                    "x-optimade-requirements": {
                        "support": "may",
                        "sortable": false,
                        "query-support": "none",
                        "response-level": "may"
                    },
                    "title": "Number of conjugacy classes",
                    "x-optimade-type": "integer",
                    "x-optimade-definition": {
                        "kind": "property",
                        "version": "0.1.0",
                        "format": "1.3",
                        "name": "n_conjugacy_classes",
                        "label": "n_conjugacy_classes_pointgroups"
                    },
                    "type": [
                        "integer",
                        "null"
                    ],
                    "description": "Number of conjugacy classes in the crystallographic point group.\n\nThis value MUST equal the length of the `conjugacy_classes` list of the point-group entry.",
                    "x-optimade-unit": "inapplicable",
                    "examples": [
                        1,
                        2
                    ]
                },
                "order": {
                    "$id": "https://schemas.anyterial.se/defs/v0.1/properties/pointgroups/order",
                    "x-optimade-requirements": {
                        "support": "may",
                        "sortable": false,
                        "query-support": "none",
                        "response-level": "may"
                    },
                    "title": "Order of the point group",
                    "x-optimade-type": "integer",
                    "x-optimade-definition": {
                        "kind": "property",
                        "version": "0.1.0",
                        "format": "1.3",
                        "name": "order",
                        "label": "order_pointgroups"
                    },
                    "type": [
                        "integer",
                        "null"
                    ],
                    "description": "Order of the point group, i.e. the number of operations in the finite point group.\n\nThis value MUST equal the length of the `symops` list of the point-group entry.",
                    "x-optimade-unit": "inapplicable",
                    "examples": [
                        1,
                        2
                    ]
                },
                "schoenflies": {
                    "$id": "https://schemas.anyterial.se/defs/v0.1/properties/pointgroups/schoenflies",
                    "x-optimade-requirements": {
                        "support": "may",
                        "sortable": false,
                        "query-support": "none",
                        "response-level": "may"
                    },
                    "title": "Schoenflies symbol",
                    "x-optimade-type": "string",
                    "x-optimade-definition": {
                        "kind": "property",
                        "version": "0.1.0",
                        "format": "1.3",
                        "name": "schoenflies",
                        "label": "schoenflies_pointgroups"
                    },
                    "type": [
                        "string",
                        "null"
                    ],
                    "description": "The Schoenflies symbol for the crystallographic point group.\n\nThe value is one of the 32 crystallographic point-group symbols in Schoenflies notation, written in ASCII without subscript formatting.\nThe symbol `S6` is used for the point group also known as `C3i`.",
                    "x-optimade-unit": "inapplicable",
                    "enum": [
                        "C1",
                        "Ci",
                        "C2",
                        "Cs",
                        "C2h",
                        "D2",
                        "C2v",
                        "D2h",
                        "C4",
                        "S4",
                        "C4h",
                        "D4",
                        "C4v",
                        "D2d",
                        "D4h",
                        "C3",
                        "S6",
                        "D3",
                        "C3v",
                        "D3d",
                        "C6",
                        "C3h",
                        "C6h",
                        "D6",
                        "C6v",
                        "D3h",
                        "D6h",
                        "T",
                        "Th",
                        "O",
                        "Td",
                        "Oh"
                    ],
                    "examples": [
                        "C1",
                        "C2v",
                        "Oh"
                    ]
                },
                "symops": {
                    "$id": "https://schemas.anyterial.se/defs/v0.1/properties/pointgroups/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_pointgroups"
                    },
                    "x-optimade-unit": "inapplicable",
                    "type": [
                        "array",
                        "null"
                    ],
                    "description": "Full list of symmetry-operation descriptors for a point group.\nEach list member is an `op` object as defined by `/defs/v0.1/properties/symmetry/op`.\nPoint-group operations have a zero translation part, so the `screw_glide` and `origin_shift` classification fields are omitted.\n\n**Requirements/Conventions**:\n\n- It MUST be a list of dictionaries.\n- Each dictionary MUST follow the schema inherited from `/defs/v0.1/properties/symmetry/op`.",
                    "items": {
                        "$id": "https://schemas.anyterial.se/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    - **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.",
                        "properties": {
                            "affine_transformation": {
                                "$id": "https://schemas.anyterial.se/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 affine transformation is a geometric transformation preserving points, straight lines, and parallelism (collinearity), but may not preserve Euclidean distances and angles.\nThe transformation is represented by a 3 by 3 matrix and a 3-vector, both serialized with exact string entries.\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\n    - **det**: OPTIONAL; Integer.\n      Determinant of `matrix` when the generator emits it.\n\n    - **is\\_orthogonal**: OPTIONAL; Boolean.\n      Whether `matrix` is orthogonal in the exact representation used by the generator.",
                                "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.anyterial.se/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.anyterial.se/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.anyterial.se/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."
                                    },
                                    "is_orthogonal": {
                                        "x-optimade-type": "boolean",
                                        "x-optimade-unit": "inapplicable",
                                        "type": [
                                            "boolean",
                                            "null"
                                        ],
                                        "description": "Whether the matrix part is orthogonal."
                                    }
                                },
                                "examples": [
                                    {
                                        "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": {
                                "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"
                                ]
                            },
                            "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."
                            },
                            "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.anyterial.se/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.anyterial.se/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",
                                    "det": 1,
                                    "is_orthogonal": true
                                },
                                "rot_type": "1",
                                "sense": 0,
                                "axis": [
                                    0,
                                    0,
                                    0
                                ]
                            }
                        ]
                    ]
                },
                "schoenflies_markup": {
                    "$id": "https://schemas.anyterial.se/defs/v0.1/properties/pointgroups/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_pointgroups"
                    },
                    "description": "Display-oriented renderings of the 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"
                        }
                    ]
                }
            }
        },
        "transformations": {
            "$id": "https://schemas.anyterial.se/defs/v0.1/entrytypes/transformations",
            "x-optimade-requirements": {
                "support": "may"
            },
            "type": "object",
            "title": "Anyterial transformation fields",
            "x-optimade-definition": {
                "kind": "entrytype",
                "format": "1.3",
                "version": "0.1.0",
                "name": "transformations",
                "label": "transformations_entrytype_anyterial"
            },
            "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"
                },
                "hm_entry": {
                    "$id": "https://schemas.anyterial.se/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`.",
                    "x-optimade-unit": "inapplicable",
                    "examples": [
                        "P 1",
                        "C c c a:1",
                        "C c c b:2"
                    ]
                },
                "hall_entry": {
                    "$id": "https://schemas.anyterial.se/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.",
                    "x-optimade-unit": "inapplicable",
                    "examples": [
                        "p_1",
                        "-p_1"
                    ]
                },
                "it_number": {
                    "$id": "https://schemas.anyterial.se/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
                    ]
                },
                "crystal_system": {
                    "$id": "https://schemas.anyterial.se/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.",
                    "x-optimade-unit": "inapplicable",
                    "enum": [
                        "triclinic",
                        "monoclinic",
                        "orthorhombic",
                        "tetragonal",
                        "trigonal",
                        "hexagonal",
                        "cubic"
                    ],
                    "examples": [
                        "triclinic",
                        "monoclinic"
                    ]
                },
                "centering_translations": {
                    "$id": "https://schemas.anyterial.se/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.anyterial.se/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.",
                        "x-optimade-dimensions": {
                            "names": [
                                "dim_lattice"
                            ],
                            "sizes": [
                                3
                            ]
                        },
                        "items": {
                            "$id": "https://schemas.anyterial.se/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"
                            ]
                        ]
                    ]
                },
                "euclidean_normalizer": {
                    "$id": "https://schemas.anyterial.se/defs/v0.1/properties/transformations/euclidean_normalizer",
                    "x-optimade-requirements": {
                        "support": "may",
                        "sortable": false,
                        "query-support": "none",
                        "response-level": "may"
                    },
                    "title": "Euclidean normalizer",
                    "x-optimade-type": "dictionary",
                    "x-optimade-definition": {
                        "kind": "property",
                        "version": "0.1.0",
                        "format": "1.3",
                        "name": "euclidean_normalizer",
                        "label": "euclidean_normalizer_transformations"
                    },
                    "x-optimade-unit": "inapplicable",
                    "type": [
                        "object",
                        "null"
                    ],
                    "description": "Finite Euclidean normalizer operations for one crystallographic space-group setting.\n\nThe Euclidean normalizer consists of metric-preserving affine operations that normalize the space group in the chosen setting.\nThese operations are useful for algorithms that need to compare or enumerate equivalent descriptions of the same setting under rigid crystallographic changes of coordinates.\n\nThis object is generated from the finite Euclidean normalizer operations exposed by cctbx.\nIt is not a bounded candidate search table.\nTherefore fields such as `candidate_set`, `candidate_sets`, and bounded-search `bounds` do not belong to this property.\n\nThis property is one of three related normalizer tables for a setting:\nthis property holds the finite Euclidean normalizer operations obtained from cctbx,\n`orthogonal_affine_normalizer` holds the older bounded coset table restricted to signed-permutation linear parts,\nand `affine_normalizer` holds the bounded coset table generated from unimodular integer linear parts.\nContinuous origin-shift freedoms are described separately by `continuous_normalizer`.\n\n**Requirements/Conventions**:\n\n- It MUST be a dictionary with the following keys:\n\n    - **normalizer\\_kind**: REQUIRED; String.\n      Kind label for this normalizer contribution.\n      For this property the value is `euclidean`.\n\n    - **n\\_centering\\_translations**: REQUIRED; Integer.\n      Number of centering translations represented in the underlying Euclidean normalizer operation construction.\n\n    - **n\\_pointgroup\\_symops**: REQUIRED; Integer.\n      Number of point-group symmetry operations represented before centering translations are combined with them.\n\n    - **n\\_symops**: REQUIRED; Integer.\n      Number of Euclidean normalizer operations listed in `symops`.\n      This value MUST equal the length of `symops`.\n\n    - **n\\_linear\\_parts**: REQUIRED; Integer.\n      Number of distinct linear matrix parts represented in `symops`.\n\n    - **symops**: REQUIRED; List of dictionaries.\n      Finite Euclidean normalizer operations for the setting.\n      Each item follows `/defs/v0.1/properties/symmetry/op`.\n\n    - **symops\\_mod\\_centering**: REQUIRED; List of dictionaries.\n      Euclidean normalizer operations factorized modulo the centering translations of the setting.\n      This keeps one operation for each linear part and translation class modulo centering, while `symops` keeps the complete operation list.\n      Each item follows `/defs/v0.1/properties/symmetry/op`.",
                    "properties": {
                        "normalizer_kind": {
                            "x-optimade-type": "string",
                            "x-optimade-unit": "inapplicable",
                            "type": [
                                "string",
                                "null"
                            ],
                            "description": "Kind label for this normalizer contribution."
                        },
                        "n_centering_translations": {
                            "$id": "https://schemas.anyterial.se/defs/v0.1/properties/spacegroups/n_centering_translations",
                            "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.anyterial.se/defs/v0.1/properties/pointgroups/n_pointgroup_symops",
                            "title": "Number of pointgroup symops",
                            "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.",
                            "x-optimade-unit": "inapplicable",
                            "examples": [
                                1,
                                2
                            ]
                        },
                        "n_symops": {
                            "$id": "https://schemas.anyterial.se/defs/v0.1/properties/spacegroups/n_symops",
                            "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
                            ]
                        },
                        "n_linear_parts": {
                            "$id": "https://schemas.anyterial.se/defs/v0.1/properties/transformations/n_linear_parts",
                            "title": "Number of linear parts",
                            "x-optimade-type": "integer",
                            "x-optimade-definition": {
                                "kind": "property",
                                "version": "0.1.0",
                                "format": "1.3",
                                "name": "n_linear_parts",
                                "label": "n_linear_parts_transformations"
                            },
                            "type": [
                                "integer",
                                "null"
                            ],
                            "description": "Number of distinct linear matrix parts represented in a normalizer or transform table.\n\nDistinctness is determined by exact element-wise comparison of the 3 by 3 matrix parts of the listed operations.",
                            "x-optimade-unit": "inapplicable",
                            "examples": [
                                2,
                                4
                            ]
                        },
                        "symops": {
                            "x-optimade-type": "list",
                            "x-optimade-unit": "inapplicable",
                            "type": [
                                "array",
                                "null"
                            ],
                            "description": "Finite Euclidean normalizer operations for the setting.",
                            "items": {
                                "$id": "https://schemas.anyterial.se/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    - **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.",
                                "properties": {
                                    "affine_transformation": {
                                        "$id": "https://schemas.anyterial.se/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 affine transformation is a geometric transformation preserving points, straight lines, and parallelism (collinearity), but may not preserve Euclidean distances and angles.\nThe transformation is represented by a 3 by 3 matrix and a 3-vector, both serialized with exact string entries.\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\n    - **det**: OPTIONAL; Integer.\n      Determinant of `matrix` when the generator emits it.\n\n    - **is\\_orthogonal**: OPTIONAL; Boolean.\n      Whether `matrix` is orthogonal in the exact representation used by the generator.",
                                        "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.anyterial.se/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.anyterial.se/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.anyterial.se/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."
                                            },
                                            "is_orthogonal": {
                                                "x-optimade-type": "boolean",
                                                "x-optimade-unit": "inapplicable",
                                                "type": [
                                                    "boolean",
                                                    "null"
                                                ],
                                                "description": "Whether the matrix part is orthogonal."
                                            }
                                        },
                                        "examples": [
                                            {
                                                "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": {
                                        "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"
                                        ]
                                    },
                                    "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."
                                    },
                                    "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.anyterial.se/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.anyterial.se/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"
                                        ]
                                    }
                                ]
                            }
                        },
                        "symops_mod_centering": {
                            "$id": "https://schemas.anyterial.se/defs/v0.1/properties/spacegroups/symops_mod_centering",
                            "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.anyterial.se/defs/v0.1/properties/symmetry/op",
                            "items": {
                                "$id": "https://schemas.anyterial.se/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    - **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.",
                                "properties": {
                                    "affine_transformation": {
                                        "$id": "https://schemas.anyterial.se/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 affine transformation is a geometric transformation preserving points, straight lines, and parallelism (collinearity), but may not preserve Euclidean distances and angles.\nThe transformation is represented by a 3 by 3 matrix and a 3-vector, both serialized with exact string entries.\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\n    - **det**: OPTIONAL; Integer.\n      Determinant of `matrix` when the generator emits it.\n\n    - **is\\_orthogonal**: OPTIONAL; Boolean.\n      Whether `matrix` is orthogonal in the exact representation used by the generator.",
                                        "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.anyterial.se/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.anyterial.se/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.anyterial.se/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."
                                            },
                                            "is_orthogonal": {
                                                "x-optimade-type": "boolean",
                                                "x-optimade-unit": "inapplicable",
                                                "type": [
                                                    "boolean",
                                                    "null"
                                                ],
                                                "description": "Whether the matrix part is orthogonal."
                                            }
                                        },
                                        "examples": [
                                            {
                                                "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": {
                                        "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"
                                        ]
                                    },
                                    "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."
                                    },
                                    "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.anyterial.se/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.anyterial.se/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"
                                        ]
                                    }
                                ]
                            ]
                        }
                    },
                    "examples": [
                        {
                            "normalizer_kind": "euclidean",
                            "n_centering_translations": 1,
                            "n_pointgroup_symops": 1,
                            "n_symops": 2,
                            "n_linear_parts": 2,
                            "symops": [
                                {
                                    "affine_transformation": {
                                        "xyz": "-x,-y,-z",
                                        "matrix": [
                                            [
                                                "-1",
                                                "0",
                                                "0"
                                            ],
                                            [
                                                "0",
                                                "-1",
                                                "0"
                                            ],
                                            [
                                                "0",
                                                "0",
                                                "-1"
                                            ]
                                        ],
                                        "vector": [
                                            "0",
                                            "0",
                                            "0"
                                        ],
                                        "det": -1,
                                        "is_orthogonal": true
                                    },
                                    "rot_type": "-1",
                                    "sense": 0,
                                    "axis": [
                                        0,
                                        0,
                                        0
                                    ],
                                    "screw_glide": [
                                        "0",
                                        "0",
                                        "0"
                                    ],
                                    "origin_shift": [
                                        "0",
                                        "0",
                                        "0"
                                    ],
                                    "operation_kind": "euclidean"
                                }
                            ],
                            "symops_mod_centering": [
                                {
                                    "affine_transformation": {
                                        "xyz": "-x,-y,-z",
                                        "matrix": [
                                            [
                                                "-1",
                                                "0",
                                                "0"
                                            ],
                                            [
                                                "0",
                                                "-1",
                                                "0"
                                            ],
                                            [
                                                "0",
                                                "0",
                                                "-1"
                                            ]
                                        ],
                                        "vector": [
                                            "0",
                                            "0",
                                            "0"
                                        ],
                                        "det": -1,
                                        "is_orthogonal": true
                                    },
                                    "rot_type": "-1",
                                    "sense": 0,
                                    "axis": [
                                        0,
                                        0,
                                        0
                                    ],
                                    "screw_glide": [
                                        "0",
                                        "0",
                                        "0"
                                    ],
                                    "origin_shift": [
                                        "0",
                                        "0",
                                        "0"
                                    ],
                                    "operation_kind": "euclidean"
                                }
                            ]
                        }
                    ]
                },
                "hall_to_it_std_transform": {
                    "$id": "https://schemas.anyterial.se/defs/v0.1/properties/transformations/hall_to_it_std_transform",
                    "x-optimade-requirements": {
                        "support": "may",
                        "sortable": false,
                        "query-support": "none",
                        "response-level": "may"
                    },
                    "title": "Hall to IT standard transform",
                    "x-optimade-type": "dictionary",
                    "x-optimade-definition": {
                        "kind": "property",
                        "version": "0.1.0",
                        "format": "1.3",
                        "name": "hall_to_it_std_transform",
                        "label": "hall_to_it_std_transform_transformations"
                    },
                    "x-optimade-unit": "inapplicable",
                    "type": [
                        "object",
                        "null"
                    ],
                    "description": "Exact basis and origin transform from one stored Hall setting to the International Tables standard Hall setting of the same space-group type.\n\nThis transform is useful when data generated or detected in an arbitrary Hall setting needs to be compared with a conventional IT-standard reference setting.\nThe transform is represented by `matrix` and `vector`, following the same affine-transformation convention as the other generated transformation tables.\n\nIf `x_to_ref_hall` is a fractional coordinate column vector in the target IT-standard Hall setting, and `x_from_hall` is the corresponding fractional coordinate column vector in the source Hall setting keyed by the containing map, then the stored transform satisfies:\n`x_from_hall = matrix * x_to_ref_hall + vector`.\n\n**Requirements/Conventions**:\n\n- It MUST be a dictionary describing one exact transform from the containing Hall setting to the IT-standard Hall setting of the same `it_number`.\n- The `index` value is always `1`, because this is a same-space-group setting transform rather than a proper subgroup transform.\n- Matrix and vector entries MUST be exact strings, using integer strings or fraction strings as appropriate.\n- It MUST be a dictionary with the following keys:\n\n    - **hall\\_entry**: REQUIRED; String.\n      Source Hall-entry key for the setting transformed by this object.\n\n    - **it\\_number**: REQUIRED; Integer.\n      International Tables space-group number shared by the source and target Hall settings.\n\n    - **to\\_hall\\_entry**: REQUIRED; String.\n      Target Hall-entry key for the IT-standard Hall setting of the same space-group type.\n\n    - **index**: REQUIRED; Integer.\n      Transform index.\n      For this table the value is `1` because the transform maps between settings of the same space group.\n\n    - **affine\\_transformation**: REQUIRED; Dictionary.\n      Exact affine map for this setting transform.\n      It MUST follow `/defs/v0.1/properties/symmetry/affine_transformation`.\n      The transform convention is `x_from_hall = matrix * x_to_ref_hall + vector`, where `matrix` and `vector` are the fields inside `affine_transformation`.",
                    "properties": {
                        "hall_entry": {
                            "$id": "https://schemas.anyterial.se/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.",
                            "x-optimade-unit": "inapplicable",
                            "examples": [
                                "p_1",
                                "-p_1"
                            ]
                        },
                        "it_number": {
                            "$id": "https://schemas.anyterial.se/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
                            ]
                        },
                        "to_hall_entry": {
                            "$id": "https://schemas.anyterial.se/defs/v0.1/properties/transformations/to_hall_entry",
                            "title": "To Hall entry",
                            "x-optimade-type": "string",
                            "x-optimade-definition": {
                                "kind": "property",
                                "version": "0.1.0",
                                "format": "1.3",
                                "name": "to_hall_entry",
                                "label": "to_hall_entry_transformations"
                            },
                            "type": [
                                "string",
                                "null"
                            ],
                            "description": "Target Hall-entry key to which a setting transform maps the current Hall setting.\n\nThe value is a normalized Hall-entry key following the same convention as `/defs/v0.1/properties/spacegroups/hall_entry`, i.e., derived from the Hall symbol by using lowercase letters and underscores in place of spaces.\nThe corresponding display Hall symbol can be recovered by looking up the key in the spacegroups dataset.",
                            "x-optimade-unit": "inapplicable",
                            "examples": [
                                "p_1",
                                "-p_1"
                            ]
                        },
                        "index": {
                            "$id": "https://schemas.anyterial.se/defs/v0.1/properties/transformations/index",
                            "title": "Subgroup or transform index",
                            "x-optimade-type": "integer",
                            "x-optimade-definition": {
                                "kind": "property",
                                "version": "0.1.0",
                                "format": "1.3",
                                "name": "index",
                                "label": "index_transformations"
                            },
                            "type": [
                                "integer",
                                "null"
                            ],
                            "description": "Subgroup or transform index.\n\nFor subgroup transforms it is the crystallographic subgroup index `[G:H]`, equal to the determinant factor of the basis transformation when applicable.",
                            "x-optimade-unit": "inapplicable",
                            "examples": [
                                2,
                                4
                            ]
                        },
                        "affine_transformation": {
                            "$id": "https://schemas.anyterial.se/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 affine transformation is a geometric transformation preserving points, straight lines, and parallelism (collinearity), but may not preserve Euclidean distances and angles.\nThe transformation is represented by a 3 by 3 matrix and a 3-vector, both serialized with exact string entries.\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\n    - **det**: OPTIONAL; Integer.\n      Determinant of `matrix` when the generator emits it.\n\n    - **is\\_orthogonal**: OPTIONAL; Boolean.\n      Whether `matrix` is orthogonal in the exact representation used by the generator.",
                            "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.anyterial.se/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.anyterial.se/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.anyterial.se/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."
                                },
                                "is_orthogonal": {
                                    "x-optimade-type": "boolean",
                                    "x-optimade-unit": "inapplicable",
                                    "type": [
                                        "boolean",
                                        "null"
                                    ],
                                    "description": "Whether the matrix part is orthogonal."
                                }
                            },
                            "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": [
                        {
                            "hall_entry": "p_1",
                            "it_number": 1,
                            "to_hall_entry": "p_1",
                            "index": 1,
                            "affine_transformation": {
                                "matrix": [
                                    [
                                        "1",
                                        "0",
                                        "0"
                                    ],
                                    [
                                        "0",
                                        "1",
                                        "0"
                                    ],
                                    [
                                        "0",
                                        "0",
                                        "1"
                                    ]
                                ],
                                "vector": [
                                    "0",
                                    "0",
                                    "0"
                                ]
                            }
                        }
                    ]
                },
                "orthogonal_affine_normalizer": {
                    "$id": "https://schemas.anyterial.se/defs/v0.1/properties/transformations/orthogonal_affine_normalizer",
                    "x-optimade-requirements": {
                        "support": "may",
                        "sortable": false,
                        "query-support": "none",
                        "response-level": "may"
                    },
                    "title": "Orthogonal affine normalizer",
                    "x-optimade-type": "dictionary",
                    "x-optimade-definition": {
                        "kind": "property",
                        "version": "0.1.0",
                        "format": "1.3",
                        "name": "orthogonal_affine_normalizer",
                        "label": "orthogonal_affine_normalizer_transformations"
                    },
                    "x-optimade-unit": "inapplicable",
                    "type": [
                        "object",
                        "null"
                    ],
                    "description": "Orthogonal affine normalizer coset representatives for one crystallographic space-group setting.\n\nThe representatives are listed modulo the space group itself, so each listed operation represents an equivalence class of affine normalizer operations rather than every operation in that class.\nThis property contains the signed-permutation subset of affine normalizer representatives.\n\nThe `candidate_set` field belongs in this property because the listed representatives are produced from a deliberately restricted finite candidate set.\nFor this property `candidate_set` is `signed_permutation_matrices`, meaning 3 by 3 integer matrices with exactly one nonzero entry in each row and column and each nonzero entry equal to `-1` or `1`.\nThe plural field `candidate_sets` is not part of the emitted data and MUST NOT be used here.\n\nThis property is one of three related normalizer tables for a setting:\n`euclidean_normalizer` holds the finite Euclidean normalizer operations obtained from cctbx,\nthis property holds the older bounded table restricted to signed-permutation linear parts,\nand `affine_normalizer` holds the bounded table generated from unimodular integer linear parts, which is a superset of this one.\n\n**Requirements/Conventions**:\n\n- It MUST be a dictionary with the following keys:\n\n    - **normalizer\\_kind**: REQUIRED; String.\n      Kind label for this normalizer contribution.\n\n    - **representation**: REQUIRED; String.\n      Representation label for the listed data.\n\n    - **candidate\\_set**: REQUIRED; String.\n      Name of the finite linear candidate set used for generation.\n\n    - **n\\_symops**: REQUIRED; Integer.\n      Number of listed coset representatives after metric-compatibility filtering.\n\n    - **n\\_linear\\_parts**: REQUIRED; Integer.\n      Number of distinct linear matrix parts represented in `symops`.\n\n    - **n\\_raw\\_candidates**: REQUIRED; Integer.\n      Number of affine candidates found before deduplication modulo the space group.\n\n    - **n\\_unique\\_candidates**: REQUIRED; Integer.\n      Number of unique affine candidates before quotienting by the space group.\n\n    - **n\\_coset\\_representatives**: REQUIRED; Integer.\n      Number of non-trivial coset representatives before metric-compatibility filtering.\n\n    - **bounds**: REQUIRED; Dictionary.\n      Simple numerical bounds satisfied by the signed-permutation candidate matrices.\n\n    - **symops**: REQUIRED; List of dictionaries.\n      Listed orthogonal affine normalizer coset representatives.\n      Each item follows `/defs/v0.1/properties/symmetry/basis_transform`.\n      Each item MUST carry `compatible_systems`, the list of crystal systems for which the representative's linear part is compatible with a crystallographic metric.",
                    "properties": {
                        "normalizer_kind": {
                            "x-optimade-type": "string",
                            "x-optimade-unit": "inapplicable",
                            "type": [
                                "string",
                                "null"
                            ],
                            "description": "Kind label for this normalizer contribution."
                        },
                        "representation": {
                            "x-optimade-type": "string",
                            "x-optimade-unit": "inapplicable",
                            "type": [
                                "string",
                                "null"
                            ],
                            "description": "Representation label for the listed normalizer data."
                        },
                        "candidate_set": {
                            "x-optimade-type": "string",
                            "x-optimade-unit": "inapplicable",
                            "type": [
                                "string",
                                "null"
                            ],
                            "description": "Name of the finite linear candidate set used for generation."
                        },
                        "n_symops": {
                            "$id": "https://schemas.anyterial.se/defs/v0.1/properties/spacegroups/n_symops",
                            "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
                            ]
                        },
                        "n_linear_parts": {
                            "$id": "https://schemas.anyterial.se/defs/v0.1/properties/transformations/n_linear_parts",
                            "title": "Number of linear parts",
                            "x-optimade-type": "integer",
                            "x-optimade-definition": {
                                "kind": "property",
                                "version": "0.1.0",
                                "format": "1.3",
                                "name": "n_linear_parts",
                                "label": "n_linear_parts_transformations"
                            },
                            "type": [
                                "integer",
                                "null"
                            ],
                            "description": "Number of distinct linear matrix parts represented in a normalizer or transform table.\n\nDistinctness is determined by exact element-wise comparison of the 3 by 3 matrix parts of the listed operations.",
                            "x-optimade-unit": "inapplicable",
                            "examples": [
                                2,
                                4
                            ]
                        },
                        "n_raw_candidates": {
                            "x-optimade-type": "integer",
                            "x-optimade-unit": "inapplicable",
                            "type": [
                                "integer",
                                "null"
                            ],
                            "description": "Number of affine candidates found before deduplication modulo the space group."
                        },
                        "n_unique_candidates": {
                            "x-optimade-type": "integer",
                            "x-optimade-unit": "inapplicable",
                            "type": [
                                "integer",
                                "null"
                            ],
                            "description": "Number of unique affine candidates before quotienting by the space group."
                        },
                        "n_coset_representatives": {
                            "x-optimade-type": "integer",
                            "x-optimade-unit": "inapplicable",
                            "type": [
                                "integer",
                                "null"
                            ],
                            "description": "Number of non-trivial coset representatives before metric-compatibility filtering."
                        },
                        "bounds": {
                            "x-optimade-type": "dictionary",
                            "x-optimade-unit": "inapplicable",
                            "type": [
                                "object",
                                "null"
                            ],
                            "description": "Simple numerical bounds satisfied by the signed-permutation candidate matrices.",
                            "properties": {
                                "det_abs": {
                                    "x-optimade-type": "integer",
                                    "x-optimade-unit": "inapplicable",
                                    "type": [
                                        "integer",
                                        "null"
                                    ],
                                    "description": "Absolute determinant of every signed-permutation candidate matrix."
                                },
                                "max_abs_linear_entry": {
                                    "x-optimade-type": "integer",
                                    "x-optimade-unit": "inapplicable",
                                    "type": [
                                        "integer",
                                        "null"
                                    ],
                                    "description": "Maximum absolute entry value in the signed-permutation candidate matrices."
                                }
                            }
                        },
                        "symops": {
                            "x-optimade-type": "list",
                            "x-optimade-unit": "inapplicable",
                            "type": [
                                "array",
                                "null"
                            ],
                            "description": "Listed orthogonal affine normalizer coset representatives.",
                            "items": {
                                "$id": "https://schemas.anyterial.se/defs/v0.1/properties/symmetry/basis_transform",
                                "title": "Basis transformation",
                                "x-optimade-type": "dictionary",
                                "x-optimade-definition": {
                                    "kind": "property",
                                    "version": "0.1.0",
                                    "format": "1.3",
                                    "name": "basis_transform",
                                    "label": "basis_transform_symmetry"
                                },
                                "x-optimade-unit": "inapplicable",
                                "type": [
                                    "object",
                                    "null"
                                ],
                                "description": "One crystallographic transform between coordinate descriptions, settings, cells, or related group embeddings.\n\nThe affine map itself is stored in the embedded `affine_transformation` field.\nThe parent property defines the source and target coordinate systems and the precise role of the transform.\nUseful, for example, for representing setting changes, subgroup embeddings, isomorphic subgroup transforms, normalizer representatives, and same-space-group affine images.\nThis property is not limited to symmetry operations within one fixed setting; the matrix may be non-orthogonal or have determinant different from one when the transform changes cell or basis.\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 transform, using exact rational matrix and vector entries.\n      The coordinate convention and source/target interpretation are supplied by the parent property.\n\n    - **index**: OPTIONAL; Integer or null.\n      Index metadata whose interpretation is defined by the parent property.\n      Common uses include the subgroup index for subgroup embeddings, the cell index for isomorphic subgroup transforms, or an ordinal representative index in a finite transform table.\n\n    - **subgroup\\_type**: OPTIONAL; String.\n      International Tables subgroup-type label when the transform describes a maximal subgroup embedding.\n      The value MUST be `t` for a translationengleiche subgroup or `k` for a klassengleiche subgroup.\n      It MUST be omitted when the transform is not a maximal subgroup embedding.\n\n    - **k\\_subtype**: OPTIONAL; String or null.\n      Klassengleiche subtype when the transform describes a klassengleiche subgroup relation.\n      The value MUST be `loss_of_centering_translation` or `enlarged_unit_cell` for klassengleiche relations and null or omitted otherwise.\n\n    - **compatible\\_systems**: OPTIONAL; List of strings.\n      Crystal metric systems for which the transform is compatible.\n      This is used for bounded affine normalizer representatives.\n\n    - **operation\\_kind**: OPTIONAL; String.\n      Categorical label for normalizer-type representatives.\n      The value MUST be `euclidean` for Euclidean normalizer operations, `orthogonal_affine` for the signed-permutation affine normalizer subset, or `affine` for the bounded unimodular affine normalizer table.\n      It MUST be omitted when the transform is a setting transform, subgroup embedding, or other transform for which no normalizer operation class applies.\n\n    - **wyckoff\\_splitting**: OPTIONAL; List.\n      Wyckoff-position splitting metadata induced by the transform when available.\n      The list is grouped by explicit parent Wyckoff letter.\n\n    - **criteria**: OPTIONAL; List.\n      Backward-lift constraint metadata induced by the transform when available.\n      The list is grouped by explicit parent Wyckoff letter.",
                                "properties": {
                                    "affine_transformation": {
                                        "$id": "https://schemas.anyterial.se/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 affine transformation is a geometric transformation preserving points, straight lines, and parallelism (collinearity), but may not preserve Euclidean distances and angles.\nThe transformation is represented by a 3 by 3 matrix and a 3-vector, both serialized with exact string entries.\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\n    - **det**: OPTIONAL; Integer.\n      Determinant of `matrix` when the generator emits it.\n\n    - **is\\_orthogonal**: OPTIONAL; Boolean.\n      Whether `matrix` is orthogonal in the exact representation used by the generator.",
                                        "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.anyterial.se/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.anyterial.se/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.anyterial.se/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."
                                            },
                                            "is_orthogonal": {
                                                "x-optimade-type": "boolean",
                                                "x-optimade-unit": "inapplicable",
                                                "type": [
                                                    "boolean",
                                                    "null"
                                                ],
                                                "description": "Whether the matrix part is orthogonal."
                                            }
                                        },
                                        "examples": [
                                            {
                                                "matrix": [
                                                    [
                                                        "-1",
                                                        "0",
                                                        "0"
                                                    ],
                                                    [
                                                        "0",
                                                        "-1",
                                                        "0"
                                                    ],
                                                    [
                                                        "0",
                                                        "0",
                                                        "1"
                                                    ]
                                                ],
                                                "vector": [
                                                    "0",
                                                    "0",
                                                    "0"
                                                ],
                                                "xyz": "-x,-y,z",
                                                "det": 1,
                                                "is_orthogonal": true
                                            }
                                        ]
                                    },
                                    "index": {
                                        "x-optimade-type": "integer",
                                        "x-optimade-unit": "inapplicable",
                                        "type": [
                                            "integer",
                                            "null"
                                        ],
                                        "description": "Index metadata whose interpretation is supplied by the parent property."
                                    },
                                    "subgroup_type": {
                                        "x-optimade-type": "string",
                                        "x-optimade-unit": "inapplicable",
                                        "type": [
                                            "string"
                                        ],
                                        "description": "International Tables subgroup-type label when applicable.",
                                        "enum": [
                                            "t",
                                            "k"
                                        ]
                                    },
                                    "k_subtype": {
                                        "x-optimade-type": "string",
                                        "x-optimade-unit": "inapplicable",
                                        "type": [
                                            "string",
                                            "null"
                                        ],
                                        "description": "Klassengleiche subtype when applicable."
                                    },
                                    "compatible_systems": {
                                        "x-optimade-type": "list",
                                        "x-optimade-unit": "inapplicable",
                                        "type": [
                                            "array",
                                            "null"
                                        ],
                                        "description": "Crystal metric systems compatible with the transform.",
                                        "items": {
                                            "x-optimade-type": "string",
                                            "x-optimade-unit": "inapplicable",
                                            "type": [
                                                "string"
                                            ],
                                            "description": "One compatible crystal-system label.",
                                            "enum": [
                                                "triclinic",
                                                "monoclinic",
                                                "orthorhombic",
                                                "tetragonal",
                                                "trigonal",
                                                "hexagonal",
                                                "cubic"
                                            ]
                                        }
                                    },
                                    "operation_kind": {
                                        "x-optimade-type": "string",
                                        "x-optimade-unit": "inapplicable",
                                        "type": [
                                            "string"
                                        ],
                                        "description": "Categorical label for normalizer-type representatives.",
                                        "enum": [
                                            "euclidean",
                                            "orthogonal_affine",
                                            "affine"
                                        ]
                                    },
                                    "wyckoff_splitting": {
                                        "$id": "https://schemas.anyterial.se/defs/v0.1/properties/transformations/wyckoff_splitting",
                                        "title": "Wyckoff splitting",
                                        "x-optimade-type": "list",
                                        "x-optimade-definition": {
                                            "kind": "property",
                                            "version": "0.1.0",
                                            "format": "1.3",
                                            "name": "wyckoff_splitting",
                                            "label": "wyckoff_splitting_transformations"
                                        },
                                        "x-optimade-unit": "inapplicable",
                                        "type": [
                                            "array",
                                            "null"
                                        ],
                                        "description": "Wyckoff-position splitting data associated with a subgroup or same-space-group transform.\n\nEach list item gives the split of one parent Wyckoff position.\nThe parent Wyckoff letter is stored in the `parent` field rather than as a JSON dictionary key.\n\n**Requirements/Conventions**:\n\n- It MUST be a list of dictionaries.\n- Each dictionary MUST contain `parent`, the Wyckoff letter in the parent setting.\n- Each dictionary MUST contain `splits`, an ordered list of subgroup Wyckoff-position assignments or coordinate expressions emitted by the generator.",
                                        "items": {
                                            "x-optimade-type": "dictionary",
                                            "x-optimade-unit": "inapplicable",
                                            "type": [
                                                "object"
                                            ],
                                            "description": "Splitting data for one parent Wyckoff position.",
                                            "required": [
                                                "parent",
                                                "splits"
                                            ],
                                            "properties": {
                                                "parent": {
                                                    "x-optimade-type": "string",
                                                    "x-optimade-unit": "inapplicable",
                                                    "type": [
                                                        "string"
                                                    ],
                                                    "description": "Parent Wyckoff letter."
                                                },
                                                "splits": {
                                                    "x-optimade-type": "list",
                                                    "x-optimade-unit": "inapplicable",
                                                    "type": [
                                                        "array"
                                                    ],
                                                    "description": "Ordered split records for this parent Wyckoff letter.",
                                                    "items": {
                                                        "x-optimade-type": "dictionary",
                                                        "x-optimade-unit": "inapplicable",
                                                        "type": [
                                                            "object"
                                                        ],
                                                        "description": "One Wyckoff split record.",
                                                        "required": [
                                                            "letter",
                                                            "xyz",
                                                            "affine"
                                                        ],
                                                        "properties": {
                                                            "letter": {
                                                                "x-optimade-type": "string",
                                                                "x-optimade-unit": "inapplicable",
                                                                "type": [
                                                                    "string"
                                                                ],
                                                                "description": "Subgroup Wyckoff letter assigned by this split branch."
                                                            },
                                                            "xyz": {
                                                                "x-optimade-type": "string",
                                                                "x-optimade-unit": "inapplicable",
                                                                "type": [
                                                                    "string"
                                                                ],
                                                                "description": "Coordinate expression for the split branch."
                                                            },
                                                            "affine": {
                                                                "x-optimade-type": "list",
                                                                "x-optimade-unit": "inapplicable",
                                                                "x-optimade-dimensions": {
                                                                    "names": [
                                                                        "dim_lattice",
                                                                        "dim_affine"
                                                                    ],
                                                                    "sizes": [
                                                                        3,
                                                                        4
                                                                    ]
                                                                },
                                                                "type": [
                                                                    "array"
                                                                ],
                                                                "description": "Exact affine representation for the split branch as a 3 by 4 augmented matrix.\nEach row holds the three linear coefficients followed by the translation component, all as exact fraction strings.",
                                                                "items": {
                                                                    "x-optimade-type": "list",
                                                                    "x-optimade-unit": "inapplicable",
                                                                    "x-optimade-dimensions": {
                                                                        "names": [
                                                                            "dim_affine"
                                                                        ],
                                                                        "sizes": [
                                                                            4
                                                                        ]
                                                                    },
                                                                    "type": [
                                                                        "array"
                                                                    ],
                                                                    "description": "One row of the augmented affine matrix.",
                                                                    "items": {
                                                                        "$id": "https://schemas.anyterial.se/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": [
                                            [
                                                {
                                                    "parent": "c",
                                                    "splits": [
                                                        {
                                                            "letter": "e",
                                                            "xyz": "x,y,z",
                                                            "affine": [
                                                                [
                                                                    "1",
                                                                    "0",
                                                                    "0",
                                                                    "0"
                                                                ],
                                                                [
                                                                    "0",
                                                                    "1",
                                                                    "0",
                                                                    "0"
                                                                ],
                                                                [
                                                                    "0",
                                                                    "0",
                                                                    "1",
                                                                    "0"
                                                                ]
                                                            ]
                                                        }
                                                    ]
                                                }
                                            ]
                                        ]
                                    },
                                    "criteria": {
                                        "x-optimade-type": "list",
                                        "x-optimade-unit": "inapplicable",
                                        "type": [
                                            "array",
                                            "null"
                                        ],
                                        "description": "Backward-lift constraint metadata induced by the transform, grouped by explicit parent Wyckoff letter.",
                                        "items": {
                                            "x-optimade-type": "dictionary",
                                            "x-optimade-unit": "inapplicable",
                                            "type": [
                                                "object"
                                            ],
                                            "description": "Backward-lift constraints for one parent Wyckoff position.",
                                            "required": [
                                                "parent",
                                                "constraints"
                                            ],
                                            "properties": {
                                                "parent": {
                                                    "x-optimade-type": "string",
                                                    "x-optimade-unit": "inapplicable",
                                                    "type": [
                                                        "string"
                                                    ],
                                                    "description": "Parent Wyckoff letter."
                                                },
                                                "constraints": {
                                                    "x-optimade-type": "list",
                                                    "x-optimade-unit": "inapplicable",
                                                    "type": [
                                                        "array"
                                                    ],
                                                    "description": "Constraint records for this parent Wyckoff letter.",
                                                    "items": {
                                                        "x-optimade-type": "dictionary",
                                                        "x-optimade-unit": "inapplicable",
                                                        "type": [
                                                            "object"
                                                        ],
                                                        "description": "One linear backward-lift constraint record.",
                                                        "properties": {
                                                            "roles": {
                                                                "x-optimade-type": "list",
                                                                "x-optimade-unit": "inapplicable",
                                                                "type": [
                                                                    "array"
                                                                ],
                                                                "description": "Wyckoff-position role references entering the constraint.",
                                                                "items": {
                                                                    "x-optimade-type": "dictionary",
                                                                    "x-optimade-unit": "inapplicable",
                                                                    "type": [
                                                                        "object"
                                                                    ],
                                                                    "description": "One role reference.",
                                                                    "required": [
                                                                        "letter",
                                                                        "index"
                                                                    ],
                                                                    "properties": {
                                                                        "letter": {
                                                                            "x-optimade-type": "string",
                                                                            "x-optimade-unit": "inapplicable",
                                                                            "type": [
                                                                                "string"
                                                                            ],
                                                                            "description": "Wyckoff letter for the referenced role."
                                                                        },
                                                                        "index": {
                                                                            "x-optimade-type": "integer",
                                                                            "x-optimade-unit": "inapplicable",
                                                                            "type": [
                                                                                "integer"
                                                                            ],
                                                                            "description": "Zero-based occurrence index for the role."
                                                                        }
                                                                    }
                                                                }
                                                            },
                                                            "coeffs": {
                                                                "x-optimade-type": "list",
                                                                "x-optimade-unit": "inapplicable",
                                                                "type": [
                                                                    "array"
                                                                ],
                                                                "description": "Exact coefficient vectors for the constraint.",
                                                                "items": {
                                                                    "x-optimade-type": "list",
                                                                    "x-optimade-unit": "inapplicable",
                                                                    "type": [
                                                                        "array"
                                                                    ],
                                                                    "description": "Coefficients associated with one role.",
                                                                    "items": {
                                                                        "x-optimade-type": "list",
                                                                        "x-optimade-unit": "inapplicable",
                                                                        "x-optimade-dimensions": {
                                                                            "names": [
                                                                                "dim_lattice"
                                                                            ],
                                                                            "sizes": [
                                                                                3
                                                                            ]
                                                                        },
                                                                        "type": [
                                                                            "array"
                                                                        ],
                                                                        "description": "One exact coefficient vector.",
                                                                        "items": {
                                                                            "$id": "https://schemas.anyterial.se/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"
                                                                        }
                                                                    }
                                                                }
                                                            },
                                                            "target": {
                                                                "x-optimade-type": "list",
                                                                "x-optimade-unit": "inapplicable",
                                                                "type": [
                                                                    "array"
                                                                ],
                                                                "description": "Exact target vector or scalar for the constraint.",
                                                                "items": {
                                                                    "$id": "https://schemas.anyterial.se/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",
                                                    "2"
                                                ]
                                            ],
                                            "vector": [
                                                "0",
                                                "0",
                                                "0"
                                            ],
                                            "xyz": "x,y,2z",
                                            "det": 2,
                                            "is_orthogonal": false
                                        },
                                        "index": 2,
                                        "subgroup_type": "k",
                                        "k_subtype": "enlarged_unit_cell",
                                        "wyckoff_splitting": [
                                            {
                                                "parent": "a",
                                                "splits": [
                                                    {
                                                        "letter": "a",
                                                        "xyz": "x,y,z",
                                                        "affine": [
                                                            [
                                                                "1",
                                                                "0",
                                                                "0",
                                                                "0"
                                                            ],
                                                            [
                                                                "0",
                                                                "1",
                                                                "0",
                                                                "0"
                                                            ],
                                                            [
                                                                "0",
                                                                "0",
                                                                "1",
                                                                "0"
                                                            ]
                                                        ]
                                                    }
                                                ]
                                            }
                                        ],
                                        "criteria": [
                                            {
                                                "parent": "a",
                                                "constraints": [
                                                    {
                                                        "roles": [
                                                            {
                                                                "letter": "a",
                                                                "index": 0
                                                            }
                                                        ],
                                                        "coeffs": [
                                                            [
                                                                [
                                                                    "1",
                                                                    "0",
                                                                    "0"
                                                                ]
                                                            ]
                                                        ],
                                                        "target": [
                                                            "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
                                        },
                                        "compatible_systems": [
                                            "triclinic",
                                            "monoclinic",
                                            "orthorhombic",
                                            "tetragonal",
                                            "trigonal",
                                            "hexagonal",
                                            "cubic"
                                        ],
                                        "operation_kind": "affine"
                                    }
                                ]
                            }
                        }
                    },
                    "examples": [
                        {
                            "normalizer_kind": "orthogonal_affine",
                            "representation": "orthogonal_coset_representatives",
                            "candidate_set": "signed_permutation_matrices",
                            "n_symops": 47,
                            "n_linear_parts": 47,
                            "n_raw_candidates": 48,
                            "n_unique_candidates": 48,
                            "n_coset_representatives": 47,
                            "bounds": {
                                "det_abs": 1,
                                "max_abs_linear_entry": 1
                            },
                            "symops": [
                                {
                                    "affine_transformation": {
                                        "xyz": "-x,-y,-z",
                                        "matrix": [
                                            [
                                                "-1",
                                                "0",
                                                "0"
                                            ],
                                            [
                                                "0",
                                                "-1",
                                                "0"
                                            ],
                                            [
                                                "0",
                                                "0",
                                                "-1"
                                            ]
                                        ],
                                        "vector": [
                                            "0",
                                            "0",
                                            "0"
                                        ],
                                        "det": -1,
                                        "is_orthogonal": true
                                    },
                                    "compatible_systems": [
                                        "triclinic",
                                        "monoclinic",
                                        "orthorhombic",
                                        "tetragonal",
                                        "trigonal",
                                        "hexagonal",
                                        "cubic"
                                    ],
                                    "operation_kind": "orthogonal_affine"
                                }
                            ]
                        }
                    ]
                },
                "affine_normalizer": {
                    "$id": "https://schemas.anyterial.se/defs/v0.1/properties/transformations/affine_normalizer",
                    "x-optimade-requirements": {
                        "support": "may",
                        "sortable": false,
                        "query-support": "none",
                        "response-level": "may"
                    },
                    "title": "Affine normalizer",
                    "x-optimade-type": "dictionary",
                    "x-optimade-definition": {
                        "kind": "property",
                        "version": "0.1.0",
                        "format": "1.3",
                        "name": "affine_normalizer",
                        "label": "affine_normalizer_transformations"
                    },
                    "x-optimade-unit": "inapplicable",
                    "type": [
                        "object",
                        "null"
                    ],
                    "description": "Affine normalizer coset representatives for one crystallographic space-group setting.\n\nThe representatives are listed modulo the space group itself, so each listed operation represents an equivalence class of affine normalizer operations rather than every operation in that class.\nThis property contains representatives generated from bounded unimodular integer linear parts. It is a finite bounded representative table, not a complete infinite affine normalizer.\n\nThe `candidate_set` field belongs in this property because the listed representatives are produced from a deliberately restricted finite candidate set.\nFor this property `candidate_set` is `bounded_unimodular_integer_matrices`, meaning unimodular 3 by 3 integer matrices satisfying the recorded `bounds`.\nThe plural field `candidate_sets` is not part of the emitted data and MUST NOT be used here.\n\nThis property is one of three related normalizer tables for a setting:\n`euclidean_normalizer` holds the finite Euclidean normalizer operations obtained from cctbx,\n`orthogonal_affine_normalizer` holds the older bounded table restricted to signed-permutation linear parts,\nand this property holds the bounded table generated from unimodular integer linear parts, which is a superset of the orthogonal one.\n\n**Requirements/Conventions**:\n\n- It MUST be a dictionary with the following keys:\n\n    - **normalizer\\_kind**: REQUIRED; String.\n      Kind label for this normalizer contribution.\n\n    - **representation**: REQUIRED; String.\n      Representation label for the listed data.\n\n    - **candidate\\_set**: REQUIRED; String.\n      Name of the finite linear candidate set used for generation.\n\n    - **n\\_symops**: REQUIRED; Integer.\n      Number of listed coset representatives after metric-compatibility filtering.\n\n    - **n\\_linear\\_parts**: REQUIRED; Integer.\n      Number of distinct linear matrix parts represented in `symops`.\n\n    - **n\\_raw\\_candidates**: REQUIRED; Integer.\n      Number of affine candidates found before deduplication modulo the space group.\n\n    - **n\\_unique\\_candidates**: REQUIRED; Integer.\n      Number of unique affine candidates before quotienting by the space group.\n\n    - **n\\_coset\\_representatives**: REQUIRED; Integer.\n      Number of non-trivial coset representatives before metric-compatibility filtering.\n\n    - **bounds**: REQUIRED; Dictionary.\n      Simple numerical bounds defining the bounded unimodular integer candidate matrices.\n\n    - **symops**: REQUIRED; List of dictionaries.\n      Listed affine normalizer coset representatives.\n      Each item follows `/defs/v0.1/properties/symmetry/basis_transform`.\n      Each item MUST carry `compatible_systems`, the list of crystal systems for which the representative's linear part is compatible with a crystallographic metric.",
                    "properties": {
                        "normalizer_kind": {
                            "x-optimade-type": "string",
                            "x-optimade-unit": "inapplicable",
                            "type": [
                                "string",
                                "null"
                            ],
                            "description": "Kind label for this normalizer contribution."
                        },
                        "representation": {
                            "x-optimade-type": "string",
                            "x-optimade-unit": "inapplicable",
                            "type": [
                                "string",
                                "null"
                            ],
                            "description": "Representation label for the listed normalizer data."
                        },
                        "candidate_set": {
                            "x-optimade-type": "string",
                            "x-optimade-unit": "inapplicable",
                            "type": [
                                "string",
                                "null"
                            ],
                            "description": "Name of the finite linear candidate set used for generation."
                        },
                        "n_symops": {
                            "$id": "https://schemas.anyterial.se/defs/v0.1/properties/spacegroups/n_symops",
                            "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
                            ]
                        },
                        "n_linear_parts": {
                            "$id": "https://schemas.anyterial.se/defs/v0.1/properties/transformations/n_linear_parts",
                            "title": "Number of linear parts",
                            "x-optimade-type": "integer",
                            "x-optimade-definition": {
                                "kind": "property",
                                "version": "0.1.0",
                                "format": "1.3",
                                "name": "n_linear_parts",
                                "label": "n_linear_parts_transformations"
                            },
                            "type": [
                                "integer",
                                "null"
                            ],
                            "description": "Number of distinct linear matrix parts represented in a normalizer or transform table.\n\nDistinctness is determined by exact element-wise comparison of the 3 by 3 matrix parts of the listed operations.",
                            "x-optimade-unit": "inapplicable",
                            "examples": [
                                2,
                                4
                            ]
                        },
                        "n_raw_candidates": {
                            "x-optimade-type": "integer",
                            "x-optimade-unit": "inapplicable",
                            "type": [
                                "integer",
                                "null"
                            ],
                            "description": "Number of affine candidates found before deduplication modulo the space group."
                        },
                        "n_unique_candidates": {
                            "x-optimade-type": "integer",
                            "x-optimade-unit": "inapplicable",
                            "type": [
                                "integer",
                                "null"
                            ],
                            "description": "Number of unique affine candidates before quotienting by the space group."
                        },
                        "n_coset_representatives": {
                            "x-optimade-type": "integer",
                            "x-optimade-unit": "inapplicable",
                            "type": [
                                "integer",
                                "null"
                            ],
                            "description": "Number of non-trivial coset representatives before metric-compatibility filtering."
                        },
                        "bounds": {
                            "x-optimade-type": "dictionary",
                            "x-optimade-unit": "inapplicable",
                            "type": [
                                "object",
                                "null"
                            ],
                            "description": "Simple numerical bounds defining the bounded unimodular integer candidate matrices.",
                            "properties": {
                                "det_abs": {
                                    "x-optimade-type": "integer",
                                    "x-optimade-unit": "inapplicable",
                                    "type": [
                                        "integer",
                                        "null"
                                    ],
                                    "description": "Required absolute determinant of every candidate matrix."
                                },
                                "max_abs_linear_entry": {
                                    "x-optimade-type": "integer",
                                    "x-optimade-unit": "inapplicable",
                                    "type": [
                                        "integer",
                                        "null"
                                    ],
                                    "description": "Maximum absolute entry value allowed in candidate matrices."
                                }
                            }
                        },
                        "symops": {
                            "x-optimade-type": "list",
                            "x-optimade-unit": "inapplicable",
                            "type": [
                                "array",
                                "null"
                            ],
                            "description": "Listed affine normalizer coset representatives.",
                            "items": {
                                "$id": "https://schemas.anyterial.se/defs/v0.1/properties/symmetry/basis_transform",
                                "title": "Basis transformation",
                                "x-optimade-type": "dictionary",
                                "x-optimade-definition": {
                                    "kind": "property",
                                    "version": "0.1.0",
                                    "format": "1.3",
                                    "name": "basis_transform",
                                    "label": "basis_transform_symmetry"
                                },
                                "x-optimade-unit": "inapplicable",
                                "type": [
                                    "object",
                                    "null"
                                ],
                                "description": "One crystallographic transform between coordinate descriptions, settings, cells, or related group embeddings.\n\nThe affine map itself is stored in the embedded `affine_transformation` field.\nThe parent property defines the source and target coordinate systems and the precise role of the transform.\nUseful, for example, for representing setting changes, subgroup embeddings, isomorphic subgroup transforms, normalizer representatives, and same-space-group affine images.\nThis property is not limited to symmetry operations within one fixed setting; the matrix may be non-orthogonal or have determinant different from one when the transform changes cell or basis.\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 transform, using exact rational matrix and vector entries.\n      The coordinate convention and source/target interpretation are supplied by the parent property.\n\n    - **index**: OPTIONAL; Integer or null.\n      Index metadata whose interpretation is defined by the parent property.\n      Common uses include the subgroup index for subgroup embeddings, the cell index for isomorphic subgroup transforms, or an ordinal representative index in a finite transform table.\n\n    - **subgroup\\_type**: OPTIONAL; String.\n      International Tables subgroup-type label when the transform describes a maximal subgroup embedding.\n      The value MUST be `t` for a translationengleiche subgroup or `k` for a klassengleiche subgroup.\n      It MUST be omitted when the transform is not a maximal subgroup embedding.\n\n    - **k\\_subtype**: OPTIONAL; String or null.\n      Klassengleiche subtype when the transform describes a klassengleiche subgroup relation.\n      The value MUST be `loss_of_centering_translation` or `enlarged_unit_cell` for klassengleiche relations and null or omitted otherwise.\n\n    - **compatible\\_systems**: OPTIONAL; List of strings.\n      Crystal metric systems for which the transform is compatible.\n      This is used for bounded affine normalizer representatives.\n\n    - **operation\\_kind**: OPTIONAL; String.\n      Categorical label for normalizer-type representatives.\n      The value MUST be `euclidean` for Euclidean normalizer operations, `orthogonal_affine` for the signed-permutation affine normalizer subset, or `affine` for the bounded unimodular affine normalizer table.\n      It MUST be omitted when the transform is a setting transform, subgroup embedding, or other transform for which no normalizer operation class applies.\n\n    - **wyckoff\\_splitting**: OPTIONAL; List.\n      Wyckoff-position splitting metadata induced by the transform when available.\n      The list is grouped by explicit parent Wyckoff letter.\n\n    - **criteria**: OPTIONAL; List.\n      Backward-lift constraint metadata induced by the transform when available.\n      The list is grouped by explicit parent Wyckoff letter.",
                                "properties": {
                                    "affine_transformation": {
                                        "$id": "https://schemas.anyterial.se/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 affine transformation is a geometric transformation preserving points, straight lines, and parallelism (collinearity), but may not preserve Euclidean distances and angles.\nThe transformation is represented by a 3 by 3 matrix and a 3-vector, both serialized with exact string entries.\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\n    - **det**: OPTIONAL; Integer.\n      Determinant of `matrix` when the generator emits it.\n\n    - **is\\_orthogonal**: OPTIONAL; Boolean.\n      Whether `matrix` is orthogonal in the exact representation used by the generator.",
                                        "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.anyterial.se/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.anyterial.se/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.anyterial.se/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."
                                            },
                                            "is_orthogonal": {
                                                "x-optimade-type": "boolean",
                                                "x-optimade-unit": "inapplicable",
                                                "type": [
                                                    "boolean",
                                                    "null"
                                                ],
                                                "description": "Whether the matrix part is orthogonal."
                                            }
                                        },
                                        "examples": [
                                            {
                                                "matrix": [
                                                    [
                                                        "-1",
                                                        "0",
                                                        "0"
                                                    ],
                                                    [
                                                        "0",
                                                        "-1",
                                                        "0"
                                                    ],
                                                    [
                                                        "0",
                                                        "0",
                                                        "1"
                                                    ]
                                                ],
                                                "vector": [
                                                    "0",
                                                    "0",
                                                    "0"
                                                ],
                                                "xyz": "-x,-y,z",
                                                "det": 1,
                                                "is_orthogonal": true
                                            }
                                        ]
                                    },
                                    "index": {
                                        "x-optimade-type": "integer",
                                        "x-optimade-unit": "inapplicable",
                                        "type": [
                                            "integer",
                                            "null"
                                        ],
                                        "description": "Index metadata whose interpretation is supplied by the parent property."
                                    },
                                    "subgroup_type": {
                                        "x-optimade-type": "string",
                                        "x-optimade-unit": "inapplicable",
                                        "type": [
                                            "string"
                                        ],
                                        "description": "International Tables subgroup-type label when applicable.",
                                        "enum": [
                                            "t",
                                            "k"
                                        ]
                                    },
                                    "k_subtype": {
                                        "x-optimade-type": "string",
                                        "x-optimade-unit": "inapplicable",
                                        "type": [
                                            "string",
                                            "null"
                                        ],
                                        "description": "Klassengleiche subtype when applicable."
                                    },
                                    "compatible_systems": {
                                        "x-optimade-type": "list",
                                        "x-optimade-unit": "inapplicable",
                                        "type": [
                                            "array",
                                            "null"
                                        ],
                                        "description": "Crystal metric systems compatible with the transform.",
                                        "items": {
                                            "x-optimade-type": "string",
                                            "x-optimade-unit": "inapplicable",
                                            "type": [
                                                "string"
                                            ],
                                            "description": "One compatible crystal-system label.",
                                            "enum": [
                                                "triclinic",
                                                "monoclinic",
                                                "orthorhombic",
                                                "tetragonal",
                                                "trigonal",
                                                "hexagonal",
                                                "cubic"
                                            ]
                                        }
                                    },
                                    "operation_kind": {
                                        "x-optimade-type": "string",
                                        "x-optimade-unit": "inapplicable",
                                        "type": [
                                            "string"
                                        ],
                                        "description": "Categorical label for normalizer-type representatives.",
                                        "enum": [
                                            "euclidean",
                                            "orthogonal_affine",
                                            "affine"
                                        ]
                                    },
                                    "wyckoff_splitting": {
                                        "$id": "https://schemas.anyterial.se/defs/v0.1/properties/transformations/wyckoff_splitting",
                                        "title": "Wyckoff splitting",
                                        "x-optimade-type": "list",
                                        "x-optimade-definition": {
                                            "kind": "property",
                                            "version": "0.1.0",
                                            "format": "1.3",
                                            "name": "wyckoff_splitting",
                                            "label": "wyckoff_splitting_transformations"
                                        },
                                        "x-optimade-unit": "inapplicable",
                                        "type": [
                                            "array",
                                            "null"
                                        ],
                                        "description": "Wyckoff-position splitting data associated with a subgroup or same-space-group transform.\n\nEach list item gives the split of one parent Wyckoff position.\nThe parent Wyckoff letter is stored in the `parent` field rather than as a JSON dictionary key.\n\n**Requirements/Conventions**:\n\n- It MUST be a list of dictionaries.\n- Each dictionary MUST contain `parent`, the Wyckoff letter in the parent setting.\n- Each dictionary MUST contain `splits`, an ordered list of subgroup Wyckoff-position assignments or coordinate expressions emitted by the generator.",
                                        "items": {
                                            "x-optimade-type": "dictionary",
                                            "x-optimade-unit": "inapplicable",
                                            "type": [
                                                "object"
                                            ],
                                            "description": "Splitting data for one parent Wyckoff position.",
                                            "required": [
                                                "parent",
                                                "splits"
                                            ],
                                            "properties": {
                                                "parent": {
                                                    "x-optimade-type": "string",
                                                    "x-optimade-unit": "inapplicable",
                                                    "type": [
                                                        "string"
                                                    ],
                                                    "description": "Parent Wyckoff letter."
                                                },
                                                "splits": {
                                                    "x-optimade-type": "list",
                                                    "x-optimade-unit": "inapplicable",
                                                    "type": [
                                                        "array"
                                                    ],
                                                    "description": "Ordered split records for this parent Wyckoff letter.",
                                                    "items": {
                                                        "x-optimade-type": "dictionary",
                                                        "x-optimade-unit": "inapplicable",
                                                        "type": [
                                                            "object"
                                                        ],
                                                        "description": "One Wyckoff split record.",
                                                        "required": [
                                                            "letter",
                                                            "xyz",
                                                            "affine"
                                                        ],
                                                        "properties": {
                                                            "letter": {
                                                                "x-optimade-type": "string",
                                                                "x-optimade-unit": "inapplicable",
                                                                "type": [
                                                                    "string"
                                                                ],
                                                                "description": "Subgroup Wyckoff letter assigned by this split branch."
                                                            },
                                                            "xyz": {
                                                                "x-optimade-type": "string",
                                                                "x-optimade-unit": "inapplicable",
                                                                "type": [
                                                                    "string"
                                                                ],
                                                                "description": "Coordinate expression for the split branch."
                                                            },
                                                            "affine": {
                                                                "x-optimade-type": "list",
                                                                "x-optimade-unit": "inapplicable",
                                                                "x-optimade-dimensions": {
                                                                    "names": [
                                                                        "dim_lattice",
                                                                        "dim_affine"
                                                                    ],
                                                                    "sizes": [
                                                                        3,
                                                                        4
                                                                    ]
                                                                },
                                                                "type": [
                                                                    "array"
                                                                ],
                                                                "description": "Exact affine representation for the split branch as a 3 by 4 augmented matrix.\nEach row holds the three linear coefficients followed by the translation component, all as exact fraction strings.",
                                                                "items": {
                                                                    "x-optimade-type": "list",
                                                                    "x-optimade-unit": "inapplicable",
                                                                    "x-optimade-dimensions": {
                                                                        "names": [
                                                                            "dim_affine"
                                                                        ],
                                                                        "sizes": [
                                                                            4
                                                                        ]
                                                                    },
                                                                    "type": [
                                                                        "array"
                                                                    ],
                                                                    "description": "One row of the augmented affine matrix.",
                                                                    "items": {
                                                                        "$id": "https://schemas.anyterial.se/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": [
                                            [
                                                {
                                                    "parent": "c",
                                                    "splits": [
                                                        {
                                                            "letter": "e",
                                                            "xyz": "x,y,z",
                                                            "affine": [
                                                                [
                                                                    "1",
                                                                    "0",
                                                                    "0",
                                                                    "0"
                                                                ],
                                                                [
                                                                    "0",
                                                                    "1",
                                                                    "0",
                                                                    "0"
                                                                ],
                                                                [
                                                                    "0",
                                                                    "0",
                                                                    "1",
                                                                    "0"
                                                                ]
                                                            ]
                                                        }
                                                    ]
                                                }
                                            ]
                                        ]
                                    },
                                    "criteria": {
                                        "x-optimade-type": "list",
                                        "x-optimade-unit": "inapplicable",
                                        "type": [
                                            "array",
                                            "null"
                                        ],
                                        "description": "Backward-lift constraint metadata induced by the transform, grouped by explicit parent Wyckoff letter.",
                                        "items": {
                                            "x-optimade-type": "dictionary",
                                            "x-optimade-unit": "inapplicable",
                                            "type": [
                                                "object"
                                            ],
                                            "description": "Backward-lift constraints for one parent Wyckoff position.",
                                            "required": [
                                                "parent",
                                                "constraints"
                                            ],
                                            "properties": {
                                                "parent": {
                                                    "x-optimade-type": "string",
                                                    "x-optimade-unit": "inapplicable",
                                                    "type": [
                                                        "string"
                                                    ],
                                                    "description": "Parent Wyckoff letter."
                                                },
                                                "constraints": {
                                                    "x-optimade-type": "list",
                                                    "x-optimade-unit": "inapplicable",
                                                    "type": [
                                                        "array"
                                                    ],
                                                    "description": "Constraint records for this parent Wyckoff letter.",
                                                    "items": {
                                                        "x-optimade-type": "dictionary",
                                                        "x-optimade-unit": "inapplicable",
                                                        "type": [
                                                            "object"
                                                        ],
                                                        "description": "One linear backward-lift constraint record.",
                                                        "properties": {
                                                            "roles": {
                                                                "x-optimade-type": "list",
                                                                "x-optimade-unit": "inapplicable",
                                                                "type": [
                                                                    "array"
                                                                ],
                                                                "description": "Wyckoff-position role references entering the constraint.",
                                                                "items": {
                                                                    "x-optimade-type": "dictionary",
                                                                    "x-optimade-unit": "inapplicable",
                                                                    "type": [
                                                                        "object"
                                                                    ],
                                                                    "description": "One role reference.",
                                                                    "required": [
                                                                        "letter",
                                                                        "index"
                                                                    ],
                                                                    "properties": {
                                                                        "letter": {
                                                                            "x-optimade-type": "string",
                                                                            "x-optimade-unit": "inapplicable",
                                                                            "type": [
                                                                                "string"
                                                                            ],
                                                                            "description": "Wyckoff letter for the referenced role."
                                                                        },
                                                                        "index": {
                                                                            "x-optimade-type": "integer",
                                                                            "x-optimade-unit": "inapplicable",
                                                                            "type": [
                                                                                "integer"
                                                                            ],
                                                                            "description": "Zero-based occurrence index for the role."
                                                                        }
                                                                    }
                                                                }
                                                            },
                                                            "coeffs": {
                                                                "x-optimade-type": "list",
                                                                "x-optimade-unit": "inapplicable",
                                                                "type": [
                                                                    "array"
                                                                ],
                                                                "description": "Exact coefficient vectors for the constraint.",
                                                                "items": {
                                                                    "x-optimade-type": "list",
                                                                    "x-optimade-unit": "inapplicable",
                                                                    "type": [
                                                                        "array"
                                                                    ],
                                                                    "description": "Coefficients associated with one role.",
                                                                    "items": {
                                                                        "x-optimade-type": "list",
                                                                        "x-optimade-unit": "inapplicable",
                                                                        "x-optimade-dimensions": {
                                                                            "names": [
                                                                                "dim_lattice"
                                                                            ],
                                                                            "sizes": [
                                                                                3
                                                                            ]
                                                                        },
                                                                        "type": [
                                                                            "array"
                                                                        ],
                                                                        "description": "One exact coefficient vector.",
                                                                        "items": {
                                                                            "$id": "https://schemas.anyterial.se/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"
                                                                        }
                                                                    }
                                                                }
                                                            },
                                                            "target": {
                                                                "x-optimade-type": "list",
                                                                "x-optimade-unit": "inapplicable",
                                                                "type": [
                                                                    "array"
                                                                ],
                                                                "description": "Exact target vector or scalar for the constraint.",
                                                                "items": {
                                                                    "$id": "https://schemas.anyterial.se/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",
                                                    "2"
                                                ]
                                            ],
                                            "vector": [
                                                "0",
                                                "0",
                                                "0"
                                            ],
                                            "xyz": "x,y,2z",
                                            "det": 2,
                                            "is_orthogonal": false
                                        },
                                        "index": 2,
                                        "subgroup_type": "k",
                                        "k_subtype": "enlarged_unit_cell",
                                        "wyckoff_splitting": [
                                            {
                                                "parent": "a",
                                                "splits": [
                                                    {
                                                        "letter": "a",
                                                        "xyz": "x,y,z",
                                                        "affine": [
                                                            [
                                                                "1",
                                                                "0",
                                                                "0",
                                                                "0"
                                                            ],
                                                            [
                                                                "0",
                                                                "1",
                                                                "0",
                                                                "0"
                                                            ],
                                                            [
                                                                "0",
                                                                "0",
                                                                "1",
                                                                "0"
                                                            ]
                                                        ]
                                                    }
                                                ]
                                            }
                                        ],
                                        "criteria": [
                                            {
                                                "parent": "a",
                                                "constraints": [
                                                    {
                                                        "roles": [
                                                            {
                                                                "letter": "a",
                                                                "index": 0
                                                            }
                                                        ],
                                                        "coeffs": [
                                                            [
                                                                [
                                                                    "1",
                                                                    "0",
                                                                    "0"
                                                                ]
                                                            ]
                                                        ],
                                                        "target": [
                                                            "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
                                        },
                                        "compatible_systems": [
                                            "triclinic",
                                            "monoclinic",
                                            "orthorhombic",
                                            "tetragonal",
                                            "trigonal",
                                            "hexagonal",
                                            "cubic"
                                        ],
                                        "operation_kind": "affine"
                                    }
                                ]
                            }
                        }
                    },
                    "examples": [
                        {
                            "normalizer_kind": "affine",
                            "representation": "bounded_coset_representatives",
                            "candidate_set": "bounded_unimodular_integer_matrices",
                            "n_symops": 63,
                            "n_linear_parts": 63,
                            "n_raw_candidates": 6960,
                            "n_unique_candidates": 6960,
                            "n_coset_representatives": 6959,
                            "bounds": {
                                "det_abs": 1,
                                "max_abs_linear_entry": 1
                            },
                            "symops": [
                                {
                                    "affine_transformation": {
                                        "xyz": "-x,-y,-z",
                                        "matrix": [
                                            [
                                                "-1",
                                                "0",
                                                "0"
                                            ],
                                            [
                                                "0",
                                                "-1",
                                                "0"
                                            ],
                                            [
                                                "0",
                                                "0",
                                                "-1"
                                            ]
                                        ],
                                        "vector": [
                                            "0",
                                            "0",
                                            "0"
                                        ],
                                        "det": -1,
                                        "is_orthogonal": true
                                    },
                                    "compatible_systems": [
                                        "triclinic",
                                        "monoclinic",
                                        "orthorhombic",
                                        "tetragonal",
                                        "trigonal",
                                        "hexagonal",
                                        "cubic"
                                    ],
                                    "operation_kind": "affine"
                                }
                            ]
                        }
                    ]
                },
                "continuous_normalizer": {
                    "$id": "https://schemas.anyterial.se/defs/v0.1/properties/transformations/continuous_normalizer",
                    "x-optimade-requirements": {
                        "support": "may",
                        "sortable": false,
                        "query-support": "none",
                        "response-level": "may"
                    },
                    "title": "Continuous normalizer",
                    "x-optimade-type": "dictionary",
                    "x-optimade-definition": {
                        "kind": "property",
                        "version": "0.1.0",
                        "format": "1.3",
                        "name": "continuous_normalizer",
                        "label": "continuous_normalizer_transformations"
                    },
                    "x-optimade-unit": "inapplicable",
                    "type": [
                        "object",
                        "null"
                    ],
                    "description": "Parameterized continuous normalizer subspace for a setting.\n\nIt describes continuous origin-shift freedoms by dimension and fractional-coordinate basis vectors rather than by enumerating infinitely many operations.\n\n**Requirements/Conventions**:\n\n- It MUST be a dictionary with the following keys:\n\n    - **dimension**: OPTIONAL; Integer.\n      Dimension of the continuous parameter subspace.\n      When present, it MUST equal the length of `basis_vectors`.\n\n    - **basis\\_vectors**: REQUIRED; List of vectors.\n      Basis vectors spanning the continuous normalizer parameter space.\n      Each basis vector is represented as exact fractional-coordinate components.\n\n    - **coordinate\\_system**: OPTIONAL; String.\n      Coordinate system used for the parameter vectors.\n\n    - **representation**: OPTIONAL; String.\n      Textual description of the parameterized representation.",
                    "properties": {
                        "dimension": {
                            "x-optimade-type": "integer",
                            "x-optimade-unit": "inapplicable",
                            "type": [
                                "integer",
                                "null"
                            ],
                            "description": "Dimension of the continuous parameter subspace. When present, it MUST equal the length of `basis_vectors`."
                        },
                        "basis_vectors": {
                            "x-optimade-type": "list",
                            "x-optimade-unit": "inapplicable",
                            "type": [
                                "array",
                                "null"
                            ],
                            "description": "Basis vectors spanning the continuous normalizer parameter space.",
                            "items": {
                                "x-optimade-type": "list",
                                "x-optimade-unit": "inapplicable",
                                "x-optimade-dimensions": {
                                    "names": [
                                        "dim_lattice"
                                    ],
                                    "sizes": [
                                        3
                                    ]
                                },
                                "type": [
                                    "array"
                                ],
                                "description": "One basis vector in fractional coordinates.",
                                "items": {
                                    "$id": "https://schemas.anyterial.se/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"
                                }
                            }
                        },
                        "coordinate_system": {
                            "x-optimade-type": "string",
                            "x-optimade-unit": "inapplicable",
                            "type": [
                                "string",
                                "null"
                            ],
                            "description": "Coordinate system used for the parameter vectors."
                        },
                        "representation": {
                            "x-optimade-type": "string",
                            "x-optimade-unit": "inapplicable",
                            "type": [
                                "string",
                                "null"
                            ],
                            "description": "Textual description of the parameterized representation."
                        }
                    },
                    "examples": [
                        {
                            "dimension": 3,
                            "coordinate_system": "fractional",
                            "basis_vectors": [
                                [
                                    "1",
                                    "0",
                                    "0"
                                ],
                                [
                                    "0",
                                    "1",
                                    "0"
                                ],
                                [
                                    "0",
                                    "0",
                                    "1"
                                ]
                            ]
                        }
                    ]
                },
                "isomorphic_subgroups": {
                    "$id": "https://schemas.anyterial.se/defs/v0.1/properties/transformations/isomorphic_subgroups",
                    "x-optimade-requirements": {
                        "support": "may",
                        "sortable": false,
                        "query-support": "none",
                        "response-level": "may"
                    },
                    "title": "Isomorphic subgroup transforms",
                    "x-optimade-type": "dictionary",
                    "x-optimade-definition": {
                        "kind": "property",
                        "version": "0.1.0",
                        "format": "1.3",
                        "name": "isomorphic_subgroups",
                        "label": "isomorphic_subgroups_transformations"
                    },
                    "x-optimade-unit": "inapplicable",
                    "type": [
                        "object",
                        "null"
                    ],
                    "description": "Isomorphic subgroup transforms of bounded index for one parent setting or space-group type.\n\nAn isomorphic subgroup has the same space-group type as the parent but is embedded with a finite index, usually corresponding to an enlarged unit cell or a sublattice choice.\nThese transforms are useful for algorithms that need to enumerate same-type subgroup embeddings, compare structures under supercell changes, or construct bounded same-space-group refinement paths.\n\nThe transform records use the basis-transform convention represented by `matrix` and `vector`.\nThe `index` field is the subgroup index and equals the determinant factor of the basis transformation.\nThe generator currently searches indices up to its configured maximum index and deduplicates equivalent transforms under normalizer equivalence.\n\n**Requirements/Conventions**:\n\n- It MUST be a dictionary containing an `items` list.\n- Each item in `items` MUST describe one exact isomorphic subgroup transform.\n- Matrix and vector entries MUST be exact strings, using integer strings or fraction strings as appropriate.",
                    "properties": {
                        "items": {
                            "x-optimade-type": "list",
                            "x-optimade-unit": "inapplicable",
                            "type": [
                                "array",
                                "null"
                            ],
                            "description": "Isomorphic subgroup transform records for one parent key.",
                            "items": {
                                "$id": "https://schemas.anyterial.se/defs/v0.1/properties/symmetry/basis_transform",
                                "title": "Basis transformation",
                                "x-optimade-type": "dictionary",
                                "x-optimade-definition": {
                                    "kind": "property",
                                    "version": "0.1.0",
                                    "format": "1.3",
                                    "name": "basis_transform",
                                    "label": "basis_transform_symmetry"
                                },
                                "x-optimade-unit": "inapplicable",
                                "type": [
                                    "object",
                                    "null"
                                ],
                                "description": "One crystallographic transform between coordinate descriptions, settings, cells, or related group embeddings.\n\nThe affine map itself is stored in the embedded `affine_transformation` field.\nThe parent property defines the source and target coordinate systems and the precise role of the transform.\nUseful, for example, for representing setting changes, subgroup embeddings, isomorphic subgroup transforms, normalizer representatives, and same-space-group affine images.\nThis property is not limited to symmetry operations within one fixed setting; the matrix may be non-orthogonal or have determinant different from one when the transform changes cell or basis.\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 transform, using exact rational matrix and vector entries.\n      The coordinate convention and source/target interpretation are supplied by the parent property.\n\n    - **index**: OPTIONAL; Integer or null.\n      Index metadata whose interpretation is defined by the parent property.\n      Common uses include the subgroup index for subgroup embeddings, the cell index for isomorphic subgroup transforms, or an ordinal representative index in a finite transform table.\n\n    - **subgroup\\_type**: OPTIONAL; String.\n      International Tables subgroup-type label when the transform describes a maximal subgroup embedding.\n      The value MUST be `t` for a translationengleiche subgroup or `k` for a klassengleiche subgroup.\n      It MUST be omitted when the transform is not a maximal subgroup embedding.\n\n    - **k\\_subtype**: OPTIONAL; String or null.\n      Klassengleiche subtype when the transform describes a klassengleiche subgroup relation.\n      The value MUST be `loss_of_centering_translation` or `enlarged_unit_cell` for klassengleiche relations and null or omitted otherwise.\n\n    - **compatible\\_systems**: OPTIONAL; List of strings.\n      Crystal metric systems for which the transform is compatible.\n      This is used for bounded affine normalizer representatives.\n\n    - **operation\\_kind**: OPTIONAL; String.\n      Categorical label for normalizer-type representatives.\n      The value MUST be `euclidean` for Euclidean normalizer operations, `orthogonal_affine` for the signed-permutation affine normalizer subset, or `affine` for the bounded unimodular affine normalizer table.\n      It MUST be omitted when the transform is a setting transform, subgroup embedding, or other transform for which no normalizer operation class applies.\n\n    - **wyckoff\\_splitting**: OPTIONAL; List.\n      Wyckoff-position splitting metadata induced by the transform when available.\n      The list is grouped by explicit parent Wyckoff letter.\n\n    - **criteria**: OPTIONAL; List.\n      Backward-lift constraint metadata induced by the transform when available.\n      The list is grouped by explicit parent Wyckoff letter.",
                                "properties": {
                                    "affine_transformation": {
                                        "$id": "https://schemas.anyterial.se/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 affine transformation is a geometric transformation preserving points, straight lines, and parallelism (collinearity), but may not preserve Euclidean distances and angles.\nThe transformation is represented by a 3 by 3 matrix and a 3-vector, both serialized with exact string entries.\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\n    - **det**: OPTIONAL; Integer.\n      Determinant of `matrix` when the generator emits it.\n\n    - **is\\_orthogonal**: OPTIONAL; Boolean.\n      Whether `matrix` is orthogonal in the exact representation used by the generator.",
                                        "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.anyterial.se/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.anyterial.se/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.anyterial.se/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."
                                            },
                                            "is_orthogonal": {
                                                "x-optimade-type": "boolean",
                                                "x-optimade-unit": "inapplicable",
                                                "type": [
                                                    "boolean",
                                                    "null"
                                                ],
                                                "description": "Whether the matrix part is orthogonal."
                                            }
                                        },
                                        "examples": [
                                            {
                                                "matrix": [
                                                    [
                                                        "-1",
                                                        "0",
                                                        "0"
                                                    ],
                                                    [
                                                        "0",
                                                        "-1",
                                                        "0"
                                                    ],
                                                    [
                                                        "0",
                                                        "0",
                                                        "1"
                                                    ]
                                                ],
                                                "vector": [
                                                    "0",
                                                    "0",
                                                    "0"
                                                ],
                                                "xyz": "-x,-y,z",
                                                "det": 1,
                                                "is_orthogonal": true
                                            }
                                        ]
                                    },
                                    "index": {
                                        "x-optimade-type": "integer",
                                        "x-optimade-unit": "inapplicable",
                                        "type": [
                                            "integer",
                                            "null"
                                        ],
                                        "description": "Index metadata whose interpretation is supplied by the parent property."
                                    },
                                    "subgroup_type": {
                                        "x-optimade-type": "string",
                                        "x-optimade-unit": "inapplicable",
                                        "type": [
                                            "string"
                                        ],
                                        "description": "International Tables subgroup-type label when applicable.",
                                        "enum": [
                                            "t",
                                            "k"
                                        ]
                                    },
                                    "k_subtype": {
                                        "x-optimade-type": "string",
                                        "x-optimade-unit": "inapplicable",
                                        "type": [
                                            "string",
                                            "null"
                                        ],
                                        "description": "Klassengleiche subtype when applicable."
                                    },
                                    "compatible_systems": {
                                        "x-optimade-type": "list",
                                        "x-optimade-unit": "inapplicable",
                                        "type": [
                                            "array",
                                            "null"
                                        ],
                                        "description": "Crystal metric systems compatible with the transform.",
                                        "items": {
                                            "x-optimade-type": "string",
                                            "x-optimade-unit": "inapplicable",
                                            "type": [
                                                "string"
                                            ],
                                            "description": "One compatible crystal-system label.",
                                            "enum": [
                                                "triclinic",
                                                "monoclinic",
                                                "orthorhombic",
                                                "tetragonal",
                                                "trigonal",
                                                "hexagonal",
                                                "cubic"
                                            ]
                                        }
                                    },
                                    "operation_kind": {
                                        "x-optimade-type": "string",
                                        "x-optimade-unit": "inapplicable",
                                        "type": [
                                            "string"
                                        ],
                                        "description": "Categorical label for normalizer-type representatives.",
                                        "enum": [
                                            "euclidean",
                                            "orthogonal_affine",
                                            "affine"
                                        ]
                                    },
                                    "wyckoff_splitting": {
                                        "$id": "https://schemas.anyterial.se/defs/v0.1/properties/transformations/wyckoff_splitting",
                                        "title": "Wyckoff splitting",
                                        "x-optimade-type": "list",
                                        "x-optimade-definition": {
                                            "kind": "property",
                                            "version": "0.1.0",
                                            "format": "1.3",
                                            "name": "wyckoff_splitting",
                                            "label": "wyckoff_splitting_transformations"
                                        },
                                        "x-optimade-unit": "inapplicable",
                                        "type": [
                                            "array",
                                            "null"
                                        ],
                                        "description": "Wyckoff-position splitting data associated with a subgroup or same-space-group transform.\n\nEach list item gives the split of one parent Wyckoff position.\nThe parent Wyckoff letter is stored in the `parent` field rather than as a JSON dictionary key.\n\n**Requirements/Conventions**:\n\n- It MUST be a list of dictionaries.\n- Each dictionary MUST contain `parent`, the Wyckoff letter in the parent setting.\n- Each dictionary MUST contain `splits`, an ordered list of subgroup Wyckoff-position assignments or coordinate expressions emitted by the generator.",
                                        "items": {
                                            "x-optimade-type": "dictionary",
                                            "x-optimade-unit": "inapplicable",
                                            "type": [
                                                "object"
                                            ],
                                            "description": "Splitting data for one parent Wyckoff position.",
                                            "required": [
                                                "parent",
                                                "splits"
                                            ],
                                            "properties": {
                                                "parent": {
                                                    "x-optimade-type": "string",
                                                    "x-optimade-unit": "inapplicable",
                                                    "type": [
                                                        "string"
                                                    ],
                                                    "description": "Parent Wyckoff letter."
                                                },
                                                "splits": {
                                                    "x-optimade-type": "list",
                                                    "x-optimade-unit": "inapplicable",
                                                    "type": [
                                                        "array"
                                                    ],
                                                    "description": "Ordered split records for this parent Wyckoff letter.",
                                                    "items": {
                                                        "x-optimade-type": "dictionary",
                                                        "x-optimade-unit": "inapplicable",
                                                        "type": [
                                                            "object"
                                                        ],
                                                        "description": "One Wyckoff split record.",
                                                        "required": [
                                                            "letter",
                                                            "xyz",
                                                            "affine"
                                                        ],
                                                        "properties": {
                                                            "letter": {
                                                                "x-optimade-type": "string",
                                                                "x-optimade-unit": "inapplicable",
                                                                "type": [
                                                                    "string"
                                                                ],
                                                                "description": "Subgroup Wyckoff letter assigned by this split branch."
                                                            },
                                                            "xyz": {
                                                                "x-optimade-type": "string",
                                                                "x-optimade-unit": "inapplicable",
                                                                "type": [
                                                                    "string"
                                                                ],
                                                                "description": "Coordinate expression for the split branch."
                                                            },
                                                            "affine": {
                                                                "x-optimade-type": "list",
                                                                "x-optimade-unit": "inapplicable",
                                                                "x-optimade-dimensions": {
                                                                    "names": [
                                                                        "dim_lattice",
                                                                        "dim_affine"
                                                                    ],
                                                                    "sizes": [
                                                                        3,
                                                                        4
                                                                    ]
                                                                },
                                                                "type": [
                                                                    "array"
                                                                ],
                                                                "description": "Exact affine representation for the split branch as a 3 by 4 augmented matrix.\nEach row holds the three linear coefficients followed by the translation component, all as exact fraction strings.",
                                                                "items": {
                                                                    "x-optimade-type": "list",
                                                                    "x-optimade-unit": "inapplicable",
                                                                    "x-optimade-dimensions": {
                                                                        "names": [
                                                                            "dim_affine"
                                                                        ],
                                                                        "sizes": [
                                                                            4
                                                                        ]
                                                                    },
                                                                    "type": [
                                                                        "array"
                                                                    ],
                                                                    "description": "One row of the augmented affine matrix.",
                                                                    "items": {
                                                                        "$id": "https://schemas.anyterial.se/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": [
                                            [
                                                {
                                                    "parent": "c",
                                                    "splits": [
                                                        {
                                                            "letter": "e",
                                                            "xyz": "x,y,z",
                                                            "affine": [
                                                                [
                                                                    "1",
                                                                    "0",
                                                                    "0",
                                                                    "0"
                                                                ],
                                                                [
                                                                    "0",
                                                                    "1",
                                                                    "0",
                                                                    "0"
                                                                ],
                                                                [
                                                                    "0",
                                                                    "0",
                                                                    "1",
                                                                    "0"
                                                                ]
                                                            ]
                                                        }
                                                    ]
                                                }
                                            ]
                                        ]
                                    },
                                    "criteria": {
                                        "x-optimade-type": "list",
                                        "x-optimade-unit": "inapplicable",
                                        "type": [
                                            "array",
                                            "null"
                                        ],
                                        "description": "Backward-lift constraint metadata induced by the transform, grouped by explicit parent Wyckoff letter.",
                                        "items": {
                                            "x-optimade-type": "dictionary",
                                            "x-optimade-unit": "inapplicable",
                                            "type": [
                                                "object"
                                            ],
                                            "description": "Backward-lift constraints for one parent Wyckoff position.",
                                            "required": [
                                                "parent",
                                                "constraints"
                                            ],
                                            "properties": {
                                                "parent": {
                                                    "x-optimade-type": "string",
                                                    "x-optimade-unit": "inapplicable",
                                                    "type": [
                                                        "string"
                                                    ],
                                                    "description": "Parent Wyckoff letter."
                                                },
                                                "constraints": {
                                                    "x-optimade-type": "list",
                                                    "x-optimade-unit": "inapplicable",
                                                    "type": [
                                                        "array"
                                                    ],
                                                    "description": "Constraint records for this parent Wyckoff letter.",
                                                    "items": {
                                                        "x-optimade-type": "dictionary",
                                                        "x-optimade-unit": "inapplicable",
                                                        "type": [
                                                            "object"
                                                        ],
                                                        "description": "One linear backward-lift constraint record.",
                                                        "properties": {
                                                            "roles": {
                                                                "x-optimade-type": "list",
                                                                "x-optimade-unit": "inapplicable",
                                                                "type": [
                                                                    "array"
                                                                ],
                                                                "description": "Wyckoff-position role references entering the constraint.",
                                                                "items": {
                                                                    "x-optimade-type": "dictionary",
                                                                    "x-optimade-unit": "inapplicable",
                                                                    "type": [
                                                                        "object"
                                                                    ],
                                                                    "description": "One role reference.",
                                                                    "required": [
                                                                        "letter",
                                                                        "index"
                                                                    ],
                                                                    "properties": {
                                                                        "letter": {
                                                                            "x-optimade-type": "string",
                                                                            "x-optimade-unit": "inapplicable",
                                                                            "type": [
                                                                                "string"
                                                                            ],
                                                                            "description": "Wyckoff letter for the referenced role."
                                                                        },
                                                                        "index": {
                                                                            "x-optimade-type": "integer",
                                                                            "x-optimade-unit": "inapplicable",
                                                                            "type": [
                                                                                "integer"
                                                                            ],
                                                                            "description": "Zero-based occurrence index for the role."
                                                                        }
                                                                    }
                                                                }
                                                            },
                                                            "coeffs": {
                                                                "x-optimade-type": "list",
                                                                "x-optimade-unit": "inapplicable",
                                                                "type": [
                                                                    "array"
                                                                ],
                                                                "description": "Exact coefficient vectors for the constraint.",
                                                                "items": {
                                                                    "x-optimade-type": "list",
                                                                    "x-optimade-unit": "inapplicable",
                                                                    "type": [
                                                                        "array"
                                                                    ],
                                                                    "description": "Coefficients associated with one role.",
                                                                    "items": {
                                                                        "x-optimade-type": "list",
                                                                        "x-optimade-unit": "inapplicable",
                                                                        "x-optimade-dimensions": {
                                                                            "names": [
                                                                                "dim_lattice"
                                                                            ],
                                                                            "sizes": [
                                                                                3
                                                                            ]
                                                                        },
                                                                        "type": [
                                                                            "array"
                                                                        ],
                                                                        "description": "One exact coefficient vector.",
                                                                        "items": {
                                                                            "$id": "https://schemas.anyterial.se/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"
                                                                        }
                                                                    }
                                                                }
                                                            },
                                                            "target": {
                                                                "x-optimade-type": "list",
                                                                "x-optimade-unit": "inapplicable",
                                                                "type": [
                                                                    "array"
                                                                ],
                                                                "description": "Exact target vector or scalar for the constraint.",
                                                                "items": {
                                                                    "$id": "https://schemas.anyterial.se/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",
                                                    "2"
                                                ]
                                            ],
                                            "vector": [
                                                "0",
                                                "0",
                                                "0"
                                            ],
                                            "xyz": "x,y,2z",
                                            "det": 2,
                                            "is_orthogonal": false
                                        },
                                        "index": 2,
                                        "subgroup_type": "k",
                                        "k_subtype": "enlarged_unit_cell",
                                        "wyckoff_splitting": [
                                            {
                                                "parent": "a",
                                                "splits": [
                                                    {
                                                        "letter": "a",
                                                        "xyz": "x,y,z",
                                                        "affine": [
                                                            [
                                                                "1",
                                                                "0",
                                                                "0",
                                                                "0"
                                                            ],
                                                            [
                                                                "0",
                                                                "1",
                                                                "0",
                                                                "0"
                                                            ],
                                                            [
                                                                "0",
                                                                "0",
                                                                "1",
                                                                "0"
                                                            ]
                                                        ]
                                                    }
                                                ]
                                            }
                                        ],
                                        "criteria": [
                                            {
                                                "parent": "a",
                                                "constraints": [
                                                    {
                                                        "roles": [
                                                            {
                                                                "letter": "a",
                                                                "index": 0
                                                            }
                                                        ],
                                                        "coeffs": [
                                                            [
                                                                [
                                                                    "1",
                                                                    "0",
                                                                    "0"
                                                                ]
                                                            ]
                                                        ],
                                                        "target": [
                                                            "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
                                        },
                                        "compatible_systems": [
                                            "triclinic",
                                            "monoclinic",
                                            "orthorhombic",
                                            "tetragonal",
                                            "trigonal",
                                            "hexagonal",
                                            "cubic"
                                        ],
                                        "operation_kind": "affine"
                                    }
                                ]
                            }
                        }
                    },
                    "examples": [
                        {
                            "items": [
                                {
                                    "index": 2,
                                    "wyckoff_splitting": {
                                        "a": [
                                            [
                                                "a",
                                                "x,y,z",
                                                [
                                                    [
                                                        "1",
                                                        "0",
                                                        "0",
                                                        "0"
                                                    ],
                                                    [
                                                        "0",
                                                        "1",
                                                        "0",
                                                        "0"
                                                    ],
                                                    [
                                                        "0",
                                                        "0",
                                                        "1/2",
                                                        "1/2"
                                                    ]
                                                ]
                                            ],
                                            [
                                                "a",
                                                "x,y,z",
                                                [
                                                    [
                                                        "1",
                                                        "0",
                                                        "0",
                                                        "0"
                                                    ],
                                                    [
                                                        "0",
                                                        "1",
                                                        "0",
                                                        "0"
                                                    ],
                                                    [
                                                        "0",
                                                        "0",
                                                        "1/2",
                                                        "0"
                                                    ]
                                                ]
                                            ]
                                        ]
                                    },
                                    "affine_transformation": {
                                        "matrix": [
                                            [
                                                "1",
                                                "0",
                                                "0"
                                            ],
                                            [
                                                "0",
                                                "1",
                                                "0"
                                            ],
                                            [
                                                "0",
                                                "0",
                                                "2"
                                            ]
                                        ],
                                        "vector": [
                                            "0",
                                            "0",
                                            "0"
                                        ]
                                    }
                                }
                            ]
                        }
                    ]
                },
                "baernighausen": {
                    "$id": "https://schemas.anyterial.se/defs/v0.1/properties/transformations/baernighausen",
                    "x-optimade-requirements": {
                        "support": "may",
                        "sortable": false,
                        "query-support": "none",
                        "response-level": "may"
                    },
                    "title": "B\u00e4rnighausen subgroup transforms",
                    "x-optimade-type": "list",
                    "x-optimade-definition": {
                        "kind": "property",
                        "version": "0.1.0",
                        "format": "1.3",
                        "name": "baernighausen",
                        "label": "baernighausen_transformations"
                    },
                    "x-optimade-unit": "inapplicable",
                    "type": [
                        "array",
                        "null"
                    ],
                    "description": "B\u00e4rnighausen subgroup transform table for one parent setting or space-group type.\n\nEntries describe generated embeddings of subgroup settings into the containing parent setting.\nEach list item groups transform records for one target subgroup, with the target stored as ordinary data rather than as a JSON dictionary key.\nTransform records follow `/properties/symmetry/basis_transform`.\n\n**Requirements/Conventions**:\n\n- It MUST be a list of dictionaries.\n- Each dictionary MUST contain either `target_hall_entry` or `target_it_number`, depending on whether the containing dataset is Hall-setting keyed or IT-number keyed.\n- Each dictionary MUST contain `transforms`, a list of basis-transform records.",
                    "items": {
                        "x-optimade-type": "dictionary",
                        "x-optimade-unit": "inapplicable",
                        "type": [
                            "object"
                        ],
                        "description": "B\u00e4rnighausen transform group for one target subgroup.",
                        "required": [
                            "transforms"
                        ],
                        "properties": {
                            "target_hall_entry": {
                                "x-optimade-type": "string",
                                "x-optimade-unit": "inapplicable",
                                "type": [
                                    "string",
                                    "null"
                                ],
                                "description": "Target Hall entry when the containing dataset is Hall-setting keyed."
                            },
                            "target_it_number": {
                                "x-optimade-type": "integer",
                                "x-optimade-unit": "inapplicable",
                                "type": [
                                    "integer",
                                    "null"
                                ],
                                "description": "Target International Tables number when the containing dataset is IT-number keyed."
                            },
                            "transforms": {
                                "x-optimade-type": "list",
                                "x-optimade-unit": "inapplicable",
                                "type": [
                                    "array"
                                ],
                                "description": "Basis transforms for this target subgroup.",
                                "items": {
                                    "$id": "https://schemas.anyterial.se/defs/v0.1/properties/symmetry/basis_transform",
                                    "title": "Basis transformation",
                                    "x-optimade-type": "dictionary",
                                    "x-optimade-definition": {
                                        "kind": "property",
                                        "version": "0.1.0",
                                        "format": "1.3",
                                        "name": "basis_transform",
                                        "label": "basis_transform_symmetry"
                                    },
                                    "x-optimade-unit": "inapplicable",
                                    "type": [
                                        "object",
                                        "null"
                                    ],
                                    "description": "One crystallographic transform between coordinate descriptions, settings, cells, or related group embeddings.\n\nThe affine map itself is stored in the embedded `affine_transformation` field.\nThe parent property defines the source and target coordinate systems and the precise role of the transform.\nUseful, for example, for representing setting changes, subgroup embeddings, isomorphic subgroup transforms, normalizer representatives, and same-space-group affine images.\nThis property is not limited to symmetry operations within one fixed setting; the matrix may be non-orthogonal or have determinant different from one when the transform changes cell or basis.\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 transform, using exact rational matrix and vector entries.\n      The coordinate convention and source/target interpretation are supplied by the parent property.\n\n    - **index**: OPTIONAL; Integer or null.\n      Index metadata whose interpretation is defined by the parent property.\n      Common uses include the subgroup index for subgroup embeddings, the cell index for isomorphic subgroup transforms, or an ordinal representative index in a finite transform table.\n\n    - **subgroup\\_type**: OPTIONAL; String.\n      International Tables subgroup-type label when the transform describes a maximal subgroup embedding.\n      The value MUST be `t` for a translationengleiche subgroup or `k` for a klassengleiche subgroup.\n      It MUST be omitted when the transform is not a maximal subgroup embedding.\n\n    - **k\\_subtype**: OPTIONAL; String or null.\n      Klassengleiche subtype when the transform describes a klassengleiche subgroup relation.\n      The value MUST be `loss_of_centering_translation` or `enlarged_unit_cell` for klassengleiche relations and null or omitted otherwise.\n\n    - **compatible\\_systems**: OPTIONAL; List of strings.\n      Crystal metric systems for which the transform is compatible.\n      This is used for bounded affine normalizer representatives.\n\n    - **operation\\_kind**: OPTIONAL; String.\n      Categorical label for normalizer-type representatives.\n      The value MUST be `euclidean` for Euclidean normalizer operations, `orthogonal_affine` for the signed-permutation affine normalizer subset, or `affine` for the bounded unimodular affine normalizer table.\n      It MUST be omitted when the transform is a setting transform, subgroup embedding, or other transform for which no normalizer operation class applies.\n\n    - **wyckoff\\_splitting**: OPTIONAL; List.\n      Wyckoff-position splitting metadata induced by the transform when available.\n      The list is grouped by explicit parent Wyckoff letter.\n\n    - **criteria**: OPTIONAL; List.\n      Backward-lift constraint metadata induced by the transform when available.\n      The list is grouped by explicit parent Wyckoff letter.",
                                    "properties": {
                                        "affine_transformation": {
                                            "$id": "https://schemas.anyterial.se/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 affine transformation is a geometric transformation preserving points, straight lines, and parallelism (collinearity), but may not preserve Euclidean distances and angles.\nThe transformation is represented by a 3 by 3 matrix and a 3-vector, both serialized with exact string entries.\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\n    - **det**: OPTIONAL; Integer.\n      Determinant of `matrix` when the generator emits it.\n\n    - **is\\_orthogonal**: OPTIONAL; Boolean.\n      Whether `matrix` is orthogonal in the exact representation used by the generator.",
                                            "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.anyterial.se/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.anyterial.se/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.anyterial.se/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."
                                                },
                                                "is_orthogonal": {
                                                    "x-optimade-type": "boolean",
                                                    "x-optimade-unit": "inapplicable",
                                                    "type": [
                                                        "boolean",
                                                        "null"
                                                    ],
                                                    "description": "Whether the matrix part is orthogonal."
                                                }
                                            },
                                            "examples": [
                                                {
                                                    "matrix": [
                                                        [
                                                            "-1",
                                                            "0",
                                                            "0"
                                                        ],
                                                        [
                                                            "0",
                                                            "-1",
                                                            "0"
                                                        ],
                                                        [
                                                            "0",
                                                            "0",
                                                            "1"
                                                        ]
                                                    ],
                                                    "vector": [
                                                        "0",
                                                        "0",
                                                        "0"
                                                    ],
                                                    "xyz": "-x,-y,z",
                                                    "det": 1,
                                                    "is_orthogonal": true
                                                }
                                            ]
                                        },
                                        "index": {
                                            "x-optimade-type": "integer",
                                            "x-optimade-unit": "inapplicable",
                                            "type": [
                                                "integer",
                                                "null"
                                            ],
                                            "description": "Index metadata whose interpretation is supplied by the parent property."
                                        },
                                        "subgroup_type": {
                                            "x-optimade-type": "string",
                                            "x-optimade-unit": "inapplicable",
                                            "type": [
                                                "string"
                                            ],
                                            "description": "International Tables subgroup-type label when applicable.",
                                            "enum": [
                                                "t",
                                                "k"
                                            ]
                                        },
                                        "k_subtype": {
                                            "x-optimade-type": "string",
                                            "x-optimade-unit": "inapplicable",
                                            "type": [
                                                "string",
                                                "null"
                                            ],
                                            "description": "Klassengleiche subtype when applicable."
                                        },
                                        "compatible_systems": {
                                            "x-optimade-type": "list",
                                            "x-optimade-unit": "inapplicable",
                                            "type": [
                                                "array",
                                                "null"
                                            ],
                                            "description": "Crystal metric systems compatible with the transform.",
                                            "items": {
                                                "x-optimade-type": "string",
                                                "x-optimade-unit": "inapplicable",
                                                "type": [
                                                    "string"
                                                ],
                                                "description": "One compatible crystal-system label.",
                                                "enum": [
                                                    "triclinic",
                                                    "monoclinic",
                                                    "orthorhombic",
                                                    "tetragonal",
                                                    "trigonal",
                                                    "hexagonal",
                                                    "cubic"
                                                ]
                                            }
                                        },
                                        "operation_kind": {
                                            "x-optimade-type": "string",
                                            "x-optimade-unit": "inapplicable",
                                            "type": [
                                                "string"
                                            ],
                                            "description": "Categorical label for normalizer-type representatives.",
                                            "enum": [
                                                "euclidean",
                                                "orthogonal_affine",
                                                "affine"
                                            ]
                                        },
                                        "wyckoff_splitting": {
                                            "$id": "https://schemas.anyterial.se/defs/v0.1/properties/transformations/wyckoff_splitting",
                                            "title": "Wyckoff splitting",
                                            "x-optimade-type": "list",
                                            "x-optimade-definition": {
                                                "kind": "property",
                                                "version": "0.1.0",
                                                "format": "1.3",
                                                "name": "wyckoff_splitting",
                                                "label": "wyckoff_splitting_transformations"
                                            },
                                            "x-optimade-unit": "inapplicable",
                                            "type": [
                                                "array",
                                                "null"
                                            ],
                                            "description": "Wyckoff-position splitting data associated with a subgroup or same-space-group transform.\n\nEach list item gives the split of one parent Wyckoff position.\nThe parent Wyckoff letter is stored in the `parent` field rather than as a JSON dictionary key.\n\n**Requirements/Conventions**:\n\n- It MUST be a list of dictionaries.\n- Each dictionary MUST contain `parent`, the Wyckoff letter in the parent setting.\n- Each dictionary MUST contain `splits`, an ordered list of subgroup Wyckoff-position assignments or coordinate expressions emitted by the generator.",
                                            "items": {
                                                "x-optimade-type": "dictionary",
                                                "x-optimade-unit": "inapplicable",
                                                "type": [
                                                    "object"
                                                ],
                                                "description": "Splitting data for one parent Wyckoff position.",
                                                "required": [
                                                    "parent",
                                                    "splits"
                                                ],
                                                "properties": {
                                                    "parent": {
                                                        "x-optimade-type": "string",
                                                        "x-optimade-unit": "inapplicable",
                                                        "type": [
                                                            "string"
                                                        ],
                                                        "description": "Parent Wyckoff letter."
                                                    },
                                                    "splits": {
                                                        "x-optimade-type": "list",
                                                        "x-optimade-unit": "inapplicable",
                                                        "type": [
                                                            "array"
                                                        ],
                                                        "description": "Ordered split records for this parent Wyckoff letter.",
                                                        "items": {
                                                            "x-optimade-type": "dictionary",
                                                            "x-optimade-unit": "inapplicable",
                                                            "type": [
                                                                "object"
                                                            ],
                                                            "description": "One Wyckoff split record.",
                                                            "required": [
                                                                "letter",
                                                                "xyz",
                                                                "affine"
                                                            ],
                                                            "properties": {
                                                                "letter": {
                                                                    "x-optimade-type": "string",
                                                                    "x-optimade-unit": "inapplicable",
                                                                    "type": [
                                                                        "string"
                                                                    ],
                                                                    "description": "Subgroup Wyckoff letter assigned by this split branch."
                                                                },
                                                                "xyz": {
                                                                    "x-optimade-type": "string",
                                                                    "x-optimade-unit": "inapplicable",
                                                                    "type": [
                                                                        "string"
                                                                    ],
                                                                    "description": "Coordinate expression for the split branch."
                                                                },
                                                                "affine": {
                                                                    "x-optimade-type": "list",
                                                                    "x-optimade-unit": "inapplicable",
                                                                    "x-optimade-dimensions": {
                                                                        "names": [
                                                                            "dim_lattice",
                                                                            "dim_affine"
                                                                        ],
                                                                        "sizes": [
                                                                            3,
                                                                            4
                                                                        ]
                                                                    },
                                                                    "type": [
                                                                        "array"
                                                                    ],
                                                                    "description": "Exact affine representation for the split branch as a 3 by 4 augmented matrix.\nEach row holds the three linear coefficients followed by the translation component, all as exact fraction strings.",
                                                                    "items": {
                                                                        "x-optimade-type": "list",
                                                                        "x-optimade-unit": "inapplicable",
                                                                        "x-optimade-dimensions": {
                                                                            "names": [
                                                                                "dim_affine"
                                                                            ],
                                                                            "sizes": [
                                                                                4
                                                                            ]
                                                                        },
                                                                        "type": [
                                                                            "array"
                                                                        ],
                                                                        "description": "One row of the augmented affine matrix.",
                                                                        "items": {
                                                                            "$id": "https://schemas.anyterial.se/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": [
                                                [
                                                    {
                                                        "parent": "c",
                                                        "splits": [
                                                            {
                                                                "letter": "e",
                                                                "xyz": "x,y,z",
                                                                "affine": [
                                                                    [
                                                                        "1",
                                                                        "0",
                                                                        "0",
                                                                        "0"
                                                                    ],
                                                                    [
                                                                        "0",
                                                                        "1",
                                                                        "0",
                                                                        "0"
                                                                    ],
                                                                    [
                                                                        "0",
                                                                        "0",
                                                                        "1",
                                                                        "0"
                                                                    ]
                                                                ]
                                                            }
                                                        ]
                                                    }
                                                ]
                                            ]
                                        },
                                        "criteria": {
                                            "x-optimade-type": "list",
                                            "x-optimade-unit": "inapplicable",
                                            "type": [
                                                "array",
                                                "null"
                                            ],
                                            "description": "Backward-lift constraint metadata induced by the transform, grouped by explicit parent Wyckoff letter.",
                                            "items": {
                                                "x-optimade-type": "dictionary",
                                                "x-optimade-unit": "inapplicable",
                                                "type": [
                                                    "object"
                                                ],
                                                "description": "Backward-lift constraints for one parent Wyckoff position.",
                                                "required": [
                                                    "parent",
                                                    "constraints"
                                                ],
                                                "properties": {
                                                    "parent": {
                                                        "x-optimade-type": "string",
                                                        "x-optimade-unit": "inapplicable",
                                                        "type": [
                                                            "string"
                                                        ],
                                                        "description": "Parent Wyckoff letter."
                                                    },
                                                    "constraints": {
                                                        "x-optimade-type": "list",
                                                        "x-optimade-unit": "inapplicable",
                                                        "type": [
                                                            "array"
                                                        ],
                                                        "description": "Constraint records for this parent Wyckoff letter.",
                                                        "items": {
                                                            "x-optimade-type": "dictionary",
                                                            "x-optimade-unit": "inapplicable",
                                                            "type": [
                                                                "object"
                                                            ],
                                                            "description": "One linear backward-lift constraint record.",
                                                            "properties": {
                                                                "roles": {
                                                                    "x-optimade-type": "list",
                                                                    "x-optimade-unit": "inapplicable",
                                                                    "type": [
                                                                        "array"
                                                                    ],
                                                                    "description": "Wyckoff-position role references entering the constraint.",
                                                                    "items": {
                                                                        "x-optimade-type": "dictionary",
                                                                        "x-optimade-unit": "inapplicable",
                                                                        "type": [
                                                                            "object"
                                                                        ],
                                                                        "description": "One role reference.",
                                                                        "required": [
                                                                            "letter",
                                                                            "index"
                                                                        ],
                                                                        "properties": {
                                                                            "letter": {
                                                                                "x-optimade-type": "string",
                                                                                "x-optimade-unit": "inapplicable",
                                                                                "type": [
                                                                                    "string"
                                                                                ],
                                                                                "description": "Wyckoff letter for the referenced role."
                                                                            },
                                                                            "index": {
                                                                                "x-optimade-type": "integer",
                                                                                "x-optimade-unit": "inapplicable",
                                                                                "type": [
                                                                                    "integer"
                                                                                ],
                                                                                "description": "Zero-based occurrence index for the role."
                                                                            }
                                                                        }
                                                                    }
                                                                },
                                                                "coeffs": {
                                                                    "x-optimade-type": "list",
                                                                    "x-optimade-unit": "inapplicable",
                                                                    "type": [
                                                                        "array"
                                                                    ],
                                                                    "description": "Exact coefficient vectors for the constraint.",
                                                                    "items": {
                                                                        "x-optimade-type": "list",
                                                                        "x-optimade-unit": "inapplicable",
                                                                        "type": [
                                                                            "array"
                                                                        ],
                                                                        "description": "Coefficients associated with one role.",
                                                                        "items": {
                                                                            "x-optimade-type": "list",
                                                                            "x-optimade-unit": "inapplicable",
                                                                            "x-optimade-dimensions": {
                                                                                "names": [
                                                                                    "dim_lattice"
                                                                                ],
                                                                                "sizes": [
                                                                                    3
                                                                                ]
                                                                            },
                                                                            "type": [
                                                                                "array"
                                                                            ],
                                                                            "description": "One exact coefficient vector.",
                                                                            "items": {
                                                                                "$id": "https://schemas.anyterial.se/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"
                                                                            }
                                                                        }
                                                                    }
                                                                },
                                                                "target": {
                                                                    "x-optimade-type": "list",
                                                                    "x-optimade-unit": "inapplicable",
                                                                    "type": [
                                                                        "array"
                                                                    ],
                                                                    "description": "Exact target vector or scalar for the constraint.",
                                                                    "items": {
                                                                        "$id": "https://schemas.anyterial.se/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",
                                                        "2"
                                                    ]
                                                ],
                                                "vector": [
                                                    "0",
                                                    "0",
                                                    "0"
                                                ],
                                                "xyz": "x,y,2z",
                                                "det": 2,
                                                "is_orthogonal": false
                                            },
                                            "index": 2,
                                            "subgroup_type": "k",
                                            "k_subtype": "enlarged_unit_cell",
                                            "wyckoff_splitting": [
                                                {
                                                    "parent": "a",
                                                    "splits": [
                                                        {
                                                            "letter": "a",
                                                            "xyz": "x,y,z",
                                                            "affine": [
                                                                [
                                                                    "1",
                                                                    "0",
                                                                    "0",
                                                                    "0"
                                                                ],
                                                                [
                                                                    "0",
                                                                    "1",
                                                                    "0",
                                                                    "0"
                                                                ],
                                                                [
                                                                    "0",
                                                                    "0",
                                                                    "1",
                                                                    "0"
                                                                ]
                                                            ]
                                                        }
                                                    ]
                                                }
                                            ],
                                            "criteria": [
                                                {
                                                    "parent": "a",
                                                    "constraints": [
                                                        {
                                                            "roles": [
                                                                {
                                                                    "letter": "a",
                                                                    "index": 0
                                                                }
                                                            ],
                                                            "coeffs": [
                                                                [
                                                                    [
                                                                        "1",
                                                                        "0",
                                                                        "0"
                                                                    ]
                                                                ]
                                                            ],
                                                            "target": [
                                                                "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
                                            },
                                            "compatible_systems": [
                                                "triclinic",
                                                "monoclinic",
                                                "orthorhombic",
                                                "tetragonal",
                                                "trigonal",
                                                "hexagonal",
                                                "cubic"
                                            ],
                                            "operation_kind": "affine"
                                        }
                                    ]
                                }
                            }
                        }
                    },
                    "examples": [
                        [
                            {
                                "target_hall_entry": "p_1",
                                "transforms": [
                                    {
                                        "index": 2,
                                        "affine_transformation": {
                                            "matrix": [
                                                [
                                                    "1",
                                                    "0",
                                                    "0"
                                                ],
                                                [
                                                    "0",
                                                    "1",
                                                    "0"
                                                ],
                                                [
                                                    "0",
                                                    "0",
                                                    "2"
                                                ]
                                            ],
                                            "vector": [
                                                "0",
                                                "0",
                                                "0"
                                            ]
                                        }
                                    }
                                ]
                            }
                        ]
                    ]
                },
                "backward_lift_criteria": {
                    "$id": "https://schemas.anyterial.se/defs/v0.1/properties/transformations/backward_lift_criteria",
                    "x-optimade-requirements": {
                        "support": "may",
                        "sortable": false,
                        "query-support": "none",
                        "response-level": "may"
                    },
                    "title": "Backward lift criteria",
                    "x-optimade-type": "list",
                    "x-optimade-definition": {
                        "kind": "property",
                        "version": "0.1.0",
                        "format": "1.3",
                        "name": "backward_lift_criteria",
                        "label": "backward_lift_criteria_transformations"
                    },
                    "x-optimade-unit": "inapplicable",
                    "type": [
                        "array",
                        "null"
                    ],
                    "description": "Criteria table for one supergroup IT number used to lift occupied Wyckoff data from a subgroup back to that supergroup along a chosen B\u00e4rnighausen transform.\n\nEach list item groups transform records for one target subgroup IT number.\nThe target subgroup IT number is stored in `target_it_number` rather than as a JSON dictionary key.\n\n**Requirements/Conventions**:\n\n- It MUST be a list of dictionaries.\n- Each dictionary MUST contain `target_it_number`, the subgroup IT number.\n- Each dictionary MUST contain `transforms`, a list of basis-transform records carrying backward-lift criteria.",
                    "items": {
                        "x-optimade-type": "dictionary",
                        "x-optimade-unit": "inapplicable",
                        "type": [
                            "object"
                        ],
                        "description": "Backward-lift criteria group for one target subgroup IT number.",
                        "required": [
                            "target_it_number",
                            "transforms"
                        ],
                        "properties": {
                            "target_it_number": {
                                "x-optimade-type": "integer",
                                "x-optimade-unit": "inapplicable",
                                "type": [
                                    "integer"
                                ],
                                "description": "Target subgroup International Tables number."
                            },
                            "transforms": {
                                "x-optimade-type": "list",
                                "x-optimade-unit": "inapplicable",
                                "type": [
                                    "array"
                                ],
                                "description": "Basis transforms and criteria for this target subgroup.",
                                "items": {
                                    "$id": "https://schemas.anyterial.se/defs/v0.1/properties/symmetry/basis_transform",
                                    "title": "Basis transformation",
                                    "x-optimade-type": "dictionary",
                                    "x-optimade-definition": {
                                        "kind": "property",
                                        "version": "0.1.0",
                                        "format": "1.3",
                                        "name": "basis_transform",
                                        "label": "basis_transform_symmetry"
                                    },
                                    "x-optimade-unit": "inapplicable",
                                    "type": [
                                        "object",
                                        "null"
                                    ],
                                    "description": "One crystallographic transform between coordinate descriptions, settings, cells, or related group embeddings.\n\nThe affine map itself is stored in the embedded `affine_transformation` field.\nThe parent property defines the source and target coordinate systems and the precise role of the transform.\nUseful, for example, for representing setting changes, subgroup embeddings, isomorphic subgroup transforms, normalizer representatives, and same-space-group affine images.\nThis property is not limited to symmetry operations within one fixed setting; the matrix may be non-orthogonal or have determinant different from one when the transform changes cell or basis.\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 transform, using exact rational matrix and vector entries.\n      The coordinate convention and source/target interpretation are supplied by the parent property.\n\n    - **index**: OPTIONAL; Integer or null.\n      Index metadata whose interpretation is defined by the parent property.\n      Common uses include the subgroup index for subgroup embeddings, the cell index for isomorphic subgroup transforms, or an ordinal representative index in a finite transform table.\n\n    - **subgroup\\_type**: OPTIONAL; String.\n      International Tables subgroup-type label when the transform describes a maximal subgroup embedding.\n      The value MUST be `t` for a translationengleiche subgroup or `k` for a klassengleiche subgroup.\n      It MUST be omitted when the transform is not a maximal subgroup embedding.\n\n    - **k\\_subtype**: OPTIONAL; String or null.\n      Klassengleiche subtype when the transform describes a klassengleiche subgroup relation.\n      The value MUST be `loss_of_centering_translation` or `enlarged_unit_cell` for klassengleiche relations and null or omitted otherwise.\n\n    - **compatible\\_systems**: OPTIONAL; List of strings.\n      Crystal metric systems for which the transform is compatible.\n      This is used for bounded affine normalizer representatives.\n\n    - **operation\\_kind**: OPTIONAL; String.\n      Categorical label for normalizer-type representatives.\n      The value MUST be `euclidean` for Euclidean normalizer operations, `orthogonal_affine` for the signed-permutation affine normalizer subset, or `affine` for the bounded unimodular affine normalizer table.\n      It MUST be omitted when the transform is a setting transform, subgroup embedding, or other transform for which no normalizer operation class applies.\n\n    - **wyckoff\\_splitting**: OPTIONAL; List.\n      Wyckoff-position splitting metadata induced by the transform when available.\n      The list is grouped by explicit parent Wyckoff letter.\n\n    - **criteria**: OPTIONAL; List.\n      Backward-lift constraint metadata induced by the transform when available.\n      The list is grouped by explicit parent Wyckoff letter.",
                                    "properties": {
                                        "affine_transformation": {
                                            "$id": "https://schemas.anyterial.se/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 affine transformation is a geometric transformation preserving points, straight lines, and parallelism (collinearity), but may not preserve Euclidean distances and angles.\nThe transformation is represented by a 3 by 3 matrix and a 3-vector, both serialized with exact string entries.\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\n    - **det**: OPTIONAL; Integer.\n      Determinant of `matrix` when the generator emits it.\n\n    - **is\\_orthogonal**: OPTIONAL; Boolean.\n      Whether `matrix` is orthogonal in the exact representation used by the generator.",
                                            "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.anyterial.se/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.anyterial.se/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.anyterial.se/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."
                                                },
                                                "is_orthogonal": {
                                                    "x-optimade-type": "boolean",
                                                    "x-optimade-unit": "inapplicable",
                                                    "type": [
                                                        "boolean",
                                                        "null"
                                                    ],
                                                    "description": "Whether the matrix part is orthogonal."
                                                }
                                            },
                                            "examples": [
                                                {
                                                    "matrix": [
                                                        [
                                                            "-1",
                                                            "0",
                                                            "0"
                                                        ],
                                                        [
                                                            "0",
                                                            "-1",
                                                            "0"
                                                        ],
                                                        [
                                                            "0",
                                                            "0",
                                                            "1"
                                                        ]
                                                    ],
                                                    "vector": [
                                                        "0",
                                                        "0",
                                                        "0"
                                                    ],
                                                    "xyz": "-x,-y,z",
                                                    "det": 1,
                                                    "is_orthogonal": true
                                                }
                                            ]
                                        },
                                        "index": {
                                            "x-optimade-type": "integer",
                                            "x-optimade-unit": "inapplicable",
                                            "type": [
                                                "integer",
                                                "null"
                                            ],
                                            "description": "Index metadata whose interpretation is supplied by the parent property."
                                        },
                                        "subgroup_type": {
                                            "x-optimade-type": "string",
                                            "x-optimade-unit": "inapplicable",
                                            "type": [
                                                "string"
                                            ],
                                            "description": "International Tables subgroup-type label when applicable.",
                                            "enum": [
                                                "t",
                                                "k"
                                            ]
                                        },
                                        "k_subtype": {
                                            "x-optimade-type": "string",
                                            "x-optimade-unit": "inapplicable",
                                            "type": [
                                                "string",
                                                "null"
                                            ],
                                            "description": "Klassengleiche subtype when applicable."
                                        },
                                        "compatible_systems": {
                                            "x-optimade-type": "list",
                                            "x-optimade-unit": "inapplicable",
                                            "type": [
                                                "array",
                                                "null"
                                            ],
                                            "description": "Crystal metric systems compatible with the transform.",
                                            "items": {
                                                "x-optimade-type": "string",
                                                "x-optimade-unit": "inapplicable",
                                                "type": [
                                                    "string"
                                                ],
                                                "description": "One compatible crystal-system label.",
                                                "enum": [
                                                    "triclinic",
                                                    "monoclinic",
                                                    "orthorhombic",
                                                    "tetragonal",
                                                    "trigonal",
                                                    "hexagonal",
                                                    "cubic"
                                                ]
                                            }
                                        },
                                        "operation_kind": {
                                            "x-optimade-type": "string",
                                            "x-optimade-unit": "inapplicable",
                                            "type": [
                                                "string"
                                            ],
                                            "description": "Categorical label for normalizer-type representatives.",
                                            "enum": [
                                                "euclidean",
                                                "orthogonal_affine",
                                                "affine"
                                            ]
                                        },
                                        "wyckoff_splitting": {
                                            "$id": "https://schemas.anyterial.se/defs/v0.1/properties/transformations/wyckoff_splitting",
                                            "title": "Wyckoff splitting",
                                            "x-optimade-type": "list",
                                            "x-optimade-definition": {
                                                "kind": "property",
                                                "version": "0.1.0",
                                                "format": "1.3",
                                                "name": "wyckoff_splitting",
                                                "label": "wyckoff_splitting_transformations"
                                            },
                                            "x-optimade-unit": "inapplicable",
                                            "type": [
                                                "array",
                                                "null"
                                            ],
                                            "description": "Wyckoff-position splitting data associated with a subgroup or same-space-group transform.\n\nEach list item gives the split of one parent Wyckoff position.\nThe parent Wyckoff letter is stored in the `parent` field rather than as a JSON dictionary key.\n\n**Requirements/Conventions**:\n\n- It MUST be a list of dictionaries.\n- Each dictionary MUST contain `parent`, the Wyckoff letter in the parent setting.\n- Each dictionary MUST contain `splits`, an ordered list of subgroup Wyckoff-position assignments or coordinate expressions emitted by the generator.",
                                            "items": {
                                                "x-optimade-type": "dictionary",
                                                "x-optimade-unit": "inapplicable",
                                                "type": [
                                                    "object"
                                                ],
                                                "description": "Splitting data for one parent Wyckoff position.",
                                                "required": [
                                                    "parent",
                                                    "splits"
                                                ],
                                                "properties": {
                                                    "parent": {
                                                        "x-optimade-type": "string",
                                                        "x-optimade-unit": "inapplicable",
                                                        "type": [
                                                            "string"
                                                        ],
                                                        "description": "Parent Wyckoff letter."
                                                    },
                                                    "splits": {
                                                        "x-optimade-type": "list",
                                                        "x-optimade-unit": "inapplicable",
                                                        "type": [
                                                            "array"
                                                        ],
                                                        "description": "Ordered split records for this parent Wyckoff letter.",
                                                        "items": {
                                                            "x-optimade-type": "dictionary",
                                                            "x-optimade-unit": "inapplicable",
                                                            "type": [
                                                                "object"
                                                            ],
                                                            "description": "One Wyckoff split record.",
                                                            "required": [
                                                                "letter",
                                                                "xyz",
                                                                "affine"
                                                            ],
                                                            "properties": {
                                                                "letter": {
                                                                    "x-optimade-type": "string",
                                                                    "x-optimade-unit": "inapplicable",
                                                                    "type": [
                                                                        "string"
                                                                    ],
                                                                    "description": "Subgroup Wyckoff letter assigned by this split branch."
                                                                },
                                                                "xyz": {
                                                                    "x-optimade-type": "string",
                                                                    "x-optimade-unit": "inapplicable",
                                                                    "type": [
                                                                        "string"
                                                                    ],
                                                                    "description": "Coordinate expression for the split branch."
                                                                },
                                                                "affine": {
                                                                    "x-optimade-type": "list",
                                                                    "x-optimade-unit": "inapplicable",
                                                                    "x-optimade-dimensions": {
                                                                        "names": [
                                                                            "dim_lattice",
                                                                            "dim_affine"
                                                                        ],
                                                                        "sizes": [
                                                                            3,
                                                                            4
                                                                        ]
                                                                    },
                                                                    "type": [
                                                                        "array"
                                                                    ],
                                                                    "description": "Exact affine representation for the split branch as a 3 by 4 augmented matrix.\nEach row holds the three linear coefficients followed by the translation component, all as exact fraction strings.",
                                                                    "items": {
                                                                        "x-optimade-type": "list",
                                                                        "x-optimade-unit": "inapplicable",
                                                                        "x-optimade-dimensions": {
                                                                            "names": [
                                                                                "dim_affine"
                                                                            ],
                                                                            "sizes": [
                                                                                4
                                                                            ]
                                                                        },
                                                                        "type": [
                                                                            "array"
                                                                        ],
                                                                        "description": "One row of the augmented affine matrix.",
                                                                        "items": {
                                                                            "$id": "https://schemas.anyterial.se/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": [
                                                [
                                                    {
                                                        "parent": "c",
                                                        "splits": [
                                                            {
                                                                "letter": "e",
                                                                "xyz": "x,y,z",
                                                                "affine": [
                                                                    [
                                                                        "1",
                                                                        "0",
                                                                        "0",
                                                                        "0"
                                                                    ],
                                                                    [
                                                                        "0",
                                                                        "1",
                                                                        "0",
                                                                        "0"
                                                                    ],
                                                                    [
                                                                        "0",
                                                                        "0",
                                                                        "1",
                                                                        "0"
                                                                    ]
                                                                ]
                                                            }
                                                        ]
                                                    }
                                                ]
                                            ]
                                        },
                                        "criteria": {
                                            "x-optimade-type": "list",
                                            "x-optimade-unit": "inapplicable",
                                            "type": [
                                                "array",
                                                "null"
                                            ],
                                            "description": "Backward-lift constraint metadata induced by the transform, grouped by explicit parent Wyckoff letter.",
                                            "items": {
                                                "x-optimade-type": "dictionary",
                                                "x-optimade-unit": "inapplicable",
                                                "type": [
                                                    "object"
                                                ],
                                                "description": "Backward-lift constraints for one parent Wyckoff position.",
                                                "required": [
                                                    "parent",
                                                    "constraints"
                                                ],
                                                "properties": {
                                                    "parent": {
                                                        "x-optimade-type": "string",
                                                        "x-optimade-unit": "inapplicable",
                                                        "type": [
                                                            "string"
                                                        ],
                                                        "description": "Parent Wyckoff letter."
                                                    },
                                                    "constraints": {
                                                        "x-optimade-type": "list",
                                                        "x-optimade-unit": "inapplicable",
                                                        "type": [
                                                            "array"
                                                        ],
                                                        "description": "Constraint records for this parent Wyckoff letter.",
                                                        "items": {
                                                            "x-optimade-type": "dictionary",
                                                            "x-optimade-unit": "inapplicable",
                                                            "type": [
                                                                "object"
                                                            ],
                                                            "description": "One linear backward-lift constraint record.",
                                                            "properties": {
                                                                "roles": {
                                                                    "x-optimade-type": "list",
                                                                    "x-optimade-unit": "inapplicable",
                                                                    "type": [
                                                                        "array"
                                                                    ],
                                                                    "description": "Wyckoff-position role references entering the constraint.",
                                                                    "items": {
                                                                        "x-optimade-type": "dictionary",
                                                                        "x-optimade-unit": "inapplicable",
                                                                        "type": [
                                                                            "object"
                                                                        ],
                                                                        "description": "One role reference.",
                                                                        "required": [
                                                                            "letter",
                                                                            "index"
                                                                        ],
                                                                        "properties": {
                                                                            "letter": {
                                                                                "x-optimade-type": "string",
                                                                                "x-optimade-unit": "inapplicable",
                                                                                "type": [
                                                                                    "string"
                                                                                ],
                                                                                "description": "Wyckoff letter for the referenced role."
                                                                            },
                                                                            "index": {
                                                                                "x-optimade-type": "integer",
                                                                                "x-optimade-unit": "inapplicable",
                                                                                "type": [
                                                                                    "integer"
                                                                                ],
                                                                                "description": "Zero-based occurrence index for the role."
                                                                            }
                                                                        }
                                                                    }
                                                                },
                                                                "coeffs": {
                                                                    "x-optimade-type": "list",
                                                                    "x-optimade-unit": "inapplicable",
                                                                    "type": [
                                                                        "array"
                                                                    ],
                                                                    "description": "Exact coefficient vectors for the constraint.",
                                                                    "items": {
                                                                        "x-optimade-type": "list",
                                                                        "x-optimade-unit": "inapplicable",
                                                                        "type": [
                                                                            "array"
                                                                        ],
                                                                        "description": "Coefficients associated with one role.",
                                                                        "items": {
                                                                            "x-optimade-type": "list",
                                                                            "x-optimade-unit": "inapplicable",
                                                                            "x-optimade-dimensions": {
                                                                                "names": [
                                                                                    "dim_lattice"
                                                                                ],
                                                                                "sizes": [
                                                                                    3
                                                                                ]
                                                                            },
                                                                            "type": [
                                                                                "array"
                                                                            ],
                                                                            "description": "One exact coefficient vector.",
                                                                            "items": {
                                                                                "$id": "https://schemas.anyterial.se/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"
                                                                            }
                                                                        }
                                                                    }
                                                                },
                                                                "target": {
                                                                    "x-optimade-type": "list",
                                                                    "x-optimade-unit": "inapplicable",
                                                                    "type": [
                                                                        "array"
                                                                    ],
                                                                    "description": "Exact target vector or scalar for the constraint.",
                                                                    "items": {
                                                                        "$id": "https://schemas.anyterial.se/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",
                                                        "2"
                                                    ]
                                                ],
                                                "vector": [
                                                    "0",
                                                    "0",
                                                    "0"
                                                ],
                                                "xyz": "x,y,2z",
                                                "det": 2,
                                                "is_orthogonal": false
                                            },
                                            "index": 2,
                                            "subgroup_type": "k",
                                            "k_subtype": "enlarged_unit_cell",
                                            "wyckoff_splitting": [
                                                {
                                                    "parent": "a",
                                                    "splits": [
                                                        {
                                                            "letter": "a",
                                                            "xyz": "x,y,z",
                                                            "affine": [
                                                                [
                                                                    "1",
                                                                    "0",
                                                                    "0",
                                                                    "0"
                                                                ],
                                                                [
                                                                    "0",
                                                                    "1",
                                                                    "0",
                                                                    "0"
                                                                ],
                                                                [
                                                                    "0",
                                                                    "0",
                                                                    "1",
                                                                    "0"
                                                                ]
                                                            ]
                                                        }
                                                    ]
                                                }
                                            ],
                                            "criteria": [
                                                {
                                                    "parent": "a",
                                                    "constraints": [
                                                        {
                                                            "roles": [
                                                                {
                                                                    "letter": "a",
                                                                    "index": 0
                                                                }
                                                            ],
                                                            "coeffs": [
                                                                [
                                                                    [
                                                                        "1",
                                                                        "0",
                                                                        "0"
                                                                    ]
                                                                ]
                                                            ],
                                                            "target": [
                                                                "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
                                            },
                                            "compatible_systems": [
                                                "triclinic",
                                                "monoclinic",
                                                "orthorhombic",
                                                "tetragonal",
                                                "trigonal",
                                                "hexagonal",
                                                "cubic"
                                            ],
                                            "operation_kind": "affine"
                                        }
                                    ]
                                }
                            }
                        }
                    },
                    "examples": [
                        [
                            {
                                "target_it_number": 2,
                                "transforms": [
                                    {
                                        "index": 2,
                                        "affine_transformation": {
                                            "matrix": [
                                                [
                                                    "1",
                                                    "0",
                                                    "0"
                                                ],
                                                [
                                                    "0",
                                                    "1",
                                                    "0"
                                                ],
                                                [
                                                    "0",
                                                    "0",
                                                    "2"
                                                ]
                                            ],
                                            "vector": [
                                                "0",
                                                "0",
                                                "0"
                                            ]
                                        },
                                        "criteria": [
                                            {
                                                "parent": "a",
                                                "constraints": [
                                                    {
                                                        "roles": [
                                                            [
                                                                "a",
                                                                0
                                                            ]
                                                        ],
                                                        "coeffs": [
                                                            [
                                                                [
                                                                    "1",
                                                                    "0",
                                                                    "0"
                                                                ]
                                                            ]
                                                        ],
                                                        "target": [
                                                            "0",
                                                            "0",
                                                            "0"
                                                        ]
                                                    }
                                                ]
                                            }
                                        ]
                                    }
                                ]
                            }
                        ]
                    ]
                },
                "same_space_group_affine_images_std": {
                    "$id": "https://schemas.anyterial.se/defs/v0.1/properties/transformations/same_space_group_affine_images_std",
                    "x-optimade-requirements": {
                        "support": "may",
                        "sortable": false,
                        "query-support": "none",
                        "response-level": "may"
                    },
                    "title": "Same space group affine images std",
                    "x-optimade-type": "dictionary",
                    "x-optimade-definition": {
                        "kind": "property",
                        "version": "0.1.0",
                        "format": "1.3",
                        "name": "same_space_group_affine_images_std",
                        "label": "same_space_group_affine_images_std_transformations"
                    },
                    "x-optimade-unit": "inapplicable",
                    "type": [
                        "object",
                        "null"
                    ],
                    "description": "Same-space-group affine-image record for one International Tables standard setting.\n\n**Requirements/Conventions**:\n\n- It MUST be a dictionary with the following keys:\n\n    - **it\\_number**: REQUIRED; Integer.\n      International Tables space-group number for the standard setting.\n\n    - **hall**: REQUIRED; String.\n      Hall-entry key of the reference setting used for the standard setting.\n\n    - **affine\\_images**: REQUIRED; List of dictionaries.\n      Same-space-group affine images represented by exact `matrix` and `vector` transforms.",
                    "properties": {
                        "it_number": {
                            "$id": "https://schemas.anyterial.se/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
                            ]
                        },
                        "hall": {
                            "$id": "https://schemas.anyterial.se/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.",
                            "x-optimade-unit": "inapplicable",
                            "examples": [
                                "p_1",
                                "-p_1"
                            ]
                        },
                        "affine_images": {
                            "x-optimade-type": "list",
                            "x-optimade-unit": "inapplicable",
                            "type": [
                                "array",
                                "null"
                            ],
                            "description": "Same-space-group affine image transforms.",
                            "items": {
                                "$id": "https://schemas.anyterial.se/defs/v0.1/properties/symmetry/basis_transform",
                                "title": "Basis transformation",
                                "x-optimade-type": "dictionary",
                                "x-optimade-definition": {
                                    "kind": "property",
                                    "version": "0.1.0",
                                    "format": "1.3",
                                    "name": "basis_transform",
                                    "label": "basis_transform_symmetry"
                                },
                                "x-optimade-unit": "inapplicable",
                                "type": [
                                    "object",
                                    "null"
                                ],
                                "description": "One crystallographic transform between coordinate descriptions, settings, cells, or related group embeddings.\n\nThe affine map itself is stored in the embedded `affine_transformation` field.\nThe parent property defines the source and target coordinate systems and the precise role of the transform.\nUseful, for example, for representing setting changes, subgroup embeddings, isomorphic subgroup transforms, normalizer representatives, and same-space-group affine images.\nThis property is not limited to symmetry operations within one fixed setting; the matrix may be non-orthogonal or have determinant different from one when the transform changes cell or basis.\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 transform, using exact rational matrix and vector entries.\n      The coordinate convention and source/target interpretation are supplied by the parent property.\n\n    - **index**: OPTIONAL; Integer or null.\n      Index metadata whose interpretation is defined by the parent property.\n      Common uses include the subgroup index for subgroup embeddings, the cell index for isomorphic subgroup transforms, or an ordinal representative index in a finite transform table.\n\n    - **subgroup\\_type**: OPTIONAL; String.\n      International Tables subgroup-type label when the transform describes a maximal subgroup embedding.\n      The value MUST be `t` for a translationengleiche subgroup or `k` for a klassengleiche subgroup.\n      It MUST be omitted when the transform is not a maximal subgroup embedding.\n\n    - **k\\_subtype**: OPTIONAL; String or null.\n      Klassengleiche subtype when the transform describes a klassengleiche subgroup relation.\n      The value MUST be `loss_of_centering_translation` or `enlarged_unit_cell` for klassengleiche relations and null or omitted otherwise.\n\n    - **compatible\\_systems**: OPTIONAL; List of strings.\n      Crystal metric systems for which the transform is compatible.\n      This is used for bounded affine normalizer representatives.\n\n    - **operation\\_kind**: OPTIONAL; String.\n      Categorical label for normalizer-type representatives.\n      The value MUST be `euclidean` for Euclidean normalizer operations, `orthogonal_affine` for the signed-permutation affine normalizer subset, or `affine` for the bounded unimodular affine normalizer table.\n      It MUST be omitted when the transform is a setting transform, subgroup embedding, or other transform for which no normalizer operation class applies.\n\n    - **wyckoff\\_splitting**: OPTIONAL; List.\n      Wyckoff-position splitting metadata induced by the transform when available.\n      The list is grouped by explicit parent Wyckoff letter.\n\n    - **criteria**: OPTIONAL; List.\n      Backward-lift constraint metadata induced by the transform when available.\n      The list is grouped by explicit parent Wyckoff letter.",
                                "properties": {
                                    "affine_transformation": {
                                        "$id": "https://schemas.anyterial.se/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 affine transformation is a geometric transformation preserving points, straight lines, and parallelism (collinearity), but may not preserve Euclidean distances and angles.\nThe transformation is represented by a 3 by 3 matrix and a 3-vector, both serialized with exact string entries.\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\n    - **det**: OPTIONAL; Integer.\n      Determinant of `matrix` when the generator emits it.\n\n    - **is\\_orthogonal**: OPTIONAL; Boolean.\n      Whether `matrix` is orthogonal in the exact representation used by the generator.",
                                        "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.anyterial.se/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.anyterial.se/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.anyterial.se/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."
                                            },
                                            "is_orthogonal": {
                                                "x-optimade-type": "boolean",
                                                "x-optimade-unit": "inapplicable",
                                                "type": [
                                                    "boolean",
                                                    "null"
                                                ],
                                                "description": "Whether the matrix part is orthogonal."
                                            }
                                        },
                                        "examples": [
                                            {
                                                "matrix": [
                                                    [
                                                        "-1",
                                                        "0",
                                                        "0"
                                                    ],
                                                    [
                                                        "0",
                                                        "-1",
                                                        "0"
                                                    ],
                                                    [
                                                        "0",
                                                        "0",
                                                        "1"
                                                    ]
                                                ],
                                                "vector": [
                                                    "0",
                                                    "0",
                                                    "0"
                                                ],
                                                "xyz": "-x,-y,z",
                                                "det": 1,
                                                "is_orthogonal": true
                                            }
                                        ]
                                    },
                                    "index": {
                                        "x-optimade-type": "integer",
                                        "x-optimade-unit": "inapplicable",
                                        "type": [
                                            "integer",
                                            "null"
                                        ],
                                        "description": "Index metadata whose interpretation is supplied by the parent property."
                                    },
                                    "subgroup_type": {
                                        "x-optimade-type": "string",
                                        "x-optimade-unit": "inapplicable",
                                        "type": [
                                            "string"
                                        ],
                                        "description": "International Tables subgroup-type label when applicable.",
                                        "enum": [
                                            "t",
                                            "k"
                                        ]
                                    },
                                    "k_subtype": {
                                        "x-optimade-type": "string",
                                        "x-optimade-unit": "inapplicable",
                                        "type": [
                                            "string",
                                            "null"
                                        ],
                                        "description": "Klassengleiche subtype when applicable."
                                    },
                                    "compatible_systems": {
                                        "x-optimade-type": "list",
                                        "x-optimade-unit": "inapplicable",
                                        "type": [
                                            "array",
                                            "null"
                                        ],
                                        "description": "Crystal metric systems compatible with the transform.",
                                        "items": {
                                            "x-optimade-type": "string",
                                            "x-optimade-unit": "inapplicable",
                                            "type": [
                                                "string"
                                            ],
                                            "description": "One compatible crystal-system label.",
                                            "enum": [
                                                "triclinic",
                                                "monoclinic",
                                                "orthorhombic",
                                                "tetragonal",
                                                "trigonal",
                                                "hexagonal",
                                                "cubic"
                                            ]
                                        }
                                    },
                                    "operation_kind": {
                                        "x-optimade-type": "string",
                                        "x-optimade-unit": "inapplicable",
                                        "type": [
                                            "string"
                                        ],
                                        "description": "Categorical label for normalizer-type representatives.",
                                        "enum": [
                                            "euclidean",
                                            "orthogonal_affine",
                                            "affine"
                                        ]
                                    },
                                    "wyckoff_splitting": {
                                        "$id": "https://schemas.anyterial.se/defs/v0.1/properties/transformations/wyckoff_splitting",
                                        "title": "Wyckoff splitting",
                                        "x-optimade-type": "list",
                                        "x-optimade-definition": {
                                            "kind": "property",
                                            "version": "0.1.0",
                                            "format": "1.3",
                                            "name": "wyckoff_splitting",
                                            "label": "wyckoff_splitting_transformations"
                                        },
                                        "x-optimade-unit": "inapplicable",
                                        "type": [
                                            "array",
                                            "null"
                                        ],
                                        "description": "Wyckoff-position splitting data associated with a subgroup or same-space-group transform.\n\nEach list item gives the split of one parent Wyckoff position.\nThe parent Wyckoff letter is stored in the `parent` field rather than as a JSON dictionary key.\n\n**Requirements/Conventions**:\n\n- It MUST be a list of dictionaries.\n- Each dictionary MUST contain `parent`, the Wyckoff letter in the parent setting.\n- Each dictionary MUST contain `splits`, an ordered list of subgroup Wyckoff-position assignments or coordinate expressions emitted by the generator.",
                                        "items": {
                                            "x-optimade-type": "dictionary",
                                            "x-optimade-unit": "inapplicable",
                                            "type": [
                                                "object"
                                            ],
                                            "description": "Splitting data for one parent Wyckoff position.",
                                            "required": [
                                                "parent",
                                                "splits"
                                            ],
                                            "properties": {
                                                "parent": {
                                                    "x-optimade-type": "string",
                                                    "x-optimade-unit": "inapplicable",
                                                    "type": [
                                                        "string"
                                                    ],
                                                    "description": "Parent Wyckoff letter."
                                                },
                                                "splits": {
                                                    "x-optimade-type": "list",
                                                    "x-optimade-unit": "inapplicable",
                                                    "type": [
                                                        "array"
                                                    ],
                                                    "description": "Ordered split records for this parent Wyckoff letter.",
                                                    "items": {
                                                        "x-optimade-type": "dictionary",
                                                        "x-optimade-unit": "inapplicable",
                                                        "type": [
                                                            "object"
                                                        ],
                                                        "description": "One Wyckoff split record.",
                                                        "required": [
                                                            "letter",
                                                            "xyz",
                                                            "affine"
                                                        ],
                                                        "properties": {
                                                            "letter": {
                                                                "x-optimade-type": "string",
                                                                "x-optimade-unit": "inapplicable",
                                                                "type": [
                                                                    "string"
                                                                ],
                                                                "description": "Subgroup Wyckoff letter assigned by this split branch."
                                                            },
                                                            "xyz": {
                                                                "x-optimade-type": "string",
                                                                "x-optimade-unit": "inapplicable",
                                                                "type": [
                                                                    "string"
                                                                ],
                                                                "description": "Coordinate expression for the split branch."
                                                            },
                                                            "affine": {
                                                                "x-optimade-type": "list",
                                                                "x-optimade-unit": "inapplicable",
                                                                "x-optimade-dimensions": {
                                                                    "names": [
                                                                        "dim_lattice",
                                                                        "dim_affine"
                                                                    ],
                                                                    "sizes": [
                                                                        3,
                                                                        4
                                                                    ]
                                                                },
                                                                "type": [
                                                                    "array"
                                                                ],
                                                                "description": "Exact affine representation for the split branch as a 3 by 4 augmented matrix.\nEach row holds the three linear coefficients followed by the translation component, all as exact fraction strings.",
                                                                "items": {
                                                                    "x-optimade-type": "list",
                                                                    "x-optimade-unit": "inapplicable",
                                                                    "x-optimade-dimensions": {
                                                                        "names": [
                                                                            "dim_affine"
                                                                        ],
                                                                        "sizes": [
                                                                            4
                                                                        ]
                                                                    },
                                                                    "type": [
                                                                        "array"
                                                                    ],
                                                                    "description": "One row of the augmented affine matrix.",
                                                                    "items": {
                                                                        "$id": "https://schemas.anyterial.se/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": [
                                            [
                                                {
                                                    "parent": "c",
                                                    "splits": [
                                                        {
                                                            "letter": "e",
                                                            "xyz": "x,y,z",
                                                            "affine": [
                                                                [
                                                                    "1",
                                                                    "0",
                                                                    "0",
                                                                    "0"
                                                                ],
                                                                [
                                                                    "0",
                                                                    "1",
                                                                    "0",
                                                                    "0"
                                                                ],
                                                                [
                                                                    "0",
                                                                    "0",
                                                                    "1",
                                                                    "0"
                                                                ]
                                                            ]
                                                        }
                                                    ]
                                                }
                                            ]
                                        ]
                                    },
                                    "criteria": {
                                        "x-optimade-type": "list",
                                        "x-optimade-unit": "inapplicable",
                                        "type": [
                                            "array",
                                            "null"
                                        ],
                                        "description": "Backward-lift constraint metadata induced by the transform, grouped by explicit parent Wyckoff letter.",
                                        "items": {
                                            "x-optimade-type": "dictionary",
                                            "x-optimade-unit": "inapplicable",
                                            "type": [
                                                "object"
                                            ],
                                            "description": "Backward-lift constraints for one parent Wyckoff position.",
                                            "required": [
                                                "parent",
                                                "constraints"
                                            ],
                                            "properties": {
                                                "parent": {
                                                    "x-optimade-type": "string",
                                                    "x-optimade-unit": "inapplicable",
                                                    "type": [
                                                        "string"
                                                    ],
                                                    "description": "Parent Wyckoff letter."
                                                },
                                                "constraints": {
                                                    "x-optimade-type": "list",
                                                    "x-optimade-unit": "inapplicable",
                                                    "type": [
                                                        "array"
                                                    ],
                                                    "description": "Constraint records for this parent Wyckoff letter.",
                                                    "items": {
                                                        "x-optimade-type": "dictionary",
                                                        "x-optimade-unit": "inapplicable",
                                                        "type": [
                                                            "object"
                                                        ],
                                                        "description": "One linear backward-lift constraint record.",
                                                        "properties": {
                                                            "roles": {
                                                                "x-optimade-type": "list",
                                                                "x-optimade-unit": "inapplicable",
                                                                "type": [
                                                                    "array"
                                                                ],
                                                                "description": "Wyckoff-position role references entering the constraint.",
                                                                "items": {
                                                                    "x-optimade-type": "dictionary",
                                                                    "x-optimade-unit": "inapplicable",
                                                                    "type": [
                                                                        "object"
                                                                    ],
                                                                    "description": "One role reference.",
                                                                    "required": [
                                                                        "letter",
                                                                        "index"
                                                                    ],
                                                                    "properties": {
                                                                        "letter": {
                                                                            "x-optimade-type": "string",
                                                                            "x-optimade-unit": "inapplicable",
                                                                            "type": [
                                                                                "string"
                                                                            ],
                                                                            "description": "Wyckoff letter for the referenced role."
                                                                        },
                                                                        "index": {
                                                                            "x-optimade-type": "integer",
                                                                            "x-optimade-unit": "inapplicable",
                                                                            "type": [
                                                                                "integer"
                                                                            ],
                                                                            "description": "Zero-based occurrence index for the role."
                                                                        }
                                                                    }
                                                                }
                                                            },
                                                            "coeffs": {
                                                                "x-optimade-type": "list",
                                                                "x-optimade-unit": "inapplicable",
                                                                "type": [
                                                                    "array"
                                                                ],
                                                                "description": "Exact coefficient vectors for the constraint.",
                                                                "items": {
                                                                    "x-optimade-type": "list",
                                                                    "x-optimade-unit": "inapplicable",
                                                                    "type": [
                                                                        "array"
                                                                    ],
                                                                    "description": "Coefficients associated with one role.",
                                                                    "items": {
                                                                        "x-optimade-type": "list",
                                                                        "x-optimade-unit": "inapplicable",
                                                                        "x-optimade-dimensions": {
                                                                            "names": [
                                                                                "dim_lattice"
                                                                            ],
                                                                            "sizes": [
                                                                                3
                                                                            ]
                                                                        },
                                                                        "type": [
                                                                            "array"
                                                                        ],
                                                                        "description": "One exact coefficient vector.",
                                                                        "items": {
                                                                            "$id": "https://schemas.anyterial.se/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"
                                                                        }
                                                                    }
                                                                }
                                                            },
                                                            "target": {
                                                                "x-optimade-type": "list",
                                                                "x-optimade-unit": "inapplicable",
                                                                "type": [
                                                                    "array"
                                                                ],
                                                                "description": "Exact target vector or scalar for the constraint.",
                                                                "items": {
                                                                    "$id": "https://schemas.anyterial.se/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",
                                                    "2"
                                                ]
                                            ],
                                            "vector": [
                                                "0",
                                                "0",
                                                "0"
                                            ],
                                            "xyz": "x,y,2z",
                                            "det": 2,
                                            "is_orthogonal": false
                                        },
                                        "index": 2,
                                        "subgroup_type": "k",
                                        "k_subtype": "enlarged_unit_cell",
                                        "wyckoff_splitting": [
                                            {
                                                "parent": "a",
                                                "splits": [
                                                    {
                                                        "letter": "a",
                                                        "xyz": "x,y,z",
                                                        "affine": [
                                                            [
                                                                "1",
                                                                "0",
                                                                "0",
                                                                "0"
                                                            ],
                                                            [
                                                                "0",
                                                                "1",
                                                                "0",
                                                                "0"
                                                            ],
                                                            [
                                                                "0",
                                                                "0",
                                                                "1",
                                                                "0"
                                                            ]
                                                        ]
                                                    }
                                                ]
                                            }
                                        ],
                                        "criteria": [
                                            {
                                                "parent": "a",
                                                "constraints": [
                                                    {
                                                        "roles": [
                                                            {
                                                                "letter": "a",
                                                                "index": 0
                                                            }
                                                        ],
                                                        "coeffs": [
                                                            [
                                                                [
                                                                    "1",
                                                                    "0",
                                                                    "0"
                                                                ]
                                                            ]
                                                        ],
                                                        "target": [
                                                            "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
                                        },
                                        "compatible_systems": [
                                            "triclinic",
                                            "monoclinic",
                                            "orthorhombic",
                                            "tetragonal",
                                            "trigonal",
                                            "hexagonal",
                                            "cubic"
                                        ],
                                        "operation_kind": "affine"
                                    }
                                ]
                            }
                        }
                    },
                    "examples": [
                        {
                            "it_number": 1,
                            "hall": "p_1",
                            "affine_images": [
                                {
                                    "affine_transformation": {
                                        "matrix": [
                                            [
                                                "1",
                                                "0",
                                                "0"
                                            ],
                                            [
                                                "0",
                                                "1",
                                                "0"
                                            ],
                                            [
                                                "0",
                                                "0",
                                                "1"
                                            ]
                                        ],
                                        "vector": [
                                            "0",
                                            "0",
                                            "0"
                                        ]
                                    }
                                }
                            ]
                        }
                    ]
                },
                "affine_normalizer_coset_data": {
                    "$id": "https://schemas.anyterial.se/defs/v0.1/properties/transformations/affine_normalizer_coset_data",
                    "x-optimade-requirements": {
                        "support": "may",
                        "sortable": false,
                        "query-support": "none",
                        "response-level": "may"
                    },
                    "title": "Affine normalizer coset data",
                    "x-optimade-type": "list",
                    "x-optimade-definition": {
                        "kind": "property",
                        "version": "0.1.0",
                        "format": "1.3",
                        "name": "affine_normalizer_coset_data",
                        "label": "affine_normalizer_coset_data_transformations"
                    },
                    "x-optimade-unit": "inapplicable",
                    "type": [
                        "array",
                        "null"
                    ],
                    "description": "Ordered table of bounded affine normalizer coset-representative data for crystallographic space groups, with one item for each Hall setting.\n\nThe affine normalizer of a space group describes affine mappings that send the space group to itself.\nIn practical algorithms this information is useful after a candidate space-group setting has been identified, because additional normalizer representatives can be applied to explore equivalent descriptions, equivalent origin choices, or equivalent embeddings without changing the underlying space group.\nThe representatives are listed modulo the space group itself, so each listed operation represents an equivalence class of normalizer operations rather than every operation in that class.\n\nThe `orthogonal_affine_normalizer_cosets` list is the signed-permutation subset of representatives.\nThe `affine_normalizer_cosets` list is generated from a bounded set of unimodular integer linear parts and may include non-orthogonal representatives.\nBoth lists are finite bounded tables and MUST NOT be interpreted as complete infinite affine normalizers.\nEach listed representative carries `compatible_systems`, which states the crystal metric systems for which the representative preserves the metric constraints.\n\n**Requirements/Conventions**:\n\n- It MUST be a list of dictionaries.\n- The list order MUST match the generator's Hall-setting order.\n- The companion top-level `indicies.hall_symbol_to_affine_normalizer_coset_data` lookup maps normalized Hall entries to zero-based positions in this list; it is not an OPTIMADE property.\n- Each dictionary MUST contain a `hall_entry` value equal to the Hall-entry key used by the companion index.\n- Count fields MUST equal the length of their corresponding representative lists.\n- Matrix and vector entries inside representatives MUST be exact strings, using integer strings or fraction strings as appropriate.\n- The `candidate_sets` dictionary records generation bookkeeping for the finite candidate searches and is not itself a crystallographic normalizer object.",
                    "items": {
                        "x-optimade-type": "dictionary",
                        "x-optimade-unit": "inapplicable",
                        "type": [
                            "object",
                            "null"
                        ],
                        "description": "One affine-normalizer coset-data row for a single Hall setting.\n\n**Requirements/Conventions**:\n\n- It MUST be a dictionary with the following keys:\n\n    - **hall\\_entry**: REQUIRED; String.\n      Normalized Hall entry identifying the Hall setting represented by this row.\n\n    - **it\\_number**: REQUIRED; Integer.\n      International Tables space-group number of the represented Hall setting.\n\n    - **crystal\\_system**: REQUIRED; String.\n      Crystal system of the represented Hall setting.\n\n    - **orthogonal\\_affine\\_normalizer\\_cosets**: REQUIRED; List of dictionaries.\n      Signed-permutation affine normalizer coset representatives modulo the space group.\n      Each item follows `/defs/v0.1/properties/symmetry/basis_transform`.\n\n    - **affine\\_normalizer\\_cosets**: REQUIRED; List of dictionaries.\n      Bounded affine normalizer coset representatives modulo the space group.\n      Each item follows `/defs/v0.1/properties/symmetry/basis_transform`.\n\n    - **n\\_orthogonal\\_cosets**: REQUIRED; Integer.\n      Number of representatives in `orthogonal_affine_normalizer_cosets`.\n\n    - **n\\_cosets**: REQUIRED; Integer.\n      Number of representatives in `affine_normalizer_cosets`.\n\n    - **candidate\\_sets**: REQUIRED; Dictionary.\n      Generator bookkeeping for the finite candidate sets used to produce the two representative lists.",
                        "properties": {
                            "hall_entry": {
                                "$id": "https://schemas.anyterial.se/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.",
                                "x-optimade-unit": "inapplicable",
                                "examples": [
                                    "p_1",
                                    "-p_1"
                                ]
                            },
                            "it_number": {
                                "$id": "https://schemas.anyterial.se/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
                                ]
                            },
                            "crystal_system": {
                                "$id": "https://schemas.anyterial.se/defs/v0.1/properties/pointgroups/crystal_system",
                                "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.",
                                "x-optimade-unit": "inapplicable",
                                "enum": [
                                    "triclinic",
                                    "monoclinic",
                                    "orthorhombic",
                                    "tetragonal",
                                    "trigonal",
                                    "hexagonal",
                                    "cubic"
                                ],
                                "examples": [
                                    "triclinic",
                                    "monoclinic"
                                ]
                            },
                            "orthogonal_affine_normalizer_cosets": {
                                "$id": "https://schemas.anyterial.se/defs/v0.1/properties/transformations/orthogonal_affine_normalizer_cosets",
                                "title": "Orthogonal affine normalizer cosets",
                                "x-optimade-type": "list",
                                "x-optimade-definition": {
                                    "kind": "property",
                                    "version": "0.1.0",
                                    "format": "1.3",
                                    "name": "orthogonal_affine_normalizer_cosets",
                                    "label": "orthogonal_affine_normalizer_cosets_transformations"
                                },
                                "x-optimade-unit": "inapplicable",
                                "type": [
                                    "array",
                                    "null"
                                ],
                                "description": "Runtime list of orthogonal signed-permutation affine normalizer coset representatives modulo the space group.\n\nEach item is one finite listed representative and follows `/properties/symmetry/basis_transform`.\nThe list is a bounded representative table, not a complete infinite affine normalizer.",
                                "items": {
                                    "$id": "https://schemas.anyterial.se/defs/v0.1/properties/symmetry/basis_transform",
                                    "title": "Basis transformation",
                                    "x-optimade-type": "dictionary",
                                    "x-optimade-definition": {
                                        "kind": "property",
                                        "version": "0.1.0",
                                        "format": "1.3",
                                        "name": "basis_transform",
                                        "label": "basis_transform_symmetry"
                                    },
                                    "x-optimade-unit": "inapplicable",
                                    "type": [
                                        "object",
                                        "null"
                                    ],
                                    "description": "One crystallographic transform between coordinate descriptions, settings, cells, or related group embeddings.\n\nThe affine map itself is stored in the embedded `affine_transformation` field.\nThe parent property defines the source and target coordinate systems and the precise role of the transform.\nUseful, for example, for representing setting changes, subgroup embeddings, isomorphic subgroup transforms, normalizer representatives, and same-space-group affine images.\nThis property is not limited to symmetry operations within one fixed setting; the matrix may be non-orthogonal or have determinant different from one when the transform changes cell or basis.\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 transform, using exact rational matrix and vector entries.\n      The coordinate convention and source/target interpretation are supplied by the parent property.\n\n    - **index**: OPTIONAL; Integer or null.\n      Index metadata whose interpretation is defined by the parent property.\n      Common uses include the subgroup index for subgroup embeddings, the cell index for isomorphic subgroup transforms, or an ordinal representative index in a finite transform table.\n\n    - **subgroup\\_type**: OPTIONAL; String.\n      International Tables subgroup-type label when the transform describes a maximal subgroup embedding.\n      The value MUST be `t` for a translationengleiche subgroup or `k` for a klassengleiche subgroup.\n      It MUST be omitted when the transform is not a maximal subgroup embedding.\n\n    - **k\\_subtype**: OPTIONAL; String or null.\n      Klassengleiche subtype when the transform describes a klassengleiche subgroup relation.\n      The value MUST be `loss_of_centering_translation` or `enlarged_unit_cell` for klassengleiche relations and null or omitted otherwise.\n\n    - **compatible\\_systems**: OPTIONAL; List of strings.\n      Crystal metric systems for which the transform is compatible.\n      This is used for bounded affine normalizer representatives.\n\n    - **operation\\_kind**: OPTIONAL; String.\n      Categorical label for normalizer-type representatives.\n      The value MUST be `euclidean` for Euclidean normalizer operations, `orthogonal_affine` for the signed-permutation affine normalizer subset, or `affine` for the bounded unimodular affine normalizer table.\n      It MUST be omitted when the transform is a setting transform, subgroup embedding, or other transform for which no normalizer operation class applies.\n\n    - **wyckoff\\_splitting**: OPTIONAL; List.\n      Wyckoff-position splitting metadata induced by the transform when available.\n      The list is grouped by explicit parent Wyckoff letter.\n\n    - **criteria**: OPTIONAL; List.\n      Backward-lift constraint metadata induced by the transform when available.\n      The list is grouped by explicit parent Wyckoff letter.",
                                    "properties": {
                                        "affine_transformation": {
                                            "$id": "https://schemas.anyterial.se/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 affine transformation is a geometric transformation preserving points, straight lines, and parallelism (collinearity), but may not preserve Euclidean distances and angles.\nThe transformation is represented by a 3 by 3 matrix and a 3-vector, both serialized with exact string entries.\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\n    - **det**: OPTIONAL; Integer.\n      Determinant of `matrix` when the generator emits it.\n\n    - **is\\_orthogonal**: OPTIONAL; Boolean.\n      Whether `matrix` is orthogonal in the exact representation used by the generator.",
                                            "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.anyterial.se/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.anyterial.se/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.anyterial.se/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."
                                                },
                                                "is_orthogonal": {
                                                    "x-optimade-type": "boolean",
                                                    "x-optimade-unit": "inapplicable",
                                                    "type": [
                                                        "boolean",
                                                        "null"
                                                    ],
                                                    "description": "Whether the matrix part is orthogonal."
                                                }
                                            },
                                            "examples": [
                                                {
                                                    "matrix": [
                                                        [
                                                            "-1",
                                                            "0",
                                                            "0"
                                                        ],
                                                        [
                                                            "0",
                                                            "-1",
                                                            "0"
                                                        ],
                                                        [
                                                            "0",
                                                            "0",
                                                            "1"
                                                        ]
                                                    ],
                                                    "vector": [
                                                        "0",
                                                        "0",
                                                        "0"
                                                    ],
                                                    "xyz": "-x,-y,z",
                                                    "det": 1,
                                                    "is_orthogonal": true
                                                }
                                            ]
                                        },
                                        "index": {
                                            "x-optimade-type": "integer",
                                            "x-optimade-unit": "inapplicable",
                                            "type": [
                                                "integer",
                                                "null"
                                            ],
                                            "description": "Index metadata whose interpretation is supplied by the parent property."
                                        },
                                        "subgroup_type": {
                                            "x-optimade-type": "string",
                                            "x-optimade-unit": "inapplicable",
                                            "type": [
                                                "string"
                                            ],
                                            "description": "International Tables subgroup-type label when applicable.",
                                            "enum": [
                                                "t",
                                                "k"
                                            ]
                                        },
                                        "k_subtype": {
                                            "x-optimade-type": "string",
                                            "x-optimade-unit": "inapplicable",
                                            "type": [
                                                "string",
                                                "null"
                                            ],
                                            "description": "Klassengleiche subtype when applicable."
                                        },
                                        "compatible_systems": {
                                            "x-optimade-type": "list",
                                            "x-optimade-unit": "inapplicable",
                                            "type": [
                                                "array",
                                                "null"
                                            ],
                                            "description": "Crystal metric systems compatible with the transform.",
                                            "items": {
                                                "x-optimade-type": "string",
                                                "x-optimade-unit": "inapplicable",
                                                "type": [
                                                    "string"
                                                ],
                                                "description": "One compatible crystal-system label.",
                                                "enum": [
                                                    "triclinic",
                                                    "monoclinic",
                                                    "orthorhombic",
                                                    "tetragonal",
                                                    "trigonal",
                                                    "hexagonal",
                                                    "cubic"
                                                ]
                                            }
                                        },
                                        "operation_kind": {
                                            "x-optimade-type": "string",
                                            "x-optimade-unit": "inapplicable",
                                            "type": [
                                                "string"
                                            ],
                                            "description": "Categorical label for normalizer-type representatives.",
                                            "enum": [
                                                "euclidean",
                                                "orthogonal_affine",
                                                "affine"
                                            ]
                                        },
                                        "wyckoff_splitting": {
                                            "$id": "https://schemas.anyterial.se/defs/v0.1/properties/transformations/wyckoff_splitting",
                                            "title": "Wyckoff splitting",
                                            "x-optimade-type": "list",
                                            "x-optimade-definition": {
                                                "kind": "property",
                                                "version": "0.1.0",
                                                "format": "1.3",
                                                "name": "wyckoff_splitting",
                                                "label": "wyckoff_splitting_transformations"
                                            },
                                            "x-optimade-unit": "inapplicable",
                                            "type": [
                                                "array",
                                                "null"
                                            ],
                                            "description": "Wyckoff-position splitting data associated with a subgroup or same-space-group transform.\n\nEach list item gives the split of one parent Wyckoff position.\nThe parent Wyckoff letter is stored in the `parent` field rather than as a JSON dictionary key.\n\n**Requirements/Conventions**:\n\n- It MUST be a list of dictionaries.\n- Each dictionary MUST contain `parent`, the Wyckoff letter in the parent setting.\n- Each dictionary MUST contain `splits`, an ordered list of subgroup Wyckoff-position assignments or coordinate expressions emitted by the generator.",
                                            "items": {
                                                "x-optimade-type": "dictionary",
                                                "x-optimade-unit": "inapplicable",
                                                "type": [
                                                    "object"
                                                ],
                                                "description": "Splitting data for one parent Wyckoff position.",
                                                "required": [
                                                    "parent",
                                                    "splits"
                                                ],
                                                "properties": {
                                                    "parent": {
                                                        "x-optimade-type": "string",
                                                        "x-optimade-unit": "inapplicable",
                                                        "type": [
                                                            "string"
                                                        ],
                                                        "description": "Parent Wyckoff letter."
                                                    },
                                                    "splits": {
                                                        "x-optimade-type": "list",
                                                        "x-optimade-unit": "inapplicable",
                                                        "type": [
                                                            "array"
                                                        ],
                                                        "description": "Ordered split records for this parent Wyckoff letter.",
                                                        "items": {
                                                            "x-optimade-type": "dictionary",
                                                            "x-optimade-unit": "inapplicable",
                                                            "type": [
                                                                "object"
                                                            ],
                                                            "description": "One Wyckoff split record.",
                                                            "required": [
                                                                "letter",
                                                                "xyz",
                                                                "affine"
                                                            ],
                                                            "properties": {
                                                                "letter": {
                                                                    "x-optimade-type": "string",
                                                                    "x-optimade-unit": "inapplicable",
                                                                    "type": [
                                                                        "string"
                                                                    ],
                                                                    "description": "Subgroup Wyckoff letter assigned by this split branch."
                                                                },
                                                                "xyz": {
                                                                    "x-optimade-type": "string",
                                                                    "x-optimade-unit": "inapplicable",
                                                                    "type": [
                                                                        "string"
                                                                    ],
                                                                    "description": "Coordinate expression for the split branch."
                                                                },
                                                                "affine": {
                                                                    "x-optimade-type": "list",
                                                                    "x-optimade-unit": "inapplicable",
                                                                    "x-optimade-dimensions": {
                                                                        "names": [
                                                                            "dim_lattice",
                                                                            "dim_affine"
                                                                        ],
                                                                        "sizes": [
                                                                            3,
                                                                            4
                                                                        ]
                                                                    },
                                                                    "type": [
                                                                        "array"
                                                                    ],
                                                                    "description": "Exact affine representation for the split branch as a 3 by 4 augmented matrix.\nEach row holds the three linear coefficients followed by the translation component, all as exact fraction strings.",
                                                                    "items": {
                                                                        "x-optimade-type": "list",
                                                                        "x-optimade-unit": "inapplicable",
                                                                        "x-optimade-dimensions": {
                                                                            "names": [
                                                                                "dim_affine"
                                                                            ],
                                                                            "sizes": [
                                                                                4
                                                                            ]
                                                                        },
                                                                        "type": [
                                                                            "array"
                                                                        ],
                                                                        "description": "One row of the augmented affine matrix.",
                                                                        "items": {
                                                                            "$id": "https://schemas.anyterial.se/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": [
                                                [
                                                    {
                                                        "parent": "c",
                                                        "splits": [
                                                            {
                                                                "letter": "e",
                                                                "xyz": "x,y,z",
                                                                "affine": [
                                                                    [
                                                                        "1",
                                                                        "0",
                                                                        "0",
                                                                        "0"
                                                                    ],
                                                                    [
                                                                        "0",
                                                                        "1",
                                                                        "0",
                                                                        "0"
                                                                    ],
                                                                    [
                                                                        "0",
                                                                        "0",
                                                                        "1",
                                                                        "0"
                                                                    ]
                                                                ]
                                                            }
                                                        ]
                                                    }
                                                ]
                                            ]
                                        },
                                        "criteria": {
                                            "x-optimade-type": "list",
                                            "x-optimade-unit": "inapplicable",
                                            "type": [
                                                "array",
                                                "null"
                                            ],
                                            "description": "Backward-lift constraint metadata induced by the transform, grouped by explicit parent Wyckoff letter.",
                                            "items": {
                                                "x-optimade-type": "dictionary",
                                                "x-optimade-unit": "inapplicable",
                                                "type": [
                                                    "object"
                                                ],
                                                "description": "Backward-lift constraints for one parent Wyckoff position.",
                                                "required": [
                                                    "parent",
                                                    "constraints"
                                                ],
                                                "properties": {
                                                    "parent": {
                                                        "x-optimade-type": "string",
                                                        "x-optimade-unit": "inapplicable",
                                                        "type": [
                                                            "string"
                                                        ],
                                                        "description": "Parent Wyckoff letter."
                                                    },
                                                    "constraints": {
                                                        "x-optimade-type": "list",
                                                        "x-optimade-unit": "inapplicable",
                                                        "type": [
                                                            "array"
                                                        ],
                                                        "description": "Constraint records for this parent Wyckoff letter.",
                                                        "items": {
                                                            "x-optimade-type": "dictionary",
                                                            "x-optimade-unit": "inapplicable",
                                                            "type": [
                                                                "object"
                                                            ],
                                                            "description": "One linear backward-lift constraint record.",
                                                            "properties": {
                                                                "roles": {
                                                                    "x-optimade-type": "list",
                                                                    "x-optimade-unit": "inapplicable",
                                                                    "type": [
                                                                        "array"
                                                                    ],
                                                                    "description": "Wyckoff-position role references entering the constraint.",
                                                                    "items": {
                                                                        "x-optimade-type": "dictionary",
                                                                        "x-optimade-unit": "inapplicable",
                                                                        "type": [
                                                                            "object"
                                                                        ],
                                                                        "description": "One role reference.",
                                                                        "required": [
                                                                            "letter",
                                                                            "index"
                                                                        ],
                                                                        "properties": {
                                                                            "letter": {
                                                                                "x-optimade-type": "string",
                                                                                "x-optimade-unit": "inapplicable",
                                                                                "type": [
                                                                                    "string"
                                                                                ],
                                                                                "description": "Wyckoff letter for the referenced role."
                                                                            },
                                                                            "index": {
                                                                                "x-optimade-type": "integer",
                                                                                "x-optimade-unit": "inapplicable",
                                                                                "type": [
                                                                                    "integer"
                                                                                ],
                                                                                "description": "Zero-based occurrence index for the role."
                                                                            }
                                                                        }
                                                                    }
                                                                },
                                                                "coeffs": {
                                                                    "x-optimade-type": "list",
                                                                    "x-optimade-unit": "inapplicable",
                                                                    "type": [
                                                                        "array"
                                                                    ],
                                                                    "description": "Exact coefficient vectors for the constraint.",
                                                                    "items": {
                                                                        "x-optimade-type": "list",
                                                                        "x-optimade-unit": "inapplicable",
                                                                        "type": [
                                                                            "array"
                                                                        ],
                                                                        "description": "Coefficients associated with one role.",
                                                                        "items": {
                                                                            "x-optimade-type": "list",
                                                                            "x-optimade-unit": "inapplicable",
                                                                            "x-optimade-dimensions": {
                                                                                "names": [
                                                                                    "dim_lattice"
                                                                                ],
                                                                                "sizes": [
                                                                                    3
                                                                                ]
                                                                            },
                                                                            "type": [
                                                                                "array"
                                                                            ],
                                                                            "description": "One exact coefficient vector.",
                                                                            "items": {
                                                                                "$id": "https://schemas.anyterial.se/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"
                                                                            }
                                                                        }
                                                                    }
                                                                },
                                                                "target": {
                                                                    "x-optimade-type": "list",
                                                                    "x-optimade-unit": "inapplicable",
                                                                    "type": [
                                                                        "array"
                                                                    ],
                                                                    "description": "Exact target vector or scalar for the constraint.",
                                                                    "items": {
                                                                        "$id": "https://schemas.anyterial.se/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",
                                                        "2"
                                                    ]
                                                ],
                                                "vector": [
                                                    "0",
                                                    "0",
                                                    "0"
                                                ],
                                                "xyz": "x,y,2z",
                                                "det": 2,
                                                "is_orthogonal": false
                                            },
                                            "index": 2,
                                            "subgroup_type": "k",
                                            "k_subtype": "enlarged_unit_cell",
                                            "wyckoff_splitting": [
                                                {
                                                    "parent": "a",
                                                    "splits": [
                                                        {
                                                            "letter": "a",
                                                            "xyz": "x,y,z",
                                                            "affine": [
                                                                [
                                                                    "1",
                                                                    "0",
                                                                    "0",
                                                                    "0"
                                                                ],
                                                                [
                                                                    "0",
                                                                    "1",
                                                                    "0",
                                                                    "0"
                                                                ],
                                                                [
                                                                    "0",
                                                                    "0",
                                                                    "1",
                                                                    "0"
                                                                ]
                                                            ]
                                                        }
                                                    ]
                                                }
                                            ],
                                            "criteria": [
                                                {
                                                    "parent": "a",
                                                    "constraints": [
                                                        {
                                                            "roles": [
                                                                {
                                                                    "letter": "a",
                                                                    "index": 0
                                                                }
                                                            ],
                                                            "coeffs": [
                                                                [
                                                                    [
                                                                        "1",
                                                                        "0",
                                                                        "0"
                                                                    ]
                                                                ]
                                                            ],
                                                            "target": [
                                                                "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
                                            },
                                            "compatible_systems": [
                                                "triclinic",
                                                "monoclinic",
                                                "orthorhombic",
                                                "tetragonal",
                                                "trigonal",
                                                "hexagonal",
                                                "cubic"
                                            ],
                                            "operation_kind": "affine"
                                        }
                                    ]
                                },
                                "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
                                            }
                                        }
                                    ]
                                ]
                            },
                            "affine_normalizer_cosets": {
                                "$id": "https://schemas.anyterial.se/defs/v0.1/properties/transformations/affine_normalizer_cosets",
                                "title": "Affine normalizer cosets",
                                "x-optimade-type": "list",
                                "x-optimade-definition": {
                                    "kind": "property",
                                    "version": "0.1.0",
                                    "format": "1.3",
                                    "name": "affine_normalizer_cosets",
                                    "label": "affine_normalizer_cosets_transformations"
                                },
                                "x-optimade-unit": "inapplicable",
                                "type": [
                                    "array",
                                    "null"
                                ],
                                "description": "Runtime list of bounded affine normalizer coset representatives modulo the space group.\n\nEach item is one finite listed representative and follows `/properties/symmetry/basis_transform`.\nThe list is a bounded representative table, not a complete infinite affine normalizer.",
                                "items": {
                                    "$id": "https://schemas.anyterial.se/defs/v0.1/properties/symmetry/basis_transform",
                                    "title": "Basis transformation",
                                    "x-optimade-type": "dictionary",
                                    "x-optimade-definition": {
                                        "kind": "property",
                                        "version": "0.1.0",
                                        "format": "1.3",
                                        "name": "basis_transform",
                                        "label": "basis_transform_symmetry"
                                    },
                                    "x-optimade-unit": "inapplicable",
                                    "type": [
                                        "object",
                                        "null"
                                    ],
                                    "description": "One crystallographic transform between coordinate descriptions, settings, cells, or related group embeddings.\n\nThe affine map itself is stored in the embedded `affine_transformation` field.\nThe parent property defines the source and target coordinate systems and the precise role of the transform.\nUseful, for example, for representing setting changes, subgroup embeddings, isomorphic subgroup transforms, normalizer representatives, and same-space-group affine images.\nThis property is not limited to symmetry operations within one fixed setting; the matrix may be non-orthogonal or have determinant different from one when the transform changes cell or basis.\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 transform, using exact rational matrix and vector entries.\n      The coordinate convention and source/target interpretation are supplied by the parent property.\n\n    - **index**: OPTIONAL; Integer or null.\n      Index metadata whose interpretation is defined by the parent property.\n      Common uses include the subgroup index for subgroup embeddings, the cell index for isomorphic subgroup transforms, or an ordinal representative index in a finite transform table.\n\n    - **subgroup\\_type**: OPTIONAL; String.\n      International Tables subgroup-type label when the transform describes a maximal subgroup embedding.\n      The value MUST be `t` for a translationengleiche subgroup or `k` for a klassengleiche subgroup.\n      It MUST be omitted when the transform is not a maximal subgroup embedding.\n\n    - **k\\_subtype**: OPTIONAL; String or null.\n      Klassengleiche subtype when the transform describes a klassengleiche subgroup relation.\n      The value MUST be `loss_of_centering_translation` or `enlarged_unit_cell` for klassengleiche relations and null or omitted otherwise.\n\n    - **compatible\\_systems**: OPTIONAL; List of strings.\n      Crystal metric systems for which the transform is compatible.\n      This is used for bounded affine normalizer representatives.\n\n    - **operation\\_kind**: OPTIONAL; String.\n      Categorical label for normalizer-type representatives.\n      The value MUST be `euclidean` for Euclidean normalizer operations, `orthogonal_affine` for the signed-permutation affine normalizer subset, or `affine` for the bounded unimodular affine normalizer table.\n      It MUST be omitted when the transform is a setting transform, subgroup embedding, or other transform for which no normalizer operation class applies.\n\n    - **wyckoff\\_splitting**: OPTIONAL; List.\n      Wyckoff-position splitting metadata induced by the transform when available.\n      The list is grouped by explicit parent Wyckoff letter.\n\n    - **criteria**: OPTIONAL; List.\n      Backward-lift constraint metadata induced by the transform when available.\n      The list is grouped by explicit parent Wyckoff letter.",
                                    "properties": {
                                        "affine_transformation": {
                                            "$id": "https://schemas.anyterial.se/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 affine transformation is a geometric transformation preserving points, straight lines, and parallelism (collinearity), but may not preserve Euclidean distances and angles.\nThe transformation is represented by a 3 by 3 matrix and a 3-vector, both serialized with exact string entries.\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\n    - **det**: OPTIONAL; Integer.\n      Determinant of `matrix` when the generator emits it.\n\n    - **is\\_orthogonal**: OPTIONAL; Boolean.\n      Whether `matrix` is orthogonal in the exact representation used by the generator.",
                                            "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.anyterial.se/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.anyterial.se/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.anyterial.se/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."
                                                },
                                                "is_orthogonal": {
                                                    "x-optimade-type": "boolean",
                                                    "x-optimade-unit": "inapplicable",
                                                    "type": [
                                                        "boolean",
                                                        "null"
                                                    ],
                                                    "description": "Whether the matrix part is orthogonal."
                                                }
                                            },
                                            "examples": [
                                                {
                                                    "matrix": [
                                                        [
                                                            "-1",
                                                            "0",
                                                            "0"
                                                        ],
                                                        [
                                                            "0",
                                                            "-1",
                                                            "0"
                                                        ],
                                                        [
                                                            "0",
                                                            "0",
                                                            "1"
                                                        ]
                                                    ],
                                                    "vector": [
                                                        "0",
                                                        "0",
                                                        "0"
                                                    ],
                                                    "xyz": "-x,-y,z",
                                                    "det": 1,
                                                    "is_orthogonal": true
                                                }
                                            ]
                                        },
                                        "index": {
                                            "x-optimade-type": "integer",
                                            "x-optimade-unit": "inapplicable",
                                            "type": [
                                                "integer",
                                                "null"
                                            ],
                                            "description": "Index metadata whose interpretation is supplied by the parent property."
                                        },
                                        "subgroup_type": {
                                            "x-optimade-type": "string",
                                            "x-optimade-unit": "inapplicable",
                                            "type": [
                                                "string"
                                            ],
                                            "description": "International Tables subgroup-type label when applicable.",
                                            "enum": [
                                                "t",
                                                "k"
                                            ]
                                        },
                                        "k_subtype": {
                                            "x-optimade-type": "string",
                                            "x-optimade-unit": "inapplicable",
                                            "type": [
                                                "string",
                                                "null"
                                            ],
                                            "description": "Klassengleiche subtype when applicable."
                                        },
                                        "compatible_systems": {
                                            "x-optimade-type": "list",
                                            "x-optimade-unit": "inapplicable",
                                            "type": [
                                                "array",
                                                "null"
                                            ],
                                            "description": "Crystal metric systems compatible with the transform.",
                                            "items": {
                                                "x-optimade-type": "string",
                                                "x-optimade-unit": "inapplicable",
                                                "type": [
                                                    "string"
                                                ],
                                                "description": "One compatible crystal-system label.",
                                                "enum": [
                                                    "triclinic",
                                                    "monoclinic",
                                                    "orthorhombic",
                                                    "tetragonal",
                                                    "trigonal",
                                                    "hexagonal",
                                                    "cubic"
                                                ]
                                            }
                                        },
                                        "operation_kind": {
                                            "x-optimade-type": "string",
                                            "x-optimade-unit": "inapplicable",
                                            "type": [
                                                "string"
                                            ],
                                            "description": "Categorical label for normalizer-type representatives.",
                                            "enum": [
                                                "euclidean",
                                                "orthogonal_affine",
                                                "affine"
                                            ]
                                        },
                                        "wyckoff_splitting": {
                                            "$id": "https://schemas.anyterial.se/defs/v0.1/properties/transformations/wyckoff_splitting",
                                            "title": "Wyckoff splitting",
                                            "x-optimade-type": "list",
                                            "x-optimade-definition": {
                                                "kind": "property",
                                                "version": "0.1.0",
                                                "format": "1.3",
                                                "name": "wyckoff_splitting",
                                                "label": "wyckoff_splitting_transformations"
                                            },
                                            "x-optimade-unit": "inapplicable",
                                            "type": [
                                                "array",
                                                "null"
                                            ],
                                            "description": "Wyckoff-position splitting data associated with a subgroup or same-space-group transform.\n\nEach list item gives the split of one parent Wyckoff position.\nThe parent Wyckoff letter is stored in the `parent` field rather than as a JSON dictionary key.\n\n**Requirements/Conventions**:\n\n- It MUST be a list of dictionaries.\n- Each dictionary MUST contain `parent`, the Wyckoff letter in the parent setting.\n- Each dictionary MUST contain `splits`, an ordered list of subgroup Wyckoff-position assignments or coordinate expressions emitted by the generator.",
                                            "items": {
                                                "x-optimade-type": "dictionary",
                                                "x-optimade-unit": "inapplicable",
                                                "type": [
                                                    "object"
                                                ],
                                                "description": "Splitting data for one parent Wyckoff position.",
                                                "required": [
                                                    "parent",
                                                    "splits"
                                                ],
                                                "properties": {
                                                    "parent": {
                                                        "x-optimade-type": "string",
                                                        "x-optimade-unit": "inapplicable",
                                                        "type": [
                                                            "string"
                                                        ],
                                                        "description": "Parent Wyckoff letter."
                                                    },
                                                    "splits": {
                                                        "x-optimade-type": "list",
                                                        "x-optimade-unit": "inapplicable",
                                                        "type": [
                                                            "array"
                                                        ],
                                                        "description": "Ordered split records for this parent Wyckoff letter.",
                                                        "items": {
                                                            "x-optimade-type": "dictionary",
                                                            "x-optimade-unit": "inapplicable",
                                                            "type": [
                                                                "object"
                                                            ],
                                                            "description": "One Wyckoff split record.",
                                                            "required": [
                                                                "letter",
                                                                "xyz",
                                                                "affine"
                                                            ],
                                                            "properties": {
                                                                "letter": {
                                                                    "x-optimade-type": "string",
                                                                    "x-optimade-unit": "inapplicable",
                                                                    "type": [
                                                                        "string"
                                                                    ],
                                                                    "description": "Subgroup Wyckoff letter assigned by this split branch."
                                                                },
                                                                "xyz": {
                                                                    "x-optimade-type": "string",
                                                                    "x-optimade-unit": "inapplicable",
                                                                    "type": [
                                                                        "string"
                                                                    ],
                                                                    "description": "Coordinate expression for the split branch."
                                                                },
                                                                "affine": {
                                                                    "x-optimade-type": "list",
                                                                    "x-optimade-unit": "inapplicable",
                                                                    "x-optimade-dimensions": {
                                                                        "names": [
                                                                            "dim_lattice",
                                                                            "dim_affine"
                                                                        ],
                                                                        "sizes": [
                                                                            3,
                                                                            4
                                                                        ]
                                                                    },
                                                                    "type": [
                                                                        "array"
                                                                    ],
                                                                    "description": "Exact affine representation for the split branch as a 3 by 4 augmented matrix.\nEach row holds the three linear coefficients followed by the translation component, all as exact fraction strings.",
                                                                    "items": {
                                                                        "x-optimade-type": "list",
                                                                        "x-optimade-unit": "inapplicable",
                                                                        "x-optimade-dimensions": {
                                                                            "names": [
                                                                                "dim_affine"
                                                                            ],
                                                                            "sizes": [
                                                                                4
                                                                            ]
                                                                        },
                                                                        "type": [
                                                                            "array"
                                                                        ],
                                                                        "description": "One row of the augmented affine matrix.",
                                                                        "items": {
                                                                            "$id": "https://schemas.anyterial.se/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": [
                                                [
                                                    {
                                                        "parent": "c",
                                                        "splits": [
                                                            {
                                                                "letter": "e",
                                                                "xyz": "x,y,z",
                                                                "affine": [
                                                                    [
                                                                        "1",
                                                                        "0",
                                                                        "0",
                                                                        "0"
                                                                    ],
                                                                    [
                                                                        "0",
                                                                        "1",
                                                                        "0",
                                                                        "0"
                                                                    ],
                                                                    [
                                                                        "0",
                                                                        "0",
                                                                        "1",
                                                                        "0"
                                                                    ]
                                                                ]
                                                            }
                                                        ]
                                                    }
                                                ]
                                            ]
                                        },
                                        "criteria": {
                                            "x-optimade-type": "list",
                                            "x-optimade-unit": "inapplicable",
                                            "type": [
                                                "array",
                                                "null"
                                            ],
                                            "description": "Backward-lift constraint metadata induced by the transform, grouped by explicit parent Wyckoff letter.",
                                            "items": {
                                                "x-optimade-type": "dictionary",
                                                "x-optimade-unit": "inapplicable",
                                                "type": [
                                                    "object"
                                                ],
                                                "description": "Backward-lift constraints for one parent Wyckoff position.",
                                                "required": [
                                                    "parent",
                                                    "constraints"
                                                ],
                                                "properties": {
                                                    "parent": {
                                                        "x-optimade-type": "string",
                                                        "x-optimade-unit": "inapplicable",
                                                        "type": [
                                                            "string"
                                                        ],
                                                        "description": "Parent Wyckoff letter."
                                                    },
                                                    "constraints": {
                                                        "x-optimade-type": "list",
                                                        "x-optimade-unit": "inapplicable",
                                                        "type": [
                                                            "array"
                                                        ],
                                                        "description": "Constraint records for this parent Wyckoff letter.",
                                                        "items": {
                                                            "x-optimade-type": "dictionary",
                                                            "x-optimade-unit": "inapplicable",
                                                            "type": [
                                                                "object"
                                                            ],
                                                            "description": "One linear backward-lift constraint record.",
                                                            "properties": {
                                                                "roles": {
                                                                    "x-optimade-type": "list",
                                                                    "x-optimade-unit": "inapplicable",
                                                                    "type": [
                                                                        "array"
                                                                    ],
                                                                    "description": "Wyckoff-position role references entering the constraint.",
                                                                    "items": {
                                                                        "x-optimade-type": "dictionary",
                                                                        "x-optimade-unit": "inapplicable",
                                                                        "type": [
                                                                            "object"
                                                                        ],
                                                                        "description": "One role reference.",
                                                                        "required": [
                                                                            "letter",
                                                                            "index"
                                                                        ],
                                                                        "properties": {
                                                                            "letter": {
                                                                                "x-optimade-type": "string",
                                                                                "x-optimade-unit": "inapplicable",
                                                                                "type": [
                                                                                    "string"
                                                                                ],
                                                                                "description": "Wyckoff letter for the referenced role."
                                                                            },
                                                                            "index": {
                                                                                "x-optimade-type": "integer",
                                                                                "x-optimade-unit": "inapplicable",
                                                                                "type": [
                                                                                    "integer"
                                                                                ],
                                                                                "description": "Zero-based occurrence index for the role."
                                                                            }
                                                                        }
                                                                    }
                                                                },
                                                                "coeffs": {
                                                                    "x-optimade-type": "list",
                                                                    "x-optimade-unit": "inapplicable",
                                                                    "type": [
                                                                        "array"
                                                                    ],
                                                                    "description": "Exact coefficient vectors for the constraint.",
                                                                    "items": {
                                                                        "x-optimade-type": "list",
                                                                        "x-optimade-unit": "inapplicable",
                                                                        "type": [
                                                                            "array"
                                                                        ],
                                                                        "description": "Coefficients associated with one role.",
                                                                        "items": {
                                                                            "x-optimade-type": "list",
                                                                            "x-optimade-unit": "inapplicable",
                                                                            "x-optimade-dimensions": {
                                                                                "names": [
                                                                                    "dim_lattice"
                                                                                ],
                                                                                "sizes": [
                                                                                    3
                                                                                ]
                                                                            },
                                                                            "type": [
                                                                                "array"
                                                                            ],
                                                                            "description": "One exact coefficient vector.",
                                                                            "items": {
                                                                                "$id": "https://schemas.anyterial.se/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"
                                                                            }
                                                                        }
                                                                    }
                                                                },
                                                                "target": {
                                                                    "x-optimade-type": "list",
                                                                    "x-optimade-unit": "inapplicable",
                                                                    "type": [
                                                                        "array"
                                                                    ],
                                                                    "description": "Exact target vector or scalar for the constraint.",
                                                                    "items": {
                                                                        "$id": "https://schemas.anyterial.se/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",
                                                        "2"
                                                    ]
                                                ],
                                                "vector": [
                                                    "0",
                                                    "0",
                                                    "0"
                                                ],
                                                "xyz": "x,y,2z",
                                                "det": 2,
                                                "is_orthogonal": false
                                            },
                                            "index": 2,
                                            "subgroup_type": "k",
                                            "k_subtype": "enlarged_unit_cell",
                                            "wyckoff_splitting": [
                                                {
                                                    "parent": "a",
                                                    "splits": [
                                                        {
                                                            "letter": "a",
                                                            "xyz": "x,y,z",
                                                            "affine": [
                                                                [
                                                                    "1",
                                                                    "0",
                                                                    "0",
                                                                    "0"
                                                                ],
                                                                [
                                                                    "0",
                                                                    "1",
                                                                    "0",
                                                                    "0"
                                                                ],
                                                                [
                                                                    "0",
                                                                    "0",
                                                                    "1",
                                                                    "0"
                                                                ]
                                                            ]
                                                        }
                                                    ]
                                                }
                                            ],
                                            "criteria": [
                                                {
                                                    "parent": "a",
                                                    "constraints": [
                                                        {
                                                            "roles": [
                                                                {
                                                                    "letter": "a",
                                                                    "index": 0
                                                                }
                                                            ],
                                                            "coeffs": [
                                                                [
                                                                    [
                                                                        "1",
                                                                        "0",
                                                                        "0"
                                                                    ]
                                                                ]
                                                            ],
                                                            "target": [
                                                                "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
                                            },
                                            "compatible_systems": [
                                                "triclinic",
                                                "monoclinic",
                                                "orthorhombic",
                                                "tetragonal",
                                                "trigonal",
                                                "hexagonal",
                                                "cubic"
                                            ],
                                            "operation_kind": "affine"
                                        }
                                    ]
                                },
                                "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
                                            }
                                        }
                                    ]
                                ]
                            },
                            "n_orthogonal_cosets": {
                                "$id": "https://schemas.anyterial.se/defs/v0.1/properties/transformations/n_orthogonal_cosets",
                                "title": "Number of orthogonal cosets",
                                "x-optimade-type": "integer",
                                "x-optimade-definition": {
                                    "kind": "property",
                                    "version": "0.1.0",
                                    "format": "1.3",
                                    "name": "n_orthogonal_cosets",
                                    "label": "n_orthogonal_cosets_transformations"
                                },
                                "type": [
                                    "integer",
                                    "null"
                                ],
                                "description": "Number of orthogonal affine normalizer coset representatives stored for the setting.\n\nThis value MUST equal the length of the `orthogonal_affine_normalizer_cosets` list of the containing record.",
                                "x-optimade-unit": "inapplicable",
                                "examples": [
                                    47,
                                    23
                                ]
                            },
                            "n_cosets": {
                                "$id": "https://schemas.anyterial.se/defs/v0.1/properties/transformations/n_cosets",
                                "title": "Number of cosets",
                                "x-optimade-type": "integer",
                                "x-optimade-definition": {
                                    "kind": "property",
                                    "version": "0.1.0",
                                    "format": "1.3",
                                    "name": "n_cosets",
                                    "label": "n_cosets_transformations"
                                },
                                "type": [
                                    "integer",
                                    "null"
                                ],
                                "description": "Number of affine normalizer coset representatives stored for the setting.\n\nThis value MUST equal the length of the `affine_normalizer_cosets` list of the containing record.",
                                "x-optimade-unit": "inapplicable",
                                "examples": [
                                    63,
                                    31
                                ]
                            },
                            "candidate_sets": {
                                "x-optimade-type": "dictionary",
                                "x-optimade-unit": "inapplicable",
                                "type": [
                                    "object",
                                    "null"
                                ],
                                "description": "Generator bookkeeping for the finite candidate sets used to produce the stored affine-normalizer coset representatives.\nThis dictionary records how many candidate affine operations were considered before and after quotienting modulo the space group and before applying metric-compatibility filters.",
                                "properties": {
                                    "orthogonal_affine_normalizer_cosets": {
                                        "x-optimade-type": "dictionary",
                                        "x-optimade-unit": "inapplicable",
                                        "type": [
                                            "object",
                                            "null"
                                        ],
                                        "description": "Candidate-set metadata for the orthogonal signed-permutation representative list.",
                                        "properties": {
                                            "candidate_set": {
                                                "x-optimade-type": "string",
                                                "x-optimade-unit": "inapplicable",
                                                "type": [
                                                    "string",
                                                    "null"
                                                ],
                                                "description": "Name of the linear candidate set used by the generator."
                                            },
                                            "n_linear_candidates": {
                                                "x-optimade-type": "integer",
                                                "x-optimade-unit": "inapplicable",
                                                "type": [
                                                    "integer",
                                                    "null"
                                                ],
                                                "description": "Number of linear matrices in the raw candidate set."
                                            },
                                            "n_raw_candidates": {
                                                "x-optimade-type": "integer",
                                                "x-optimade-unit": "inapplicable",
                                                "type": [
                                                    "integer",
                                                    "null"
                                                ],
                                                "description": "Number of affine candidates generated before deduplication modulo the space group."
                                            },
                                            "n_coset_representatives_before_metric_filter": {
                                                "x-optimade-type": "integer",
                                                "x-optimade-unit": "inapplicable",
                                                "type": [
                                                    "integer",
                                                    "null"
                                                ],
                                                "description": "Number of coset representatives before filtering by crystal metric compatibility."
                                            }
                                        }
                                    },
                                    "affine_normalizer_cosets": {
                                        "x-optimade-type": "dictionary",
                                        "x-optimade-unit": "inapplicable",
                                        "type": [
                                            "object",
                                            "null"
                                        ],
                                        "description": "Candidate-set metadata for the bounded unimodular-integer representative list.",
                                        "properties": {
                                            "candidate_set": {
                                                "x-optimade-type": "string",
                                                "x-optimade-unit": "inapplicable",
                                                "type": [
                                                    "string",
                                                    "null"
                                                ],
                                                "description": "Name of the linear candidate set used by the generator."
                                            },
                                            "n_linear_candidates": {
                                                "x-optimade-type": "integer",
                                                "x-optimade-unit": "inapplicable",
                                                "type": [
                                                    "integer",
                                                    "null"
                                                ],
                                                "description": "Number of linear matrices in the raw candidate set."
                                            },
                                            "n_raw_candidates": {
                                                "x-optimade-type": "integer",
                                                "x-optimade-unit": "inapplicable",
                                                "type": [
                                                    "integer",
                                                    "null"
                                                ],
                                                "description": "Number of affine candidates generated before deduplication modulo the space group."
                                            },
                                            "n_coset_representatives_before_metric_filter": {
                                                "x-optimade-type": "integer",
                                                "x-optimade-unit": "inapplicable",
                                                "type": [
                                                    "integer",
                                                    "null"
                                                ],
                                                "description": "Number of coset representatives before filtering by crystal metric compatibility."
                                            },
                                            "bounds": {
                                                "x-optimade-type": "dictionary",
                                                "x-optimade-unit": "inapplicable",
                                                "type": [
                                                    "object",
                                                    "null"
                                                ],
                                                "description": "Bounds that define the finite bounded unimodular-integer linear candidate set.",
                                                "properties": {
                                                    "det_abs": {
                                                        "x-optimade-type": "integer",
                                                        "x-optimade-unit": "inapplicable",
                                                        "type": [
                                                            "integer",
                                                            "null"
                                                        ],
                                                        "description": "Required absolute determinant of every bounded linear candidate."
                                                    },
                                                    "max_abs_linear_entry": {
                                                        "x-optimade-type": "integer",
                                                        "x-optimade-unit": "inapplicable",
                                                        "type": [
                                                            "integer",
                                                            "null"
                                                        ],
                                                        "description": "Maximum absolute value allowed for entries of the bounded integer linear candidates."
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "examples": [
                        [
                            {
                                "hall_entry": "p_1",
                                "it_number": 1,
                                "crystal_system": "triclinic",
                                "orthogonal_affine_normalizer_cosets": [
                                    {
                                        "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
                                        },
                                        "compatible_systems": [
                                            "triclinic",
                                            "monoclinic",
                                            "orthorhombic",
                                            "tetragonal",
                                            "trigonal",
                                            "hexagonal",
                                            "cubic"
                                        ]
                                    }
                                ],
                                "affine_normalizer_cosets": [
                                    {
                                        "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
                                        },
                                        "compatible_systems": [
                                            "triclinic",
                                            "monoclinic",
                                            "orthorhombic",
                                            "tetragonal",
                                            "trigonal",
                                            "hexagonal",
                                            "cubic"
                                        ]
                                    }
                                ],
                                "n_orthogonal_cosets": 47,
                                "n_cosets": 63,
                                "candidate_sets": {
                                    "orthogonal_affine_normalizer_cosets": {
                                        "candidate_set": "signed_permutation_matrices",
                                        "n_linear_candidates": 48,
                                        "n_raw_candidates": 96,
                                        "n_coset_representatives_before_metric_filter": 47
                                    },
                                    "affine_normalizer_cosets": {
                                        "candidate_set": "bounded_unimodular_integer_matrices",
                                        "n_linear_candidates": 6960,
                                        "n_raw_candidates": 13920,
                                        "n_coset_representatives_before_metric_filter": 63,
                                        "bounds": {
                                            "det_abs": 1,
                                            "max_abs_linear_entry": 1
                                        }
                                    }
                                }
                            }
                        ]
                    ]
                },
                "orthogonal_affine_normalizer_cosets": {
                    "$id": "https://schemas.anyterial.se/defs/v0.1/properties/transformations/orthogonal_affine_normalizer_cosets",
                    "x-optimade-requirements": {
                        "support": "may",
                        "sortable": false,
                        "query-support": "none",
                        "response-level": "may"
                    },
                    "title": "Orthogonal affine normalizer cosets",
                    "x-optimade-type": "list",
                    "x-optimade-definition": {
                        "kind": "property",
                        "version": "0.1.0",
                        "format": "1.3",
                        "name": "orthogonal_affine_normalizer_cosets",
                        "label": "orthogonal_affine_normalizer_cosets_transformations"
                    },
                    "x-optimade-unit": "inapplicable",
                    "type": [
                        "array",
                        "null"
                    ],
                    "description": "Runtime list of orthogonal signed-permutation affine normalizer coset representatives modulo the space group.\n\nEach item is one finite listed representative and follows `/properties/symmetry/basis_transform`.\nThe list is a bounded representative table, not a complete infinite affine normalizer.",
                    "items": {
                        "$id": "https://schemas.anyterial.se/defs/v0.1/properties/symmetry/basis_transform",
                        "title": "Basis transformation",
                        "x-optimade-type": "dictionary",
                        "x-optimade-definition": {
                            "kind": "property",
                            "version": "0.1.0",
                            "format": "1.3",
                            "name": "basis_transform",
                            "label": "basis_transform_symmetry"
                        },
                        "x-optimade-unit": "inapplicable",
                        "type": [
                            "object",
                            "null"
                        ],
                        "description": "One crystallographic transform between coordinate descriptions, settings, cells, or related group embeddings.\n\nThe affine map itself is stored in the embedded `affine_transformation` field.\nThe parent property defines the source and target coordinate systems and the precise role of the transform.\nUseful, for example, for representing setting changes, subgroup embeddings, isomorphic subgroup transforms, normalizer representatives, and same-space-group affine images.\nThis property is not limited to symmetry operations within one fixed setting; the matrix may be non-orthogonal or have determinant different from one when the transform changes cell or basis.\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 transform, using exact rational matrix and vector entries.\n      The coordinate convention and source/target interpretation are supplied by the parent property.\n\n    - **index**: OPTIONAL; Integer or null.\n      Index metadata whose interpretation is defined by the parent property.\n      Common uses include the subgroup index for subgroup embeddings, the cell index for isomorphic subgroup transforms, or an ordinal representative index in a finite transform table.\n\n    - **subgroup\\_type**: OPTIONAL; String.\n      International Tables subgroup-type label when the transform describes a maximal subgroup embedding.\n      The value MUST be `t` for a translationengleiche subgroup or `k` for a klassengleiche subgroup.\n      It MUST be omitted when the transform is not a maximal subgroup embedding.\n\n    - **k\\_subtype**: OPTIONAL; String or null.\n      Klassengleiche subtype when the transform describes a klassengleiche subgroup relation.\n      The value MUST be `loss_of_centering_translation` or `enlarged_unit_cell` for klassengleiche relations and null or omitted otherwise.\n\n    - **compatible\\_systems**: OPTIONAL; List of strings.\n      Crystal metric systems for which the transform is compatible.\n      This is used for bounded affine normalizer representatives.\n\n    - **operation\\_kind**: OPTIONAL; String.\n      Categorical label for normalizer-type representatives.\n      The value MUST be `euclidean` for Euclidean normalizer operations, `orthogonal_affine` for the signed-permutation affine normalizer subset, or `affine` for the bounded unimodular affine normalizer table.\n      It MUST be omitted when the transform is a setting transform, subgroup embedding, or other transform for which no normalizer operation class applies.\n\n    - **wyckoff\\_splitting**: OPTIONAL; List.\n      Wyckoff-position splitting metadata induced by the transform when available.\n      The list is grouped by explicit parent Wyckoff letter.\n\n    - **criteria**: OPTIONAL; List.\n      Backward-lift constraint metadata induced by the transform when available.\n      The list is grouped by explicit parent Wyckoff letter.",
                        "properties": {
                            "affine_transformation": {
                                "$id": "https://schemas.anyterial.se/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 affine transformation is a geometric transformation preserving points, straight lines, and parallelism (collinearity), but may not preserve Euclidean distances and angles.\nThe transformation is represented by a 3 by 3 matrix and a 3-vector, both serialized with exact string entries.\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\n    - **det**: OPTIONAL; Integer.\n      Determinant of `matrix` when the generator emits it.\n\n    - **is\\_orthogonal**: OPTIONAL; Boolean.\n      Whether `matrix` is orthogonal in the exact representation used by the generator.",
                                "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.anyterial.se/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.anyterial.se/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.anyterial.se/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."
                                    },
                                    "is_orthogonal": {
                                        "x-optimade-type": "boolean",
                                        "x-optimade-unit": "inapplicable",
                                        "type": [
                                            "boolean",
                                            "null"
                                        ],
                                        "description": "Whether the matrix part is orthogonal."
                                    }
                                },
                                "examples": [
                                    {
                                        "matrix": [
                                            [
                                                "-1",
                                                "0",
                                                "0"
                                            ],
                                            [
                                                "0",
                                                "-1",
                                                "0"
                                            ],
                                            [
                                                "0",
                                                "0",
                                                "1"
                                            ]
                                        ],
                                        "vector": [
                                            "0",
                                            "0",
                                            "0"
                                        ],
                                        "xyz": "-x,-y,z",
                                        "det": 1,
                                        "is_orthogonal": true
                                    }
                                ]
                            },
                            "index": {
                                "x-optimade-type": "integer",
                                "x-optimade-unit": "inapplicable",
                                "type": [
                                    "integer",
                                    "null"
                                ],
                                "description": "Index metadata whose interpretation is supplied by the parent property."
                            },
                            "subgroup_type": {
                                "x-optimade-type": "string",
                                "x-optimade-unit": "inapplicable",
                                "type": [
                                    "string"
                                ],
                                "description": "International Tables subgroup-type label when applicable.",
                                "enum": [
                                    "t",
                                    "k"
                                ]
                            },
                            "k_subtype": {
                                "x-optimade-type": "string",
                                "x-optimade-unit": "inapplicable",
                                "type": [
                                    "string",
                                    "null"
                                ],
                                "description": "Klassengleiche subtype when applicable."
                            },
                            "compatible_systems": {
                                "x-optimade-type": "list",
                                "x-optimade-unit": "inapplicable",
                                "type": [
                                    "array",
                                    "null"
                                ],
                                "description": "Crystal metric systems compatible with the transform.",
                                "items": {
                                    "x-optimade-type": "string",
                                    "x-optimade-unit": "inapplicable",
                                    "type": [
                                        "string"
                                    ],
                                    "description": "One compatible crystal-system label.",
                                    "enum": [
                                        "triclinic",
                                        "monoclinic",
                                        "orthorhombic",
                                        "tetragonal",
                                        "trigonal",
                                        "hexagonal",
                                        "cubic"
                                    ]
                                }
                            },
                            "operation_kind": {
                                "x-optimade-type": "string",
                                "x-optimade-unit": "inapplicable",
                                "type": [
                                    "string"
                                ],
                                "description": "Categorical label for normalizer-type representatives.",
                                "enum": [
                                    "euclidean",
                                    "orthogonal_affine",
                                    "affine"
                                ]
                            },
                            "wyckoff_splitting": {
                                "$id": "https://schemas.anyterial.se/defs/v0.1/properties/transformations/wyckoff_splitting",
                                "title": "Wyckoff splitting",
                                "x-optimade-type": "list",
                                "x-optimade-definition": {
                                    "kind": "property",
                                    "version": "0.1.0",
                                    "format": "1.3",
                                    "name": "wyckoff_splitting",
                                    "label": "wyckoff_splitting_transformations"
                                },
                                "x-optimade-unit": "inapplicable",
                                "type": [
                                    "array",
                                    "null"
                                ],
                                "description": "Wyckoff-position splitting data associated with a subgroup or same-space-group transform.\n\nEach list item gives the split of one parent Wyckoff position.\nThe parent Wyckoff letter is stored in the `parent` field rather than as a JSON dictionary key.\n\n**Requirements/Conventions**:\n\n- It MUST be a list of dictionaries.\n- Each dictionary MUST contain `parent`, the Wyckoff letter in the parent setting.\n- Each dictionary MUST contain `splits`, an ordered list of subgroup Wyckoff-position assignments or coordinate expressions emitted by the generator.",
                                "items": {
                                    "x-optimade-type": "dictionary",
                                    "x-optimade-unit": "inapplicable",
                                    "type": [
                                        "object"
                                    ],
                                    "description": "Splitting data for one parent Wyckoff position.",
                                    "required": [
                                        "parent",
                                        "splits"
                                    ],
                                    "properties": {
                                        "parent": {
                                            "x-optimade-type": "string",
                                            "x-optimade-unit": "inapplicable",
                                            "type": [
                                                "string"
                                            ],
                                            "description": "Parent Wyckoff letter."
                                        },
                                        "splits": {
                                            "x-optimade-type": "list",
                                            "x-optimade-unit": "inapplicable",
                                            "type": [
                                                "array"
                                            ],
                                            "description": "Ordered split records for this parent Wyckoff letter.",
                                            "items": {
                                                "x-optimade-type": "dictionary",
                                                "x-optimade-unit": "inapplicable",
                                                "type": [
                                                    "object"
                                                ],
                                                "description": "One Wyckoff split record.",
                                                "required": [
                                                    "letter",
                                                    "xyz",
                                                    "affine"
                                                ],
                                                "properties": {
                                                    "letter": {
                                                        "x-optimade-type": "string",
                                                        "x-optimade-unit": "inapplicable",
                                                        "type": [
                                                            "string"
                                                        ],
                                                        "description": "Subgroup Wyckoff letter assigned by this split branch."
                                                    },
                                                    "xyz": {
                                                        "x-optimade-type": "string",
                                                        "x-optimade-unit": "inapplicable",
                                                        "type": [
                                                            "string"
                                                        ],
                                                        "description": "Coordinate expression for the split branch."
                                                    },
                                                    "affine": {
                                                        "x-optimade-type": "list",
                                                        "x-optimade-unit": "inapplicable",
                                                        "x-optimade-dimensions": {
                                                            "names": [
                                                                "dim_lattice",
                                                                "dim_affine"
                                                            ],
                                                            "sizes": [
                                                                3,
                                                                4
                                                            ]
                                                        },
                                                        "type": [
                                                            "array"
                                                        ],
                                                        "description": "Exact affine representation for the split branch as a 3 by 4 augmented matrix.\nEach row holds the three linear coefficients followed by the translation component, all as exact fraction strings.",
                                                        "items": {
                                                            "x-optimade-type": "list",
                                                            "x-optimade-unit": "inapplicable",
                                                            "x-optimade-dimensions": {
                                                                "names": [
                                                                    "dim_affine"
                                                                ],
                                                                "sizes": [
                                                                    4
                                                                ]
                                                            },
                                                            "type": [
                                                                "array"
                                                            ],
                                                            "description": "One row of the augmented affine matrix.",
                                                            "items": {
                                                                "$id": "https://schemas.anyterial.se/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": [
                                    [
                                        {
                                            "parent": "c",
                                            "splits": [
                                                {
                                                    "letter": "e",
                                                    "xyz": "x,y,z",
                                                    "affine": [
                                                        [
                                                            "1",
                                                            "0",
                                                            "0",
                                                            "0"
                                                        ],
                                                        [
                                                            "0",
                                                            "1",
                                                            "0",
                                                            "0"
                                                        ],
                                                        [
                                                            "0",
                                                            "0",
                                                            "1",
                                                            "0"
                                                        ]
                                                    ]
                                                }
                                            ]
                                        }
                                    ]
                                ]
                            },
                            "criteria": {
                                "x-optimade-type": "list",
                                "x-optimade-unit": "inapplicable",
                                "type": [
                                    "array",
                                    "null"
                                ],
                                "description": "Backward-lift constraint metadata induced by the transform, grouped by explicit parent Wyckoff letter.",
                                "items": {
                                    "x-optimade-type": "dictionary",
                                    "x-optimade-unit": "inapplicable",
                                    "type": [
                                        "object"
                                    ],
                                    "description": "Backward-lift constraints for one parent Wyckoff position.",
                                    "required": [
                                        "parent",
                                        "constraints"
                                    ],
                                    "properties": {
                                        "parent": {
                                            "x-optimade-type": "string",
                                            "x-optimade-unit": "inapplicable",
                                            "type": [
                                                "string"
                                            ],
                                            "description": "Parent Wyckoff letter."
                                        },
                                        "constraints": {
                                            "x-optimade-type": "list",
                                            "x-optimade-unit": "inapplicable",
                                            "type": [
                                                "array"
                                            ],
                                            "description": "Constraint records for this parent Wyckoff letter.",
                                            "items": {
                                                "x-optimade-type": "dictionary",
                                                "x-optimade-unit": "inapplicable",
                                                "type": [
                                                    "object"
                                                ],
                                                "description": "One linear backward-lift constraint record.",
                                                "properties": {
                                                    "roles": {
                                                        "x-optimade-type": "list",
                                                        "x-optimade-unit": "inapplicable",
                                                        "type": [
                                                            "array"
                                                        ],
                                                        "description": "Wyckoff-position role references entering the constraint.",
                                                        "items": {
                                                            "x-optimade-type": "dictionary",
                                                            "x-optimade-unit": "inapplicable",
                                                            "type": [
                                                                "object"
                                                            ],
                                                            "description": "One role reference.",
                                                            "required": [
                                                                "letter",
                                                                "index"
                                                            ],
                                                            "properties": {
                                                                "letter": {
                                                                    "x-optimade-type": "string",
                                                                    "x-optimade-unit": "inapplicable",
                                                                    "type": [
                                                                        "string"
                                                                    ],
                                                                    "description": "Wyckoff letter for the referenced role."
                                                                },
                                                                "index": {
                                                                    "x-optimade-type": "integer",
                                                                    "x-optimade-unit": "inapplicable",
                                                                    "type": [
                                                                        "integer"
                                                                    ],
                                                                    "description": "Zero-based occurrence index for the role."
                                                                }
                                                            }
                                                        }
                                                    },
                                                    "coeffs": {
                                                        "x-optimade-type": "list",
                                                        "x-optimade-unit": "inapplicable",
                                                        "type": [
                                                            "array"
                                                        ],
                                                        "description": "Exact coefficient vectors for the constraint.",
                                                        "items": {
                                                            "x-optimade-type": "list",
                                                            "x-optimade-unit": "inapplicable",
                                                            "type": [
                                                                "array"
                                                            ],
                                                            "description": "Coefficients associated with one role.",
                                                            "items": {
                                                                "x-optimade-type": "list",
                                                                "x-optimade-unit": "inapplicable",
                                                                "x-optimade-dimensions": {
                                                                    "names": [
                                                                        "dim_lattice"
                                                                    ],
                                                                    "sizes": [
                                                                        3
                                                                    ]
                                                                },
                                                                "type": [
                                                                    "array"
                                                                ],
                                                                "description": "One exact coefficient vector.",
                                                                "items": {
                                                                    "$id": "https://schemas.anyterial.se/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"
                                                                }
                                                            }
                                                        }
                                                    },
                                                    "target": {
                                                        "x-optimade-type": "list",
                                                        "x-optimade-unit": "inapplicable",
                                                        "type": [
                                                            "array"
                                                        ],
                                                        "description": "Exact target vector or scalar for the constraint.",
                                                        "items": {
                                                            "$id": "https://schemas.anyterial.se/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",
                                            "2"
                                        ]
                                    ],
                                    "vector": [
                                        "0",
                                        "0",
                                        "0"
                                    ],
                                    "xyz": "x,y,2z",
                                    "det": 2,
                                    "is_orthogonal": false
                                },
                                "index": 2,
                                "subgroup_type": "k",
                                "k_subtype": "enlarged_unit_cell",
                                "wyckoff_splitting": [
                                    {
                                        "parent": "a",
                                        "splits": [
                                            {
                                                "letter": "a",
                                                "xyz": "x,y,z",
                                                "affine": [
                                                    [
                                                        "1",
                                                        "0",
                                                        "0",
                                                        "0"
                                                    ],
                                                    [
                                                        "0",
                                                        "1",
                                                        "0",
                                                        "0"
                                                    ],
                                                    [
                                                        "0",
                                                        "0",
                                                        "1",
                                                        "0"
                                                    ]
                                                ]
                                            }
                                        ]
                                    }
                                ],
                                "criteria": [
                                    {
                                        "parent": "a",
                                        "constraints": [
                                            {
                                                "roles": [
                                                    {
                                                        "letter": "a",
                                                        "index": 0
                                                    }
                                                ],
                                                "coeffs": [
                                                    [
                                                        [
                                                            "1",
                                                            "0",
                                                            "0"
                                                        ]
                                                    ]
                                                ],
                                                "target": [
                                                    "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
                                },
                                "compatible_systems": [
                                    "triclinic",
                                    "monoclinic",
                                    "orthorhombic",
                                    "tetragonal",
                                    "trigonal",
                                    "hexagonal",
                                    "cubic"
                                ],
                                "operation_kind": "affine"
                            }
                        ]
                    },
                    "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
                                }
                            }
                        ]
                    ]
                },
                "affine_normalizer_cosets": {
                    "$id": "https://schemas.anyterial.se/defs/v0.1/properties/transformations/affine_normalizer_cosets",
                    "x-optimade-requirements": {
                        "support": "may",
                        "sortable": false,
                        "query-support": "none",
                        "response-level": "may"
                    },
                    "title": "Affine normalizer cosets",
                    "x-optimade-type": "list",
                    "x-optimade-definition": {
                        "kind": "property",
                        "version": "0.1.0",
                        "format": "1.3",
                        "name": "affine_normalizer_cosets",
                        "label": "affine_normalizer_cosets_transformations"
                    },
                    "x-optimade-unit": "inapplicable",
                    "type": [
                        "array",
                        "null"
                    ],
                    "description": "Runtime list of bounded affine normalizer coset representatives modulo the space group.\n\nEach item is one finite listed representative and follows `/properties/symmetry/basis_transform`.\nThe list is a bounded representative table, not a complete infinite affine normalizer.",
                    "items": {
                        "$id": "https://schemas.anyterial.se/defs/v0.1/properties/symmetry/basis_transform",
                        "title": "Basis transformation",
                        "x-optimade-type": "dictionary",
                        "x-optimade-definition": {
                            "kind": "property",
                            "version": "0.1.0",
                            "format": "1.3",
                            "name": "basis_transform",
                            "label": "basis_transform_symmetry"
                        },
                        "x-optimade-unit": "inapplicable",
                        "type": [
                            "object",
                            "null"
                        ],
                        "description": "One crystallographic transform between coordinate descriptions, settings, cells, or related group embeddings.\n\nThe affine map itself is stored in the embedded `affine_transformation` field.\nThe parent property defines the source and target coordinate systems and the precise role of the transform.\nUseful, for example, for representing setting changes, subgroup embeddings, isomorphic subgroup transforms, normalizer representatives, and same-space-group affine images.\nThis property is not limited to symmetry operations within one fixed setting; the matrix may be non-orthogonal or have determinant different from one when the transform changes cell or basis.\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 transform, using exact rational matrix and vector entries.\n      The coordinate convention and source/target interpretation are supplied by the parent property.\n\n    - **index**: OPTIONAL; Integer or null.\n      Index metadata whose interpretation is defined by the parent property.\n      Common uses include the subgroup index for subgroup embeddings, the cell index for isomorphic subgroup transforms, or an ordinal representative index in a finite transform table.\n\n    - **subgroup\\_type**: OPTIONAL; String.\n      International Tables subgroup-type label when the transform describes a maximal subgroup embedding.\n      The value MUST be `t` for a translationengleiche subgroup or `k` for a klassengleiche subgroup.\n      It MUST be omitted when the transform is not a maximal subgroup embedding.\n\n    - **k\\_subtype**: OPTIONAL; String or null.\n      Klassengleiche subtype when the transform describes a klassengleiche subgroup relation.\n      The value MUST be `loss_of_centering_translation` or `enlarged_unit_cell` for klassengleiche relations and null or omitted otherwise.\n\n    - **compatible\\_systems**: OPTIONAL; List of strings.\n      Crystal metric systems for which the transform is compatible.\n      This is used for bounded affine normalizer representatives.\n\n    - **operation\\_kind**: OPTIONAL; String.\n      Categorical label for normalizer-type representatives.\n      The value MUST be `euclidean` for Euclidean normalizer operations, `orthogonal_affine` for the signed-permutation affine normalizer subset, or `affine` for the bounded unimodular affine normalizer table.\n      It MUST be omitted when the transform is a setting transform, subgroup embedding, or other transform for which no normalizer operation class applies.\n\n    - **wyckoff\\_splitting**: OPTIONAL; List.\n      Wyckoff-position splitting metadata induced by the transform when available.\n      The list is grouped by explicit parent Wyckoff letter.\n\n    - **criteria**: OPTIONAL; List.\n      Backward-lift constraint metadata induced by the transform when available.\n      The list is grouped by explicit parent Wyckoff letter.",
                        "properties": {
                            "affine_transformation": {
                                "$id": "https://schemas.anyterial.se/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 affine transformation is a geometric transformation preserving points, straight lines, and parallelism (collinearity), but may not preserve Euclidean distances and angles.\nThe transformation is represented by a 3 by 3 matrix and a 3-vector, both serialized with exact string entries.\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\n    - **det**: OPTIONAL; Integer.\n      Determinant of `matrix` when the generator emits it.\n\n    - **is\\_orthogonal**: OPTIONAL; Boolean.\n      Whether `matrix` is orthogonal in the exact representation used by the generator.",
                                "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.anyterial.se/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.anyterial.se/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.anyterial.se/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."
                                    },
                                    "is_orthogonal": {
                                        "x-optimade-type": "boolean",
                                        "x-optimade-unit": "inapplicable",
                                        "type": [
                                            "boolean",
                                            "null"
                                        ],
                                        "description": "Whether the matrix part is orthogonal."
                                    }
                                },
                                "examples": [
                                    {
                                        "matrix": [
                                            [
                                                "-1",
                                                "0",
                                                "0"
                                            ],
                                            [
                                                "0",
                                                "-1",
                                                "0"
                                            ],
                                            [
                                                "0",
                                                "0",
                                                "1"
                                            ]
                                        ],
                                        "vector": [
                                            "0",
                                            "0",
                                            "0"
                                        ],
                                        "xyz": "-x,-y,z",
                                        "det": 1,
                                        "is_orthogonal": true
                                    }
                                ]
                            },
                            "index": {
                                "x-optimade-type": "integer",
                                "x-optimade-unit": "inapplicable",
                                "type": [
                                    "integer",
                                    "null"
                                ],
                                "description": "Index metadata whose interpretation is supplied by the parent property."
                            },
                            "subgroup_type": {
                                "x-optimade-type": "string",
                                "x-optimade-unit": "inapplicable",
                                "type": [
                                    "string"
                                ],
                                "description": "International Tables subgroup-type label when applicable.",
                                "enum": [
                                    "t",
                                    "k"
                                ]
                            },
                            "k_subtype": {
                                "x-optimade-type": "string",
                                "x-optimade-unit": "inapplicable",
                                "type": [
                                    "string",
                                    "null"
                                ],
                                "description": "Klassengleiche subtype when applicable."
                            },
                            "compatible_systems": {
                                "x-optimade-type": "list",
                                "x-optimade-unit": "inapplicable",
                                "type": [
                                    "array",
                                    "null"
                                ],
                                "description": "Crystal metric systems compatible with the transform.",
                                "items": {
                                    "x-optimade-type": "string",
                                    "x-optimade-unit": "inapplicable",
                                    "type": [
                                        "string"
                                    ],
                                    "description": "One compatible crystal-system label.",
                                    "enum": [
                                        "triclinic",
                                        "monoclinic",
                                        "orthorhombic",
                                        "tetragonal",
                                        "trigonal",
                                        "hexagonal",
                                        "cubic"
                                    ]
                                }
                            },
                            "operation_kind": {
                                "x-optimade-type": "string",
                                "x-optimade-unit": "inapplicable",
                                "type": [
                                    "string"
                                ],
                                "description": "Categorical label for normalizer-type representatives.",
                                "enum": [
                                    "euclidean",
                                    "orthogonal_affine",
                                    "affine"
                                ]
                            },
                            "wyckoff_splitting": {
                                "$id": "https://schemas.anyterial.se/defs/v0.1/properties/transformations/wyckoff_splitting",
                                "title": "Wyckoff splitting",
                                "x-optimade-type": "list",
                                "x-optimade-definition": {
                                    "kind": "property",
                                    "version": "0.1.0",
                                    "format": "1.3",
                                    "name": "wyckoff_splitting",
                                    "label": "wyckoff_splitting_transformations"
                                },
                                "x-optimade-unit": "inapplicable",
                                "type": [
                                    "array",
                                    "null"
                                ],
                                "description": "Wyckoff-position splitting data associated with a subgroup or same-space-group transform.\n\nEach list item gives the split of one parent Wyckoff position.\nThe parent Wyckoff letter is stored in the `parent` field rather than as a JSON dictionary key.\n\n**Requirements/Conventions**:\n\n- It MUST be a list of dictionaries.\n- Each dictionary MUST contain `parent`, the Wyckoff letter in the parent setting.\n- Each dictionary MUST contain `splits`, an ordered list of subgroup Wyckoff-position assignments or coordinate expressions emitted by the generator.",
                                "items": {
                                    "x-optimade-type": "dictionary",
                                    "x-optimade-unit": "inapplicable",
                                    "type": [
                                        "object"
                                    ],
                                    "description": "Splitting data for one parent Wyckoff position.",
                                    "required": [
                                        "parent",
                                        "splits"
                                    ],
                                    "properties": {
                                        "parent": {
                                            "x-optimade-type": "string",
                                            "x-optimade-unit": "inapplicable",
                                            "type": [
                                                "string"
                                            ],
                                            "description": "Parent Wyckoff letter."
                                        },
                                        "splits": {
                                            "x-optimade-type": "list",
                                            "x-optimade-unit": "inapplicable",
                                            "type": [
                                                "array"
                                            ],
                                            "description": "Ordered split records for this parent Wyckoff letter.",
                                            "items": {
                                                "x-optimade-type": "dictionary",
                                                "x-optimade-unit": "inapplicable",
                                                "type": [
                                                    "object"
                                                ],
                                                "description": "One Wyckoff split record.",
                                                "required": [
                                                    "letter",
                                                    "xyz",
                                                    "affine"
                                                ],
                                                "properties": {
                                                    "letter": {
                                                        "x-optimade-type": "string",
                                                        "x-optimade-unit": "inapplicable",
                                                        "type": [
                                                            "string"
                                                        ],
                                                        "description": "Subgroup Wyckoff letter assigned by this split branch."
                                                    },
                                                    "xyz": {
                                                        "x-optimade-type": "string",
                                                        "x-optimade-unit": "inapplicable",
                                                        "type": [
                                                            "string"
                                                        ],
                                                        "description": "Coordinate expression for the split branch."
                                                    },
                                                    "affine": {
                                                        "x-optimade-type": "list",
                                                        "x-optimade-unit": "inapplicable",
                                                        "x-optimade-dimensions": {
                                                            "names": [
                                                                "dim_lattice",
                                                                "dim_affine"
                                                            ],
                                                            "sizes": [
                                                                3,
                                                                4
                                                            ]
                                                        },
                                                        "type": [
                                                            "array"
                                                        ],
                                                        "description": "Exact affine representation for the split branch as a 3 by 4 augmented matrix.\nEach row holds the three linear coefficients followed by the translation component, all as exact fraction strings.",
                                                        "items": {
                                                            "x-optimade-type": "list",
                                                            "x-optimade-unit": "inapplicable",
                                                            "x-optimade-dimensions": {
                                                                "names": [
                                                                    "dim_affine"
                                                                ],
                                                                "sizes": [
                                                                    4
                                                                ]
                                                            },
                                                            "type": [
                                                                "array"
                                                            ],
                                                            "description": "One row of the augmented affine matrix.",
                                                            "items": {
                                                                "$id": "https://schemas.anyterial.se/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": [
                                    [
                                        {
                                            "parent": "c",
                                            "splits": [
                                                {
                                                    "letter": "e",
                                                    "xyz": "x,y,z",
                                                    "affine": [
                                                        [
                                                            "1",
                                                            "0",
                                                            "0",
                                                            "0"
                                                        ],
                                                        [
                                                            "0",
                                                            "1",
                                                            "0",
                                                            "0"
                                                        ],
                                                        [
                                                            "0",
                                                            "0",
                                                            "1",
                                                            "0"
                                                        ]
                                                    ]
                                                }
                                            ]
                                        }
                                    ]
                                ]
                            },
                            "criteria": {
                                "x-optimade-type": "list",
                                "x-optimade-unit": "inapplicable",
                                "type": [
                                    "array",
                                    "null"
                                ],
                                "description": "Backward-lift constraint metadata induced by the transform, grouped by explicit parent Wyckoff letter.",
                                "items": {
                                    "x-optimade-type": "dictionary",
                                    "x-optimade-unit": "inapplicable",
                                    "type": [
                                        "object"
                                    ],
                                    "description": "Backward-lift constraints for one parent Wyckoff position.",
                                    "required": [
                                        "parent",
                                        "constraints"
                                    ],
                                    "properties": {
                                        "parent": {
                                            "x-optimade-type": "string",
                                            "x-optimade-unit": "inapplicable",
                                            "type": [
                                                "string"
                                            ],
                                            "description": "Parent Wyckoff letter."
                                        },
                                        "constraints": {
                                            "x-optimade-type": "list",
                                            "x-optimade-unit": "inapplicable",
                                            "type": [
                                                "array"
                                            ],
                                            "description": "Constraint records for this parent Wyckoff letter.",
                                            "items": {
                                                "x-optimade-type": "dictionary",
                                                "x-optimade-unit": "inapplicable",
                                                "type": [
                                                    "object"
                                                ],
                                                "description": "One linear backward-lift constraint record.",
                                                "properties": {
                                                    "roles": {
                                                        "x-optimade-type": "list",
                                                        "x-optimade-unit": "inapplicable",
                                                        "type": [
                                                            "array"
                                                        ],
                                                        "description": "Wyckoff-position role references entering the constraint.",
                                                        "items": {
                                                            "x-optimade-type": "dictionary",
                                                            "x-optimade-unit": "inapplicable",
                                                            "type": [
                                                                "object"
                                                            ],
                                                            "description": "One role reference.",
                                                            "required": [
                                                                "letter",
                                                                "index"
                                                            ],
                                                            "properties": {
                                                                "letter": {
                                                                    "x-optimade-type": "string",
                                                                    "x-optimade-unit": "inapplicable",
                                                                    "type": [
                                                                        "string"
                                                                    ],
                                                                    "description": "Wyckoff letter for the referenced role."
                                                                },
                                                                "index": {
                                                                    "x-optimade-type": "integer",
                                                                    "x-optimade-unit": "inapplicable",
                                                                    "type": [
                                                                        "integer"
                                                                    ],
                                                                    "description": "Zero-based occurrence index for the role."
                                                                }
                                                            }
                                                        }
                                                    },
                                                    "coeffs": {
                                                        "x-optimade-type": "list",
                                                        "x-optimade-unit": "inapplicable",
                                                        "type": [
                                                            "array"
                                                        ],
                                                        "description": "Exact coefficient vectors for the constraint.",
                                                        "items": {
                                                            "x-optimade-type": "list",
                                                            "x-optimade-unit": "inapplicable",
                                                            "type": [
                                                                "array"
                                                            ],
                                                            "description": "Coefficients associated with one role.",
                                                            "items": {
                                                                "x-optimade-type": "list",
                                                                "x-optimade-unit": "inapplicable",
                                                                "x-optimade-dimensions": {
                                                                    "names": [
                                                                        "dim_lattice"
                                                                    ],
                                                                    "sizes": [
                                                                        3
                                                                    ]
                                                                },
                                                                "type": [
                                                                    "array"
                                                                ],
                                                                "description": "One exact coefficient vector.",
                                                                "items": {
                                                                    "$id": "https://schemas.anyterial.se/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"
                                                                }
                                                            }
                                                        }
                                                    },
                                                    "target": {
                                                        "x-optimade-type": "list",
                                                        "x-optimade-unit": "inapplicable",
                                                        "type": [
                                                            "array"
                                                        ],
                                                        "description": "Exact target vector or scalar for the constraint.",
                                                        "items": {
                                                            "$id": "https://schemas.anyterial.se/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",
                                            "2"
                                        ]
                                    ],
                                    "vector": [
                                        "0",
                                        "0",
                                        "0"
                                    ],
                                    "xyz": "x,y,2z",
                                    "det": 2,
                                    "is_orthogonal": false
                                },
                                "index": 2,
                                "subgroup_type": "k",
                                "k_subtype": "enlarged_unit_cell",
                                "wyckoff_splitting": [
                                    {
                                        "parent": "a",
                                        "splits": [
                                            {
                                                "letter": "a",
                                                "xyz": "x,y,z",
                                                "affine": [
                                                    [
                                                        "1",
                                                        "0",
                                                        "0",
                                                        "0"
                                                    ],
                                                    [
                                                        "0",
                                                        "1",
                                                        "0",
                                                        "0"
                                                    ],
                                                    [
                                                        "0",
                                                        "0",
                                                        "1",
                                                        "0"
                                                    ]
                                                ]
                                            }
                                        ]
                                    }
                                ],
                                "criteria": [
                                    {
                                        "parent": "a",
                                        "constraints": [
                                            {
                                                "roles": [
                                                    {
                                                        "letter": "a",
                                                        "index": 0
                                                    }
                                                ],
                                                "coeffs": [
                                                    [
                                                        [
                                                            "1",
                                                            "0",
                                                            "0"
                                                        ]
                                                    ]
                                                ],
                                                "target": [
                                                    "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
                                },
                                "compatible_systems": [
                                    "triclinic",
                                    "monoclinic",
                                    "orthorhombic",
                                    "tetragonal",
                                    "trigonal",
                                    "hexagonal",
                                    "cubic"
                                ],
                                "operation_kind": "affine"
                            }
                        ]
                    },
                    "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
                                }
                            }
                        ]
                    ]
                },
                "maximal_subgroup_relations": {
                    "$id": "https://schemas.anyterial.se/defs/v0.1/properties/transformations/maximal_subgroup_relations",
                    "x-optimade-requirements": {
                        "support": "may",
                        "sortable": false,
                        "query-support": "none",
                        "response-level": "may"
                    },
                    "title": "Maximal subgroup relations",
                    "x-optimade-type": "list",
                    "x-optimade-definition": {
                        "kind": "property",
                        "version": "0.1.0",
                        "format": "1.3",
                        "name": "maximal_subgroup_relations",
                        "label": "maximal_subgroup_relations_transformations"
                    },
                    "x-optimade-unit": "inapplicable",
                    "type": [
                        "array",
                        "null"
                    ],
                    "description": "Maximal non-isomorphic subgroup relations for International Tables space-group types.\n\nEach list item describes all known maximal non-isomorphic subgroup relations for one supergroup IT number.\nThe supergroup IT number is stored in `supergroup_it_number` rather than as a JSON dictionary key.\n\n**Requirements/Conventions**:\n\n- It MUST be a list of dictionaries.\n- Each dictionary MUST contain `supergroup_it_number`, an International Tables space-group number.\n- Each dictionary MUST contain `relations`, a list of subgroup-relation records for that supergroup.\n- Each relation record MUST include the subgroup IT number, subgroup index, subgroup type, and optional klassengleiche subtype.",
                    "items": {
                        "x-optimade-type": "dictionary",
                        "x-optimade-unit": "inapplicable",
                        "type": [
                            "object"
                        ],
                        "description": "Maximal subgroup relations for one supergroup IT number.",
                        "required": [
                            "supergroup_it_number",
                            "relations"
                        ],
                        "properties": {
                            "supergroup_it_number": {
                                "x-optimade-type": "integer",
                                "x-optimade-unit": "inapplicable",
                                "type": [
                                    "integer"
                                ],
                                "description": "International Tables number of the supergroup."
                            },
                            "relations": {
                                "x-optimade-type": "list",
                                "x-optimade-unit": "inapplicable",
                                "type": [
                                    "array"
                                ],
                                "description": "Maximal subgroup relation records for this supergroup.",
                                "items": {
                                    "x-optimade-type": "dictionary",
                                    "x-optimade-unit": "inapplicable",
                                    "type": [
                                        "object"
                                    ],
                                    "description": "One maximal subgroup relation.",
                                    "required": [
                                        "subgroup_it_number",
                                        "index",
                                        "subgroup_type"
                                    ],
                                    "properties": {
                                        "subgroup_it_number": {
                                            "x-optimade-type": "integer",
                                            "x-optimade-unit": "inapplicable",
                                            "type": [
                                                "integer"
                                            ],
                                            "description": "International Tables number of the subgroup."
                                        },
                                        "index": {
                                            "x-optimade-type": "integer",
                                            "x-optimade-unit": "inapplicable",
                                            "type": [
                                                "integer"
                                            ],
                                            "description": "Index of the subgroup in the supergroup."
                                        },
                                        "subgroup_type": {
                                            "x-optimade-type": "string",
                                            "x-optimade-unit": "inapplicable",
                                            "type": [
                                                "string"
                                            ],
                                            "description": "ITA maximal subgroup class, such as `t` or `k`."
                                        },
                                        "k_subtype": {
                                            "x-optimade-type": "string",
                                            "x-optimade-unit": "inapplicable",
                                            "type": [
                                                "string",
                                                "null"
                                            ],
                                            "description": "Further classification for klassengleiche subgroup relations, when applicable."
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "examples": [
                        [
                            {
                                "supergroup_it_number": 5,
                                "relations": [
                                    {
                                        "subgroup_it_number": 1,
                                        "index": 2,
                                        "subgroup_type": "t"
                                    },
                                    {
                                        "subgroup_it_number": 3,
                                        "index": 2,
                                        "subgroup_type": "k",
                                        "k_subtype": "loss_of_centering_translation"
                                    }
                                ]
                            }
                        ]
                    ]
                },
                "affine_images": {
                    "$id": "https://schemas.anyterial.se/defs/v0.1/properties/transformations/affine_images",
                    "x-optimade-requirements": {
                        "support": "may",
                        "sortable": false,
                        "query-support": "none",
                        "response-level": "may"
                    },
                    "title": "Affine images",
                    "x-optimade-type": "list",
                    "x-optimade-definition": {
                        "kind": "property",
                        "version": "0.1.0",
                        "format": "1.3",
                        "name": "affine_images",
                        "label": "affine_images_transformations"
                    },
                    "x-optimade-unit": "inapplicable",
                    "type": [
                        "array",
                        "null"
                    ],
                    "description": "Same-space-group affine images for a standard setting.\n\nThe list combines Euclidean normalizer operations and isomorphic subgroup transforms to enumerate alternative affine images of the same space group used by runtime search code.\nMatrix/vector transform fields follow `/properties/symmetry/basis_transform`.",
                    "items": {
                        "$id": "https://schemas.anyterial.se/defs/v0.1/properties/symmetry/basis_transform",
                        "title": "Basis transformation",
                        "x-optimade-type": "dictionary",
                        "x-optimade-definition": {
                            "kind": "property",
                            "version": "0.1.0",
                            "format": "1.3",
                            "name": "basis_transform",
                            "label": "basis_transform_symmetry"
                        },
                        "x-optimade-unit": "inapplicable",
                        "type": [
                            "object",
                            "null"
                        ],
                        "description": "One crystallographic transform between coordinate descriptions, settings, cells, or related group embeddings.\n\nThe affine map itself is stored in the embedded `affine_transformation` field.\nThe parent property defines the source and target coordinate systems and the precise role of the transform.\nUseful, for example, for representing setting changes, subgroup embeddings, isomorphic subgroup transforms, normalizer representatives, and same-space-group affine images.\nThis property is not limited to symmetry operations within one fixed setting; the matrix may be non-orthogonal or have determinant different from one when the transform changes cell or basis.\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 transform, using exact rational matrix and vector entries.\n      The coordinate convention and source/target interpretation are supplied by the parent property.\n\n    - **index**: OPTIONAL; Integer or null.\n      Index metadata whose interpretation is defined by the parent property.\n      Common uses include the subgroup index for subgroup embeddings, the cell index for isomorphic subgroup transforms, or an ordinal representative index in a finite transform table.\n\n    - **subgroup\\_type**: OPTIONAL; String.\n      International Tables subgroup-type label when the transform describes a maximal subgroup embedding.\n      The value MUST be `t` for a translationengleiche subgroup or `k` for a klassengleiche subgroup.\n      It MUST be omitted when the transform is not a maximal subgroup embedding.\n\n    - **k\\_subtype**: OPTIONAL; String or null.\n      Klassengleiche subtype when the transform describes a klassengleiche subgroup relation.\n      The value MUST be `loss_of_centering_translation` or `enlarged_unit_cell` for klassengleiche relations and null or omitted otherwise.\n\n    - **compatible\\_systems**: OPTIONAL; List of strings.\n      Crystal metric systems for which the transform is compatible.\n      This is used for bounded affine normalizer representatives.\n\n    - **operation\\_kind**: OPTIONAL; String.\n      Categorical label for normalizer-type representatives.\n      The value MUST be `euclidean` for Euclidean normalizer operations, `orthogonal_affine` for the signed-permutation affine normalizer subset, or `affine` for the bounded unimodular affine normalizer table.\n      It MUST be omitted when the transform is a setting transform, subgroup embedding, or other transform for which no normalizer operation class applies.\n\n    - **wyckoff\\_splitting**: OPTIONAL; List.\n      Wyckoff-position splitting metadata induced by the transform when available.\n      The list is grouped by explicit parent Wyckoff letter.\n\n    - **criteria**: OPTIONAL; List.\n      Backward-lift constraint metadata induced by the transform when available.\n      The list is grouped by explicit parent Wyckoff letter.",
                        "properties": {
                            "affine_transformation": {
                                "$id": "https://schemas.anyterial.se/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 affine transformation is a geometric transformation preserving points, straight lines, and parallelism (collinearity), but may not preserve Euclidean distances and angles.\nThe transformation is represented by a 3 by 3 matrix and a 3-vector, both serialized with exact string entries.\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\n    - **det**: OPTIONAL; Integer.\n      Determinant of `matrix` when the generator emits it.\n\n    - **is\\_orthogonal**: OPTIONAL; Boolean.\n      Whether `matrix` is orthogonal in the exact representation used by the generator.",
                                "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.anyterial.se/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.anyterial.se/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.anyterial.se/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."
                                    },
                                    "is_orthogonal": {
                                        "x-optimade-type": "boolean",
                                        "x-optimade-unit": "inapplicable",
                                        "type": [
                                            "boolean",
                                            "null"
                                        ],
                                        "description": "Whether the matrix part is orthogonal."
                                    }
                                },
                                "examples": [
                                    {
                                        "matrix": [
                                            [
                                                "-1",
                                                "0",
                                                "0"
                                            ],
                                            [
                                                "0",
                                                "-1",
                                                "0"
                                            ],
                                            [
                                                "0",
                                                "0",
                                                "1"
                                            ]
                                        ],
                                        "vector": [
                                            "0",
                                            "0",
                                            "0"
                                        ],
                                        "xyz": "-x,-y,z",
                                        "det": 1,
                                        "is_orthogonal": true
                                    }
                                ]
                            },
                            "index": {
                                "x-optimade-type": "integer",
                                "x-optimade-unit": "inapplicable",
                                "type": [
                                    "integer",
                                    "null"
                                ],
                                "description": "Index metadata whose interpretation is supplied by the parent property."
                            },
                            "subgroup_type": {
                                "x-optimade-type": "string",
                                "x-optimade-unit": "inapplicable",
                                "type": [
                                    "string"
                                ],
                                "description": "International Tables subgroup-type label when applicable.",
                                "enum": [
                                    "t",
                                    "k"
                                ]
                            },
                            "k_subtype": {
                                "x-optimade-type": "string",
                                "x-optimade-unit": "inapplicable",
                                "type": [
                                    "string",
                                    "null"
                                ],
                                "description": "Klassengleiche subtype when applicable."
                            },
                            "compatible_systems": {
                                "x-optimade-type": "list",
                                "x-optimade-unit": "inapplicable",
                                "type": [
                                    "array",
                                    "null"
                                ],
                                "description": "Crystal metric systems compatible with the transform.",
                                "items": {
                                    "x-optimade-type": "string",
                                    "x-optimade-unit": "inapplicable",
                                    "type": [
                                        "string"
                                    ],
                                    "description": "One compatible crystal-system label.",
                                    "enum": [
                                        "triclinic",
                                        "monoclinic",
                                        "orthorhombic",
                                        "tetragonal",
                                        "trigonal",
                                        "hexagonal",
                                        "cubic"
                                    ]
                                }
                            },
                            "operation_kind": {
                                "x-optimade-type": "string",
                                "x-optimade-unit": "inapplicable",
                                "type": [
                                    "string"
                                ],
                                "description": "Categorical label for normalizer-type representatives.",
                                "enum": [
                                    "euclidean",
                                    "orthogonal_affine",
                                    "affine"
                                ]
                            },
                            "wyckoff_splitting": {
                                "$id": "https://schemas.anyterial.se/defs/v0.1/properties/transformations/wyckoff_splitting",
                                "title": "Wyckoff splitting",
                                "x-optimade-type": "list",
                                "x-optimade-definition": {
                                    "kind": "property",
                                    "version": "0.1.0",
                                    "format": "1.3",
                                    "name": "wyckoff_splitting",
                                    "label": "wyckoff_splitting_transformations"
                                },
                                "x-optimade-unit": "inapplicable",
                                "type": [
                                    "array",
                                    "null"
                                ],
                                "description": "Wyckoff-position splitting data associated with a subgroup or same-space-group transform.\n\nEach list item gives the split of one parent Wyckoff position.\nThe parent Wyckoff letter is stored in the `parent` field rather than as a JSON dictionary key.\n\n**Requirements/Conventions**:\n\n- It MUST be a list of dictionaries.\n- Each dictionary MUST contain `parent`, the Wyckoff letter in the parent setting.\n- Each dictionary MUST contain `splits`, an ordered list of subgroup Wyckoff-position assignments or coordinate expressions emitted by the generator.",
                                "items": {
                                    "x-optimade-type": "dictionary",
                                    "x-optimade-unit": "inapplicable",
                                    "type": [
                                        "object"
                                    ],
                                    "description": "Splitting data for one parent Wyckoff position.",
                                    "required": [
                                        "parent",
                                        "splits"
                                    ],
                                    "properties": {
                                        "parent": {
                                            "x-optimade-type": "string",
                                            "x-optimade-unit": "inapplicable",
                                            "type": [
                                                "string"
                                            ],
                                            "description": "Parent Wyckoff letter."
                                        },
                                        "splits": {
                                            "x-optimade-type": "list",
                                            "x-optimade-unit": "inapplicable",
                                            "type": [
                                                "array"
                                            ],
                                            "description": "Ordered split records for this parent Wyckoff letter.",
                                            "items": {
                                                "x-optimade-type": "dictionary",
                                                "x-optimade-unit": "inapplicable",
                                                "type": [
                                                    "object"
                                                ],
                                                "description": "One Wyckoff split record.",
                                                "required": [
                                                    "letter",
                                                    "xyz",
                                                    "affine"
                                                ],
                                                "properties": {
                                                    "letter": {
                                                        "x-optimade-type": "string",
                                                        "x-optimade-unit": "inapplicable",
                                                        "type": [
                                                            "string"
                                                        ],
                                                        "description": "Subgroup Wyckoff letter assigned by this split branch."
                                                    },
                                                    "xyz": {
                                                        "x-optimade-type": "string",
                                                        "x-optimade-unit": "inapplicable",
                                                        "type": [
                                                            "string"
                                                        ],
                                                        "description": "Coordinate expression for the split branch."
                                                    },
                                                    "affine": {
                                                        "x-optimade-type": "list",
                                                        "x-optimade-unit": "inapplicable",
                                                        "x-optimade-dimensions": {
                                                            "names": [
                                                                "dim_lattice",
                                                                "dim_affine"
                                                            ],
                                                            "sizes": [
                                                                3,
                                                                4
                                                            ]
                                                        },
                                                        "type": [
                                                            "array"
                                                        ],
                                                        "description": "Exact affine representation for the split branch as a 3 by 4 augmented matrix.\nEach row holds the three linear coefficients followed by the translation component, all as exact fraction strings.",
                                                        "items": {
                                                            "x-optimade-type": "list",
                                                            "x-optimade-unit": "inapplicable",
                                                            "x-optimade-dimensions": {
                                                                "names": [
                                                                    "dim_affine"
                                                                ],
                                                                "sizes": [
                                                                    4
                                                                ]
                                                            },
                                                            "type": [
                                                                "array"
                                                            ],
                                                            "description": "One row of the augmented affine matrix.",
                                                            "items": {
                                                                "$id": "https://schemas.anyterial.se/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": [
                                    [
                                        {
                                            "parent": "c",
                                            "splits": [
                                                {
                                                    "letter": "e",
                                                    "xyz": "x,y,z",
                                                    "affine": [
                                                        [
                                                            "1",
                                                            "0",
                                                            "0",
                                                            "0"
                                                        ],
                                                        [
                                                            "0",
                                                            "1",
                                                            "0",
                                                            "0"
                                                        ],
                                                        [
                                                            "0",
                                                            "0",
                                                            "1",
                                                            "0"
                                                        ]
                                                    ]
                                                }
                                            ]
                                        }
                                    ]
                                ]
                            },
                            "criteria": {
                                "x-optimade-type": "list",
                                "x-optimade-unit": "inapplicable",
                                "type": [
                                    "array",
                                    "null"
                                ],
                                "description": "Backward-lift constraint metadata induced by the transform, grouped by explicit parent Wyckoff letter.",
                                "items": {
                                    "x-optimade-type": "dictionary",
                                    "x-optimade-unit": "inapplicable",
                                    "type": [
                                        "object"
                                    ],
                                    "description": "Backward-lift constraints for one parent Wyckoff position.",
                                    "required": [
                                        "parent",
                                        "constraints"
                                    ],
                                    "properties": {
                                        "parent": {
                                            "x-optimade-type": "string",
                                            "x-optimade-unit": "inapplicable",
                                            "type": [
                                                "string"
                                            ],
                                            "description": "Parent Wyckoff letter."
                                        },
                                        "constraints": {
                                            "x-optimade-type": "list",
                                            "x-optimade-unit": "inapplicable",
                                            "type": [
                                                "array"
                                            ],
                                            "description": "Constraint records for this parent Wyckoff letter.",
                                            "items": {
                                                "x-optimade-type": "dictionary",
                                                "x-optimade-unit": "inapplicable",
                                                "type": [
                                                    "object"
                                                ],
                                                "description": "One linear backward-lift constraint record.",
                                                "properties": {
                                                    "roles": {
                                                        "x-optimade-type": "list",
                                                        "x-optimade-unit": "inapplicable",
                                                        "type": [
                                                            "array"
                                                        ],
                                                        "description": "Wyckoff-position role references entering the constraint.",
                                                        "items": {
                                                            "x-optimade-type": "dictionary",
                                                            "x-optimade-unit": "inapplicable",
                                                            "type": [
                                                                "object"
                                                            ],
                                                            "description": "One role reference.",
                                                            "required": [
                                                                "letter",
                                                                "index"
                                                            ],
                                                            "properties": {
                                                                "letter": {
                                                                    "x-optimade-type": "string",
                                                                    "x-optimade-unit": "inapplicable",
                                                                    "type": [
                                                                        "string"
                                                                    ],
                                                                    "description": "Wyckoff letter for the referenced role."
                                                                },
                                                                "index": {
                                                                    "x-optimade-type": "integer",
                                                                    "x-optimade-unit": "inapplicable",
                                                                    "type": [
                                                                        "integer"
                                                                    ],
                                                                    "description": "Zero-based occurrence index for the role."
                                                                }
                                                            }
                                                        }
                                                    },
                                                    "coeffs": {
                                                        "x-optimade-type": "list",
                                                        "x-optimade-unit": "inapplicable",
                                                        "type": [
                                                            "array"
                                                        ],
                                                        "description": "Exact coefficient vectors for the constraint.",
                                                        "items": {
                                                            "x-optimade-type": "list",
                                                            "x-optimade-unit": "inapplicable",
                                                            "type": [
                                                                "array"
                                                            ],
                                                            "description": "Coefficients associated with one role.",
                                                            "items": {
                                                                "x-optimade-type": "list",
                                                                "x-optimade-unit": "inapplicable",
                                                                "x-optimade-dimensions": {
                                                                    "names": [
                                                                        "dim_lattice"
                                                                    ],
                                                                    "sizes": [
                                                                        3
                                                                    ]
                                                                },
                                                                "type": [
                                                                    "array"
                                                                ],
                                                                "description": "One exact coefficient vector.",
                                                                "items": {
                                                                    "$id": "https://schemas.anyterial.se/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"
                                                                }
                                                            }
                                                        }
                                                    },
                                                    "target": {
                                                        "x-optimade-type": "list",
                                                        "x-optimade-unit": "inapplicable",
                                                        "type": [
                                                            "array"
                                                        ],
                                                        "description": "Exact target vector or scalar for the constraint.",
                                                        "items": {
                                                            "$id": "https://schemas.anyterial.se/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",
                                            "2"
                                        ]
                                    ],
                                    "vector": [
                                        "0",
                                        "0",
                                        "0"
                                    ],
                                    "xyz": "x,y,2z",
                                    "det": 2,
                                    "is_orthogonal": false
                                },
                                "index": 2,
                                "subgroup_type": "k",
                                "k_subtype": "enlarged_unit_cell",
                                "wyckoff_splitting": [
                                    {
                                        "parent": "a",
                                        "splits": [
                                            {
                                                "letter": "a",
                                                "xyz": "x,y,z",
                                                "affine": [
                                                    [
                                                        "1",
                                                        "0",
                                                        "0",
                                                        "0"
                                                    ],
                                                    [
                                                        "0",
                                                        "1",
                                                        "0",
                                                        "0"
                                                    ],
                                                    [
                                                        "0",
                                                        "0",
                                                        "1",
                                                        "0"
                                                    ]
                                                ]
                                            }
                                        ]
                                    }
                                ],
                                "criteria": [
                                    {
                                        "parent": "a",
                                        "constraints": [
                                            {
                                                "roles": [
                                                    {
                                                        "letter": "a",
                                                        "index": 0
                                                    }
                                                ],
                                                "coeffs": [
                                                    [
                                                        [
                                                            "1",
                                                            "0",
                                                            "0"
                                                        ]
                                                    ]
                                                ],
                                                "target": [
                                                    "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
                                },
                                "compatible_systems": [
                                    "triclinic",
                                    "monoclinic",
                                    "orthorhombic",
                                    "tetragonal",
                                    "trigonal",
                                    "hexagonal",
                                    "cubic"
                                ],
                                "operation_kind": "affine"
                            }
                        ]
                    },
                    "examples": [
                        [
                            {
                                "matrix": [
                                    [
                                        "1",
                                        "0",
                                        "0"
                                    ],
                                    [
                                        "0",
                                        "1",
                                        "0"
                                    ],
                                    [
                                        "0",
                                        "0",
                                        "1"
                                    ]
                                ],
                                "vector": [
                                    "0",
                                    "0",
                                    "0"
                                ]
                            }
                        ]
                    ]
                },
                "index": {
                    "$id": "https://schemas.anyterial.se/defs/v0.1/properties/transformations/index",
                    "x-optimade-requirements": {
                        "support": "may",
                        "sortable": false,
                        "query-support": "none",
                        "response-level": "may"
                    },
                    "title": "Subgroup or transform index",
                    "x-optimade-type": "integer",
                    "x-optimade-definition": {
                        "kind": "property",
                        "version": "0.1.0",
                        "format": "1.3",
                        "name": "index",
                        "label": "index_transformations"
                    },
                    "type": [
                        "integer",
                        "null"
                    ],
                    "description": "Subgroup or transform index.\n\nFor subgroup transforms it is the crystallographic subgroup index `[G:H]`, equal to the determinant factor of the basis transformation when applicable.",
                    "x-optimade-unit": "inapplicable",
                    "examples": [
                        2,
                        4
                    ]
                },
                "subgroup_type": {
                    "$id": "https://schemas.anyterial.se/defs/v0.1/properties/transformations/subgroup_type",
                    "x-optimade-requirements": {
                        "support": "may",
                        "sortable": false,
                        "query-support": "none",
                        "response-level": "may"
                    },
                    "title": "Maximal subgroup type",
                    "x-optimade-type": "string",
                    "x-optimade-definition": {
                        "kind": "property",
                        "version": "0.1.0",
                        "format": "1.3",
                        "name": "subgroup_type",
                        "label": "subgroup_type_transformations"
                    },
                    "type": [
                        "string"
                    ],
                    "description": "International Tables maximal subgroup class.\n\nThe value is `t` for a translationengleiche subgroup and `k` for a klassengleiche subgroup.\nThe field is omitted when the enclosing record is not a maximal subgroup relation.",
                    "enum": [
                        "t",
                        "k"
                    ],
                    "x-optimade-unit": "inapplicable",
                    "examples": [
                        "k",
                        "t"
                    ]
                },
                "k_subtype": {
                    "$id": "https://schemas.anyterial.se/defs/v0.1/properties/transformations/k_subtype",
                    "x-optimade-requirements": {
                        "support": "may",
                        "sortable": false,
                        "query-support": "none",
                        "response-level": "may"
                    },
                    "title": "Klassengleiche subgroup subtype",
                    "x-optimade-type": "string",
                    "x-optimade-definition": {
                        "kind": "property",
                        "version": "0.1.0",
                        "format": "1.3",
                        "name": "k_subtype",
                        "label": "k_subtype_transformations"
                    },
                    "type": [
                        "string",
                        "null"
                    ],
                    "description": "Subtype of a klassengleiche (`k`) subgroup relation.\n\nThe value distinguishes loss of centering translations from enlarged-unit-cell subgroups.\nThe value is null for non-`k` relations and for records that are not subgroup relations.",
                    "x-optimade-unit": "inapplicable",
                    "enum": [
                        "loss_of_centering_translation",
                        "enlarged_unit_cell"
                    ],
                    "examples": [
                        "enlarged_unit_cell",
                        "loss_of_centering_translation"
                    ]
                },
                "target": {
                    "$id": "https://schemas.anyterial.se/defs/v0.1/properties/transformations/target",
                    "x-optimade-requirements": {
                        "support": "may",
                        "sortable": false,
                        "query-support": "none",
                        "response-level": "may"
                    },
                    "title": "Criterion target",
                    "x-optimade-type": "list",
                    "x-optimade-definition": {
                        "kind": "property",
                        "version": "0.1.0",
                        "format": "1.3",
                        "name": "target",
                        "label": "target_transformations"
                    },
                    "x-optimade-unit": "inapplicable",
                    "type": [
                        "array",
                        "null"
                    ],
                    "description": "Exact target vector or scalar of a generated linear criterion.\n\nThis field appears in `criteria` items of basis-transform records, for example in backward-lift criteria, where it gives the value that the linear form evaluated on the constrained coordinates must equal.\nThe components are exact rational values serialized as fraction strings.",
                    "items": {
                        "$id": "https://schemas.anyterial.se/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",
                            "0",
                            "0"
                        ]
                    ]
                },
                "to_hall_entry": {
                    "$id": "https://schemas.anyterial.se/defs/v0.1/properties/transformations/to_hall_entry",
                    "x-optimade-requirements": {
                        "support": "may",
                        "sortable": false,
                        "query-support": "none",
                        "response-level": "may"
                    },
                    "title": "To Hall entry",
                    "x-optimade-type": "string",
                    "x-optimade-definition": {
                        "kind": "property",
                        "version": "0.1.0",
                        "format": "1.3",
                        "name": "to_hall_entry",
                        "label": "to_hall_entry_transformations"
                    },
                    "type": [
                        "string",
                        "null"
                    ],
                    "description": "Target Hall-entry key to which a setting transform maps the current Hall setting.\n\nThe value is a normalized Hall-entry key following the same convention as `/defs/v0.1/properties/spacegroups/hall_entry`, i.e., derived from the Hall symbol by using lowercase letters and underscores in place of spaces.\nThe corresponding display Hall symbol can be recovered by looking up the key in the spacegroups dataset.",
                    "x-optimade-unit": "inapplicable",
                    "examples": [
                        "p_1",
                        "-p_1"
                    ]
                },
                "wyckoff_splitting": {
                    "$id": "https://schemas.anyterial.se/defs/v0.1/properties/transformations/wyckoff_splitting",
                    "x-optimade-requirements": {
                        "support": "may",
                        "sortable": false,
                        "query-support": "none",
                        "response-level": "may"
                    },
                    "title": "Wyckoff splitting",
                    "x-optimade-type": "list",
                    "x-optimade-definition": {
                        "kind": "property",
                        "version": "0.1.0",
                        "format": "1.3",
                        "name": "wyckoff_splitting",
                        "label": "wyckoff_splitting_transformations"
                    },
                    "x-optimade-unit": "inapplicable",
                    "type": [
                        "array",
                        "null"
                    ],
                    "description": "Wyckoff-position splitting data associated with a subgroup or same-space-group transform.\n\nEach list item gives the split of one parent Wyckoff position.\nThe parent Wyckoff letter is stored in the `parent` field rather than as a JSON dictionary key.\n\n**Requirements/Conventions**:\n\n- It MUST be a list of dictionaries.\n- Each dictionary MUST contain `parent`, the Wyckoff letter in the parent setting.\n- Each dictionary MUST contain `splits`, an ordered list of subgroup Wyckoff-position assignments or coordinate expressions emitted by the generator.",
                    "items": {
                        "x-optimade-type": "dictionary",
                        "x-optimade-unit": "inapplicable",
                        "type": [
                            "object"
                        ],
                        "description": "Splitting data for one parent Wyckoff position.",
                        "required": [
                            "parent",
                            "splits"
                        ],
                        "properties": {
                            "parent": {
                                "x-optimade-type": "string",
                                "x-optimade-unit": "inapplicable",
                                "type": [
                                    "string"
                                ],
                                "description": "Parent Wyckoff letter."
                            },
                            "splits": {
                                "x-optimade-type": "list",
                                "x-optimade-unit": "inapplicable",
                                "type": [
                                    "array"
                                ],
                                "description": "Ordered split records for this parent Wyckoff letter.",
                                "items": {
                                    "x-optimade-type": "dictionary",
                                    "x-optimade-unit": "inapplicable",
                                    "type": [
                                        "object"
                                    ],
                                    "description": "One Wyckoff split record.",
                                    "required": [
                                        "letter",
                                        "xyz",
                                        "affine"
                                    ],
                                    "properties": {
                                        "letter": {
                                            "x-optimade-type": "string",
                                            "x-optimade-unit": "inapplicable",
                                            "type": [
                                                "string"
                                            ],
                                            "description": "Subgroup Wyckoff letter assigned by this split branch."
                                        },
                                        "xyz": {
                                            "x-optimade-type": "string",
                                            "x-optimade-unit": "inapplicable",
                                            "type": [
                                                "string"
                                            ],
                                            "description": "Coordinate expression for the split branch."
                                        },
                                        "affine": {
                                            "x-optimade-type": "list",
                                            "x-optimade-unit": "inapplicable",
                                            "x-optimade-dimensions": {
                                                "names": [
                                                    "dim_lattice",
                                                    "dim_affine"
                                                ],
                                                "sizes": [
                                                    3,
                                                    4
                                                ]
                                            },
                                            "type": [
                                                "array"
                                            ],
                                            "description": "Exact affine representation for the split branch as a 3 by 4 augmented matrix.\nEach row holds the three linear coefficients followed by the translation component, all as exact fraction strings.",
                                            "items": {
                                                "x-optimade-type": "list",
                                                "x-optimade-unit": "inapplicable",
                                                "x-optimade-dimensions": {
                                                    "names": [
                                                        "dim_affine"
                                                    ],
                                                    "sizes": [
                                                        4
                                                    ]
                                                },
                                                "type": [
                                                    "array"
                                                ],
                                                "description": "One row of the augmented affine matrix.",
                                                "items": {
                                                    "$id": "https://schemas.anyterial.se/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": [
                        [
                            {
                                "parent": "c",
                                "splits": [
                                    {
                                        "letter": "e",
                                        "xyz": "x,y,z",
                                        "affine": [
                                            [
                                                "1",
                                                "0",
                                                "0",
                                                "0"
                                            ],
                                            [
                                                "0",
                                                "1",
                                                "0",
                                                "0"
                                            ],
                                            [
                                                "0",
                                                "0",
                                                "1",
                                                "0"
                                            ]
                                        ]
                                    }
                                ]
                            }
                        ]
                    ]
                },
                "transformations_per_hm_entry": {
                    "$id": "https://schemas.anyterial.se/defs/v0.1/properties/transformations/transformations_per_hm_entry",
                    "x-optimade-requirements": {
                        "support": "may",
                        "sortable": false,
                        "query-support": "none",
                        "response-level": "may"
                    },
                    "title": "Transformations per H-M entry",
                    "x-optimade-type": "list",
                    "x-optimade-definition": {
                        "kind": "property",
                        "version": "0.1.0",
                        "format": "1.3",
                        "name": "transformations_per_hm_entry",
                        "label": "transformations_per_hm_entry_transformations"
                    },
                    "x-optimade-unit": "inapplicable",
                    "type": [
                        "array",
                        "null"
                    ],
                    "description": "Transformation data grouped by H-M entry.\n\nEach list item contains the H-M entry as ordinary data together with all transformation sections generated for that setting.\nThis representation avoids using H-M entries as JSON dictionary keys in the OPTIMADE-described payload.\nThe accompanying `hall_entry` field identifies the Hall symbol used to compute the symmetry operations and normalizer data.\nThe `centering_translations` field gives the setting's centering translations directly in each record, so modulo-centering operation lists can be interpreted without joining against another dataset.\n\n**Requirements/Conventions**:\n\n- It MUST be a list of dictionaries.\n- Each dictionary MUST contain `hm_entry`.\n- Each dictionary SHOULD contain `hall_entry` and the generated transformation sections for that setting.\n- If `euclidean_normalizer.symops_mod_centering` is present, the same dictionary SHOULD contain `centering_translations`.",
                    "items": {
                        "x-optimade-type": "dictionary",
                        "x-optimade-unit": "inapplicable",
                        "type": [
                            "object"
                        ],
                        "description": "Transformation record for one H-M entry.",
                        "required": [
                            "hm_entry"
                        ],
                        "properties": {
                            "hm_entry": {
                                "$id": "https://schemas.anyterial.se/defs/v0.1/properties/spacegroups/hm_entry",
                                "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`.",
                                "x-optimade-unit": "inapplicable",
                                "examples": [
                                    "P 1",
                                    "C c c a:1",
                                    "C c c b:2"
                                ]
                            },
                            "hall_entry": {
                                "$id": "https://schemas.anyterial.se/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.",
                                "x-optimade-unit": "inapplicable",
                                "examples": [
                                    "p_1",
                                    "-p_1"
                                ]
                            },
                            "centering_translations": {
                                "$id": "https://schemas.anyterial.se/defs/v0.1/properties/spacegroups/centering_translations",
                                "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.anyterial.se/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.",
                                    "x-optimade-dimensions": {
                                        "names": [
                                            "dim_lattice"
                                        ],
                                        "sizes": [
                                            3
                                        ]
                                    },
                                    "items": {
                                        "$id": "https://schemas.anyterial.se/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"
                                        ]
                                    ]
                                ]
                            },
                            "euclidean_normalizer": {
                                "$id": "https://schemas.anyterial.se/defs/v0.1/properties/transformations/euclidean_normalizer",
                                "title": "Euclidean normalizer",
                                "x-optimade-type": "dictionary",
                                "x-optimade-definition": {
                                    "kind": "property",
                                    "version": "0.1.0",
                                    "format": "1.3",
                                    "name": "euclidean_normalizer",
                                    "label": "euclidean_normalizer_transformations"
                                },
                                "x-optimade-unit": "inapplicable",
                                "type": [
                                    "object",
                                    "null"
                                ],
                                "description": "Finite Euclidean normalizer operations for one crystallographic space-group setting.\n\nThe Euclidean normalizer consists of metric-preserving affine operations that normalize the space group in the chosen setting.\nThese operations are useful for algorithms that need to compare or enumerate equivalent descriptions of the same setting under rigid crystallographic changes of coordinates.\n\nThis object is generated from the finite Euclidean normalizer operations exposed by cctbx.\nIt is not a bounded candidate search table.\nTherefore fields such as `candidate_set`, `candidate_sets`, and bounded-search `bounds` do not belong to this property.\n\nThis property is one of three related normalizer tables for a setting:\nthis property holds the finite Euclidean normalizer operations obtained from cctbx,\n`orthogonal_affine_normalizer` holds the older bounded coset table restricted to signed-permutation linear parts,\nand `affine_normalizer` holds the bounded coset table generated from unimodular integer linear parts.\nContinuous origin-shift freedoms are described separately by `continuous_normalizer`.\n\n**Requirements/Conventions**:\n\n- It MUST be a dictionary with the following keys:\n\n    - **normalizer\\_kind**: REQUIRED; String.\n      Kind label for this normalizer contribution.\n      For this property the value is `euclidean`.\n\n    - **n\\_centering\\_translations**: REQUIRED; Integer.\n      Number of centering translations represented in the underlying Euclidean normalizer operation construction.\n\n    - **n\\_pointgroup\\_symops**: REQUIRED; Integer.\n      Number of point-group symmetry operations represented before centering translations are combined with them.\n\n    - **n\\_symops**: REQUIRED; Integer.\n      Number of Euclidean normalizer operations listed in `symops`.\n      This value MUST equal the length of `symops`.\n\n    - **n\\_linear\\_parts**: REQUIRED; Integer.\n      Number of distinct linear matrix parts represented in `symops`.\n\n    - **symops**: REQUIRED; List of dictionaries.\n      Finite Euclidean normalizer operations for the setting.\n      Each item follows `/defs/v0.1/properties/symmetry/op`.\n\n    - **symops\\_mod\\_centering**: REQUIRED; List of dictionaries.\n      Euclidean normalizer operations factorized modulo the centering translations of the setting.\n      This keeps one operation for each linear part and translation class modulo centering, while `symops` keeps the complete operation list.\n      Each item follows `/defs/v0.1/properties/symmetry/op`.",
                                "properties": {
                                    "normalizer_kind": {
                                        "x-optimade-type": "string",
                                        "x-optimade-unit": "inapplicable",
                                        "type": [
                                            "string",
                                            "null"
                                        ],
                                        "description": "Kind label for this normalizer contribution."
                                    },
                                    "n_centering_translations": {
                                        "$id": "https://schemas.anyterial.se/defs/v0.1/properties/spacegroups/n_centering_translations",
                                        "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.anyterial.se/defs/v0.1/properties/pointgroups/n_pointgroup_symops",
                                        "title": "Number of pointgroup symops",
                                        "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.",
                                        "x-optimade-unit": "inapplicable",
                                        "examples": [
                                            1,
                                            2
                                        ]
                                    },
                                    "n_symops": {
                                        "$id": "https://schemas.anyterial.se/defs/v0.1/properties/spacegroups/n_symops",
                                        "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
                                        ]
                                    },
                                    "n_linear_parts": {
                                        "$id": "https://schemas.anyterial.se/defs/v0.1/properties/transformations/n_linear_parts",
                                        "title": "Number of linear parts",
                                        "x-optimade-type": "integer",
                                        "x-optimade-definition": {
                                            "kind": "property",
                                            "version": "0.1.0",
                                            "format": "1.3",
                                            "name": "n_linear_parts",
                                            "label": "n_linear_parts_transformations"
                                        },
                                        "type": [
                                            "integer",
                                            "null"
                                        ],
                                        "description": "Number of distinct linear matrix parts represented in a normalizer or transform table.\n\nDistinctness is determined by exact element-wise comparison of the 3 by 3 matrix parts of the listed operations.",
                                        "x-optimade-unit": "inapplicable",
                                        "examples": [
                                            2,
                                            4
                                        ]
                                    },
                                    "symops": {
                                        "x-optimade-type": "list",
                                        "x-optimade-unit": "inapplicable",
                                        "type": [
                                            "array",
                                            "null"
                                        ],
                                        "description": "Finite Euclidean normalizer operations for the setting.",
                                        "items": {
                                            "$id": "https://schemas.anyterial.se/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    - **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.",
                                            "properties": {
                                                "affine_transformation": {
                                                    "$id": "https://schemas.anyterial.se/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 affine transformation is a geometric transformation preserving points, straight lines, and parallelism (collinearity), but may not preserve Euclidean distances and angles.\nThe transformation is represented by a 3 by 3 matrix and a 3-vector, both serialized with exact string entries.\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\n    - **det**: OPTIONAL; Integer.\n      Determinant of `matrix` when the generator emits it.\n\n    - **is\\_orthogonal**: OPTIONAL; Boolean.\n      Whether `matrix` is orthogonal in the exact representation used by the generator.",
                                                    "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.anyterial.se/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.anyterial.se/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.anyterial.se/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."
                                                        },
                                                        "is_orthogonal": {
                                                            "x-optimade-type": "boolean",
                                                            "x-optimade-unit": "inapplicable",
                                                            "type": [
                                                                "boolean",
                                                                "null"
                                                            ],
                                                            "description": "Whether the matrix part is orthogonal."
                                                        }
                                                    },
                                                    "examples": [
                                                        {
                                                            "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": {
                                                    "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"
                                                    ]
                                                },
                                                "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."
                                                },
                                                "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.anyterial.se/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.anyterial.se/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"
                                                    ]
                                                }
                                            ]
                                        }
                                    },
                                    "symops_mod_centering": {
                                        "$id": "https://schemas.anyterial.se/defs/v0.1/properties/spacegroups/symops_mod_centering",
                                        "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.anyterial.se/defs/v0.1/properties/symmetry/op",
                                        "items": {
                                            "$id": "https://schemas.anyterial.se/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    - **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.",
                                            "properties": {
                                                "affine_transformation": {
                                                    "$id": "https://schemas.anyterial.se/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 affine transformation is a geometric transformation preserving points, straight lines, and parallelism (collinearity), but may not preserve Euclidean distances and angles.\nThe transformation is represented by a 3 by 3 matrix and a 3-vector, both serialized with exact string entries.\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\n    - **det**: OPTIONAL; Integer.\n      Determinant of `matrix` when the generator emits it.\n\n    - **is\\_orthogonal**: OPTIONAL; Boolean.\n      Whether `matrix` is orthogonal in the exact representation used by the generator.",
                                                    "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.anyterial.se/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.anyterial.se/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.anyterial.se/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."
                                                        },
                                                        "is_orthogonal": {
                                                            "x-optimade-type": "boolean",
                                                            "x-optimade-unit": "inapplicable",
                                                            "type": [
                                                                "boolean",
                                                                "null"
                                                            ],
                                                            "description": "Whether the matrix part is orthogonal."
                                                        }
                                                    },
                                                    "examples": [
                                                        {
                                                            "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": {
                                                    "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"
                                                    ]
                                                },
                                                "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."
                                                },
                                                "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.anyterial.se/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.anyterial.se/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"
                                                    ]
                                                }
                                            ]
                                        ]
                                    }
                                },
                                "examples": [
                                    {
                                        "normalizer_kind": "euclidean",
                                        "n_centering_translations": 1,
                                        "n_pointgroup_symops": 1,
                                        "n_symops": 2,
                                        "n_linear_parts": 2,
                                        "symops": [
                                            {
                                                "affine_transformation": {
                                                    "xyz": "-x,-y,-z",
                                                    "matrix": [
                                                        [
                                                            "-1",
                                                            "0",
                                                            "0"
                                                        ],
                                                        [
                                                            "0",
                                                            "-1",
                                                            "0"
                                                        ],
                                                        [
                                                            "0",
                                                            "0",
                                                            "-1"
                                                        ]
                                                    ],
                                                    "vector": [
                                                        "0",
                                                        "0",
                                                        "0"
                                                    ],
                                                    "det": -1,
                                                    "is_orthogonal": true
                                                },
                                                "rot_type": "-1",
                                                "sense": 0,
                                                "axis": [
                                                    0,
                                                    0,
                                                    0
                                                ],
                                                "screw_glide": [
                                                    "0",
                                                    "0",
                                                    "0"
                                                ],
                                                "origin_shift": [
                                                    "0",
                                                    "0",
                                                    "0"
                                                ],
                                                "operation_kind": "euclidean"
                                            }
                                        ],
                                        "symops_mod_centering": [
                                            {
                                                "affine_transformation": {
                                                    "xyz": "-x,-y,-z",
                                                    "matrix": [
                                                        [
                                                            "-1",
                                                            "0",
                                                            "0"
                                                        ],
                                                        [
                                                            "0",
                                                            "-1",
                                                            "0"
                                                        ],
                                                        [
                                                            "0",
                                                            "0",
                                                            "-1"
                                                        ]
                                                    ],
                                                    "vector": [
                                                        "0",
                                                        "0",
                                                        "0"
                                                    ],
                                                    "det": -1,
                                                    "is_orthogonal": true
                                                },
                                                "rot_type": "-1",
                                                "sense": 0,
                                                "axis": [
                                                    0,
                                                    0,
                                                    0
                                                ],
                                                "screw_glide": [
                                                    "0",
                                                    "0",
                                                    "0"
                                                ],
                                                "origin_shift": [
                                                    "0",
                                                    "0",
                                                    "0"
                                                ],
                                                "operation_kind": "euclidean"
                                            }
                                        ]
                                    }
                                ]
                            },
                            "hall_to_it_std_transform": {
                                "$id": "https://schemas.anyterial.se/defs/v0.1/properties/transformations/hall_to_it_std_transform",
                                "title": "Hall to IT standard transform",
                                "x-optimade-type": "dictionary",
                                "x-optimade-definition": {
                                    "kind": "property",
                                    "version": "0.1.0",
                                    "format": "1.3",
                                    "name": "hall_to_it_std_transform",
                                    "label": "hall_to_it_std_transform_transformations"
                                },
                                "x-optimade-unit": "inapplicable",
                                "type": [
                                    "object",
                                    "null"
                                ],
                                "description": "Exact basis and origin transform from one stored Hall setting to the International Tables standard Hall setting of the same space-group type.\n\nThis transform is useful when data generated or detected in an arbitrary Hall setting needs to be compared with a conventional IT-standard reference setting.\nThe transform is represented by `matrix` and `vector`, following the same affine-transformation convention as the other generated transformation tables.\n\nIf `x_to_ref_hall` is a fractional coordinate column vector in the target IT-standard Hall setting, and `x_from_hall` is the corresponding fractional coordinate column vector in the source Hall setting keyed by the containing map, then the stored transform satisfies:\n`x_from_hall = matrix * x_to_ref_hall + vector`.\n\n**Requirements/Conventions**:\n\n- It MUST be a dictionary describing one exact transform from the containing Hall setting to the IT-standard Hall setting of the same `it_number`.\n- The `index` value is always `1`, because this is a same-space-group setting transform rather than a proper subgroup transform.\n- Matrix and vector entries MUST be exact strings, using integer strings or fraction strings as appropriate.\n- It MUST be a dictionary with the following keys:\n\n    - **hall\\_entry**: REQUIRED; String.\n      Source Hall-entry key for the setting transformed by this object.\n\n    - **it\\_number**: REQUIRED; Integer.\n      International Tables space-group number shared by the source and target Hall settings.\n\n    - **to\\_hall\\_entry**: REQUIRED; String.\n      Target Hall-entry key for the IT-standard Hall setting of the same space-group type.\n\n    - **index**: REQUIRED; Integer.\n      Transform index.\n      For this table the value is `1` because the transform maps between settings of the same space group.\n\n    - **affine\\_transformation**: REQUIRED; Dictionary.\n      Exact affine map for this setting transform.\n      It MUST follow `/defs/v0.1/properties/symmetry/affine_transformation`.\n      The transform convention is `x_from_hall = matrix * x_to_ref_hall + vector`, where `matrix` and `vector` are the fields inside `affine_transformation`.",
                                "properties": {
                                    "hall_entry": {
                                        "$id": "https://schemas.anyterial.se/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.",
                                        "x-optimade-unit": "inapplicable",
                                        "examples": [
                                            "p_1",
                                            "-p_1"
                                        ]
                                    },
                                    "it_number": {
                                        "$id": "https://schemas.anyterial.se/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
                                        ]
                                    },
                                    "to_hall_entry": {
                                        "$id": "https://schemas.anyterial.se/defs/v0.1/properties/transformations/to_hall_entry",
                                        "title": "To Hall entry",
                                        "x-optimade-type": "string",
                                        "x-optimade-definition": {
                                            "kind": "property",
                                            "version": "0.1.0",
                                            "format": "1.3",
                                            "name": "to_hall_entry",
                                            "label": "to_hall_entry_transformations"
                                        },
                                        "type": [
                                            "string",
                                            "null"
                                        ],
                                        "description": "Target Hall-entry key to which a setting transform maps the current Hall setting.\n\nThe value is a normalized Hall-entry key following the same convention as `/defs/v0.1/properties/spacegroups/hall_entry`, i.e., derived from the Hall symbol by using lowercase letters and underscores in place of spaces.\nThe corresponding display Hall symbol can be recovered by looking up the key in the spacegroups dataset.",
                                        "x-optimade-unit": "inapplicable",
                                        "examples": [
                                            "p_1",
                                            "-p_1"
                                        ]
                                    },
                                    "index": {
                                        "$id": "https://schemas.anyterial.se/defs/v0.1/properties/transformations/index",
                                        "title": "Subgroup or transform index",
                                        "x-optimade-type": "integer",
                                        "x-optimade-definition": {
                                            "kind": "property",
                                            "version": "0.1.0",
                                            "format": "1.3",
                                            "name": "index",
                                            "label": "index_transformations"
                                        },
                                        "type": [
                                            "integer",
                                            "null"
                                        ],
                                        "description": "Subgroup or transform index.\n\nFor subgroup transforms it is the crystallographic subgroup index `[G:H]`, equal to the determinant factor of the basis transformation when applicable.",
                                        "x-optimade-unit": "inapplicable",
                                        "examples": [
                                            2,
                                            4
                                        ]
                                    },
                                    "affine_transformation": {
                                        "$id": "https://schemas.anyterial.se/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 affine transformation is a geometric transformation preserving points, straight lines, and parallelism (collinearity), but may not preserve Euclidean distances and angles.\nThe transformation is represented by a 3 by 3 matrix and a 3-vector, both serialized with exact string entries.\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\n    - **det**: OPTIONAL; Integer.\n      Determinant of `matrix` when the generator emits it.\n\n    - **is\\_orthogonal**: OPTIONAL; Boolean.\n      Whether `matrix` is orthogonal in the exact representation used by the generator.",
                                        "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.anyterial.se/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.anyterial.se/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.anyterial.se/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."
                                            },
                                            "is_orthogonal": {
                                                "x-optimade-type": "boolean",
                                                "x-optimade-unit": "inapplicable",
                                                "type": [
                                                    "boolean",
                                                    "null"
                                                ],
                                                "description": "Whether the matrix part is orthogonal."
                                            }
                                        },
                                        "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": [
                                    {
                                        "hall_entry": "p_1",
                                        "it_number": 1,
                                        "to_hall_entry": "p_1",
                                        "index": 1,
                                        "affine_transformation": {
                                            "matrix": [
                                                [
                                                    "1",
                                                    "0",
                                                    "0"
                                                ],
                                                [
                                                    "0",
                                                    "1",
                                                    "0"
                                                ],
                                                [
                                                    "0",
                                                    "0",
                                                    "1"
                                                ]
                                            ],
                                            "vector": [
                                                "0",
                                                "0",
                                                "0"
                                            ]
                                        }
                                    }
                                ]
                            },
                            "orthogonal_affine_normalizer": {
                                "$id": "https://schemas.anyterial.se/defs/v0.1/properties/transformations/orthogonal_affine_normalizer",
                                "title": "Orthogonal affine normalizer",
                                "x-optimade-type": "dictionary",
                                "x-optimade-definition": {
                                    "kind": "property",
                                    "version": "0.1.0",
                                    "format": "1.3",
                                    "name": "orthogonal_affine_normalizer",
                                    "label": "orthogonal_affine_normalizer_transformations"
                                },
                                "x-optimade-unit": "inapplicable",
                                "type": [
                                    "object",
                                    "null"
                                ],
                                "description": "Orthogonal affine normalizer coset representatives for one crystallographic space-group setting.\n\nThe representatives are listed modulo the space group itself, so each listed operation represents an equivalence class of affine normalizer operations rather than every operation in that class.\nThis property contains the signed-permutation subset of affine normalizer representatives.\n\nThe `candidate_set` field belongs in this property because the listed representatives are produced from a deliberately restricted finite candidate set.\nFor this property `candidate_set` is `signed_permutation_matrices`, meaning 3 by 3 integer matrices with exactly one nonzero entry in each row and column and each nonzero entry equal to `-1` or `1`.\nThe plural field `candidate_sets` is not part of the emitted data and MUST NOT be used here.\n\nThis property is one of three related normalizer tables for a setting:\n`euclidean_normalizer` holds the finite Euclidean normalizer operations obtained from cctbx,\nthis property holds the older bounded table restricted to signed-permutation linear parts,\nand `affine_normalizer` holds the bounded table generated from unimodular integer linear parts, which is a superset of this one.\n\n**Requirements/Conventions**:\n\n- It MUST be a dictionary with the following keys:\n\n    - **normalizer\\_kind**: REQUIRED; String.\n      Kind label for this normalizer contribution.\n\n    - **representation**: REQUIRED; String.\n      Representation label for the listed data.\n\n    - **candidate\\_set**: REQUIRED; String.\n      Name of the finite linear candidate set used for generation.\n\n    - **n\\_symops**: REQUIRED; Integer.\n      Number of listed coset representatives after metric-compatibility filtering.\n\n    - **n\\_linear\\_parts**: REQUIRED; Integer.\n      Number of distinct linear matrix parts represented in `symops`.\n\n    - **n\\_raw\\_candidates**: REQUIRED; Integer.\n      Number of affine candidates found before deduplication modulo the space group.\n\n    - **n\\_unique\\_candidates**: REQUIRED; Integer.\n      Number of unique affine candidates before quotienting by the space group.\n\n    - **n\\_coset\\_representatives**: REQUIRED; Integer.\n      Number of non-trivial coset representatives before metric-compatibility filtering.\n\n    - **bounds**: REQUIRED; Dictionary.\n      Simple numerical bounds satisfied by the signed-permutation candidate matrices.\n\n    - **symops**: REQUIRED; List of dictionaries.\n      Listed orthogonal affine normalizer coset representatives.\n      Each item follows `/defs/v0.1/properties/symmetry/basis_transform`.\n      Each item MUST carry `compatible_systems`, the list of crystal systems for which the representative's linear part is compatible with a crystallographic metric.",
                                "properties": {
                                    "normalizer_kind": {
                                        "x-optimade-type": "string",
                                        "x-optimade-unit": "inapplicable",
                                        "type": [
                                            "string",
                                            "null"
                                        ],
                                        "description": "Kind label for this normalizer contribution."
                                    },
                                    "representation": {
                                        "x-optimade-type": "string",
                                        "x-optimade-unit": "inapplicable",
                                        "type": [
                                            "string",
                                            "null"
                                        ],
                                        "description": "Representation label for the listed normalizer data."
                                    },
                                    "candidate_set": {
                                        "x-optimade-type": "string",
                                        "x-optimade-unit": "inapplicable",
                                        "type": [
                                            "string",
                                            "null"
                                        ],
                                        "description": "Name of the finite linear candidate set used for generation."
                                    },
                                    "n_symops": {
                                        "$id": "https://schemas.anyterial.se/defs/v0.1/properties/spacegroups/n_symops",
                                        "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
                                        ]
                                    },
                                    "n_linear_parts": {
                                        "$id": "https://schemas.anyterial.se/defs/v0.1/properties/transformations/n_linear_parts",
                                        "title": "Number of linear parts",
                                        "x-optimade-type": "integer",
                                        "x-optimade-definition": {
                                            "kind": "property",
                                            "version": "0.1.0",
                                            "format": "1.3",
                                            "name": "n_linear_parts",
                                            "label": "n_linear_parts_transformations"
                                        },
                                        "type": [
                                            "integer",
                                            "null"
                                        ],
                                        "description": "Number of distinct linear matrix parts represented in a normalizer or transform table.\n\nDistinctness is determined by exact element-wise comparison of the 3 by 3 matrix parts of the listed operations.",
                                        "x-optimade-unit": "inapplicable",
                                        "examples": [
                                            2,
                                            4
                                        ]
                                    },
                                    "n_raw_candidates": {
                                        "x-optimade-type": "integer",
                                        "x-optimade-unit": "inapplicable",
                                        "type": [
                                            "integer",
                                            "null"
                                        ],
                                        "description": "Number of affine candidates found before deduplication modulo the space group."
                                    },
                                    "n_unique_candidates": {
                                        "x-optimade-type": "integer",
                                        "x-optimade-unit": "inapplicable",
                                        "type": [
                                            "integer",
                                            "null"
                                        ],
                                        "description": "Number of unique affine candidates before quotienting by the space group."
                                    },
                                    "n_coset_representatives": {
                                        "x-optimade-type": "integer",
                                        "x-optimade-unit": "inapplicable",
                                        "type": [
                                            "integer",
                                            "null"
                                        ],
                                        "description": "Number of non-trivial coset representatives before metric-compatibility filtering."
                                    },
                                    "bounds": {
                                        "x-optimade-type": "dictionary",
                                        "x-optimade-unit": "inapplicable",
                                        "type": [
                                            "object",
                                            "null"
                                        ],
                                        "description": "Simple numerical bounds satisfied by the signed-permutation candidate matrices.",
                                        "properties": {
                                            "det_abs": {
                                                "x-optimade-type": "integer",
                                                "x-optimade-unit": "inapplicable",
                                                "type": [
                                                    "integer",
                                                    "null"
                                                ],
                                                "description": "Absolute determinant of every signed-permutation candidate matrix."
                                            },
                                            "max_abs_linear_entry": {
                                                "x-optimade-type": "integer",
                                                "x-optimade-unit": "inapplicable",
                                                "type": [
                                                    "integer",
                                                    "null"
                                                ],
                                                "description": "Maximum absolute entry value in the signed-permutation candidate matrices."
                                            }
                                        }
                                    },
                                    "symops": {
                                        "x-optimade-type": "list",
                                        "x-optimade-unit": "inapplicable",
                                        "type": [
                                            "array",
                                            "null"
                                        ],
                                        "description": "Listed orthogonal affine normalizer coset representatives.",
                                        "items": {
                                            "$id": "https://schemas.anyterial.se/defs/v0.1/properties/symmetry/basis_transform",
                                            "title": "Basis transformation",
                                            "x-optimade-type": "dictionary",
                                            "x-optimade-definition": {
                                                "kind": "property",
                                                "version": "0.1.0",
                                                "format": "1.3",
                                                "name": "basis_transform",
                                                "label": "basis_transform_symmetry"
                                            },
                                            "x-optimade-unit": "inapplicable",
                                            "type": [
                                                "object",
                                                "null"
                                            ],
                                            "description": "One crystallographic transform between coordinate descriptions, settings, cells, or related group embeddings.\n\nThe affine map itself is stored in the embedded `affine_transformation` field.\nThe parent property defines the source and target coordinate systems and the precise role of the transform.\nUseful, for example, for representing setting changes, subgroup embeddings, isomorphic subgroup transforms, normalizer representatives, and same-space-group affine images.\nThis property is not limited to symmetry operations within one fixed setting; the matrix may be non-orthogonal or have determinant different from one when the transform changes cell or basis.\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 transform, using exact rational matrix and vector entries.\n      The coordinate convention and source/target interpretation are supplied by the parent property.\n\n    - **index**: OPTIONAL; Integer or null.\n      Index metadata whose interpretation is defined by the parent property.\n      Common uses include the subgroup index for subgroup embeddings, the cell index for isomorphic subgroup transforms, or an ordinal representative index in a finite transform table.\n\n    - **subgroup\\_type**: OPTIONAL; String.\n      International Tables subgroup-type label when the transform describes a maximal subgroup embedding.\n      The value MUST be `t` for a translationengleiche subgroup or `k` for a klassengleiche subgroup.\n      It MUST be omitted when the transform is not a maximal subgroup embedding.\n\n    - **k\\_subtype**: OPTIONAL; String or null.\n      Klassengleiche subtype when the transform describes a klassengleiche subgroup relation.\n      The value MUST be `loss_of_centering_translation` or `enlarged_unit_cell` for klassengleiche relations and null or omitted otherwise.\n\n    - **compatible\\_systems**: OPTIONAL; List of strings.\n      Crystal metric systems for which the transform is compatible.\n      This is used for bounded affine normalizer representatives.\n\n    - **operation\\_kind**: OPTIONAL; String.\n      Categorical label for normalizer-type representatives.\n      The value MUST be `euclidean` for Euclidean normalizer operations, `orthogonal_affine` for the signed-permutation affine normalizer subset, or `affine` for the bounded unimodular affine normalizer table.\n      It MUST be omitted when the transform is a setting transform, subgroup embedding, or other transform for which no normalizer operation class applies.\n\n    - **wyckoff\\_splitting**: OPTIONAL; List.\n      Wyckoff-position splitting metadata induced by the transform when available.\n      The list is grouped by explicit parent Wyckoff letter.\n\n    - **criteria**: OPTIONAL; List.\n      Backward-lift constraint metadata induced by the transform when available.\n      The list is grouped by explicit parent Wyckoff letter.",
                                            "properties": {
                                                "affine_transformation": {
                                                    "$id": "https://schemas.anyterial.se/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 affine transformation is a geometric transformation preserving points, straight lines, and parallelism (collinearity), but may not preserve Euclidean distances and angles.\nThe transformation is represented by a 3 by 3 matrix and a 3-vector, both serialized with exact string entries.\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\n    - **det**: OPTIONAL; Integer.\n      Determinant of `matrix` when the generator emits it.\n\n    - **is\\_orthogonal**: OPTIONAL; Boolean.\n      Whether `matrix` is orthogonal in the exact representation used by the generator.",
                                                    "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.anyterial.se/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.anyterial.se/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.anyterial.se/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."
                                                        },
                                                        "is_orthogonal": {
                                                            "x-optimade-type": "boolean",
                                                            "x-optimade-unit": "inapplicable",
                                                            "type": [
                                                                "boolean",
                                                                "null"
                                                            ],
                                                            "description": "Whether the matrix part is orthogonal."
                                                        }
                                                    },
                                                    "examples": [
                                                        {
                                                            "matrix": [
                                                                [
                                                                    "-1",
                                                                    "0",
                                                                    "0"
                                                                ],
                                                                [
                                                                    "0",
                                                                    "-1",
                                                                    "0"
                                                                ],
                                                                [
                                                                    "0",
                                                                    "0",
                                                                    "1"
                                                                ]
                                                            ],
                                                            "vector": [
                                                                "0",
                                                                "0",
                                                                "0"
                                                            ],
                                                            "xyz": "-x,-y,z",
                                                            "det": 1,
                                                            "is_orthogonal": true
                                                        }
                                                    ]
                                                },
                                                "index": {
                                                    "x-optimade-type": "integer",
                                                    "x-optimade-unit": "inapplicable",
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "description": "Index metadata whose interpretation is supplied by the parent property."
                                                },
                                                "subgroup_type": {
                                                    "x-optimade-type": "string",
                                                    "x-optimade-unit": "inapplicable",
                                                    "type": [
                                                        "string"
                                                    ],
                                                    "description": "International Tables subgroup-type label when applicable.",
                                                    "enum": [
                                                        "t",
                                                        "k"
                                                    ]
                                                },
                                                "k_subtype": {
                                                    "x-optimade-type": "string",
                                                    "x-optimade-unit": "inapplicable",
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ],
                                                    "description": "Klassengleiche subtype when applicable."
                                                },
                                                "compatible_systems": {
                                                    "x-optimade-type": "list",
                                                    "x-optimade-unit": "inapplicable",
                                                    "type": [
                                                        "array",
                                                        "null"
                                                    ],
                                                    "description": "Crystal metric systems compatible with the transform.",
                                                    "items": {
                                                        "x-optimade-type": "string",
                                                        "x-optimade-unit": "inapplicable",
                                                        "type": [
                                                            "string"
                                                        ],
                                                        "description": "One compatible crystal-system label.",
                                                        "enum": [
                                                            "triclinic",
                                                            "monoclinic",
                                                            "orthorhombic",
                                                            "tetragonal",
                                                            "trigonal",
                                                            "hexagonal",
                                                            "cubic"
                                                        ]
                                                    }
                                                },
                                                "operation_kind": {
                                                    "x-optimade-type": "string",
                                                    "x-optimade-unit": "inapplicable",
                                                    "type": [
                                                        "string"
                                                    ],
                                                    "description": "Categorical label for normalizer-type representatives.",
                                                    "enum": [
                                                        "euclidean",
                                                        "orthogonal_affine",
                                                        "affine"
                                                    ]
                                                },
                                                "wyckoff_splitting": {
                                                    "$id": "https://schemas.anyterial.se/defs/v0.1/properties/transformations/wyckoff_splitting",
                                                    "title": "Wyckoff splitting",
                                                    "x-optimade-type": "list",
                                                    "x-optimade-definition": {
                                                        "kind": "property",
                                                        "version": "0.1.0",
                                                        "format": "1.3",
                                                        "name": "wyckoff_splitting",
                                                        "label": "wyckoff_splitting_transformations"
                                                    },
                                                    "x-optimade-unit": "inapplicable",
                                                    "type": [
                                                        "array",
                                                        "null"
                                                    ],
                                                    "description": "Wyckoff-position splitting data associated with a subgroup or same-space-group transform.\n\nEach list item gives the split of one parent Wyckoff position.\nThe parent Wyckoff letter is stored in the `parent` field rather than as a JSON dictionary key.\n\n**Requirements/Conventions**:\n\n- It MUST be a list of dictionaries.\n- Each dictionary MUST contain `parent`, the Wyckoff letter in the parent setting.\n- Each dictionary MUST contain `splits`, an ordered list of subgroup Wyckoff-position assignments or coordinate expressions emitted by the generator.",
                                                    "items": {
                                                        "x-optimade-type": "dictionary",
                                                        "x-optimade-unit": "inapplicable",
                                                        "type": [
                                                            "object"
                                                        ],
                                                        "description": "Splitting data for one parent Wyckoff position.",
                                                        "required": [
                                                            "parent",
                                                            "splits"
                                                        ],
                                                        "properties": {
                                                            "parent": {
                                                                "x-optimade-type": "string",
                                                                "x-optimade-unit": "inapplicable",
                                                                "type": [
                                                                    "string"
                                                                ],
                                                                "description": "Parent Wyckoff letter."
                                                            },
                                                            "splits": {
                                                                "x-optimade-type": "list",
                                                                "x-optimade-unit": "inapplicable",
                                                                "type": [
                                                                    "array"
                                                                ],
                                                                "description": "Ordered split records for this parent Wyckoff letter.",
                                                                "items": {
                                                                    "x-optimade-type": "dictionary",
                                                                    "x-optimade-unit": "inapplicable",
                                                                    "type": [
                                                                        "object"
                                                                    ],
                                                                    "description": "One Wyckoff split record.",
                                                                    "required": [
                                                                        "letter",
                                                                        "xyz",
                                                                        "affine"
                                                                    ],
                                                                    "properties": {
                                                                        "letter": {
                                                                            "x-optimade-type": "string",
                                                                            "x-optimade-unit": "inapplicable",
                                                                            "type": [
                                                                                "string"
                                                                            ],
                                                                            "description": "Subgroup Wyckoff letter assigned by this split branch."
                                                                        },
                                                                        "xyz": {
                                                                            "x-optimade-type": "string",
                                                                            "x-optimade-unit": "inapplicable",
                                                                            "type": [
                                                                                "string"
                                                                            ],
                                                                            "description": "Coordinate expression for the split branch."
                                                                        },
                                                                        "affine": {
                                                                            "x-optimade-type": "list",
                                                                            "x-optimade-unit": "inapplicable",
                                                                            "x-optimade-dimensions": {
                                                                                "names": [
                                                                                    "dim_lattice",
                                                                                    "dim_affine"
                                                                                ],
                                                                                "sizes": [
                                                                                    3,
                                                                                    4
                                                                                ]
                                                                            },
                                                                            "type": [
                                                                                "array"
                                                                            ],
                                                                            "description": "Exact affine representation for the split branch as a 3 by 4 augmented matrix.\nEach row holds the three linear coefficients followed by the translation component, all as exact fraction strings.",
                                                                            "items": {
                                                                                "x-optimade-type": "list",
                                                                                "x-optimade-unit": "inapplicable",
                                                                                "x-optimade-dimensions": {
                                                                                    "names": [
                                                                                        "dim_affine"
                                                                                    ],
                                                                                    "sizes": [
                                                                                        4
                                                                                    ]
                                                                                },
                                                                                "type": [
                                                                                    "array"
                                                                                ],
                                                                                "description": "One row of the augmented affine matrix.",
                                                                                "items": {
                                                                                    "$id": "https://schemas.anyterial.se/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": [
                                                        [
                                                            {
                                                                "parent": "c",
                                                                "splits": [
                                                                    {
                                                                        "letter": "e",
                                                                        "xyz": "x,y,z",
                                                                        "affine": [
                                                                            [
                                                                                "1",
                                                                                "0",
                                                                                "0",
                                                                                "0"
                                                                            ],
                                                                            [
                                                                                "0",
                                                                                "1",
                                                                                "0",
                                                                                "0"
                                                                            ],
                                                                            [
                                                                                "0",
                                                                                "0",
                                                                                "1",
                                                                                "0"
                                                                            ]
                                                                        ]
                                                                    }
                                                                ]
                                                            }
                                                        ]
                                                    ]
                                                },
                                                "criteria": {
                                                    "x-optimade-type": "list",
                                                    "x-optimade-unit": "inapplicable",
                                                    "type": [
                                                        "array",
                                                        "null"
                                                    ],
                                                    "description": "Backward-lift constraint metadata induced by the transform, grouped by explicit parent Wyckoff letter.",
                                                    "items": {
                                                        "x-optimade-type": "dictionary",
                                                        "x-optimade-unit": "inapplicable",
                                                        "type": [
                                                            "object"
                                                        ],
                                                        "description": "Backward-lift constraints for one parent Wyckoff position.",
                                                        "required": [
                                                            "parent",
                                                            "constraints"
                                                        ],
                                                        "properties": {
                                                            "parent": {
                                                                "x-optimade-type": "string",
                                                                "x-optimade-unit": "inapplicable",
                                                                "type": [
                                                                    "string"
                                                                ],
                                                                "description": "Parent Wyckoff letter."
                                                            },
                                                            "constraints": {
                                                                "x-optimade-type": "list",
                                                                "x-optimade-unit": "inapplicable",
                                                                "type": [
                                                                    "array"
                                                                ],
                                                                "description": "Constraint records for this parent Wyckoff letter.",
                                                                "items": {
                                                                    "x-optimade-type": "dictionary",
                                                                    "x-optimade-unit": "inapplicable",
                                                                    "type": [
                                                                        "object"
                                                                    ],
                                                                    "description": "One linear backward-lift constraint record.",
                                                                    "properties": {
                                                                        "roles": {
                                                                            "x-optimade-type": "list",
                                                                            "x-optimade-unit": "inapplicable",
                                                                            "type": [
                                                                                "array"
                                                                            ],
                                                                            "description": "Wyckoff-position role references entering the constraint.",
                                                                            "items": {
                                                                                "x-optimade-type": "dictionary",
                                                                                "x-optimade-unit": "inapplicable",
                                                                                "type": [
                                                                                    "object"
                                                                                ],
                                                                                "description": "One role reference.",
                                                                                "required": [
                                                                                    "letter",
                                                                                    "index"
                                                                                ],
                                                                                "properties": {
                                                                                    "letter": {
                                                                                        "x-optimade-type": "string",
                                                                                        "x-optimade-unit": "inapplicable",
                                                                                        "type": [
                                                                                            "string"
                                                                                        ],
                                                                                        "description": "Wyckoff letter for the referenced role."
                                                                                    },
                                                                                    "index": {
                                                                                        "x-optimade-type": "integer",
                                                                                        "x-optimade-unit": "inapplicable",
                                                                                        "type": [
                                                                                            "integer"
                                                                                        ],
                                                                                        "description": "Zero-based occurrence index for the role."
                                                                                    }
                                                                                }
                                                                            }
                                                                        },
                                                                        "coeffs": {
                                                                            "x-optimade-type": "list",
                                                                            "x-optimade-unit": "inapplicable",
                                                                            "type": [
                                                                                "array"
                                                                            ],
                                                                            "description": "Exact coefficient vectors for the constraint.",
                                                                            "items": {
                                                                                "x-optimade-type": "list",
                                                                                "x-optimade-unit": "inapplicable",
                                                                                "type": [
                                                                                    "array"
                                                                                ],
                                                                                "description": "Coefficients associated with one role.",
                                                                                "items": {
                                                                                    "x-optimade-type": "list",
                                                                                    "x-optimade-unit": "inapplicable",
                                                                                    "x-optimade-dimensions": {
                                                                                        "names": [
                                                                                            "dim_lattice"
                                                                                        ],
                                                                                        "sizes": [
                                                                                            3
                                                                                        ]
                                                                                    },
                                                                                    "type": [
                                                                                        "array"
                                                                                    ],
                                                                                    "description": "One exact coefficient vector.",
                                                                                    "items": {
                                                                                        "$id": "https://schemas.anyterial.se/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"
                                                                                    }
                                                                                }
                                                                            }
                                                                        },
                                                                        "target": {
                                                                            "x-optimade-type": "list",
                                                                            "x-optimade-unit": "inapplicable",
                                                                            "type": [
                                                                                "array"
                                                                            ],
                                                                            "description": "Exact target vector or scalar for the constraint.",
                                                                            "items": {
                                                                                "$id": "https://schemas.anyterial.se/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",
                                                                "2"
                                                            ]
                                                        ],
                                                        "vector": [
                                                            "0",
                                                            "0",
                                                            "0"
                                                        ],
                                                        "xyz": "x,y,2z",
                                                        "det": 2,
                                                        "is_orthogonal": false
                                                    },
                                                    "index": 2,
                                                    "subgroup_type": "k",
                                                    "k_subtype": "enlarged_unit_cell",
                                                    "wyckoff_splitting": [
                                                        {
                                                            "parent": "a",
                                                            "splits": [
                                                                {
                                                                    "letter": "a",
                                                                    "xyz": "x,y,z",
                                                                    "affine": [
                                                                        [
                                                                            "1",
                                                                            "0",
                                                                            "0",
                                                                            "0"
                                                                        ],
                                                                        [
                                                                            "0",
                                                                            "1",
                                                                            "0",
                                                                            "0"
                                                                        ],
                                                                        [
                                                                            "0",
                                                                            "0",
                                                                            "1",
                                                                            "0"
                                                                        ]
                                                                    ]
                                                                }
                                                            ]
                                                        }
                                                    ],
                                                    "criteria": [
                                                        {
                                                            "parent": "a",
                                                            "constraints": [
                                                                {
                                                                    "roles": [
                                                                        {
                                                                            "letter": "a",
                                                                            "index": 0
                                                                        }
                                                                    ],
                                                                    "coeffs": [
                                                                        [
                                                                            [
                                                                                "1",
                                                                                "0",
                                                                                "0"
                                                                            ]
                                                                        ]
                                                                    ],
                                                                    "target": [
                                                                        "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
                                                    },
                                                    "compatible_systems": [
                                                        "triclinic",
                                                        "monoclinic",
                                                        "orthorhombic",
                                                        "tetragonal",
                                                        "trigonal",
                                                        "hexagonal",
                                                        "cubic"
                                                    ],
                                                    "operation_kind": "affine"
                                                }
                                            ]
                                        }
                                    }
                                },
                                "examples": [
                                    {
                                        "normalizer_kind": "orthogonal_affine",
                                        "representation": "orthogonal_coset_representatives",
                                        "candidate_set": "signed_permutation_matrices",
                                        "n_symops": 47,
                                        "n_linear_parts": 47,
                                        "n_raw_candidates": 48,
                                        "n_unique_candidates": 48,
                                        "n_coset_representatives": 47,
                                        "bounds": {
                                            "det_abs": 1,
                                            "max_abs_linear_entry": 1
                                        },
                                        "symops": [
                                            {
                                                "affine_transformation": {
                                                    "xyz": "-x,-y,-z",
                                                    "matrix": [
                                                        [
                                                            "-1",
                                                            "0",
                                                            "0"
                                                        ],
                                                        [
                                                            "0",
                                                            "-1",
                                                            "0"
                                                        ],
                                                        [
                                                            "0",
                                                            "0",
                                                            "-1"
                                                        ]
                                                    ],
                                                    "vector": [
                                                        "0",
                                                        "0",
                                                        "0"
                                                    ],
                                                    "det": -1,
                                                    "is_orthogonal": true
                                                },
                                                "compatible_systems": [
                                                    "triclinic",
                                                    "monoclinic",
                                                    "orthorhombic",
                                                    "tetragonal",
                                                    "trigonal",
                                                    "hexagonal",
                                                    "cubic"
                                                ],
                                                "operation_kind": "orthogonal_affine"
                                            }
                                        ]
                                    }
                                ]
                            },
                            "affine_normalizer": {
                                "$id": "https://schemas.anyterial.se/defs/v0.1/properties/transformations/affine_normalizer",
                                "title": "Affine normalizer",
                                "x-optimade-type": "dictionary",
                                "x-optimade-definition": {
                                    "kind": "property",
                                    "version": "0.1.0",
                                    "format": "1.3",
                                    "name": "affine_normalizer",
                                    "label": "affine_normalizer_transformations"
                                },
                                "x-optimade-unit": "inapplicable",
                                "type": [
                                    "object",
                                    "null"
                                ],
                                "description": "Affine normalizer coset representatives for one crystallographic space-group setting.\n\nThe representatives are listed modulo the space group itself, so each listed operation represents an equivalence class of affine normalizer operations rather than every operation in that class.\nThis property contains representatives generated from bounded unimodular integer linear parts. It is a finite bounded representative table, not a complete infinite affine normalizer.\n\nThe `candidate_set` field belongs in this property because the listed representatives are produced from a deliberately restricted finite candidate set.\nFor this property `candidate_set` is `bounded_unimodular_integer_matrices`, meaning unimodular 3 by 3 integer matrices satisfying the recorded `bounds`.\nThe plural field `candidate_sets` is not part of the emitted data and MUST NOT be used here.\n\nThis property is one of three related normalizer tables for a setting:\n`euclidean_normalizer` holds the finite Euclidean normalizer operations obtained from cctbx,\n`orthogonal_affine_normalizer` holds the older bounded table restricted to signed-permutation linear parts,\nand this property holds the bounded table generated from unimodular integer linear parts, which is a superset of the orthogonal one.\n\n**Requirements/Conventions**:\n\n- It MUST be a dictionary with the following keys:\n\n    - **normalizer\\_kind**: REQUIRED; String.\n      Kind label for this normalizer contribution.\n\n    - **representation**: REQUIRED; String.\n      Representation label for the listed data.\n\n    - **candidate\\_set**: REQUIRED; String.\n      Name of the finite linear candidate set used for generation.\n\n    - **n\\_symops**: REQUIRED; Integer.\n      Number of listed coset representatives after metric-compatibility filtering.\n\n    - **n\\_linear\\_parts**: REQUIRED; Integer.\n      Number of distinct linear matrix parts represented in `symops`.\n\n    - **n\\_raw\\_candidates**: REQUIRED; Integer.\n      Number of affine candidates found before deduplication modulo the space group.\n\n    - **n\\_unique\\_candidates**: REQUIRED; Integer.\n      Number of unique affine candidates before quotienting by the space group.\n\n    - **n\\_coset\\_representatives**: REQUIRED; Integer.\n      Number of non-trivial coset representatives before metric-compatibility filtering.\n\n    - **bounds**: REQUIRED; Dictionary.\n      Simple numerical bounds defining the bounded unimodular integer candidate matrices.\n\n    - **symops**: REQUIRED; List of dictionaries.\n      Listed affine normalizer coset representatives.\n      Each item follows `/defs/v0.1/properties/symmetry/basis_transform`.\n      Each item MUST carry `compatible_systems`, the list of crystal systems for which the representative's linear part is compatible with a crystallographic metric.",
                                "properties": {
                                    "normalizer_kind": {
                                        "x-optimade-type": "string",
                                        "x-optimade-unit": "inapplicable",
                                        "type": [
                                            "string",
                                            "null"
                                        ],
                                        "description": "Kind label for this normalizer contribution."
                                    },
                                    "representation": {
                                        "x-optimade-type": "string",
                                        "x-optimade-unit": "inapplicable",
                                        "type": [
                                            "string",
                                            "null"
                                        ],
                                        "description": "Representation label for the listed normalizer data."
                                    },
                                    "candidate_set": {
                                        "x-optimade-type": "string",
                                        "x-optimade-unit": "inapplicable",
                                        "type": [
                                            "string",
                                            "null"
                                        ],
                                        "description": "Name of the finite linear candidate set used for generation."
                                    },
                                    "n_symops": {
                                        "$id": "https://schemas.anyterial.se/defs/v0.1/properties/spacegroups/n_symops",
                                        "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
                                        ]
                                    },
                                    "n_linear_parts": {
                                        "$id": "https://schemas.anyterial.se/defs/v0.1/properties/transformations/n_linear_parts",
                                        "title": "Number of linear parts",
                                        "x-optimade-type": "integer",
                                        "x-optimade-definition": {
                                            "kind": "property",
                                            "version": "0.1.0",
                                            "format": "1.3",
                                            "name": "n_linear_parts",
                                            "label": "n_linear_parts_transformations"
                                        },
                                        "type": [
                                            "integer",
                                            "null"
                                        ],
                                        "description": "Number of distinct linear matrix parts represented in a normalizer or transform table.\n\nDistinctness is determined by exact element-wise comparison of the 3 by 3 matrix parts of the listed operations.",
                                        "x-optimade-unit": "inapplicable",
                                        "examples": [
                                            2,
                                            4
                                        ]
                                    },
                                    "n_raw_candidates": {
                                        "x-optimade-type": "integer",
                                        "x-optimade-unit": "inapplicable",
                                        "type": [
                                            "integer",
                                            "null"
                                        ],
                                        "description": "Number of affine candidates found before deduplication modulo the space group."
                                    },
                                    "n_unique_candidates": {
                                        "x-optimade-type": "integer",
                                        "x-optimade-unit": "inapplicable",
                                        "type": [
                                            "integer",
                                            "null"
                                        ],
                                        "description": "Number of unique affine candidates before quotienting by the space group."
                                    },
                                    "n_coset_representatives": {
                                        "x-optimade-type": "integer",
                                        "x-optimade-unit": "inapplicable",
                                        "type": [
                                            "integer",
                                            "null"
                                        ],
                                        "description": "Number of non-trivial coset representatives before metric-compatibility filtering."
                                    },
                                    "bounds": {
                                        "x-optimade-type": "dictionary",
                                        "x-optimade-unit": "inapplicable",
                                        "type": [
                                            "object",
                                            "null"
                                        ],
                                        "description": "Simple numerical bounds defining the bounded unimodular integer candidate matrices.",
                                        "properties": {
                                            "det_abs": {
                                                "x-optimade-type": "integer",
                                                "x-optimade-unit": "inapplicable",
                                                "type": [
                                                    "integer",
                                                    "null"
                                                ],
                                                "description": "Required absolute determinant of every candidate matrix."
                                            },
                                            "max_abs_linear_entry": {
                                                "x-optimade-type": "integer",
                                                "x-optimade-unit": "inapplicable",
                                                "type": [
                                                    "integer",
                                                    "null"
                                                ],
                                                "description": "Maximum absolute entry value allowed in candidate matrices."
                                            }
                                        }
                                    },
                                    "symops": {
                                        "x-optimade-type": "list",
                                        "x-optimade-unit": "inapplicable",
                                        "type": [
                                            "array",
                                            "null"
                                        ],
                                        "description": "Listed affine normalizer coset representatives.",
                                        "items": {
                                            "$id": "https://schemas.anyterial.se/defs/v0.1/properties/symmetry/basis_transform",
                                            "title": "Basis transformation",
                                            "x-optimade-type": "dictionary",
                                            "x-optimade-definition": {
                                                "kind": "property",
                                                "version": "0.1.0",
                                                "format": "1.3",
                                                "name": "basis_transform",
                                                "label": "basis_transform_symmetry"
                                            },
                                            "x-optimade-unit": "inapplicable",
                                            "type": [
                                                "object",
                                                "null"
                                            ],
                                            "description": "One crystallographic transform between coordinate descriptions, settings, cells, or related group embeddings.\n\nThe affine map itself is stored in the embedded `affine_transformation` field.\nThe parent property defines the source and target coordinate systems and the precise role of the transform.\nUseful, for example, for representing setting changes, subgroup embeddings, isomorphic subgroup transforms, normalizer representatives, and same-space-group affine images.\nThis property is not limited to symmetry operations within one fixed setting; the matrix may be non-orthogonal or have determinant different from one when the transform changes cell or basis.\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 transform, using exact rational matrix and vector entries.\n      The coordinate convention and source/target interpretation are supplied by the parent property.\n\n    - **index**: OPTIONAL; Integer or null.\n      Index metadata whose interpretation is defined by the parent property.\n      Common uses include the subgroup index for subgroup embeddings, the cell index for isomorphic subgroup transforms, or an ordinal representative index in a finite transform table.\n\n    - **subgroup\\_type**: OPTIONAL; String.\n      International Tables subgroup-type label when the transform describes a maximal subgroup embedding.\n      The value MUST be `t` for a translationengleiche subgroup or `k` for a klassengleiche subgroup.\n      It MUST be omitted when the transform is not a maximal subgroup embedding.\n\n    - **k\\_subtype**: OPTIONAL; String or null.\n      Klassengleiche subtype when the transform describes a klassengleiche subgroup relation.\n      The value MUST be `loss_of_centering_translation` or `enlarged_unit_cell` for klassengleiche relations and null or omitted otherwise.\n\n    - **compatible\\_systems**: OPTIONAL; List of strings.\n      Crystal metric systems for which the transform is compatible.\n      This is used for bounded affine normalizer representatives.\n\n    - **operation\\_kind**: OPTIONAL; String.\n      Categorical label for normalizer-type representatives.\n      The value MUST be `euclidean` for Euclidean normalizer operations, `orthogonal_affine` for the signed-permutation affine normalizer subset, or `affine` for the bounded unimodular affine normalizer table.\n      It MUST be omitted when the transform is a setting transform, subgroup embedding, or other transform for which no normalizer operation class applies.\n\n    - **wyckoff\\_splitting**: OPTIONAL; List.\n      Wyckoff-position splitting metadata induced by the transform when available.\n      The list is grouped by explicit parent Wyckoff letter.\n\n    - **criteria**: OPTIONAL; List.\n      Backward-lift constraint metadata induced by the transform when available.\n      The list is grouped by explicit parent Wyckoff letter.",
                                            "properties": {
                                                "affine_transformation": {
                                                    "$id": "https://schemas.anyterial.se/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 affine transformation is a geometric transformation preserving points, straight lines, and parallelism (collinearity), but may not preserve Euclidean distances and angles.\nThe transformation is represented by a 3 by 3 matrix and a 3-vector, both serialized with exact string entries.\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\n    - **det**: OPTIONAL; Integer.\n      Determinant of `matrix` when the generator emits it.\n\n    - **is\\_orthogonal**: OPTIONAL; Boolean.\n      Whether `matrix` is orthogonal in the exact representation used by the generator.",
                                                    "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.anyterial.se/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.anyterial.se/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.anyterial.se/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."
                                                        },
                                                        "is_orthogonal": {
                                                            "x-optimade-type": "boolean",
                                                            "x-optimade-unit": "inapplicable",
                                                            "type": [
                                                                "boolean",
                                                                "null"
                                                            ],
                                                            "description": "Whether the matrix part is orthogonal."
                                                        }
                                                    },
                                                    "examples": [
                                                        {
                                                            "matrix": [
                                                                [
                                                                    "-1",
                                                                    "0",
                                                                    "0"
                                                                ],
                                                                [
                                                                    "0",
                                                                    "-1",
                                                                    "0"
                                                                ],
                                                                [
                                                                    "0",
                                                                    "0",
                                                                    "1"
                                                                ]
                                                            ],
                                                            "vector": [
                                                                "0",
                                                                "0",
                                                                "0"
                                                            ],
                                                            "xyz": "-x,-y,z",
                                                            "det": 1,
                                                            "is_orthogonal": true
                                                        }
                                                    ]
                                                },
                                                "index": {
                                                    "x-optimade-type": "integer",
                                                    "x-optimade-unit": "inapplicable",
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "description": "Index metadata whose interpretation is supplied by the parent property."
                                                },
                                                "subgroup_type": {
                                                    "x-optimade-type": "string",
                                                    "x-optimade-unit": "inapplicable",
                                                    "type": [
                                                        "string"
                                                    ],
                                                    "description": "International Tables subgroup-type label when applicable.",
                                                    "enum": [
                                                        "t",
                                                        "k"
                                                    ]
                                                },
                                                "k_subtype": {
                                                    "x-optimade-type": "string",
                                                    "x-optimade-unit": "inapplicable",
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ],
                                                    "description": "Klassengleiche subtype when applicable."
                                                },
                                                "compatible_systems": {
                                                    "x-optimade-type": "list",
                                                    "x-optimade-unit": "inapplicable",
                                                    "type": [
                                                        "array",
                                                        "null"
                                                    ],
                                                    "description": "Crystal metric systems compatible with the transform.",
                                                    "items": {
                                                        "x-optimade-type": "string",
                                                        "x-optimade-unit": "inapplicable",
                                                        "type": [
                                                            "string"
                                                        ],
                                                        "description": "One compatible crystal-system label.",
                                                        "enum": [
                                                            "triclinic",
                                                            "monoclinic",
                                                            "orthorhombic",
                                                            "tetragonal",
                                                            "trigonal",
                                                            "hexagonal",
                                                            "cubic"
                                                        ]
                                                    }
                                                },
                                                "operation_kind": {
                                                    "x-optimade-type": "string",
                                                    "x-optimade-unit": "inapplicable",
                                                    "type": [
                                                        "string"
                                                    ],
                                                    "description": "Categorical label for normalizer-type representatives.",
                                                    "enum": [
                                                        "euclidean",
                                                        "orthogonal_affine",
                                                        "affine"
                                                    ]
                                                },
                                                "wyckoff_splitting": {
                                                    "$id": "https://schemas.anyterial.se/defs/v0.1/properties/transformations/wyckoff_splitting",
                                                    "title": "Wyckoff splitting",
                                                    "x-optimade-type": "list",
                                                    "x-optimade-definition": {
                                                        "kind": "property",
                                                        "version": "0.1.0",
                                                        "format": "1.3",
                                                        "name": "wyckoff_splitting",
                                                        "label": "wyckoff_splitting_transformations"
                                                    },
                                                    "x-optimade-unit": "inapplicable",
                                                    "type": [
                                                        "array",
                                                        "null"
                                                    ],
                                                    "description": "Wyckoff-position splitting data associated with a subgroup or same-space-group transform.\n\nEach list item gives the split of one parent Wyckoff position.\nThe parent Wyckoff letter is stored in the `parent` field rather than as a JSON dictionary key.\n\n**Requirements/Conventions**:\n\n- It MUST be a list of dictionaries.\n- Each dictionary MUST contain `parent`, the Wyckoff letter in the parent setting.\n- Each dictionary MUST contain `splits`, an ordered list of subgroup Wyckoff-position assignments or coordinate expressions emitted by the generator.",
                                                    "items": {
                                                        "x-optimade-type": "dictionary",
                                                        "x-optimade-unit": "inapplicable",
                                                        "type": [
                                                            "object"
                                                        ],
                                                        "description": "Splitting data for one parent Wyckoff position.",
                                                        "required": [
                                                            "parent",
                                                            "splits"
                                                        ],
                                                        "properties": {
                                                            "parent": {
                                                                "x-optimade-type": "string",
                                                                "x-optimade-unit": "inapplicable",
                                                                "type": [
                                                                    "string"
                                                                ],
                                                                "description": "Parent Wyckoff letter."
                                                            },
                                                            "splits": {
                                                                "x-optimade-type": "list",
                                                                "x-optimade-unit": "inapplicable",
                                                                "type": [
                                                                    "array"
                                                                ],
                                                                "description": "Ordered split records for this parent Wyckoff letter.",
                                                                "items": {
                                                                    "x-optimade-type": "dictionary",
                                                                    "x-optimade-unit": "inapplicable",
                                                                    "type": [
                                                                        "object"
                                                                    ],
                                                                    "description": "One Wyckoff split record.",
                                                                    "required": [
                                                                        "letter",
                                                                        "xyz",
                                                                        "affine"
                                                                    ],
                                                                    "properties": {
                                                                        "letter": {
                                                                            "x-optimade-type": "string",
                                                                            "x-optimade-unit": "inapplicable",
                                                                            "type": [
                                                                                "string"
                                                                            ],
                                                                            "description": "Subgroup Wyckoff letter assigned by this split branch."
                                                                        },
                                                                        "xyz": {
                                                                            "x-optimade-type": "string",
                                                                            "x-optimade-unit": "inapplicable",
                                                                            "type": [
                                                                                "string"
                                                                            ],
                                                                            "description": "Coordinate expression for the split branch."
                                                                        },
                                                                        "affine": {
                                                                            "x-optimade-type": "list",
                                                                            "x-optimade-unit": "inapplicable",
                                                                            "x-optimade-dimensions": {
                                                                                "names": [
                                                                                    "dim_lattice",
                                                                                    "dim_affine"
                                                                                ],
                                                                                "sizes": [
                                                                                    3,
                                                                                    4
                                                                                ]
                                                                            },
                                                                            "type": [
                                                                                "array"
                                                                            ],
                                                                            "description": "Exact affine representation for the split branch as a 3 by 4 augmented matrix.\nEach row holds the three linear coefficients followed by the translation component, all as exact fraction strings.",
                                                                            "items": {
                                                                                "x-optimade-type": "list",
                                                                                "x-optimade-unit": "inapplicable",
                                                                                "x-optimade-dimensions": {
                                                                                    "names": [
                                                                                        "dim_affine"
                                                                                    ],
                                                                                    "sizes": [
                                                                                        4
                                                                                    ]
                                                                                },
                                                                                "type": [
                                                                                    "array"
                                                                                ],
                                                                                "description": "One row of the augmented affine matrix.",
                                                                                "items": {
                                                                                    "$id": "https://schemas.anyterial.se/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": [
                                                        [
                                                            {
                                                                "parent": "c",
                                                                "splits": [
                                                                    {
                                                                        "letter": "e",
                                                                        "xyz": "x,y,z",
                                                                        "affine": [
                                                                            [
                                                                                "1",
                                                                                "0",
                                                                                "0",
                                                                                "0"
                                                                            ],
                                                                            [
                                                                                "0",
                                                                                "1",
                                                                                "0",
                                                                                "0"
                                                                            ],
                                                                            [
                                                                                "0",
                                                                                "0",
                                                                                "1",
                                                                                "0"
                                                                            ]
                                                                        ]
                                                                    }
                                                                ]
                                                            }
                                                        ]
                                                    ]
                                                },
                                                "criteria": {
                                                    "x-optimade-type": "list",
                                                    "x-optimade-unit": "inapplicable",
                                                    "type": [
                                                        "array",
                                                        "null"
                                                    ],
                                                    "description": "Backward-lift constraint metadata induced by the transform, grouped by explicit parent Wyckoff letter.",
                                                    "items": {
                                                        "x-optimade-type": "dictionary",
                                                        "x-optimade-unit": "inapplicable",
                                                        "type": [
                                                            "object"
                                                        ],
                                                        "description": "Backward-lift constraints for one parent Wyckoff position.",
                                                        "required": [
                                                            "parent",
                                                            "constraints"
                                                        ],
                                                        "properties": {
                                                            "parent": {
                                                                "x-optimade-type": "string",
                                                                "x-optimade-unit": "inapplicable",
                                                                "type": [
                                                                    "string"
                                                                ],
                                                                "description": "Parent Wyckoff letter."
                                                            },
                                                            "constraints": {
                                                                "x-optimade-type": "list",
                                                                "x-optimade-unit": "inapplicable",
                                                                "type": [
                                                                    "array"
                                                                ],
                                                                "description": "Constraint records for this parent Wyckoff letter.",
                                                                "items": {
                                                                    "x-optimade-type": "dictionary",
                                                                    "x-optimade-unit": "inapplicable",
                                                                    "type": [
                                                                        "object"
                                                                    ],
                                                                    "description": "One linear backward-lift constraint record.",
                                                                    "properties": {
                                                                        "roles": {
                                                                            "x-optimade-type": "list",
                                                                            "x-optimade-unit": "inapplicable",
                                                                            "type": [
                                                                                "array"
                                                                            ],
                                                                            "description": "Wyckoff-position role references entering the constraint.",
                                                                            "items": {
                                                                                "x-optimade-type": "dictionary",
                                                                                "x-optimade-unit": "inapplicable",
                                                                                "type": [
                                                                                    "object"
                                                                                ],
                                                                                "description": "One role reference.",
                                                                                "required": [
                                                                                    "letter",
                                                                                    "index"
                                                                                ],
                                                                                "properties": {
                                                                                    "letter": {
                                                                                        "x-optimade-type": "string",
                                                                                        "x-optimade-unit": "inapplicable",
                                                                                        "type": [
                                                                                            "string"
                                                                                        ],
                                                                                        "description": "Wyckoff letter for the referenced role."
                                                                                    },
                                                                                    "index": {
                                                                                        "x-optimade-type": "integer",
                                                                                        "x-optimade-unit": "inapplicable",
                                                                                        "type": [
                                                                                            "integer"
                                                                                        ],
                                                                                        "description": "Zero-based occurrence index for the role."
                                                                                    }
                                                                                }
                                                                            }
                                                                        },
                                                                        "coeffs": {
                                                                            "x-optimade-type": "list",
                                                                            "x-optimade-unit": "inapplicable",
                                                                            "type": [
                                                                                "array"
                                                                            ],
                                                                            "description": "Exact coefficient vectors for the constraint.",
                                                                            "items": {
                                                                                "x-optimade-type": "list",
                                                                                "x-optimade-unit": "inapplicable",
                                                                                "type": [
                                                                                    "array"
                                                                                ],
                                                                                "description": "Coefficients associated with one role.",
                                                                                "items": {
                                                                                    "x-optimade-type": "list",
                                                                                    "x-optimade-unit": "inapplicable",
                                                                                    "x-optimade-dimensions": {
                                                                                        "names": [
                                                                                            "dim_lattice"
                                                                                        ],
                                                                                        "sizes": [
                                                                                            3
                                                                                        ]
                                                                                    },
                                                                                    "type": [
                                                                                        "array"
                                                                                    ],
                                                                                    "description": "One exact coefficient vector.",
                                                                                    "items": {
                                                                                        "$id": "https://schemas.anyterial.se/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"
                                                                                    }
                                                                                }
                                                                            }
                                                                        },
                                                                        "target": {
                                                                            "x-optimade-type": "list",
                                                                            "x-optimade-unit": "inapplicable",
                                                                            "type": [
                                                                                "array"
                                                                            ],
                                                                            "description": "Exact target vector or scalar for the constraint.",
                                                                            "items": {
                                                                                "$id": "https://schemas.anyterial.se/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",
                                                                "2"
                                                            ]
                                                        ],
                                                        "vector": [
                                                            "0",
                                                            "0",
                                                            "0"
                                                        ],
                                                        "xyz": "x,y,2z",
                                                        "det": 2,
                                                        "is_orthogonal": false
                                                    },
                                                    "index": 2,
                                                    "subgroup_type": "k",
                                                    "k_subtype": "enlarged_unit_cell",
                                                    "wyckoff_splitting": [
                                                        {
                                                            "parent": "a",
                                                            "splits": [
                                                                {
                                                                    "letter": "a",
                                                                    "xyz": "x,y,z",
                                                                    "affine": [
                                                                        [
                                                                            "1",
                                                                            "0",
                                                                            "0",
                                                                            "0"
                                                                        ],
                                                                        [
                                                                            "0",
                                                                            "1",
                                                                            "0",
                                                                            "0"
                                                                        ],
                                                                        [
                                                                            "0",
                                                                            "0",
                                                                            "1",
                                                                            "0"
                                                                        ]
                                                                    ]
                                                                }
                                                            ]
                                                        }
                                                    ],
                                                    "criteria": [
                                                        {
                                                            "parent": "a",
                                                            "constraints": [
                                                                {
                                                                    "roles": [
                                                                        {
                                                                            "letter": "a",
                                                                            "index": 0
                                                                        }
                                                                    ],
                                                                    "coeffs": [
                                                                        [
                                                                            [
                                                                                "1",
                                                                                "0",
                                                                                "0"
                                                                            ]
                                                                        ]
                                                                    ],
                                                                    "target": [
                                                                        "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
                                                    },
                                                    "compatible_systems": [
                                                        "triclinic",
                                                        "monoclinic",
                                                        "orthorhombic",
                                                        "tetragonal",
                                                        "trigonal",
                                                        "hexagonal",
                                                        "cubic"
                                                    ],
                                                    "operation_kind": "affine"
                                                }
                                            ]
                                        }
                                    }
                                },
                                "examples": [
                                    {
                                        "normalizer_kind": "affine",
                                        "representation": "bounded_coset_representatives",
                                        "candidate_set": "bounded_unimodular_integer_matrices",
                                        "n_symops": 63,
                                        "n_linear_parts": 63,
                                        "n_raw_candidates": 6960,
                                        "n_unique_candidates": 6960,
                                        "n_coset_representatives": 6959,
                                        "bounds": {
                                            "det_abs": 1,
                                            "max_abs_linear_entry": 1
                                        },
                                        "symops": [
                                            {
                                                "affine_transformation": {
                                                    "xyz": "-x,-y,-z",
                                                    "matrix": [
                                                        [
                                                            "-1",
                                                            "0",
                                                            "0"
                                                        ],
                                                        [
                                                            "0",
                                                            "-1",
                                                            "0"
                                                        ],
                                                        [
                                                            "0",
                                                            "0",
                                                            "-1"
                                                        ]
                                                    ],
                                                    "vector": [
                                                        "0",
                                                        "0",
                                                        "0"
                                                    ],
                                                    "det": -1,
                                                    "is_orthogonal": true
                                                },
                                                "compatible_systems": [
                                                    "triclinic",
                                                    "monoclinic",
                                                    "orthorhombic",
                                                    "tetragonal",
                                                    "trigonal",
                                                    "hexagonal",
                                                    "cubic"
                                                ],
                                                "operation_kind": "affine"
                                            }
                                        ]
                                    }
                                ]
                            },
                            "continuous_normalizer": {
                                "$id": "https://schemas.anyterial.se/defs/v0.1/properties/transformations/continuous_normalizer",
                                "title": "Continuous normalizer",
                                "x-optimade-type": "dictionary",
                                "x-optimade-definition": {
                                    "kind": "property",
                                    "version": "0.1.0",
                                    "format": "1.3",
                                    "name": "continuous_normalizer",
                                    "label": "continuous_normalizer_transformations"
                                },
                                "x-optimade-unit": "inapplicable",
                                "type": [
                                    "object",
                                    "null"
                                ],
                                "description": "Parameterized continuous normalizer subspace for a setting.\n\nIt describes continuous origin-shift freedoms by dimension and fractional-coordinate basis vectors rather than by enumerating infinitely many operations.\n\n**Requirements/Conventions**:\n\n- It MUST be a dictionary with the following keys:\n\n    - **dimension**: OPTIONAL; Integer.\n      Dimension of the continuous parameter subspace.\n      When present, it MUST equal the length of `basis_vectors`.\n\n    - **basis\\_vectors**: REQUIRED; List of vectors.\n      Basis vectors spanning the continuous normalizer parameter space.\n      Each basis vector is represented as exact fractional-coordinate components.\n\n    - **coordinate\\_system**: OPTIONAL; String.\n      Coordinate system used for the parameter vectors.\n\n    - **representation**: OPTIONAL; String.\n      Textual description of the parameterized representation.",
                                "properties": {
                                    "dimension": {
                                        "x-optimade-type": "integer",
                                        "x-optimade-unit": "inapplicable",
                                        "type": [
                                            "integer",
                                            "null"
                                        ],
                                        "description": "Dimension of the continuous parameter subspace. When present, it MUST equal the length of `basis_vectors`."
                                    },
                                    "basis_vectors": {
                                        "x-optimade-type": "list",
                                        "x-optimade-unit": "inapplicable",
                                        "type": [
                                            "array",
                                            "null"
                                        ],
                                        "description": "Basis vectors spanning the continuous normalizer parameter space.",
                                        "items": {
                                            "x-optimade-type": "list",
                                            "x-optimade-unit": "inapplicable",
                                            "x-optimade-dimensions": {
                                                "names": [
                                                    "dim_lattice"
                                                ],
                                                "sizes": [
                                                    3
                                                ]
                                            },
                                            "type": [
                                                "array"
                                            ],
                                            "description": "One basis vector in fractional coordinates.",
                                            "items": {
                                                "$id": "https://schemas.anyterial.se/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"
                                            }
                                        }
                                    },
                                    "coordinate_system": {
                                        "x-optimade-type": "string",
                                        "x-optimade-unit": "inapplicable",
                                        "type": [
                                            "string",
                                            "null"
                                        ],
                                        "description": "Coordinate system used for the parameter vectors."
                                    },
                                    "representation": {
                                        "x-optimade-type": "string",
                                        "x-optimade-unit": "inapplicable",
                                        "type": [
                                            "string",
                                            "null"
                                        ],
                                        "description": "Textual description of the parameterized representation."
                                    }
                                },
                                "examples": [
                                    {
                                        "dimension": 3,
                                        "coordinate_system": "fractional",
                                        "basis_vectors": [
                                            [
                                                "1",
                                                "0",
                                                "0"
                                            ],
                                            [
                                                "0",
                                                "1",
                                                "0"
                                            ],
                                            [
                                                "0",
                                                "0",
                                                "1"
                                            ]
                                        ]
                                    }
                                ]
                            },
                            "isomorphic_subgroups": {
                                "$id": "https://schemas.anyterial.se/defs/v0.1/properties/transformations/isomorphic_subgroups",
                                "title": "Isomorphic subgroup transforms",
                                "x-optimade-type": "dictionary",
                                "x-optimade-definition": {
                                    "kind": "property",
                                    "version": "0.1.0",
                                    "format": "1.3",
                                    "name": "isomorphic_subgroups",
                                    "label": "isomorphic_subgroups_transformations"
                                },
                                "x-optimade-unit": "inapplicable",
                                "type": [
                                    "object",
                                    "null"
                                ],
                                "description": "Isomorphic subgroup transforms of bounded index for one parent setting or space-group type.\n\nAn isomorphic subgroup has the same space-group type as the parent but is embedded with a finite index, usually corresponding to an enlarged unit cell or a sublattice choice.\nThese transforms are useful for algorithms that need to enumerate same-type subgroup embeddings, compare structures under supercell changes, or construct bounded same-space-group refinement paths.\n\nThe transform records use the basis-transform convention represented by `matrix` and `vector`.\nThe `index` field is the subgroup index and equals the determinant factor of the basis transformation.\nThe generator currently searches indices up to its configured maximum index and deduplicates equivalent transforms under normalizer equivalence.\n\n**Requirements/Conventions**:\n\n- It MUST be a dictionary containing an `items` list.\n- Each item in `items` MUST describe one exact isomorphic subgroup transform.\n- Matrix and vector entries MUST be exact strings, using integer strings or fraction strings as appropriate.",
                                "properties": {
                                    "items": {
                                        "x-optimade-type": "list",
                                        "x-optimade-unit": "inapplicable",
                                        "type": [
                                            "array",
                                            "null"
                                        ],
                                        "description": "Isomorphic subgroup transform records for one parent key.",
                                        "items": {
                                            "$id": "https://schemas.anyterial.se/defs/v0.1/properties/symmetry/basis_transform",
                                            "title": "Basis transformation",
                                            "x-optimade-type": "dictionary",
                                            "x-optimade-definition": {
                                                "kind": "property",
                                                "version": "0.1.0",
                                                "format": "1.3",
                                                "name": "basis_transform",
                                                "label": "basis_transform_symmetry"
                                            },
                                            "x-optimade-unit": "inapplicable",
                                            "type": [
                                                "object",
                                                "null"
                                            ],
                                            "description": "One crystallographic transform between coordinate descriptions, settings, cells, or related group embeddings.\n\nThe affine map itself is stored in the embedded `affine_transformation` field.\nThe parent property defines the source and target coordinate systems and the precise role of the transform.\nUseful, for example, for representing setting changes, subgroup embeddings, isomorphic subgroup transforms, normalizer representatives, and same-space-group affine images.\nThis property is not limited to symmetry operations within one fixed setting; the matrix may be non-orthogonal or have determinant different from one when the transform changes cell or basis.\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 transform, using exact rational matrix and vector entries.\n      The coordinate convention and source/target interpretation are supplied by the parent property.\n\n    - **index**: OPTIONAL; Integer or null.\n      Index metadata whose interpretation is defined by the parent property.\n      Common uses include the subgroup index for subgroup embeddings, the cell index for isomorphic subgroup transforms, or an ordinal representative index in a finite transform table.\n\n    - **subgroup\\_type**: OPTIONAL; String.\n      International Tables subgroup-type label when the transform describes a maximal subgroup embedding.\n      The value MUST be `t` for a translationengleiche subgroup or `k` for a klassengleiche subgroup.\n      It MUST be omitted when the transform is not a maximal subgroup embedding.\n\n    - **k\\_subtype**: OPTIONAL; String or null.\n      Klassengleiche subtype when the transform describes a klassengleiche subgroup relation.\n      The value MUST be `loss_of_centering_translation` or `enlarged_unit_cell` for klassengleiche relations and null or omitted otherwise.\n\n    - **compatible\\_systems**: OPTIONAL; List of strings.\n      Crystal metric systems for which the transform is compatible.\n      This is used for bounded affine normalizer representatives.\n\n    - **operation\\_kind**: OPTIONAL; String.\n      Categorical label for normalizer-type representatives.\n      The value MUST be `euclidean` for Euclidean normalizer operations, `orthogonal_affine` for the signed-permutation affine normalizer subset, or `affine` for the bounded unimodular affine normalizer table.\n      It MUST be omitted when the transform is a setting transform, subgroup embedding, or other transform for which no normalizer operation class applies.\n\n    - **wyckoff\\_splitting**: OPTIONAL; List.\n      Wyckoff-position splitting metadata induced by the transform when available.\n      The list is grouped by explicit parent Wyckoff letter.\n\n    - **criteria**: OPTIONAL; List.\n      Backward-lift constraint metadata induced by the transform when available.\n      The list is grouped by explicit parent Wyckoff letter.",
                                            "properties": {
                                                "affine_transformation": {
                                                    "$id": "https://schemas.anyterial.se/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 affine transformation is a geometric transformation preserving points, straight lines, and parallelism (collinearity), but may not preserve Euclidean distances and angles.\nThe transformation is represented by a 3 by 3 matrix and a 3-vector, both serialized with exact string entries.\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\n    - **det**: OPTIONAL; Integer.\n      Determinant of `matrix` when the generator emits it.\n\n    - **is\\_orthogonal**: OPTIONAL; Boolean.\n      Whether `matrix` is orthogonal in the exact representation used by the generator.",
                                                    "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.anyterial.se/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.anyterial.se/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.anyterial.se/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."
                                                        },
                                                        "is_orthogonal": {
                                                            "x-optimade-type": "boolean",
                                                            "x-optimade-unit": "inapplicable",
                                                            "type": [
                                                                "boolean",
                                                                "null"
                                                            ],
                                                            "description": "Whether the matrix part is orthogonal."
                                                        }
                                                    },
                                                    "examples": [
                                                        {
                                                            "matrix": [
                                                                [
                                                                    "-1",
                                                                    "0",
                                                                    "0"
                                                                ],
                                                                [
                                                                    "0",
                                                                    "-1",
                                                                    "0"
                                                                ],
                                                                [
                                                                    "0",
                                                                    "0",
                                                                    "1"
                                                                ]
                                                            ],
                                                            "vector": [
                                                                "0",
                                                                "0",
                                                                "0"
                                                            ],
                                                            "xyz": "-x,-y,z",
                                                            "det": 1,
                                                            "is_orthogonal": true
                                                        }
                                                    ]
                                                },
                                                "index": {
                                                    "x-optimade-type": "integer",
                                                    "x-optimade-unit": "inapplicable",
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "description": "Index metadata whose interpretation is supplied by the parent property."
                                                },
                                                "subgroup_type": {
                                                    "x-optimade-type": "string",
                                                    "x-optimade-unit": "inapplicable",
                                                    "type": [
                                                        "string"
                                                    ],
                                                    "description": "International Tables subgroup-type label when applicable.",
                                                    "enum": [
                                                        "t",
                                                        "k"
                                                    ]
                                                },
                                                "k_subtype": {
                                                    "x-optimade-type": "string",
                                                    "x-optimade-unit": "inapplicable",
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ],
                                                    "description": "Klassengleiche subtype when applicable."
                                                },
                                                "compatible_systems": {
                                                    "x-optimade-type": "list",
                                                    "x-optimade-unit": "inapplicable",
                                                    "type": [
                                                        "array",
                                                        "null"
                                                    ],
                                                    "description": "Crystal metric systems compatible with the transform.",
                                                    "items": {
                                                        "x-optimade-type": "string",
                                                        "x-optimade-unit": "inapplicable",
                                                        "type": [
                                                            "string"
                                                        ],
                                                        "description": "One compatible crystal-system label.",
                                                        "enum": [
                                                            "triclinic",
                                                            "monoclinic",
                                                            "orthorhombic",
                                                            "tetragonal",
                                                            "trigonal",
                                                            "hexagonal",
                                                            "cubic"
                                                        ]
                                                    }
                                                },
                                                "operation_kind": {
                                                    "x-optimade-type": "string",
                                                    "x-optimade-unit": "inapplicable",
                                                    "type": [
                                                        "string"
                                                    ],
                                                    "description": "Categorical label for normalizer-type representatives.",
                                                    "enum": [
                                                        "euclidean",
                                                        "orthogonal_affine",
                                                        "affine"
                                                    ]
                                                },
                                                "wyckoff_splitting": {
                                                    "$id": "https://schemas.anyterial.se/defs/v0.1/properties/transformations/wyckoff_splitting",
                                                    "title": "Wyckoff splitting",
                                                    "x-optimade-type": "list",
                                                    "x-optimade-definition": {
                                                        "kind": "property",
                                                        "version": "0.1.0",
                                                        "format": "1.3",
                                                        "name": "wyckoff_splitting",
                                                        "label": "wyckoff_splitting_transformations"
                                                    },
                                                    "x-optimade-unit": "inapplicable",
                                                    "type": [
                                                        "array",
                                                        "null"
                                                    ],
                                                    "description": "Wyckoff-position splitting data associated with a subgroup or same-space-group transform.\n\nEach list item gives the split of one parent Wyckoff position.\nThe parent Wyckoff letter is stored in the `parent` field rather than as a JSON dictionary key.\n\n**Requirements/Conventions**:\n\n- It MUST be a list of dictionaries.\n- Each dictionary MUST contain `parent`, the Wyckoff letter in the parent setting.\n- Each dictionary MUST contain `splits`, an ordered list of subgroup Wyckoff-position assignments or coordinate expressions emitted by the generator.",
                                                    "items": {
                                                        "x-optimade-type": "dictionary",
                                                        "x-optimade-unit": "inapplicable",
                                                        "type": [
                                                            "object"
                                                        ],
                                                        "description": "Splitting data for one parent Wyckoff position.",
                                                        "required": [
                                                            "parent",
                                                            "splits"
                                                        ],
                                                        "properties": {
                                                            "parent": {
                                                                "x-optimade-type": "string",
                                                                "x-optimade-unit": "inapplicable",
                                                                "type": [
                                                                    "string"
                                                                ],
                                                                "description": "Parent Wyckoff letter."
                                                            },
                                                            "splits": {
                                                                "x-optimade-type": "list",
                                                                "x-optimade-unit": "inapplicable",
                                                                "type": [
                                                                    "array"
                                                                ],
                                                                "description": "Ordered split records for this parent Wyckoff letter.",
                                                                "items": {
                                                                    "x-optimade-type": "dictionary",
                                                                    "x-optimade-unit": "inapplicable",
                                                                    "type": [
                                                                        "object"
                                                                    ],
                                                                    "description": "One Wyckoff split record.",
                                                                    "required": [
                                                                        "letter",
                                                                        "xyz",
                                                                        "affine"
                                                                    ],
                                                                    "properties": {
                                                                        "letter": {
                                                                            "x-optimade-type": "string",
                                                                            "x-optimade-unit": "inapplicable",
                                                                            "type": [
                                                                                "string"
                                                                            ],
                                                                            "description": "Subgroup Wyckoff letter assigned by this split branch."
                                                                        },
                                                                        "xyz": {
                                                                            "x-optimade-type": "string",
                                                                            "x-optimade-unit": "inapplicable",
                                                                            "type": [
                                                                                "string"
                                                                            ],
                                                                            "description": "Coordinate expression for the split branch."
                                                                        },
                                                                        "affine": {
                                                                            "x-optimade-type": "list",
                                                                            "x-optimade-unit": "inapplicable",
                                                                            "x-optimade-dimensions": {
                                                                                "names": [
                                                                                    "dim_lattice",
                                                                                    "dim_affine"
                                                                                ],
                                                                                "sizes": [
                                                                                    3,
                                                                                    4
                                                                                ]
                                                                            },
                                                                            "type": [
                                                                                "array"
                                                                            ],
                                                                            "description": "Exact affine representation for the split branch as a 3 by 4 augmented matrix.\nEach row holds the three linear coefficients followed by the translation component, all as exact fraction strings.",
                                                                            "items": {
                                                                                "x-optimade-type": "list",
                                                                                "x-optimade-unit": "inapplicable",
                                                                                "x-optimade-dimensions": {
                                                                                    "names": [
                                                                                        "dim_affine"
                                                                                    ],
                                                                                    "sizes": [
                                                                                        4
                                                                                    ]
                                                                                },
                                                                                "type": [
                                                                                    "array"
                                                                                ],
                                                                                "description": "One row of the augmented affine matrix.",
                                                                                "items": {
                                                                                    "$id": "https://schemas.anyterial.se/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": [
                                                        [
                                                            {
                                                                "parent": "c",
                                                                "splits": [
                                                                    {
                                                                        "letter": "e",
                                                                        "xyz": "x,y,z",
                                                                        "affine": [
                                                                            [
                                                                                "1",
                                                                                "0",
                                                                                "0",
                                                                                "0"
                                                                            ],
                                                                            [
                                                                                "0",
                                                                                "1",
                                                                                "0",
                                                                                "0"
                                                                            ],
                                                                            [
                                                                                "0",
                                                                                "0",
                                                                                "1",
                                                                                "0"
                                                                            ]
                                                                        ]
                                                                    }
                                                                ]
                                                            }
                                                        ]
                                                    ]
                                                },
                                                "criteria": {
                                                    "x-optimade-type": "list",
                                                    "x-optimade-unit": "inapplicable",
                                                    "type": [
                                                        "array",
                                                        "null"
                                                    ],
                                                    "description": "Backward-lift constraint metadata induced by the transform, grouped by explicit parent Wyckoff letter.",
                                                    "items": {
                                                        "x-optimade-type": "dictionary",
                                                        "x-optimade-unit": "inapplicable",
                                                        "type": [
                                                            "object"
                                                        ],
                                                        "description": "Backward-lift constraints for one parent Wyckoff position.",
                                                        "required": [
                                                            "parent",
                                                            "constraints"
                                                        ],
                                                        "properties": {
                                                            "parent": {
                                                                "x-optimade-type": "string",
                                                                "x-optimade-unit": "inapplicable",
                                                                "type": [
                                                                    "string"
                                                                ],
                                                                "description": "Parent Wyckoff letter."
                                                            },
                                                            "constraints": {
                                                                "x-optimade-type": "list",
                                                                "x-optimade-unit": "inapplicable",
                                                                "type": [
                                                                    "array"
                                                                ],
                                                                "description": "Constraint records for this parent Wyckoff letter.",
                                                                "items": {
                                                                    "x-optimade-type": "dictionary",
                                                                    "x-optimade-unit": "inapplicable",
                                                                    "type": [
                                                                        "object"
                                                                    ],
                                                                    "description": "One linear backward-lift constraint record.",
                                                                    "properties": {
                                                                        "roles": {
                                                                            "x-optimade-type": "list",
                                                                            "x-optimade-unit": "inapplicable",
                                                                            "type": [
                                                                                "array"
                                                                            ],
                                                                            "description": "Wyckoff-position role references entering the constraint.",
                                                                            "items": {
                                                                                "x-optimade-type": "dictionary",
                                                                                "x-optimade-unit": "inapplicable",
                                                                                "type": [
                                                                                    "object"
                                                                                ],
                                                                                "description": "One role reference.",
                                                                                "required": [
                                                                                    "letter",
                                                                                    "index"
                                                                                ],
                                                                                "properties": {
                                                                                    "letter": {
                                                                                        "x-optimade-type": "string",
                                                                                        "x-optimade-unit": "inapplicable",
                                                                                        "type": [
                                                                                            "string"
                                                                                        ],
                                                                                        "description": "Wyckoff letter for the referenced role."
                                                                                    },
                                                                                    "index": {
                                                                                        "x-optimade-type": "integer",
                                                                                        "x-optimade-unit": "inapplicable",
                                                                                        "type": [
                                                                                            "integer"
                                                                                        ],
                                                                                        "description": "Zero-based occurrence index for the role."
                                                                                    }
                                                                                }
                                                                            }
                                                                        },
                                                                        "coeffs": {
                                                                            "x-optimade-type": "list",
                                                                            "x-optimade-unit": "inapplicable",
                                                                            "type": [
                                                                                "array"
                                                                            ],
                                                                            "description": "Exact coefficient vectors for the constraint.",
                                                                            "items": {
                                                                                "x-optimade-type": "list",
                                                                                "x-optimade-unit": "inapplicable",
                                                                                "type": [
                                                                                    "array"
                                                                                ],
                                                                                "description": "Coefficients associated with one role.",
                                                                                "items": {
                                                                                    "x-optimade-type": "list",
                                                                                    "x-optimade-unit": "inapplicable",
                                                                                    "x-optimade-dimensions": {
                                                                                        "names": [
                                                                                            "dim_lattice"
                                                                                        ],
                                                                                        "sizes": [
                                                                                            3
                                                                                        ]
                                                                                    },
                                                                                    "type": [
                                                                                        "array"
                                                                                    ],
                                                                                    "description": "One exact coefficient vector.",
                                                                                    "items": {
                                                                                        "$id": "https://schemas.anyterial.se/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"
                                                                                    }
                                                                                }
                                                                            }
                                                                        },
                                                                        "target": {
                                                                            "x-optimade-type": "list",
                                                                            "x-optimade-unit": "inapplicable",
                                                                            "type": [
                                                                                "array"
                                                                            ],
                                                                            "description": "Exact target vector or scalar for the constraint.",
                                                                            "items": {
                                                                                "$id": "https://schemas.anyterial.se/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",
                                                                "2"
                                                            ]
                                                        ],
                                                        "vector": [
                                                            "0",
                                                            "0",
                                                            "0"
                                                        ],
                                                        "xyz": "x,y,2z",
                                                        "det": 2,
                                                        "is_orthogonal": false
                                                    },
                                                    "index": 2,
                                                    "subgroup_type": "k",
                                                    "k_subtype": "enlarged_unit_cell",
                                                    "wyckoff_splitting": [
                                                        {
                                                            "parent": "a",
                                                            "splits": [
                                                                {
                                                                    "letter": "a",
                                                                    "xyz": "x,y,z",
                                                                    "affine": [
                                                                        [
                                                                            "1",
                                                                            "0",
                                                                            "0",
                                                                            "0"
                                                                        ],
                                                                        [
                                                                            "0",
                                                                            "1",
                                                                            "0",
                                                                            "0"
                                                                        ],
                                                                        [
                                                                            "0",
                                                                            "0",
                                                                            "1",
                                                                            "0"
                                                                        ]
                                                                    ]
                                                                }
                                                            ]
                                                        }
                                                    ],
                                                    "criteria": [
                                                        {
                                                            "parent": "a",
                                                            "constraints": [
                                                                {
                                                                    "roles": [
                                                                        {
                                                                            "letter": "a",
                                                                            "index": 0
                                                                        }
                                                                    ],
                                                                    "coeffs": [
                                                                        [
                                                                            [
                                                                                "1",
                                                                                "0",
                                                                                "0"
                                                                            ]
                                                                        ]
                                                                    ],
                                                                    "target": [
                                                                        "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
                                                    },
                                                    "compatible_systems": [
                                                        "triclinic",
                                                        "monoclinic",
                                                        "orthorhombic",
                                                        "tetragonal",
                                                        "trigonal",
                                                        "hexagonal",
                                                        "cubic"
                                                    ],
                                                    "operation_kind": "affine"
                                                }
                                            ]
                                        }
                                    }
                                },
                                "examples": [
                                    {
                                        "items": [
                                            {
                                                "index": 2,
                                                "wyckoff_splitting": {
                                                    "a": [
                                                        [
                                                            "a",
                                                            "x,y,z",
                                                            [
                                                                [
                                                                    "1",
                                                                    "0",
                                                                    "0",
                                                                    "0"
                                                                ],
                                                                [
                                                                    "0",
                                                                    "1",
                                                                    "0",
                                                                    "0"
                                                                ],
                                                                [
                                                                    "0",
                                                                    "0",
                                                                    "1/2",
                                                                    "1/2"
                                                                ]
                                                            ]
                                                        ],
                                                        [
                                                            "a",
                                                            "x,y,z",
                                                            [
                                                                [
                                                                    "1",
                                                                    "0",
                                                                    "0",
                                                                    "0"
                                                                ],
                                                                [
                                                                    "0",
                                                                    "1",
                                                                    "0",
                                                                    "0"
                                                                ],
                                                                [
                                                                    "0",
                                                                    "0",
                                                                    "1/2",
                                                                    "0"
                                                                ]
                                                            ]
                                                        ]
                                                    ]
                                                },
                                                "affine_transformation": {
                                                    "matrix": [
                                                        [
                                                            "1",
                                                            "0",
                                                            "0"
                                                        ],
                                                        [
                                                            "0",
                                                            "1",
                                                            "0"
                                                        ],
                                                        [
                                                            "0",
                                                            "0",
                                                            "2"
                                                        ]
                                                    ],
                                                    "vector": [
                                                        "0",
                                                        "0",
                                                        "0"
                                                    ]
                                                }
                                            }
                                        ]
                                    }
                                ]
                            },
                            "baernighausen": {
                                "$id": "https://schemas.anyterial.se/defs/v0.1/properties/transformations/baernighausen",
                                "title": "B\u00e4rnighausen subgroup transforms",
                                "x-optimade-type": "list",
                                "x-optimade-definition": {
                                    "kind": "property",
                                    "version": "0.1.0",
                                    "format": "1.3",
                                    "name": "baernighausen",
                                    "label": "baernighausen_transformations"
                                },
                                "x-optimade-unit": "inapplicable",
                                "type": [
                                    "array",
                                    "null"
                                ],
                                "description": "B\u00e4rnighausen subgroup transform table for one parent setting or space-group type.\n\nEntries describe generated embeddings of subgroup settings into the containing parent setting.\nEach list item groups transform records for one target subgroup, with the target stored as ordinary data rather than as a JSON dictionary key.\nTransform records follow `/properties/symmetry/basis_transform`.\n\n**Requirements/Conventions**:\n\n- It MUST be a list of dictionaries.\n- Each dictionary MUST contain either `target_hall_entry` or `target_it_number`, depending on whether the containing dataset is Hall-setting keyed or IT-number keyed.\n- Each dictionary MUST contain `transforms`, a list of basis-transform records.",
                                "items": {
                                    "x-optimade-type": "dictionary",
                                    "x-optimade-unit": "inapplicable",
                                    "type": [
                                        "object"
                                    ],
                                    "description": "B\u00e4rnighausen transform group for one target subgroup.",
                                    "required": [
                                        "transforms"
                                    ],
                                    "properties": {
                                        "target_hall_entry": {
                                            "x-optimade-type": "string",
                                            "x-optimade-unit": "inapplicable",
                                            "type": [
                                                "string",
                                                "null"
                                            ],
                                            "description": "Target Hall entry when the containing dataset is Hall-setting keyed."
                                        },
                                        "target_it_number": {
                                            "x-optimade-type": "integer",
                                            "x-optimade-unit": "inapplicable",
                                            "type": [
                                                "integer",
                                                "null"
                                            ],
                                            "description": "Target International Tables number when the containing dataset is IT-number keyed."
                                        },
                                        "transforms": {
                                            "x-optimade-type": "list",
                                            "x-optimade-unit": "inapplicable",
                                            "type": [
                                                "array"
                                            ],
                                            "description": "Basis transforms for this target subgroup.",
                                            "items": {
                                                "$id": "https://schemas.anyterial.se/defs/v0.1/properties/symmetry/basis_transform",
                                                "title": "Basis transformation",
                                                "x-optimade-type": "dictionary",
                                                "x-optimade-definition": {
                                                    "kind": "property",
                                                    "version": "0.1.0",
                                                    "format": "1.3",
                                                    "name": "basis_transform",
                                                    "label": "basis_transform_symmetry"
                                                },
                                                "x-optimade-unit": "inapplicable",
                                                "type": [
                                                    "object",
                                                    "null"
                                                ],
                                                "description": "One crystallographic transform between coordinate descriptions, settings, cells, or related group embeddings.\n\nThe affine map itself is stored in the embedded `affine_transformation` field.\nThe parent property defines the source and target coordinate systems and the precise role of the transform.\nUseful, for example, for representing setting changes, subgroup embeddings, isomorphic subgroup transforms, normalizer representatives, and same-space-group affine images.\nThis property is not limited to symmetry operations within one fixed setting; the matrix may be non-orthogonal or have determinant different from one when the transform changes cell or basis.\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 transform, using exact rational matrix and vector entries.\n      The coordinate convention and source/target interpretation are supplied by the parent property.\n\n    - **index**: OPTIONAL; Integer or null.\n      Index metadata whose interpretation is defined by the parent property.\n      Common uses include the subgroup index for subgroup embeddings, the cell index for isomorphic subgroup transforms, or an ordinal representative index in a finite transform table.\n\n    - **subgroup\\_type**: OPTIONAL; String.\n      International Tables subgroup-type label when the transform describes a maximal subgroup embedding.\n      The value MUST be `t` for a translationengleiche subgroup or `k` for a klassengleiche subgroup.\n      It MUST be omitted when the transform is not a maximal subgroup embedding.\n\n    - **k\\_subtype**: OPTIONAL; String or null.\n      Klassengleiche subtype when the transform describes a klassengleiche subgroup relation.\n      The value MUST be `loss_of_centering_translation` or `enlarged_unit_cell` for klassengleiche relations and null or omitted otherwise.\n\n    - **compatible\\_systems**: OPTIONAL; List of strings.\n      Crystal metric systems for which the transform is compatible.\n      This is used for bounded affine normalizer representatives.\n\n    - **operation\\_kind**: OPTIONAL; String.\n      Categorical label for normalizer-type representatives.\n      The value MUST be `euclidean` for Euclidean normalizer operations, `orthogonal_affine` for the signed-permutation affine normalizer subset, or `affine` for the bounded unimodular affine normalizer table.\n      It MUST be omitted when the transform is a setting transform, subgroup embedding, or other transform for which no normalizer operation class applies.\n\n    - **wyckoff\\_splitting**: OPTIONAL; List.\n      Wyckoff-position splitting metadata induced by the transform when available.\n      The list is grouped by explicit parent Wyckoff letter.\n\n    - **criteria**: OPTIONAL; List.\n      Backward-lift constraint metadata induced by the transform when available.\n      The list is grouped by explicit parent Wyckoff letter.",
                                                "properties": {
                                                    "affine_transformation": {
                                                        "$id": "https://schemas.anyterial.se/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 affine transformation is a geometric transformation preserving points, straight lines, and parallelism (collinearity), but may not preserve Euclidean distances and angles.\nThe transformation is represented by a 3 by 3 matrix and a 3-vector, both serialized with exact string entries.\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\n    - **det**: OPTIONAL; Integer.\n      Determinant of `matrix` when the generator emits it.\n\n    - **is\\_orthogonal**: OPTIONAL; Boolean.\n      Whether `matrix` is orthogonal in the exact representation used by the generator.",
                                                        "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.anyterial.se/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.anyterial.se/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.anyterial.se/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."
                                                            },
                                                            "is_orthogonal": {
                                                                "x-optimade-type": "boolean",
                                                                "x-optimade-unit": "inapplicable",
                                                                "type": [
                                                                    "boolean",
                                                                    "null"
                                                                ],
                                                                "description": "Whether the matrix part is orthogonal."
                                                            }
                                                        },
                                                        "examples": [
                                                            {
                                                                "matrix": [
                                                                    [
                                                                        "-1",
                                                                        "0",
                                                                        "0"
                                                                    ],
                                                                    [
                                                                        "0",
                                                                        "-1",
                                                                        "0"
                                                                    ],
                                                                    [
                                                                        "0",
                                                                        "0",
                                                                        "1"
                                                                    ]
                                                                ],
                                                                "vector": [
                                                                    "0",
                                                                    "0",
                                                                    "0"
                                                                ],
                                                                "xyz": "-x,-y,z",
                                                                "det": 1,
                                                                "is_orthogonal": true
                                                            }
                                                        ]
                                                    },
                                                    "index": {
                                                        "x-optimade-type": "integer",
                                                        "x-optimade-unit": "inapplicable",
                                                        "type": [
                                                            "integer",
                                                            "null"
                                                        ],
                                                        "description": "Index metadata whose interpretation is supplied by the parent property."
                                                    },
                                                    "subgroup_type": {
                                                        "x-optimade-type": "string",
                                                        "x-optimade-unit": "inapplicable",
                                                        "type": [
                                                            "string"
                                                        ],
                                                        "description": "International Tables subgroup-type label when applicable.",
                                                        "enum": [
                                                            "t",
                                                            "k"
                                                        ]
                                                    },
                                                    "k_subtype": {
                                                        "x-optimade-type": "string",
                                                        "x-optimade-unit": "inapplicable",
                                                        "type": [
                                                            "string",
                                                            "null"
                                                        ],
                                                        "description": "Klassengleiche subtype when applicable."
                                                    },
                                                    "compatible_systems": {
                                                        "x-optimade-type": "list",
                                                        "x-optimade-unit": "inapplicable",
                                                        "type": [
                                                            "array",
                                                            "null"
                                                        ],
                                                        "description": "Crystal metric systems compatible with the transform.",
                                                        "items": {
                                                            "x-optimade-type": "string",
                                                            "x-optimade-unit": "inapplicable",
                                                            "type": [
                                                                "string"
                                                            ],
                                                            "description": "One compatible crystal-system label.",
                                                            "enum": [
                                                                "triclinic",
                                                                "monoclinic",
                                                                "orthorhombic",
                                                                "tetragonal",
                                                                "trigonal",
                                                                "hexagonal",
                                                                "cubic"
                                                            ]
                                                        }
                                                    },
                                                    "operation_kind": {
                                                        "x-optimade-type": "string",
                                                        "x-optimade-unit": "inapplicable",
                                                        "type": [
                                                            "string"
                                                        ],
                                                        "description": "Categorical label for normalizer-type representatives.",
                                                        "enum": [
                                                            "euclidean",
                                                            "orthogonal_affine",
                                                            "affine"
                                                        ]
                                                    },
                                                    "wyckoff_splitting": {
                                                        "$id": "https://schemas.anyterial.se/defs/v0.1/properties/transformations/wyckoff_splitting",
                                                        "title": "Wyckoff splitting",
                                                        "x-optimade-type": "list",
                                                        "x-optimade-definition": {
                                                            "kind": "property",
                                                            "version": "0.1.0",
                                                            "format": "1.3",
                                                            "name": "wyckoff_splitting",
                                                            "label": "wyckoff_splitting_transformations"
                                                        },
                                                        "x-optimade-unit": "inapplicable",
                                                        "type": [
                                                            "array",
                                                            "null"
                                                        ],
                                                        "description": "Wyckoff-position splitting data associated with a subgroup or same-space-group transform.\n\nEach list item gives the split of one parent Wyckoff position.\nThe parent Wyckoff letter is stored in the `parent` field rather than as a JSON dictionary key.\n\n**Requirements/Conventions**:\n\n- It MUST be a list of dictionaries.\n- Each dictionary MUST contain `parent`, the Wyckoff letter in the parent setting.\n- Each dictionary MUST contain `splits`, an ordered list of subgroup Wyckoff-position assignments or coordinate expressions emitted by the generator.",
                                                        "items": {
                                                            "x-optimade-type": "dictionary",
                                                            "x-optimade-unit": "inapplicable",
                                                            "type": [
                                                                "object"
                                                            ],
                                                            "description": "Splitting data for one parent Wyckoff position.",
                                                            "required": [
                                                                "parent",
                                                                "splits"
                                                            ],
                                                            "properties": {
                                                                "parent": {
                                                                    "x-optimade-type": "string",
                                                                    "x-optimade-unit": "inapplicable",
                                                                    "type": [
                                                                        "string"
                                                                    ],
                                                                    "description": "Parent Wyckoff letter."
                                                                },
                                                                "splits": {
                                                                    "x-optimade-type": "list",
                                                                    "x-optimade-unit": "inapplicable",
                                                                    "type": [
                                                                        "array"
                                                                    ],
                                                                    "description": "Ordered split records for this parent Wyckoff letter.",
                                                                    "items": {
                                                                        "x-optimade-type": "dictionary",
                                                                        "x-optimade-unit": "inapplicable",
                                                                        "type": [
                                                                            "object"
                                                                        ],
                                                                        "description": "One Wyckoff split record.",
                                                                        "required": [
                                                                            "letter",
                                                                            "xyz",
                                                                            "affine"
                                                                        ],
                                                                        "properties": {
                                                                            "letter": {
                                                                                "x-optimade-type": "string",
                                                                                "x-optimade-unit": "inapplicable",
                                                                                "type": [
                                                                                    "string"
                                                                                ],
                                                                                "description": "Subgroup Wyckoff letter assigned by this split branch."
                                                                            },
                                                                            "xyz": {
                                                                                "x-optimade-type": "string",
                                                                                "x-optimade-unit": "inapplicable",
                                                                                "type": [
                                                                                    "string"
                                                                                ],
                                                                                "description": "Coordinate expression for the split branch."
                                                                            },
                                                                            "affine": {
                                                                                "x-optimade-type": "list",
                                                                                "x-optimade-unit": "inapplicable",
                                                                                "x-optimade-dimensions": {
                                                                                    "names": [
                                                                                        "dim_lattice",
                                                                                        "dim_affine"
                                                                                    ],
                                                                                    "sizes": [
                                                                                        3,
                                                                                        4
                                                                                    ]
                                                                                },
                                                                                "type": [
                                                                                    "array"
                                                                                ],
                                                                                "description": "Exact affine representation for the split branch as a 3 by 4 augmented matrix.\nEach row holds the three linear coefficients followed by the translation component, all as exact fraction strings.",
                                                                                "items": {
                                                                                    "x-optimade-type": "list",
                                                                                    "x-optimade-unit": "inapplicable",
                                                                                    "x-optimade-dimensions": {
                                                                                        "names": [
                                                                                            "dim_affine"
                                                                                        ],
                                                                                        "sizes": [
                                                                                            4
                                                                                        ]
                                                                                    },
                                                                                    "type": [
                                                                                        "array"
                                                                                    ],
                                                                                    "description": "One row of the augmented affine matrix.",
                                                                                    "items": {
                                                                                        "$id": "https://schemas.anyterial.se/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": [
                                                            [
                                                                {
                                                                    "parent": "c",
                                                                    "splits": [
                                                                        {
                                                                            "letter": "e",
                                                                            "xyz": "x,y,z",
                                                                            "affine": [
                                                                                [
                                                                                    "1",
                                                                                    "0",
                                                                                    "0",
                                                                                    "0"
                                                                                ],
                                                                                [
                                                                                    "0",
                                                                                    "1",
                                                                                    "0",
                                                                                    "0"
                                                                                ],
                                                                                [
                                                                                    "0",
                                                                                    "0",
                                                                                    "1",
                                                                                    "0"
                                                                                ]
                                                                            ]
                                                                        }
                                                                    ]
                                                                }
                                                            ]
                                                        ]
                                                    },
                                                    "criteria": {
                                                        "x-optimade-type": "list",
                                                        "x-optimade-unit": "inapplicable",
                                                        "type": [
                                                            "array",
                                                            "null"
                                                        ],
                                                        "description": "Backward-lift constraint metadata induced by the transform, grouped by explicit parent Wyckoff letter.",
                                                        "items": {
                                                            "x-optimade-type": "dictionary",
                                                            "x-optimade-unit": "inapplicable",
                                                            "type": [
                                                                "object"
                                                            ],
                                                            "description": "Backward-lift constraints for one parent Wyckoff position.",
                                                            "required": [
                                                                "parent",
                                                                "constraints"
                                                            ],
                                                            "properties": {
                                                                "parent": {
                                                                    "x-optimade-type": "string",
                                                                    "x-optimade-unit": "inapplicable",
                                                                    "type": [
                                                                        "string"
                                                                    ],
                                                                    "description": "Parent Wyckoff letter."
                                                                },
                                                                "constraints": {
                                                                    "x-optimade-type": "list",
                                                                    "x-optimade-unit": "inapplicable",
                                                                    "type": [
                                                                        "array"
                                                                    ],
                                                                    "description": "Constraint records for this parent Wyckoff letter.",
                                                                    "items": {
                                                                        "x-optimade-type": "dictionary",
                                                                        "x-optimade-unit": "inapplicable",
                                                                        "type": [
                                                                            "object"
                                                                        ],
                                                                        "description": "One linear backward-lift constraint record.",
                                                                        "properties": {
                                                                            "roles": {
                                                                                "x-optimade-type": "list",
                                                                                "x-optimade-unit": "inapplicable",
                                                                                "type": [
                                                                                    "array"
                                                                                ],
                                                                                "description": "Wyckoff-position role references entering the constraint.",
                                                                                "items": {
                                                                                    "x-optimade-type": "dictionary",
                                                                                    "x-optimade-unit": "inapplicable",
                                                                                    "type": [
                                                                                        "object"
                                                                                    ],
                                                                                    "description": "One role reference.",
                                                                                    "required": [
                                                                                        "letter",
                                                                                        "index"
                                                                                    ],
                                                                                    "properties": {
                                                                                        "letter": {
                                                                                            "x-optimade-type": "string",
                                                                                            "x-optimade-unit": "inapplicable",
                                                                                            "type": [
                                                                                                "string"
                                                                                            ],
                                                                                            "description": "Wyckoff letter for the referenced role."
                                                                                        },
                                                                                        "index": {
                                                                                            "x-optimade-type": "integer",
                                                                                            "x-optimade-unit": "inapplicable",
                                                                                            "type": [
                                                                                                "integer"
                                                                                            ],
                                                                                            "description": "Zero-based occurrence index for the role."
                                                                                        }
                                                                                    }
                                                                                }
                                                                            },
                                                                            "coeffs": {
                                                                                "x-optimade-type": "list",
                                                                                "x-optimade-unit": "inapplicable",
                                                                                "type": [
                                                                                    "array"
                                                                                ],
                                                                                "description": "Exact coefficient vectors for the constraint.",
                                                                                "items": {
                                                                                    "x-optimade-type": "list",
                                                                                    "x-optimade-unit": "inapplicable",
                                                                                    "type": [
                                                                                        "array"
                                                                                    ],
                                                                                    "description": "Coefficients associated with one role.",
                                                                                    "items": {
                                                                                        "x-optimade-type": "list",
                                                                                        "x-optimade-unit": "inapplicable",
                                                                                        "x-optimade-dimensions": {
                                                                                            "names": [
                                                                                                "dim_lattice"
                                                                                            ],
                                                                                            "sizes": [
                                                                                                3
                                                                                            ]
                                                                                        },
                                                                                        "type": [
                                                                                            "array"
                                                                                        ],
                                                                                        "description": "One exact coefficient vector.",
                                                                                        "items": {
                                                                                            "$id": "https://schemas.anyterial.se/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"
                                                                                        }
                                                                                    }
                                                                                }
                                                                            },
                                                                            "target": {
                                                                                "x-optimade-type": "list",
                                                                                "x-optimade-unit": "inapplicable",
                                                                                "type": [
                                                                                    "array"
                                                                                ],
                                                                                "description": "Exact target vector or scalar for the constraint.",
                                                                                "items": {
                                                                                    "$id": "https://schemas.anyterial.se/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",
                                                                    "2"
                                                                ]
                                                            ],
                                                            "vector": [
                                                                "0",
                                                                "0",
                                                                "0"
                                                            ],
                                                            "xyz": "x,y,2z",
                                                            "det": 2,
                                                            "is_orthogonal": false
                                                        },
                                                        "index": 2,
                                                        "subgroup_type": "k",
                                                        "k_subtype": "enlarged_unit_cell",
                                                        "wyckoff_splitting": [
                                                            {
                                                                "parent": "a",
                                                                "splits": [
                                                                    {
                                                                        "letter": "a",
                                                                        "xyz": "x,y,z",
                                                                        "affine": [
                                                                            [
                                                                                "1",
                                                                                "0",
                                                                                "0",
                                                                                "0"
                                                                            ],
                                                                            [
                                                                                "0",
                                                                                "1",
                                                                                "0",
                                                                                "0"
                                                                            ],
                                                                            [
                                                                                "0",
                                                                                "0",
                                                                                "1",
                                                                                "0"
                                                                            ]
                                                                        ]
                                                                    }
                                                                ]
                                                            }
                                                        ],
                                                        "criteria": [
                                                            {
                                                                "parent": "a",
                                                                "constraints": [
                                                                    {
                                                                        "roles": [
                                                                            {
                                                                                "letter": "a",
                                                                                "index": 0
                                                                            }
                                                                        ],
                                                                        "coeffs": [
                                                                            [
                                                                                [
                                                                                    "1",
                                                                                    "0",
                                                                                    "0"
                                                                                ]
                                                                            ]
                                                                        ],
                                                                        "target": [
                                                                            "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
                                                        },
                                                        "compatible_systems": [
                                                            "triclinic",
                                                            "monoclinic",
                                                            "orthorhombic",
                                                            "tetragonal",
                                                            "trigonal",
                                                            "hexagonal",
                                                            "cubic"
                                                        ],
                                                        "operation_kind": "affine"
                                                    }
                                                ]
                                            }
                                        }
                                    }
                                },
                                "examples": [
                                    [
                                        {
                                            "target_hall_entry": "p_1",
                                            "transforms": [
                                                {
                                                    "index": 2,
                                                    "affine_transformation": {
                                                        "matrix": [
                                                            [
                                                                "1",
                                                                "0",
                                                                "0"
                                                            ],
                                                            [
                                                                "0",
                                                                "1",
                                                                "0"
                                                            ],
                                                            [
                                                                "0",
                                                                "0",
                                                                "2"
                                                            ]
                                                        ],
                                                        "vector": [
                                                            "0",
                                                            "0",
                                                            "0"
                                                        ]
                                                    }
                                                }
                                            ]
                                        }
                                    ]
                                ]
                            }
                        }
                    },
                    "examples": [
                        [
                            {
                                "hm_entry": "P 1",
                                "hall_entry": "p_1",
                                "centering_translations": [
                                    [
                                        "0",
                                        "0",
                                        "0"
                                    ]
                                ],
                                "baernighausen": []
                            }
                        ]
                    ]
                },
                "transformations_per_it_number": {
                    "$id": "https://schemas.anyterial.se/defs/v0.1/properties/transformations/transformations_per_it_number",
                    "x-optimade-requirements": {
                        "support": "may",
                        "sortable": false,
                        "query-support": "none",
                        "response-level": "may"
                    },
                    "title": "Transformations per IT number",
                    "x-optimade-type": "list",
                    "x-optimade-definition": {
                        "kind": "property",
                        "version": "0.1.0",
                        "format": "1.3",
                        "name": "transformations_per_it_number",
                        "label": "transformations_per_it_number_transformations"
                    },
                    "x-optimade-unit": "inapplicable",
                    "type": [
                        "array",
                        "null"
                    ],
                    "description": "Standard-setting transformation data grouped by International Tables space-group number.\n\nEach list item contains the IT number as ordinary data together with all standard-setting transformation sections generated for that space-group type.\nThis representation avoids using IT numbers as JSON dictionary keys in the OPTIMADE-described payload.\n\n**Requirements/Conventions**:\n\n- It MUST be a list of dictionaries.\n- Each dictionary MUST contain `it_number`.\n- Each dictionary SHOULD contain the generated standard-setting transformation sections for that IT number.",
                    "items": {
                        "x-optimade-type": "dictionary",
                        "x-optimade-unit": "inapplicable",
                        "type": [
                            "object"
                        ],
                        "description": "Transformation record for one International Tables number.",
                        "required": [
                            "it_number"
                        ],
                        "properties": {
                            "it_number": {
                                "$id": "https://schemas.anyterial.se/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
                                ]
                            },
                            "baernighausen": {
                                "$id": "https://schemas.anyterial.se/defs/v0.1/properties/transformations/baernighausen",
                                "title": "B\u00e4rnighausen subgroup transforms",
                                "x-optimade-type": "list",
                                "x-optimade-definition": {
                                    "kind": "property",
                                    "version": "0.1.0",
                                    "format": "1.3",
                                    "name": "baernighausen",
                                    "label": "baernighausen_transformations"
                                },
                                "x-optimade-unit": "inapplicable",
                                "type": [
                                    "array",
                                    "null"
                                ],
                                "description": "B\u00e4rnighausen subgroup transform table for one parent setting or space-group type.\n\nEntries describe generated embeddings of subgroup settings into the containing parent setting.\nEach list item groups transform records for one target subgroup, with the target stored as ordinary data rather than as a JSON dictionary key.\nTransform records follow `/properties/symmetry/basis_transform`.\n\n**Requirements/Conventions**:\n\n- It MUST be a list of dictionaries.\n- Each dictionary MUST contain either `target_hall_entry` or `target_it_number`, depending on whether the containing dataset is Hall-setting keyed or IT-number keyed.\n- Each dictionary MUST contain `transforms`, a list of basis-transform records.",
                                "items": {
                                    "x-optimade-type": "dictionary",
                                    "x-optimade-unit": "inapplicable",
                                    "type": [
                                        "object"
                                    ],
                                    "description": "B\u00e4rnighausen transform group for one target subgroup.",
                                    "required": [
                                        "transforms"
                                    ],
                                    "properties": {
                                        "target_hall_entry": {
                                            "x-optimade-type": "string",
                                            "x-optimade-unit": "inapplicable",
                                            "type": [
                                                "string",
                                                "null"
                                            ],
                                            "description": "Target Hall entry when the containing dataset is Hall-setting keyed."
                                        },
                                        "target_it_number": {
                                            "x-optimade-type": "integer",
                                            "x-optimade-unit": "inapplicable",
                                            "type": [
                                                "integer",
                                                "null"
                                            ],
                                            "description": "Target International Tables number when the containing dataset is IT-number keyed."
                                        },
                                        "transforms": {
                                            "x-optimade-type": "list",
                                            "x-optimade-unit": "inapplicable",
                                            "type": [
                                                "array"
                                            ],
                                            "description": "Basis transforms for this target subgroup.",
                                            "items": {
                                                "$id": "https://schemas.anyterial.se/defs/v0.1/properties/symmetry/basis_transform",
                                                "title": "Basis transformation",
                                                "x-optimade-type": "dictionary",
                                                "x-optimade-definition": {
                                                    "kind": "property",
                                                    "version": "0.1.0",
                                                    "format": "1.3",
                                                    "name": "basis_transform",
                                                    "label": "basis_transform_symmetry"
                                                },
                                                "x-optimade-unit": "inapplicable",
                                                "type": [
                                                    "object",
                                                    "null"
                                                ],
                                                "description": "One crystallographic transform between coordinate descriptions, settings, cells, or related group embeddings.\n\nThe affine map itself is stored in the embedded `affine_transformation` field.\nThe parent property defines the source and target coordinate systems and the precise role of the transform.\nUseful, for example, for representing setting changes, subgroup embeddings, isomorphic subgroup transforms, normalizer representatives, and same-space-group affine images.\nThis property is not limited to symmetry operations within one fixed setting; the matrix may be non-orthogonal or have determinant different from one when the transform changes cell or basis.\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 transform, using exact rational matrix and vector entries.\n      The coordinate convention and source/target interpretation are supplied by the parent property.\n\n    - **index**: OPTIONAL; Integer or null.\n      Index metadata whose interpretation is defined by the parent property.\n      Common uses include the subgroup index for subgroup embeddings, the cell index for isomorphic subgroup transforms, or an ordinal representative index in a finite transform table.\n\n    - **subgroup\\_type**: OPTIONAL; String.\n      International Tables subgroup-type label when the transform describes a maximal subgroup embedding.\n      The value MUST be `t` for a translationengleiche subgroup or `k` for a klassengleiche subgroup.\n      It MUST be omitted when the transform is not a maximal subgroup embedding.\n\n    - **k\\_subtype**: OPTIONAL; String or null.\n      Klassengleiche subtype when the transform describes a klassengleiche subgroup relation.\n      The value MUST be `loss_of_centering_translation` or `enlarged_unit_cell` for klassengleiche relations and null or omitted otherwise.\n\n    - **compatible\\_systems**: OPTIONAL; List of strings.\n      Crystal metric systems for which the transform is compatible.\n      This is used for bounded affine normalizer representatives.\n\n    - **operation\\_kind**: OPTIONAL; String.\n      Categorical label for normalizer-type representatives.\n      The value MUST be `euclidean` for Euclidean normalizer operations, `orthogonal_affine` for the signed-permutation affine normalizer subset, or `affine` for the bounded unimodular affine normalizer table.\n      It MUST be omitted when the transform is a setting transform, subgroup embedding, or other transform for which no normalizer operation class applies.\n\n    - **wyckoff\\_splitting**: OPTIONAL; List.\n      Wyckoff-position splitting metadata induced by the transform when available.\n      The list is grouped by explicit parent Wyckoff letter.\n\n    - **criteria**: OPTIONAL; List.\n      Backward-lift constraint metadata induced by the transform when available.\n      The list is grouped by explicit parent Wyckoff letter.",
                                                "properties": {
                                                    "affine_transformation": {
                                                        "$id": "https://schemas.anyterial.se/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 affine transformation is a geometric transformation preserving points, straight lines, and parallelism (collinearity), but may not preserve Euclidean distances and angles.\nThe transformation is represented by a 3 by 3 matrix and a 3-vector, both serialized with exact string entries.\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\n    - **det**: OPTIONAL; Integer.\n      Determinant of `matrix` when the generator emits it.\n\n    - **is\\_orthogonal**: OPTIONAL; Boolean.\n      Whether `matrix` is orthogonal in the exact representation used by the generator.",
                                                        "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.anyterial.se/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.anyterial.se/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.anyterial.se/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."
                                                            },
                                                            "is_orthogonal": {
                                                                "x-optimade-type": "boolean",
                                                                "x-optimade-unit": "inapplicable",
                                                                "type": [
                                                                    "boolean",
                                                                    "null"
                                                                ],
                                                                "description": "Whether the matrix part is orthogonal."
                                                            }
                                                        },
                                                        "examples": [
                                                            {
                                                                "matrix": [
                                                                    [
                                                                        "-1",
                                                                        "0",
                                                                        "0"
                                                                    ],
                                                                    [
                                                                        "0",
                                                                        "-1",
                                                                        "0"
                                                                    ],
                                                                    [
                                                                        "0",
                                                                        "0",
                                                                        "1"
                                                                    ]
                                                                ],
                                                                "vector": [
                                                                    "0",
                                                                    "0",
                                                                    "0"
                                                                ],
                                                                "xyz": "-x,-y,z",
                                                                "det": 1,
                                                                "is_orthogonal": true
                                                            }
                                                        ]
                                                    },
                                                    "index": {
                                                        "x-optimade-type": "integer",
                                                        "x-optimade-unit": "inapplicable",
                                                        "type": [
                                                            "integer",
                                                            "null"
                                                        ],
                                                        "description": "Index metadata whose interpretation is supplied by the parent property."
                                                    },
                                                    "subgroup_type": {
                                                        "x-optimade-type": "string",
                                                        "x-optimade-unit": "inapplicable",
                                                        "type": [
                                                            "string"
                                                        ],
                                                        "description": "International Tables subgroup-type label when applicable.",
                                                        "enum": [
                                                            "t",
                                                            "k"
                                                        ]
                                                    },
                                                    "k_subtype": {
                                                        "x-optimade-type": "string",
                                                        "x-optimade-unit": "inapplicable",
                                                        "type": [
                                                            "string",
                                                            "null"
                                                        ],
                                                        "description": "Klassengleiche subtype when applicable."
                                                    },
                                                    "compatible_systems": {
                                                        "x-optimade-type": "list",
                                                        "x-optimade-unit": "inapplicable",
                                                        "type": [
                                                            "array",
                                                            "null"
                                                        ],
                                                        "description": "Crystal metric systems compatible with the transform.",
                                                        "items": {
                                                            "x-optimade-type": "string",
                                                            "x-optimade-unit": "inapplicable",
                                                            "type": [
                                                                "string"
                                                            ],
                                                            "description": "One compatible crystal-system label.",
                                                            "enum": [
                                                                "triclinic",
                                                                "monoclinic",
                                                                "orthorhombic",
                                                                "tetragonal",
                                                                "trigonal",
                                                                "hexagonal",
                                                                "cubic"
                                                            ]
                                                        }
                                                    },
                                                    "operation_kind": {
                                                        "x-optimade-type": "string",
                                                        "x-optimade-unit": "inapplicable",
                                                        "type": [
                                                            "string"
                                                        ],
                                                        "description": "Categorical label for normalizer-type representatives.",
                                                        "enum": [
                                                            "euclidean",
                                                            "orthogonal_affine",
                                                            "affine"
                                                        ]
                                                    },
                                                    "wyckoff_splitting": {
                                                        "$id": "https://schemas.anyterial.se/defs/v0.1/properties/transformations/wyckoff_splitting",
                                                        "title": "Wyckoff splitting",
                                                        "x-optimade-type": "list",
                                                        "x-optimade-definition": {
                                                            "kind": "property",
                                                            "version": "0.1.0",
                                                            "format": "1.3",
                                                            "name": "wyckoff_splitting",
                                                            "label": "wyckoff_splitting_transformations"
                                                        },
                                                        "x-optimade-unit": "inapplicable",
                                                        "type": [
                                                            "array",
                                                            "null"
                                                        ],
                                                        "description": "Wyckoff-position splitting data associated with a subgroup or same-space-group transform.\n\nEach list item gives the split of one parent Wyckoff position.\nThe parent Wyckoff letter is stored in the `parent` field rather than as a JSON dictionary key.\n\n**Requirements/Conventions**:\n\n- It MUST be a list of dictionaries.\n- Each dictionary MUST contain `parent`, the Wyckoff letter in the parent setting.\n- Each dictionary MUST contain `splits`, an ordered list of subgroup Wyckoff-position assignments or coordinate expressions emitted by the generator.",
                                                        "items": {
                                                            "x-optimade-type": "dictionary",
                                                            "x-optimade-unit": "inapplicable",
                                                            "type": [
                                                                "object"
                                                            ],
                                                            "description": "Splitting data for one parent Wyckoff position.",
                                                            "required": [
                                                                "parent",
                                                                "splits"
                                                            ],
                                                            "properties": {
                                                                "parent": {
                                                                    "x-optimade-type": "string",
                                                                    "x-optimade-unit": "inapplicable",
                                                                    "type": [
                                                                        "string"
                                                                    ],
                                                                    "description": "Parent Wyckoff letter."
                                                                },
                                                                "splits": {
                                                                    "x-optimade-type": "list",
                                                                    "x-optimade-unit": "inapplicable",
                                                                    "type": [
                                                                        "array"
                                                                    ],
                                                                    "description": "Ordered split records for this parent Wyckoff letter.",
                                                                    "items": {
                                                                        "x-optimade-type": "dictionary",
                                                                        "x-optimade-unit": "inapplicable",
                                                                        "type": [
                                                                            "object"
                                                                        ],
                                                                        "description": "One Wyckoff split record.",
                                                                        "required": [
                                                                            "letter",
                                                                            "xyz",
                                                                            "affine"
                                                                        ],
                                                                        "properties": {
                                                                            "letter": {
                                                                                "x-optimade-type": "string",
                                                                                "x-optimade-unit": "inapplicable",
                                                                                "type": [
                                                                                    "string"
                                                                                ],
                                                                                "description": "Subgroup Wyckoff letter assigned by this split branch."
                                                                            },
                                                                            "xyz": {
                                                                                "x-optimade-type": "string",
                                                                                "x-optimade-unit": "inapplicable",
                                                                                "type": [
                                                                                    "string"
                                                                                ],
                                                                                "description": "Coordinate expression for the split branch."
                                                                            },
                                                                            "affine": {
                                                                                "x-optimade-type": "list",
                                                                                "x-optimade-unit": "inapplicable",
                                                                                "x-optimade-dimensions": {
                                                                                    "names": [
                                                                                        "dim_lattice",
                                                                                        "dim_affine"
                                                                                    ],
                                                                                    "sizes": [
                                                                                        3,
                                                                                        4
                                                                                    ]
                                                                                },
                                                                                "type": [
                                                                                    "array"
                                                                                ],
                                                                                "description": "Exact affine representation for the split branch as a 3 by 4 augmented matrix.\nEach row holds the three linear coefficients followed by the translation component, all as exact fraction strings.",
                                                                                "items": {
                                                                                    "x-optimade-type": "list",
                                                                                    "x-optimade-unit": "inapplicable",
                                                                                    "x-optimade-dimensions": {
                                                                                        "names": [
                                                                                            "dim_affine"
                                                                                        ],
                                                                                        "sizes": [
                                                                                            4
                                                                                        ]
                                                                                    },
                                                                                    "type": [
                                                                                        "array"
                                                                                    ],
                                                                                    "description": "One row of the augmented affine matrix.",
                                                                                    "items": {
                                                                                        "$id": "https://schemas.anyterial.se/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": [
                                                            [
                                                                {
                                                                    "parent": "c",
                                                                    "splits": [
                                                                        {
                                                                            "letter": "e",
                                                                            "xyz": "x,y,z",
                                                                            "affine": [
                                                                                [
                                                                                    "1",
                                                                                    "0",
                                                                                    "0",
                                                                                    "0"
                                                                                ],
                                                                                [
                                                                                    "0",
                                                                                    "1",
                                                                                    "0",
                                                                                    "0"
                                                                                ],
                                                                                [
                                                                                    "0",
                                                                                    "0",
                                                                                    "1",
                                                                                    "0"
                                                                                ]
                                                                            ]
                                                                        }
                                                                    ]
                                                                }
                                                            ]
                                                        ]
                                                    },
                                                    "criteria": {
                                                        "x-optimade-type": "list",
                                                        "x-optimade-unit": "inapplicable",
                                                        "type": [
                                                            "array",
                                                            "null"
                                                        ],
                                                        "description": "Backward-lift constraint metadata induced by the transform, grouped by explicit parent Wyckoff letter.",
                                                        "items": {
                                                            "x-optimade-type": "dictionary",
                                                            "x-optimade-unit": "inapplicable",
                                                            "type": [
                                                                "object"
                                                            ],
                                                            "description": "Backward-lift constraints for one parent Wyckoff position.",
                                                            "required": [
                                                                "parent",
                                                                "constraints"
                                                            ],
                                                            "properties": {
                                                                "parent": {
                                                                    "x-optimade-type": "string",
                                                                    "x-optimade-unit": "inapplicable",
                                                                    "type": [
                                                                        "string"
                                                                    ],
                                                                    "description": "Parent Wyckoff letter."
                                                                },
                                                                "constraints": {
                                                                    "x-optimade-type": "list",
                                                                    "x-optimade-unit": "inapplicable",
                                                                    "type": [
                                                                        "array"
                                                                    ],
                                                                    "description": "Constraint records for this parent Wyckoff letter.",
                                                                    "items": {
                                                                        "x-optimade-type": "dictionary",
                                                                        "x-optimade-unit": "inapplicable",
                                                                        "type": [
                                                                            "object"
                                                                        ],
                                                                        "description": "One linear backward-lift constraint record.",
                                                                        "properties": {
                                                                            "roles": {
                                                                                "x-optimade-type": "list",
                                                                                "x-optimade-unit": "inapplicable",
                                                                                "type": [
                                                                                    "array"
                                                                                ],
                                                                                "description": "Wyckoff-position role references entering the constraint.",
                                                                                "items": {
                                                                                    "x-optimade-type": "dictionary",
                                                                                    "x-optimade-unit": "inapplicable",
                                                                                    "type": [
                                                                                        "object"
                                                                                    ],
                                                                                    "description": "One role reference.",
                                                                                    "required": [
                                                                                        "letter",
                                                                                        "index"
                                                                                    ],
                                                                                    "properties": {
                                                                                        "letter": {
                                                                                            "x-optimade-type": "string",
                                                                                            "x-optimade-unit": "inapplicable",
                                                                                            "type": [
                                                                                                "string"
                                                                                            ],
                                                                                            "description": "Wyckoff letter for the referenced role."
                                                                                        },
                                                                                        "index": {
                                                                                            "x-optimade-type": "integer",
                                                                                            "x-optimade-unit": "inapplicable",
                                                                                            "type": [
                                                                                                "integer"
                                                                                            ],
                                                                                            "description": "Zero-based occurrence index for the role."
                                                                                        }
                                                                                    }
                                                                                }
                                                                            },
                                                                            "coeffs": {
                                                                                "x-optimade-type": "list",
                                                                                "x-optimade-unit": "inapplicable",
                                                                                "type": [
                                                                                    "array"
                                                                                ],
                                                                                "description": "Exact coefficient vectors for the constraint.",
                                                                                "items": {
                                                                                    "x-optimade-type": "list",
                                                                                    "x-optimade-unit": "inapplicable",
                                                                                    "type": [
                                                                                        "array"
                                                                                    ],
                                                                                    "description": "Coefficients associated with one role.",
                                                                                    "items": {
                                                                                        "x-optimade-type": "list",
                                                                                        "x-optimade-unit": "inapplicable",
                                                                                        "x-optimade-dimensions": {
                                                                                            "names": [
                                                                                                "dim_lattice"
                                                                                            ],
                                                                                            "sizes": [
                                                                                                3
                                                                                            ]
                                                                                        },
                                                                                        "type": [
                                                                                            "array"
                                                                                        ],
                                                                                        "description": "One exact coefficient vector.",
                                                                                        "items": {
                                                                                            "$id": "https://schemas.anyterial.se/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"
                                                                                        }
                                                                                    }
                                                                                }
                                                                            },
                                                                            "target": {
                                                                                "x-optimade-type": "list",
                                                                                "x-optimade-unit": "inapplicable",
                                                                                "type": [
                                                                                    "array"
                                                                                ],
                                                                                "description": "Exact target vector or scalar for the constraint.",
                                                                                "items": {
                                                                                    "$id": "https://schemas.anyterial.se/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",
                                                                    "2"
                                                                ]
                                                            ],
                                                            "vector": [
                                                                "0",
                                                                "0",
                                                                "0"
                                                            ],
                                                            "xyz": "x,y,2z",
                                                            "det": 2,
                                                            "is_orthogonal": false
                                                        },
                                                        "index": 2,
                                                        "subgroup_type": "k",
                                                        "k_subtype": "enlarged_unit_cell",
                                                        "wyckoff_splitting": [
                                                            {
                                                                "parent": "a",
                                                                "splits": [
                                                                    {
                                                                        "letter": "a",
                                                                        "xyz": "x,y,z",
                                                                        "affine": [
                                                                            [
                                                                                "1",
                                                                                "0",
                                                                                "0",
                                                                                "0"
                                                                            ],
                                                                            [
                                                                                "0",
                                                                                "1",
                                                                                "0",
                                                                                "0"
                                                                            ],
                                                                            [
                                                                                "0",
                                                                                "0",
                                                                                "1",
                                                                                "0"
                                                                            ]
                                                                        ]
                                                                    }
                                                                ]
                                                            }
                                                        ],
                                                        "criteria": [
                                                            {
                                                                "parent": "a",
                                                                "constraints": [
                                                                    {
                                                                        "roles": [
                                                                            {
                                                                                "letter": "a",
                                                                                "index": 0
                                                                            }
                                                                        ],
                                                                        "coeffs": [
                                                                            [
                                                                                [
                                                                                    "1",
                                                                                    "0",
                                                                                    "0"
                                                                                ]
                                                                            ]
                                                                        ],
                                                                        "target": [
                                                                            "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
                                                        },
                                                        "compatible_systems": [
                                                            "triclinic",
                                                            "monoclinic",
                                                            "orthorhombic",
                                                            "tetragonal",
                                                            "trigonal",
                                                            "hexagonal",
                                                            "cubic"
                                                        ],
                                                        "operation_kind": "affine"
                                                    }
                                                ]
                                            }
                                        }
                                    }
                                },
                                "examples": [
                                    [
                                        {
                                            "target_hall_entry": "p_1",
                                            "transforms": [
                                                {
                                                    "index": 2,
                                                    "affine_transformation": {
                                                        "matrix": [
                                                            [
                                                                "1",
                                                                "0",
                                                                "0"
                                                            ],
                                                            [
                                                                "0",
                                                                "1",
                                                                "0"
                                                            ],
                                                            [
                                                                "0",
                                                                "0",
                                                                "2"
                                                            ]
                                                        ],
                                                        "vector": [
                                                            "0",
                                                            "0",
                                                            "0"
                                                        ]
                                                    }
                                                }
                                            ]
                                        }
                                    ]
                                ]
                            },
                            "backward_lift_criteria": {
                                "$id": "https://schemas.anyterial.se/defs/v0.1/properties/transformations/backward_lift_criteria",
                                "title": "Backward lift criteria",
                                "x-optimade-type": "list",
                                "x-optimade-definition": {
                                    "kind": "property",
                                    "version": "0.1.0",
                                    "format": "1.3",
                                    "name": "backward_lift_criteria",
                                    "label": "backward_lift_criteria_transformations"
                                },
                                "x-optimade-unit": "inapplicable",
                                "type": [
                                    "array",
                                    "null"
                                ],
                                "description": "Criteria table for one supergroup IT number used to lift occupied Wyckoff data from a subgroup back to that supergroup along a chosen B\u00e4rnighausen transform.\n\nEach list item groups transform records for one target subgroup IT number.\nThe target subgroup IT number is stored in `target_it_number` rather than as a JSON dictionary key.\n\n**Requirements/Conventions**:\n\n- It MUST be a list of dictionaries.\n- Each dictionary MUST contain `target_it_number`, the subgroup IT number.\n- Each dictionary MUST contain `transforms`, a list of basis-transform records carrying backward-lift criteria.",
                                "items": {
                                    "x-optimade-type": "dictionary",
                                    "x-optimade-unit": "inapplicable",
                                    "type": [
                                        "object"
                                    ],
                                    "description": "Backward-lift criteria group for one target subgroup IT number.",
                                    "required": [
                                        "target_it_number",
                                        "transforms"
                                    ],
                                    "properties": {
                                        "target_it_number": {
                                            "x-optimade-type": "integer",
                                            "x-optimade-unit": "inapplicable",
                                            "type": [
                                                "integer"
                                            ],
                                            "description": "Target subgroup International Tables number."
                                        },
                                        "transforms": {
                                            "x-optimade-type": "list",
                                            "x-optimade-unit": "inapplicable",
                                            "type": [
                                                "array"
                                            ],
                                            "description": "Basis transforms and criteria for this target subgroup.",
                                            "items": {
                                                "$id": "https://schemas.anyterial.se/defs/v0.1/properties/symmetry/basis_transform",
                                                "title": "Basis transformation",
                                                "x-optimade-type": "dictionary",
                                                "x-optimade-definition": {
                                                    "kind": "property",
                                                    "version": "0.1.0",
                                                    "format": "1.3",
                                                    "name": "basis_transform",
                                                    "label": "basis_transform_symmetry"
                                                },
                                                "x-optimade-unit": "inapplicable",
                                                "type": [
                                                    "object",
                                                    "null"
                                                ],
                                                "description": "One crystallographic transform between coordinate descriptions, settings, cells, or related group embeddings.\n\nThe affine map itself is stored in the embedded `affine_transformation` field.\nThe parent property defines the source and target coordinate systems and the precise role of the transform.\nUseful, for example, for representing setting changes, subgroup embeddings, isomorphic subgroup transforms, normalizer representatives, and same-space-group affine images.\nThis property is not limited to symmetry operations within one fixed setting; the matrix may be non-orthogonal or have determinant different from one when the transform changes cell or basis.\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 transform, using exact rational matrix and vector entries.\n      The coordinate convention and source/target interpretation are supplied by the parent property.\n\n    - **index**: OPTIONAL; Integer or null.\n      Index metadata whose interpretation is defined by the parent property.\n      Common uses include the subgroup index for subgroup embeddings, the cell index for isomorphic subgroup transforms, or an ordinal representative index in a finite transform table.\n\n    - **subgroup\\_type**: OPTIONAL; String.\n      International Tables subgroup-type label when the transform describes a maximal subgroup embedding.\n      The value MUST be `t` for a translationengleiche subgroup or `k` for a klassengleiche subgroup.\n      It MUST be omitted when the transform is not a maximal subgroup embedding.\n\n    - **k\\_subtype**: OPTIONAL; String or null.\n      Klassengleiche subtype when the transform describes a klassengleiche subgroup relation.\n      The value MUST be `loss_of_centering_translation` or `enlarged_unit_cell` for klassengleiche relations and null or omitted otherwise.\n\n    - **compatible\\_systems**: OPTIONAL; List of strings.\n      Crystal metric systems for which the transform is compatible.\n      This is used for bounded affine normalizer representatives.\n\n    - **operation\\_kind**: OPTIONAL; String.\n      Categorical label for normalizer-type representatives.\n      The value MUST be `euclidean` for Euclidean normalizer operations, `orthogonal_affine` for the signed-permutation affine normalizer subset, or `affine` for the bounded unimodular affine normalizer table.\n      It MUST be omitted when the transform is a setting transform, subgroup embedding, or other transform for which no normalizer operation class applies.\n\n    - **wyckoff\\_splitting**: OPTIONAL; List.\n      Wyckoff-position splitting metadata induced by the transform when available.\n      The list is grouped by explicit parent Wyckoff letter.\n\n    - **criteria**: OPTIONAL; List.\n      Backward-lift constraint metadata induced by the transform when available.\n      The list is grouped by explicit parent Wyckoff letter.",
                                                "properties": {
                                                    "affine_transformation": {
                                                        "$id": "https://schemas.anyterial.se/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 affine transformation is a geometric transformation preserving points, straight lines, and parallelism (collinearity), but may not preserve Euclidean distances and angles.\nThe transformation is represented by a 3 by 3 matrix and a 3-vector, both serialized with exact string entries.\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\n    - **det**: OPTIONAL; Integer.\n      Determinant of `matrix` when the generator emits it.\n\n    - **is\\_orthogonal**: OPTIONAL; Boolean.\n      Whether `matrix` is orthogonal in the exact representation used by the generator.",
                                                        "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.anyterial.se/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.anyterial.se/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.anyterial.se/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."
                                                            },
                                                            "is_orthogonal": {
                                                                "x-optimade-type": "boolean",
                                                                "x-optimade-unit": "inapplicable",
                                                                "type": [
                                                                    "boolean",
                                                                    "null"
                                                                ],
                                                                "description": "Whether the matrix part is orthogonal."
                                                            }
                                                        },
                                                        "examples": [
                                                            {
                                                                "matrix": [
                                                                    [
                                                                        "-1",
                                                                        "0",
                                                                        "0"
                                                                    ],
                                                                    [
                                                                        "0",
                                                                        "-1",
                                                                        "0"
                                                                    ],
                                                                    [
                                                                        "0",
                                                                        "0",
                                                                        "1"
                                                                    ]
                                                                ],
                                                                "vector": [
                                                                    "0",
                                                                    "0",
                                                                    "0"
                                                                ],
                                                                "xyz": "-x,-y,z",
                                                                "det": 1,
                                                                "is_orthogonal": true
                                                            }
                                                        ]
                                                    },
                                                    "index": {
                                                        "x-optimade-type": "integer",
                                                        "x-optimade-unit": "inapplicable",
                                                        "type": [
                                                            "integer",
                                                            "null"
                                                        ],
                                                        "description": "Index metadata whose interpretation is supplied by the parent property."
                                                    },
                                                    "subgroup_type": {
                                                        "x-optimade-type": "string",
                                                        "x-optimade-unit": "inapplicable",
                                                        "type": [
                                                            "string"
                                                        ],
                                                        "description": "International Tables subgroup-type label when applicable.",
                                                        "enum": [
                                                            "t",
                                                            "k"
                                                        ]
                                                    },
                                                    "k_subtype": {
                                                        "x-optimade-type": "string",
                                                        "x-optimade-unit": "inapplicable",
                                                        "type": [
                                                            "string",
                                                            "null"
                                                        ],
                                                        "description": "Klassengleiche subtype when applicable."
                                                    },
                                                    "compatible_systems": {
                                                        "x-optimade-type": "list",
                                                        "x-optimade-unit": "inapplicable",
                                                        "type": [
                                                            "array",
                                                            "null"
                                                        ],
                                                        "description": "Crystal metric systems compatible with the transform.",
                                                        "items": {
                                                            "x-optimade-type": "string",
                                                            "x-optimade-unit": "inapplicable",
                                                            "type": [
                                                                "string"
                                                            ],
                                                            "description": "One compatible crystal-system label.",
                                                            "enum": [
                                                                "triclinic",
                                                                "monoclinic",
                                                                "orthorhombic",
                                                                "tetragonal",
                                                                "trigonal",
                                                                "hexagonal",
                                                                "cubic"
                                                            ]
                                                        }
                                                    },
                                                    "operation_kind": {
                                                        "x-optimade-type": "string",
                                                        "x-optimade-unit": "inapplicable",
                                                        "type": [
                                                            "string"
                                                        ],
                                                        "description": "Categorical label for normalizer-type representatives.",
                                                        "enum": [
                                                            "euclidean",
                                                            "orthogonal_affine",
                                                            "affine"
                                                        ]
                                                    },
                                                    "wyckoff_splitting": {
                                                        "$id": "https://schemas.anyterial.se/defs/v0.1/properties/transformations/wyckoff_splitting",
                                                        "title": "Wyckoff splitting",
                                                        "x-optimade-type": "list",
                                                        "x-optimade-definition": {
                                                            "kind": "property",
                                                            "version": "0.1.0",
                                                            "format": "1.3",
                                                            "name": "wyckoff_splitting",
                                                            "label": "wyckoff_splitting_transformations"
                                                        },
                                                        "x-optimade-unit": "inapplicable",
                                                        "type": [
                                                            "array",
                                                            "null"
                                                        ],
                                                        "description": "Wyckoff-position splitting data associated with a subgroup or same-space-group transform.\n\nEach list item gives the split of one parent Wyckoff position.\nThe parent Wyckoff letter is stored in the `parent` field rather than as a JSON dictionary key.\n\n**Requirements/Conventions**:\n\n- It MUST be a list of dictionaries.\n- Each dictionary MUST contain `parent`, the Wyckoff letter in the parent setting.\n- Each dictionary MUST contain `splits`, an ordered list of subgroup Wyckoff-position assignments or coordinate expressions emitted by the generator.",
                                                        "items": {
                                                            "x-optimade-type": "dictionary",
                                                            "x-optimade-unit": "inapplicable",
                                                            "type": [
                                                                "object"
                                                            ],
                                                            "description": "Splitting data for one parent Wyckoff position.",
                                                            "required": [
                                                                "parent",
                                                                "splits"
                                                            ],
                                                            "properties": {
                                                                "parent": {
                                                                    "x-optimade-type": "string",
                                                                    "x-optimade-unit": "inapplicable",
                                                                    "type": [
                                                                        "string"
                                                                    ],
                                                                    "description": "Parent Wyckoff letter."
                                                                },
                                                                "splits": {
                                                                    "x-optimade-type": "list",
                                                                    "x-optimade-unit": "inapplicable",
                                                                    "type": [
                                                                        "array"
                                                                    ],
                                                                    "description": "Ordered split records for this parent Wyckoff letter.",
                                                                    "items": {
                                                                        "x-optimade-type": "dictionary",
                                                                        "x-optimade-unit": "inapplicable",
                                                                        "type": [
                                                                            "object"
                                                                        ],
                                                                        "description": "One Wyckoff split record.",
                                                                        "required": [
                                                                            "letter",
                                                                            "xyz",
                                                                            "affine"
                                                                        ],
                                                                        "properties": {
                                                                            "letter": {
                                                                                "x-optimade-type": "string",
                                                                                "x-optimade-unit": "inapplicable",
                                                                                "type": [
                                                                                    "string"
                                                                                ],
                                                                                "description": "Subgroup Wyckoff letter assigned by this split branch."
                                                                            },
                                                                            "xyz": {
                                                                                "x-optimade-type": "string",
                                                                                "x-optimade-unit": "inapplicable",
                                                                                "type": [
                                                                                    "string"
                                                                                ],
                                                                                "description": "Coordinate expression for the split branch."
                                                                            },
                                                                            "affine": {
                                                                                "x-optimade-type": "list",
                                                                                "x-optimade-unit": "inapplicable",
                                                                                "x-optimade-dimensions": {
                                                                                    "names": [
                                                                                        "dim_lattice",
                                                                                        "dim_affine"
                                                                                    ],
                                                                                    "sizes": [
                                                                                        3,
                                                                                        4
                                                                                    ]
                                                                                },
                                                                                "type": [
                                                                                    "array"
                                                                                ],
                                                                                "description": "Exact affine representation for the split branch as a 3 by 4 augmented matrix.\nEach row holds the three linear coefficients followed by the translation component, all as exact fraction strings.",
                                                                                "items": {
                                                                                    "x-optimade-type": "list",
                                                                                    "x-optimade-unit": "inapplicable",
                                                                                    "x-optimade-dimensions": {
                                                                                        "names": [
                                                                                            "dim_affine"
                                                                                        ],
                                                                                        "sizes": [
                                                                                            4
                                                                                        ]
                                                                                    },
                                                                                    "type": [
                                                                                        "array"
                                                                                    ],
                                                                                    "description": "One row of the augmented affine matrix.",
                                                                                    "items": {
                                                                                        "$id": "https://schemas.anyterial.se/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": [
                                                            [
                                                                {
                                                                    "parent": "c",
                                                                    "splits": [
                                                                        {
                                                                            "letter": "e",
                                                                            "xyz": "x,y,z",
                                                                            "affine": [
                                                                                [
                                                                                    "1",
                                                                                    "0",
                                                                                    "0",
                                                                                    "0"
                                                                                ],
                                                                                [
                                                                                    "0",
                                                                                    "1",
                                                                                    "0",
                                                                                    "0"
                                                                                ],
                                                                                [
                                                                                    "0",
                                                                                    "0",
                                                                                    "1",
                                                                                    "0"
                                                                                ]
                                                                            ]
                                                                        }
                                                                    ]
                                                                }
                                                            ]
                                                        ]
                                                    },
                                                    "criteria": {
                                                        "x-optimade-type": "list",
                                                        "x-optimade-unit": "inapplicable",
                                                        "type": [
                                                            "array",
                                                            "null"
                                                        ],
                                                        "description": "Backward-lift constraint metadata induced by the transform, grouped by explicit parent Wyckoff letter.",
                                                        "items": {
                                                            "x-optimade-type": "dictionary",
                                                            "x-optimade-unit": "inapplicable",
                                                            "type": [
                                                                "object"
                                                            ],
                                                            "description": "Backward-lift constraints for one parent Wyckoff position.",
                                                            "required": [
                                                                "parent",
                                                                "constraints"
                                                            ],
                                                            "properties": {
                                                                "parent": {
                                                                    "x-optimade-type": "string",
                                                                    "x-optimade-unit": "inapplicable",
                                                                    "type": [
                                                                        "string"
                                                                    ],
                                                                    "description": "Parent Wyckoff letter."
                                                                },
                                                                "constraints": {
                                                                    "x-optimade-type": "list",
                                                                    "x-optimade-unit": "inapplicable",
                                                                    "type": [
                                                                        "array"
                                                                    ],
                                                                    "description": "Constraint records for this parent Wyckoff letter.",
                                                                    "items": {
                                                                        "x-optimade-type": "dictionary",
                                                                        "x-optimade-unit": "inapplicable",
                                                                        "type": [
                                                                            "object"
                                                                        ],
                                                                        "description": "One linear backward-lift constraint record.",
                                                                        "properties": {
                                                                            "roles": {
                                                                                "x-optimade-type": "list",
                                                                                "x-optimade-unit": "inapplicable",
                                                                                "type": [
                                                                                    "array"
                                                                                ],
                                                                                "description": "Wyckoff-position role references entering the constraint.",
                                                                                "items": {
                                                                                    "x-optimade-type": "dictionary",
                                                                                    "x-optimade-unit": "inapplicable",
                                                                                    "type": [
                                                                                        "object"
                                                                                    ],
                                                                                    "description": "One role reference.",
                                                                                    "required": [
                                                                                        "letter",
                                                                                        "index"
                                                                                    ],
                                                                                    "properties": {
                                                                                        "letter": {
                                                                                            "x-optimade-type": "string",
                                                                                            "x-optimade-unit": "inapplicable",
                                                                                            "type": [
                                                                                                "string"
                                                                                            ],
                                                                                            "description": "Wyckoff letter for the referenced role."
                                                                                        },
                                                                                        "index": {
                                                                                            "x-optimade-type": "integer",
                                                                                            "x-optimade-unit": "inapplicable",
                                                                                            "type": [
                                                                                                "integer"
                                                                                            ],
                                                                                            "description": "Zero-based occurrence index for the role."
                                                                                        }
                                                                                    }
                                                                                }
                                                                            },
                                                                            "coeffs": {
                                                                                "x-optimade-type": "list",
                                                                                "x-optimade-unit": "inapplicable",
                                                                                "type": [
                                                                                    "array"
                                                                                ],
                                                                                "description": "Exact coefficient vectors for the constraint.",
                                                                                "items": {
                                                                                    "x-optimade-type": "list",
                                                                                    "x-optimade-unit": "inapplicable",
                                                                                    "type": [
                                                                                        "array"
                                                                                    ],
                                                                                    "description": "Coefficients associated with one role.",
                                                                                    "items": {
                                                                                        "x-optimade-type": "list",
                                                                                        "x-optimade-unit": "inapplicable",
                                                                                        "x-optimade-dimensions": {
                                                                                            "names": [
                                                                                                "dim_lattice"
                                                                                            ],
                                                                                            "sizes": [
                                                                                                3
                                                                                            ]
                                                                                        },
                                                                                        "type": [
                                                                                            "array"
                                                                                        ],
                                                                                        "description": "One exact coefficient vector.",
                                                                                        "items": {
                                                                                            "$id": "https://schemas.anyterial.se/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"
                                                                                        }
                                                                                    }
                                                                                }
                                                                            },
                                                                            "target": {
                                                                                "x-optimade-type": "list",
                                                                                "x-optimade-unit": "inapplicable",
                                                                                "type": [
                                                                                    "array"
                                                                                ],
                                                                                "description": "Exact target vector or scalar for the constraint.",
                                                                                "items": {
                                                                                    "$id": "https://schemas.anyterial.se/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",
                                                                    "2"
                                                                ]
                                                            ],
                                                            "vector": [
                                                                "0",
                                                                "0",
                                                                "0"
                                                            ],
                                                            "xyz": "x,y,2z",
                                                            "det": 2,
                                                            "is_orthogonal": false
                                                        },
                                                        "index": 2,
                                                        "subgroup_type": "k",
                                                        "k_subtype": "enlarged_unit_cell",
                                                        "wyckoff_splitting": [
                                                            {
                                                                "parent": "a",
                                                                "splits": [
                                                                    {
                                                                        "letter": "a",
                                                                        "xyz": "x,y,z",
                                                                        "affine": [
                                                                            [
                                                                                "1",
                                                                                "0",
                                                                                "0",
                                                                                "0"
                                                                            ],
                                                                            [
                                                                                "0",
                                                                                "1",
                                                                                "0",
                                                                                "0"
                                                                            ],
                                                                            [
                                                                                "0",
                                                                                "0",
                                                                                "1",
                                                                                "0"
                                                                            ]
                                                                        ]
                                                                    }
                                                                ]
                                                            }
                                                        ],
                                                        "criteria": [
                                                            {
                                                                "parent": "a",
                                                                "constraints": [
                                                                    {
                                                                        "roles": [
                                                                            {
                                                                                "letter": "a",
                                                                                "index": 0
                                                                            }
                                                                        ],
                                                                        "coeffs": [
                                                                            [
                                                                                [
                                                                                    "1",
                                                                                    "0",
                                                                                    "0"
                                                                                ]
                                                                            ]
                                                                        ],
                                                                        "target": [
                                                                            "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
                                                        },
                                                        "compatible_systems": [
                                                            "triclinic",
                                                            "monoclinic",
                                                            "orthorhombic",
                                                            "tetragonal",
                                                            "trigonal",
                                                            "hexagonal",
                                                            "cubic"
                                                        ],
                                                        "operation_kind": "affine"
                                                    }
                                                ]
                                            }
                                        }
                                    }
                                },
                                "examples": [
                                    [
                                        {
                                            "target_it_number": 2,
                                            "transforms": [
                                                {
                                                    "index": 2,
                                                    "affine_transformation": {
                                                        "matrix": [
                                                            [
                                                                "1",
                                                                "0",
                                                                "0"
                                                            ],
                                                            [
                                                                "0",
                                                                "1",
                                                                "0"
                                                            ],
                                                            [
                                                                "0",
                                                                "0",
                                                                "2"
                                                            ]
                                                        ],
                                                        "vector": [
                                                            "0",
                                                            "0",
                                                            "0"
                                                        ]
                                                    },
                                                    "criteria": [
                                                        {
                                                            "parent": "a",
                                                            "constraints": [
                                                                {
                                                                    "roles": [
                                                                        [
                                                                            "a",
                                                                            0
                                                                        ]
                                                                    ],
                                                                    "coeffs": [
                                                                        [
                                                                            [
                                                                                "1",
                                                                                "0",
                                                                                "0"
                                                                            ]
                                                                        ]
                                                                    ],
                                                                    "target": [
                                                                        "0",
                                                                        "0",
                                                                        "0"
                                                                    ]
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                }
                                            ]
                                        }
                                    ]
                                ]
                            },
                            "isomorphic_subgroups": {
                                "$id": "https://schemas.anyterial.se/defs/v0.1/properties/transformations/isomorphic_subgroups",
                                "title": "Isomorphic subgroup transforms",
                                "x-optimade-type": "dictionary",
                                "x-optimade-definition": {
                                    "kind": "property",
                                    "version": "0.1.0",
                                    "format": "1.3",
                                    "name": "isomorphic_subgroups",
                                    "label": "isomorphic_subgroups_transformations"
                                },
                                "x-optimade-unit": "inapplicable",
                                "type": [
                                    "object",
                                    "null"
                                ],
                                "description": "Isomorphic subgroup transforms of bounded index for one parent setting or space-group type.\n\nAn isomorphic subgroup has the same space-group type as the parent but is embedded with a finite index, usually corresponding to an enlarged unit cell or a sublattice choice.\nThese transforms are useful for algorithms that need to enumerate same-type subgroup embeddings, compare structures under supercell changes, or construct bounded same-space-group refinement paths.\n\nThe transform records use the basis-transform convention represented by `matrix` and `vector`.\nThe `index` field is the subgroup index and equals the determinant factor of the basis transformation.\nThe generator currently searches indices up to its configured maximum index and deduplicates equivalent transforms under normalizer equivalence.\n\n**Requirements/Conventions**:\n\n- It MUST be a dictionary containing an `items` list.\n- Each item in `items` MUST describe one exact isomorphic subgroup transform.\n- Matrix and vector entries MUST be exact strings, using integer strings or fraction strings as appropriate.",
                                "properties": {
                                    "items": {
                                        "x-optimade-type": "list",
                                        "x-optimade-unit": "inapplicable",
                                        "type": [
                                            "array",
                                            "null"
                                        ],
                                        "description": "Isomorphic subgroup transform records for one parent key.",
                                        "items": {
                                            "$id": "https://schemas.anyterial.se/defs/v0.1/properties/symmetry/basis_transform",
                                            "title": "Basis transformation",
                                            "x-optimade-type": "dictionary",
                                            "x-optimade-definition": {
                                                "kind": "property",
                                                "version": "0.1.0",
                                                "format": "1.3",
                                                "name": "basis_transform",
                                                "label": "basis_transform_symmetry"
                                            },
                                            "x-optimade-unit": "inapplicable",
                                            "type": [
                                                "object",
                                                "null"
                                            ],
                                            "description": "One crystallographic transform between coordinate descriptions, settings, cells, or related group embeddings.\n\nThe affine map itself is stored in the embedded `affine_transformation` field.\nThe parent property defines the source and target coordinate systems and the precise role of the transform.\nUseful, for example, for representing setting changes, subgroup embeddings, isomorphic subgroup transforms, normalizer representatives, and same-space-group affine images.\nThis property is not limited to symmetry operations within one fixed setting; the matrix may be non-orthogonal or have determinant different from one when the transform changes cell or basis.\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 transform, using exact rational matrix and vector entries.\n      The coordinate convention and source/target interpretation are supplied by the parent property.\n\n    - **index**: OPTIONAL; Integer or null.\n      Index metadata whose interpretation is defined by the parent property.\n      Common uses include the subgroup index for subgroup embeddings, the cell index for isomorphic subgroup transforms, or an ordinal representative index in a finite transform table.\n\n    - **subgroup\\_type**: OPTIONAL; String.\n      International Tables subgroup-type label when the transform describes a maximal subgroup embedding.\n      The value MUST be `t` for a translationengleiche subgroup or `k` for a klassengleiche subgroup.\n      It MUST be omitted when the transform is not a maximal subgroup embedding.\n\n    - **k\\_subtype**: OPTIONAL; String or null.\n      Klassengleiche subtype when the transform describes a klassengleiche subgroup relation.\n      The value MUST be `loss_of_centering_translation` or `enlarged_unit_cell` for klassengleiche relations and null or omitted otherwise.\n\n    - **compatible\\_systems**: OPTIONAL; List of strings.\n      Crystal metric systems for which the transform is compatible.\n      This is used for bounded affine normalizer representatives.\n\n    - **operation\\_kind**: OPTIONAL; String.\n      Categorical label for normalizer-type representatives.\n      The value MUST be `euclidean` for Euclidean normalizer operations, `orthogonal_affine` for the signed-permutation affine normalizer subset, or `affine` for the bounded unimodular affine normalizer table.\n      It MUST be omitted when the transform is a setting transform, subgroup embedding, or other transform for which no normalizer operation class applies.\n\n    - **wyckoff\\_splitting**: OPTIONAL; List.\n      Wyckoff-position splitting metadata induced by the transform when available.\n      The list is grouped by explicit parent Wyckoff letter.\n\n    - **criteria**: OPTIONAL; List.\n      Backward-lift constraint metadata induced by the transform when available.\n      The list is grouped by explicit parent Wyckoff letter.",
                                            "properties": {
                                                "affine_transformation": {
                                                    "$id": "https://schemas.anyterial.se/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 affine transformation is a geometric transformation preserving points, straight lines, and parallelism (collinearity), but may not preserve Euclidean distances and angles.\nThe transformation is represented by a 3 by 3 matrix and a 3-vector, both serialized with exact string entries.\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\n    - **det**: OPTIONAL; Integer.\n      Determinant of `matrix` when the generator emits it.\n\n    - **is\\_orthogonal**: OPTIONAL; Boolean.\n      Whether `matrix` is orthogonal in the exact representation used by the generator.",
                                                    "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.anyterial.se/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.anyterial.se/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.anyterial.se/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."
                                                        },
                                                        "is_orthogonal": {
                                                            "x-optimade-type": "boolean",
                                                            "x-optimade-unit": "inapplicable",
                                                            "type": [
                                                                "boolean",
                                                                "null"
                                                            ],
                                                            "description": "Whether the matrix part is orthogonal."
                                                        }
                                                    },
                                                    "examples": [
                                                        {
                                                            "matrix": [
                                                                [
                                                                    "-1",
                                                                    "0",
                                                                    "0"
                                                                ],
                                                                [
                                                                    "0",
                                                                    "-1",
                                                                    "0"
                                                                ],
                                                                [
                                                                    "0",
                                                                    "0",
                                                                    "1"
                                                                ]
                                                            ],
                                                            "vector": [
                                                                "0",
                                                                "0",
                                                                "0"
                                                            ],
                                                            "xyz": "-x,-y,z",
                                                            "det": 1,
                                                            "is_orthogonal": true
                                                        }
                                                    ]
                                                },
                                                "index": {
                                                    "x-optimade-type": "integer",
                                                    "x-optimade-unit": "inapplicable",
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "description": "Index metadata whose interpretation is supplied by the parent property."
                                                },
                                                "subgroup_type": {
                                                    "x-optimade-type": "string",
                                                    "x-optimade-unit": "inapplicable",
                                                    "type": [
                                                        "string"
                                                    ],
                                                    "description": "International Tables subgroup-type label when applicable.",
                                                    "enum": [
                                                        "t",
                                                        "k"
                                                    ]
                                                },
                                                "k_subtype": {
                                                    "x-optimade-type": "string",
                                                    "x-optimade-unit": "inapplicable",
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ],
                                                    "description": "Klassengleiche subtype when applicable."
                                                },
                                                "compatible_systems": {
                                                    "x-optimade-type": "list",
                                                    "x-optimade-unit": "inapplicable",
                                                    "type": [
                                                        "array",
                                                        "null"
                                                    ],
                                                    "description": "Crystal metric systems compatible with the transform.",
                                                    "items": {
                                                        "x-optimade-type": "string",
                                                        "x-optimade-unit": "inapplicable",
                                                        "type": [
                                                            "string"
                                                        ],
                                                        "description": "One compatible crystal-system label.",
                                                        "enum": [
                                                            "triclinic",
                                                            "monoclinic",
                                                            "orthorhombic",
                                                            "tetragonal",
                                                            "trigonal",
                                                            "hexagonal",
                                                            "cubic"
                                                        ]
                                                    }
                                                },
                                                "operation_kind": {
                                                    "x-optimade-type": "string",
                                                    "x-optimade-unit": "inapplicable",
                                                    "type": [
                                                        "string"
                                                    ],
                                                    "description": "Categorical label for normalizer-type representatives.",
                                                    "enum": [
                                                        "euclidean",
                                                        "orthogonal_affine",
                                                        "affine"
                                                    ]
                                                },
                                                "wyckoff_splitting": {
                                                    "$id": "https://schemas.anyterial.se/defs/v0.1/properties/transformations/wyckoff_splitting",
                                                    "title": "Wyckoff splitting",
                                                    "x-optimade-type": "list",
                                                    "x-optimade-definition": {
                                                        "kind": "property",
                                                        "version": "0.1.0",
                                                        "format": "1.3",
                                                        "name": "wyckoff_splitting",
                                                        "label": "wyckoff_splitting_transformations"
                                                    },
                                                    "x-optimade-unit": "inapplicable",
                                                    "type": [
                                                        "array",
                                                        "null"
                                                    ],
                                                    "description": "Wyckoff-position splitting data associated with a subgroup or same-space-group transform.\n\nEach list item gives the split of one parent Wyckoff position.\nThe parent Wyckoff letter is stored in the `parent` field rather than as a JSON dictionary key.\n\n**Requirements/Conventions**:\n\n- It MUST be a list of dictionaries.\n- Each dictionary MUST contain `parent`, the Wyckoff letter in the parent setting.\n- Each dictionary MUST contain `splits`, an ordered list of subgroup Wyckoff-position assignments or coordinate expressions emitted by the generator.",
                                                    "items": {
                                                        "x-optimade-type": "dictionary",
                                                        "x-optimade-unit": "inapplicable",
                                                        "type": [
                                                            "object"
                                                        ],
                                                        "description": "Splitting data for one parent Wyckoff position.",
                                                        "required": [
                                                            "parent",
                                                            "splits"
                                                        ],
                                                        "properties": {
                                                            "parent": {
                                                                "x-optimade-type": "string",
                                                                "x-optimade-unit": "inapplicable",
                                                                "type": [
                                                                    "string"
                                                                ],
                                                                "description": "Parent Wyckoff letter."
                                                            },
                                                            "splits": {
                                                                "x-optimade-type": "list",
                                                                "x-optimade-unit": "inapplicable",
                                                                "type": [
                                                                    "array"
                                                                ],
                                                                "description": "Ordered split records for this parent Wyckoff letter.",
                                                                "items": {
                                                                    "x-optimade-type": "dictionary",
                                                                    "x-optimade-unit": "inapplicable",
                                                                    "type": [
                                                                        "object"
                                                                    ],
                                                                    "description": "One Wyckoff split record.",
                                                                    "required": [
                                                                        "letter",
                                                                        "xyz",
                                                                        "affine"
                                                                    ],
                                                                    "properties": {
                                                                        "letter": {
                                                                            "x-optimade-type": "string",
                                                                            "x-optimade-unit": "inapplicable",
                                                                            "type": [
                                                                                "string"
                                                                            ],
                                                                            "description": "Subgroup Wyckoff letter assigned by this split branch."
                                                                        },
                                                                        "xyz": {
                                                                            "x-optimade-type": "string",
                                                                            "x-optimade-unit": "inapplicable",
                                                                            "type": [
                                                                                "string"
                                                                            ],
                                                                            "description": "Coordinate expression for the split branch."
                                                                        },
                                                                        "affine": {
                                                                            "x-optimade-type": "list",
                                                                            "x-optimade-unit": "inapplicable",
                                                                            "x-optimade-dimensions": {
                                                                                "names": [
                                                                                    "dim_lattice",
                                                                                    "dim_affine"
                                                                                ],
                                                                                "sizes": [
                                                                                    3,
                                                                                    4
                                                                                ]
                                                                            },
                                                                            "type": [
                                                                                "array"
                                                                            ],
                                                                            "description": "Exact affine representation for the split branch as a 3 by 4 augmented matrix.\nEach row holds the three linear coefficients followed by the translation component, all as exact fraction strings.",
                                                                            "items": {
                                                                                "x-optimade-type": "list",
                                                                                "x-optimade-unit": "inapplicable",
                                                                                "x-optimade-dimensions": {
                                                                                    "names": [
                                                                                        "dim_affine"
                                                                                    ],
                                                                                    "sizes": [
                                                                                        4
                                                                                    ]
                                                                                },
                                                                                "type": [
                                                                                    "array"
                                                                                ],
                                                                                "description": "One row of the augmented affine matrix.",
                                                                                "items": {
                                                                                    "$id": "https://schemas.anyterial.se/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": [
                                                        [
                                                            {
                                                                "parent": "c",
                                                                "splits": [
                                                                    {
                                                                        "letter": "e",
                                                                        "xyz": "x,y,z",
                                                                        "affine": [
                                                                            [
                                                                                "1",
                                                                                "0",
                                                                                "0",
                                                                                "0"
                                                                            ],
                                                                            [
                                                                                "0",
                                                                                "1",
                                                                                "0",
                                                                                "0"
                                                                            ],
                                                                            [
                                                                                "0",
                                                                                "0",
                                                                                "1",
                                                                                "0"
                                                                            ]
                                                                        ]
                                                                    }
                                                                ]
                                                            }
                                                        ]
                                                    ]
                                                },
                                                "criteria": {
                                                    "x-optimade-type": "list",
                                                    "x-optimade-unit": "inapplicable",
                                                    "type": [
                                                        "array",
                                                        "null"
                                                    ],
                                                    "description": "Backward-lift constraint metadata induced by the transform, grouped by explicit parent Wyckoff letter.",
                                                    "items": {
                                                        "x-optimade-type": "dictionary",
                                                        "x-optimade-unit": "inapplicable",
                                                        "type": [
                                                            "object"
                                                        ],
                                                        "description": "Backward-lift constraints for one parent Wyckoff position.",
                                                        "required": [
                                                            "parent",
                                                            "constraints"
                                                        ],
                                                        "properties": {
                                                            "parent": {
                                                                "x-optimade-type": "string",
                                                                "x-optimade-unit": "inapplicable",
                                                                "type": [
                                                                    "string"
                                                                ],
                                                                "description": "Parent Wyckoff letter."
                                                            },
                                                            "constraints": {
                                                                "x-optimade-type": "list",
                                                                "x-optimade-unit": "inapplicable",
                                                                "type": [
                                                                    "array"
                                                                ],
                                                                "description": "Constraint records for this parent Wyckoff letter.",
                                                                "items": {
                                                                    "x-optimade-type": "dictionary",
                                                                    "x-optimade-unit": "inapplicable",
                                                                    "type": [
                                                                        "object"
                                                                    ],
                                                                    "description": "One linear backward-lift constraint record.",
                                                                    "properties": {
                                                                        "roles": {
                                                                            "x-optimade-type": "list",
                                                                            "x-optimade-unit": "inapplicable",
                                                                            "type": [
                                                                                "array"
                                                                            ],
                                                                            "description": "Wyckoff-position role references entering the constraint.",
                                                                            "items": {
                                                                                "x-optimade-type": "dictionary",
                                                                                "x-optimade-unit": "inapplicable",
                                                                                "type": [
                                                                                    "object"
                                                                                ],
                                                                                "description": "One role reference.",
                                                                                "required": [
                                                                                    "letter",
                                                                                    "index"
                                                                                ],
                                                                                "properties": {
                                                                                    "letter": {
                                                                                        "x-optimade-type": "string",
                                                                                        "x-optimade-unit": "inapplicable",
                                                                                        "type": [
                                                                                            "string"
                                                                                        ],
                                                                                        "description": "Wyckoff letter for the referenced role."
                                                                                    },
                                                                                    "index": {
                                                                                        "x-optimade-type": "integer",
                                                                                        "x-optimade-unit": "inapplicable",
                                                                                        "type": [
                                                                                            "integer"
                                                                                        ],
                                                                                        "description": "Zero-based occurrence index for the role."
                                                                                    }
                                                                                }
                                                                            }
                                                                        },
                                                                        "coeffs": {
                                                                            "x-optimade-type": "list",
                                                                            "x-optimade-unit": "inapplicable",
                                                                            "type": [
                                                                                "array"
                                                                            ],
                                                                            "description": "Exact coefficient vectors for the constraint.",
                                                                            "items": {
                                                                                "x-optimade-type": "list",
                                                                                "x-optimade-unit": "inapplicable",
                                                                                "type": [
                                                                                    "array"
                                                                                ],
                                                                                "description": "Coefficients associated with one role.",
                                                                                "items": {
                                                                                    "x-optimade-type": "list",
                                                                                    "x-optimade-unit": "inapplicable",
                                                                                    "x-optimade-dimensions": {
                                                                                        "names": [
                                                                                            "dim_lattice"
                                                                                        ],
                                                                                        "sizes": [
                                                                                            3
                                                                                        ]
                                                                                    },
                                                                                    "type": [
                                                                                        "array"
                                                                                    ],
                                                                                    "description": "One exact coefficient vector.",
                                                                                    "items": {
                                                                                        "$id": "https://schemas.anyterial.se/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"
                                                                                    }
                                                                                }
                                                                            }
                                                                        },
                                                                        "target": {
                                                                            "x-optimade-type": "list",
                                                                            "x-optimade-unit": "inapplicable",
                                                                            "type": [
                                                                                "array"
                                                                            ],
                                                                            "description": "Exact target vector or scalar for the constraint.",
                                                                            "items": {
                                                                                "$id": "https://schemas.anyterial.se/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",
                                                                "2"
                                                            ]
                                                        ],
                                                        "vector": [
                                                            "0",
                                                            "0",
                                                            "0"
                                                        ],
                                                        "xyz": "x,y,2z",
                                                        "det": 2,
                                                        "is_orthogonal": false
                                                    },
                                                    "index": 2,
                                                    "subgroup_type": "k",
                                                    "k_subtype": "enlarged_unit_cell",
                                                    "wyckoff_splitting": [
                                                        {
                                                            "parent": "a",
                                                            "splits": [
                                                                {
                                                                    "letter": "a",
                                                                    "xyz": "x,y,z",
                                                                    "affine": [
                                                                        [
                                                                            "1",
                                                                            "0",
                                                                            "0",
                                                                            "0"
                                                                        ],
                                                                        [
                                                                            "0",
                                                                            "1",
                                                                            "0",
                                                                            "0"
                                                                        ],
                                                                        [
                                                                            "0",
                                                                            "0",
                                                                            "1",
                                                                            "0"
                                                                        ]
                                                                    ]
                                                                }
                                                            ]
                                                        }
                                                    ],
                                                    "criteria": [
                                                        {
                                                            "parent": "a",
                                                            "constraints": [
                                                                {
                                                                    "roles": [
                                                                        {
                                                                            "letter": "a",
                                                                            "index": 0
                                                                        }
                                                                    ],
                                                                    "coeffs": [
                                                                        [
                                                                            [
                                                                                "1",
                                                                                "0",
                                                                                "0"
                                                                            ]
                                                                        ]
                                                                    ],
                                                                    "target": [
                                                                        "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
                                                    },
                                                    "compatible_systems": [
                                                        "triclinic",
                                                        "monoclinic",
                                                        "orthorhombic",
                                                        "tetragonal",
                                                        "trigonal",
                                                        "hexagonal",
                                                        "cubic"
                                                    ],
                                                    "operation_kind": "affine"
                                                }
                                            ]
                                        }
                                    }
                                },
                                "examples": [
                                    {
                                        "items": [
                                            {
                                                "index": 2,
                                                "wyckoff_splitting": {
                                                    "a": [
                                                        [
                                                            "a",
                                                            "x,y,z",
                                                            [
                                                                [
                                                                    "1",
                                                                    "0",
                                                                    "0",
                                                                    "0"
                                                                ],
                                                                [
                                                                    "0",
                                                                    "1",
                                                                    "0",
                                                                    "0"
                                                                ],
                                                                [
                                                                    "0",
                                                                    "0",
                                                                    "1/2",
                                                                    "1/2"
                                                                ]
                                                            ]
                                                        ],
                                                        [
                                                            "a",
                                                            "x,y,z",
                                                            [
                                                                [
                                                                    "1",
                                                                    "0",
                                                                    "0",
                                                                    "0"
                                                                ],
                                                                [
                                                                    "0",
                                                                    "1",
                                                                    "0",
                                                                    "0"
                                                                ],
                                                                [
                                                                    "0",
                                                                    "0",
                                                                    "1/2",
                                                                    "0"
                                                                ]
                                                            ]
                                                        ]
                                                    ]
                                                },
                                                "affine_transformation": {
                                                    "matrix": [
                                                        [
                                                            "1",
                                                            "0",
                                                            "0"
                                                        ],
                                                        [
                                                            "0",
                                                            "1",
                                                            "0"
                                                        ],
                                                        [
                                                            "0",
                                                            "0",
                                                            "2"
                                                        ]
                                                    ],
                                                    "vector": [
                                                        "0",
                                                        "0",
                                                        "0"
                                                    ]
                                                }
                                            }
                                        ]
                                    }
                                ]
                            },
                            "same_space_group_affine_images_std": {
                                "$id": "https://schemas.anyterial.se/defs/v0.1/properties/transformations/same_space_group_affine_images_std",
                                "title": "Same space group affine images std",
                                "x-optimade-type": "dictionary",
                                "x-optimade-definition": {
                                    "kind": "property",
                                    "version": "0.1.0",
                                    "format": "1.3",
                                    "name": "same_space_group_affine_images_std",
                                    "label": "same_space_group_affine_images_std_transformations"
                                },
                                "x-optimade-unit": "inapplicable",
                                "type": [
                                    "object",
                                    "null"
                                ],
                                "description": "Same-space-group affine-image record for one International Tables standard setting.\n\n**Requirements/Conventions**:\n\n- It MUST be a dictionary with the following keys:\n\n    - **it\\_number**: REQUIRED; Integer.\n      International Tables space-group number for the standard setting.\n\n    - **hall**: REQUIRED; String.\n      Hall-entry key of the reference setting used for the standard setting.\n\n    - **affine\\_images**: REQUIRED; List of dictionaries.\n      Same-space-group affine images represented by exact `matrix` and `vector` transforms.",
                                "properties": {
                                    "it_number": {
                                        "$id": "https://schemas.anyterial.se/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
                                        ]
                                    },
                                    "hall": {
                                        "$id": "https://schemas.anyterial.se/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.",
                                        "x-optimade-unit": "inapplicable",
                                        "examples": [
                                            "p_1",
                                            "-p_1"
                                        ]
                                    },
                                    "affine_images": {
                                        "x-optimade-type": "list",
                                        "x-optimade-unit": "inapplicable",
                                        "type": [
                                            "array",
                                            "null"
                                        ],
                                        "description": "Same-space-group affine image transforms.",
                                        "items": {
                                            "$id": "https://schemas.anyterial.se/defs/v0.1/properties/symmetry/basis_transform",
                                            "title": "Basis transformation",
                                            "x-optimade-type": "dictionary",
                                            "x-optimade-definition": {
                                                "kind": "property",
                                                "version": "0.1.0",
                                                "format": "1.3",
                                                "name": "basis_transform",
                                                "label": "basis_transform_symmetry"
                                            },
                                            "x-optimade-unit": "inapplicable",
                                            "type": [
                                                "object",
                                                "null"
                                            ],
                                            "description": "One crystallographic transform between coordinate descriptions, settings, cells, or related group embeddings.\n\nThe affine map itself is stored in the embedded `affine_transformation` field.\nThe parent property defines the source and target coordinate systems and the precise role of the transform.\nUseful, for example, for representing setting changes, subgroup embeddings, isomorphic subgroup transforms, normalizer representatives, and same-space-group affine images.\nThis property is not limited to symmetry operations within one fixed setting; the matrix may be non-orthogonal or have determinant different from one when the transform changes cell or basis.\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 transform, using exact rational matrix and vector entries.\n      The coordinate convention and source/target interpretation are supplied by the parent property.\n\n    - **index**: OPTIONAL; Integer or null.\n      Index metadata whose interpretation is defined by the parent property.\n      Common uses include the subgroup index for subgroup embeddings, the cell index for isomorphic subgroup transforms, or an ordinal representative index in a finite transform table.\n\n    - **subgroup\\_type**: OPTIONAL; String.\n      International Tables subgroup-type label when the transform describes a maximal subgroup embedding.\n      The value MUST be `t` for a translationengleiche subgroup or `k` for a klassengleiche subgroup.\n      It MUST be omitted when the transform is not a maximal subgroup embedding.\n\n    - **k\\_subtype**: OPTIONAL; String or null.\n      Klassengleiche subtype when the transform describes a klassengleiche subgroup relation.\n      The value MUST be `loss_of_centering_translation` or `enlarged_unit_cell` for klassengleiche relations and null or omitted otherwise.\n\n    - **compatible\\_systems**: OPTIONAL; List of strings.\n      Crystal metric systems for which the transform is compatible.\n      This is used for bounded affine normalizer representatives.\n\n    - **operation\\_kind**: OPTIONAL; String.\n      Categorical label for normalizer-type representatives.\n      The value MUST be `euclidean` for Euclidean normalizer operations, `orthogonal_affine` for the signed-permutation affine normalizer subset, or `affine` for the bounded unimodular affine normalizer table.\n      It MUST be omitted when the transform is a setting transform, subgroup embedding, or other transform for which no normalizer operation class applies.\n\n    - **wyckoff\\_splitting**: OPTIONAL; List.\n      Wyckoff-position splitting metadata induced by the transform when available.\n      The list is grouped by explicit parent Wyckoff letter.\n\n    - **criteria**: OPTIONAL; List.\n      Backward-lift constraint metadata induced by the transform when available.\n      The list is grouped by explicit parent Wyckoff letter.",
                                            "properties": {
                                                "affine_transformation": {
                                                    "$id": "https://schemas.anyterial.se/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 affine transformation is a geometric transformation preserving points, straight lines, and parallelism (collinearity), but may not preserve Euclidean distances and angles.\nThe transformation is represented by a 3 by 3 matrix and a 3-vector, both serialized with exact string entries.\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\n    - **det**: OPTIONAL; Integer.\n      Determinant of `matrix` when the generator emits it.\n\n    - **is\\_orthogonal**: OPTIONAL; Boolean.\n      Whether `matrix` is orthogonal in the exact representation used by the generator.",
                                                    "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.anyterial.se/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.anyterial.se/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.anyterial.se/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."
                                                        },
                                                        "is_orthogonal": {
                                                            "x-optimade-type": "boolean",
                                                            "x-optimade-unit": "inapplicable",
                                                            "type": [
                                                                "boolean",
                                                                "null"
                                                            ],
                                                            "description": "Whether the matrix part is orthogonal."
                                                        }
                                                    },
                                                    "examples": [
                                                        {
                                                            "matrix": [
                                                                [
                                                                    "-1",
                                                                    "0",
                                                                    "0"
                                                                ],
                                                                [
                                                                    "0",
                                                                    "-1",
                                                                    "0"
                                                                ],
                                                                [
                                                                    "0",
                                                                    "0",
                                                                    "1"
                                                                ]
                                                            ],
                                                            "vector": [
                                                                "0",
                                                                "0",
                                                                "0"
                                                            ],
                                                            "xyz": "-x,-y,z",
                                                            "det": 1,
                                                            "is_orthogonal": true
                                                        }
                                                    ]
                                                },
                                                "index": {
                                                    "x-optimade-type": "integer",
                                                    "x-optimade-unit": "inapplicable",
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "description": "Index metadata whose interpretation is supplied by the parent property."
                                                },
                                                "subgroup_type": {
                                                    "x-optimade-type": "string",
                                                    "x-optimade-unit": "inapplicable",
                                                    "type": [
                                                        "string"
                                                    ],
                                                    "description": "International Tables subgroup-type label when applicable.",
                                                    "enum": [
                                                        "t",
                                                        "k"
                                                    ]
                                                },
                                                "k_subtype": {
                                                    "x-optimade-type": "string",
                                                    "x-optimade-unit": "inapplicable",
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ],
                                                    "description": "Klassengleiche subtype when applicable."
                                                },
                                                "compatible_systems": {
                                                    "x-optimade-type": "list",
                                                    "x-optimade-unit": "inapplicable",
                                                    "type": [
                                                        "array",
                                                        "null"
                                                    ],
                                                    "description": "Crystal metric systems compatible with the transform.",
                                                    "items": {
                                                        "x-optimade-type": "string",
                                                        "x-optimade-unit": "inapplicable",
                                                        "type": [
                                                            "string"
                                                        ],
                                                        "description": "One compatible crystal-system label.",
                                                        "enum": [
                                                            "triclinic",
                                                            "monoclinic",
                                                            "orthorhombic",
                                                            "tetragonal",
                                                            "trigonal",
                                                            "hexagonal",
                                                            "cubic"
                                                        ]
                                                    }
                                                },
                                                "operation_kind": {
                                                    "x-optimade-type": "string",
                                                    "x-optimade-unit": "inapplicable",
                                                    "type": [
                                                        "string"
                                                    ],
                                                    "description": "Categorical label for normalizer-type representatives.",
                                                    "enum": [
                                                        "euclidean",
                                                        "orthogonal_affine",
                                                        "affine"
                                                    ]
                                                },
                                                "wyckoff_splitting": {
                                                    "$id": "https://schemas.anyterial.se/defs/v0.1/properties/transformations/wyckoff_splitting",
                                                    "title": "Wyckoff splitting",
                                                    "x-optimade-type": "list",
                                                    "x-optimade-definition": {
                                                        "kind": "property",
                                                        "version": "0.1.0",
                                                        "format": "1.3",
                                                        "name": "wyckoff_splitting",
                                                        "label": "wyckoff_splitting_transformations"
                                                    },
                                                    "x-optimade-unit": "inapplicable",
                                                    "type": [
                                                        "array",
                                                        "null"
                                                    ],
                                                    "description": "Wyckoff-position splitting data associated with a subgroup or same-space-group transform.\n\nEach list item gives the split of one parent Wyckoff position.\nThe parent Wyckoff letter is stored in the `parent` field rather than as a JSON dictionary key.\n\n**Requirements/Conventions**:\n\n- It MUST be a list of dictionaries.\n- Each dictionary MUST contain `parent`, the Wyckoff letter in the parent setting.\n- Each dictionary MUST contain `splits`, an ordered list of subgroup Wyckoff-position assignments or coordinate expressions emitted by the generator.",
                                                    "items": {
                                                        "x-optimade-type": "dictionary",
                                                        "x-optimade-unit": "inapplicable",
                                                        "type": [
                                                            "object"
                                                        ],
                                                        "description": "Splitting data for one parent Wyckoff position.",
                                                        "required": [
                                                            "parent",
                                                            "splits"
                                                        ],
                                                        "properties": {
                                                            "parent": {
                                                                "x-optimade-type": "string",
                                                                "x-optimade-unit": "inapplicable",
                                                                "type": [
                                                                    "string"
                                                                ],
                                                                "description": "Parent Wyckoff letter."
                                                            },
                                                            "splits": {
                                                                "x-optimade-type": "list",
                                                                "x-optimade-unit": "inapplicable",
                                                                "type": [
                                                                    "array"
                                                                ],
                                                                "description": "Ordered split records for this parent Wyckoff letter.",
                                                                "items": {
                                                                    "x-optimade-type": "dictionary",
                                                                    "x-optimade-unit": "inapplicable",
                                                                    "type": [
                                                                        "object"
                                                                    ],
                                                                    "description": "One Wyckoff split record.",
                                                                    "required": [
                                                                        "letter",
                                                                        "xyz",
                                                                        "affine"
                                                                    ],
                                                                    "properties": {
                                                                        "letter": {
                                                                            "x-optimade-type": "string",
                                                                            "x-optimade-unit": "inapplicable",
                                                                            "type": [
                                                                                "string"
                                                                            ],
                                                                            "description": "Subgroup Wyckoff letter assigned by this split branch."
                                                                        },
                                                                        "xyz": {
                                                                            "x-optimade-type": "string",
                                                                            "x-optimade-unit": "inapplicable",
                                                                            "type": [
                                                                                "string"
                                                                            ],
                                                                            "description": "Coordinate expression for the split branch."
                                                                        },
                                                                        "affine": {
                                                                            "x-optimade-type": "list",
                                                                            "x-optimade-unit": "inapplicable",
                                                                            "x-optimade-dimensions": {
                                                                                "names": [
                                                                                    "dim_lattice",
                                                                                    "dim_affine"
                                                                                ],
                                                                                "sizes": [
                                                                                    3,
                                                                                    4
                                                                                ]
                                                                            },
                                                                            "type": [
                                                                                "array"
                                                                            ],
                                                                            "description": "Exact affine representation for the split branch as a 3 by 4 augmented matrix.\nEach row holds the three linear coefficients followed by the translation component, all as exact fraction strings.",
                                                                            "items": {
                                                                                "x-optimade-type": "list",
                                                                                "x-optimade-unit": "inapplicable",
                                                                                "x-optimade-dimensions": {
                                                                                    "names": [
                                                                                        "dim_affine"
                                                                                    ],
                                                                                    "sizes": [
                                                                                        4
                                                                                    ]
                                                                                },
                                                                                "type": [
                                                                                    "array"
                                                                                ],
                                                                                "description": "One row of the augmented affine matrix.",
                                                                                "items": {
                                                                                    "$id": "https://schemas.anyterial.se/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": [
                                                        [
                                                            {
                                                                "parent": "c",
                                                                "splits": [
                                                                    {
                                                                        "letter": "e",
                                                                        "xyz": "x,y,z",
                                                                        "affine": [
                                                                            [
                                                                                "1",
                                                                                "0",
                                                                                "0",
                                                                                "0"
                                                                            ],
                                                                            [
                                                                                "0",
                                                                                "1",
                                                                                "0",
                                                                                "0"
                                                                            ],
                                                                            [
                                                                                "0",
                                                                                "0",
                                                                                "1",
                                                                                "0"
                                                                            ]
                                                                        ]
                                                                    }
                                                                ]
                                                            }
                                                        ]
                                                    ]
                                                },
                                                "criteria": {
                                                    "x-optimade-type": "list",
                                                    "x-optimade-unit": "inapplicable",
                                                    "type": [
                                                        "array",
                                                        "null"
                                                    ],
                                                    "description": "Backward-lift constraint metadata induced by the transform, grouped by explicit parent Wyckoff letter.",
                                                    "items": {
                                                        "x-optimade-type": "dictionary",
                                                        "x-optimade-unit": "inapplicable",
                                                        "type": [
                                                            "object"
                                                        ],
                                                        "description": "Backward-lift constraints for one parent Wyckoff position.",
                                                        "required": [
                                                            "parent",
                                                            "constraints"
                                                        ],
                                                        "properties": {
                                                            "parent": {
                                                                "x-optimade-type": "string",
                                                                "x-optimade-unit": "inapplicable",
                                                                "type": [
                                                                    "string"
                                                                ],
                                                                "description": "Parent Wyckoff letter."
                                                            },
                                                            "constraints": {
                                                                "x-optimade-type": "list",
                                                                "x-optimade-unit": "inapplicable",
                                                                "type": [
                                                                    "array"
                                                                ],
                                                                "description": "Constraint records for this parent Wyckoff letter.",
                                                                "items": {
                                                                    "x-optimade-type": "dictionary",
                                                                    "x-optimade-unit": "inapplicable",
                                                                    "type": [
                                                                        "object"
                                                                    ],
                                                                    "description": "One linear backward-lift constraint record.",
                                                                    "properties": {
                                                                        "roles": {
                                                                            "x-optimade-type": "list",
                                                                            "x-optimade-unit": "inapplicable",
                                                                            "type": [
                                                                                "array"
                                                                            ],
                                                                            "description": "Wyckoff-position role references entering the constraint.",
                                                                            "items": {
                                                                                "x-optimade-type": "dictionary",
                                                                                "x-optimade-unit": "inapplicable",
                                                                                "type": [
                                                                                    "object"
                                                                                ],
                                                                                "description": "One role reference.",
                                                                                "required": [
                                                                                    "letter",
                                                                                    "index"
                                                                                ],
                                                                                "properties": {
                                                                                    "letter": {
                                                                                        "x-optimade-type": "string",
                                                                                        "x-optimade-unit": "inapplicable",
                                                                                        "type": [
                                                                                            "string"
                                                                                        ],
                                                                                        "description": "Wyckoff letter for the referenced role."
                                                                                    },
                                                                                    "index": {
                                                                                        "x-optimade-type": "integer",
                                                                                        "x-optimade-unit": "inapplicable",
                                                                                        "type": [
                                                                                            "integer"
                                                                                        ],
                                                                                        "description": "Zero-based occurrence index for the role."
                                                                                    }
                                                                                }
                                                                            }
                                                                        },
                                                                        "coeffs": {
                                                                            "x-optimade-type": "list",
                                                                            "x-optimade-unit": "inapplicable",
                                                                            "type": [
                                                                                "array"
                                                                            ],
                                                                            "description": "Exact coefficient vectors for the constraint.",
                                                                            "items": {
                                                                                "x-optimade-type": "list",
                                                                                "x-optimade-unit": "inapplicable",
                                                                                "type": [
                                                                                    "array"
                                                                                ],
                                                                                "description": "Coefficients associated with one role.",
                                                                                "items": {
                                                                                    "x-optimade-type": "list",
                                                                                    "x-optimade-unit": "inapplicable",
                                                                                    "x-optimade-dimensions": {
                                                                                        "names": [
                                                                                            "dim_lattice"
                                                                                        ],
                                                                                        "sizes": [
                                                                                            3
                                                                                        ]
                                                                                    },
                                                                                    "type": [
                                                                                        "array"
                                                                                    ],
                                                                                    "description": "One exact coefficient vector.",
                                                                                    "items": {
                                                                                        "$id": "https://schemas.anyterial.se/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"
                                                                                    }
                                                                                }
                                                                            }
                                                                        },
                                                                        "target": {
                                                                            "x-optimade-type": "list",
                                                                            "x-optimade-unit": "inapplicable",
                                                                            "type": [
                                                                                "array"
                                                                            ],
                                                                            "description": "Exact target vector or scalar for the constraint.",
                                                                            "items": {
                                                                                "$id": "https://schemas.anyterial.se/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",
                                                                "2"
                                                            ]
                                                        ],
                                                        "vector": [
                                                            "0",
                                                            "0",
                                                            "0"
                                                        ],
                                                        "xyz": "x,y,2z",
                                                        "det": 2,
                                                        "is_orthogonal": false
                                                    },
                                                    "index": 2,
                                                    "subgroup_type": "k",
                                                    "k_subtype": "enlarged_unit_cell",
                                                    "wyckoff_splitting": [
                                                        {
                                                            "parent": "a",
                                                            "splits": [
                                                                {
                                                                    "letter": "a",
                                                                    "xyz": "x,y,z",
                                                                    "affine": [
                                                                        [
                                                                            "1",
                                                                            "0",
                                                                            "0",
                                                                            "0"
                                                                        ],
                                                                        [
                                                                            "0",
                                                                            "1",
                                                                            "0",
                                                                            "0"
                                                                        ],
                                                                        [
                                                                            "0",
                                                                            "0",
                                                                            "1",
                                                                            "0"
                                                                        ]
                                                                    ]
                                                                }
                                                            ]
                                                        }
                                                    ],
                                                    "criteria": [
                                                        {
                                                            "parent": "a",
                                                            "constraints": [
                                                                {
                                                                    "roles": [
                                                                        {
                                                                            "letter": "a",
                                                                            "index": 0
                                                                        }
                                                                    ],
                                                                    "coeffs": [
                                                                        [
                                                                            [
                                                                                "1",
                                                                                "0",
                                                                                "0"
                                                                            ]
                                                                        ]
                                                                    ],
                                                                    "target": [
                                                                        "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
                                                    },
                                                    "compatible_systems": [
                                                        "triclinic",
                                                        "monoclinic",
                                                        "orthorhombic",
                                                        "tetragonal",
                                                        "trigonal",
                                                        "hexagonal",
                                                        "cubic"
                                                    ],
                                                    "operation_kind": "affine"
                                                }
                                            ]
                                        }
                                    }
                                },
                                "examples": [
                                    {
                                        "it_number": 1,
                                        "hall": "p_1",
                                        "affine_images": [
                                            {
                                                "affine_transformation": {
                                                    "matrix": [
                                                        [
                                                            "1",
                                                            "0",
                                                            "0"
                                                        ],
                                                        [
                                                            "0",
                                                            "1",
                                                            "0"
                                                        ],
                                                        [
                                                            "0",
                                                            "0",
                                                            "1"
                                                        ]
                                                    ],
                                                    "vector": [
                                                        "0",
                                                        "0",
                                                        "0"
                                                    ]
                                                }
                                            }
                                        ]
                                    }
                                ]
                            },
                            "continuous_normalizer": {
                                "$id": "https://schemas.anyterial.se/defs/v0.1/properties/transformations/continuous_normalizer",
                                "title": "Continuous normalizer",
                                "x-optimade-type": "dictionary",
                                "x-optimade-definition": {
                                    "kind": "property",
                                    "version": "0.1.0",
                                    "format": "1.3",
                                    "name": "continuous_normalizer",
                                    "label": "continuous_normalizer_transformations"
                                },
                                "x-optimade-unit": "inapplicable",
                                "type": [
                                    "object",
                                    "null"
                                ],
                                "description": "Parameterized continuous normalizer subspace for a setting.\n\nIt describes continuous origin-shift freedoms by dimension and fractional-coordinate basis vectors rather than by enumerating infinitely many operations.\n\n**Requirements/Conventions**:\n\n- It MUST be a dictionary with the following keys:\n\n    - **dimension**: OPTIONAL; Integer.\n      Dimension of the continuous parameter subspace.\n      When present, it MUST equal the length of `basis_vectors`.\n\n    - **basis\\_vectors**: REQUIRED; List of vectors.\n      Basis vectors spanning the continuous normalizer parameter space.\n      Each basis vector is represented as exact fractional-coordinate components.\n\n    - **coordinate\\_system**: OPTIONAL; String.\n      Coordinate system used for the parameter vectors.\n\n    - **representation**: OPTIONAL; String.\n      Textual description of the parameterized representation.",
                                "properties": {
                                    "dimension": {
                                        "x-optimade-type": "integer",
                                        "x-optimade-unit": "inapplicable",
                                        "type": [
                                            "integer",
                                            "null"
                                        ],
                                        "description": "Dimension of the continuous parameter subspace. When present, it MUST equal the length of `basis_vectors`."
                                    },
                                    "basis_vectors": {
                                        "x-optimade-type": "list",
                                        "x-optimade-unit": "inapplicable",
                                        "type": [
                                            "array",
                                            "null"
                                        ],
                                        "description": "Basis vectors spanning the continuous normalizer parameter space.",
                                        "items": {
                                            "x-optimade-type": "list",
                                            "x-optimade-unit": "inapplicable",
                                            "x-optimade-dimensions": {
                                                "names": [
                                                    "dim_lattice"
                                                ],
                                                "sizes": [
                                                    3
                                                ]
                                            },
                                            "type": [
                                                "array"
                                            ],
                                            "description": "One basis vector in fractional coordinates.",
                                            "items": {
                                                "$id": "https://schemas.anyterial.se/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"
                                            }
                                        }
                                    },
                                    "coordinate_system": {
                                        "x-optimade-type": "string",
                                        "x-optimade-unit": "inapplicable",
                                        "type": [
                                            "string",
                                            "null"
                                        ],
                                        "description": "Coordinate system used for the parameter vectors."
                                    },
                                    "representation": {
                                        "x-optimade-type": "string",
                                        "x-optimade-unit": "inapplicable",
                                        "type": [
                                            "string",
                                            "null"
                                        ],
                                        "description": "Textual description of the parameterized representation."
                                    }
                                },
                                "examples": [
                                    {
                                        "dimension": 3,
                                        "coordinate_system": "fractional",
                                        "basis_vectors": [
                                            [
                                                "1",
                                                "0",
                                                "0"
                                            ],
                                            [
                                                "0",
                                                "1",
                                                "0"
                                            ],
                                            [
                                                "0",
                                                "0",
                                                "1"
                                            ]
                                        ]
                                    }
                                ]
                            },
                            "orthogonal_affine_normalizer": {
                                "$id": "https://schemas.anyterial.se/defs/v0.1/properties/transformations/orthogonal_affine_normalizer",
                                "title": "Orthogonal affine normalizer",
                                "x-optimade-type": "dictionary",
                                "x-optimade-definition": {
                                    "kind": "property",
                                    "version": "0.1.0",
                                    "format": "1.3",
                                    "name": "orthogonal_affine_normalizer",
                                    "label": "orthogonal_affine_normalizer_transformations"
                                },
                                "x-optimade-unit": "inapplicable",
                                "type": [
                                    "object",
                                    "null"
                                ],
                                "description": "Orthogonal affine normalizer coset representatives for one crystallographic space-group setting.\n\nThe representatives are listed modulo the space group itself, so each listed operation represents an equivalence class of affine normalizer operations rather than every operation in that class.\nThis property contains the signed-permutation subset of affine normalizer representatives.\n\nThe `candidate_set` field belongs in this property because the listed representatives are produced from a deliberately restricted finite candidate set.\nFor this property `candidate_set` is `signed_permutation_matrices`, meaning 3 by 3 integer matrices with exactly one nonzero entry in each row and column and each nonzero entry equal to `-1` or `1`.\nThe plural field `candidate_sets` is not part of the emitted data and MUST NOT be used here.\n\nThis property is one of three related normalizer tables for a setting:\n`euclidean_normalizer` holds the finite Euclidean normalizer operations obtained from cctbx,\nthis property holds the older bounded table restricted to signed-permutation linear parts,\nand `affine_normalizer` holds the bounded table generated from unimodular integer linear parts, which is a superset of this one.\n\n**Requirements/Conventions**:\n\n- It MUST be a dictionary with the following keys:\n\n    - **normalizer\\_kind**: REQUIRED; String.\n      Kind label for this normalizer contribution.\n\n    - **representation**: REQUIRED; String.\n      Representation label for the listed data.\n\n    - **candidate\\_set**: REQUIRED; String.\n      Name of the finite linear candidate set used for generation.\n\n    - **n\\_symops**: REQUIRED; Integer.\n      Number of listed coset representatives after metric-compatibility filtering.\n\n    - **n\\_linear\\_parts**: REQUIRED; Integer.\n      Number of distinct linear matrix parts represented in `symops`.\n\n    - **n\\_raw\\_candidates**: REQUIRED; Integer.\n      Number of affine candidates found before deduplication modulo the space group.\n\n    - **n\\_unique\\_candidates**: REQUIRED; Integer.\n      Number of unique affine candidates before quotienting by the space group.\n\n    - **n\\_coset\\_representatives**: REQUIRED; Integer.\n      Number of non-trivial coset representatives before metric-compatibility filtering.\n\n    - **bounds**: REQUIRED; Dictionary.\n      Simple numerical bounds satisfied by the signed-permutation candidate matrices.\n\n    - **symops**: REQUIRED; List of dictionaries.\n      Listed orthogonal affine normalizer coset representatives.\n      Each item follows `/defs/v0.1/properties/symmetry/basis_transform`.\n      Each item MUST carry `compatible_systems`, the list of crystal systems for which the representative's linear part is compatible with a crystallographic metric.",
                                "properties": {
                                    "normalizer_kind": {
                                        "x-optimade-type": "string",
                                        "x-optimade-unit": "inapplicable",
                                        "type": [
                                            "string",
                                            "null"
                                        ],
                                        "description": "Kind label for this normalizer contribution."
                                    },
                                    "representation": {
                                        "x-optimade-type": "string",
                                        "x-optimade-unit": "inapplicable",
                                        "type": [
                                            "string",
                                            "null"
                                        ],
                                        "description": "Representation label for the listed normalizer data."
                                    },
                                    "candidate_set": {
                                        "x-optimade-type": "string",
                                        "x-optimade-unit": "inapplicable",
                                        "type": [
                                            "string",
                                            "null"
                                        ],
                                        "description": "Name of the finite linear candidate set used for generation."
                                    },
                                    "n_symops": {
                                        "$id": "https://schemas.anyterial.se/defs/v0.1/properties/spacegroups/n_symops",
                                        "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
                                        ]
                                    },
                                    "n_linear_parts": {
                                        "$id": "https://schemas.anyterial.se/defs/v0.1/properties/transformations/n_linear_parts",
                                        "title": "Number of linear parts",
                                        "x-optimade-type": "integer",
                                        "x-optimade-definition": {
                                            "kind": "property",
                                            "version": "0.1.0",
                                            "format": "1.3",
                                            "name": "n_linear_parts",
                                            "label": "n_linear_parts_transformations"
                                        },
                                        "type": [
                                            "integer",
                                            "null"
                                        ],
                                        "description": "Number of distinct linear matrix parts represented in a normalizer or transform table.\n\nDistinctness is determined by exact element-wise comparison of the 3 by 3 matrix parts of the listed operations.",
                                        "x-optimade-unit": "inapplicable",
                                        "examples": [
                                            2,
                                            4
                                        ]
                                    },
                                    "n_raw_candidates": {
                                        "x-optimade-type": "integer",
                                        "x-optimade-unit": "inapplicable",
                                        "type": [
                                            "integer",
                                            "null"
                                        ],
                                        "description": "Number of affine candidates found before deduplication modulo the space group."
                                    },
                                    "n_unique_candidates": {
                                        "x-optimade-type": "integer",
                                        "x-optimade-unit": "inapplicable",
                                        "type": [
                                            "integer",
                                            "null"
                                        ],
                                        "description": "Number of unique affine candidates before quotienting by the space group."
                                    },
                                    "n_coset_representatives": {
                                        "x-optimade-type": "integer",
                                        "x-optimade-unit": "inapplicable",
                                        "type": [
                                            "integer",
                                            "null"
                                        ],
                                        "description": "Number of non-trivial coset representatives before metric-compatibility filtering."
                                    },
                                    "bounds": {
                                        "x-optimade-type": "dictionary",
                                        "x-optimade-unit": "inapplicable",
                                        "type": [
                                            "object",
                                            "null"
                                        ],
                                        "description": "Simple numerical bounds satisfied by the signed-permutation candidate matrices.",
                                        "properties": {
                                            "det_abs": {
                                                "x-optimade-type": "integer",
                                                "x-optimade-unit": "inapplicable",
                                                "type": [
                                                    "integer",
                                                    "null"
                                                ],
                                                "description": "Absolute determinant of every signed-permutation candidate matrix."
                                            },
                                            "max_abs_linear_entry": {
                                                "x-optimade-type": "integer",
                                                "x-optimade-unit": "inapplicable",
                                                "type": [
                                                    "integer",
                                                    "null"
                                                ],
                                                "description": "Maximum absolute entry value in the signed-permutation candidate matrices."
                                            }
                                        }
                                    },
                                    "symops": {
                                        "x-optimade-type": "list",
                                        "x-optimade-unit": "inapplicable",
                                        "type": [
                                            "array",
                                            "null"
                                        ],
                                        "description": "Listed orthogonal affine normalizer coset representatives.",
                                        "items": {
                                            "$id": "https://schemas.anyterial.se/defs/v0.1/properties/symmetry/basis_transform",
                                            "title": "Basis transformation",
                                            "x-optimade-type": "dictionary",
                                            "x-optimade-definition": {
                                                "kind": "property",
                                                "version": "0.1.0",
                                                "format": "1.3",
                                                "name": "basis_transform",
                                                "label": "basis_transform_symmetry"
                                            },
                                            "x-optimade-unit": "inapplicable",
                                            "type": [
                                                "object",
                                                "null"
                                            ],
                                            "description": "One crystallographic transform between coordinate descriptions, settings, cells, or related group embeddings.\n\nThe affine map itself is stored in the embedded `affine_transformation` field.\nThe parent property defines the source and target coordinate systems and the precise role of the transform.\nUseful, for example, for representing setting changes, subgroup embeddings, isomorphic subgroup transforms, normalizer representatives, and same-space-group affine images.\nThis property is not limited to symmetry operations within one fixed setting; the matrix may be non-orthogonal or have determinant different from one when the transform changes cell or basis.\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 transform, using exact rational matrix and vector entries.\n      The coordinate convention and source/target interpretation are supplied by the parent property.\n\n    - **index**: OPTIONAL; Integer or null.\n      Index metadata whose interpretation is defined by the parent property.\n      Common uses include the subgroup index for subgroup embeddings, the cell index for isomorphic subgroup transforms, or an ordinal representative index in a finite transform table.\n\n    - **subgroup\\_type**: OPTIONAL; String.\n      International Tables subgroup-type label when the transform describes a maximal subgroup embedding.\n      The value MUST be `t` for a translationengleiche subgroup or `k` for a klassengleiche subgroup.\n      It MUST be omitted when the transform is not a maximal subgroup embedding.\n\n    - **k\\_subtype**: OPTIONAL; String or null.\n      Klassengleiche subtype when the transform describes a klassengleiche subgroup relation.\n      The value MUST be `loss_of_centering_translation` or `enlarged_unit_cell` for klassengleiche relations and null or omitted otherwise.\n\n    - **compatible\\_systems**: OPTIONAL; List of strings.\n      Crystal metric systems for which the transform is compatible.\n      This is used for bounded affine normalizer representatives.\n\n    - **operation\\_kind**: OPTIONAL; String.\n      Categorical label for normalizer-type representatives.\n      The value MUST be `euclidean` for Euclidean normalizer operations, `orthogonal_affine` for the signed-permutation affine normalizer subset, or `affine` for the bounded unimodular affine normalizer table.\n      It MUST be omitted when the transform is a setting transform, subgroup embedding, or other transform for which no normalizer operation class applies.\n\n    - **wyckoff\\_splitting**: OPTIONAL; List.\n      Wyckoff-position splitting metadata induced by the transform when available.\n      The list is grouped by explicit parent Wyckoff letter.\n\n    - **criteria**: OPTIONAL; List.\n      Backward-lift constraint metadata induced by the transform when available.\n      The list is grouped by explicit parent Wyckoff letter.",
                                            "properties": {
                                                "affine_transformation": {
                                                    "$id": "https://schemas.anyterial.se/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 affine transformation is a geometric transformation preserving points, straight lines, and parallelism (collinearity), but may not preserve Euclidean distances and angles.\nThe transformation is represented by a 3 by 3 matrix and a 3-vector, both serialized with exact string entries.\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\n    - **det**: OPTIONAL; Integer.\n      Determinant of `matrix` when the generator emits it.\n\n    - **is\\_orthogonal**: OPTIONAL; Boolean.\n      Whether `matrix` is orthogonal in the exact representation used by the generator.",
                                                    "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.anyterial.se/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.anyterial.se/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.anyterial.se/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."
                                                        },
                                                        "is_orthogonal": {
                                                            "x-optimade-type": "boolean",
                                                            "x-optimade-unit": "inapplicable",
                                                            "type": [
                                                                "boolean",
                                                                "null"
                                                            ],
                                                            "description": "Whether the matrix part is orthogonal."
                                                        }
                                                    },
                                                    "examples": [
                                                        {
                                                            "matrix": [
                                                                [
                                                                    "-1",
                                                                    "0",
                                                                    "0"
                                                                ],
                                                                [
                                                                    "0",
                                                                    "-1",
                                                                    "0"
                                                                ],
                                                                [
                                                                    "0",
                                                                    "0",
                                                                    "1"
                                                                ]
                                                            ],
                                                            "vector": [
                                                                "0",
                                                                "0",
                                                                "0"
                                                            ],
                                                            "xyz": "-x,-y,z",
                                                            "det": 1,
                                                            "is_orthogonal": true
                                                        }
                                                    ]
                                                },
                                                "index": {
                                                    "x-optimade-type": "integer",
                                                    "x-optimade-unit": "inapplicable",
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "description": "Index metadata whose interpretation is supplied by the parent property."
                                                },
                                                "subgroup_type": {
                                                    "x-optimade-type": "string",
                                                    "x-optimade-unit": "inapplicable",
                                                    "type": [
                                                        "string"
                                                    ],
                                                    "description": "International Tables subgroup-type label when applicable.",
                                                    "enum": [
                                                        "t",
                                                        "k"
                                                    ]
                                                },
                                                "k_subtype": {
                                                    "x-optimade-type": "string",
                                                    "x-optimade-unit": "inapplicable",
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ],
                                                    "description": "Klassengleiche subtype when applicable."
                                                },
                                                "compatible_systems": {
                                                    "x-optimade-type": "list",
                                                    "x-optimade-unit": "inapplicable",
                                                    "type": [
                                                        "array",
                                                        "null"
                                                    ],
                                                    "description": "Crystal metric systems compatible with the transform.",
                                                    "items": {
                                                        "x-optimade-type": "string",
                                                        "x-optimade-unit": "inapplicable",
                                                        "type": [
                                                            "string"
                                                        ],
                                                        "description": "One compatible crystal-system label.",
                                                        "enum": [
                                                            "triclinic",
                                                            "monoclinic",
                                                            "orthorhombic",
                                                            "tetragonal",
                                                            "trigonal",
                                                            "hexagonal",
                                                            "cubic"
                                                        ]
                                                    }
                                                },
                                                "operation_kind": {
                                                    "x-optimade-type": "string",
                                                    "x-optimade-unit": "inapplicable",
                                                    "type": [
                                                        "string"
                                                    ],
                                                    "description": "Categorical label for normalizer-type representatives.",
                                                    "enum": [
                                                        "euclidean",
                                                        "orthogonal_affine",
                                                        "affine"
                                                    ]
                                                },
                                                "wyckoff_splitting": {
                                                    "$id": "https://schemas.anyterial.se/defs/v0.1/properties/transformations/wyckoff_splitting",
                                                    "title": "Wyckoff splitting",
                                                    "x-optimade-type": "list",
                                                    "x-optimade-definition": {
                                                        "kind": "property",
                                                        "version": "0.1.0",
                                                        "format": "1.3",
                                                        "name": "wyckoff_splitting",
                                                        "label": "wyckoff_splitting_transformations"
                                                    },
                                                    "x-optimade-unit": "inapplicable",
                                                    "type": [
                                                        "array",
                                                        "null"
                                                    ],
                                                    "description": "Wyckoff-position splitting data associated with a subgroup or same-space-group transform.\n\nEach list item gives the split of one parent Wyckoff position.\nThe parent Wyckoff letter is stored in the `parent` field rather than as a JSON dictionary key.\n\n**Requirements/Conventions**:\n\n- It MUST be a list of dictionaries.\n- Each dictionary MUST contain `parent`, the Wyckoff letter in the parent setting.\n- Each dictionary MUST contain `splits`, an ordered list of subgroup Wyckoff-position assignments or coordinate expressions emitted by the generator.",
                                                    "items": {
                                                        "x-optimade-type": "dictionary",
                                                        "x-optimade-unit": "inapplicable",
                                                        "type": [
                                                            "object"
                                                        ],
                                                        "description": "Splitting data for one parent Wyckoff position.",
                                                        "required": [
                                                            "parent",
                                                            "splits"
                                                        ],
                                                        "properties": {
                                                            "parent": {
                                                                "x-optimade-type": "string",
                                                                "x-optimade-unit": "inapplicable",
                                                                "type": [
                                                                    "string"
                                                                ],
                                                                "description": "Parent Wyckoff letter."
                                                            },
                                                            "splits": {
                                                                "x-optimade-type": "list",
                                                                "x-optimade-unit": "inapplicable",
                                                                "type": [
                                                                    "array"
                                                                ],
                                                                "description": "Ordered split records for this parent Wyckoff letter.",
                                                                "items": {
                                                                    "x-optimade-type": "dictionary",
                                                                    "x-optimade-unit": "inapplicable",
                                                                    "type": [
                                                                        "object"
                                                                    ],
                                                                    "description": "One Wyckoff split record.",
                                                                    "required": [
                                                                        "letter",
                                                                        "xyz",
                                                                        "affine"
                                                                    ],
                                                                    "properties": {
                                                                        "letter": {
                                                                            "x-optimade-type": "string",
                                                                            "x-optimade-unit": "inapplicable",
                                                                            "type": [
                                                                                "string"
                                                                            ],
                                                                            "description": "Subgroup Wyckoff letter assigned by this split branch."
                                                                        },
                                                                        "xyz": {
                                                                            "x-optimade-type": "string",
                                                                            "x-optimade-unit": "inapplicable",
                                                                            "type": [
                                                                                "string"
                                                                            ],
                                                                            "description": "Coordinate expression for the split branch."
                                                                        },
                                                                        "affine": {
                                                                            "x-optimade-type": "list",
                                                                            "x-optimade-unit": "inapplicable",
                                                                            "x-optimade-dimensions": {
                                                                                "names": [
                                                                                    "dim_lattice",
                                                                                    "dim_affine"
                                                                                ],
                                                                                "sizes": [
                                                                                    3,
                                                                                    4
                                                                                ]
                                                                            },
                                                                            "type": [
                                                                                "array"
                                                                            ],
                                                                            "description": "Exact affine representation for the split branch as a 3 by 4 augmented matrix.\nEach row holds the three linear coefficients followed by the translation component, all as exact fraction strings.",
                                                                            "items": {
                                                                                "x-optimade-type": "list",
                                                                                "x-optimade-unit": "inapplicable",
                                                                                "x-optimade-dimensions": {
                                                                                    "names": [
                                                                                        "dim_affine"
                                                                                    ],
                                                                                    "sizes": [
                                                                                        4
                                                                                    ]
                                                                                },
                                                                                "type": [
                                                                                    "array"
                                                                                ],
                                                                                "description": "One row of the augmented affine matrix.",
                                                                                "items": {
                                                                                    "$id": "https://schemas.anyterial.se/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": [
                                                        [
                                                            {
                                                                "parent": "c",
                                                                "splits": [
                                                                    {
                                                                        "letter": "e",
                                                                        "xyz": "x,y,z",
                                                                        "affine": [
                                                                            [
                                                                                "1",
                                                                                "0",
                                                                                "0",
                                                                                "0"
                                                                            ],
                                                                            [
                                                                                "0",
                                                                                "1",
                                                                                "0",
                                                                                "0"
                                                                            ],
                                                                            [
                                                                                "0",
                                                                                "0",
                                                                                "1",
                                                                                "0"
                                                                            ]
                                                                        ]
                                                                    }
                                                                ]
                                                            }
                                                        ]
                                                    ]
                                                },
                                                "criteria": {
                                                    "x-optimade-type": "list",
                                                    "x-optimade-unit": "inapplicable",
                                                    "type": [
                                                        "array",
                                                        "null"
                                                    ],
                                                    "description": "Backward-lift constraint metadata induced by the transform, grouped by explicit parent Wyckoff letter.",
                                                    "items": {
                                                        "x-optimade-type": "dictionary",
                                                        "x-optimade-unit": "inapplicable",
                                                        "type": [
                                                            "object"
                                                        ],
                                                        "description": "Backward-lift constraints for one parent Wyckoff position.",
                                                        "required": [
                                                            "parent",
                                                            "constraints"
                                                        ],
                                                        "properties": {
                                                            "parent": {
                                                                "x-optimade-type": "string",
                                                                "x-optimade-unit": "inapplicable",
                                                                "type": [
                                                                    "string"
                                                                ],
                                                                "description": "Parent Wyckoff letter."
                                                            },
                                                            "constraints": {
                                                                "x-optimade-type": "list",
                                                                "x-optimade-unit": "inapplicable",
                                                                "type": [
                                                                    "array"
                                                                ],
                                                                "description": "Constraint records for this parent Wyckoff letter.",
                                                                "items": {
                                                                    "x-optimade-type": "dictionary",
                                                                    "x-optimade-unit": "inapplicable",
                                                                    "type": [
                                                                        "object"
                                                                    ],
                                                                    "description": "One linear backward-lift constraint record.",
                                                                    "properties": {
                                                                        "roles": {
                                                                            "x-optimade-type": "list",
                                                                            "x-optimade-unit": "inapplicable",
                                                                            "type": [
                                                                                "array"
                                                                            ],
                                                                            "description": "Wyckoff-position role references entering the constraint.",
                                                                            "items": {
                                                                                "x-optimade-type": "dictionary",
                                                                                "x-optimade-unit": "inapplicable",
                                                                                "type": [
                                                                                    "object"
                                                                                ],
                                                                                "description": "One role reference.",
                                                                                "required": [
                                                                                    "letter",
                                                                                    "index"
                                                                                ],
                                                                                "properties": {
                                                                                    "letter": {
                                                                                        "x-optimade-type": "string",
                                                                                        "x-optimade-unit": "inapplicable",
                                                                                        "type": [
                                                                                            "string"
                                                                                        ],
                                                                                        "description": "Wyckoff letter for the referenced role."
                                                                                    },
                                                                                    "index": {
                                                                                        "x-optimade-type": "integer",
                                                                                        "x-optimade-unit": "inapplicable",
                                                                                        "type": [
                                                                                            "integer"
                                                                                        ],
                                                                                        "description": "Zero-based occurrence index for the role."
                                                                                    }
                                                                                }
                                                                            }
                                                                        },
                                                                        "coeffs": {
                                                                            "x-optimade-type": "list",
                                                                            "x-optimade-unit": "inapplicable",
                                                                            "type": [
                                                                                "array"
                                                                            ],
                                                                            "description": "Exact coefficient vectors for the constraint.",
                                                                            "items": {
                                                                                "x-optimade-type": "list",
                                                                                "x-optimade-unit": "inapplicable",
                                                                                "type": [
                                                                                    "array"
                                                                                ],
                                                                                "description": "Coefficients associated with one role.",
                                                                                "items": {
                                                                                    "x-optimade-type": "list",
                                                                                    "x-optimade-unit": "inapplicable",
                                                                                    "x-optimade-dimensions": {
                                                                                        "names": [
                                                                                            "dim_lattice"
                                                                                        ],
                                                                                        "sizes": [
                                                                                            3
                                                                                        ]
                                                                                    },
                                                                                    "type": [
                                                                                        "array"
                                                                                    ],
                                                                                    "description": "One exact coefficient vector.",
                                                                                    "items": {
                                                                                        "$id": "https://schemas.anyterial.se/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"
                                                                                    }
                                                                                }
                                                                            }
                                                                        },
                                                                        "target": {
                                                                            "x-optimade-type": "list",
                                                                            "x-optimade-unit": "inapplicable",
                                                                            "type": [
                                                                                "array"
                                                                            ],
                                                                            "description": "Exact target vector or scalar for the constraint.",
                                                                            "items": {
                                                                                "$id": "https://schemas.anyterial.se/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",
                                                                "2"
                                                            ]
                                                        ],
                                                        "vector": [
                                                            "0",
                                                            "0",
                                                            "0"
                                                        ],
                                                        "xyz": "x,y,2z",
                                                        "det": 2,
                                                        "is_orthogonal": false
                                                    },
                                                    "index": 2,
                                                    "subgroup_type": "k",
                                                    "k_subtype": "enlarged_unit_cell",
                                                    "wyckoff_splitting": [
                                                        {
                                                            "parent": "a",
                                                            "splits": [
                                                                {
                                                                    "letter": "a",
                                                                    "xyz": "x,y,z",
                                                                    "affine": [
                                                                        [
                                                                            "1",
                                                                            "0",
                                                                            "0",
                                                                            "0"
                                                                        ],
                                                                        [
                                                                            "0",
                                                                            "1",
                                                                            "0",
                                                                            "0"
                                                                        ],
                                                                        [
                                                                            "0",
                                                                            "0",
                                                                            "1",
                                                                            "0"
                                                                        ]
                                                                    ]
                                                                }
                                                            ]
                                                        }
                                                    ],
                                                    "criteria": [
                                                        {
                                                            "parent": "a",
                                                            "constraints": [
                                                                {
                                                                    "roles": [
                                                                        {
                                                                            "letter": "a",
                                                                            "index": 0
                                                                        }
                                                                    ],
                                                                    "coeffs": [
                                                                        [
                                                                            [
                                                                                "1",
                                                                                "0",
                                                                                "0"
                                                                            ]
                                                                        ]
                                                                    ],
                                                                    "target": [
                                                                        "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
                                                    },
                                                    "compatible_systems": [
                                                        "triclinic",
                                                        "monoclinic",
                                                        "orthorhombic",
                                                        "tetragonal",
                                                        "trigonal",
                                                        "hexagonal",
                                                        "cubic"
                                                    ],
                                                    "operation_kind": "affine"
                                                }
                                            ]
                                        }
                                    }
                                },
                                "examples": [
                                    {
                                        "normalizer_kind": "orthogonal_affine",
                                        "representation": "orthogonal_coset_representatives",
                                        "candidate_set": "signed_permutation_matrices",
                                        "n_symops": 47,
                                        "n_linear_parts": 47,
                                        "n_raw_candidates": 48,
                                        "n_unique_candidates": 48,
                                        "n_coset_representatives": 47,
                                        "bounds": {
                                            "det_abs": 1,
                                            "max_abs_linear_entry": 1
                                        },
                                        "symops": [
                                            {
                                                "affine_transformation": {
                                                    "xyz": "-x,-y,-z",
                                                    "matrix": [
                                                        [
                                                            "-1",
                                                            "0",
                                                            "0"
                                                        ],
                                                        [
                                                            "0",
                                                            "-1",
                                                            "0"
                                                        ],
                                                        [
                                                            "0",
                                                            "0",
                                                            "-1"
                                                        ]
                                                    ],
                                                    "vector": [
                                                        "0",
                                                        "0",
                                                        "0"
                                                    ],
                                                    "det": -1,
                                                    "is_orthogonal": true
                                                },
                                                "compatible_systems": [
                                                    "triclinic",
                                                    "monoclinic",
                                                    "orthorhombic",
                                                    "tetragonal",
                                                    "trigonal",
                                                    "hexagonal",
                                                    "cubic"
                                                ],
                                                "operation_kind": "orthogonal_affine"
                                            }
                                        ]
                                    }
                                ]
                            },
                            "affine_normalizer": {
                                "$id": "https://schemas.anyterial.se/defs/v0.1/properties/transformations/affine_normalizer",
                                "title": "Affine normalizer",
                                "x-optimade-type": "dictionary",
                                "x-optimade-definition": {
                                    "kind": "property",
                                    "version": "0.1.0",
                                    "format": "1.3",
                                    "name": "affine_normalizer",
                                    "label": "affine_normalizer_transformations"
                                },
                                "x-optimade-unit": "inapplicable",
                                "type": [
                                    "object",
                                    "null"
                                ],
                                "description": "Affine normalizer coset representatives for one crystallographic space-group setting.\n\nThe representatives are listed modulo the space group itself, so each listed operation represents an equivalence class of affine normalizer operations rather than every operation in that class.\nThis property contains representatives generated from bounded unimodular integer linear parts. It is a finite bounded representative table, not a complete infinite affine normalizer.\n\nThe `candidate_set` field belongs in this property because the listed representatives are produced from a deliberately restricted finite candidate set.\nFor this property `candidate_set` is `bounded_unimodular_integer_matrices`, meaning unimodular 3 by 3 integer matrices satisfying the recorded `bounds`.\nThe plural field `candidate_sets` is not part of the emitted data and MUST NOT be used here.\n\nThis property is one of three related normalizer tables for a setting:\n`euclidean_normalizer` holds the finite Euclidean normalizer operations obtained from cctbx,\n`orthogonal_affine_normalizer` holds the older bounded table restricted to signed-permutation linear parts,\nand this property holds the bounded table generated from unimodular integer linear parts, which is a superset of the orthogonal one.\n\n**Requirements/Conventions**:\n\n- It MUST be a dictionary with the following keys:\n\n    - **normalizer\\_kind**: REQUIRED; String.\n      Kind label for this normalizer contribution.\n\n    - **representation**: REQUIRED; String.\n      Representation label for the listed data.\n\n    - **candidate\\_set**: REQUIRED; String.\n      Name of the finite linear candidate set used for generation.\n\n    - **n\\_symops**: REQUIRED; Integer.\n      Number of listed coset representatives after metric-compatibility filtering.\n\n    - **n\\_linear\\_parts**: REQUIRED; Integer.\n      Number of distinct linear matrix parts represented in `symops`.\n\n    - **n\\_raw\\_candidates**: REQUIRED; Integer.\n      Number of affine candidates found before deduplication modulo the space group.\n\n    - **n\\_unique\\_candidates**: REQUIRED; Integer.\n      Number of unique affine candidates before quotienting by the space group.\n\n    - **n\\_coset\\_representatives**: REQUIRED; Integer.\n      Number of non-trivial coset representatives before metric-compatibility filtering.\n\n    - **bounds**: REQUIRED; Dictionary.\n      Simple numerical bounds defining the bounded unimodular integer candidate matrices.\n\n    - **symops**: REQUIRED; List of dictionaries.\n      Listed affine normalizer coset representatives.\n      Each item follows `/defs/v0.1/properties/symmetry/basis_transform`.\n      Each item MUST carry `compatible_systems`, the list of crystal systems for which the representative's linear part is compatible with a crystallographic metric.",
                                "properties": {
                                    "normalizer_kind": {
                                        "x-optimade-type": "string",
                                        "x-optimade-unit": "inapplicable",
                                        "type": [
                                            "string",
                                            "null"
                                        ],
                                        "description": "Kind label for this normalizer contribution."
                                    },
                                    "representation": {
                                        "x-optimade-type": "string",
                                        "x-optimade-unit": "inapplicable",
                                        "type": [
                                            "string",
                                            "null"
                                        ],
                                        "description": "Representation label for the listed normalizer data."
                                    },
                                    "candidate_set": {
                                        "x-optimade-type": "string",
                                        "x-optimade-unit": "inapplicable",
                                        "type": [
                                            "string",
                                            "null"
                                        ],
                                        "description": "Name of the finite linear candidate set used for generation."
                                    },
                                    "n_symops": {
                                        "$id": "https://schemas.anyterial.se/defs/v0.1/properties/spacegroups/n_symops",
                                        "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
                                        ]
                                    },
                                    "n_linear_parts": {
                                        "$id": "https://schemas.anyterial.se/defs/v0.1/properties/transformations/n_linear_parts",
                                        "title": "Number of linear parts",
                                        "x-optimade-type": "integer",
                                        "x-optimade-definition": {
                                            "kind": "property",
                                            "version": "0.1.0",
                                            "format": "1.3",
                                            "name": "n_linear_parts",
                                            "label": "n_linear_parts_transformations"
                                        },
                                        "type": [
                                            "integer",
                                            "null"
                                        ],
                                        "description": "Number of distinct linear matrix parts represented in a normalizer or transform table.\n\nDistinctness is determined by exact element-wise comparison of the 3 by 3 matrix parts of the listed operations.",
                                        "x-optimade-unit": "inapplicable",
                                        "examples": [
                                            2,
                                            4
                                        ]
                                    },
                                    "n_raw_candidates": {
                                        "x-optimade-type": "integer",
                                        "x-optimade-unit": "inapplicable",
                                        "type": [
                                            "integer",
                                            "null"
                                        ],
                                        "description": "Number of affine candidates found before deduplication modulo the space group."
                                    },
                                    "n_unique_candidates": {
                                        "x-optimade-type": "integer",
                                        "x-optimade-unit": "inapplicable",
                                        "type": [
                                            "integer",
                                            "null"
                                        ],
                                        "description": "Number of unique affine candidates before quotienting by the space group."
                                    },
                                    "n_coset_representatives": {
                                        "x-optimade-type": "integer",
                                        "x-optimade-unit": "inapplicable",
                                        "type": [
                                            "integer",
                                            "null"
                                        ],
                                        "description": "Number of non-trivial coset representatives before metric-compatibility filtering."
                                    },
                                    "bounds": {
                                        "x-optimade-type": "dictionary",
                                        "x-optimade-unit": "inapplicable",
                                        "type": [
                                            "object",
                                            "null"
                                        ],
                                        "description": "Simple numerical bounds defining the bounded unimodular integer candidate matrices.",
                                        "properties": {
                                            "det_abs": {
                                                "x-optimade-type": "integer",
                                                "x-optimade-unit": "inapplicable",
                                                "type": [
                                                    "integer",
                                                    "null"
                                                ],
                                                "description": "Required absolute determinant of every candidate matrix."
                                            },
                                            "max_abs_linear_entry": {
                                                "x-optimade-type": "integer",
                                                "x-optimade-unit": "inapplicable",
                                                "type": [
                                                    "integer",
                                                    "null"
                                                ],
                                                "description": "Maximum absolute entry value allowed in candidate matrices."
                                            }
                                        }
                                    },
                                    "symops": {
                                        "x-optimade-type": "list",
                                        "x-optimade-unit": "inapplicable",
                                        "type": [
                                            "array",
                                            "null"
                                        ],
                                        "description": "Listed affine normalizer coset representatives.",
                                        "items": {
                                            "$id": "https://schemas.anyterial.se/defs/v0.1/properties/symmetry/basis_transform",
                                            "title": "Basis transformation",
                                            "x-optimade-type": "dictionary",
                                            "x-optimade-definition": {
                                                "kind": "property",
                                                "version": "0.1.0",
                                                "format": "1.3",
                                                "name": "basis_transform",
                                                "label": "basis_transform_symmetry"
                                            },
                                            "x-optimade-unit": "inapplicable",
                                            "type": [
                                                "object",
                                                "null"
                                            ],
                                            "description": "One crystallographic transform between coordinate descriptions, settings, cells, or related group embeddings.\n\nThe affine map itself is stored in the embedded `affine_transformation` field.\nThe parent property defines the source and target coordinate systems and the precise role of the transform.\nUseful, for example, for representing setting changes, subgroup embeddings, isomorphic subgroup transforms, normalizer representatives, and same-space-group affine images.\nThis property is not limited to symmetry operations within one fixed setting; the matrix may be non-orthogonal or have determinant different from one when the transform changes cell or basis.\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 transform, using exact rational matrix and vector entries.\n      The coordinate convention and source/target interpretation are supplied by the parent property.\n\n    - **index**: OPTIONAL; Integer or null.\n      Index metadata whose interpretation is defined by the parent property.\n      Common uses include the subgroup index for subgroup embeddings, the cell index for isomorphic subgroup transforms, or an ordinal representative index in a finite transform table.\n\n    - **subgroup\\_type**: OPTIONAL; String.\n      International Tables subgroup-type label when the transform describes a maximal subgroup embedding.\n      The value MUST be `t` for a translationengleiche subgroup or `k` for a klassengleiche subgroup.\n      It MUST be omitted when the transform is not a maximal subgroup embedding.\n\n    - **k\\_subtype**: OPTIONAL; String or null.\n      Klassengleiche subtype when the transform describes a klassengleiche subgroup relation.\n      The value MUST be `loss_of_centering_translation` or `enlarged_unit_cell` for klassengleiche relations and null or omitted otherwise.\n\n    - **compatible\\_systems**: OPTIONAL; List of strings.\n      Crystal metric systems for which the transform is compatible.\n      This is used for bounded affine normalizer representatives.\n\n    - **operation\\_kind**: OPTIONAL; String.\n      Categorical label for normalizer-type representatives.\n      The value MUST be `euclidean` for Euclidean normalizer operations, `orthogonal_affine` for the signed-permutation affine normalizer subset, or `affine` for the bounded unimodular affine normalizer table.\n      It MUST be omitted when the transform is a setting transform, subgroup embedding, or other transform for which no normalizer operation class applies.\n\n    - **wyckoff\\_splitting**: OPTIONAL; List.\n      Wyckoff-position splitting metadata induced by the transform when available.\n      The list is grouped by explicit parent Wyckoff letter.\n\n    - **criteria**: OPTIONAL; List.\n      Backward-lift constraint metadata induced by the transform when available.\n      The list is grouped by explicit parent Wyckoff letter.",
                                            "properties": {
                                                "affine_transformation": {
                                                    "$id": "https://schemas.anyterial.se/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 affine transformation is a geometric transformation preserving points, straight lines, and parallelism (collinearity), but may not preserve Euclidean distances and angles.\nThe transformation is represented by a 3 by 3 matrix and a 3-vector, both serialized with exact string entries.\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\n    - **det**: OPTIONAL; Integer.\n      Determinant of `matrix` when the generator emits it.\n\n    - **is\\_orthogonal**: OPTIONAL; Boolean.\n      Whether `matrix` is orthogonal in the exact representation used by the generator.",
                                                    "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.anyterial.se/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.anyterial.se/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.anyterial.se/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."
                                                        },
                                                        "is_orthogonal": {
                                                            "x-optimade-type": "boolean",
                                                            "x-optimade-unit": "inapplicable",
                                                            "type": [
                                                                "boolean",
                                                                "null"
                                                            ],
                                                            "description": "Whether the matrix part is orthogonal."
                                                        }
                                                    },
                                                    "examples": [
                                                        {
                                                            "matrix": [
                                                                [
                                                                    "-1",
                                                                    "0",
                                                                    "0"
                                                                ],
                                                                [
                                                                    "0",
                                                                    "-1",
                                                                    "0"
                                                                ],
                                                                [
                                                                    "0",
                                                                    "0",
                                                                    "1"
                                                                ]
                                                            ],
                                                            "vector": [
                                                                "0",
                                                                "0",
                                                                "0"
                                                            ],
                                                            "xyz": "-x,-y,z",
                                                            "det": 1,
                                                            "is_orthogonal": true
                                                        }
                                                    ]
                                                },
                                                "index": {
                                                    "x-optimade-type": "integer",
                                                    "x-optimade-unit": "inapplicable",
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "description": "Index metadata whose interpretation is supplied by the parent property."
                                                },
                                                "subgroup_type": {
                                                    "x-optimade-type": "string",
                                                    "x-optimade-unit": "inapplicable",
                                                    "type": [
                                                        "string"
                                                    ],
                                                    "description": "International Tables subgroup-type label when applicable.",
                                                    "enum": [
                                                        "t",
                                                        "k"
                                                    ]
                                                },
                                                "k_subtype": {
                                                    "x-optimade-type": "string",
                                                    "x-optimade-unit": "inapplicable",
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ],
                                                    "description": "Klassengleiche subtype when applicable."
                                                },
                                                "compatible_systems": {
                                                    "x-optimade-type": "list",
                                                    "x-optimade-unit": "inapplicable",
                                                    "type": [
                                                        "array",
                                                        "null"
                                                    ],
                                                    "description": "Crystal metric systems compatible with the transform.",
                                                    "items": {
                                                        "x-optimade-type": "string",
                                                        "x-optimade-unit": "inapplicable",
                                                        "type": [
                                                            "string"
                                                        ],
                                                        "description": "One compatible crystal-system label.",
                                                        "enum": [
                                                            "triclinic",
                                                            "monoclinic",
                                                            "orthorhombic",
                                                            "tetragonal",
                                                            "trigonal",
                                                            "hexagonal",
                                                            "cubic"
                                                        ]
                                                    }
                                                },
                                                "operation_kind": {
                                                    "x-optimade-type": "string",
                                                    "x-optimade-unit": "inapplicable",
                                                    "type": [
                                                        "string"
                                                    ],
                                                    "description": "Categorical label for normalizer-type representatives.",
                                                    "enum": [
                                                        "euclidean",
                                                        "orthogonal_affine",
                                                        "affine"
                                                    ]
                                                },
                                                "wyckoff_splitting": {
                                                    "$id": "https://schemas.anyterial.se/defs/v0.1/properties/transformations/wyckoff_splitting",
                                                    "title": "Wyckoff splitting",
                                                    "x-optimade-type": "list",
                                                    "x-optimade-definition": {
                                                        "kind": "property",
                                                        "version": "0.1.0",
                                                        "format": "1.3",
                                                        "name": "wyckoff_splitting",
                                                        "label": "wyckoff_splitting_transformations"
                                                    },
                                                    "x-optimade-unit": "inapplicable",
                                                    "type": [
                                                        "array",
                                                        "null"
                                                    ],
                                                    "description": "Wyckoff-position splitting data associated with a subgroup or same-space-group transform.\n\nEach list item gives the split of one parent Wyckoff position.\nThe parent Wyckoff letter is stored in the `parent` field rather than as a JSON dictionary key.\n\n**Requirements/Conventions**:\n\n- It MUST be a list of dictionaries.\n- Each dictionary MUST contain `parent`, the Wyckoff letter in the parent setting.\n- Each dictionary MUST contain `splits`, an ordered list of subgroup Wyckoff-position assignments or coordinate expressions emitted by the generator.",
                                                    "items": {
                                                        "x-optimade-type": "dictionary",
                                                        "x-optimade-unit": "inapplicable",
                                                        "type": [
                                                            "object"
                                                        ],
                                                        "description": "Splitting data for one parent Wyckoff position.",
                                                        "required": [
                                                            "parent",
                                                            "splits"
                                                        ],
                                                        "properties": {
                                                            "parent": {
                                                                "x-optimade-type": "string",
                                                                "x-optimade-unit": "inapplicable",
                                                                "type": [
                                                                    "string"
                                                                ],
                                                                "description": "Parent Wyckoff letter."
                                                            },
                                                            "splits": {
                                                                "x-optimade-type": "list",
                                                                "x-optimade-unit": "inapplicable",
                                                                "type": [
                                                                    "array"
                                                                ],
                                                                "description": "Ordered split records for this parent Wyckoff letter.",
                                                                "items": {
                                                                    "x-optimade-type": "dictionary",
                                                                    "x-optimade-unit": "inapplicable",
                                                                    "type": [
                                                                        "object"
                                                                    ],
                                                                    "description": "One Wyckoff split record.",
                                                                    "required": [
                                                                        "letter",
                                                                        "xyz",
                                                                        "affine"
                                                                    ],
                                                                    "properties": {
                                                                        "letter": {
                                                                            "x-optimade-type": "string",
                                                                            "x-optimade-unit": "inapplicable",
                                                                            "type": [
                                                                                "string"
                                                                            ],
                                                                            "description": "Subgroup Wyckoff letter assigned by this split branch."
                                                                        },
                                                                        "xyz": {
                                                                            "x-optimade-type": "string",
                                                                            "x-optimade-unit": "inapplicable",
                                                                            "type": [
                                                                                "string"
                                                                            ],
                                                                            "description": "Coordinate expression for the split branch."
                                                                        },
                                                                        "affine": {
                                                                            "x-optimade-type": "list",
                                                                            "x-optimade-unit": "inapplicable",
                                                                            "x-optimade-dimensions": {
                                                                                "names": [
                                                                                    "dim_lattice",
                                                                                    "dim_affine"
                                                                                ],
                                                                                "sizes": [
                                                                                    3,
                                                                                    4
                                                                                ]
                                                                            },
                                                                            "type": [
                                                                                "array"
                                                                            ],
                                                                            "description": "Exact affine representation for the split branch as a 3 by 4 augmented matrix.\nEach row holds the three linear coefficients followed by the translation component, all as exact fraction strings.",
                                                                            "items": {
                                                                                "x-optimade-type": "list",
                                                                                "x-optimade-unit": "inapplicable",
                                                                                "x-optimade-dimensions": {
                                                                                    "names": [
                                                                                        "dim_affine"
                                                                                    ],
                                                                                    "sizes": [
                                                                                        4
                                                                                    ]
                                                                                },
                                                                                "type": [
                                                                                    "array"
                                                                                ],
                                                                                "description": "One row of the augmented affine matrix.",
                                                                                "items": {
                                                                                    "$id": "https://schemas.anyterial.se/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": [
                                                        [
                                                            {
                                                                "parent": "c",
                                                                "splits": [
                                                                    {
                                                                        "letter": "e",
                                                                        "xyz": "x,y,z",
                                                                        "affine": [
                                                                            [
                                                                                "1",
                                                                                "0",
                                                                                "0",
                                                                                "0"
                                                                            ],
                                                                            [
                                                                                "0",
                                                                                "1",
                                                                                "0",
                                                                                "0"
                                                                            ],
                                                                            [
                                                                                "0",
                                                                                "0",
                                                                                "1",
                                                                                "0"
                                                                            ]
                                                                        ]
                                                                    }
                                                                ]
                                                            }
                                                        ]
                                                    ]
                                                },
                                                "criteria": {
                                                    "x-optimade-type": "list",
                                                    "x-optimade-unit": "inapplicable",
                                                    "type": [
                                                        "array",
                                                        "null"
                                                    ],
                                                    "description": "Backward-lift constraint metadata induced by the transform, grouped by explicit parent Wyckoff letter.",
                                                    "items": {
                                                        "x-optimade-type": "dictionary",
                                                        "x-optimade-unit": "inapplicable",
                                                        "type": [
                                                            "object"
                                                        ],
                                                        "description": "Backward-lift constraints for one parent Wyckoff position.",
                                                        "required": [
                                                            "parent",
                                                            "constraints"
                                                        ],
                                                        "properties": {
                                                            "parent": {
                                                                "x-optimade-type": "string",
                                                                "x-optimade-unit": "inapplicable",
                                                                "type": [
                                                                    "string"
                                                                ],
                                                                "description": "Parent Wyckoff letter."
                                                            },
                                                            "constraints": {
                                                                "x-optimade-type": "list",
                                                                "x-optimade-unit": "inapplicable",
                                                                "type": [
                                                                    "array"
                                                                ],
                                                                "description": "Constraint records for this parent Wyckoff letter.",
                                                                "items": {
                                                                    "x-optimade-type": "dictionary",
                                                                    "x-optimade-unit": "inapplicable",
                                                                    "type": [
                                                                        "object"
                                                                    ],
                                                                    "description": "One linear backward-lift constraint record.",
                                                                    "properties": {
                                                                        "roles": {
                                                                            "x-optimade-type": "list",
                                                                            "x-optimade-unit": "inapplicable",
                                                                            "type": [
                                                                                "array"
                                                                            ],
                                                                            "description": "Wyckoff-position role references entering the constraint.",
                                                                            "items": {
                                                                                "x-optimade-type": "dictionary",
                                                                                "x-optimade-unit": "inapplicable",
                                                                                "type": [
                                                                                    "object"
                                                                                ],
                                                                                "description": "One role reference.",
                                                                                "required": [
                                                                                    "letter",
                                                                                    "index"
                                                                                ],
                                                                                "properties": {
                                                                                    "letter": {
                                                                                        "x-optimade-type": "string",
                                                                                        "x-optimade-unit": "inapplicable",
                                                                                        "type": [
                                                                                            "string"
                                                                                        ],
                                                                                        "description": "Wyckoff letter for the referenced role."
                                                                                    },
                                                                                    "index": {
                                                                                        "x-optimade-type": "integer",
                                                                                        "x-optimade-unit": "inapplicable",
                                                                                        "type": [
                                                                                            "integer"
                                                                                        ],
                                                                                        "description": "Zero-based occurrence index for the role."
                                                                                    }
                                                                                }
                                                                            }
                                                                        },
                                                                        "coeffs": {
                                                                            "x-optimade-type": "list",
                                                                            "x-optimade-unit": "inapplicable",
                                                                            "type": [
                                                                                "array"
                                                                            ],
                                                                            "description": "Exact coefficient vectors for the constraint.",
                                                                            "items": {
                                                                                "x-optimade-type": "list",
                                                                                "x-optimade-unit": "inapplicable",
                                                                                "type": [
                                                                                    "array"
                                                                                ],
                                                                                "description": "Coefficients associated with one role.",
                                                                                "items": {
                                                                                    "x-optimade-type": "list",
                                                                                    "x-optimade-unit": "inapplicable",
                                                                                    "x-optimade-dimensions": {
                                                                                        "names": [
                                                                                            "dim_lattice"
                                                                                        ],
                                                                                        "sizes": [
                                                                                            3
                                                                                        ]
                                                                                    },
                                                                                    "type": [
                                                                                        "array"
                                                                                    ],
                                                                                    "description": "One exact coefficient vector.",
                                                                                    "items": {
                                                                                        "$id": "https://schemas.anyterial.se/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"
                                                                                    }
                                                                                }
                                                                            }
                                                                        },
                                                                        "target": {
                                                                            "x-optimade-type": "list",
                                                                            "x-optimade-unit": "inapplicable",
                                                                            "type": [
                                                                                "array"
                                                                            ],
                                                                            "description": "Exact target vector or scalar for the constraint.",
                                                                            "items": {
                                                                                "$id": "https://schemas.anyterial.se/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",
                                                                "2"
                                                            ]
                                                        ],
                                                        "vector": [
                                                            "0",
                                                            "0",
                                                            "0"
                                                        ],
                                                        "xyz": "x,y,2z",
                                                        "det": 2,
                                                        "is_orthogonal": false
                                                    },
                                                    "index": 2,
                                                    "subgroup_type": "k",
                                                    "k_subtype": "enlarged_unit_cell",
                                                    "wyckoff_splitting": [
                                                        {
                                                            "parent": "a",
                                                            "splits": [
                                                                {
                                                                    "letter": "a",
                                                                    "xyz": "x,y,z",
                                                                    "affine": [
                                                                        [
                                                                            "1",
                                                                            "0",
                                                                            "0",
                                                                            "0"
                                                                        ],
                                                                        [
                                                                            "0",
                                                                            "1",
                                                                            "0",
                                                                            "0"
                                                                        ],
                                                                        [
                                                                            "0",
                                                                            "0",
                                                                            "1",
                                                                            "0"
                                                                        ]
                                                                    ]
                                                                }
                                                            ]
                                                        }
                                                    ],
                                                    "criteria": [
                                                        {
                                                            "parent": "a",
                                                            "constraints": [
                                                                {
                                                                    "roles": [
                                                                        {
                                                                            "letter": "a",
                                                                            "index": 0
                                                                        }
                                                                    ],
                                                                    "coeffs": [
                                                                        [
                                                                            [
                                                                                "1",
                                                                                "0",
                                                                                "0"
                                                                            ]
                                                                        ]
                                                                    ],
                                                                    "target": [
                                                                        "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
                                                    },
                                                    "compatible_systems": [
                                                        "triclinic",
                                                        "monoclinic",
                                                        "orthorhombic",
                                                        "tetragonal",
                                                        "trigonal",
                                                        "hexagonal",
                                                        "cubic"
                                                    ],
                                                    "operation_kind": "affine"
                                                }
                                            ]
                                        }
                                    }
                                },
                                "examples": [
                                    {
                                        "normalizer_kind": "affine",
                                        "representation": "bounded_coset_representatives",
                                        "candidate_set": "bounded_unimodular_integer_matrices",
                                        "n_symops": 63,
                                        "n_linear_parts": 63,
                                        "n_raw_candidates": 6960,
                                        "n_unique_candidates": 6960,
                                        "n_coset_representatives": 6959,
                                        "bounds": {
                                            "det_abs": 1,
                                            "max_abs_linear_entry": 1
                                        },
                                        "symops": [
                                            {
                                                "affine_transformation": {
                                                    "xyz": "-x,-y,-z",
                                                    "matrix": [
                                                        [
                                                            "-1",
                                                            "0",
                                                            "0"
                                                        ],
                                                        [
                                                            "0",
                                                            "-1",
                                                            "0"
                                                        ],
                                                        [
                                                            "0",
                                                            "0",
                                                            "-1"
                                                        ]
                                                    ],
                                                    "vector": [
                                                        "0",
                                                        "0",
                                                        "0"
                                                    ],
                                                    "det": -1,
                                                    "is_orthogonal": true
                                                },
                                                "compatible_systems": [
                                                    "triclinic",
                                                    "monoclinic",
                                                    "orthorhombic",
                                                    "tetragonal",
                                                    "trigonal",
                                                    "hexagonal",
                                                    "cubic"
                                                ],
                                                "operation_kind": "affine"
                                            }
                                        ]
                                    }
                                ]
                            }
                        }
                    },
                    "examples": [
                        [
                            {
                                "it_number": 1,
                                "baernighausen": []
                            }
                        ]
                    ]
                },
                "n_coset_representatives": {
                    "$id": "https://schemas.anyterial.se/defs/v0.1/properties/transformations/n_coset_representatives",
                    "x-optimade-requirements": {
                        "support": "may",
                        "sortable": false,
                        "query-support": "none",
                        "response-level": "may"
                    },
                    "title": "Number of coset representatives",
                    "x-optimade-type": "integer",
                    "x-optimade-definition": {
                        "kind": "property",
                        "version": "0.1.0",
                        "format": "1.3",
                        "name": "n_coset_representatives",
                        "label": "n_coset_representatives_transformations"
                    },
                    "type": [
                        "integer",
                        "null"
                    ],
                    "description": "Number of nontrivial coset representatives retained after deduplication modulo the space group.\n\nThis count is taken before metric-compatibility filtering, so it MAY exceed the length of the stored `symops` list of the containing record.",
                    "x-optimade-unit": "inapplicable",
                    "examples": [
                        47,
                        23
                    ]
                },
                "n_cosets": {
                    "$id": "https://schemas.anyterial.se/defs/v0.1/properties/transformations/n_cosets",
                    "x-optimade-requirements": {
                        "support": "may",
                        "sortable": false,
                        "query-support": "none",
                        "response-level": "may"
                    },
                    "title": "Number of cosets",
                    "x-optimade-type": "integer",
                    "x-optimade-definition": {
                        "kind": "property",
                        "version": "0.1.0",
                        "format": "1.3",
                        "name": "n_cosets",
                        "label": "n_cosets_transformations"
                    },
                    "type": [
                        "integer",
                        "null"
                    ],
                    "description": "Number of affine normalizer coset representatives stored for the setting.\n\nThis value MUST equal the length of the `affine_normalizer_cosets` list of the containing record.",
                    "x-optimade-unit": "inapplicable",
                    "examples": [
                        63,
                        31
                    ]
                },
                "n_linear_parts": {
                    "$id": "https://schemas.anyterial.se/defs/v0.1/properties/transformations/n_linear_parts",
                    "x-optimade-requirements": {
                        "support": "may",
                        "sortable": false,
                        "query-support": "none",
                        "response-level": "may"
                    },
                    "title": "Number of linear parts",
                    "x-optimade-type": "integer",
                    "x-optimade-definition": {
                        "kind": "property",
                        "version": "0.1.0",
                        "format": "1.3",
                        "name": "n_linear_parts",
                        "label": "n_linear_parts_transformations"
                    },
                    "type": [
                        "integer",
                        "null"
                    ],
                    "description": "Number of distinct linear matrix parts represented in a normalizer or transform table.\n\nDistinctness is determined by exact element-wise comparison of the 3 by 3 matrix parts of the listed operations.",
                    "x-optimade-unit": "inapplicable",
                    "examples": [
                        2,
                        4
                    ]
                },
                "n_orthogonal_cosets": {
                    "$id": "https://schemas.anyterial.se/defs/v0.1/properties/transformations/n_orthogonal_cosets",
                    "x-optimade-requirements": {
                        "support": "may",
                        "sortable": false,
                        "query-support": "none",
                        "response-level": "may"
                    },
                    "title": "Number of orthogonal cosets",
                    "x-optimade-type": "integer",
                    "x-optimade-definition": {
                        "kind": "property",
                        "version": "0.1.0",
                        "format": "1.3",
                        "name": "n_orthogonal_cosets",
                        "label": "n_orthogonal_cosets_transformations"
                    },
                    "type": [
                        "integer",
                        "null"
                    ],
                    "description": "Number of orthogonal affine normalizer coset representatives stored for the setting.\n\nThis value MUST equal the length of the `orthogonal_affine_normalizer_cosets` list of the containing record.",
                    "x-optimade-unit": "inapplicable",
                    "examples": [
                        47,
                        23
                    ]
                },
                "n_raw_candidates": {
                    "$id": "https://schemas.anyterial.se/defs/v0.1/properties/transformations/n_raw_candidates",
                    "x-optimade-requirements": {
                        "support": "may",
                        "sortable": false,
                        "query-support": "none",
                        "response-level": "may"
                    },
                    "title": "Number of raw candidates",
                    "x-optimade-type": "integer",
                    "x-optimade-definition": {
                        "kind": "property",
                        "version": "0.1.0",
                        "format": "1.3",
                        "name": "n_raw_candidates",
                        "label": "n_raw_candidates_transformations"
                    },
                    "type": [
                        "integer",
                        "null"
                    ],
                    "description": "Number of candidate affine operations considered before filtering and deduplication.\n\nThe counted candidate set itself is not stored; this value documents the size of the bounded search.",
                    "x-optimade-unit": "inapplicable",
                    "examples": [
                        48,
                        6960
                    ]
                },
                "n_unique_candidates": {
                    "$id": "https://schemas.anyterial.se/defs/v0.1/properties/transformations/n_unique_candidates",
                    "x-optimade-requirements": {
                        "support": "may",
                        "sortable": false,
                        "query-support": "none",
                        "response-level": "may"
                    },
                    "title": "Number of unique candidates",
                    "x-optimade-type": "integer",
                    "x-optimade-definition": {
                        "kind": "property",
                        "version": "0.1.0",
                        "format": "1.3",
                        "name": "n_unique_candidates",
                        "label": "n_unique_candidates_transformations"
                    },
                    "type": [
                        "integer",
                        "null"
                    ],
                    "description": "Number of candidate affine operations remaining after exact duplicate removal.\n\nThe counted candidate set itself is not stored; this value documents the size of the bounded search.",
                    "x-optimade-unit": "inapplicable",
                    "examples": [
                        48,
                        16
                    ]
                }
            }
        }
    }
}
```