Skip to content

Commit f441cc3

Browse files
authored
refactor: apply editorial changes (#202)
* docs: ensure consistent usage of abbreviations * docs: add minor changes * docs: align usage of "specification" as singular term * docs: align modal verbs * chore: apply change requests from review * chore: remove italics from keywords
1 parent e298b2d commit f441cc3

16 files changed

+307
-302
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Dataspace Protocol
22

3-
The __Dataspace Protocol__ is a set of specifications designed to facilitate interoperable data sharing between entities governed by usage control and based on Web technologies. These specifications define the schemas and protocols required for entities to publish data, negotiate [Agreements](https://eclipse-dataspace-protocol-base.github.io/DataspaceProtocol/#dfn-agreement), and access data as part of a federation of technical systems termed a [Dataspace](https://eclipse-dataspace-protocol-base.github.io/DataspaceProtocol/#dfn-dataspace).
3+
The __Dataspace Protocol__ is a specification designed to facilitate interoperable data sharing between entities governed by usage control and based on Web technologies. This specification defines the schemas and protocols required for entities to publish data, negotiate [Agreements](https://eclipse-dataspace-protocol-base.github.io/DataspaceProtocol/#dfn-agreement), and access data as part of a federation of technical systems termed a [Dataspace](https://eclipse-dataspace-protocol-base.github.io/DataspaceProtocol/#dfn-dataspace).
44

55
The web rendering of the Dataspace Protocol represents the current state on this repo's main branch: https://eclipse-dataspace-protocol-base.github.io/DataspaceProtocol/.
66

artifacts/buildSrc/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Introduction
22

3-
This directory contains the Schema Table Generator plugin. The plugin generates readable type information in HTML for Json
3+
This directory contains the Schema Table Generator plugin. The plugin generates readable type information in HTML for JSON
44
schema definitions found in the project source set.
55

66
For example:
@@ -56,7 +56,7 @@ the `aside` element in the appropriate Markdown file:
5656

5757
## Implementation notes
5858

59-
The Json Schema Object Model parser does not yet support all Json Schema features such `anyOf` or `oneOf`.
59+
The JSON Schema Object Model parser does not yet support all JSON Schema features such `anyOf` or `oneOf`.
6060

6161
# Build Setup
6262

index.html

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -70,8 +70,8 @@
7070
<h1 id="title">Dataspace Protocol 2025-1-RC3</h1>
7171
<section id='abstract'>
7272
<p>
73-
The Dataspace Protocol is a set of specifications designed to facilitate interoperable data sharing between
74-
entities governed by usage control and based on Web technologies. These specifications define the schemas and
73+
The Dataspace Protocol is a specification designed to facilitate interoperable data sharing between
74+
entities governed by usage control and based on Web technologies. This specification defines the schemas and
7575
protocols required for entities to publish data, negotiate Agreements, and access data as part of a federation
7676
of technical systems termed a Dataspace.
7777
</p>
@@ -80,8 +80,8 @@ <h1 id="title">Dataspace Protocol 2025-1-RC3</h1>
8080
<p>
8181
This version (2025-1) of the Dataspace Protocol specification is a release of the specification and considered to be
8282
stable. Further changes shall not affect conformity. All changes made to the specification can be reviewed in
83-
the GitHub repositories - up to and including `2024-1` under the governance of the <a href="https://github.com/International-Data-Spaces-Association/ids-specification">IDSA</a>
84-
and with the <a href="https://github.com/eclipse-dataspace-protocol-base/DataspaceProtocol">EDWG</a> ever since.
83+
the GitHub repositories - up to and including `2024-1` under the governance of the <a href="https://github.com/International-Data-Spaces-Association/ids-specification">International Data Spaces Association</a>
84+
and with the <a href="https://github.com/eclipse-dataspace-protocol-base/DataspaceProtocol">Eclipse Dataspace Working Group</a> ever since.
8585
</p>
8686
</section>
8787

specifications/catalog/catalog.binding.https.md

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,20 @@
11
# Catalog HTTPS Binding {#catalog-http}
22

3-
This specification defines a RESTful API over HTTPS for the [=Catalog Protocol=].
4-
53
## Introduction
64

5+
This binding defines a RESTful Application Programming Interface (API) over HTTPS for the [=Catalog Protocol=].
6+
77
### Prerequisites
88

99
1. The `<base>` notation indicates the base URL for a [=Catalog Service=] endpoint. For example, if the base [=Catalog=]
1010
URL is `api.example.com`, the URL `https://<base>/catalog/request` will map
1111
to `https//api.example.com/catalog/request`.
1212

13-
2. All request and response [=Messages=] must use the `application/json` media type.
13+
2. All request and response [=Messages=] MUST use the `application/json` media type.
1414

1515
### Catalog Error
1616

17-
In the event of a request error, the [=Catalog Service=] must return an appropriate HTTP code and
17+
In the event of a request error, the [=Catalog Service=] MUST return an appropriate HTTP code and
1818
a [Catalog Error](#error-catalog-error) in the response body.
1919

2020
## Path Bindings
@@ -41,13 +41,13 @@ Authorization: ...</pre>
4141
contents of the `Authorization` header are detailed in
4242
the [Authorization section](../common/common.binding.https.md#2-authorization).
4343

44-
- The `filter` property is optional. If present, the `filter` property can contain an implementation-specific filter
44+
- The `filter` property is optional. If present, the `filter` property MAY contain an implementation-specific filter
4545
expression or query to be executed as part of the [=Catalog=] request. If a filter expression is not supported by an
46-
implementation, it must return a HTTP 400 (Bad Request) response.
46+
implementation, it MUST return a HTTP 400 (Bad Request) response.
4747

4848
**Response**
4949

50-
If the request is successful, the [=Catalog Service=] must return an HTTP 200 (OK) with a response body containing
50+
If the request is successful, the [=Catalog Service=] MUST return an HTTP 200 (OK) with a response body containing
5151
a [Catalog](#ack-catalog).
5252

5353
<aside class="example" title="Catalog Response">
@@ -69,12 +69,11 @@ Authorization: ...</pre>
6969
</aside>
7070

7171
- The `Authorization` header is optional if the [=Catalog Service=] does not require authorization. If present, the
72-
contents of the `Authorization` header are detailed in
73-
the [[[#authorization]]].
72+
contents of the `Authorization` header are detailed in the [[[#authorization]]].
7473

7574
**Response**
7675

77-
If the request is successful, the [=Catalog Service=] must return an HTTP 200 (OK) with a response body containing
76+
If the request is successful, the [=Catalog Service=] MUST return an HTTP 200 (OK) with a response body containing
7877
a [Dataset](#ack-dataset).
7978

8079
<aside class="example" title="Dataset Response">
@@ -87,9 +86,9 @@ a [Dataset](#ack-dataset).
8786
### Pagination
8887

8988
A [=Catalog Service=] may paginate the results of a [Catalog Request Message](#catalog-request-message). Pagination data
90-
must be specified using [Web Linking](https://datatracker.ietf.org/doc/html/rfc5988) and the HTTP `Link` header.
89+
MUST be specified using [Web Linking](https://datatracker.ietf.org/doc/html/rfc5988) and the HTTP `Link` header.
9190
The `Link` header will contain URLs for navigating to previous and subsequent results. Only the `next` and `previous`
92-
link relation types must be supported.
91+
link relation types MUST be supported.
9392
Note that the content and structure of the link query parameters is not defined by the current specification.
9493

9594
The following request sequence demonstrates pagination:
@@ -129,7 +128,7 @@ Link: <https://provider.com/catalog?continuationToken=bn9556075bn44de8ab4bfc9014
129128

130129
### Compression
131130

132-
[=Catalog Services=] MAY compress responses to
131+
[=Catalog Services=] may compress responses to
133132
a [Catalog Request](#catalog-request-message) by setting the `Content-Encoding` header to `gzip` as described in
134133
the [HTTP 1.1 Specification](https://www.rfc-editor.org/rfc/rfc9110.html#name-gzip-coding).
135134

Lines changed: 40 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,13 @@
11
# Catalog Protocol {#catalog-protocol}
22

3-
This document outlines the [=Catalog Protocol=]. The used terms are described in section [[[#terminology]]].
4-
53
## Introduction
64

75
The [=Catalog Protocol=] defines how a [=Catalog=] is requested from a [=Catalog Service=] by a [=Consumer=] using an
8-
abstract [=Message=] exchange format. The concrete [=Message=] exchange wire format is defined in the binding specifications.
6+
abstract [=Message=] exchange format. The concrete [=Message=] exchange wire format is defined in the binding.
97

108
The [=Catalog Protocol=] reuses properties from the DCAT and ODRL vocabularies with restrictions defined in this
11-
specification. This is done implicitly by the use of the JSON schemas and JSON-LD-contexts that are part of the DSP.
12-
Servers have no obligation to process properties that are not part of the schemas.
9+
specification. This is done implicitly by the use of the JSON schemas and JSON-LD-contexts that are part of the [=Dataspace Protocol=].
10+
Servers MAY process properties that are not part of the schemas.
1311

1412
## Message Types
1513

@@ -24,16 +22,15 @@ Servers have no obligation to process properties that are not part of the schema
2422
| **Example** | [Message](message/example/catalog-request-message.json) |
2523
| **Properties** | <p data-include="message/table/catalogrequestmessage.html" data-include-format="html"></p> |
2624

27-
The Catalog Request Message is message sent by a [=Consumer=] to
28-
a [=Catalog Service=].
29-
The [=Catalog Service=] must respond with a [Catalog](#ack-catalog) that adheres to the schema linked above.
25+
The Catalog Request Message is sent by a [=Consumer=] to a [=Catalog Service=].
26+
The [=Catalog Service=] MUST respond with a [Catalog](#ack-catalog) that adheres to the schema linked above.
3027

31-
- The message may have a `filter` property which contains an implementation-specific query or filter expression type
28+
- The message MAY have a `filter` property which contains an implementation-specific query or filter expression type
3229
supported by the [=Catalog Service=].
3330

34-
- The [=Catalog Service=] may require an authorization token. Details for
31+
- The [=Catalog Service=] MAY require an authorization token. Details for
3532
including that token can be found in the protocol binding, e.g., [Catalog HTTPS Binding](#catalog-https-binding).
36-
Similarly, pagination may be defined in the protocol binding.
33+
Similarly, pagination MAY be defined in the protocol binding.
3734

3835
### Dataset Request Message
3936

@@ -46,18 +43,17 @@ The [=Catalog Service=] must respond with a [Catalog](#ack-catalog) that adheres
4643
| **Example** | [Message](message/example/dataset-request-message.json) |
4744
| **Properties** | <p data-include="message/table/datasetrequestmessage.html" data-include-format="html"></p> |
4845

49-
The Dataset Request Message is message sent by a [=Consumer=] to
50-
a [=Catalog Service=].
51-
The [=Catalog Service=] must respond with a [Dataset](#ack-dataset) that adheres to the schema linked above.
46+
The Dataset Request Message is sent by a [=Consumer=] to a [=Catalog Service=].
47+
The [=Catalog Service=] MUST respond with a [Dataset](#ack-dataset) that adheres to the schema linked above.
5248

53-
- The message must have a `dataset` property which contains the id of the [=Dataset=].
49+
- The message MUST have a `dataset` property which contains the identifier of the [=Dataset=].
5450

55-
- The [=Catalog Service=] may require an authorization token. Details for
51+
- The [=Catalog Service=] MAY require an authorization token. Details for
5652
including that token can be found in the protocol binding, e.g., [Catalog HTTPS Binding](#catalog-https-binding).
5753

5854
## Response Types
5955

60-
The `ACK` and `ERROR` response types are mapped onto a protocol such as HTTPS. A description of an error might be
56+
The `ACK` and `ERROR` response types are mapped onto a protocol such as HTTPS. A description of an error MAY be
6157
provided in protocol-dependent forms, e.g., for an HTTPS binding in the request or response body.
6258

6359
### ACK - Catalog
@@ -69,8 +65,9 @@ provided in protocol-dependent forms, e.g., for an HTTPS binding in the request
6965
| **Example** | [Catalog Example](message/example/catalog.json) |
7066
| **Properties** | <p data-include="message/table/rootcatalog.html" data-include-format="html"></p> |
7167

72-
* A [=Catalog=] _MUST_ have zero to many [=Datasets=]. (_NOTE: Since a Catalog may be dynamically generated for a request based on the requesting [=Participant=]'s credentials, it is possible for it to contain 0 matching [=Datasets=]._)
73-
* A [=Catalog=] _MUST_ have one to many [=Data Services=] that reference a [=Connector=] where [=Datasets=] may be obtained.
68+
- A [=Catalog=] MUST have zero to many [=Datasets=]. (_NOTE: Since a Catalog may be dynamically generated for a request based on the requesting [=Participant=]'s credentials, it is possible for it to contain 0 matching [=Datasets=]._)
69+
70+
- A [=Catalog=] MUST have one to many [=Data Services=] that reference a [=Connector=] where [=Datasets=] MAY be obtained.
7471

7572
### ACK - Dataset
7673

@@ -81,18 +78,23 @@ provided in protocol-dependent forms, e.g., for an HTTPS binding in the request
8178
| **Example** | [Dataset Example](message/example/dataset.json) |
8279
| **Properties** | <p data-include="message/table/dataset.html" data-include-format="html"></p> |
8380

84-
* A [=Dataset=] _MUST_ have at least one `hasPolicy` attribute that contain an [=Offer=] defining the [=Policy=] associated with the [=Dataset=].
85-
* A [=Dataset=] _MUST_ hold at least one `Distribution` object in the `distribution` attribute.
86-
* Each `DataService` object _MUST HAVE_ at least one `DataService` which specifies where the distribution is obtained.
81+
- A [=Dataset=] MUST have at least one `hasPolicy` attribute that contains an [=Offer=] defining the [=Policy=] associated with the [=Dataset=].
82+
83+
- A [=Dataset=] MUST hold at least one `Distribution` object in the `distribution` attribute.
84+
85+
- Each `DataService` object MUST have at least one `DataService` which specifies where the distribution is obtained.
8786
Specifically, a `DataService` specifies the endpoint for initiating a [=Contract Negotiation=] and [=Transfer Process=].
88-
* A `DataService.endpointURL` property contains the URL of the service the Contract Negotiation endpoints extend. The
89-
endpoint's DSP version MUST be consistent with the version the `Catalog` object was served through.
87+
88+
- A `DataService.endpointURL` property contains the URL of the service the [=Contract Negotiation=] endpoints extend. The
89+
endpoint's [=Dataspace Protocol=] version MUST be consistent with the version the `Catalog` object was served through.
9090

9191
An [=Offer=] contains the following attributes:
9292

93-
* An [=Offer=] _MUST_ have an `@id` that is a unique identifier.
94-
* An [=Offer=] _MUST_ be unique to a [=Dataset=] since the target of the [=Offer=] is derived from its enclosing context.
95-
* [=Offers=] _MUST NOT_ contain any `target` attributes. The value of the `target` attribute _MUST_ be the [=Dataset=] ID. (_Note: If the [=Offer=] is used in an enclosing [=Catalog=] or [=Dataset=], there must not be any `target` attribute set._)
93+
- An [=Offer=] MUST have an `@id` that is a unique identifier.
94+
95+
- An [=Offer=] MUST be unique to a [=Dataset=] since the target of the [=Offer=] is derived from its enclosing context.
96+
97+
- [=Offers=] MAY contain any `target` attributes. The value of the `target` attribute MUST be the [=Dataset=] identifier. (_NOTE: If the [=Offer=] is used in an enclosing [=Catalog=] or [=Dataset=], there must not be any `target` attribute set._)
9698

9799
### ERROR - Catalog Error
98100

@@ -104,17 +106,15 @@ An [=Offer=] contains the following attributes:
104106
| **Properties** | <p data-include="message/table/catalogerror.html" data-include-format="html"></p> |
105107

106108
A Catalog Error is used when an error occurred after a [Catalog Request Message](#catalog-request-message) or
107-
a [Dataset Request Message](#dataset-request-message) and the [=Provider=] cannot
108-
provide its [=Catalog=] to the requester.
109+
a [Dataset Request Message](#dataset-request-message) and the [=Provider=] cannot provide its [=Catalog=] to the requester.
109110

110111
## Technical Considerations
111112

112113
### Queries and Filter Expressions
113114

114115
A [=Catalog Service=] may support [=Catalog=] queries or filter expressions as an
115-
implementation-specific feature. However, it is expected that query capabilities will be implemented by
116-
the [=Consumer=] against the results of
117-
a [Catalog Request Message](#catalog-request-message), as the latter is an RDF vocabulary. Client-side querying can
116+
implementation-specific feature. However, query capabilities by the [=Consumer=] MUST be implemented
117+
against the results of a [Catalog Request Message](#catalog-request-message). Client-side querying can
118118
be scaled by periodically crawling
119119
the [=Provider=]'s [=Catalog Services=], caching
120120
the results, and executing queries against the locally-stored [=Catalogs=].
@@ -132,24 +132,23 @@ a [=Consumer=] discovers [=Catalog Services=].
132132

133133
### Security
134134

135-
It is expected (although not required) that [=Catalog Services=] implement access
136-
control. A [=Catalog=] as well as individual [=Datasets=] may be restricted to trusted
137-
parties. The [=Catalog Service=] may
135+
[=Catalog Services=] SHOULD implement access control.
136+
A [=Catalog=] as well as individual [=Datasets=] may be restricted to trusted
137+
parties. Therefore, the [=Catalog Service=] MAY
138138
require [=Consumers=] to include a security token along with
139139
a [Catalog Request Message](#catalog-request-message). The specifics of how this is done can be found in the relevant
140140
protocol binding, e.g., [Catalog HTTPS Binding](#catalog-https-binding). The semantics of such tokens are not part
141141
of this specification.
142142

143143
#### The Proof Metadata Endpoint
144144

145-
When a [=Catalog=] contains protected [=Datasets=]
146-
the [=Provider=] has two options: include
147-
all [=Datasets=] in the [=Catalog=] response and restrict access when a contract is
145+
If a [=Catalog=] contains protected [=Datasets=], the [=Provider=] has two options: include
146+
all [=Datasets=] in the [=Catalog=] response and restrict access when a [=Policy=] is
148147
negotiated; or, require one or more proofs when the [Catalog Request](#catalog-request-message) is made and filter
149148
the [=Datasets=] accordingly. The latter option requires a mechanism for clients to
150149
discover the type of proofs that may be presented at request time. The specifics of proof types and presenting a proof
151150
during a [=Catalog=] request is outside the scope of the [=Dataspace Protocol=].
152-
However, [=Catalog Protocol=] bindings should define a proof data endpoint for
151+
However, [=Catalog Protocol=] bindings SHOULD define a proof data endpoint for
153152
obtaining this information.
154153

155154
### Catalog Brokers
@@ -158,5 +157,5 @@ A [=Dataspace=] may include Catalog Brokers. A Catalog Broker is
158157
a [=Consumer=] that has trusted access to 1..N
159158
upstream [=Catalog Services=] and advertises their
160159
respective [=Catalogs=] as a
161-
single [=Catalog Service=]. The broker is expected to honor upstream access
162-
control requirements.
160+
single [=Catalog Service=]. The Catalog Broker SHOULD honor upstream access
161+
control requirements ([=Policies=]).

0 commit comments

Comments
 (0)