From c2a8550b5e798be228736a2142fc62702954fcf1 Mon Sep 17 00:00:00 2001 From: konstin Date: Sat, 10 Mar 2018 17:25:28 +0100 Subject: [PATCH 1/4] Option to omit internal lists --- src/2-05-objektlisten-und-paginierung.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/2-05-objektlisten-und-paginierung.md b/src/2-05-objektlisten-und-paginierung.md index 2b68ca1..83a7b75 100644 --- a/src/2-05-objektlisten-und-paginierung.md +++ b/src/2-05-objektlisten-und-paginierung.md @@ -223,6 +223,23 @@ beziehen sich auf die entsprechenden Attribute der jeweiligen Objekte, wobei reservierte Zeichen URL-Kodiert werden müssen. Ein Server muss diese Parameter bei allen externen Objektlisten unterstützen. +Neu in OParl 1.1: Wenn ein Client den Parameter `omit_internal` mit dem Wert +`true` angibt, dann **soll** der Server auf die Ausgabe von internen Listen +verzichten, sofern deren Objekte Teil einer der in OParl 1.1 neu eingeführten +Listen sind. Konkret bedeutet das, dass die folgenden Attribute nicht ausgegeben +werden müssen: + + - `auxiliaryFile` in `AgendaItem` + - `auxiliaryFile` in `Meeting` + - `auxiliaryFile` in `Paper` + - `location` in `Paper` + - `membership` in `Person` + +Weiterhin ausgeben werden dagegen: + + - `legislativeTerm` in `Body` (Hier gibt es keine externe Liste) + - `agendaItem` in `Meeting` (Hier ist die Reihenfolge der Objekte relevant) + Die Filter werden vom Client benutzt, indem die gewünschten URL-Parameter an die URL der ersten Listenseite angehängt werden. Bei allen weiteren Seiten, genauer gesagt bei den Werten von `links`, **muss** der Server sicherzustellen, From d5dfc62760f4f97ed1b34a2c62e20453ac2a8468 Mon Sep 17 00:00:00 2001 From: konstin Date: Mon, 12 Mar 2018 16:57:10 +0100 Subject: [PATCH 2/4] Add omit_internal to example --- src/2-05-objektlisten-und-paginierung.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/2-05-objektlisten-und-paginierung.md b/src/2-05-objektlisten-und-paginierung.md index 83a7b75..8114e41 100644 --- a/src/2-05-objektlisten-und-paginierung.md +++ b/src/2-05-objektlisten-und-paginierung.md @@ -288,9 +288,9 @@ Drucksachen herunterladen und in einer Datenbank speichern. Um den Datenbestand am nächsten Tag zu aktualisieren, ruft der Client die selbe URL auf, diesmal jedoch mit dem Parameter `modified_since` mit dem Wert -`2014-01-01T02:00:00+01:00`. +`2014-01-01T02:00:00+01:00` und mit `omit_internal`. - https://oparl.example.org/papers/?modified_since=2014-01-01T02%3A00%3A00%2B01%3A00 + https://oparl.example.org/papers/?modified_since=2014-01-01T02%3A00%3A00%2B01%3A00&omit_internal=true Diese Liste ist in der Regel deutlich kürzer als die Liste aller Objekte, sodass die Aktualisierung bedeutend schneller ist als der erste Abruf. Der From 788156ef22ffe148c74ba3e25467d44d0d25e465 Mon Sep 17 00:00:00 2001 From: konstin Date: Sat, 7 Apr 2018 00:40:27 +0200 Subject: [PATCH 3/4] Add order to agendaitem --- schema/AgendaItem.json | 9 +++++++-- schema/strings.yml | 4 ++++ src/2-05-objektlisten-und-paginierung.md | 2 +- src/4-01-oparl-1-1.md | 5 +++-- 4 files changed, 15 insertions(+), 5 deletions(-) diff --git a/schema/AgendaItem.json b/schema/AgendaItem.json index 5cc3fee..7a2a515 100644 --- a/schema/AgendaItem.json +++ b/schema/AgendaItem.json @@ -4,7 +4,8 @@ "type": "object", "required": [ "id", - "type" + "type", + "order" ], "properties": { "id": { @@ -25,6 +26,10 @@ "description": "{{ AgendaItem.properties.number.description }}", "type": "string" }, + "order": { + "description": "{{ AgendaItem.properties.order.description }}", + "type": "integer" + }, "name": { "description": "{{ AgendaItem.properties.name.description }}", "type": "string" @@ -97,4 +102,4 @@ "type": "boolean" } } -} \ No newline at end of file +} diff --git a/schema/strings.yml b/schema/strings.yml index 4a9d327..8c79c3f 100644 --- a/schema/strings.yml +++ b/schema/strings.yml @@ -16,6 +16,10 @@ de: wie z. B. "10.", "10.1", "C", "c)" o. ä. Die Reihenfolge wird nicht dadurch, sondern durch die Reihenfolge der TOPs im `agendaItem`-Attribut von `oparl:Meeting` festgelegt, **sollte** allerdings zu dieser identisch sein. + AgendaItem.properties.order.description: | + Neu in OParl 1.1: Die Position des Tagesordnungspunkts in der Sitzung, + wenn alle Tagesordnungspunkte von 0 an durchgehend numeriert werden. + Diese Nummer entspricht der Position in `Meeting:agendaItem` AgendaItem.properties.name.description: Das Thema des Tagesordnungspunktes. AgendaItem.properties.public.description: | Kennzeichnet, ob der Tagesordnungspunkt zur Behandlung in öffentlicher Sitzung diff --git a/src/2-05-objektlisten-und-paginierung.md b/src/2-05-objektlisten-und-paginierung.md index 8114e41..828ce01 100644 --- a/src/2-05-objektlisten-und-paginierung.md +++ b/src/2-05-objektlisten-und-paginierung.md @@ -234,11 +234,11 @@ werden müssen: - `auxiliaryFile` in `Paper` - `location` in `Paper` - `membership` in `Person` + - `agendaItem` in `Meeting` Weiterhin ausgeben werden dagegen: - `legislativeTerm` in `Body` (Hier gibt es keine externe Liste) - - `agendaItem` in `Meeting` (Hier ist die Reihenfolge der Objekte relevant) Die Filter werden vom Client benutzt, indem die gewünschten URL-Parameter an die URL der ersten Listenseite angehängt werden. Bei allen weiteren Seiten, diff --git a/src/4-01-oparl-1-1.md b/src/4-01-oparl-1-1.md index 60ab02f..ac67a6c 100644 --- a/src/4-01-oparl-1-1.md +++ b/src/4-01-oparl-1-1.md @@ -6,7 +6,6 @@ Das bedeutet, dass ein für OParl 1.0 entwickelter Client auch die Ausgabe von OParl 1.1 versteht. Dadurch ist wird der Migrationsaufwand von OParl 1.0 zu OParl 1.1 gering gehalten. - OParl 1.0 wurde in der Annahme geschrieben, dass für sechs Objekttypen (LegislativeTerm, Membership, AgendaItem, Consultation, File, Location) keine verlässlichen Werte für `created` und `modified` existieren. @@ -27,7 +26,9 @@ Es entsteht dabei Redundanz zwischen den bereits existierenden Objektlisten mit eingebetteten Objekten (Body, Paper, Meeting, Person, Organization) und den neuen externen Listen, die die bisher eingebetteten Objekte extern ausgeben. Diese Redundanz lässt sich auf Grund der Semver-Regeln in Version 1.1 nicht -vermeiden und kann erst in einer Version 2 beseitigt werden. +vermeiden und kann erst in einer Version 2 beseitigt werden. Um diese Redundanz +zumindest bei der Aktualisierung eines lokalen Datenbestands vermeiden zu können +wurde die URL-Paramter `omit_internal` eingeführt. ### Weitere Änderungen * Namespace-URLs werden durchgängig im Camel Case geschrieben From 98851fb92005689c920744992db903536a74cff3 Mon Sep 17 00:00:00 2001 From: konstin Date: Sat, 7 Apr 2018 00:47:30 +0200 Subject: [PATCH 4/4] Add legislativeTermList in Body --- schema/Body.json | 10 ++++++++++ schema/strings.yml | 1 + src/2-05-objektlisten-und-paginierung.md | 8 ++------ src/4-01-oparl-1-1.md | 10 +++++----- 4 files changed, 18 insertions(+), 11 deletions(-) diff --git a/schema/Body.json b/schema/Body.json index 87d7aa3..b3df214 100644 --- a/schema/Body.json +++ b/schema/Body.json @@ -169,6 +169,16 @@ "schema": "Location.json" } }, + "legislativeTermList": { + "description": "{{ Body.properties.legislativeTermList.description }}", + "type": "string", + "format": "url", + "references": "externalList", + "items": { + "type": "object", + "schema": "LegislativeTerm.json" + } + }, "membership": { "description": "{{ Body.properties.membership.description }}", "type": "string", diff --git a/schema/strings.yml b/schema/strings.yml index 8c79c3f..0a8e70e 100644 --- a/schema/strings.yml +++ b/schema/strings.yml @@ -117,6 +117,7 @@ de: Body.properties.file.description: "**ZWINGEND** Link zur [Objektliste](#objektlisten) mit allen Dateien der Körperschaft. Neu in OParl 1.1." Body.properties.membership.description: "**ZWINGEND** Link zur [Objektliste](#objektlisten) mit allen Mitgliedschaften der Körperschaft. Neu in OParl 1.1." Body.properties.locationList.description: "**ZWINGEND** Link zur [Objektliste](#objektlisten) mit allen Ortsangaben der Körperschaft. Neu in OParl 1.1." + Body.properties.legislativeTermList.description: "**ZWINGEND** Link zur [Objektliste](#objektlisten) mit allen Legislaturperioden der Körperschaft. Neu in OParl 1.1. Die externe Objektliste enthält die gleichen Objekte wie `legislativeTerm`" Body.properties.shortName.description: Kurzer Name der Körperschaft. Body.properties.name.description: Der offizielle lange Name der Körperschaft. Body.properties.website.description: Allgemeine Website der Körperschaft. diff --git a/src/2-05-objektlisten-und-paginierung.md b/src/2-05-objektlisten-und-paginierung.md index 828ce01..ee2f121 100644 --- a/src/2-05-objektlisten-und-paginierung.md +++ b/src/2-05-objektlisten-und-paginierung.md @@ -225,8 +225,7 @@ bei allen externen Objektlisten unterstützen. Neu in OParl 1.1: Wenn ein Client den Parameter `omit_internal` mit dem Wert `true` angibt, dann **soll** der Server auf die Ausgabe von internen Listen -verzichten, sofern deren Objekte Teil einer der in OParl 1.1 neu eingeführten -Listen sind. Konkret bedeutet das, dass die folgenden Attribute nicht ausgegeben +verzichten. Konkret bedeutet das, dass die folgenden Attribute nicht ausgegeben werden müssen: - `auxiliaryFile` in `AgendaItem` @@ -235,10 +234,7 @@ werden müssen: - `location` in `Paper` - `membership` in `Person` - `agendaItem` in `Meeting` - -Weiterhin ausgeben werden dagegen: - - - `legislativeTerm` in `Body` (Hier gibt es keine externe Liste) + - `legislativeTerm` in `Body` Die Filter werden vom Client benutzt, indem die gewünschten URL-Parameter an die URL der ersten Listenseite angehängt werden. Bei allen weiteren Seiten, diff --git a/src/4-01-oparl-1-1.md b/src/4-01-oparl-1-1.md index ac67a6c..41422e0 100644 --- a/src/4-01-oparl-1-1.md +++ b/src/4-01-oparl-1-1.md @@ -16,11 +16,11 @@ OParl 1.0 wurde in der Annahme geschrieben, dass für sechs Objekttypen bei der Synchronisation. Konkret sind `created` und `modified` in OParl 1.1 für alle Objekte zwingend - und es gibt fünf neue externe Objektlisten in Body: AgendaItem, Consultation, - File, Location und Membership. LegislativeTerm wird weiterhin als - eingebettete Liste direkt in Body ausgegeben. Das Attribut für die - Location-Liste in Body heißt dabei `locationList`, um eine Kollision - mit dem bereits existierenden `location` zu vermeiden. +und es gibt fünf neue externe Objektlisten in Body: AgendaItem, Consultation, +File, LegislativeTerm, Location und Membership. Das Attribut für die +Location-Liste in Body heißt dabei `locationList`, um eine Kollision +mit dem bereits existierenden `location` zu vermeiden. Das gleiche gilt auch für +`legislativeTermList`. Es entsteht dabei Redundanz zwischen den bereits existierenden Objektlisten mit eingebetteten Objekten (Body, Paper, Meeting, Person, Organization) und den