-
Notifications
You must be signed in to change notification settings - Fork 20
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Limitierung und Paginierung von Listen #66
Comments
Dass das Problem besteht und gelöst werden muss ist offensichtlich. Die konkrete vorgeschlagene Lösung gefällt mir aber noch nicht. Ich schaue, was es für Alternativen (best practices) gibt. (SPARQL queries mit "limit" und "offset" kommen ja leider nicht in Frage, da das gegenwärtig zu hohe Anforderungen an einen Teil der potentiellen OParl-Anbieter stellen würde.) |
Es gibt einen Vorschlag zu Paging im "W3C Last Call Working Draft 30 July 2013" der "W3C Linked Data Platform 1.0" der sich aber nach erstem Überfliegen nicht prinzipiell von dem von Marian unterscheidet: EDIT: Es gibt auch einen W3C Editor's Draft mit aktuellem Stand vom 06 February 2014: EDIT2: Das wurde inzwischen in ein eigenes Dokument ausgelagert: |
Noch ein Aspekt, der in die Specs muss: Die Sortierlogik der Liste wird vom System vorgegeben und bleibt selbstverständlich bei allen Abrufen der Liste bzw. der einzelnen Listenseiten unverändert. Das System SOLL für die Sortierung bestenfalls ein unveränderliches Kriterium des Objekts verwenden, wie z.B. ein Erstellungsdatum oder eine interne ID. Begründung: Andernfalls kann es passieren, dass sich die Objektreihenfolge zwischen den Abrufen einzelner Listenseiten ändert, weil sich Objekteigenschaften geändert haben. In der Konsequenz wäre es möglich, dass Clients beim sequentiellen Abruf aller Listenseiten einzelne Objekte nicht erfassen können. |
Hinweis aus dem Workshop: Bei der Reihenfolge von Parteien oder Fraktionen müssen politische Empfindlichkeiten berücksichtigt werden. Lexikografische Ordnung z.B. geht also nicht. |
Sortierung sollte m. E. über den RIS-Betreiber erfolgen und alle Listen sollten in adäquat sortierter Form (berücksichtigung persönlicher Befindlichkeiten in der jeweiligen Kommune, Alphabet, etc.) vorliegen. |
In Hydra gibt es nach aktuellem Stand hydra:PagedCollection. Das dürfte für paging brauchbar sein. EDIT: Auf der Hydra mailing list wird das gerade mit dem Vorschlag der W3C Linked Data Plattform verglichen. |
Spannend: Auf der W3C Linked Data Platform mailing list (http://lists.w3.org/Archives/Public/public-ldp-comments/) ist zwar ziemlich wenig los, dafür beteiligt sich Tim Berners-Lee mit kritischen Kommentaren zu diversen (potentiell auch für OParl relevanten) Details des bisherigen Entwurfs persönlich (was nicht bedeutet, dass ich ihm in allen Punkten zustimme ;-). |
Hier auch der Hinweis auf RFC 5005: Feed Paging and Archiving |
Stabile Paginierung sollten wir als Anforderung definieren, aber wie sie umgesetzt wird, könnte dem Server (-Implementierer) überlassen bleiben. Hier ein Beispiel, wie es möglich wäre: {
"items": [
"http://meinris.de/api/papers/1",
"http://meinris.de/api/papers/2",
"http://meinris.de/api/papers/3"
],
"nextpage": "http://meinris.de/api/papers/?skip=http://meinris.de/api/papers/3"
} Der Server überspringt also bei der Ausgabe der Liste bis einschließlich zu dem mit "skip" angegebene Objekt. Die eigentlich angebrachte URL-Kodierung habe ich mal gelassen, um die Lesbarkeit zu verbessern. |
Die Inhalte sind in Kapitel 4.7 eingeflossen. Das Issue wird daher geschlossen. |
Wie im Workshop besprochen, muss es per Spezifikation die Möglichkeit geben, dass die Ausgabe von Listen durch das Backend-System limitiert wird, da einige Listen (Drucksachen, Sitzungen) tausende oder zehntausende von Objekten umfassen können. Hier ein Vorschlag für die weitere Festlegung.
Durch eine Paginierungsfunktion MUSS das Backend im Fall von mehr als 100 Objekten (genauer: URLs) in einer Liste dafür sorgen, dass die Listeninhalte auf mehrere Seiten verteilt werden, so dass jeweils maximal 100 Objekte pro Listenseite ausgegeben werden.
Die Ausgabe einer so limitierten Liste muss eine URL zum Abruf der nächsten Listenseite enthalten.
Beispiel:
Wie die "nextpage" URL beschaffen ist, ist dem Implementierer freigestellt.
The text was updated successfully, but these errors were encountered: