Skip to content

Commit

Permalink
Neue Formulierung für null un leere Listen (#336)
Browse files Browse the repository at this point in the history
  • Loading branch information
marians committed Jul 10, 2014
1 parent 0415d4f commit 7417cfa
Showing 1 changed file with 31 additions and 12 deletions.
43 changes: 31 additions & 12 deletions dokument/master/chapter_8000.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
Schema
Schema {#schema}
======

Dieses Kapitel beschreibt das Schema von OParl. Das Schema bildet das
Expand All @@ -23,22 +23,41 @@ Sofern keine Typ-Angabe zu einer Eigenschaft vorhanden ist, oder die
Typ-Angabe `String` oder `xsd:string` lautet, werden Unicode-Zeichenketten
als Datentyp erwartet.

### `null`-Werte und "leere" Werte
### `null`-Werte und leere Listen

JSON erlaubt es grundsätzlich, Eigenschaften mit dem Wert `null` zu versehen.
Im Rahmen von OParl SOLLEN Server nach Möglichkeit davon absehen, Eigenschaften
mit dem Wert `null` auszugeben. Obligatorische Eigenschaften (in diesem Kapitel mit "ZWINGEND" markiert) DÜRFEN NICHT den Wert `null` haben.

Clients MÜSSEN eine Eigenschaft mit dem Wert `null` so behandeln, als
wäre die Eigenschaft nicht im Objekt vorhanden. OParl-Server SOLLEN die
Ausgabe von Eigenschaften mit dem Wert `null` grundsätzlich vermeiden.
Im Fall von Arrays erlaubt JSON grundsätzlich die Ausgabe von `[]` für leere Arrays.
Wie bei `null` wird auch hier EMPFOHLEN, auf die Ausgabe einer Eigenschaft mit dem Wert `[]` zu verzichten, sofern es sich nicht um eine obligatorische Eigenschaft handelt.

Analog dazu SOLLEN Server vermeiden, leere JSON-Arrays und -Objekte
(`[]` und `{}`) auszugeben. Auch hier sind Clients dazu angehalten, diese
wie nicht existierende Eigenschaften zu behandeln.
Obligatorische Eigenschaften, die als Wert eine Liste von Objekten haben können,
stellen einen Sonderfall dar. Diese können, wie im Abschnitt
[Objektlisten](#objektlisten) beschrieben, entweder ein JSON-Array oder eine
URL zum externen Abruf einer Objektliste als Wert haben. In der Praxis kann es
vorkommen, dass solche Listen leer sind. Beispielsweise könnte eine Gruppierung
neu erstellt worden sein und noch keine Sitzungstermine aufweisen. In diesem
Fall ist ein leeres Array eine gültige Möglichkeit, dies auszudrücken. Da es sich dabei um eine obligatorische Eigenschaft handelt, muss sie jedoch ausgegeben werden.

Beispiel:

~~~~~ {#schema_ex1 .json}
{
"id": "https://oparl.example.org/",
"type": "http://oparl.org/schema/1.0/Organization",
"meeting": [],
...
}
~~~~~

Clients können so unmittelbar feststellen, dass zu dieser Gruppierung (noch) keine
Sitzungen vorliegen.

Ist eine Liste leer, wird EMPFOHLEN, diese NICHT über eine eigene URL anzubieten,
da so Clients eine zusätzliche Anfrage für den Abruf einer leeren Liste stellen
müssen.

Ausnahmen bilden hier Eigenschaften, die ihrerseits als Pflichteigenschaften
("ZWINGEND") deklariert sind und die Kardinalität "1 bis *" besitzen,
also eine Liste als Wert haben können. Diese Eigenschaften DÜRFEN auch dann
gesetzt sein, wenn ihr Wert eine leere Liste ist.

### Kardinalität

Expand Down

1 comment on commit 7417cfa

@marians
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Dieser Commit bezieht sich auf #223 und #226 - die Angabe in der Commit-Message ist natürlich falsch.

Please sign in to comment.