<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:tns="https://schemas.rutdev.se/xsd/entities/level2/universe-1.0.xsd"
    xmlns:strings="https://schemas.rutdev.se/xsd/types/strings-1.0.xsd"
    targetNamespace="https://schemas.rutdev.se/xsd/entities/level2/universe-1.0.xsd"
    elementFormDefault="qualified"
    version="1.0">

    <!--
      Universe Schema

      Description: Universe is the total membership of a defined class of people, objects, or events. It represents the broadest level of statistical population definition, encompassing all elements that could potential...
      Version: 1.0
      Generated: 2026-04-22T06:56:44Z
      Source: specs/entities/level2/universe-1.0.md
    -->

    <!-- Import common type definitions -->
    <xsd:import
        namespace="https://schemas.rutdev.se/xsd/types/strings-1.0.xsd"
        schemaLocation="../../../types/strings-1.0.xsd"
    />

    <!-- Properties type: all data fields from entity specification -->
    <xsd:complexType name="UniversePropertiesType">
        <xsd:sequence>
            <xsd:element name="IdAtOrigin" type="strings:IdentifierToken">
                <xsd:annotation>
                    <xsd:documentation>
                        Identifier at the source system for the universe. Used during import to determine if the entity already exists in the target system (update) or is new (create). Must remain stable in the source system for the same entity.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="Name" type="strings:MultilingualShortString" maxOccurs="unbounded">
                <xsd:annotation>
                    <xsd:documentation>
                        The name of the universe
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="Description" type="strings:MultilingualLongString" minOccurs="0" maxOccurs="unbounded">
                <xsd:annotation>
                    <xsd:documentation>
                        Detailed description of the universe
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>

    <!-- Relations type: all relationships use EntityReference -->
    <xsd:complexType name="UniverseRelationsType">
        <xsd:sequence>
            <xsd:element name="definesUnitsOfType" type="strings:EntityReference" minOccurs="0">
                <xsd:annotation>
                    <xsd:documentation>
                        Reference to UnitType (defines units of type)
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="parent" type="strings:EntityReference" minOccurs="0">
                <xsd:annotation>
                    <xsd:documentation>
                        Reference to Universe (parent)
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>

    <!-- Main entity type -->
    <xsd:complexType name="UniverseType">
        <xsd:sequence>
            <xsd:element name="properties" type="tns:UniversePropertiesType" minOccurs="0"/>
            <xsd:element name="relations" type="tns:UniverseRelationsType" minOccurs="0"/>
        </xsd:sequence>
    </xsd:complexType>

    <!-- Collection type -->
    <xsd:complexType name="UniverseListType">
        <xsd:sequence>
            <xsd:element name="universe" type="tns:UniverseType" minOccurs="0" maxOccurs="unbounded"/>
        </xsd:sequence>
    </xsd:complexType>

    <!-- Root elements -->
    <xsd:element name="Universe" type="tns:UniverseType"/>
    <xsd:element name="UniverseList" type="tns:UniverseListType"/>

</xsd:schema>