draft-ietf-regext-rdap-sorting-and-paging-11.txt   draft-ietf-regext-rdap-sorting-and-paging-12.txt 
Registration Protocols Extensions M. Loffredo Registration Protocols Extensions M. Loffredo
Internet-Draft M. Martinelli Internet-Draft M. Martinelli
Intended status: Standards Track IIT-CNR/Registro.it Intended status: Standards Track IIT-CNR/Registro.it
Expires: October 18, 2020 S. Hollenbeck Expires: October 19, 2020 S. Hollenbeck
Verisign Labs Verisign Labs
April 16, 2020 April 17, 2020
Registration Data Access Protocol (RDAP) Query Parameters for Result Registration Data Access Protocol (RDAP) Query Parameters for Result
Sorting and Paging Sorting and Paging
draft-ietf-regext-rdap-sorting-and-paging-11 draft-ietf-regext-rdap-sorting-and-paging-12
Abstract Abstract
The Registration Data Access Protocol (RDAP) does not include core The Registration Data Access Protocol (RDAP) does not include core
functionality for clients to provide sorting and paging parameters functionality for clients to provide sorting and paging parameters
for control of large result sets. This omission can lead to for control of large result sets. This omission can lead to
unpredictable server processing of queries and client processing of unpredictable server processing of queries and client processing of
responses. This unpredictability can be greatly reduced if clients responses. This unpredictability can be greatly reduced if clients
can provide servers with their preferences for managing large can provide servers with their preferences for managing large
responses. This document describes RDAP query extensions that allow responses. This document describes RDAP query extensions that allow
skipping to change at page 1, line 41 skipping to change at page 1, line 41
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at https://datatracker.ietf.org/drafts/current/. Drafts is at https://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
This Internet-Draft will expire on October 18, 2020. This Internet-Draft will expire on October 19, 2020.
Copyright Notice Copyright Notice
Copyright (c) 2020 IETF Trust and the persons identified as the Copyright (c) 2020 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(https://trustee.ietf.org/license-info) in effect on the date of (https://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
skipping to change at page 22, line 25 skipping to change at page 22, line 25
given element. The root element is always referred to as $ given element. The root element is always referred to as $
regardless if it is an object or array. regardless if it is an object or array.
Additionally, the specification permits implementations to support Additionally, the specification permits implementations to support
arbitrary script expressions: these can be used to index into an arbitrary script expressions: these can be used to index into an
object or an array, or to filter elements from an array. While object or an array, or to filter elements from an array. While
script expression behaviour is implementation-defined, most script expression behaviour is implementation-defined, most
implementations support the basic relational and logical operators, implementations support the basic relational and logical operators,
as well as both object member and array item access, sufficiently as well as both object member and array item access, sufficiently
similarly for the purposes of this document. Commonly-supported similarly for the purposes of this document. Commonly-supported
operators/functions are documented in Table 3. operators/functions divided into "top-level operators" and "filter
operators" are documented in Table 3 and Table 4 respectively.
+-------------------+-----------------------------------------------+ +-------------------+-----------------------------------------+
| Operator | Descritpion | | Operator | Descritpion |
+-------------------+-----------------------------------------------+ +-------------------+-----------------------------------------+
| $ | Root element | | $ | Root element |
| .<name> | Object member access | | .<name> | Object member access (dot-notation) |
| [<number>] | Array item access | | ['<name>'] | Object member access (bracket-notation) |
| * | All elements within the specified scope | | [<number>] | Array item access |
| [?(<expression>)] | Filter expression | | * | All elements within the specified scope |
| @ | The current element being processed by a | | [?(<expression>)] | Filter expression |
| | filter predicate | +-------------------+-----------------------------------------+
| == | Left is equal to right |
| != | Left is not equal to right |
| < | Left is less than right |
| <= | Left is less than or equal to right |
| > | Left is greater than right |
| >= | Left is greater than or equal to right |
| && | Logical conjunction |
| || | Logical disjunction |
+-------------------+-----------------------------------------------+
Table 3: JSONPath Operators Table 3: JSONPath Top-Level Operators
+------------+----------------------------------------+
| Operator | Descritpion |
+------------+----------------------------------------+
| @ | Current element being processed |
| .<name> | Object member access |
| [<number>] | Array item access |
| == | Left is equal to right |
| != | Left is not equal to right |
| < | Left is less than right |
| <= | Left is less than or equal to right |
| > | Left is greater than right |
| >= | Left is greater than or equal to right |
| && | Logical conjunction |
| || | Logical disjunction |
+------------+----------------------------------------+
Table 4: JSONPath Filter Operators
Appendix B. Approaches to Result Pagination Appendix B. Approaches to Result Pagination
An RDAP query could return a response with hundreds, even thousands, An RDAP query could return a response with hundreds, even thousands,
of objects, especially when partial matching is used. For that of objects, especially when partial matching is used. For that
reason, the cursor parameter addressing result pagination is defined reason, the cursor parameter addressing result pagination is defined
to make responses easier to handle. to make responses easier to handle.
Presently, the most popular methods to implement pagination in REST Presently, the most popular methods to implement pagination in REST
API are: offset pagination and keyset pagination. Both two API are: offset pagination and keyset pagination. Both two
skipping to change at page 26, line 4 skipping to change at page 26, line 22
document. Removed the "Paging Responses to POST Requests" document. Removed the "Paging Responses to POST Requests"
section. Updated the "Acknowledgements" section. Removed unused section. Updated the "Acknowledgements" section. Removed unused
references. In the "Sorting Properties Declaration" section: references. In the "Sorting Properties Declaration" section:
* clarified the logic of sorting on events; * clarified the logic of sorting on events;
* corrected the JSONPath of the "lastChanged" sorting property; * corrected the JSONPath of the "lastChanged" sorting property;
* provided a JSONPath example taking into account the vCard * provided a JSONPath example taking into account the vCard
"pref" parameter. "pref" parameter.
10: Corrected the JSONPaths of both "fn" and "org" sorting 10: Corrected the JSONPaths of both "fn" and "org" sorting
properties in Table 2. Corrected JSON content in Figure 4. Moved properties in Table 2. Corrected JSON content in Figure 4. Moved
[W3C.CR-xpath-31-20161213] and [RFC7942] to the "Normative [W3C.CR-xpath-31-20161213] and [RFC7942] to the "Normative
References". Changed the rdapConformance tags "sorting_level_0" References". Changed the rdapConformance tags "sorting_level_0"
and "paging_level_0" to "sorting" and "paging" respectively. and "paging_level_0" to "sorting" and "paging" respectively.
11: Added the "JSONPath operators" section to appendix. 11: Added the "JSONPath operators" section to appendix.
12: Changed the content of "JSONPath operators" section.
Authors' Addresses Authors' Addresses
Mario Loffredo Mario Loffredo
IIT-CNR/Registro.it IIT-CNR/Registro.it
Via Moruzzi,1 Via Moruzzi,1
Pisa 56124 Pisa 56124
IT IT
Email: mario.loffredo@iit.cnr.it Email: mario.loffredo@iit.cnr.it
 End of changes. 9 change blocks. 
26 lines changed or deleted 36 lines changed or added

This html diff was produced by rfcdiff 1.47. The latest version is available from http://tools.ietf.org/tools/rfcdiff/