Codelist-Modul

Das Codelist-Modul der VCDB v5 ermöglicht die Speicherung von Codelisten – also von Werte-Tabellen mit zugehörigen Beschreibungen oder Definitionen für die Werte. Viele CityGML-Attribute sind im CityGML 3.0 Conceptual Model (CM) so definiert, dass sie Werte aus einer Codeliste speichern. Codelisten können dabei von einer zuständigen Stelle innerhalb einer Organisation oder Community als verpflichtend vorgeschrieben, empfohlen, oder vorgeschlagen werden, oder lediglich als Best-Practice innerhalb einer Anwendungsdomäne eingesetzt werden.

image codelistModule
Figure 1. Codelist-Modul des relationalen Schemas der VCDB v5.

CODELIST Tabelle

Die CODELIST Tabelle dient zur Registrierung von Codelisten. Jede Codeliste wird durch eine URL eindeutig identifiziert, die in der url Spalte gespeichert wird.

Wenn die url auf eine externe Datei verweist, sollte in der Spalte mime_type der MIME-Typ der referenzierten Codelist-Datei angegeben werden, damit sie korrekt entsprechend ihres Formats verarbeitet werden kann. CityGML schreibt kein bestimmtes Format für Codelisten vor, empfiehlt jedoch die Verwendung von GML-, JSON- und CSV-basierten Kodierungen (siehe CityGML-Spezifikation).

In der Spalte codelist_type wird der CityGML-Datentyp angegeben, mit dem die Codeliste verknüpft ist. Es handelt sich dabei um den vollqualifizierten Klassennamen des Datentyps gemäß dem CityGML 3.0 Conceptual Model (CM), wie beispielsweise core:RelationTypeValue oder bldg:BuildingClassValue.

Es existiert kein Fremdschlüssel zwischen der CODELIST Tabelle und der PROPERTY Tabelle, um eine Codeliste direkt mit einem Attribut zu verknüpfen, welches Werte aus der Codeliste verwendet. Stattdessen sind Attribute, die Codelisten referenzieren, typischerweise vom Datentyp core:Code, der ein codeSpace Attribut enthält, das in der Spalte val_codespace gespeichert wird. Dieser codeSpace verweist typischerweise auf die URL der Codeliste, aus der der Attributwert stammt. Die zugehörige Codeliste in der CODELIST Tabelle kann somit über den Vergleich von codeSpace mit dem Wert der Spalte url ermittelt werden.

Mehrere Codelisten können für denselben codelist_type registriert werden, z. B. wenn die Codelisten von unterschiedlichen Organisationen oder Communities stammen. In diesem Fall muss die Kombination von codelist_type und url innerhalb der Tabelle CODELIST eindeutig sein.

CODELIST_ENTRY Tabelle

Die CODELIST_ENTRY Tabelle speichert die einzelnen Werte der registrierten Codelisten. Jeder Eintrag ist über den Fremdschlüssel codelist_id mit einer Codeliste in der CODELIST Tabelle verknüpft.

Der konkrete Wert eines Codelisten-Eintrags wird in der Spalte code gespeichert, seine Definition oder Beschreibung in der Spalte definition. Dies ermöglicht ein einfaches Nachschlagen der Definition für einen Code, der als Attributwert in der PROPERTY-Tabelle gespeichert ist, und umgekehrt.

Neben der Verwendung der Codelisten-Tabellen zum Nachschlagen oder Validieren von Attributwerten beim Datenimport und -export, können sie auch zur Umsetzung eines Webdienstes genutzt werden, der die gespeicherten Codelisten entweder als Dateien zum Download bereitstellt oder individuelle Codelisten-Werte nachschlagen und validieren kann. Entsprechende Werkzeuge zum Erstellen solcher Dienste sind in der VCDB v5 jedoch nicht enthalten.