<?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/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/level2/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/level2/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 data-set-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 data set 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 data set 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="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:element name="Secrecy" type="strings:MultilingualLongString" minOccurs="0" maxOccurs="unbounded">
                <xsd:annotation>
                    <xsd:documentation>
                        Legal secrecy classification for the data in this collection
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="PersonalData" type="enums:PersonalDataStatus" minOccurs="0">
                <xsd:annotation>
                    <xsd:documentation>
                        Indicates whether personal data exists in the collection and its de-identification status
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="ArchivingInformation" type="strings:MultilingualLongString" minOccurs="0" maxOccurs="unbounded">
                <xsd:annotation>
                    <xsd:documentation>
                        Information about the archiving policy and practices for this collection
                    </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="ownedBy" type="strings:EntityReference" minOccurs="0">
                <xsd:annotation>
                    <xsd:documentation>
                        Reference to Organization (owned by)
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <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>