Global eindeutiger Planidentifikator

XPLAN-470
  • 6.1
offen
  • Basis

Hinzufügen eines zusätzlichen Attributes im FeatureType XP_Plan:
Attributname: planId

Typ: UUID

Kardinalität 1

Beschreibung: Global eindeutiger Identifikator zur Identifizierung des Planes über Systemgrenzen und Datenbanken hinweg.

 

Hinzufügen eines zusätzlichen Attributes im DatenTyp verbundenerPlan:

Attributname: planId

Typ: UUID

Kardinalität 1

Beschreibung: Global eindeutiger Identifikator zur Identifizierung des anderen Planes mit dem der Plan verbunden ist. Der Wert muss mit dem Wert planId des verbundenen Planes übereinstimmen.

Der FeatureTyp XP_Plan hat kein Attribut welches den Plan eindeutig identifiziert und vom Typ her einmalig (unique) ist. Die Attribute name, nameBasis, fassungsbezeichnung, nummer zusammen könnten eine eindeutige Bezeichnung ergeben, aber das muss nicht so sein. Man müsste noch Gemeinde hinzunehmen um sicher zu stellen dass die Kombination aus name, nameBasis, fassungsbzeichnung und nummer eindeutig ist. Die Eindeutigkeit muss auch über Systeme und Datenbanken hinweg gegeben sein und kann nur über eine global eindeutige ID z.B. eine uuid realisiert werden. Zusätzlich muss im DataType xplan:XP_VerbundenerPlan ein gleichnamiges Attribut planId vom Typ UUID aufgenommen werden, damit die Historie der Pläne logisch miteinander verknüpft werden können. Das Attribut xplan:verbundenerPlan welches sich aus der Beziehung zum anderen Plan ergibt enthält eine Referenz. Hiermit ist aber die Referenz innerhalb eines GML-Dokumentes gemeint. Der XplanValidator prüft das auch. Man kann also keinen Plan mit einer Referenz transportieren die nicht im gleichen GML-Dokument vorkommt. Das liegt daran, dass auch hier nur Identifikatoren von GML spezifiziert wurden aber keine auf Modellebene.

Das im Objektartenkatalog für den FeatureType xplan:XP_Plan aufgeführte Attribut xplan:uuid gibt es im logischen Datenmodell von XPlanung nicht, siehe UML-Diagramm. Es entsteht durch die Ableitung des Transportformates GML. Es handelt sich um die GML-ID. Die GML-ID des Planobjektes ist nicht geeignet den Plan eindeutig zu identifizieren. Die GML-ID ist nur geeignet den Plan im GML-Dokument eindeutig zu identifizieren. Beim Transport des Planes in einer GML-Datei kann der gleiche Plan jedes mal eine andere GML-ID haben. Über Systemgrenzen hinweg kann der Plan selbst nicht mit anderen abgeglichen werden. Außerdem ist das Attribut im Objektartenkatalog mit [0..1] definiert, also nicht verpflichtend, was für einen Identifikator nicht geeignet ist. Im Übrigen ist die GML-ID im GML-Dokument jedoch verpflichtend. Es ist unklar warum das im Objektartenkatalog als nicht verpflichtend dargestellt ist.

Auch die InterneId ist nicht geeignet als eindeutige ID, denn diese soll laut Beschreibung nur in einem internen System als Identifikator gelten. Im Objektartenkatalog ist dieses Attribut mit [0..1] auch nicht bindend.

Wenn die planId vom Typ uuid wäre bräuchte man keinen zusätzlichen Namespace (oder Domain) spezifizieren. Das macht die Verwaltung einfacher.
Wenn die Änderung nicht durchgeführt wird lassen sich Pläne nicht eindeutig über Systemgrenzen hinweg identifizieren. Es läßt sich dann z.B. über einen Plan, der per GML transportiert wird nicht eindeutig feststellen welchen anderen Plan er ersetzt.
Wenn Pläne keine eindeutige ID haben, können sie nicht in verschiedenen Systemen abgeglichen werden. Wenn ein Planer z.B. beauftragt wird eine Planänderung durchzuführen, besorgt er sich den Ursprungsplan oder die letzte Änderung. Dieser hat eine GML-ID, die vom System das die Pläne bereitstellt erzeugt wurde. Jetzt erstellt der Planer die Planänderung und trägt bei ändert als Referenz die GML-ID des ursprünglichen Planes ein und steckt diesen auch mit in das GML-Dokument (sonst kann der neue Plan ja nicht validiert werden) Wenn dann der neue Plan in das System importiert wird, welches z.B. den landesweiten Planbestand vorhält weiß das System nicht welcher Plan geändert wurde denn im System hat der Plan eine andere gml-id. Die GML-ID als unique Identifier in einem System zu nutzen funktioniert nur wenn beim Export und Import auch immer die gleiche GML-ID für den Plan verwendet wird. Das ist aber nicht gegeben. Die GML-ID wird von den Programmen als eine für den Transport eindeutige ID verstanden, nicht als logisch eindeutig für den Plan. Ohne eine global eindeutige planID die sich beim Transport nicht ändert können Pläne nicht miteinander verglichen werden, es können keine Verwaltungsvorgänge digital abgewickelt werden und es können keine nachvollziebaren GeoWebDienste bereitgestellt werden. Es ist auch unklar mit welcher ID das Feld inspireID oder gml:identifier belegt werden sollen wenn es in XPlanung-Standard kein eindeutiges Attribut gibt, welches den Plan klar definiert.
Durch die Änderung wird die Identifizierung von Plänen global über Systemgrenzen hinweg möglich und es lassen sich auch Planhistorien aufbauen ohne die verbundenen Pläne mit den zum Plan passenden GML-ID’s jeweils mitschicken zu müssen. GML-ID’s könnten weiterhin von Systemen für den Transport der Daten frei vergeben werden ohne das die Identität der Pläne verloren geht.
Auf der Web-Seite von wetransform https://wetransform.to/news-and-events/inspireid-best-practices/ ist die Rolle von verschiedenen Identifikatoren gut beschrieben. Dort steht auch noch mal, dass die gml_id dafür da ist im GML-Dokument eindeutig zu sein. Im INSPIRE-Datenmodell z.B. gibt es diese global eindeutige ID, sogar zwei mal. Welche ID aus dem XPlan-Standard soll eigentlich für die inspireId verwendet werden wenn die im XPlanung-Standard gar nicht vorgegeben ist?

"gml:id: This is the mandatory XML element ID, and it is encoded as an attribute of the element. It is used to uniquely identify that element in the current document, and serves to identify the target object of an Xlink. It has to match a defined pattern, e.g. it must start with a letter or underscore. It is first and foremost a technical identifier, though it should be stable over time (e.g. over multiple transformation runs) and should thus be grounded in a property of the source feature. Only if it is stable over time, Xlink references across documents can actually work. The gml:id is used by the WFS standard query GetFeatureByID.
inspireId: This is a specific, often mandatory, complex property of INSPIRE objects, which consists of three sub-properties - localId, namespace, and version. The INSPIRE ID should be stable, and is usually used to clearly identify the object in its specific domain. Often, existing keys are re-used 1:1 as the localId.
gml:identifier: This is the optional external element ID, i.e. it should include a namespace to make it globally unique, not just in the current document. It is a standard property of all GML objects, it is encoded as an element, and is of the type gml:CodeWithAuthorityType. This is also a technical identifier which should be stable over time. INSPIRE recommends to use the namespace and localId from the inspireId to build the identifier, and INSPIRE identifiers use this codespace: http://inspire.ec.europa.eu/ids"

Die anderen FeatureTypen, die mit dem Plan verknüpft sind brauchen keine eindeutige logische objektId. Dort reicht es eine intern vergebene ID für die Verknüpfung zu verwenden, weil diese Objekte nicht global mit anderen Objekten aus anderen Plänen logisch in Beziehung gesetzt werden müssen. Die Eindeutigkeit von Objekten in einem Plan läßt sich immer über dessen Beziehung zum übergeordneten Planobjekt herstellen.

Kommentare