INTERLIS 2.4;
MODEL Testmodell_erweitert
AT "http://example.org/"
VERSION "2025-06-25" =
IMPORTS Testmodell;
TOPIC Garten EXTENDS Testmodell.Garten =
DOMAIN
Pflanzentypen = (
a,
b,
c);
STRUCTURE Pflanzenart =
Pflanzenart: Pflanzentypen;
END Pflanzenart;
STRUCTURE Beet (EXTENDED) =
Pflanzenart: BAG {0..*} OF Pflanzenart;
END Beet;
STRUCTURE Topf (EXTENDED) =
Pflanzenart: Pflanzentypen;
END Topf;
CLASS Gartenklasse (EXTENDED) =
Bepflanzt: MANDATORY BOOLEAN;
END Gartenklasse;
END Garten;
END Testmodell_erweitert.
hier noch das Original Modell:
INTERLIS 2.4;
MODEL Testmodell
AT "http://example.org/"
VERSION "2025-06-25" =
IMPORTS GeometryCHLV95_V2;
TOPIC Garten =
BASKET OID AS INTERLIS.UUIDOID;
OID AS INTERLIS.UUIDOID;
STRUCTURE Beet =
Name: MANDATORY TEXT*60;
Geometrie: MANDATORY GeometryCHLV95_V2.Line;
END Beet;
STRUCTURE Topf =
Geometrie: MANDATORY GeometryCHLV95_V2.Coord2;
END Topf;
CLASS Gartenklasse =
Beet: BAG {0..*} OF Beet;
Topf: BAG {0..*} OF Topf;
END Gartenklasse;
END Garten;
END Testmodell.
Beide Modell kompilieren fehlerfrei (ilic 5.6.4).
Wenn ich das erweiterte Modell mit FME schreiben möchte und dabei im Hintergrund die ilivalidation aktiv habe, dann bekomme ich den error: Attribute Topf requires a structure Testmodell.Garten.Topf
So sieht das die XTF-Datei aus wenn die ilivalidation von FME ausgeschaltet ist:
wenn ich die gewünschte Änderung vornehme und die Originalklasse nehme, dann schreibt FME das XTF auch mit aktiver Validierung, allerdings ohne das Attribut Pflanzenart. Macht meiner Meinung nach ja auch Sinn, da es die Originalklasse nicht kennt.
Ich sehe nicht, wo hier der Fehler liegt? Hat jemand einen Tipp?
Es gab kürzlich ein Update von ili2fme auf Version 7.4.0. Darin wurde ein Bug betreffend LIST/BAG in ILI24 behoben. Vielleicht hat dies auch einen Einfluss auf deine Problemstellung? Kannst du mal mit der aktuellen Version versuchen (siehe https://www.interlis.ch/downloads/ili2fme)?
Welche Version von ili2fme hast du installiert? Das FME-Log zeigt sie dir an, wenn du entweder über einen INTERLIS-Reader oder im Data Inspector ein XTF öffnest.
ich habe es jetzt noch mit ili2fme 7.4. ausprobiert, es kommt dieselbe Fehlermeldung.
Auch im ilivalidator 1.14.7 erscheint diese noch immer. Ich habe hier noch das XTF angehängt: Testmodell_erweitert_Beispiel.xtf (1,7 KB)
Mal ein Schuss ins Blaue: Verwendest du beim INTERLIS-Writer in FME die Standardeinstellung %DATA bei „Models“? Was passiert, wenn du „Testmodell_erweitert“ anstelle %DATA verwendest?
Kenne mich allerdings mit der Version 2.4 (noch) nicht aus.
es kommt immer noch der gleiche Error: Attribute Topf requires a structure Testmodell.Garten.Topf
hier noch das kleine FME Skript, mit der ich die Testdatei erstellt habe, falls es weiterhilft: Schreiben_FME_Testmodell.zip (30,2 KB)
Ich habe es nicht mehr ganz im Kopf, aber braucht man nicht den ListBuilder-Transformer für die BAG OF-Geschichte? Die Bookmark heisst zwar „Pflanzenart Liste“, aber es wird ja keine FME-List gebaut. Der Aggregator ist glaube ich nicht dasselbe.
Hoi Stefan,
ich habe deinen Weg ausgetestet, aber ob ich den Aggregator verwende (mit Haken Generate List) oder den ListBuilder führt zum gleichen Ergebnis.
Die Meldung, das Attribut Topf benötige die Structure Testmodell.Garten.Topf weist doch darauf hin, dass Topf gar nicht als Attribut der erweiterten Klasse erkannt wird.
Ich vermute irgendwo den Fehler bei meinem erweiterten ili oder dann beim ilivalidator. Vorausgesetzt die Erweiterung einer Structure via Topic Erweiterung ist zulässig, so wie es im Beispiel durchgeführt wurde.
Sollte die Topf-Klasse im erweiterten Modell nicht so aussehen?
CLASS Gartenklasse (EXTENDED) =
Bepflanzt: MANDATORY BOOLEAN;
Beet (EXTENDED): BAG {0..*} OF Testmodell_erweitert.Garten.Beet;
Topf (EXTENDED): BAG {0..*} OF Testmodell_erweitert.Garten.Topf;
END Gartenklasse;
Falls die Strukturen erweitert werden (und anscheinend verwenden will), muss man sie glaub so modellieren. Das validiert mit deinem XTF und den beiden Modellen.