Wertebereiche mit Lücken

Im Anschluss an die Diskussion zu verbreiteten Wertebereichen in Basismodellen bin ich auf eine andere Problematik gestossen, von der ich kaum glauben kann, dass sich noch niemand damit befasst hat. Wertebereiche (WB) mit Lücken, erklärt an folgenden Beispielen:

  • PLZ BL: Alle PLZ im Kt BL sind im Bereich 4052 .. 4719, ausser die Gemeinde Roggenburg die hat PLZ 2814.
  • EGID BL: Neuere EGID haben den Wert 245000001 .. 248999999. Es gibt aber auch ältere EGID im Bereich 390001 .. 399999.

Eine Kombination (WB = WBa + WBb) lässt Interlis leider nicht zu.
Eine Subtraktion (WB = WBa - WBb) wäre in Interlis 2.4 mit CONSTRAINT möglich. Allerdings meldet ili2c jedesmal einen Fehler im CONSTRAINT, weil der Domainname unbekannt sei.

Ich habe kein Modell gefunden, welches einen CONSTRAINT auf einen Wertebereich anwendet. Am nächsten kommt die Gefahrenkartierung, aber auch dort wird der CONSTRAINT in Zeile 220 nicht in der Domain sondern in der Klasse definiert. Das ist bei einem Basismodell keine Option. Für die relativ überschaubaren PLZ und BFS-Nr wäre ggf. ein Katalog eine Möglichkeit, für EGID etc. fällt dies definitiv weg.

Ich bin gespannt auf eure Ideen und Überlegungen!

@rmbl Was Du (in 2.4) machen kannst, ist den Wertebereich mittels einem Constraint auf dem Domain einzugrenzen (Beispiel für die PLZ):

INTERLIS 2.4;

MODEL ModelA AT "https://models.geow.cloud" VERSION "2025-05-01"  =

DOMAIN
    PLZ_BL = 2814 .. 4719 CONSTRAINTS PLZ_BL: THIS == 2814 OR (THIS >= 4052 AND THIS <= 4719);

  TOPIC TestA =
 
    CLASS ClassA =
      PLZ: MANDATORY PLZ_BL;
    END ClassA;

  END TestA;

END ModelA.

wobei Du diese Regel auch in einem MANDATORY CONSTRAINT direkt beim Attribut setzen kannst (auch in 2.3):

      PLZ: MANDATORY 2814 .. 4719;
      MANDATORY CONSTRAINT PLZ == 2814 OR (PLZ >= 4052 AND PLZ <= 4719);

Hoffe das hilft Dir.

2 „Gefällt mir“

Herzlichen Dank @olivergrimm ! ‚THIS‘ war das gesuchte Zauberwort. Damit funktioniert es nun. Und wir haben einen Grund mehr unsere Modelle auf Interlis 2.4 upzugraden.

1 „Gefällt mir“