Interlis 2.4 xml

Hoi zäme

Ich überlege mir, neue interne Schemas mit INTERLIS 2.4 aufzusetzen. Ich übernehme bei diesen internen Schemas Teile des MGDMs, in welches die Daten schlussendlich exportiert werden müssen. Zum Beispiel auch die Kataloge. Ich wollte deshalb schauen, ob ich das zum INTERLIS 2.3 Bundesmodelles zugehörige Kataloge-XML Transferfile anpassen kann, um es für mein internes INTERLIS 2.4 Schema nutzen kann.

Ich bin dabei auf diesen discourse thread gestosse, in dem Peter Staub diesen nützlichen Teaser zur Dokumentation der neuen XML Struktur gepostet hat:

Ich habe also mein XML entprechend angepasst und ili2pg kann es nun tatsächlich lesen. Hier der angepasste Header:

<?xml version="1.0" encoding="UTF-8"?>
<ili:transfer 
  xmlns:ili="http://www.interlis.ch/xtf/2.4/INTERLIS" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:Prod_Gewaesserzustand_V1="http://www.dummy.uri">
<ili:headersection VERSION="2.4" SENDER="GL">
  <ili:models>
    <ili:model> Units </ili:model>
    <ili:model> LocalisationCH_V2 </ili:model>
    <ili:model> CatalogueObjects_V2 </ili:model>
    <ili:model> CHAdminCodes_V2 </ili:model>
    <ili:model> Prod_Gewaesserzustand_V1 </ili:model>
  </ili:models>
</ili:headersection> 

Allerdings werden die Modelle nicht gefunden. Kann man da noch die genaue location der Modelle angeben, analog zur alten XML Struktur unten?

<?xml version="1.0" encoding="UTF-8"?>
<!--  File Prod_Gewaesserzustand_V1.xml 2026-08-01   -->
<TRANSFER xmlns="http://www.interlis.ch/INTERLIS2.3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://models.geo.admin.ch/BAFU/DBGZ_NADUF_V1.xsd">
<HEADERSECTION VERSION="2.3" SENDER="GL">
<MODELS>
<MODEL NAME="Units" URI="http://models.interlis.ch/refhb23" VERSION=" 2012-02-20"/>
<MODEL NAME="CoordSys" URI="http://models.interlis.ch/refhb23" VERSION=" 2005-06-16"/>
<MODEL NAME="CodeISO" URI="http://models.interlis.ch/geocat.ch/" VERSION=" 2006-08-08"/>
<MODEL NAME="LocalisationCH_V1" URI="http://models.geo.admin.ch/CHBase" VERSION="2011-05-01"/>
<MODEL NAME="CatalogueObjects_V1" URI="http://models.geo.admin.ch/CHBase" VERSION="2011-05-01"/>
<MODEL NAME="CHAdminCodes_V1" URI="http://models.geo.admin.ch/CHBase" VERSION="2011-08-30"/>
<MODEL NAME="Prod_Gewaesserzustand_V1" URI="http://dummy.geo.admin.ch" VERSION="2025-12-22"/>
</MODELS>
</HEADERSECTION>

Diese Modell gibt es ja tatsächlich auch in der INTERLIS 2.4 Version, z.B. das Units Modell unter:

https://models.interlis.ch/refhb24/Units.ili

Vielen Dank für Hinweise!

Lg, Andreas

Ich habe unseren Erschliessungsstand bereits auf V2.4 umgesetzt. Allenfalls hilft Dir ein Blick in meine ilimodels.xml unter https://models.geo.ai.ch/

LG Pascal

Das Zauberwort sind XML-Namespaces.
Du muss für jedes verwendete (= importierte), evtl. erweiterte Modell einen Namespace definieren, wie du es für euer eigenes Modell schon andeutest. Zum „Teaser“ (wie du erwähnst) gehört nämlich noch folgende Erläuterung:

Für jedes importierte Modell wird ein XML-Namensraum definiert (Zeile 3, nur 2.4). Für jedes Modell, zu dem im Transfer Objekte vorkommen, wird der Name angegeben (Zeile 7f.).

Dann sollte es funktionieren.

Dabei ist zu beachten, dass die Namespace-URI keine tatsächlich vorhandenen URL sein müssen, aber können.

Gruss

Diese Metode mit einem einzelnen xml File für alle Modelle (?) kenne ich gar nicht. Interessant aber, dass dieses XML den INTERLIS 2.3 syntax verwendet und ein INTERLIS 2.4 Modell befüllen kann? Verstehe ich das richtig? Gab’s da einen besonderen workaround? So out of the Box ist das ja nicht komptibel, wie ich meinen ersten naiven Versuchen herausgefunden habe.

Hoi Peter

Danke für die weiteren Verdeutlichungen. Ich habe das nun angepasst und die Modelle werden gefunden. (Ich hatte auch noch whitespaces in den Modellnamen, was ebenfalls nicht hilfreich war).

Bei der Interpretation der Topics scheine ich allerdings auch noch ein Missverständnis zu haben. Kennst du hier ein Beispiel, das du mir kurz linken könntest, für ein Modell das mit INTERLIS 2.4 gebaut ist und ein zugehöriges Katalog-XML hat?

Hier wären ansonsten mein neues XML und der Ouput des Imports:

<?xml version="1.0" encoding="UTF-8"?>
<ili:transfer 
  xmlns:ili="http://www.interlis.ch/xtf/2.4/INTERLIS" 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:Prod_Gewaesserzustand_V1="http://nowhere.yet/Prod_Gewaesserzustand_V1.ili"
  xmlns:LocalisationCH_V2="https://models.geo.admin.ch/CH/CHBase_Part2_LOCALISATION_V2.ili"
  xmlns:CatalogueObjects_V2="dummy2.uri"
  xmlns:CHAdminCodes_V2="dummy3.uri"
  xmlns:GeometryCHLV95_V2="dummy4.uri"
  xmlns:Units="dummy5.uri"
>
<ili:headersection VERSION="2.4" SENDER="GL">
  <ili:models>
    <ili:model>LocalisationCH_V2</ili:model>
    <ili:model>Prod_Gewaesserzustand_V1</ili:model>
  </ili:models>
</ili:headersection> 
<ili:datasection>
  <Prod_Gewaesserzustand_V1:Codelisten ili:bid="b001">
    <Prod_Gewaesserzustand_V1:Art_Gruppierung_Catalogue ili:bid="1001">
      <Prod_Gewaesserzustand_V1:Code>Art</Prod_Gewaesserzustand_V1:Code>
      <Prod_Gewaesserzustand_V1:Description>
      <LocalisationCH_V2.MultilingualText>
      <LocalisedText>
      <LocalisationCH_V2.LocalisedText>
      <Language>de</Language>
      <Text>Messstation</Text>
      </LocalisationCH_V2.LocalisedText>
      <LocalisationCH_V2.LocalisedText>
      <Language>fr</Language>
      <Text>Station de mesure</Text>
      </LocalisationCH_V2.LocalisedText>
      <LocalisationCH_V2.LocalisedText>
      <Language>it</Language>
      <Text>Stazione di misurazione</Text>
      </LocalisationCH_V2.LocalisedText>
      </LocalisedText>
      </LocalisationCH_V2.MultilingualText>
      </Prod_Gewaesserzustand_V1:Description>
    </Prod_Gewaesserzustand_V1:Art_Gruppierung_Catalogue>
    ...
  </Prod_Gewaesserzustand_V1:Codelisten>
</ili:datasection>
</ili:transfer>
Info: dburl <jdbc:postgresql://localhost/test_db>
Info: dbusr <postgres>
Info: ili2pg-5.5.1-2ee4413c5be30411a59b684e351729d2e5d8dffd
Info: ili2c-5.6.8-e6f7ab6dd5cdba29afc9b24866ecb98c057d82b2
Info: iox-ili-1.24.4-8e966a086a72e7e2990a312b1229ee5878fd5994
Info: java.version 21.0.11
Info: user.name <ayomeer>
Info: maxMemory 3930112 KB
Info: currentTime 2026-07-31 16:58:44
Info: dbschema <prod_gl_gewaesserzustand_V2>
Info: dburl <jdbc:postgresql://localhost/test_db>
Info: dbusr <postgres>
Info: databaseProduct <PostgreSQL>
Info: databaseVersion <16.13>
Info: driverName <PostgreSQL JDBC Driver>
Info: driverVersion <42.7.7>
Info: postGISVersion <POSTGIS="3.5.5 0" [EXTENSION] PGSQL="160" GEOS="3.13.1-CAPI-1.19.2" PROJ="9.6.0 NETWORK_ENABLED=OFF URL_ENDPOINT=https://cdn.proj.org USER_WRITABLE_DIRECTORY=/var/lib/postgresql/.local/share/proj DATABASE_PATH=/usr/share/proj/proj.db" (compiled against PROJ 9.6.0) LIBXML="2.13.9" LIBJSON="0.18" LIBPROTOBUF="1.5.2" WAGYU="0.5.0 (Internal)">
Info: max active DB statements <0>
Info: compile models...
Info: lookup model <LocalisationCH_V2> 2.4 in repository <jdbc:postgresql://localhost/test_db/prod_gl_gewaesserzustand_V2/>
Info: lookup model <Prod_Gewaesserzustand_V1> 2.4 in repository <jdbc:postgresql://localhost/test_db/prod_gl_gewaesserzustand_V2/>
Info: lookup model <CatalogueObjects_V2> 2.4 in repository <jdbc:postgresql://localhost/test_db/prod_gl_gewaesserzustand_V2/>
Info: lookup model <GeometryCHLV95_V2> 2.4 in repository <jdbc:postgresql://localhost/test_db/prod_gl_gewaesserzustand_V2/>
Info: lookup model <CHAdminCodes_V2> 2.4 in repository <jdbc:postgresql://localhost/test_db/prod_gl_gewaesserzustand_V2/>
Info: lookup model <Units> 2.4 in repository <jdbc:postgresql://localhost/test_db/prod_gl_gewaesserzustand_V2/>
Info: lookup model <CoordSys> 2.4 in repository <jdbc:postgresql://localhost/test_db/prod_gl_gewaesserzustand_V2/>
Info: ilifile </home/ayomeer/.ilicache/jdbc&003apostgresql&003a/localhost/test_db/prod_gl_gewaesserzustand_V2/CHBase_Part2_LOCALISATION_V2.ili>
Info: ilifile </home/ayomeer/.ilicache/jdbc&003apostgresql&003a/localhost/test_db/prod_gl_gewaesserzustand_V2/CoordSys.ili>
Info: ilifile </home/ayomeer/.ilicache/jdbc&003apostgresql&003a/localhost/test_db/prod_gl_gewaesserzustand_V2/Units.ili>
Info: ilifile </home/ayomeer/.ilicache/jdbc&003apostgresql&003a/localhost/test_db/prod_gl_gewaesserzustand_V2/CHBase_Part3_CATALOGUEOBJECTS_V2.ili>
Info: ilifile </home/ayomeer/.ilicache/jdbc&003apostgresql&003a/localhost/test_db/prod_gl_gewaesserzustand_V2/CHBase_Part4_ADMINISTRATIVEUNITS_V2.ili>
Info: ilifile </home/ayomeer/.ilicache/jdbc&003apostgresql&003a/localhost/test_db/prod_gl_gewaesserzustand_V2/CHBase_Part1_GEOMETRY_V2.ili>
Info: ilifile </home/ayomeer/.ilicache/jdbc&003apostgresql&003a/localhost/test_db/prod_gl_gewaesserzustand_V2/prod_gl_gewaesserzustand_V1.ili>
Info: process data file...
Info: assume unknown external objects
Info: validate simple boundaries
Info: data <model/Prod_Gewaesserzustand_Catalogues_V1.xml>
Info: first validation pass...
Error: failed to transfer data from file to db
Error:   Unknown topic <{http://nowhere.yet/Prod_Gewaesserzustand_V1.ili}Codelisten>
Info: second validation pass...
...replace failed

Im Schema sind ausserdem diese Baskets bereits mit Model Baker aufgesetzt:

Lg und schönes Wochenende

Andreas

Das ist nur das Register-XML für alle im Repository registrierten Modelle. Siehe alles nötige hier: INTERLIS Repository

Hoi Andreas
Phu, das ist spontan noch schwierig. Mögliche Abhilfen (?):

  • den lokalen ilicache leeren, damit alle Modelle wieder sauber „geholt“ werden.
  • Die verwendeten Referenzmodelle und CHBase-Module sollten mit dem richtigen URI referenziert werden, nicht mit „dummy<#>.uri“…
  • Lokale Modelle, wenn der URI noch unklar ist kann man mit „mailto:localhost“ definieren. „http://nowhere.yet“ sollte aber auch keine Probleme verursachen
  • Modelle, die fertig sind, im Repo publizieren und dann von dort holen.
  • Daten auf jeden Fall (auch Kataloge) nicht von Hand schreiben, sondern aus einer DB mittels ili2db-Export serialisieren.

Das ist dir sicher alles längst bewusst, ich habs der Vollständigkeit halber einfach nochmals erwähnt.
ABER: kannst du mir vielleicht ein Päckli zusenden mit ILI, Daten, und Logs, damit ich alles nachvollziehen kann? Dann finde ich evtl. noch etwas.

Hey Peter

Danke für die Inputs! Ich hab’s nochmals kurz versucht mit sauberen URIs und gecleartem Cache. Leider war’s das nicht.

Dass ich das Katalog-XML nicht aus einem Modell exportiere, sondern von Hand hinzubiegen versuche, ist ja, weil ich den Katalog vom INTERLIS 2.3 Bundesmodell übernehmen wollte. Für den Anwendungsfall den ich habe, in dem ich schlussendlich in ein 2.3 Modell exportieren muss und das interne Modell (inklusive Kataloge) möglichst kongruent zum MGDM halten möchte, ist es wohl schon allein wegen dem anderen XML-Format „more trouble than it’s worth“, das interne Modell auf INTERLIS 2.4 zu schreiben.

Für mein aktuelles Projekt schiebe diesen Ansatz also glaub ich mal auf die Seite und fahre mit INTERLIS 2.3 fort. Herzlichen Dank aber für deine Hilfsbereitschaft!