TRANSLATION OF - 1 Modell in mehreren Sprachen

Einleitung

Beim Erstellen eines Modells in INTERLIS muss man sich entscheiden, welche natürliche Sprache (Deutsch, Französisch, Englisch usw.) man dazu verwendet. Die INTERLIS Schlüsselwörter wie CLASS, TEXT oder TOPIC sind zwar fix in Englisch, aber die verwendeten Namen für eine Klasse, ein Attribut oder ein Thema können im Rahmen der Regeln frei gewählt werden:

CLASS Fluss =
END Fluss;

vs.

CLASS Riviere =   !! eigentlich 'Rivière', aber das Zeichen 'è' ist nicht erlaubt im Namen
END Riviere;

vs.

CLASS Fiume =
END Fiume;

Gelegentich möchte man jedoch ein Modell in mehreren natürlichen Sprachen bereitstellen, um das Modellverständnis bei allen Anwender:innen zu fördern. Dazu bietet INTERLIS das Konzept TRANSLATION OF an, womit man ein Modell als Übersetzung (engl. translation) eines anderen Modells markieren kann.

Anwendung

Um ein Modell als Übersetzung eines anderen Modells verwenden zu können, müssen folgende Bedingungen erfüllt sein:

  • Die Struktur des übersetzten Modells muss identisch sein zur Struktur des Hauptmodells. So muss z. B. die Reihenfolge der Themen (TOPIC) und darin die Reihenfolge der Klassen (CLASS) und in den Klassen die Reihenfolge der Attribute gleich sein. Die einzigen Unterschiede zwischen Hauptmodell und Übersetzungsmodell dürfen also nur die verwendeten Namen sein (sowie allfällige Kommentare und Leerzeichen/Zeilenumbrüche).
  • Das Übersetzungsmodell muss mittels der Schlüsselwörter TRANSLATION OF als Übersetzung markiert sein.

Nachfolgend als Beispiel die Modelle der Nutzungsplanung des ARE. Das Hauptmodell (Quelle: Nutzungsplanung_V1_2.ili) ist in Deutsch verfasst und beginnt wie folgt (ohne einleitende Kommentare):

MODEL Nutzungsplanung_V1_2 (de)
AT "https://models.geo.admin.ch/ARE/"
VERSION "2023-03-20"  =
  IMPORTS CHAdminCodes_V1,InternationalCodes_V1,LocalisationCH_V1,GeometryCHLV95_V1;

Das entsprechende, auf Französisch übersetzte Modell (Quelle: PlansDAffectation_V1_2.ili) enthält die TRANSLATION OF Kennzeichnung:

MODEL PlansDAffectation_V1_2 (fr)
AT "https://models.geo.admin.ch/ARE/"
VERSION "2023-03-20"
TRANSLATION OF Nutzungsplanung_V1_2 ["2023-03-20"] =
  IMPORTS CHAdminCodes_V1,InternationalCodes_V1,LocalisationCH_V1,GeometryCHLV95_V1;

Im weiteren Vergleich der beiden Modelle sind dann die Übersetzungen ersichtlich.

Deutsch:

  DOMAIN
    Einzelflaeche = SURFACE WITH (ARCS,STRAIGHTS) VERTEX GeometryCHLV95_V1.Coord2 WITHOUT OVERLAPS>0.05;
    TypeID = OID TEXT*60;
    RechtsStatus = (
      inKraft,
      AenderungMitVorwirkung,
      AenderungOhneVorwirkung
    );
...

vs. Französisch:

  DOMAIN
    SurfaceUnique = SURFACE WITH (ARCS,STRAIGHTS) VERTEX GeometryCHLV95_V1.Coord2 WITHOUT OVERLAPS>0.05;
    TypeID = OID TEXT*60;
    StatutJuridique = (
      enVigueur,
      ModificationAvecEffetAnticipe,
      ModificationSansEffetAnticipe
    );
...

Hinweis: Sollte ein Übersetzungsmodell in der Struktur nicht dem Hauptmodell entsprechen, so wird bei der Modellprüfung mit dem INTERLIS Compiler (ili2c) eine entsprechende Fehlermeldung ausgegeben (z. B. fehlende Klasse oder unterschiedlicher Attribut-Typ).

Nutzen

Der Vorteil der Übersetzungsmodelle liegt nicht nur im besseren Modellverständnis (weil in die native Sprache übersetzt), sondern auch in den Datenlieferungen, die gemäss dem Übersetzungsmodell erfolgen können. Da Hauptmodell und Übersetzungsmodell in der Struktur identisch sind, lassen sich die Daten auch vom einen Modell ins andere übersetzen und umgekehrt. Dabei werden selbstverständlich nur die Namen, die in den Modellen verwendet wurden, übersetzt. Der Inhalt eines Text-Datentyps wird jedoch eins-zu-eins übernommen.

Die Umwandlung lässt sich mit dem Tool ili2db (z. B. nachfolgend mit ili2gpkg für die Kommunikation mit GeoPackage) in drei Schritten durchführen:

Schritt 1: GeoPackage mit entsprechendem Schema anlegen

Der Aufruf von ili2gpkg erfolgt durch folgenden Befehl:

java -jar ili2gpkg-5.1.0.jar --schemaimport --createGeomIdx --defaultSrsAuth EPSG --defaultSrsCode 2056 --nameByTopic --createTidCol --createBasketCol --sqlEnableNull --sqlExtRefCols --models PlansDAffectation_V1_2 --dbfile nup.gpkg

Damit wird eine GPKG-Datei (nup.gpkg) angelegt, welche das Schema des Nutzungsplanungsmodells enthält.

Hinweis: Weil das Nutzungsplanungsmodell mit einem zusätzlichen, separaten Katalog verwendet wird (siehe Nutzungsplanung_Catalogue_CH_V1_2_20210901.xml), müssen zusätzliche Optionen verwendet werden, um die Referenzen auf den Katalog zu erhalten. Es sind dies --sqlEnableNull und --sqlExtRefCols.

Schritt 2: Daten in GeoPackage importieren

Die Nutzungsplanungsdaten des Kantons Jura sind im französischsprachigen Modell der Nutzungsplanung erfasst. Diese sind öffentlich verfügbar und lassen sich via geodienste.ch als .xtf herunterladen.

Auf einen Blick lässt sich im Abschnitt der DATASECTION bereits erkennen, dass das französische Übersetzungsmodell den Daten zugrunde lag:

<PlansDAffectation_V1_2.GeodonneesDeBase.AffectationPrimaire_SurfaceDeZones TID="02B01A3D4B7EA0602814D1C8BC14F7BF">
	<publieDepuis>2024-01-12</publieDepuis>
	<StatutJuridique>enVigueur</StatutJuridique>
	<Type REF="556959A9996570002814D1CA1DDB0D06"/>
	<Geometrie>
		<SURFACE>
...

Mit folgendem Befehl werden die Daten in die unter Schritt 1 erzeugte GPKG-Datei importiert:

java -jar ili2gpkg-5.1.0.jar --import --importTid --importBid --skipReferenceErrors --dataset Jura --dbfile nup.gpkg ID073_Plans_affectations_V1.2.xtf

Dabei ist die Datei ID073_Plans_affectations_V1.2.xtf der von geodienste.ch heruntergeladene Datensatz der jurassischen Nutzungsplanung. Die Option --dataset Jura kennzeichnet den importierten Datensatz eindeutig, was wir für den anschliessenden Export verwenden müssen. Die Bezeichnung kann eine beliebige Zeichenfolge sein.

Hinweis: Die Referenzen auf den Katalog, der nicht eingelesen wird, würden zu Fehlermeldungen führen. Um diese zu unterdrücken wird die Option --skipReferenceErrors angewendet.

Schritt 3: Daten aus GeoPackage in gewünschtes Modell exportieren

Nun können wir wählen, in welcher der verfügbaren natürlichen Sprachen wir die Daten exportieren möchten. Dies geschieht über den folgenden Befehl:

java -jar ili2gpkg-5.1.0.jar --export --dataset Jura --exportModels Nutzungsplanung_V1_2 --exportTid --dbfile nup.gpkg export_ID073_Nutzungsplanung_V1.2.xtf

Die auszugebenden Daten landen in der Datei export_ID073_Nutzungsplanung_V1.2.xtf. Exportiert wird derjenige Datensatz mit der Bezeichnung Jura. Über die Option --exportModels wird gesteuert, in welches der (über TRANSLATION OF miteinander verbundenen) Modelle die Daten exportiert werden sollen. Im Beispiel oben wird ins deutschsprachige Hauptmodell Nutzungsplanung_V1_2 übersetzt.

Eine Übersetzung ins italienischsprachige Modell (Quelle: PianiDiUtilizzazione_V1_2.ili) würde also wie folgt lauten:

java -jar ili2gpkg-5.1.0.jar --export --dataset Jura --exportModels PianiDiUtilizzazione_V1_2 --exportTid --dbfile nup.gpkg export_ID073_PianiDiUtilizzazione_V1_2.xtf

Die exportierten Daten sehen anschliessend so aus:

<Nutzungsplanung_V1_2.Geobasisdaten.Grundnutzung_Zonenflaeche TID="02B01A3D4B7EA0602814D1C8BC14F7BF">
	<publiziertAb>2024-01-12</publiziertAb>
	<Rechtsstatus>inKraft</Rechtsstatus>
	<Typ REF="556959A9996570002814D1CA1DDB0D06"/>
	<Geometrie>
		<SURFACE>
...

respektive so:

<PianiDiUtilizzazione_V1_2.GeodatiDiBase.UtilizzazioneDiBase_SuperficieDiZoni TID="02B01A3D4B7EA0602814D1C8BC14F7BF">
	<pubblicataDal>2024-01-12</pubblicataDal>
	<StatoGiuridico>inVigore</StatoGiuridico>
	<Tipo REF="556959A9996570002814D1CA1DDB0D06"/>
	<Geometria>
		<SURFACE>

Fazit

Gerade in der mehrsprachigen Schweiz ist es hilfreich, wenn Datenmodelle in mehreren natürlichen Sprachen angeboten werden können. Durch die automatisierten Umwandlungsmöglichkeiten kann jede:r Anwender:in die Daten in seiner bevorzugten Sprache weiterverarbeiten.

Hinweis: Leider stehen nicht alle Datenmodelle mehrsprachig zur Verfügung. Welche Möglichkeiten es gibt, um Übersetzungsmodelle möglichst automatisiert herzuleiten und damit die Sprachbarriere zu senken, wird unter anderem auch ein Thema am nächsten INTERLIS Anwender:innen-Treffen im November 2024 in Yverdon-les-Bains sein (Details dazu siehe hier).

1 „Gefällt mir“

Sehr spannend, lieber Stefan, und perfekt rechtzeitig!

Grundsätzlich schreiben wir unsere kantonalen Datenmodelle auf deutsch, ebenso die Tabellen- und Attributnamen in unseren Datenbanken. Darum hatten wir gerade gestern diskutiert, ob wir die kantonale Erweiterung eines in englisch verfassten MGDM nun auf deutsch oder englisch machen sollen. Ersteres führt zu einem gemischtsprachigen Datenmodell, zweiteres widerspricht unseren internen Leitlinien.

Dein Artikel liefert eine gute Anleitung, wie wir das Dilemma evtl. lösen können. Ob in einem oder zwei Schritten, und ob wir die deutsche Übersetzung des MGDM bei uns oder andernorts zur Verfügung stellen könnten, ist dann der nächste und übernächste Aspekt dieser Diskussion.

Die Anmerkung sei erlaubt: die Qualität der englischsprachigen MGDM lässt oft zu wünschen übrig. Yes, we speak anglais fédéral…

Bezüglich Datenbank-Schema noch eine Ergänzung: Gemäss meiner Erfahrungen nutzt ili2db für Tabellen- und Spaltennamen die Sprache des Hauptmodells; hier lässt sich also mit einem Übersetzungsmodell keine andere Sprache für das Schema erzwingen.

:grin:
Auch ein Thema, dass wir am Anwender:innen-Treffen aufgreifen könnten. Imput ist immer willkommen.

Danke @beistehen ! Sehr sorgfältig aufbereitet und so super wertvolle Information.

Besten Dank für die wertvollen Informationen

Wie sieht es aus, wenn die Definition einer STRUCTURE oder eine DOMAINE in das TRANSLATION OF-Modell importiert wird?

Ein einfaches Beispiel:
Modell 1 enthält eine Domain:

MODEL Standards …

DOMAIN
Qualitaet = (PN,
AV93)

Welche ins Datenmodell importiert wird:

MODEL Immeubles (fr)
AT „https://models.geo.admin.ch/V_D/
VERSION „2024-05-15“
TRANSLATION OF Grundstuecke [„2024-05-15“]

IMPORTS Standards;

TOPIC Immeubles =

CLASS BienFonds =
eGRIS: TEXT*15;
StandardQualite: Qualitaet;
END BienFonds;

END Immeubles;

END Immeubles.

Zwar wird das Translation Of-Modell verwendet, der Wertebereich des Attributs StandardQualite wird jedoch in der Sprache des Original-Modells belassen. Gibt es hierfür eine Lösung (sodass der Wertebereich ebenfalls in der Sprache des Translation-Of-Modells angewendet werden kann)?