<?xml version="1.0" encoding="utf-8"?>
<schema version="2.1.1" elementFormDefault="qualified"
        targetNamespace="http://namespace.lantmateriet.se/distribution/produkter/rattighet/v2.1"
        xmlns="http://www.w3.org/2001/XMLSchema"
        xmlns:app="http://namespace.lantmateriet.se/distribution/produkter/rattighet/v2.1"
        xmlns:gml="http://www.opengis.net/gml/3.2">

  <import schemaLocation="http://namespace.lantmateriet.se/distribution/produkter/gml/gml-3.2.1/v1/geoaccess-gmlprofil-1.1.xsd"
          namespace="http://www.opengis.net/gml/3.2"/>
  <import schemaLocation="http://namespace.lantmateriet.se/distribution/produkter/fault/v1/fault-1.0.xsd"
          namespace="http://namespace.lantmateriet.se/distribution/produkter/fault/v1"/>

  <element name="IdRequest" type="app:IdRequestType"/>

  <complexType name="IdRequestType">
    <choice>
      <element name="id" type="app:UUIDType" maxOccurs="unbounded"/>
      <element name="rattighetsbeteckning" type="app:RattighetsbeteckningType" maxOccurs="unbounded"/>
    </choice>
  </complexType>

  <complexType name="RattighetsbeteckningType">
    <sequence>
      <element name="lansbokstav" type="string"/>
      <element name="beteckning" type="string"/>
    </sequence>
  </complexType>

  <element name="GeometriRequest" type="app:GeometriRequestType"/>

  <complexType name="GeometriRequestType">
    <sequence>
      <element name="Geometri" type="gml:GeometryPropertyType"/>
      <element name="buffer" type="int" minOccurs="0"/>
    </sequence>
  </complexType>

  <element name="RattighetResponse" type="app:RattighetResponseType" substitutionGroup="gml:AbstractFeature"/>

  <complexType name="RattighetResponseType">
    <complexContent>
      <extension base="gml:AbstractFeatureType">
        <sequence>
          <element name="RattighetMember" type="app:RattighetMemberType" minOccurs="0" maxOccurs="unbounded"/>
        </sequence>
        <attributeGroup ref="gml:AggregationAttributeGroup"/>
      </extension>
    </complexContent>
  </complexType>

  <complexType name="RattighetMemberType">
    <complexContent>
      <extension base="gml:AbstractFeatureMemberType">
        <sequence>
          <element ref="app:Rattighet"/>
        </sequence>
      </extension>
    </complexContent>
  </complexType>

  <element name="RattighetsreferensResponse" type="app:RattighetsreferensResponseType"/>

  <complexType name="RattighetsreferensResponseType">
    <sequence>
      <element name="Rattighetsreferens" type="app:RattighetsreferensType" minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>

  <element name="BeteckningResponse" type="app:BeteckningResponseType"/>

  <complexType name="BeteckningResponseType">
    <choice>
      <element name="aktbeteckning" type="string" minOccurs="0" maxOccurs="unbounded"/>
      <element name="rattighetsnummer" type="int" minOccurs="0" maxOccurs="unbounded"/>
      <element name="objektidentitet" type="app:UUIDType" minOccurs="0" maxOccurs="unbounded"/>
    </choice>
  </complexType>

  <element name="Rattighet" type="app:RattighetType" substitutionGroup="gml:AbstractFeature"/>

  <complexType name="RattighetType">
    <complexContent>
      <extension base="gml:AbstractFeatureType">
        <sequence>
          <element name="objektidentitet" type="app:UUIDType"/>
          <element name="Rattighetsattribut" type="app:RattighetsattributType" minOccurs="0"/>
          <element name="PagaendeRattighetsarende" type="app:PagaendeRattighetsarendeType" minOccurs="0" maxOccurs="unbounded"/>
          <element name="SammankopplasMed" type="app:RattighetsreferensType" minOccurs="0" maxOccurs="unbounded"/>
          <element name="Rattighetsatgard" type="app:RattighetsatgardType" minOccurs="0" maxOccurs="unbounded"/>
          <element name="Rattsforhallandeforandring" type="app:RattsforhallandeforandringType" minOccurs="0" maxOccurs="unbounded"/>
          <element name="Rattsforhallande" type="app:RattsforhallandeType" minOccurs="0" maxOccurs="unbounded"/>
          <element name="Rattighetshistorik" type="app:RattighetshistorikType" minOccurs="0" maxOccurs="unbounded"/>
          <element name="Yta" type="gml:GeometryArrayPropertyType" minOccurs="0">
            <annotation>
              <documentation>
                Detta fält levereras endast vid direktåtkomst.
              </documentation>
            </annotation>
          </element>
        </sequence>
      </extension>
    </complexContent>
  </complexType>

  <complexType name="UtbytesobjektType" abstract="true">
    <sequence>
      <element name="objektidentitet" type="app:UUIDType"/>
      <element name="objektversion" type="int"/>
      <element name="versionGiltigFran" type="dateTime" minOccurs="0"/>
    </sequence>
  </complexType>

  <complexType name="RattighetsattributType">
    <complexContent>
      <extension base="app:UtbytesobjektType">
        <sequence>
          <element name="lansbokstav" type="string"/>
          <element name="beteckning" type="string"/>
          <element name="rattighetstyp" type="app:RattighetstypType"/>
          <element name="status" type="app:StatusType"/>
          <element name="berorkretsKanVaraOfullstandig" type="boolean"/>
          <element name="rattighetsandamal" type="string"/>
          <element name="bildningsatgard" type="app:FastighetsatgardType" minOccurs="0"/>
          <element name="bildningsatgardsdatum" type="date" minOccurs="0"/>
          <element name="avregistreringsorsak" type="app:AvregistreringsorsakType" minOccurs="0"/>
          <element name="senasteAndringAllmannaDelen" type="date" minOccurs="0"/>
          <element name="tidsbegransning" type="string" minOccurs="0"/>
          <element name="fastighetstillbehor" type="string" minOccurs="0"/>
          <element name="rattighetsanmarkning" type="string" minOccurs="0"/>
          <element name="rattighetsbeskrivning" type="string" minOccurs="0"/>
          <element name="olokaliseradRattighet" type="boolean"/>
          <element name="redovisasUtanGeometri" type="boolean"/>
        </sequence>
      </extension>
    </complexContent>
  </complexType>

  <complexType name="PagaendeRattighetsarendeType">
    <complexContent>
      <extension base="app:UtbytesobjektType">
        <sequence>
          <element name="kontor" type="string"/>
          <element name="arendeidentitet" type="string"/>
          <element name="flaggniva" type="int"/>
          <element name="flaggdatum" type="date"/>
          <element name="andringstyp" type="app:AndringstypType"/>
        </sequence>
      </extension>
    </complexContent>
  </complexType>

  <complexType name="RattighetsreferensType">
    <sequence>
      <element name="objektidentitet" type="app:UUIDType"/>
      <element name="rattsforhallandetyp" type="app:RattsforhallandetypType" minOccurs="0"/>
      <element name="lansbokstav" type="string" minOccurs="0">
        <annotation>
          <documentation>
            Detta fält levereras endast vid direktåtkomst.
          </documentation>
        </annotation>
      </element>
      <element name="beteckning" type="string" minOccurs="0">
        <annotation>
          <documentation>
            Detta fält levereras endast vid direktåtkomst.
          </documentation>
        </annotation>
      </element>
      <element name="typ" type="app:RattighetstypType" minOccurs="0">
        <annotation>
          <documentation>
            Detta fält levereras endast vid direktåtkomst.
          </documentation>
        </annotation>
      </element>
    </sequence>
  </complexType>

  <complexType name="RattighetsatgardType">
    <complexContent>
      <extension base="app:UtbytesobjektType">
        <sequence>
          <element name="lopnummer" type="int" minOccurs="0"/>
          <element name="rattighetsforandring" type="app:RattighetsforandringType"/>
          <element name="aktbeteckning" type="string" minOccurs="0"/>
          <element name="atgardstyp" type="app:FastighetsatgardType" minOccurs="0"/>
          <element name="atgardsdatum" type="date" minOccurs="0"/>
        </sequence>
      </extension>
    </complexContent>
  </complexType>

  <complexType name="RattsforhallandeforandringType">
    <complexContent>
      <extension base="app:UtbytesobjektType">
        <sequence>
          <element name="lopnummer" type="int" minOccurs="0"/>
          <element name="rattsforhallandeforandringstyp" type="app:RattsforhallandeforandringtypType" minOccurs="0"/>
          <element name="avserRattsforhallande" type="app:UUIDType"/>
          <element name="avserRattighetsatgard" type="app:UUIDType"/>
        </sequence>
      </extension>
    </complexContent>
  </complexType>

  <complexType name="RattsforhallandeType">
    <complexContent>
      <extension base="app:UtbytesobjektType">
        <sequence>
          <element name="lopnummer" type="int" minOccurs="0"/>
          <element name="rattsforhallandetyp" type="app:RattsforhallandetypType"/>
          <element name="aktuelltRattsforhallande" type="boolean"/>
          <element name="lopnummerIdentisktLikaMed" type="int" minOccurs="0"/>
          <element name="AvserOvrigRattighetshavare" type="app:OvrigRattighetshavareType" minOccurs="0"/>
          <element name="AvserGemensamhetsanlaggning" type="app:GemensamhetsanlaggningreferensType" minOccurs="0"/>
          <element name="AvserRegisterenhet" type="app:RegisterenhetsreferensType" minOccurs="0"/>
          <element name="identisktLikaMedAvtalsservitut" type="app:UUIDType" minOccurs="0"/>
        </sequence>
      </extension>
    </complexContent>
  </complexType>

  <complexType name="OvrigRattighetshavareType">
    <complexContent>
      <extension base="app:UtbytesobjektType">
        <sequence>
          <element name="rattighetshavarekategori" type="app:RattighetshavareType"/>
          <element name="klartext" type="string"/>
          <element name="Rattsforhallandereferens" type="app:RattsforhallandereferensType" minOccurs="0" maxOccurs="unbounded"/>
        </sequence>
      </extension>
    </complexContent>
  </complexType>

  <complexType name="RattsforhallandereferensType">
    <sequence>
      <element name="objektidentitet" type="app:UUIDType"/>
      <element name="Rattighetsreferens" type="app:RattighetsreferensType"/>
    </sequence>
  </complexType>

  <complexType name="GemensamhetsanlaggningreferensType">
    <sequence>
      <element name="objektidentitet" type="app:UUIDType"/>
      <element name="beteckning" type="string" minOccurs="0">
        <annotation>
          <documentation>
            Detta fält levereras endast vid direktåtkomst.
          </documentation>
        </annotation>
      </element>
    </sequence>
  </complexType>

  <complexType name="RegisterenhetsreferensType">
    <sequence>
      <element name="objektidentitet" type="app:UUIDType"/>
      <element name="beteckning" type="string" minOccurs="0">
        <annotation>
          <documentation>
            Detta fält levereras endast vid direktåtkomst.
          </documentation>
        </annotation>
      </element>
      <element name="typ" type="app:RegisterenhetstypType" minOccurs="0">
        <annotation>
          <documentation>
            Detta fält levereras endast vid direktåtkomst.
          </documentation>
        </annotation>
      </element>
    </sequence>
  </complexType>

  <complexType name="RattighetshistorikType">
    <complexContent>
      <extension base="app:UtbytesobjektType">
        <sequence>
          <element name="lopnummer" type="int" minOccurs="0"/>
          <element name="rattighetshistoriktyp" type="app:RattighetshistoriktypType"/>
          <element name="Rattighetsreferens" type="app:RattighetsreferensType"/>
        </sequence>
      </extension>
    </complexContent>
  </complexType>

  <simpleType name="UUIDType">
    <restriction base="string">
      <pattern value="[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}"/>
    </restriction>
  </simpleType>

  <simpleType name="RattighetstypType">
    <restriction base="string">
      <enumeration value="avtalsservitut"/>
      <enumeration value="ledningsrätt"/>
      <enumeration value="officialnyttjanderätt"/>
      <enumeration value="officialservitut"/>
    </restriction>
  </simpleType>

  <simpleType name="StatusType">
    <restriction base="string">
      <enumeration value="levande"/>
      <enumeration value="avregistrerad"/>
    </restriction>
  </simpleType>

  <simpleType name="FastighetsatgardType">
    <restriction base="string">
      <enumeration value="anläggningsförrättning, servitutsåtgärd"/>
      <enumeration value="anläggningsåtgärd"/>
      <enumeration value="annan åtgärd"/>
      <enumeration value="anslutning enligt anläggningslagen"/>
      <enumeration value="arealavmätning"/>
      <enumeration value="arealkomplettering"/>
      <enumeration value="arealutredning"/>
      <enumeration value="av ålder bestående"/>
      <enumeration value="avlösning"/>
      <enumeration value="avstyckning"/>
      <enumeration value="avstyckning, laga skifte"/>
      <enumeration value="avstyckning, servitutsutbrytning"/>
      <enumeration value="avsöndring"/>
      <enumeration value="avvittring"/>
      <enumeration value="beslut om fastighetsindelning"/>
      <enumeration value="beslut om församlingsindelning"/>
      <enumeration value="beslut om församlingsindelning enligt äldre lagstiftning"/>
      <enumeration value="beslut om ändring i kommunal indelning i samband med fastighetsbildning"/>
      <enumeration value="delning"/>
      <enumeration value="ensittarlösen"/>
      <enumeration value="enskifte"/>
      <enumeration value="EVL-förrättning"/>
      <enumeration value="expropriation"/>
      <enumeration value="expropriationsmätning"/>
      <enumeration value="fastighetsbestämning"/>
      <enumeration value="fastighetsreglering"/>
      <enumeration value="fastighetsreglering, andelsöverföring"/>
      <enumeration value="fastighetsreglering, servitutsåtgärd"/>
      <enumeration value="förrättning enligt ensittarlagen"/>
      <enumeration value="förrättning enligt lag om vissa gemensamhetsanläggningar"/>
      <enumeration value="gränsbestämning"/>
      <enumeration value="gränsutmärkning fullföljd"/>
      <enumeration value="hemmansklyvning"/>
      <enumeration value="indelningsändring"/>
      <enumeration value="införd i tomtboken"/>
      <enumeration value="inlösen"/>
      <enumeration value="inställd åtgärd eller förrättning"/>
      <enumeration value="klyvning"/>
      <enumeration value="laga skifte"/>
      <enumeration value="ledningsrättsåtgärd"/>
      <enumeration value="legaliserad sämjedelning"/>
      <enumeration value="legaliserat arealfång"/>
      <enumeration value="legalisering, äganderättsutredning"/>
      <enumeration value="legaliseringsförrättning"/>
      <enumeration value="mantalssättning"/>
      <enumeration value="mätning"/>
      <enumeration value="nybyggnadskarta"/>
      <enumeration value="nymätning"/>
      <enumeration value="omprövning enligt förvaltningslagen"/>
      <enumeration value="registreringsbeslut"/>
      <enumeration value="rågångsåtgärd"/>
      <enumeration value="rättelse enligt förvaltningslagen"/>
      <enumeration value="rättelse/komplettering"/>
      <enumeration value="sammanföring"/>
      <enumeration value="sammanläggning"/>
      <enumeration value="servitutsutbrytning"/>
      <enumeration value="servitutsåtgärd"/>
      <enumeration value="skatteläggning"/>
      <enumeration value="storskifte"/>
      <enumeration value="syneförrättning"/>
      <enumeration value="säkerställande av gränsmärke"/>
      <enumeration value="särskild gränsutmärkning"/>
      <enumeration value="tomtmätning"/>
      <enumeration value="undanröjd åtgärd"/>
      <enumeration value="uteslutning"/>
      <enumeration value="utredning"/>
      <enumeration value="vägförrättning"/>
      <enumeration value="åbodelning"/>
      <enumeration value="återställande av gränsmärke"/>
      <enumeration value="äganderättsutredning"/>
      <enumeration value="ägomätning"/>
      <enumeration value="ägostyckning"/>
      <enumeration value="ägoutbyte"/>
      <enumeration value="ändrat andelstal enligt anläggningslagen"/>
      <enumeration value="ändring i församlingsindelningen"/>
      <enumeration value="överenskommelse enligt anläggningslagen"/>
    </restriction>
  </simpleType>

  <simpleType name="AvregistreringsorsakType">
    <restriction base="string">
      <enumeration value="sammanslagen"/>
      <enumeration value="uppdelad"/>
      <enumeration value="upphävd/upphörd"/>
    </restriction>
  </simpleType>

  <simpleType name="AndringstypType">
    <restriction base="string">
      <enumeration value="berörkrets"/>
      <enumeration value="grundinformation"/>
    </restriction>
  </simpleType>

  <simpleType name="RattighetsforandringType">
    <restriction base="string">
      <enumeration value="berörkrets ändrad"/>
      <enumeration value="endast förändringar inom befintlig berörkrets"/>
      <enumeration value="rättigheten har upphört/upphävts (avregistrerats)"/>
      <enumeration value="rättighetens omfång/läge ändrat"/>
    </restriction>
  </simpleType>

  <simpleType name="RattsforhallandeforandringtypType">
    <restriction base="string">
      <enumeration value="bort"/>
      <enumeration value="till"/>
    </restriction>
  </simpleType>

  <simpleType name="RattsforhallandetypType">
    <restriction base="string">
      <enumeration value="förmån"/>
      <enumeration value="last"/>
    </restriction>
  </simpleType>

  <simpleType name="RattighetshavareType">
    <restriction base="string">
      <enumeration value="klartextenhet"/>
      <enumeration value="ledningshavare"/>
      <enumeration value="nyttjanderättshavare"/>
    </restriction>
  </simpleType>

  <simpleType name="RegisterenhetstypType">
    <restriction base="string">
      <enumeration value="fastighet"/>
      <enumeration value="samfällighet"/>
    </restriction>
  </simpleType>

  <simpleType name="RattighetshistoriktypType">
    <restriction base="string">
      <enumeration value="sammanslagen"/>
      <enumeration value="uppdelad"/>
      <enumeration value="ursprung"/>
    </restriction>
  </simpleType>
</schema>