<?xml version="1.0" encoding="utf-8"?>
<schema version="2.0.2" elementFormDefault="qualified"
        targetNamespace="http://namespace.lantmateriet.se/distribution/produkter/markreglerandebestammelse/v2"
        xmlns="http://www.w3.org/2001/XMLSchema"
        xmlns:app="http://namespace.lantmateriet.se/distribution/produkter/markreglerandebestammelse/v2"
        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">
    <sequence>
      <element name="id" type="app:UUIDType" maxOccurs="unbounded"/>
    </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="MarkreglerandeBestammelseResponse" type="app:MarkreglerandeBestammelseResponseType" substitutionGroup="gml:AbstractFeature"/>

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

  <complexType name="MarkreglerandeBestammelseMemberType">
    <complexContent>
      <extension base="gml:AbstractFeatureMemberType">
        <choice>
          <element ref="app:MarkreglerandeBestammelse"/>
        </choice>
      </extension>
    </complexContent>
  </complexType>

  <element name="MarkreglerandeBestammelsereferensResponse" type="app:MarkreglerandeBestammelsereferensResponseType"/>

  <complexType name="MarkreglerandeBestammelsereferensResponseType">
    <sequence>
      <element name="MarkreglerandeBestammelsereferens" type="app:MarkreglerandeBestammelsereferensType" minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>

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

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

  <element name="MarkreglerandeBestammelse" type="app:MarkreglerandeBestammelseType" abstract="true" substitutionGroup="gml:AbstractFeature"/>

  <complexType name="MarkreglerandeBestammelseType" abstract="true">
    <complexContent>
      <extension base="gml:AbstractFeatureType">
        <sequence>
          <element name="objektidentitet" type="app:UUIDType"/>
          <element ref="app:MarkreglerandeBestammelseattribut" minOccurs="0"/>
          <element name="Beror" type="app:BerorType" 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>

  <element name="Plan" type="app:PlanType" substitutionGroup="app:MarkreglerandeBestammelse"/>

  <complexType name="BestammelseType" abstract="true">
    <complexContent>
      <extension base="app:MarkreglerandeBestammelseType">
        <sequence>
          <element name="KopplarTill" type="app:MarkreglerandeBestammelsereferensArrayPropertyType" minOccurs="0"/>
          <element name="Hanvisningstext" type="app:HanvisningstextType" minOccurs="0" maxOccurs="unbounded"/>
          <element name="BildandeBeslut" type="app:BeslutArrayPropertyType" minOccurs="0"/>
          <element name="AndrandeBeslut" type="app:BeslutArrayPropertyType" minOccurs="0"/>
          <element name="UpphavandeBeslut" type="app:BeslutArrayPropertyType" minOccurs="0"/>
          <element name="Beroranmarkning" type="app:BeroranmarkningType" minOccurs="0" maxOccurs="unbounded"/>
        </sequence>
      </extension>
    </complexContent>
  </complexType>

  <complexType name="PlanType">
    <complexContent>
      <extension base="app:BestammelseType"/>
    </complexContent>
  </complexType>

  <element name="Naturvardsbestammelse" type="app:NaturvardsbestammelseType" substitutionGroup="app:MarkreglerandeBestammelse"/>

  <complexType name="NaturvardsbestammelseType">
    <complexContent>
      <extension base="app:BestammelseType"/>
    </complexContent>
  </complexType>

  <element name="OvrigBestammelse" type="app:OvrigBestammelseType" substitutionGroup="app:MarkreglerandeBestammelse"/>

  <complexType name="OvrigBestammelseType">
    <complexContent>
      <extension base="app:BestammelseType"/>
    </complexContent>
  </complexType>

  <element name="Mineralrattighet" type="app:MineralrattighetType" substitutionGroup="app:MarkreglerandeBestammelse"/>

  <complexType name="MineralrattighetType">
    <complexContent>
      <extension base="app:BestammelseType"/>
    </complexContent>
  </complexType>

  <element name="UtredningMM" type="app:UtredningMMType" substitutionGroup="app:MarkreglerandeBestammelse"/>

  <complexType name="UtredningMMType">
    <complexContent>
      <extension base="app:BestammelseType"/>
    </complexContent>
  </complexType>

  <element name="Lamning" type="app:LamningType" substitutionGroup="app:MarkreglerandeBestammelse"/>

  <complexType name="LamningType">
    <complexContent>
      <extension base="app:MarkreglerandeBestammelseType">
        <sequence>
          <element name="Lamningslage" type="app:LamningslageType" minOccurs="0"/>
          <element name="Fastighetsregisterstatus" type="app:FastighetsregisterstatusType" minOccurs="0"/>
        </sequence>
      </extension>
    </complexContent>
  </complexType>

  <element name="MarkreglerandeBestammelseattribut" type="app:MarkreglerandeBestammelseattributType" abstract="true"/>

  <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="MarkreglerandeBestammelseattributType" abstract="true">
    <complexContent>
      <extension base="app:UtbytesobjektType"/>
    </complexContent>
  </complexType>

  <complexType name="BestammelseattributType" abstract="true">
    <complexContent>
      <extension base="app:MarkreglerandeBestammelseattributType">
        <sequence>
          <element name="kommun" type="string" maxOccurs="unbounded"/>
          <element name="bestammelsebeteckning" type="string" minOccurs="0"/>
          <element name="bestammelsenamn" type="string" minOccurs="0"/>
          <element name="status" type="app:StatusType"/>
          <element name="registreringsdatum" type="date" minOccurs="0"/>
          <element name="senasteAndringAllmannaDelen" type="date" minOccurs="0"/>
          <element name="alternativBeteckning" type="string" minOccurs="0" maxOccurs="unbounded"/>
          <element name="externRegisteridentitet" type="string" minOccurs="0"/>
          <element name="bestammelseanmarkning" type="string" minOccurs="0" maxOccurs="unbounded"/>
        </sequence>
      </extension>
    </complexContent>
  </complexType>

  <element name="Planattribut" type="app:PlanattributType" substitutionGroup="app:MarkreglerandeBestammelseattribut"/>

  <complexType name="PlanattributType">
    <complexContent>
      <extension base="app:BestammelseattributType">
        <sequence>
          <element name="plantyp" type="app:PlantypType"/>
          <element name="genomforandetidBorjar" type="date" minOccurs="0"/>
          <element name="genomforandetidSlutar" type="date" minOccurs="0"/>
          <element name="gallerTill" type="date" minOccurs="0"/>
        </sequence>
      </extension>
    </complexContent>
  </complexType>

  <element name="Naturvardsbestammelseattribut" type="app:NaturvardsbestammelseattributType" substitutionGroup="app:MarkreglerandeBestammelseattribut"/>

  <complexType name="NaturvardsbestammelseattributType">
    <complexContent>
      <extension base="app:BestammelseattributType">
        <sequence>
          <element name="naturvardsbestammelsetyp" type="app:NaturvardsbestammelsetypType"/>
          <element name="gallerTill" type="date" minOccurs="0"/>
        </sequence>
      </extension>
    </complexContent>
  </complexType>

  <element name="OvrigBestammelseattribut" type="app:OvrigBestammelseattributType" substitutionGroup="app:MarkreglerandeBestammelseattribut"/>

  <complexType name="OvrigBestammelseattributType">
    <complexContent>
      <extension base="app:BestammelseattributType">
        <sequence>
          <element name="ovrigBestammelsetyp" type="app:OvrigBestammelsetypType"/>
          <element name="gallerTill" type="date" minOccurs="0"/>
        </sequence>
      </extension>
    </complexContent>
  </complexType>

  <element name="Mineralrattighetsattribut" type="app:MineralrattighetsattributType" substitutionGroup="app:MarkreglerandeBestammelseattribut"/>

  <complexType name="MineralrattighetsattributType">
    <complexContent>
      <extension base="app:BestammelseattributType">
        <sequence>
          <element name="mineralrattighetstyp" type="app:MineralrattighetstypType"/>
          <element name="gallerTill" type="date" minOccurs="0"/>
        </sequence>
      </extension>
    </complexContent>
  </complexType>

  <element name="UtredningMM-attribut" type="app:UtredningMM-attributType" substitutionGroup="app:MarkreglerandeBestammelseattribut"/>

  <complexType name="UtredningMM-attributType">
    <complexContent>
      <extension base="app:BestammelseattributType">
        <sequence>
          <element name="utredningstyp" type="app:UtredningstypType"/>
        </sequence>
      </extension>
    </complexContent>
  </complexType>

  <element name="Lamningsattribut" type="app:LamningsattributType" substitutionGroup="app:MarkreglerandeBestammelseattribut"/>

  <complexType name="LamningsattributType">
    <complexContent>
      <extension base="app:MarkreglerandeBestammelseattributType">
        <sequence>
          <element name="lamningsnummer" type="string" minOccurs="0"/>
          <element name="antikvariskBedomning" type="app:AntikvariskBedomningType" minOccurs="0"/>
        </sequence>
      </extension>
    </complexContent>
  </complexType>

  <complexType name="BerorType">
    <complexContent>
      <extension base="app:UtbytesobjektType">
        <sequence>
          <element name="Registerenhetsreferens" type="app:RegisterenhetsreferensType"/>
        </sequence>
      </extension>
    </complexContent>
  </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="MarkreglerandeBestammelsereferensArrayPropertyType">
    <sequence>
      <element name="MarkreglerandeBestammelsereferens" type="app:MarkreglerandeBestammelsereferensType" maxOccurs="unbounded"/>
    </sequence>
  </complexType>

  <complexType name="MarkreglerandeBestammelsereferensType">
    <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:MarkreglerandeBestammelsetypType" minOccurs="0">
        <annotation>
          <documentation>
            Detta fält levereras endast vid direktåtkomst.
          </documentation>
        </annotation>
      </element>
    </sequence>
  </complexType>

  <complexType name="HanvisningstextType">
    <complexContent>
      <extension base="app:UtbytesobjektType">
        <sequence>
          <element name="hanvisningstyp" type="app:HanvisningstypType"/>
          <element name="hanvisningstext" type="string"/>
          <element name="hanvisningsdatum" type="date" minOccurs="0"/>
        </sequence>
      </extension>
    </complexContent>
  </complexType>

  <complexType name="BeslutArrayPropertyType">
    <sequence>
      <element name="Beslut" type="app:BeslutType" maxOccurs="unbounded"/>
    </sequence>
  </complexType>

  <complexType name="BeslutType">
    <complexContent>
      <extension base="app:UtbytesobjektType">
        <sequence>
          <element name="beslutsdatum" type="string" minOccurs="0"/>
          <element name="lagakraftdatum" type="date" minOccurs="0"/>
          <element name="diarienummer" type="string" minOccurs="0"/>
          <element name="beslutandeMyndighet" type="string" minOccurs="0"/>
          <element name="hanvisningsakt" type="string" minOccurs="0"/>
          <element name="Bildar" type="app:MarkreglerandeBestammelsereferensArrayPropertyType" minOccurs="0"/>
          <element name="Andrar" type="app:MarkreglerandeBestammelsereferensArrayPropertyType" minOccurs="0"/>
          <element name="Upphaver" type="app:MarkreglerandeBestammelsereferensArrayPropertyType" minOccurs="0"/>
        </sequence>
      </extension>
    </complexContent>
  </complexType>

  <complexType name="BeroranmarkningType">
    <complexContent>
      <extension base="app:UtbytesobjektType">
        <sequence>
          <element name="beroranmarkning" type="string"/>
          <element name="beror" type="app:UUIDType" minOccurs="0" maxOccurs="unbounded"/>
        </sequence>
      </extension>
    </complexContent>
  </complexType>

  <complexType name="LamningslageType">
    <complexContent>
      <extension base="app:UtbytesobjektType">
        <sequence>
          <element name="kommuntillhorighet" type="string" maxOccurs="unbounded"/>
          <element name="Centralpunktskoordinat" type="gml:PointPropertyType"/>
        </sequence>
      </extension>
    </complexContent>
  </complexType>

  <complexType name="FastighetsregisterstatusType">
    <complexContent>
      <extension base="app:UtbytesobjektType">
        <sequence>
          <element name="lamningsstatus" type="app:LamningsstatusType"/>
        </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="StatusType">
    <restriction base="string">
      <enumeration value="avregistrerad"/>
      <enumeration value="förslag"/>
      <enumeration value="gällande"/>
    </restriction>
  </simpleType>

  <simpleType name="PlantypType">
    <restriction base="string">
      <enumeration value="avstyckningsplan"/>
      <enumeration value="byggnadsplan"/>
      <enumeration value="detaljplan"/>
      <enumeration value="fastighetsplan"/>
      <enumeration value="fråga väckt om förordnande"/>
      <enumeration value="förbud mot schaktning, trädfällning mm"/>
      <enumeration value="generalplan"/>
      <enumeration value="nybyggnadsförbud"/>
      <enumeration value="områdesbestämmelser"/>
      <enumeration value="regionplan"/>
      <enumeration value="stadsplan"/>
      <enumeration value="tomtindelning"/>
      <enumeration value="ändring av detaljplan"/>
      <enumeration value="ändring av områdesbestämmelser"/>
      <enumeration value="ändring av översiktsplan"/>
      <enumeration value="översiktsplan"/>
    </restriction>
  </simpleType>

  <simpleType name="NaturvardsbestammelsetypType">
    <restriction base="string">
      <enumeration value="djur- och växtskyddsområde"/>
      <enumeration value="interimistiskt förbud"/>
      <enumeration value="kulturreservat"/>
      <enumeration value="landskapsbildsskydd"/>
      <enumeration value="nationalpark"/>
      <enumeration value="natura 2000-område"/>
      <enumeration value="naturminne"/>
      <enumeration value="naturreservat"/>
      <enumeration value="naturvårdsområde"/>
      <enumeration value="skogligt biotopskyddsområde"/>
      <enumeration value="vattenskyddsområde"/>
      <enumeration value="övrigt biotopskyddsområde"/>
    </restriction>
  </simpleType>
  
  <simpleType name="OvrigBestammelsetypType">
    <restriction base="string">
      <enumeration value="anmälningsplikt byggnadsminne"/>
      <enumeration value="avgränsning av område för fornlämning"/>
      <enumeration value="bearbetningskoncession torv"/>
      <enumeration value="byggnadsminne"/>
      <enumeration value="fråga väckt om byggnadsminne"/>
      <enumeration value="gränsbestämda kyrkotomter"/>
      <enumeration value="järnvägsplan"/>
      <enumeration value="miljöriskområde"/>
      <enumeration value="samrådsområde"/>
      <enumeration value="skydd för ytvattentäkter och enskilda grundvattentäkter (1998:899,40§)"/>
      <enumeration value="strandskydd"/>
      <enumeration value="stängselgenombrott"/>
      <enumeration value="särskild föreskrift för fornlämning"/>
      <enumeration value="tillfällig föreskrift för fornlämning"/>
      <enumeration value="täkttillstånd"/>
      <enumeration value="underhållsskyldighet vattenanläggning"/>
      <enumeration value="utökat nybyggnadsförbud enligt väglagen"/>
      <enumeration value="vägplan"/>
    </restriction>
  </simpleType>

  <simpleType name="MineralrattighetstypType">
    <restriction base="string">
      <enumeration value="bearbetningskoncession"/>
      <enumeration value="bearbetningskoncession enligt äldre minerallag"/>
      <enumeration value="markanvisning"/>
      <enumeration value="utmål enligt gruvlagen"/>
    </restriction>
  </simpleType>

  <simpleType name="UtredningstypType">
    <restriction base="string">
      <enumeration value="avgränsat område för fördelning av gatukostnad"/>
      <enumeration value="fiskevårdsområde"/>
      <enumeration value="utredning om anläggningsavgift för vatten"/>
      <enumeration value="viltvårdsområde"/>
    </restriction>
  </simpleType>
  
  <simpleType name="AntikvariskBedomningType">
    <restriction base="string">
      <enumeration value="ej kulturhistorisk lämning"/>
      <enumeration value="fornlämning"/>
      <enumeration value="ingen antikvarisk bedömning"/>
      <enumeration value="möjlig fornlämning"/>
      <enumeration value="övrig kulturhistorisk lämning"/>
    </restriction>
  </simpleType>

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

  <simpleType name="MarkreglerandeBestammelsetypType">
    <restriction base="string">
      <enumeration value="plan"/>
      <enumeration value="naturvårdsbestämmelse"/>
      <enumeration value="övrig bestämmelse"/>
      <enumeration value="mineralrättighet"/>
      <enumeration value="utredning mm"/>
      <enumeration value="lämning"/>
    </restriction>
  </simpleType>

  <simpleType name="HanvisningstypType">
    <restriction base="string">
      <enumeration value="upphävd av"/>
      <enumeration value="upphäver"/>
      <enumeration value="ändrad av"/>
      <enumeration value="ändrar"/>
    </restriction>
  </simpleType>
  
  <simpleType name="LamningsstatusType">
    <restriction base="string">
      <enumeration value="avregistrerad fornlämning"/>
      <enumeration value="gällande fornlämning"/>
    </restriction>
  </simpleType>

</schema>
