Geography Markup Language

**Geography Markup Language** (GML) er en internasjonal standard for geodata. GML er et markeringsspråk som kan brukes for å modellere geodata, og angir hvordan geodata kan lagres og utveksles.

GML er utviklet (og publisert) av Open Geospatial Consortium (OGC). I tillegg har OGC samarbeidet med ISO/TC 211 om å utgi standardene ISO 19136:2007 (GML 3.2) og ISO 19136-2:2015 (GML 3.3).

## Innledning
GML er et XML-markeringsspråk for geodata basert på XML Schema. Dette innebærer at GML er todelt: et GML-dokument inneholder geodata, mens et tilhørende skjema beskriver geodataene i GML-dokumentet.

I praktisk bruk har GML mange av de samme egenskapene som XML. Et GML-dokument er utvidbart (extensible), men hvis det har selvforklarenede navn på elementer og attributter, er dokumentet mulig å forstå (uten tilhørende skjema). Det er likevel grunner til å kreve skjema for GML-dokumenter:
* Geodata er ofte autoritative data som bør valideres og ha god kvalitet.
* Geodata er som regel samlet i (komplekse) systemer som krever dokumentasjon. Et eksempel på dette kan være geodatatjenester.

## De viktigste delene av skjemaer for GML
Spesifisering av skjemaer for GML innebærer modellering av geodata. Slik modellering gjøres ofte i Unified Modeling Language (UML), kanskje fordi ISO 19100-serien bruker UML. I GML-standardene er modellering i UML og modellering i XML Schema likestilt, og standardene inkluderer mappinger mellom UML og XML Schema.

Det skilles mellom tre grupper av skjemaer for GML: GML-skjema, GML-profil og GML-applikasjonsskjema.

### GML-skjema
GML-skjema (GML schema) i standarden for GML 3.2.1 betegnelsen på XML Schema-komponentene som er definert i standarden. GML 3.3 er en utvidelse av GML 3.2.1, og selv om betegnelsen GML-skjema ikke er brukt på samme måte der, definerer GML 3.3 også XML Schema-komponenter.

GML-skjema for ulike versjoner av GML kan finnes på GML-skjemasidene til OGC. Et eksempel er (fra geometryBasic0d1d.xsd i versjon 3.2.1):


```xml
<complexType name="PointType">
  <complexContent>
    <extension base="gml:AbstractGeometricPrimitiveType">
      <sequence>
        <choice>
	  <element ref="gml:pos"/>
	  <element ref="gml:coordinates"/>
	</choice>
      </sequence>
    </extension>
  </complexContent>
</complexType>
<element name="Point" type="gml:PointType" substitutionGroup="gml:AbstractGeometricPrimitive">
  <annotation>
    <documentation>
      A Point is defined by a single coordinate tuple. The direct position of a point is specified by the pos element which is of type DirectPositionType.
    </documentation>
  </annotation>
</element><?xml version="1.0" encoding="UTF-8"?>
```


Her er *Point* av typen *PointType*, som er en subtype av *AbstractGeometricPrimitiveType*.

### GML-profil
En GML-profil er et subsett av GML-skjema. Standardene for GML er omfattende og komplekse, og en GML-profil gir mulighet for å begrense omfanget. En GML-profil kan spesifiseres i starten av et GML-applikasjonsskjema.

### GML-applikasjonsskjema
XML er utvidbart (extensible), og for GML skjer utvidelsene i hovedsak i GML-applikasjonsskjema. Mens en GML-profil innskrenker GML-skjema, kan man i GML-applikasjonsskjema spesifisere nye komponenter. Eksempler kan være bygning og tomtegrense.

## GML-dokumenter i Norge
Geodata fra norske etater har tradisjonelt vært lagret i SOSI-formatet, og forskrift om behandling av offentlige arkiver krever dette.

Det er likevel ventet at GML vil erstatte SOSI-formatet i framtiden.

## Referanser


## Eksterne lenker
* OGCs sider om GML-standardene
* OGCs offisielle GML-skjemasider
* ISO/TC 211