# Ilivalidator: Prüfung auf Integer

**URL:** <https://interlis.discourse.group/t/ilivalidator-pruefung-auf-integer/259>\
**Category:** INTERLIS Werkzeuge\
**Created:** [2. April 2024 um 06:45 UTC](https://interlis.discourse.group/t/ilivalidator-pruefung-auf-integer/259 "2024-04-02T06:45:16Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![beistehen](https://yyz2.discourse-cdn.com/free1/user_avatar/interlis.discourse.group/beistehen/32/7_2.png) [@beistehen](https://interlis.discourse.group/u/beistehen)\
**Post date:** [2. April 2024 um 06:45 UTC](https://interlis.discourse.group/t/ilivalidator-pruefung-auf-integer/259/1 "2024-04-02T06:45:16Z")

</div>

Ich möchte bei der Validierung mit ilivalidator prüfen können, ob ein bestimmtes numerisches Attribut eine Ganzzahl ist.

Meines Wissens gibt es noch keine Funktion dafür, die man in einem Constraint verwenden könnte. Ich stelle mir sowas vor wie

```java
FUNCTION IsInt (a: NUMERIC): BOOLEAN;

```

Welches ist nun die richtige resp. nachhaltigste Option?

- a) Ich schreibe dazu ein eigenes Modell und ein Plugin für ilivalidator?
- b) Ich schaue, dass das interne INTERLIS-Datenmodell (RefHB Anhang A) um diese Funktion ergänzt wird; das Plugin steure ich dem ilivalidator-Repository bei?\*
- c) Ich schaue, dass das offizielle [Math\_V2-Modell](https://models.interlis.ch/refhb24/Math_V2.ili) um diese Funktion ergänzt wird, das Plugin steure ich dem ilivalidator-Repository bei?\*\*
- d) Ich schaue, dass das Anliegen bei den [Funktionserweiterungen von Geowerkstatt (GeoW\_FunctionsExt)](https://github.com/GeoWerkstatt/geow-interlis-functions) aufgenommen wird und steure dort mein Plugin bei?

\* Würde eine Revision des RefHB bedeuten (eCH-Prozess).  
\*\* Wer entscheidet eigentlich darüber, welche Funktionen hier aufgenommen werden?

---

<div class="post-metadata">

**Author:** ![olivergrimm](https://yyz2.discourse-cdn.com/free1/user_avatar/interlis.discourse.group/olivergrimm/32/147_2.png) [@olivergrimm](https://interlis.discourse.group/u/olivergrimm)\
**Post date:** [2. April 2024 um 07:13 UTC](https://interlis.discourse.group/t/ilivalidator-pruefung-auf-integer/259/2 "2024-04-02T07:13:26Z")

</div>

Ich denke Variante c) wäre pragmatisch und nachhaltig. Die Funktion würde dann Teil vom iox-ili und wäre so in allen Formen des ilivalidators verfügbar. Und aus meiner Sicht sollten solche Erweiterungen problemlos und ohne grosse Vernehmlassung umgesetzt werden können.

---

<div class="post-metadata">

**Author:** ![edigonzales](https://yyz2.discourse-cdn.com/free1/user_avatar/interlis.discourse.group/edigonzales/32/4_2.png) [@edigonzales](https://interlis.discourse.group/u/edigonzales)\
**Post date:** [2. April 2024 um 09:59 UTC](https://interlis.discourse.group/t/ilivalidator-pruefung-auf-integer/259/3 "2024-04-02T09:59:26Z")

</div>

Bin gespannt auf die robuste Implementierung. Ist 1.000000000001 ein Integer? Oder ist es nur ein Integer wenn der String identisch „1“ ist?

---

<div class="post-metadata">

**Author:** ![olivergrimm](https://yyz2.discourse-cdn.com/free1/user_avatar/interlis.discourse.group/olivergrimm/32/147_2.png) [@olivergrimm](https://interlis.discourse.group/u/olivergrimm)\
**Post date:** [2. April 2024 um 11:01 UTC](https://interlis.discourse.group/t/ilivalidator-pruefung-auf-integer/259/4 "2024-04-02T11:01:51Z")

</div>

das müsste wohl über eine gewrappte `Modulo` - Funktion passieren, so gäbs auch nicht unendlich viel zu tun

---

<div class="post-metadata">

**Author:** ![beistehen](https://yyz2.discourse-cdn.com/free1/user_avatar/interlis.discourse.group/beistehen/32/7_2.png) [@beistehen](https://interlis.discourse.group/u/beistehen)\
**Post date:** [2. April 2024 um 12:39 UTC](https://interlis.discourse.group/t/ilivalidator-pruefung-auf-integer/259/5 "2024-04-02T12:39:26Z")

</div>

> [@edigonzales](#):
>
> Bin gespannt auf die robuste Implementierung.

Ja, es ist im Detail noch zu definieren, was diese Funktion können muss (und was nicht). Aber das ist für mich zurzeit zweitrangig.

Ich würde gerne die Diskussion führen, wo (auf Stufe der Werkzeuge) eine solche Funktion platziert werden sollte.

@olivergrimm Wo siehst du die Abgrenzung zwischen c) und d)? Welche Eigenschaften muss eine Funktion aufweisen, damit sie ‚nativ‘ unterstützt wird? Und wann schreibt man ein Plugin dafür?

---

<div class="post-metadata">

**Author:** ![olivergrimm](https://yyz2.discourse-cdn.com/free1/user_avatar/interlis.discourse.group/olivergrimm/32/147_2.png) [@olivergrimm](https://interlis.discourse.group/u/olivergrimm)\
**Post date:** [2. April 2024 um 12:46 UTC](https://interlis.discourse.group/t/ilivalidator-pruefung-auf-integer/259/6 "2024-04-02T12:46:10Z")

</div>

Diese Abgrenzung ist schwierig, aber ich finde die [aktuelle Liste der Funktionen in GeoW\_FunctionsExt](https://github.com/GeoWerkstatt/geow-interlis-functions/blob/master/src/model/GeoW_FunctionsExt.ili) zeigt eine mögliche Klassierung. Aktuell packen wir da Funktionen aus projektspezifischen Anforderungen rein, bei welchen wir oder der Kunde der Meinung ist, dass diese auch in einem anderen Kontext verwendet werden können und trotzdem keine allgemeine Methode darstellt. Und dann werden sie bzgl. Name und Parametrisierung möglichst allgemein gestaltet.  
Aber diese IsInt()-Funktion gehört m.E. klar in die native Unterstützung, weil sie eine Ergänzung einer der Grund-Bibliotheken (Math, Text) darstellt.

---

<div class="post-metadata">

**Author:** ![Peter2](https://avatars.discourse-cdn.com/v4/letter/p/d2c977/32.png) [@Peter2](https://interlis.discourse.group/u/Peter2)\
**Post date:** [20. April 2026 um 09:23 UTC](https://interlis.discourse.group/t/ilivalidator-pruefung-auf-integer/259/7 "2026-04-20T09:23:27Z")

</div>

Wie ist hier der Stand der Dinge? Anscheinend noch unverändert, oder täusche ich mich (hoffentlich)?

Guten Wochenstart wünsche ich!

---

<div class="post-metadata">

**Author:** ![olivergrimm](https://yyz2.discourse-cdn.com/free1/user_avatar/interlis.discourse.group/olivergrimm/32/147_2.png) [@olivergrimm](https://interlis.discourse.group/u/olivergrimm)\
**Post date:** [21. April 2026 um 05:45 UTC](https://interlis.discourse.group/t/ilivalidator-pruefung-auf-integer/259/8 "2026-04-21T05:45:52Z")

</div>

Im Rahmen der Constraints fürs DMAV-Validierungsmodell wurde `Math_V2` mit zwei Funktionen erweitert, welche wohl beide für diese Prüfung in Frage kommen:  
[DMAV-Validierungsmodell/models/Math\_V2\_1.ili at main · geostandards-ch/DMAV-Validierungsmodell](https://github.com/geostandards-ch/DMAV-Validierungsmodell/blob/main/models/Math_V2_1.ili)

```auto
  FUNCTION mod(a: NUMERIC; b: NUMERIC): NUMERIC;
  FUNCTION toNumeric(a: TEXT): NUMERIC;

```
