From da6a1229e809632e9f17e27c4301cbeb1492947f Mon Sep 17 00:00:00 2001 From: Jim Marino Date: Tue, 13 Feb 2024 15:35:26 +0100 Subject: [PATCH 1/2] Add pagination and filter changes --- catalog/catalog.binding.https.md | 15 +++++++++------ catalog/catalog.protocol.md | 4 ++-- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/catalog/catalog.binding.https.md b/catalog/catalog.binding.https.md index f6e26fc..10fff79 100644 --- a/catalog/catalog.binding.https.md +++ b/catalog/catalog.binding.https.md @@ -60,7 +60,7 @@ Authorization: ... - The `Authorization` header is optional if the [Catalog Service](../model/terminology.md#catalog-service) does not require authorization. If present, the contents of the `Authorization` header are detailed in the [Authorization section](#13-authorization). -- The `filter` property is optional. If present, the `filter` property can contain an implementation-specific filter expression or query to be executed as part of the [Catalog](../model/terminology.md#catalog) request. +- The `filter` property is optional. If present, the `filter` property can contain an implementation-specific filter expression or query to be executed as part of the [Catalog](../model/terminology.md#catalog) request. If a filter expression is not supported by an implementation, it must return a HTTP 400 (Bad Request) response. ##### Response @@ -100,10 +100,13 @@ If the request is successful, the [Catalog Service](../model/terminology.md#cata ### 3.2 Pagination -A [Catalog Service](../model/terminology.md#catalog-service) may paginate the results of a [Catalog Request Message](./catalog.protocol.md#21-catalog-request-message). Pagination data is specified using [Web Linking](https://datatracker.ietf.org/doc/html/rfc5988) and the HTTP `Link` header. The `Link` header will contain URLs for navigating to previous and subsequent results. The following request sequence demonstrates pagination: +A [Catalog Service](../model/terminology.md#catalog-service) may paginate the results of a [Catalog Request Message](./catalog.protocol.md#21-catalog-request-message). Pagination data must be specified using [Web Linking](https://datatracker.ietf.org/doc/html/rfc5988) and the HTTP `Link` header. The `Link` header will contain URLs for navigating to previous and subsequent results. Only the `next` and `previous` link relation types must be supported. +Note that the content and structure of the link query parameters is not defined by the current specification. + +The following request sequence demonstrates pagination: ```http request -Link: ; rel="next" +Link: ; rel="next" { "@context": "https://w3id.org/dspace/v0.8/context.json", @@ -115,8 +118,8 @@ Link: ; rel="next" Second page response: ```http request -Link: ; rel="previous" -Link: ; rel="next" +Link: ; rel="previous" +Link: ; rel="next" { "@type": "dcat:Catalog", @@ -127,7 +130,7 @@ Link: ; rel="next" Last page response: ```http request -Link: ; rel="previous" +Link: ; rel="previous" { "@type": "dcat:Catalog", diff --git a/catalog/catalog.protocol.md b/catalog/catalog.protocol.md index 14a8a55..3f42204 100644 --- a/catalog/catalog.protocol.md +++ b/catalog/catalog.protocol.md @@ -101,7 +101,7 @@ All messages must be serialized in JSON-LD compact form as specified in the [JSO The Catalog Request Message is message sent by a [Consumer](../model/terminology.md#consumer) to a [Catalog Service](../model/terminology.md#catalog-service). The [Catalog Service](../model/terminology.md#catalog-service) must respond with a [Catalog](#31-ack---catalog), which is a valid instance of a [DCAT Catalog](https://www.w3.org/TR/vocab-dcat-3/#Class:Catalog). -- The message may have a `filter` property which contains an implementation-specific query or filter expression type supported by the [Catalog Service](../model/terminology.md#catalog-service). +- The message may have a `filter` property which contains an implementation-specific query or filter expression type supported by the [Catalog Service](../model/terminology.md#catalog-service). - The [Catalog Service](../model/terminology.md#catalog-service) may require an authorization token. Details for including that token can be found in the protocol binding, e.g., [Catalog HTTPS Binding](./catalog.binding.https.md). Similarly, pagination may be defined in the protocol binding. @@ -184,4 +184,4 @@ When a [Catalog](../model/terminology.md#catalog) contains protected [Datasets]( ### 4.4 Catalog Brokers -A [Dataspace](../model/terminology.md#dataspace) may include Catalog Brokers. A Catalog Broker is a [Consumer](../model/terminology.md#consumer) that has trusted access to 1..N upstream [Catalog Services](../model/terminology.md#catalog-service) and advertises their respective [Catalogs](../model/terminology.md#catalog) as a single [Catalog Service](../model/terminology.md#catalog-service). The broker is expected to honor upstream access control requirements. \ No newline at end of file +A [Dataspace](../model/terminology.md#dataspace) may include Catalog Brokers. A Catalog Broker is a [Consumer](../model/terminology.md#consumer) that has trusted access to 1..N upstream [Catalog Services](../model/terminology.md#catalog-service) and advertises their respective [Catalogs](../model/terminology.md#catalog) as a single [Catalog Service](../model/terminology.md#catalog-service). The broker is expected to honor upstream access control requirements. From e6d5abd7cd7bb2531c9258d29a6046e059c0cf39 Mon Sep 17 00:00:00 2001 From: Jim Marino Date: Thu, 15 Feb 2024 10:10:12 +0100 Subject: [PATCH 2/2] Change continuation tokens --- catalog/catalog.binding.https.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/catalog/catalog.binding.https.md b/catalog/catalog.binding.https.md index 10fff79..e07d920 100644 --- a/catalog/catalog.binding.https.md +++ b/catalog/catalog.binding.https.md @@ -118,7 +118,7 @@ Link: ; rel="previous" +Link: ; rel="previous" Link: ; rel="next" { @@ -130,7 +130,7 @@ Link: ; rel="previous" +Link: ; rel="previous" { "@type": "dcat:Catalog",