# View Definition in DMAV sehr kompliziert formuliert - Warum?

**URL:** https://interlis.discourse.group/t/view-definition-in-dmav-sehr-kompliziert-formuliert-warum/496
**Category:** Sprache INTERLIS
**Tags:** ili24
**Created:** [24. August 2026 um 14:51 UTC](https://interlis.discourse.group/t/view-definition-in-dmav-sehr-kompliziert-formuliert-warum/496 "2026-08-24T14:51:08Z")
**Posts on this page:** 6
**Page:** 1

<div class="post-metadata">

### Author: ![sunny](https://avatars.discourse-cdn.com/v4/letter/s/7c8e57/32.png) [@sunny](https://interlis.discourse.group/u/sunny)
#### Post date: [24. August 2026 um 14:51 UTC](https://interlis.discourse.group/t/view-definition-in-dmav-sehr-kompliziert-formuliert-warum/496/1 "2026-08-24T14:51:08Z")

</div>

Hallo zusammen

mich würde interessieren aus welchem Grund die VIEW Definition in den DMAV 1.1 Modellen so „kompliziert“ definiert sind. Es ginge doch auch viel lesbarer.

Ein Beispiel aus **DMAV\_Grundstuecke\_V1\_1**

```auto
VIEW Grundstueck_Gueltig
      PROJECTION OF Grundstueck;
      WHERE DEFINED(Grundstueck->Entstehung) AND DEFINED(Grundstueck->Entstehung->Grundbucheintrag) AND (NOT(DEFINED(Grundstueck->Untergang)) OR NOT(DEFINED(Grundstueck->Untergang->Grundbucheintrag)));
      =
      ALL OF Grundstueck;
     UNIQUE CH041101: NBIdent, Nummer;
     UNIQUE CH041102: EGRID;
    END Grundstueck_Gueltig;

```

besser lesbar:

```auto
VIEW Grundstueck_Gueltig
      PROJECTION OF Grundstueck;
      WHERE DEFINED(Grundstueck->Entstehung->Grundbucheintrag) AND NOT(DEFINED(Grundstueck->Untergang->Grundbucheintrag));
      =
      ALL OF Grundstueck;
     UNIQUE CH041101: NBIdent, Nummer;
     UNIQUE CH041102: EGRID;
    END Grundstueck_Gueltig;

```

Grüssle

---

<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: [24. August 2026 um 15:47 UTC](https://interlis.discourse.group/t/view-definition-in-dmav-sehr-kompliziert-formuliert-warum/496/2 "2026-08-24T15:47:55Z")

</div>

Gegeben sind die Klassen `Grundstueck` und `GSNachfuehrung`. Diese sind durch zwei Beziehungen miteinander verbunden: `Entstehung_Grundstueck` und `Untergang_Grundstueck`:

 ![grafik](https://global.discourse-cdn.com/free1/uploads/interlis/original/1X/65ad5241a88f53b5f79621c947cc26d320e510a7.png)

In der WHERE-Bedingung der View wird sichergestellt, dass nur Grundstueck-Objekte betrachtet werden, bei denen ausschliesslich eine der beiden Beziehungen (_links_) realisiert ist, und nicht beide. Es darf also nur der Link `Grundstueck->Entstehung` existieren; würde der andere Link `Grundstrueck->Untergang` auch bestehen, so wäre das ein Zeichen dafür, dass das Grundstueck-Objekt bereits untergegangen ist. Solche Grundstueck-Objekte haben aber in der View mit dem Namen _Grundstueck\_Gueltig_ nichts verloren.

Die beiden Ausdrücke `DEFINED(Grundstueck->Entstehung)` resp. `NOT(DEFINED(Grundstueck->Untergang`)), die du in deinem Vorschlag weglässt, sind also deshalb wichtig, weil sie beschreiben, welche der beiden Link-Möglichkeiten zwischen den beiden Klassen `Grundstueck` und `GSNachfuehrung` erlaubt sind und welche nicht.

LG, Stefan

---

<div class="post-metadata">

### Author: ![sunny](https://avatars.discourse-cdn.com/v4/letter/s/7c8e57/32.png) [@sunny](https://interlis.discourse.group/u/sunny)
#### Post date: [26. August 2026 um 08:38 UTC](https://interlis.discourse.group/t/view-definition-in-dmav-sehr-kompliziert-formuliert-warum/496/3 "2026-08-26T08:38:12Z")

</div>

aber ist es nicht so, dass meine abgespeckte Version dies auch beschreibt? Sorry ich stehe noch etwas auf dem Schlauch

`DEFINED(Grundstueck->Entstehung)` ist doch in allen Fällen auch bei `DEFINED(Grundstueck->Entstehung->Grundbucheintrag)` erfüllt, somit überflüssig extra zu testen weil mit AND verknüpft.

ebenso ist doch ` (DEFINED(Grundstueck->Untergang))` noch ein gültiges Grundstück erst mit `(DEFINED(Grundstueck->Untergang->Grundbucheintrag))`nicht mehr, somit würde es doch ausreichen nur den zweiten Teil zu testen und dann mit NOT umzudrehen?

---

<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: [26. August 2026 um 09:31 UTC](https://interlis.discourse.group/t/view-definition-in-dmav-sehr-kompliziert-formuliert-warum/496/4 "2026-08-26T09:31:41Z")

</div>

> [@sunny](#):
>
> `DEFINED(Grundstueck->Entstehung)` ist doch in allen Fällen auch bei `DEFINED(Grundstueck->Entstehung->Grundbucheintrag)` erfüllt,

(Leider) nein. Mit dem Pfad `Grundstueck->Entstehung->Grundbucheintrag` fragst du nur das Attribut `Grundbucheintrag` ab, aber nicht den Link zwischen `Grundstueck` und `GSNachfuehrung`. Du musst separat prüfen, ob dieser Link existiert.

---

<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: [26. August 2026 um 09:43 UTC](https://interlis.discourse.group/t/view-definition-in-dmav-sehr-kompliziert-formuliert-warum/496/5 "2026-08-26T09:43:00Z")

</div>

Fall A: Link `Entstehung` existiert nicht:

`DEFINED(Grundstueck->Entstehung) = false `  
`DEFINED(Grundstueck->Entstehung->Grundbucheintrag) = false`

Fall B: Link `Entstehung` existiert, aber `Grundbucheintrag` ist leer:

`DEFINED(Grundstueck->Entstehung) = true `  
`DEFINED(Grundstueck->Entstehung->Grundbucheintrag) = false`

Fall C: Link existiert und `Grundbucheintrag` ist gesetzt:

`DEFINED(Grundstueck->Entstehung) = true `  
`DEFINED(Grundstueck->Entstehung->Grundbucheintrag) = true`

Wozu braucht es dann das erste DEFINED?

---

<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: [26. August 2026 um 11:20 UTC](https://interlis.discourse.group/t/view-definition-in-dmav-sehr-kompliziert-formuliert-warum/496/6 "2026-08-26T11:20:30Z")

</div>

Danke für die Aufstellung. Ich glaube du hast recht und ich habe mich geirrt. Sorry @sunny 🫣

Gemäss RefHB gilt:

> _Besteht ein Faktor nicht nur aus dem unmittelbaren Gegenstand sondern auch aus dem Pfad, der zu diesem führt, gilt der Gegenstand immer als undefiniert, wenn irgendein Attribut des Pfades nicht definiert ist._  
> [INTERLIS 2.4 Referenzhandbuch](https://geostandards-ch.github.io/doc_refhb24/#_ausdr%C3%BCcke)

Damit reicht wohl der eine `DEFINED`-Ausdruck, um festzustellen, ob das Attribut `Grundbucheintrag` leer ist oder nicht. In Ausdrücken, die ich verwende, muss ich erst oft auf „Leer“ (= `DEFINED`) prüfen und anschliessend auf einen konkreten Wert. Aber die „doppelte“ `DEFINED`-Prüfung ist wohl hier nicht nötig.
