<?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/described-value-domain-1.0.xsd"
    xmlns:enums="https://schemas.rutdev.se/xsd/types/enums-1.0.xsd"
    xmlns:strings="https://schemas.rutdev.se/xsd/types/strings-1.0.xsd"
    targetNamespace="https://schemas.rutdev.se/xsd/entities/level2/described-value-domain-1.0.xsd"
    elementFormDefault="qualified"
    version="1.0">

    <!--
      DescribedValueDomain Schema

      Description: DescribedValueDomain is a Value Domain defined by an expression rather than an explicit list.
      Version: 1.0
      Generated: 2026-04-22T06:56:44Z
      Source: specs/entities/level2/described-value-domain-1.0.md
    -->

    <!-- Import common type definitions -->
    <xsd:import
        namespace="https://schemas.rutdev.se/xsd/types/enums-1.0.xsd"
        schemaLocation="../../../types/enums-1.0.xsd"
    />
    <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="DescribedValueDomainPropertiesType">
        <xsd:sequence>
            <xsd:element name="IdAtOrigin" type="strings:IdentifierToken">
                <xsd:annotation>
                    <xsd:documentation>
                        Identifier at the source system for the described-value-domain. 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:MultilingualText" maxOccurs="unbounded">
                <xsd:annotation>
                    <xsd:documentation>
                        The designation of the described-value-domain
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="Description" type="strings:MultilingualText" minOccurs="0" maxOccurs="unbounded">
                <xsd:annotation>
                    <xsd:documentation>
                        Explanation of the described-value-domain
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="DataType" type="enums:DataType" minOccurs="0">
                <xsd:annotation>
                    <xsd:documentation>
                        Level of measurement (nominal, ordinal, interval, or ratio) indicating what statistical operations are valid on the data values. Based on Stevens' measurement theory, this determines allowed computations: nominal data supports only counting and mode; ordinal adds median and ranking; interval adds arithmetic operations (but not ratios); ratio supports all arithmetic operations including meaningful ratios.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>

    <!-- Relations type: all relationships use EntityReference -->
    <xsd:complexType name="DescribedValueDomainRelationsType">
        <xsd:sequence>
            <xsd:element name="instantiatesConcept" type="strings:EntityReference" minOccurs="0">
                <xsd:annotation>
                    <xsd:documentation>
                        Reference to DescribedConceptualDomain (instantiates concept)
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="measuredUsingType" type="strings:EntityReference" minOccurs="0">
                <xsd:annotation>
                    <xsd:documentation>
                        Reference to MeasurementType (measured using type)
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>

    <!-- Main entity type -->
    <xsd:complexType name="DescribedValueDomainType">
        <xsd:sequence>
            <xsd:element name="properties" type="tns:DescribedValueDomainPropertiesType" minOccurs="0"/>
            <xsd:element name="relations" type="tns:DescribedValueDomainRelationsType" minOccurs="0"/>
        </xsd:sequence>
    </xsd:complexType>

    <!-- Collection type -->
    <xsd:complexType name="DescribedValueDomainListType">
        <xsd:sequence>
            <xsd:element name="describedValueDomain" type="tns:DescribedValueDomainType" minOccurs="0" maxOccurs="unbounded"/>
        </xsd:sequence>
    </xsd:complexType>

    <!-- Root elements -->
    <xsd:element name="DescribedValueDomain" type="tns:DescribedValueDomainType"/>
    <xsd:element name="DescribedValueDomainList" type="tns:DescribedValueDomainListType"/>

</xsd:schema>