<?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/level1/dataset-collection-1.0.xsd"
    xmlns:dates="https://schemas.rutdev.se/xsd/types/dates-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/level1/dataset-collection-1.0.xsd"
    elementFormDefault="qualified"
    version="1.0">

    <!--
      DatasetCollection Schema

      Description: DatasetCollection is a collection of datasets that groups related data resources together for organizational and management purposes. It represents a cohesive set of data resources that share common c...
      Version: 1.0
      Generated: 2026-04-22T06:56:44Z
      Source: specs/entities/level1/dataset-collection-1.0.md
    -->

    <!-- Import common type definitions -->
    <xsd:import
        namespace="https://schemas.rutdev.se/xsd/types/dates-1.0.xsd"
        schemaLocation="../../../types/dates-1.0.xsd"
    />
    <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="DatasetCollectionPropertiesType">
        <xsd:sequence>
            <xsd:element name="IdAtOrigin" type="strings:IdentifierToken">
                <xsd:annotation>
                    <xsd:documentation>
                        Identifier at the source system for the dataset collection. 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 primary name of the dataset collection
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="SecondaryName" type="strings:MultilingualShortString" minOccurs="0" maxOccurs="unbounded">
                <xsd:annotation>
                    <xsd:documentation>
                        Alternative or secondary name for the collection
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="Description" type="strings:MultilingualLongString" maxOccurs="unbounded">
                <xsd:annotation>
                    <xsd:documentation>
                        Detailed description of the dataset collection
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="SubjectField" type="strings:MultilingualShortString" minOccurs="0" maxOccurs="unbounded">
                <xsd:annotation>
                    <xsd:documentation>
                        Subject field or domain of the collection
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="History" type="strings:MultilingualLongString" minOccurs="0" maxOccurs="unbounded">
                <xsd:annotation>
                    <xsd:documentation>
                        Historical background of the collection
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="Objectives" type="strings:MultilingualLongString" minOccurs="0" maxOccurs="unbounded">
                <xsd:annotation>
                    <xsd:documentation>
                        Objectives and goals of the collection
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="Purpose" type="strings:MultilingualLongString" minOccurs="0" maxOccurs="unbounded">
                <xsd:annotation>
                    <xsd:documentation>
                        Purpose of the data collection
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="SourceOfFunding" type="strings:MultilingualLongString" minOccurs="0" maxOccurs="unbounded">
                <xsd:annotation>
                    <xsd:documentation>
                        Funding source information
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="DatasetCollectionType" type="enums:DatasetCollectionType">
                <xsd:annotation>
                    <xsd:documentation>
                        Classification of the dataset collection type
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="Url" type="xsd:anyURI" minOccurs="0">
                <xsd:annotation>
                    <xsd:documentation>
                        URL reference to the collection
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="DateInitiated" type="xsd:date" minOccurs="0">
                <xsd:annotation>
                    <xsd:documentation>
                        Date when the collection was initiated
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="DateEnded" type="xsd:date" minOccurs="0">
                <xsd:annotation>
                    <xsd:documentation>
                        Date when the collection ended
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="MetadataAvailable" type="dates:DateRange" minOccurs="0">
                <xsd:annotation>
                    <xsd:documentation>
                        Date range for which metadata is available
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>

    <!-- Relations type: all relationships use EntityReference -->
    <xsd:complexType name="DatasetCollectionRelationsType">
        <xsd:sequence>
            <xsd:element name="parent" type="strings:EntityReference" minOccurs="0">
                <xsd:annotation>
                    <xsd:documentation>
                        Reference to DatasetCollection (parent)
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>

    <!-- Main entity type -->
    <xsd:complexType name="DatasetCollectionType">
        <xsd:sequence>
            <xsd:element name="properties" type="tns:DatasetCollectionPropertiesType" minOccurs="0"/>
            <xsd:element name="relations" type="tns:DatasetCollectionRelationsType" minOccurs="0"/>
        </xsd:sequence>
    </xsd:complexType>

    <!-- Collection type -->
    <xsd:complexType name="DatasetCollectionListType">
        <xsd:sequence>
            <xsd:element name="datasetCollection" type="tns:DatasetCollectionType" minOccurs="0" maxOccurs="unbounded"/>
        </xsd:sequence>
    </xsd:complexType>

    <!-- Root elements -->
    <xsd:element name="DatasetCollection" type="tns:DatasetCollectionType"/>
    <xsd:element name="DatasetCollectionList" type="tns:DatasetCollectionListType"/>

</xsd:schema>