<?xml version="1.0" encoding="utf-8"?>
<schema version="2.1.0" elementFormDefault="qualified"
        targetNamespace="http://namespace.lantmateriet.se/distribution/produkter/granspunkt/v2.1"
        xmlns="http://www.w3.org/2001/XMLSchema"
        xmlns:app="http://namespace.lantmateriet.se/distribution/produkter/granspunkt/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">
    <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" minOccurs="1"/>
      <element name="buffer" type="int" minOccurs="0"/>
    </sequence>
  </complexType>

  <element name="GranspunktResponse" type="app:GranspunktResponseType" substitutionGroup="gml:AbstractFeature"/>

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

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

  <element name="GranspunktsreferensResponse" type="app:GranspunktsreferensResponseType"/>

  <complexType name="GranspunktsreferensResponseType">
    <sequence>
      <element name="Granspunktsreferens" type="app:GranspunktsreferensType" minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>

  <element name="Granspunkt" type="app:GranspunktType" substitutionGroup="gml:AbstractFeature"/>

  <complexType name="GranspunktType">
    <complexContent>
      <extension base="gml:AbstractFeatureType">
        <sequence>
          <element name="objektidentitet" type="app:UUIDType"/>
          <element name="beteckning" type="string"/>
          <element name="informationsgrupp" type="app:InformationsgruppType"/>
          <element name="typ" type="app:GranspunktstypType"/>
          <element name="markering" type="app:MarkeringType"/>
          <element name="andrad" type="dateTime"/>
          <element name="medelfelPlan" type="float"/>
          <element name="matmetodPlan" type="app:MatmetodPlanType"/>
          <element name="flyghojd" type="int"/>
          <element name="insamlingsskala" type="int"/>
          <element name="geometri" type="gml:PointPropertyType"/>
          <element name="kvalitetsforbattring" type="boolean"/>
          <element name="markeringslage" type="app:MarkeringslageType"/>
        </sequence>
      </extension>
    </complexContent>
  </complexType>

  <complexType name="GranspunktsreferensType">
    <sequence>
      <element name="objektidentitet" type="app:UUIDType"/>
      <element name="beteckning" type="string"/>
      <element name="informationsgrupp" type="app:InformationsgruppType"/>
      <element name="typ" type="app:GranspunktstypType"/>
      <element name="geometri" type="gml:PointPropertyType"/>
    </sequence>
  </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="InformationsgruppType">
    <restriction base="string">
      <enumeration value="Fastighet"/>
      <enumeration value="Rättighet"/>
    </restriction>
  </simpleType>

  <simpleType name="GranspunktstypType">
    <restriction base="string">
      <enumeration value="fastighetsgränspunkt"/>
      <enumeration value="försäkringsmarkering"/>
      <enumeration value="riksröse"/>
      <enumeration value="rättighetsgränspunkt"/>
    </restriction>
  </simpleType>

  <simpleType name="MarkeringType">
    <restriction base="string">
      <enumeration value="dubb i berg"/>
      <enumeration value="dubb i betonggjutning"/>
      <enumeration value="dubb i hus"/>
      <enumeration value="dubb i mur"/>
      <enumeration value="dubb i sten"/>
      <enumeration value="femstenarör"/>
      <enumeration value="fast signal"/>
      <enumeration value="glaserat rör"/>
      <enumeration value="borrhål i berg"/>
      <enumeration value="borrhål i betonggjutning"/>
      <enumeration value="borrhål i sten"/>
      <enumeration value="järnkonsol"/>
      <enumeration value="järnstång"/>
      <enumeration value="konsol till väggmarkering"/>
      <enumeration value="målpunkt"/>
      <enumeration value="mässingskruv"/>
      <enumeration value="omarkerad punkt"/>
      <enumeration value="rör i berg"/>
      <enumeration value="rör i betonggjutning"/>
      <enumeration value="rör i gjutning däcksel"/>
      <enumeration value="rör i mark"/>
      <enumeration value="rör i mark däcksel"/>
      <enumeration value="råsten"/>
      <enumeration value="rör i sten"/>
      <enumeration value="spik i asfalt"/>
      <enumeration value="spik i berg"/>
      <enumeration value="spik i betonggjutning"/>
      <enumeration value="spik i jordfast sten"/>
      <enumeration value="stolpe"/>
      <enumeration value="träpåle"/>
      <enumeration value="ingen information"/>
      <enumeration value="aluminiumpåle"/>
      <enumeration value="visare"/>
      <enumeration value="ej återfunnen"/>
    </restriction>
  </simpleType>

  <simpleType name="MatmetodPlanType">
    <restriction base="string">
      <enumeration value="Geodetisk Ospecificerad"/>
      <enumeration value="Geodetisk Totalstation"/>
      <enumeration value="Geodetisk GPS"/>
      <enumeration value="Geodetisk DGNSS"/>
      <enumeration value="Geodetisk Absolut GNSS"/>
      <enumeration value="Geodetisk Tröghetsteknik"/>
      <enumeration value="Geodetisk Inpassad"/>
      <enumeration value="Geodetisk Nätverks-RTK"/>
      <enumeration value="Geodetisk Nätverks-DGNSS"/>
      <enumeration value="Geodetisk Statisk GNSS"/>
      <enumeration value="Fotogrammetrisk Analog fotogrammetri"/>
      <enumeration value="Fotogrammetrisk Analytisk fotogrammetri"/>
      <enumeration value="Fotogrammetrisk Digital fotogrammetri - analog kamera"/>
      <enumeration value="Fotogrammetrisk Ospecificerad teknik"/>
      <enumeration value="Fotogrammetrisk Digital fotogrammetri - digital kamera"/>
      <enumeration value="Digitalisering Ospecificerad"/>
      <enumeration value="Digitalisering Bordsdigitalisering Ospecificerat"/>
      <enumeration value="Digitalisering Bordsgitalisering Ortofoto"/>
      <enumeration value="Digitalisering Skärmdigitalisering Ospecificerat"/>
      <enumeration value="Digitalisering Skärmdigitalisering Ortofoto"/>
      <enumeration value="Digitalisering Scanning"/>
      <enumeration value="Kartografiskt läge"/>
      <enumeration value="Tolkat enligt JB 1:5"/>
      <enumeration value="Ospecificerad"/>
    </restriction>
  </simpleType>

  <simpleType name="MarkeringslageType">
    <restriction base="string">
      <enumeration value="brytpunkt"/>
      <enumeration value="gränslinje"/>
      <enumeration value="friliggande"/>
      <enumeration value="ingen uppgift"/>
    </restriction>
  </simpleType>

</schema>
