From 1f99bb5ec6f432dcd790715ed9f10e9a2f9bcf5b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Arno=20Wei=C3=9F?= <86715435+arnoweiss@users.noreply.github.com> Date: Mon, 2 Dec 2024 16:01:37 +0100 Subject: [PATCH] Create specification folder (#75) * chore: remove placeholder * chore: correct reference definitions * chore: create specifications folder * chore: adjust links, readd diagrams * chore: bring releases back to top level --- .github/workflows/autopublish.yaml | 8 +-- .github/workflows/script.sh | 17 ++++++ .gitignore | 2 - README.md | 6 +- foreword.md | 22 -------- index.html | 28 +++++----- introduction.md | 19 ------- normative.references.md | 17 ------ resources/list_common.md | 8 --- resources/list_figures.md | 52 ------------------ resources/list_messages.md | 30 ---------- resources/list_schemes.md | 30 ---------- scope.md | 30 ---------- .../catalog}/catalog.binding.https.md | 0 .../catalog}/catalog.protocol.md | 30 +++++----- .../message/diagram/catalog-error.png | Bin .../message/diagram/catalog-error.puml | 0 .../diagram/catalog-request-message.png | Bin .../diagram/catalog-request-message.puml | 0 .../catalog}/message/diagram/catalog.png | Bin .../catalog}/message/diagram/catalog.puml | 0 .../diagram/dataset-request-message.png | Bin .../diagram/dataset-request-message.puml | 0 .../catalog}/message/diagram/dataset.png | Bin .../catalog}/message/diagram/dataset.puml | 0 .../message/example/catalog-error.json | 0 .../example/catalog-request-message.json | 0 .../catalog}/message/example/catalog.json | 0 .../example/dataset-request-message.json | 0 .../catalog}/message/example/dataset.json | 0 .../message/schema/catalog-error-schema.json | 0 .../catalog-request-message-schema.json | 0 .../message/schema/catalog-schema.json | 0 .../dataset-request-message-schema.json | 0 .../message/schema/dataset-schema.json | 0 .../common}/common.binding.https.md | 0 .../common}/common.protocol.md | 0 specifications/common/foreword.md | 29 ++++++++++ specifications/common/introduction.md | 32 +++++++++++ specifications/common/normative.references.md | 7 +++ .../common}/schema/context.json | 0 .../common}/schema/definitions.schema.json | 0 .../common}/schema/version-schema.json | 0 specifications/common/scope.md | 30 ++++++++++ .../common}/style/diagram.styles.puml | 0 .../figures}/m.dataspace.relationships.png | Bin .../figures}/m.dataspace.relationships.puml | 0 .../figures}/m.participant.entities.drawio | 0 .../model/figures}/m.participant.entities.png | Bin {model => specifications/model}/model.md | 6 +- .../model}/terminology.md | 0 .../contract.negotiation.binding.https.md | 0 .../contract.negotiation.protocol.md | 50 ++++++++--------- .../contract.negotiation.state.machine.png | Bin .../contract.negotiation.state.machine.puml | 0 .../diagram/contract-agreement-message.png | Bin .../diagram/contract-agreement-message.puml | 0 ...ontract-agreement-verification-message.png | Bin ...ntract-agreement-verification-message.puml | 0 .../diagram/contract-negotiation-error.png | Bin .../diagram/contract-negotiation-error.puml | 0 .../contract-negotiation-event-message.png | Bin .../contract-negotiation-event-message.puml | 0 ...ntract-negotiation-termination-message.png | Bin ...tract-negotiation-termination-message.puml | 0 .../message/diagram/contract-negotiation.png | Bin .../message/diagram/contract-negotiation.puml | 0 .../diagram/contract-offer-message.png | Bin .../diagram/contract-offer-message.puml | 0 .../contract-offer-message_initial.png | Bin .../contract-offer-message_initial.puml | 0 .../diagram/contract-request-message.png | Bin .../diagram/contract-request-message.puml | 0 .../contract-request-message_initial.png | Bin .../contract-request-message_initial.puml | 0 .../example/contract-agreement-message.json | 0 ...ntract-agreement-verification-message.json | 0 .../example/contract-negotiation-error.json | 0 .../contract-negotiation-event-message.json | 0 ...tract-negotiation-termination-message.json | 0 .../message/example/contract-negotiation.json | 0 .../example/contract-offer-message.json | 0 .../contract-offer-message_initial.json | 0 .../example/contract-request-message.json | 0 .../contract-request-message_initial.json | 0 ...tract.agreement.message.http.transfer.json | 0 .../contract-agreement-message-schema.json | 0 ...agreement-verification-message-schema.json | 0 .../contract-negotiation-error-schema.json | 0 ...ract-negotiation-event-message-schema.json | 0 .../schema/contract-negotiation-schema.json | 0 ...egotiation-termination-message-schema.json | 0 .../schema/contract-offer-message-schema.json | 0 .../contract-request-message-schema.json | 0 .../message/schema/contract-schema.json | 0 .../resources}/figures/ProtocolOverview.png | Bin specifications/resources/list_common.md | 8 +++ specifications/resources/list_figures.md | 52 ++++++++++++++++++ specifications/resources/list_messages.md | 30 ++++++++++ specifications/resources/list_schemes.md | 30 ++++++++++ .../figures/pull-transfer-process.png | Bin .../figures/pull-transfer-process.puml | 0 .../figures/push-transfer-process.png | Bin .../figures/push-transfer-process.puml | 0 .../transfer-process-state-machine.png | Bin .../transfer-process-state-machine.puml | 0 .../diagram/transfer-completion-message.png | Bin .../diagram/transfer-completion-message.puml | 0 .../message/diagram/transfer-error.png | Bin .../message/diagram/transfer-error.puml | 0 .../message/diagram/transfer-process.png | Bin .../message/diagram/transfer-process.puml | 0 .../diagram/transfer-request-message.png | Bin .../diagram/transfer-request-message.puml | 0 .../diagram/transfer-start-message.png | Bin .../diagram/transfer-start-message.puml | 0 .../diagram/transfer-suspension-message.png | Bin .../diagram/transfer-suspension-message.puml | 0 .../diagram/transfer-termination-message.png | Bin .../diagram/transfer-termination-message.puml | 0 .../example/transfer-completion-message.json | 0 .../message/example/transfer-error.json | 0 .../message/example/transfer-process.json | 0 .../example/transfer-request-message.json | 0 .../example/transfer-start-message.json | 0 .../example/transfer-suspension-message.json | 0 .../example/transfer-termination-message.json | 0 .../transfer-completion-message-schema.json | 0 .../message/schema/transfer-error-schema.json | 0 .../schema/transfer-process-schema.json | 0 .../transfer-request-message-schema.json | 0 .../schema/transfer-start-message-schema.json | 0 .../transfer-suspension-message-schema.json | 0 .../transfer-termination-message-schema.json | 0 .../transfer.process.binding.https.md | 0 .../transfer}/transfer.process.protocol.md | 48 ++++++++-------- 136 files changed, 321 insertions(+), 300 deletions(-) create mode 100644 .github/workflows/script.sh delete mode 100644 foreword.md delete mode 100644 introduction.md delete mode 100644 normative.references.md delete mode 100644 resources/list_common.md delete mode 100644 resources/list_figures.md delete mode 100644 resources/list_messages.md delete mode 100644 resources/list_schemes.md delete mode 100644 scope.md rename {catalog => specifications/catalog}/catalog.binding.https.md (100%) rename {catalog => specifications/catalog}/catalog.protocol.md (89%) rename {catalog => specifications/catalog}/message/diagram/catalog-error.png (100%) rename {catalog => specifications/catalog}/message/diagram/catalog-error.puml (100%) rename {catalog => specifications/catalog}/message/diagram/catalog-request-message.png (100%) rename {catalog => specifications/catalog}/message/diagram/catalog-request-message.puml (100%) rename {catalog => specifications/catalog}/message/diagram/catalog.png (100%) rename {catalog => specifications/catalog}/message/diagram/catalog.puml (100%) rename {catalog => specifications/catalog}/message/diagram/dataset-request-message.png (100%) rename {catalog => specifications/catalog}/message/diagram/dataset-request-message.puml (100%) rename {catalog => specifications/catalog}/message/diagram/dataset.png (100%) rename {catalog => specifications/catalog}/message/diagram/dataset.puml (100%) rename {catalog => specifications/catalog}/message/example/catalog-error.json (100%) rename {catalog => specifications/catalog}/message/example/catalog-request-message.json (100%) rename {catalog => specifications/catalog}/message/example/catalog.json (100%) rename {catalog => specifications/catalog}/message/example/dataset-request-message.json (100%) rename {catalog => specifications/catalog}/message/example/dataset.json (100%) rename {catalog => specifications/catalog}/message/schema/catalog-error-schema.json (100%) rename {catalog => specifications/catalog}/message/schema/catalog-request-message-schema.json (100%) rename {catalog => specifications/catalog}/message/schema/catalog-schema.json (100%) rename {catalog => specifications/catalog}/message/schema/dataset-request-message-schema.json (100%) rename {catalog => specifications/catalog}/message/schema/dataset-schema.json (100%) rename {common => specifications/common}/common.binding.https.md (100%) rename {common => specifications/common}/common.protocol.md (100%) create mode 100644 specifications/common/foreword.md create mode 100644 specifications/common/introduction.md create mode 100644 specifications/common/normative.references.md rename {common => specifications/common}/schema/context.json (100%) rename {common => specifications/common}/schema/definitions.schema.json (100%) rename {common => specifications/common}/schema/version-schema.json (100%) create mode 100644 specifications/common/scope.md rename {common => specifications/common}/style/diagram.styles.puml (100%) rename {model => specifications/model/figures}/m.dataspace.relationships.png (100%) rename {model => specifications/model/figures}/m.dataspace.relationships.puml (100%) rename {model => specifications/model/figures}/m.participant.entities.drawio (100%) rename {model => specifications/model/figures}/m.participant.entities.png (100%) rename {model => specifications/model}/model.md (96%) rename {model => specifications/model}/terminology.md (100%) rename {negotiation => specifications/negotiation}/contract.negotiation.binding.https.md (100%) rename {negotiation => specifications/negotiation}/contract.negotiation.protocol.md (82%) rename {negotiation => specifications/negotiation}/figures/contract.negotiation.state.machine.png (100%) rename {negotiation => specifications/negotiation}/figures/contract.negotiation.state.machine.puml (100%) rename {negotiation => specifications/negotiation}/message/diagram/contract-agreement-message.png (100%) rename {negotiation => specifications/negotiation}/message/diagram/contract-agreement-message.puml (100%) rename {negotiation => specifications/negotiation}/message/diagram/contract-agreement-verification-message.png (100%) rename {negotiation => specifications/negotiation}/message/diagram/contract-agreement-verification-message.puml (100%) rename {negotiation => specifications/negotiation}/message/diagram/contract-negotiation-error.png (100%) rename {negotiation => specifications/negotiation}/message/diagram/contract-negotiation-error.puml (100%) rename {negotiation => specifications/negotiation}/message/diagram/contract-negotiation-event-message.png (100%) rename {negotiation => specifications/negotiation}/message/diagram/contract-negotiation-event-message.puml (100%) rename {negotiation => specifications/negotiation}/message/diagram/contract-negotiation-termination-message.png (100%) rename {negotiation => specifications/negotiation}/message/diagram/contract-negotiation-termination-message.puml (100%) rename {negotiation => specifications/negotiation}/message/diagram/contract-negotiation.png (100%) rename {negotiation => specifications/negotiation}/message/diagram/contract-negotiation.puml (100%) rename {negotiation => specifications/negotiation}/message/diagram/contract-offer-message.png (100%) rename {negotiation => specifications/negotiation}/message/diagram/contract-offer-message.puml (100%) rename {negotiation => specifications/negotiation}/message/diagram/contract-offer-message_initial.png (100%) rename {negotiation => specifications/negotiation}/message/diagram/contract-offer-message_initial.puml (100%) rename {negotiation => specifications/negotiation}/message/diagram/contract-request-message.png (100%) rename {negotiation => specifications/negotiation}/message/diagram/contract-request-message.puml (100%) rename {negotiation => specifications/negotiation}/message/diagram/contract-request-message_initial.png (100%) rename {negotiation => specifications/negotiation}/message/diagram/contract-request-message_initial.puml (100%) rename {negotiation => specifications/negotiation}/message/example/contract-agreement-message.json (100%) rename {negotiation => specifications/negotiation}/message/example/contract-agreement-verification-message.json (100%) rename {negotiation => specifications/negotiation}/message/example/contract-negotiation-error.json (100%) rename {negotiation => specifications/negotiation}/message/example/contract-negotiation-event-message.json (100%) rename {negotiation => specifications/negotiation}/message/example/contract-negotiation-termination-message.json (100%) rename {negotiation => specifications/negotiation}/message/example/contract-negotiation.json (100%) rename {negotiation => specifications/negotiation}/message/example/contract-offer-message.json (100%) rename {negotiation => specifications/negotiation}/message/example/contract-offer-message_initial.json (100%) rename {negotiation => specifications/negotiation}/message/example/contract-request-message.json (100%) rename {negotiation => specifications/negotiation}/message/example/contract-request-message_initial.json (100%) rename {negotiation => specifications/negotiation}/message/example/contract.agreement.message.http.transfer.json (100%) rename {negotiation => specifications/negotiation}/message/schema/contract-agreement-message-schema.json (100%) rename {negotiation => specifications/negotiation}/message/schema/contract-agreement-verification-message-schema.json (100%) rename {negotiation => specifications/negotiation}/message/schema/contract-negotiation-error-schema.json (100%) rename {negotiation => specifications/negotiation}/message/schema/contract-negotiation-event-message-schema.json (100%) rename {negotiation => specifications/negotiation}/message/schema/contract-negotiation-schema.json (100%) rename {negotiation => specifications/negotiation}/message/schema/contract-negotiation-termination-message-schema.json (100%) rename {negotiation => specifications/negotiation}/message/schema/contract-offer-message-schema.json (100%) rename {negotiation => specifications/negotiation}/message/schema/contract-request-message-schema.json (100%) rename {negotiation => specifications/negotiation}/message/schema/contract-schema.json (100%) rename {resources => specifications/resources}/figures/ProtocolOverview.png (100%) create mode 100644 specifications/resources/list_common.md create mode 100644 specifications/resources/list_figures.md create mode 100644 specifications/resources/list_messages.md create mode 100644 specifications/resources/list_schemes.md rename {transfer => specifications/transfer}/figures/pull-transfer-process.png (100%) rename {transfer => specifications/transfer}/figures/pull-transfer-process.puml (100%) rename {transfer => specifications/transfer}/figures/push-transfer-process.png (100%) rename {transfer => specifications/transfer}/figures/push-transfer-process.puml (100%) rename {transfer => specifications/transfer}/figures/transfer-process-state-machine.png (100%) rename {transfer => specifications/transfer}/figures/transfer-process-state-machine.puml (100%) rename {transfer => specifications/transfer}/message/diagram/transfer-completion-message.png (100%) rename {transfer => specifications/transfer}/message/diagram/transfer-completion-message.puml (100%) rename {transfer => specifications/transfer}/message/diagram/transfer-error.png (100%) rename {transfer => specifications/transfer}/message/diagram/transfer-error.puml (100%) rename {transfer => specifications/transfer}/message/diagram/transfer-process.png (100%) rename {transfer => specifications/transfer}/message/diagram/transfer-process.puml (100%) rename {transfer => specifications/transfer}/message/diagram/transfer-request-message.png (100%) rename {transfer => specifications/transfer}/message/diagram/transfer-request-message.puml (100%) rename {transfer => specifications/transfer}/message/diagram/transfer-start-message.png (100%) rename {transfer => specifications/transfer}/message/diagram/transfer-start-message.puml (100%) rename {transfer => specifications/transfer}/message/diagram/transfer-suspension-message.png (100%) rename {transfer => specifications/transfer}/message/diagram/transfer-suspension-message.puml (100%) rename {transfer => specifications/transfer}/message/diagram/transfer-termination-message.png (100%) rename {transfer => specifications/transfer}/message/diagram/transfer-termination-message.puml (100%) rename {transfer => specifications/transfer}/message/example/transfer-completion-message.json (100%) rename {transfer => specifications/transfer}/message/example/transfer-error.json (100%) rename {transfer => specifications/transfer}/message/example/transfer-process.json (100%) rename {transfer => specifications/transfer}/message/example/transfer-request-message.json (100%) rename {transfer => specifications/transfer}/message/example/transfer-start-message.json (100%) rename {transfer => specifications/transfer}/message/example/transfer-suspension-message.json (100%) rename {transfer => specifications/transfer}/message/example/transfer-termination-message.json (100%) rename {transfer => specifications/transfer}/message/schema/transfer-completion-message-schema.json (100%) rename {transfer => specifications/transfer}/message/schema/transfer-error-schema.json (100%) rename {transfer => specifications/transfer}/message/schema/transfer-process-schema.json (100%) rename {transfer => specifications/transfer}/message/schema/transfer-request-message-schema.json (100%) rename {transfer => specifications/transfer}/message/schema/transfer-start-message-schema.json (100%) rename {transfer => specifications/transfer}/message/schema/transfer-suspension-message-schema.json (100%) rename {transfer => specifications/transfer}/message/schema/transfer-termination-message-schema.json (100%) rename {transfer => specifications/transfer}/transfer.process.binding.https.md (100%) rename {transfer => specifications/transfer}/transfer.process.protocol.md (84%) diff --git a/.github/workflows/autopublish.yaml b/.github/workflows/autopublish.yaml index bec4fdc..0a04aa2 100644 --- a/.github/workflows/autopublish.yaml +++ b/.github/workflows/autopublish.yaml @@ -18,12 +18,8 @@ jobs: node-version: 22.x - name: Copy files for correct web access run: | - mkdir ./message - mkdir ./figures - cp ./**/message/* -R ./message/ - cp ./**/figures/*.png ./figures/ - cp ./model/*.png . - cp ./releases/* . -r + chmod +x ./.github/workflows/script.sh + ./.github/workflows/script.sh - name: Run Respec run: sudo npx puppeteer browsers install chrome diff --git a/.github/workflows/script.sh b/.github/workflows/script.sh new file mode 100644 index 0000000..1427db3 --- /dev/null +++ b/.github/workflows/script.sh @@ -0,0 +1,17 @@ +#!/bin/bash +mkdir -p ./message/schema +mkdir -p ./message/example +mkdir -p ./message/diagram +mkdir ./figures +cp ./artifacts/src/main/resources/**/* ./message/schema || true +echo "successfully copied message schemas" +cp -R "./artifacts/src/main/resources"/**/"example"/* ./message/example +echo "successfully copied message examples" +cp -R "./specifications"/**/"message/diagram"/*".png" message/diagram +echo "successfully copied message diagrams" +cp -R "./specifications"/**/"figures"/*".png" ./figures/ +echo "successfully copied figures" +cp -R "./releases"/** . +echo "successfully copied releases" +#rm -rf artifacts +#echo "successfully removed artifacts" \ No newline at end of file diff --git a/.gitignore b/.gitignore index 875d871..15e88fa 100644 --- a/.gitignore +++ b/.gitignore @@ -7,8 +7,6 @@ *.zip *.tar.gz *.rar -# only top level images -*.png .idea *.iml diff --git a/README.md b/README.md index a15c38c..c822215 100644 --- a/README.md +++ b/README.md @@ -13,11 +13,11 @@ This version ([2024-1](https://github.com/International-Data-Spaces-Association/ ## Abstract -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](./model/terminology.md#agreement), and access data as part of a federation of technical systems termed a [Dataspace](./model/terminology.md#dataspace). +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](specifications/model/terminology.md#agreement), and access data as part of a federation of technical systems termed a [Dataspace](specifications/model/terminology.md#dataspace). -* [Introduction to the Dataspace Protocol](./introduction.md) -* [Scope of the Dataspace Protocol](./scope.md) +* [Introduction to the Dataspace Protocol](specifications/common/introduction.md) +* [Scope of the Dataspace Protocol](specifications/common/scope.md) ## Introduction diff --git a/foreword.md b/foreword.md deleted file mode 100644 index bbb7cea..0000000 --- a/foreword.md +++ /dev/null @@ -1,22 +0,0 @@ -# Foreword - -ISO (the International Organization for Standardization) is a worldwide federation of national standards bodies (ISO member bodies). The work of preparing International Standards is normally carried out through ISO technical committees. Each member body interested in a subject for which a technical committee has been established has the right to be represented on that committee. International organizations, governmental and non-governmental, in liaison with ISO, also take part in the work. ISO collaborates closely with the International Electrotechnical Commission (IEC) on all matters of electrotechnical standardization. - -The procedures used to develop this document and those intended for its further maintenance are described in the ISO/IEC Directives, Part 1. In particular, the different approval criteria needed for the different types of ISO documents should be noted. This document was drafted in accordance with the editorial rules of the ISO/IEC Directives, Part 2 (see [www.iso.org/directives](www.iso.org/directives)). - -ISO draws attention to the possibility that the implementation of this document may involve the use of (a) patent(s). ISO takes no position concerning the evidence, validity or applicability of any claimed patent rights in respect thereof. As of the date of publication of this document, ISO **[had/had not]** received notice of (a) patent(s) which may be required to implement this document. However, implementers are cautioned that this may not represent the latest information, which may be obtained from the patent database available at [www.iso.org/patents](www.iso.org/patents). ISO shall not be held responsible for identifying any or all such patent rights. - -Any trade name used in this document is information given for the convenience of users and does not constitute an endorsement. -For an explanation of the voluntary nature of standards, the meaning of ISO specific terms and expressions related to conformity assessment, as well as information about ISO's adherence to the World Trade Organization (WTO) principles in the Technical Barriers to Trade (TBT), see [www.iso.org/iso/foreword.html](www.iso.org/iso/foreword.html). - -**This document was prepared by Technical Committee [or Project Committee] ISO/TC [or ISO/PC] ###, [name of committee], Subcommittee SC ##, [name of subcommittee].** - -**This second/third/… edition cancels and replaces the first/second/… edition (ISO #####:####), which has been technically revised.** - -**The main changes are as follows:** - -**— xxx xxxxxxx xxx xxxx** - -A list of all parts in the **ISO #####** series can be found on the ISO website. - -Any feedback or questions on this document should be directed to the user’s national standards body. A complete listing of these bodies can be found at [www.iso.org/members.html](www.iso.org/members.html). diff --git a/index.html b/index.html index 32e5bec..73cf4f0 100644 --- a/index.html +++ b/index.html @@ -49,46 +49,46 @@

Dataspace Protocol

-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
diff --git a/introduction.md b/introduction.md deleted file mode 100644 index bbd8be0..0000000 --- a/introduction.md +++ /dev/null @@ -1,19 +0,0 @@ -# Introduction - -The __Dataspace Protocol__ is used in the context of [Dataspaces](./model/terminology.md#dataspace) as described and defined in the subsequent sections with the purpose to support interoperability. -In this context, the specification provides fundamental technical interoperability for [Participants](./model/terminology.md#participant) in [Dataspaces](./model/terminology.md#dataspace). -Beyond the technical interoperability measures described in this specification, semantic interoperability should also be addressed by the [Participants](./model/terminology.md#participant). On the perspective of the [Dataspace](./model/terminology.md#dataspace), interoperability needs to be addressed also on the level of trust, on organizational levels, and on legal levels. -The aspect of cross-dataspace communication is not subject of this document, as this is addressed by the [Dataspaces'](./model/terminology.md#dataspace) organizational and legal agreements. - -The interaction of [Participants](./model/terminology.md#participant) in a [Dataspace](./model/terminology.md#dataspace) is conducted by the [Participant Agents](./model/terminology.md#participant-agent), so-called [Connectors](./model/terminology.md#connector--data-service-), which implement the protocols described above. -While most interactions take place between [Connectors](./model/terminology.md#connector--data-service-), some interactions with other systems are required. -The figure below provides an overview on the context of this specification. - -An [Identity Provider](./model/terminology.md#identity-provider) realizes the required interfaces and provides required information to implement the Trust Framework of a [Dataspace](./model/terminology.md#dataspace). -The validation of the identity of a given [Participant Agent](./model/terminology.md#participant-agent) and the validation of additional claims is a fundamental mechanism. The structure and content of such claims and identities may, however, vary between different [Dataspaces](./model/terminology.md#dataspace), as well as the structure of such an [Identity Provider](./model/terminology.md#identity-provider), e.g. a centralized system, a decentralized system or a federated system. Other specifications define the respective functions. - -A [Connector](./model/terminology.md#connector--data-service-) will implement additional internal functionalities, like monitoring or policy engines, as appropriate. It is not covered by this specification if a [Connector](./model/terminology.md#connector--data-service-) implements such or how. - -The same applies for the actual data that is transferred between the systems. While this document does not define the transport protocol, the structure, syntax or semantics of the data, a specification for those aspects is required and subject to the agreements of the [Participants](./model/terminology.md#participant) or the [Dataspace](./model/terminology.md#dataspace). - -![Overview on protocol and context](./resources/figures/ProtocolOverview.png "Overview on protocol and context") diff --git a/normative.references.md b/normative.references.md deleted file mode 100644 index a69ab04..0000000 --- a/normative.references.md +++ /dev/null @@ -1,17 +0,0 @@ -# 2. Normative references - -_Two options of text (remove the inappropriate option)._ - -**1) The normative references shall be introduced by the following wording.** - -The following documents are referred to in the text in such a way that some or all of their content constitutes requirements of this document. For dated references, only the edition cited applies. For undated references, the latest edition of the referenced document (including any amendments) applies. - -ISO ##### #, General title — Part #: Title of part - -ISO ##### ##:20##, General title — Part ##: Title of part - -ISO/IEC 22123-1, Information technology — Cloud computing — Part 1: Vocabulary - -**2) If no references exist, include the following phrase below the clause title:** - -There are no normative references in this document. diff --git a/resources/list_common.md b/resources/list_common.md deleted file mode 100644 index e67aa24..0000000 --- a/resources/list_common.md +++ /dev/null @@ -1,8 +0,0 @@ -# Common - -* [Context (json)](./../common/schema/context.json) -* [Definitions schema (json)](./../common/schema/definitions.schema.json) -* [Version schema (json)](./../common/schema/version-schema.json) -* [ODRL shape (ttl)](./../common/shape/odrl-shapes.ttl) -* [Version shape (ttl)](./../common/shape/odrl-shapes.ttl) -* [Diagram styles (puml)](./../common/style/diagram.styles.puml) \ No newline at end of file diff --git a/resources/list_figures.md b/resources/list_figures.md deleted file mode 100644 index 3377f72..0000000 --- a/resources/list_figures.md +++ /dev/null @@ -1,52 +0,0 @@ -# Figures - -* [Protocol Overview (png)](./figures/ProtocolOverview.png) -* [Dataspace Relations (png)](./../model/m.dataspace.relationships.png) -* [Dataspace Relations (source)](./../model/m.dataspace.relationships.puml) -* [Participant Entities (png)](./../model/m.participant.entities.png) -* [Participant Entities (source)](./../model/m.participant.entities.drawio) - -## Catalog - -* [Catalog (png)](./../catalog/message/diagram/catalog.png) -* [Catalog (source)](./../catalog/message/diagram/catalog.puml) -* [Catalog error message (png)](./../catalog/message/diagram/catalog-error.png) -* [Catalog error message (source)](./../catalog/message/diagram/catalog-error.puml) -* [Catalog request message (png)](./../catalog/message/diagram/catalog-request-message.png) -* [Catalog request message (source)](./../catalog/message/diagram/catalog-request-message.puml) - -## Contract Negotiation - -* [Contract agreement message (png)](./../negotiation/message/diagram/contract-agreement-message.png) -* [Contract agreement message (source)](./../negotiation/message/diagram/contract-agreement-message.puml) -* [Contract agreement verification message (png)](./../negotiation/message/diagram/contract-agreement-verification-message.png) -* [Contract agreement verification message (source)](./../negotiation/message/diagram/contract-agreement-verification-message.puml) -* [Contract negotiation (png)](./../negotiation/message/diagram/contract-negotiation.png) -* [Contract negotiation (source)](./../negotiation/message/diagram/contract-negotiation.puml) -* [Contract negotiation error (png)](./../negotiation/message/diagram/contract-negotiation-error.png) -* [Contract negotiation error (source)](./../negotiation/message/diagram/contract-negotiation-error.puml) -* [Contract negotiation event message (png)](./../negotiation/message/diagram/contract-negotiation-event-message.png) -* [Contract negotiation event message (source)](./../negotiation/message/diagram/contract-negotiation-event-message.puml) -* [Contract negotiation termination message (png)](./../negotiation/message/diagram/contract-negotiation-termination-message.png) -* [Contract negotiation termination message (source)](./../negotiation/message/diagram/contract-negotiation-termination-message.puml) -* [Contract offer message (png)](./../negotiation/message/diagram/contract-offer-message.png) -* [Contract offer message (source)](./../negotiation/message/diagram/contract-offer-message.puml) -* [Contract request message (png)](./../negotiation/message/diagram/contract-request-message.png) -* [Contract request message (source)](./../negotiation/message/diagram/contract-request-message.puml) - -## Transfer Process - -* [Transfer completion message (png)](./../transfer/message/diagram/transfer-completion-message.png) -* [Transfer completion message (source)](./../transfer/message/diagram/transfer-completion-message.puml) -* [Transfer error (png)](./../transfer/message/diagram/transfer-error.png) -* [Transfer error (source)](./../transfer/message/diagram/transfer-error.puml) -* [Transfer prcess (png)](./../transfer/message/diagram/transfer-process.png) -* [Transfer prcess (source)](./../transfer/message/diagram/transfer-process.puml) -* [Transfer request message (png)](./../transfer/message/diagram/transfer-request-message.png) -* [Transfer request message (source)](./../transfer/message/diagram/transfer-request-message.puml) -* [Transfer start message (png)](./../transfer/message/diagram/transfer-start-message.png) -* [Transfer start message (source)](./../transfer/message/diagram/transfer-start-message.puml) -* [Transfer suspension message (png)](./../transfer/message/diagram/transfer-suspension-message.png) -* [Transfer suspension message (source)](./../transfer/message/diagram/transfer-suspension-message.puml) -* [Transfer termination message (png)](./../transfer/message/diagram/transfer-termination-message.png) -* [Transfer termination message (source)](./../transfer/message/diagram/transfer-termination-message.puml) \ No newline at end of file diff --git a/resources/list_messages.md b/resources/list_messages.md deleted file mode 100644 index 4f6e11f..0000000 --- a/resources/list_messages.md +++ /dev/null @@ -1,30 +0,0 @@ -# Messages - -## Catalog - -* [Catalog (json)](./../catalog/message/example/catalog.json) -* [Catalog error message (json)](./../catalog/message/example/catalog-error.json) -* [Catalog request message (json)](./../catalog/message/example/catalog-request-message.json) -* [Dataset (json)](./../catalog/message/example/dataset.json) -* [Dataset request message (json)](./../catalog/message/example/dataset-request-message.json) - -## Contract Negotiation - -* [Contract agreement message (json)](./../negotiation/message/example/contract-agreement-message.json) -* [Contract agreement verification message (json)](./../negotiation/message/example/contract-agreement-verification-message.json) -* [Contract negotiation (json)](./../negotiation/message/example/contract-negotiation.json) -* [Contract negotiation error (json)](./../negotiation/message/example/contract-negotiation-error.json) -* [Contract negotiation event message (json)](./../negotiation/message/example/contract-negotiation-event-message.json) -* [Contract negotiation termination message (json)](./../negotiation/message/example/contract-negotiation-termination-message.json) -* [Contract offer message (json)](./../negotiation/message/example/contract-offer-message.json) -* [Contract request message (json)](./../negotiation/message/example/contract-request-message.json) - -## Transfer Process - -* [Transfer completion message (json)](./../transfer/message/example/transfer-completion-message.json) -* [Transfer error (json)](./../transfer/message/example/transfer-error.json) -* [Transfer process (json)](./../transfer/message/example/transfer-process.json) -* [Transfer request message (json)](./../transfer/message/example/transfer-request-message.json) -* [Transfer start message (json)](./../transfer/message/example/transfer-start-message.json) -* [Transfer suspension message (json)](./../transfer/message/example/transfer-suspension-message.json) -* [Transfer termination message (json)](./../transfer/message/example/transfer-termination-message.json) diff --git a/resources/list_schemes.md b/resources/list_schemes.md deleted file mode 100644 index fa7510d..0000000 --- a/resources/list_schemes.md +++ /dev/null @@ -1,30 +0,0 @@ -# Schemes - -## Catalog - -* [Catalog error schema (json)](./../catalog/message/schema/catalog-error-schema.json) -* [Catalog request message schema (json)](./../catalog/message/schema/catalog-request-message-schema.json) -* [Catalog schema (json)](./../catalog/message/schema/catalog-schema.json) -* [Dataset request message schema (json)](./../catalog/message/schema/dataset-request-message-schema.json) -* [Dataset schema (json)](./../catalog/message/schema/dataset-schema.json) - -## Contract Negotiation - -* [Contract agreement schema (json)](./../negotiation/message/schema/contract-agreement-message-schema.json) -* [Contract agreement verification schema (json)](./../negotiation/message/schema/contract-agreement-verification-message-schema.json) -* [Contract negotiation error schema (json)](./../negotiation/message/schema/contract-negotiation-error-schema.json) -* [Contract negotiation event schema (json)](./../negotiation/message/schema/contract-negotiation-event-message-schema.json) -* [Contract negotiation schema (json)](./../negotiation/message/schema/contract-negotiation-schema.json) -* [Contract negotiation termination schema (json)](./../negotiation/message/schema/contract-negotiation-termination-message-schema.json) -* [Contract offer message schema (json)](./../negotiation/message/schema/contract-offer-message-schema.json) -* [Contract request schema (json)](./../negotiation/message/schema/contract-request-message-schema.json) - -## Transfer Process - -* [Transfer completion schema (json)](./../transfer/message/schema/transfer-completion-message-schema.json) -* [Transfer error schema (json)](./../transfer/message/schema/transfer-error-schema.json) -* [Transfer prcess schema (json)](./../transfer/message/schema/transfer-process-schema.json) -* [Transfer request schema (json)](./../transfer/message/schema/transfer-request-message-schema.json) -* [Transfer start schema (json)](./../transfer/message/schema/transfer-start-message-schema.json) -* [Transfer suspension schema (json)](./../transfer/message/schema/transfer-suspension-message-schema.json) -* [Transfer termination schema (json)](./../transfer/message/schema/transfer-termination-message-schema.json) \ No newline at end of file diff --git a/scope.md b/scope.md deleted file mode 100644 index 0adf558..0000000 --- a/scope.md +++ /dev/null @@ -1,30 +0,0 @@ -# Scope - -Sharing data between autonomous entities requires the provision of metadata to facilitate the transfer of [Datasets](./model/terminology.md#dataset) by making use of a data transfer (or application layer) protocol. -The __Dataspace Protocol__ defines how this metadata is provisioned: - -1. How [Datasets](./model/terminology.md#dataset) are deployed as [DCAT Catalogs](https://www.w3.org/TR/vocab-dcat-3/#Class:Catalog) and usage control is expressed as [ODRL Policies](https://www.w3.org/TR/odrl-model/). -2. How [Agreements](./model/terminology.md#agreement) that govern data usage are syntactically expressed and electronically negotiated. -3. How [Datasets](./model/terminology.md#dataset) are accessed using [Transfer Process Protocols](./model/terminology.md#transfer-process-protocol). - -These specifications build on protocols located in the [ISO OSI model (ISO/IEC 7498-1:1994)](https://www.iso.org/standard/20269.html) layers, like HTTPS. -The purpose of this specification is to define interactions between systems independent of such protocols, but describing how to implement it in an unambiguous and extensible way. -To do so, the messages that are exchanged during the process are described in this specification and the states and their transitions are specified as state machines, based on the key terms and concepts of a [Dataspace](./model/terminology.md#dataspace). -On this foundation the bindings to data transfer protocols, like HTTPS, are described. - -The specifications are organized into the following documents: - -* [__*Dataspace Model*__](./model/model.md) and [__*Dataspace Terminology*__](./model/terminology.md) documents that define key terms. -* [__*Common Functionalities*__](./common/common.protocol.md) and their [__*Binding in HTTPS*__](./common/common.binding.https.md) declares cross-cutting functions as, e.g., the declaration of supported versions of this Dataspace Protocol. -* [__*Catalog Protocol*__](./catalog/catalog.protocol.md) and [__*Catalog HTTPS Binding*__](./catalog/catalog.binding.https.md) documents that define how [DCAT Catalogs](https://www.w3.org/TR/vocab-dcat-3/#Class:Catalog) are published and accessed as HTTPS endpoints respectively. -* [__*Contract Negotiation Protocol*__](./negotiation/contract.negotiation.protocol.md) and [__*Contract Negotiation HTTPS Binding*__](./negotiation/contract.negotiation.binding.https.md) documents that define how [Contract Negotiations](./model/terminology.md#contract-negotiation) are conducted and requested via HTTPS endpoints. -* [__*Transfer Process Protocol*__](./transfer/transfer.process.protocol.md) and [__*Transfer Process HTTPS Binding*__](./transfer/transfer.process.binding.https.md) documents that define how [Transfer Processes](./model/terminology.md#transfer-process) using a given data transfer protocol are governed via HTTPS - endpoints. - -> **This specification does not cover the data transfer process as such.** -> -> While the data transfer is controlled by the __*Transfer Process Protocol*__ mentioned above, e.g. the initation of the transfer channels or their decomissioning, the data transfer itself and especially the handling of technical exceptions is an obligation to the Transport Protocol. -> -> As an implication, the data transfer can be conducted in a separated process if required, as long as this process is to the specified extend controlled by the __*Transfer Process Protocol*__. -> -> Nevertheless, illustrative message examples are provided in the [__*Transfer Process Protocol section*__](./transfer/transfer.process.protocol.md#2-message-types). The best practices section may contain further non-normative examples and explanations. diff --git a/catalog/catalog.binding.https.md b/specifications/catalog/catalog.binding.https.md similarity index 100% rename from catalog/catalog.binding.https.md rename to specifications/catalog/catalog.binding.https.md diff --git a/catalog/catalog.protocol.md b/specifications/catalog/catalog.protocol.md similarity index 89% rename from catalog/catalog.protocol.md rename to specifications/catalog/catalog.protocol.md index a93e7d5..c5a5d5e 100644 --- a/catalog/catalog.protocol.md +++ b/specifications/catalog/catalog.protocol.md @@ -97,9 +97,9 @@ formats. | **Sent by** | [=Consumer=] | | **Resulting state** | `TERMINATED` | | **Response** | [ACK](#ack-catalog) or [ERROR](#error-catalog-error) | -| **Schema** | [JSON Schema](./message/schema/catalog-request-message-schema.json) | -| **Example** | [Message](./message/example/catalog-request-message.json) | -| **Diagram(s)** | ![](./message/diagram/catalog-request-message.png "Catalog Request Message") | +| **Schema** | [JSON Schema](message/schema/catalog-request-message-schema.json) | +| **Example** | [Message](message/example/catalog-request-message.json) | +| **Diagram(s)** | ![](message/diagram/catalog-request-message.png "Catalog Request Message") | The Catalog Request Message is message sent by a [=Consumer=] to a [=Catalog Service=]. @@ -120,9 +120,9 @@ is a valid instance of a [DCAT Catalog](https://www.w3.org/TR/vocab-dcat-3/#Clas | **Sent by** | [=Consumer=] | | **Resulting state** | `TERMINATED` | | **Response** | [ACK](#ack-catalog) or [ERROR](#error-catalog-error) | -| **Schema** | [JSON Schema](./message/schema/dataset-request-message-schema.json) | -| **Example** | [Message](./message/example/dataset-request-message.json) | -| **Diagram(s)** | ![](./message/diagram/dataset-request-message.png) | +| **Schema** | [JSON Schema](message/schema/dataset-request-message-schema.json) | +| **Example** | [Message](message/example/dataset-request-message.json) | +| **Diagram(s)** | ![](message/diagram/dataset-request-message.png) | The Dataset Request Message is message sent by a [=Consumer=] to a [=Catalog Service=]. @@ -144,9 +144,9 @@ provided in protocol-dependent forms, e.g., for an HTTPS binding in the request | | | |----------------|-----------------------------------------------------| | **Sent by** | [=Provider=] | -| **Schema** | [JSON Schema](./message/schema/catalog-schema.json) | -| **Example** | [Catalog Example](./message/example/catalog.json) | -| **Diagram(s)** | ![](./message/diagram/catalog.png) | +| **Schema** | [JSON Schema](message/schema/catalog-schema.json) | +| **Example** | [Catalog Example](message/example/catalog.json) | +| **Diagram(s)** | ![](message/diagram/catalog.png) | The [=Catalog=] contains all [Datasets](#dataset) which the requester shall see. @@ -155,18 +155,18 @@ The [=Catalog=] contains all [Datasets](#dataset) which the requester shall see. | | | |----------------|-----------------------------------------------------| | **Sent by** | [=Provider=] | -| **Schema** | [JSON Schema](./message/schema/dataset-schema.json) | -| **Example** | [Dataset Example](./message/example/dataset.json) | -| **Diagram(s)** | ![](./message/diagram/dataset.png) | +| **Schema** | [JSON Schema](message/schema/dataset-schema.json) | +| **Example** | [Dataset Example](message/example/dataset.json) | +| **Diagram(s)** | ![](message/diagram/dataset.png) | ### ERROR - Catalog Error | | | |----------------|-----------------------------------------------------------| | **Sent by** | [=Consumer=], [=Provider=] | -| **Schema** | [JSON Schema](./message/schema/catalog-error-schema.json) | -| **Example** | [Error](./message/example/catalog-error.json) | -| **Diagram(s)** | ![](./message/diagram/catalog-error.png) | +| **Schema** | [JSON Schema](message/schema/catalog-error-schema.json) | +| **Example** | [Error](message/example/catalog-error.json) | +| **Diagram(s)** | ![](message/diagram/catalog-error.png) | A Catalog Error is used when an error occurred after a [Catalog Request Message](#catalog-request-message) or a [Dataset Request Message](#dataset-request-message) and the [=Provider=] cannot diff --git a/catalog/message/diagram/catalog-error.png b/specifications/catalog/message/diagram/catalog-error.png similarity index 100% rename from catalog/message/diagram/catalog-error.png rename to specifications/catalog/message/diagram/catalog-error.png diff --git a/catalog/message/diagram/catalog-error.puml b/specifications/catalog/message/diagram/catalog-error.puml similarity index 100% rename from catalog/message/diagram/catalog-error.puml rename to specifications/catalog/message/diagram/catalog-error.puml diff --git a/catalog/message/diagram/catalog-request-message.png b/specifications/catalog/message/diagram/catalog-request-message.png similarity index 100% rename from catalog/message/diagram/catalog-request-message.png rename to specifications/catalog/message/diagram/catalog-request-message.png diff --git a/catalog/message/diagram/catalog-request-message.puml b/specifications/catalog/message/diagram/catalog-request-message.puml similarity index 100% rename from catalog/message/diagram/catalog-request-message.puml rename to specifications/catalog/message/diagram/catalog-request-message.puml diff --git a/catalog/message/diagram/catalog.png b/specifications/catalog/message/diagram/catalog.png similarity index 100% rename from catalog/message/diagram/catalog.png rename to specifications/catalog/message/diagram/catalog.png diff --git a/catalog/message/diagram/catalog.puml b/specifications/catalog/message/diagram/catalog.puml similarity index 100% rename from catalog/message/diagram/catalog.puml rename to specifications/catalog/message/diagram/catalog.puml diff --git a/catalog/message/diagram/dataset-request-message.png b/specifications/catalog/message/diagram/dataset-request-message.png similarity index 100% rename from catalog/message/diagram/dataset-request-message.png rename to specifications/catalog/message/diagram/dataset-request-message.png diff --git a/catalog/message/diagram/dataset-request-message.puml b/specifications/catalog/message/diagram/dataset-request-message.puml similarity index 100% rename from catalog/message/diagram/dataset-request-message.puml rename to specifications/catalog/message/diagram/dataset-request-message.puml diff --git a/catalog/message/diagram/dataset.png b/specifications/catalog/message/diagram/dataset.png similarity index 100% rename from catalog/message/diagram/dataset.png rename to specifications/catalog/message/diagram/dataset.png diff --git a/catalog/message/diagram/dataset.puml b/specifications/catalog/message/diagram/dataset.puml similarity index 100% rename from catalog/message/diagram/dataset.puml rename to specifications/catalog/message/diagram/dataset.puml diff --git a/catalog/message/example/catalog-error.json b/specifications/catalog/message/example/catalog-error.json similarity index 100% rename from catalog/message/example/catalog-error.json rename to specifications/catalog/message/example/catalog-error.json diff --git a/catalog/message/example/catalog-request-message.json b/specifications/catalog/message/example/catalog-request-message.json similarity index 100% rename from catalog/message/example/catalog-request-message.json rename to specifications/catalog/message/example/catalog-request-message.json diff --git a/catalog/message/example/catalog.json b/specifications/catalog/message/example/catalog.json similarity index 100% rename from catalog/message/example/catalog.json rename to specifications/catalog/message/example/catalog.json diff --git a/catalog/message/example/dataset-request-message.json b/specifications/catalog/message/example/dataset-request-message.json similarity index 100% rename from catalog/message/example/dataset-request-message.json rename to specifications/catalog/message/example/dataset-request-message.json diff --git a/catalog/message/example/dataset.json b/specifications/catalog/message/example/dataset.json similarity index 100% rename from catalog/message/example/dataset.json rename to specifications/catalog/message/example/dataset.json diff --git a/catalog/message/schema/catalog-error-schema.json b/specifications/catalog/message/schema/catalog-error-schema.json similarity index 100% rename from catalog/message/schema/catalog-error-schema.json rename to specifications/catalog/message/schema/catalog-error-schema.json diff --git a/catalog/message/schema/catalog-request-message-schema.json b/specifications/catalog/message/schema/catalog-request-message-schema.json similarity index 100% rename from catalog/message/schema/catalog-request-message-schema.json rename to specifications/catalog/message/schema/catalog-request-message-schema.json diff --git a/catalog/message/schema/catalog-schema.json b/specifications/catalog/message/schema/catalog-schema.json similarity index 100% rename from catalog/message/schema/catalog-schema.json rename to specifications/catalog/message/schema/catalog-schema.json diff --git a/catalog/message/schema/dataset-request-message-schema.json b/specifications/catalog/message/schema/dataset-request-message-schema.json similarity index 100% rename from catalog/message/schema/dataset-request-message-schema.json rename to specifications/catalog/message/schema/dataset-request-message-schema.json diff --git a/catalog/message/schema/dataset-schema.json b/specifications/catalog/message/schema/dataset-schema.json similarity index 100% rename from catalog/message/schema/dataset-schema.json rename to specifications/catalog/message/schema/dataset-schema.json diff --git a/common/common.binding.https.md b/specifications/common/common.binding.https.md similarity index 100% rename from common/common.binding.https.md rename to specifications/common/common.binding.https.md diff --git a/common/common.protocol.md b/specifications/common/common.protocol.md similarity index 100% rename from common/common.protocol.md rename to specifications/common/common.protocol.md diff --git a/specifications/common/foreword.md b/specifications/common/foreword.md new file mode 100644 index 0000000..70b145b --- /dev/null +++ b/specifications/common/foreword.md @@ -0,0 +1,29 @@ +# Foreword + +ISO (the International Organization for Standardization) is a worldwide federation of national standards bodies (ISO +member bodies). The work of preparing International Standards is normally carried out through ISO technical committees. +Each member body interested in a subject for which a technical committee has been established has the right to be +represented on that committee. International organizations, governmental and non-governmental, in liaison with ISO, also +take part in the work. ISO collaborates closely with the International Electrotechnical Commission (IEC) on all matters +of electrotechnical standardization. + +The procedures used to develop this document and those intended for its further maintenance are described in the ISO/IEC +Directives, Part 1. In particular, the different approval criteria needed for the different types of ISO documents +should be noted. This document was drafted in accordance with the editorial rules of the ISO/IEC Directives, Part 2 ( +see [www.iso.org/directives](www.iso.org/directives)). + +ISO draws attention to the possibility that the implementation of this document may involve the use of (a) patent(s). +ISO takes no position concerning the evidence, validity or applicability of any claimed patent rights in respect +thereof. As of the date of publication of this document, ISO **[had/had not]** received notice of (a) patent(s) which +may be required to implement this document. However, implementers are cautioned that this may not represent the latest +information, which may be obtained from the patent database available at [www.iso.org/patents](www.iso.org/patents). ISO +shall not be held responsible for identifying any or all such patent rights. + +Any trade name used in this document is information given for the convenience of users and does not constitute an +endorsement. +For an explanation of the voluntary nature of standards, the meaning of ISO specific terms and expressions related to +conformity assessment, as well as information about ISO's adherence to the World Trade Organization (WTO) principles in +the Technical Barriers to Trade (TBT), see [www.iso.org/iso/foreword.html](www.iso.org/iso/foreword.html). + +Any feedback or questions on this document should be directed to the user’s national standards body. A complete listing +of these bodies can be found at [www.iso.org/members.html](www.iso.org/members.html). diff --git a/specifications/common/introduction.md b/specifications/common/introduction.md new file mode 100644 index 0000000..aa80ba4 --- /dev/null +++ b/specifications/common/introduction.md @@ -0,0 +1,32 @@ +# Introduction + +The __Dataspace Protocol__ is used in the context of [=Dataspaces=] as described and defined in the subsequent sections +with the purpose to support interoperability. +In this context, the specification provides fundamental technical interoperability for [=Participants=] +in [=Dataspaces=]. +Beyond the technical interoperability measures described in this specification, semantic interoperability should also be +addressed by the [=Participants=]. On the perspective of the [=Dataspace=], interoperability needs to be addressed also +on the level of trust, on organizational levels, and on legal levels. +The aspect of cross-dataspace communication is not subject of this document, as this is addressed by the [=Dataspaces=]' +organizational and legal agreements. + +The interaction of [=Participants=] in a [=Dataspace=] is conducted by the [=Participant Agents=], +so-called [=Connectors=], which implement the protocols described above. +While most interactions take place between [=Connectors=], some interactions with other systems are required. +The figure below provides an overview on the context of this specification. + +An [=Identity Provider=] realizes the required interfaces and provides required information to implement the Trust +Framework of a [=Dataspace=]. +The validation of the identity of a given [=Participant Agent=] and the validation of additional claims is a fundamental +mechanism. The structure and content of such claims and identities may, however, vary between different [=Dataspaces=], +as well as the structure of such an [=Identity Provider=], e.g. a centralized system, a decentralized system or a +federated system. Other specifications define the respective functions. + +A [=Connector=] will implement additional internal functionalities, like monitoring or policy engines, as appropriate. +It is not covered by this specification if a [=Connector=] implements such or how. + +The same applies for the actual data that is transferred between the systems. While this document does not define the +transport protocol, the structure, syntax or semantics of the data, a specification for those aspects is required and +subject to the agreements of the [=Participants=] or the [=Dataspace=]. + +![Overview on protocol and context](./figures/ProtocolOverview.png "Overview on protocol and context") diff --git a/specifications/common/normative.references.md b/specifications/common/normative.references.md new file mode 100644 index 0000000..ea45471 --- /dev/null +++ b/specifications/common/normative.references.md @@ -0,0 +1,7 @@ +# Normative references + +The following documents are referred to in the text in such a way that some or all of their content constitutes +requirements of this document. For dated references, only the edition cited applies. For undated references, the latest +edition of the referenced document (including any amendments) applies. + +ISO/IEC 22123-1, Information technology — Cloud computing — Part 1: Vocabulary diff --git a/common/schema/context.json b/specifications/common/schema/context.json similarity index 100% rename from common/schema/context.json rename to specifications/common/schema/context.json diff --git a/common/schema/definitions.schema.json b/specifications/common/schema/definitions.schema.json similarity index 100% rename from common/schema/definitions.schema.json rename to specifications/common/schema/definitions.schema.json diff --git a/common/schema/version-schema.json b/specifications/common/schema/version-schema.json similarity index 100% rename from common/schema/version-schema.json rename to specifications/common/schema/version-schema.json diff --git a/specifications/common/scope.md b/specifications/common/scope.md new file mode 100644 index 0000000..2b9b3b5 --- /dev/null +++ b/specifications/common/scope.md @@ -0,0 +1,30 @@ +# Scope + +Sharing data between autonomous entities requires the provision of metadata to facilitate the transfer of [Datasets](../model/terminology.md#dataset) by making use of a data transfer (or application layer) protocol. +The __Dataspace Protocol__ defines how this metadata is provisioned: + +1. How [Datasets](../model/terminology.md#dataset) are deployed as [DCAT Catalogs](https://www.w3.org/TR/vocab-dcat-3/#Class:Catalog) and usage control is expressed as [ODRL Policies](https://www.w3.org/TR/odrl-model/). +2. How [Agreements](../model/terminology.md#agreement) that govern data usage are syntactically expressed and electronically negotiated. +3. How [Datasets](../model/terminology.md#dataset) are accessed using [Transfer Process Protocols](../model/terminology.md#transfer-process-protocol). + +These specifications build on protocols located in the [ISO OSI model (ISO/IEC 7498-1:1994)](https://www.iso.org/standard/20269.html) layers, like HTTPS. +The purpose of this specification is to define interactions between systems independent of such protocols, but describing how to implement it in an unambiguous and extensible way. +To do so, the messages that are exchanged during the process are described in this specification and the states and their transitions are specified as state machines, based on the key terms and concepts of a [Dataspace](../model/terminology.md#dataspace). +On this foundation the bindings to data transfer protocols, like HTTPS, are described. + +The specifications are organized into the following documents: + +* [__*Dataspace Model*__](../model/model.md) and [__*Dataspace Terminology*__](../model/terminology.md) documents that define key terms. +* [__*Common Functionalities*__](common.protocol.md) and their [__*Binding in HTTPS*__](common.binding.https.md) declares cross-cutting functions as, e.g., the declaration of supported versions of this Dataspace Protocol. +* [__*Catalog Protocol*__](../catalog/catalog.protocol.md) and [__*Catalog HTTPS Binding*__](../catalog/catalog.binding.https.md) documents that define how [DCAT Catalogs](https://www.w3.org/TR/vocab-dcat-3/#Class:Catalog) are published and accessed as HTTPS endpoints respectively. +* [__*Contract Negotiation Protocol*__](../negotiation/contract.negotiation.protocol.md) and [__*Contract Negotiation HTTPS Binding*__](../negotiation/contract.negotiation.binding.https.md) documents that define how [Contract Negotiations](../model/terminology.md#contract-negotiation) are conducted and requested via HTTPS endpoints. +* [__*Transfer Process Protocol*__](../transfer/transfer.process.protocol.md) and [__*Transfer Process HTTPS Binding*__](../transfer/transfer.process.binding.https.md) documents that define how [Transfer Processes](../model/terminology.md#transfer-process) using a given data transfer protocol are governed via HTTPS + endpoints. + +> **This specification does not cover the data transfer process as such.** +> +> While the data transfer is controlled by the __*Transfer Process Protocol*__ mentioned above, e.g. the initation of the transfer channels or their decomissioning, the data transfer itself and especially the handling of technical exceptions is an obligation to the Transport Protocol. +> +> As an implication, the data transfer can be conducted in a separated process if required, as long as this process is to the specified extend controlled by the __*Transfer Process Protocol*__. +> +> Nevertheless, illustrative message examples are provided in the [__*Transfer Process Protocol section*__](../transfer/transfer.process.protocol.md#2-message-types). The best practices section may contain further non-normative examples and explanations. diff --git a/common/style/diagram.styles.puml b/specifications/common/style/diagram.styles.puml similarity index 100% rename from common/style/diagram.styles.puml rename to specifications/common/style/diagram.styles.puml diff --git a/model/m.dataspace.relationships.png b/specifications/model/figures/m.dataspace.relationships.png similarity index 100% rename from model/m.dataspace.relationships.png rename to specifications/model/figures/m.dataspace.relationships.png diff --git a/model/m.dataspace.relationships.puml b/specifications/model/figures/m.dataspace.relationships.puml similarity index 100% rename from model/m.dataspace.relationships.puml rename to specifications/model/figures/m.dataspace.relationships.puml diff --git a/model/m.participant.entities.drawio b/specifications/model/figures/m.participant.entities.drawio similarity index 100% rename from model/m.participant.entities.drawio rename to specifications/model/figures/m.participant.entities.drawio diff --git a/model/m.participant.entities.png b/specifications/model/figures/m.participant.entities.png similarity index 100% rename from model/m.participant.entities.png rename to specifications/model/figures/m.participant.entities.png diff --git a/model/model.md b/specifications/model/model.md similarity index 96% rename from model/model.md rename to specifications/model/model.md index d7a66ae..109289d 100644 --- a/model/model.md +++ b/specifications/model/model.md @@ -14,7 +14,7 @@ a Dataspace. This may require additional concepts, which are not in the scope of The definitions below are therefore informative and not-normative. The relationships between the primary [=Dataspace=] entities are defined as follows: -![](./m.dataspace.relationships.png "Information Model Relationships") +![](figures/m.dataspace.relationships.png "Information Model Relationships") Note that all relationships are multiplicities unless specified. `Dataspace Authority` and `Dataspace Registry` are non-normative entities. @@ -34,7 +34,7 @@ The following concepts are therefore normative. The diagram below depicts the relationships between [=Participant Agent=] types: -![](./m.participant.entities.png "Class Diagram Participant Agent") +![](figures/m.participant.entities.png "Class Diagram Participant Agent") - A [=Catalog Service=] is a [=Participant Agent=] that makes a [DCAT Catalog](https://www.w3.org/TR/vocab-dcat-3/#Class:Catalog) available to other [=Participants=]. - A [=Catalog=] contains one or more [=Datasets=], which are [DCAT Datasets](https://www.w3.org/TR/vocab-dcat-3/#Class:Dataset). A [=Catalog=] also contains **_at least one_** [DCAT DataService](https://www.w3.org/TR/vocab-dcat-3/#Class:Data_Service) that references a [=Connector=] where [=Datasets=] may be obtained. @@ -69,7 +69,7 @@ An [=Offer=] is an [ODRL Offer](https://www.w3.org/TR/odrl-model/#policy-offer) - An ODRL `uid` is represented as an "@id" that is a unique identifier. (ODRL PROFILE) - The [=Offer=] must be unique to a [=Dataset=] since the target of the [=Offer=] is derived from its enclosing context. -- The value of the `target` attribute is the dataset id. Except if the [Offer][Catalog](./terminology.md#offer) is used in an enclosing [=Catalog=] or [=Dataset=], then the there must not be any `target` attribute set. +- The value of the `target` attribute is the dataset id. Except if the [Offer][Catalog](terminology.md#offer) is used in an enclosing [=Catalog=] or [=Dataset=], then the there must not be any `target` attribute set. ### Agreement diff --git a/model/terminology.md b/specifications/model/terminology.md similarity index 100% rename from model/terminology.md rename to specifications/model/terminology.md diff --git a/negotiation/contract.negotiation.binding.https.md b/specifications/negotiation/contract.negotiation.binding.https.md similarity index 100% rename from negotiation/contract.negotiation.binding.https.md rename to specifications/negotiation/contract.negotiation.binding.https.md diff --git a/negotiation/contract.negotiation.protocol.md b/specifications/negotiation/contract.negotiation.protocol.md similarity index 82% rename from negotiation/contract.negotiation.protocol.md rename to specifications/negotiation/contract.negotiation.protocol.md index 66cca77..3e742e6 100644 --- a/negotiation/contract.negotiation.protocol.md +++ b/specifications/negotiation/contract.negotiation.protocol.md @@ -33,7 +33,7 @@ The CN states are: The CN state machine is represented in the following diagram: -!["Contract Negotiation State Machine"](./figures/contract.negotiation.state.machine.png "Contract Negotiation State Machine") +!["Contract Negotiation State Machine"](figures/contract.negotiation.state.machine.png "Contract Negotiation State Machine") Transitions marked with `C` indicate a message sent by the [=Consumer=], transitions marked with `P` indicate a [=Provider=] message. Terminal states are final; the state machine may not transition to another state. A new CN may @@ -57,9 +57,9 @@ as abstract message types. | **Sent by** | [=Consumer=] | | **Resulting state** | `REQUESTED`, `TERMINATED` | | **Response** | [ACK](#ack-contract-negotiation) or [ERROR](#error-contract-negotiation-error) | -| **Schema** | [JSON Schema](./message/schema/contract-request-message-schema.json) | -| **Example** | Initiating [Message](./message/example/contract-request-message_initial.json), [Message](./message/example/contract-offer-message.json) | -| **Diagram(s)** | ![](./message/diagram/contract-request-message.png "Contract Request Message") | +| **Schema** | [JSON Schema](message/schema/contract-request-message-schema.json) | +| **Example** | Initiating [Message](message/example/contract-request-message_initial.json), [Message](message/example/contract-offer-message.json) | +| **Diagram(s)** | ![](message/diagram/contract-request-message.png "Contract Request Message") | The Contract Request Message is sent by a [=Consumer=] to initiate a CN or to respond to a [Contract Offer Message](#contract-offer-message) sent by a [=Provider=]. @@ -85,9 +85,9 @@ a [Contract Offer Message](#contract-offer-message) sent by a [=Provider=]. | **Sent by** | [=Provider=] | | **Resulting state** | `OFFERED`, `TERMINATED` | | **Response** | [ACK](#ack-contract-negotiation) or [ERROR](#error-contract-negotiation-error) | -| **Schema** | [JSON Schema](./message/schema/contract-offer-message-schema.json) | -| **Example** | [Example Initial Message](./message/example/contract-offer-message_initial.json), [Example Message](./message/example/contract-offer-message.json) | -| **Diagram(s)** | ![](./message/diagram/contract-offer-message_initial.png "Initial Contract Offer message (note the missing `consumerPid`)")

![](./message/diagram/contract-offer-message.png "Contract Offer Message following a [[[#contract-request-message]]]") | +| **Schema** | [JSON Schema](message/schema/contract-offer-message-schema.json) | +| **Example** | [Example Initial Message](message/example/contract-offer-message_initial.json), [Example Message](message/example/contract-offer-message.json) | +| **Diagram(s)** | ![](message/diagram/contract-offer-message_initial.png "Initial Contract Offer message (note the missing `consumerPid`)")

![](message/diagram/contract-offer-message.png "Contract Offer Message following a [[[#contract-request-message]]]") | The Contract Offer Message is sent by a [=Provider=] to initiate a CN or to respond to a [Contract Request Message](#contract-request-message) sent by a [=Consumer=]. @@ -108,9 +108,9 @@ a [Contract Request Message](#contract-request-message) sent by a [=Consumer=]. | **Sent by** | [=Provider=] | | **Resulting state** | `AGREED`, `TERMINATED` | | **Response** | [ACK](#ack-contract-negotiation) or [ERROR](#error-contract-negotiation-error) | -| **Schema** | [JSON Schema](./message/schema/contract-agreement-message-schema.json) | -| **Example** | [Message](./message/example/contract-agreement-message.json) | -| **Diagram(s)** | ![](./message/diagram/contract-agreement-message.png "Contract Agreement Message") | +| **Schema** | [JSON Schema](message/schema/contract-agreement-message-schema.json) | +| **Example** | [Message](message/example/contract-agreement-message.json) | +| **Diagram(s)** | ![](message/diagram/contract-agreement-message.png "Contract Agreement Message") | The Contract Agreement Message is sent by a [=Provider=] when it agrees to a contract. It contains the complete [=Agreement=]. @@ -134,9 +134,9 @@ complete [=Agreement=]. | **Sent by** | [=Consumer=] | | **Resulting state** | `VERIFIED`, `TERMINATED` | | **Response** | [ACK](#ack-contract-negotiation) or [ERROR](#error-contract-negotiation-error) | -| **Schema** | [JSON Schema](./message/schema/contract-agreement-verification-message-schema.json) | -| **Example** | [Message](./message/example/contract-agreement-verification-message.json) | -| **Diagram(s)** | ![](./message/diagram/contract-agreement-verification-message.png "Contract Agreement Verification Message") | +| **Schema** | [JSON Schema](message/schema/contract-agreement-verification-message-schema.json) | +| **Example** | [Message](message/example/contract-agreement-verification-message.json) | +| **Diagram(s)** | ![](message/diagram/contract-agreement-verification-message.png "Contract Agreement Verification Message") | The Contract Agreement Verification Message is sent by a [=Consumer=] to verify the acceptance of an [=Agreement=]. @@ -150,9 +150,9 @@ The Contract Agreement Verification Message is sent by a [=Consumer=] to verify | **Sent by** | [=Consumer=], [=Provider=] | | **Resulting state** | `FINALIZED`, `ACCEPTED`, `TERMINATED` | | **Response** | [ACK](#ack-contract-negotiation) or [ERROR](#error-contract-negotiation-error) | -| **Schema** | [JSON Schema](./message/schema/contract-negotiation-event-message-schema.json) | -| **Example** | [Message](./message/example/contract-negotiation-event-message.json) | -| **Diagram(s)** | ![](./message/diagram/contract-negotiation-event-message.png "Contract Negotiation Event Message") | +| **Schema** | [JSON Schema](message/schema/contract-negotiation-event-message-schema.json) | +| **Example** | [Message](message/example/contract-negotiation-event-message.json) | +| **Diagram(s)** | ![](message/diagram/contract-negotiation-event-message.png "Contract Negotiation Event Message") | When the Contract Negotiation Event Message is sent by a [=Provider=] with an `eventType` property set to `FINALIZED`, an [=Agreement=] has been finalized and the associated [=Dataset=] is accessible. The state machine is transitioned to @@ -177,9 +177,9 @@ terminal state. | **Sent by** | [=Consumer=], [=Provider=] | | **Resulting state** | `TERMINATED` | | **Response** | [ACK](#ack-contract-negotiation) or [ERROR](#error-contract-negotiation-error) | -| **Schema** | [JSON Schema](./message/schema/contract-negotiation-termination-message-schema.json) | -| **Example** | [Message](./message/example/contract-negotiation-termination-message.json) | -| **Diagram(s)** | ![](./message/diagram/contract-negotiation-termination-message.png "Contract Negotiation Termination message") | +| **Schema** | [JSON Schema](message/schema/contract-negotiation-termination-message-schema.json) | +| **Example** | [Message](message/example/contract-negotiation-termination-message.json) | +| **Diagram(s)** | ![](message/diagram/contract-negotiation-termination-message.png "Contract Negotiation Termination message") | The Contract Negotiation Termination Message is sent by a [=Consumer=] or [=Provider=] indicating it has cancelled the CN sequence. The message can be sent at any state of a CN without providing an explanation. Nevertheless, the sender may @@ -202,9 +202,9 @@ provided in protocol-dependent forms, e.g., for an HTTPS binding in the request | | | |----------------|-------------------------------------------------------------------------------------------------------------------------------| | **Sent by** | [=Consumer=], [=Provider=] | -| **Schema** | [JSON Schema](./message/schema/contract-negotiation-schema.json) | -| **Example** | [Process](./message/example/contract-negotiation.json) | -| **Diagram(s)** | ![](./message/diagram/contract-negotiation.png "Contract Negotiation ACK") | +| **Schema** | [JSON Schema](message/schema/contract-negotiation-schema.json) | +| **Example** | [Process](message/example/contract-negotiation.json) | +| **Diagram(s)** | ![](message/diagram/contract-negotiation.png "Contract Negotiation ACK") | The Contract Negotiation is an object returned by a [=Consumer=] or [=Provider=] indicating a successful state change happened. @@ -214,9 +214,9 @@ happened. | | | |----------------|-------------------------------------------------------------------------------------------------------------------------------------------| | **Sent by** | [=Consumer=], [=Provider=] | -| **Schema** | [JSON Schema](./message/schema/contract-negotiation-error-schema.json) | -| **Example** | [Error](./message/example/contract-negotiation-error.json) | -| **Diagram(s)** | ![](./message/diagram/contract-negotiation-error.png "Contract Negotiation Error") | +| **Schema** | [JSON Schema](message/schema/contract-negotiation-error-schema.json) | +| **Example** | [Error](message/example/contract-negotiation-error.json) | +| **Diagram(s)** | ![](message/diagram/contract-negotiation-error.png "Contract Negotiation Error") | The Contract Negotiation Error is an object returned by a [=Consumer=] or [=Provider=] indicating an error has occurred. It does not cause a state transition. diff --git a/negotiation/figures/contract.negotiation.state.machine.png b/specifications/negotiation/figures/contract.negotiation.state.machine.png similarity index 100% rename from negotiation/figures/contract.negotiation.state.machine.png rename to specifications/negotiation/figures/contract.negotiation.state.machine.png diff --git a/negotiation/figures/contract.negotiation.state.machine.puml b/specifications/negotiation/figures/contract.negotiation.state.machine.puml similarity index 100% rename from negotiation/figures/contract.negotiation.state.machine.puml rename to specifications/negotiation/figures/contract.negotiation.state.machine.puml diff --git a/negotiation/message/diagram/contract-agreement-message.png b/specifications/negotiation/message/diagram/contract-agreement-message.png similarity index 100% rename from negotiation/message/diagram/contract-agreement-message.png rename to specifications/negotiation/message/diagram/contract-agreement-message.png diff --git a/negotiation/message/diagram/contract-agreement-message.puml b/specifications/negotiation/message/diagram/contract-agreement-message.puml similarity index 100% rename from negotiation/message/diagram/contract-agreement-message.puml rename to specifications/negotiation/message/diagram/contract-agreement-message.puml diff --git a/negotiation/message/diagram/contract-agreement-verification-message.png b/specifications/negotiation/message/diagram/contract-agreement-verification-message.png similarity index 100% rename from negotiation/message/diagram/contract-agreement-verification-message.png rename to specifications/negotiation/message/diagram/contract-agreement-verification-message.png diff --git a/negotiation/message/diagram/contract-agreement-verification-message.puml b/specifications/negotiation/message/diagram/contract-agreement-verification-message.puml similarity index 100% rename from negotiation/message/diagram/contract-agreement-verification-message.puml rename to specifications/negotiation/message/diagram/contract-agreement-verification-message.puml diff --git a/negotiation/message/diagram/contract-negotiation-error.png b/specifications/negotiation/message/diagram/contract-negotiation-error.png similarity index 100% rename from negotiation/message/diagram/contract-negotiation-error.png rename to specifications/negotiation/message/diagram/contract-negotiation-error.png diff --git a/negotiation/message/diagram/contract-negotiation-error.puml b/specifications/negotiation/message/diagram/contract-negotiation-error.puml similarity index 100% rename from negotiation/message/diagram/contract-negotiation-error.puml rename to specifications/negotiation/message/diagram/contract-negotiation-error.puml diff --git a/negotiation/message/diagram/contract-negotiation-event-message.png b/specifications/negotiation/message/diagram/contract-negotiation-event-message.png similarity index 100% rename from negotiation/message/diagram/contract-negotiation-event-message.png rename to specifications/negotiation/message/diagram/contract-negotiation-event-message.png diff --git a/negotiation/message/diagram/contract-negotiation-event-message.puml b/specifications/negotiation/message/diagram/contract-negotiation-event-message.puml similarity index 100% rename from negotiation/message/diagram/contract-negotiation-event-message.puml rename to specifications/negotiation/message/diagram/contract-negotiation-event-message.puml diff --git a/negotiation/message/diagram/contract-negotiation-termination-message.png b/specifications/negotiation/message/diagram/contract-negotiation-termination-message.png similarity index 100% rename from negotiation/message/diagram/contract-negotiation-termination-message.png rename to specifications/negotiation/message/diagram/contract-negotiation-termination-message.png diff --git a/negotiation/message/diagram/contract-negotiation-termination-message.puml b/specifications/negotiation/message/diagram/contract-negotiation-termination-message.puml similarity index 100% rename from negotiation/message/diagram/contract-negotiation-termination-message.puml rename to specifications/negotiation/message/diagram/contract-negotiation-termination-message.puml diff --git a/negotiation/message/diagram/contract-negotiation.png b/specifications/negotiation/message/diagram/contract-negotiation.png similarity index 100% rename from negotiation/message/diagram/contract-negotiation.png rename to specifications/negotiation/message/diagram/contract-negotiation.png diff --git a/negotiation/message/diagram/contract-negotiation.puml b/specifications/negotiation/message/diagram/contract-negotiation.puml similarity index 100% rename from negotiation/message/diagram/contract-negotiation.puml rename to specifications/negotiation/message/diagram/contract-negotiation.puml diff --git a/negotiation/message/diagram/contract-offer-message.png b/specifications/negotiation/message/diagram/contract-offer-message.png similarity index 100% rename from negotiation/message/diagram/contract-offer-message.png rename to specifications/negotiation/message/diagram/contract-offer-message.png diff --git a/negotiation/message/diagram/contract-offer-message.puml b/specifications/negotiation/message/diagram/contract-offer-message.puml similarity index 100% rename from negotiation/message/diagram/contract-offer-message.puml rename to specifications/negotiation/message/diagram/contract-offer-message.puml diff --git a/negotiation/message/diagram/contract-offer-message_initial.png b/specifications/negotiation/message/diagram/contract-offer-message_initial.png similarity index 100% rename from negotiation/message/diagram/contract-offer-message_initial.png rename to specifications/negotiation/message/diagram/contract-offer-message_initial.png diff --git a/negotiation/message/diagram/contract-offer-message_initial.puml b/specifications/negotiation/message/diagram/contract-offer-message_initial.puml similarity index 100% rename from negotiation/message/diagram/contract-offer-message_initial.puml rename to specifications/negotiation/message/diagram/contract-offer-message_initial.puml diff --git a/negotiation/message/diagram/contract-request-message.png b/specifications/negotiation/message/diagram/contract-request-message.png similarity index 100% rename from negotiation/message/diagram/contract-request-message.png rename to specifications/negotiation/message/diagram/contract-request-message.png diff --git a/negotiation/message/diagram/contract-request-message.puml b/specifications/negotiation/message/diagram/contract-request-message.puml similarity index 100% rename from negotiation/message/diagram/contract-request-message.puml rename to specifications/negotiation/message/diagram/contract-request-message.puml diff --git a/negotiation/message/diagram/contract-request-message_initial.png b/specifications/negotiation/message/diagram/contract-request-message_initial.png similarity index 100% rename from negotiation/message/diagram/contract-request-message_initial.png rename to specifications/negotiation/message/diagram/contract-request-message_initial.png diff --git a/negotiation/message/diagram/contract-request-message_initial.puml b/specifications/negotiation/message/diagram/contract-request-message_initial.puml similarity index 100% rename from negotiation/message/diagram/contract-request-message_initial.puml rename to specifications/negotiation/message/diagram/contract-request-message_initial.puml diff --git a/negotiation/message/example/contract-agreement-message.json b/specifications/negotiation/message/example/contract-agreement-message.json similarity index 100% rename from negotiation/message/example/contract-agreement-message.json rename to specifications/negotiation/message/example/contract-agreement-message.json diff --git a/negotiation/message/example/contract-agreement-verification-message.json b/specifications/negotiation/message/example/contract-agreement-verification-message.json similarity index 100% rename from negotiation/message/example/contract-agreement-verification-message.json rename to specifications/negotiation/message/example/contract-agreement-verification-message.json diff --git a/negotiation/message/example/contract-negotiation-error.json b/specifications/negotiation/message/example/contract-negotiation-error.json similarity index 100% rename from negotiation/message/example/contract-negotiation-error.json rename to specifications/negotiation/message/example/contract-negotiation-error.json diff --git a/negotiation/message/example/contract-negotiation-event-message.json b/specifications/negotiation/message/example/contract-negotiation-event-message.json similarity index 100% rename from negotiation/message/example/contract-negotiation-event-message.json rename to specifications/negotiation/message/example/contract-negotiation-event-message.json diff --git a/negotiation/message/example/contract-negotiation-termination-message.json b/specifications/negotiation/message/example/contract-negotiation-termination-message.json similarity index 100% rename from negotiation/message/example/contract-negotiation-termination-message.json rename to specifications/negotiation/message/example/contract-negotiation-termination-message.json diff --git a/negotiation/message/example/contract-negotiation.json b/specifications/negotiation/message/example/contract-negotiation.json similarity index 100% rename from negotiation/message/example/contract-negotiation.json rename to specifications/negotiation/message/example/contract-negotiation.json diff --git a/negotiation/message/example/contract-offer-message.json b/specifications/negotiation/message/example/contract-offer-message.json similarity index 100% rename from negotiation/message/example/contract-offer-message.json rename to specifications/negotiation/message/example/contract-offer-message.json diff --git a/negotiation/message/example/contract-offer-message_initial.json b/specifications/negotiation/message/example/contract-offer-message_initial.json similarity index 100% rename from negotiation/message/example/contract-offer-message_initial.json rename to specifications/negotiation/message/example/contract-offer-message_initial.json diff --git a/negotiation/message/example/contract-request-message.json b/specifications/negotiation/message/example/contract-request-message.json similarity index 100% rename from negotiation/message/example/contract-request-message.json rename to specifications/negotiation/message/example/contract-request-message.json diff --git a/negotiation/message/example/contract-request-message_initial.json b/specifications/negotiation/message/example/contract-request-message_initial.json similarity index 100% rename from negotiation/message/example/contract-request-message_initial.json rename to specifications/negotiation/message/example/contract-request-message_initial.json diff --git a/negotiation/message/example/contract.agreement.message.http.transfer.json b/specifications/negotiation/message/example/contract.agreement.message.http.transfer.json similarity index 100% rename from negotiation/message/example/contract.agreement.message.http.transfer.json rename to specifications/negotiation/message/example/contract.agreement.message.http.transfer.json diff --git a/negotiation/message/schema/contract-agreement-message-schema.json b/specifications/negotiation/message/schema/contract-agreement-message-schema.json similarity index 100% rename from negotiation/message/schema/contract-agreement-message-schema.json rename to specifications/negotiation/message/schema/contract-agreement-message-schema.json diff --git a/negotiation/message/schema/contract-agreement-verification-message-schema.json b/specifications/negotiation/message/schema/contract-agreement-verification-message-schema.json similarity index 100% rename from negotiation/message/schema/contract-agreement-verification-message-schema.json rename to specifications/negotiation/message/schema/contract-agreement-verification-message-schema.json diff --git a/negotiation/message/schema/contract-negotiation-error-schema.json b/specifications/negotiation/message/schema/contract-negotiation-error-schema.json similarity index 100% rename from negotiation/message/schema/contract-negotiation-error-schema.json rename to specifications/negotiation/message/schema/contract-negotiation-error-schema.json diff --git a/negotiation/message/schema/contract-negotiation-event-message-schema.json b/specifications/negotiation/message/schema/contract-negotiation-event-message-schema.json similarity index 100% rename from negotiation/message/schema/contract-negotiation-event-message-schema.json rename to specifications/negotiation/message/schema/contract-negotiation-event-message-schema.json diff --git a/negotiation/message/schema/contract-negotiation-schema.json b/specifications/negotiation/message/schema/contract-negotiation-schema.json similarity index 100% rename from negotiation/message/schema/contract-negotiation-schema.json rename to specifications/negotiation/message/schema/contract-negotiation-schema.json diff --git a/negotiation/message/schema/contract-negotiation-termination-message-schema.json b/specifications/negotiation/message/schema/contract-negotiation-termination-message-schema.json similarity index 100% rename from negotiation/message/schema/contract-negotiation-termination-message-schema.json rename to specifications/negotiation/message/schema/contract-negotiation-termination-message-schema.json diff --git a/negotiation/message/schema/contract-offer-message-schema.json b/specifications/negotiation/message/schema/contract-offer-message-schema.json similarity index 100% rename from negotiation/message/schema/contract-offer-message-schema.json rename to specifications/negotiation/message/schema/contract-offer-message-schema.json diff --git a/negotiation/message/schema/contract-request-message-schema.json b/specifications/negotiation/message/schema/contract-request-message-schema.json similarity index 100% rename from negotiation/message/schema/contract-request-message-schema.json rename to specifications/negotiation/message/schema/contract-request-message-schema.json diff --git a/negotiation/message/schema/contract-schema.json b/specifications/negotiation/message/schema/contract-schema.json similarity index 100% rename from negotiation/message/schema/contract-schema.json rename to specifications/negotiation/message/schema/contract-schema.json diff --git a/resources/figures/ProtocolOverview.png b/specifications/resources/figures/ProtocolOverview.png similarity index 100% rename from resources/figures/ProtocolOverview.png rename to specifications/resources/figures/ProtocolOverview.png diff --git a/specifications/resources/list_common.md b/specifications/resources/list_common.md new file mode 100644 index 0000000..78ce931 --- /dev/null +++ b/specifications/resources/list_common.md @@ -0,0 +1,8 @@ +# Common + +* [Context (json)](../commonchema/context.json) +* [Definitions schema (json)](../commonchema/definitions.schema.json) +* [Version schema (json)](../commonchema/version-schema.json) +* [ODRL shape (ttl)](../common/shape/odrl-shapes.ttl) +* [Version shape (ttl)](../common/shape/odrl-shapes.ttl) +* [Diagram styles (puml)](../commontyle/diagram.styles.puml) \ No newline at end of file diff --git a/specifications/resources/list_figures.md b/specifications/resources/list_figures.md new file mode 100644 index 0000000..dd68842 --- /dev/null +++ b/specifications/resources/list_figures.md @@ -0,0 +1,52 @@ +# Figures + +* [Protocol Overview (png)](figures/ProtocolOverview.png) +* [Dataspace Relations (png)](../model.dataspace.relationships.png) +* [Dataspace Relations (source)](../model.dataspace.relationships.puml) +* [Participant Entities (png)](../model.participant.entities.png) +* [Participant Entities (source)](../model.participant.entities.drawio) + +## Catalog + +* [Catalog (png)](../catalogessage/diagram/catalog.png) +* [Catalog (source)](../catalogessage/diagram/catalog.puml) +* [Catalog error message (png)](../catalogessage/diagram/catalog-error.png) +* [Catalog error message (source)](../catalogessage/diagram/catalog-error.puml) +* [Catalog request message (png)](../catalogessage/diagram/catalog-request-message.png) +* [Catalog request message (source)](../catalogessage/diagram/catalog-request-message.puml) + +## Contract Negotiation + +* [Contract agreement message (png)](../negotiationessage/diagram/contract-agreement-message.png) +* [Contract agreement message (source)](../negotiationessage/diagram/contract-agreement-message.puml) +* [Contract agreement verification message (png)](../negotiationessage/diagram/contract-agreement-verification-message.png) +* [Contract agreement verification message (source)](../negotiationessage/diagram/contract-agreement-verification-message.puml) +* [Contract negotiation (png)](../negotiationessage/diagram/contract-negotiation.png) +* [Contract negotiation (source)](../negotiationessage/diagram/contract-negotiation.puml) +* [Contract negotiation error (png)](../negotiationessage/diagram/contract-negotiation-error.png) +* [Contract negotiation error (source)](../negotiationessage/diagram/contract-negotiation-error.puml) +* [Contract negotiation event message (png)](../negotiationessage/diagram/contract-negotiation-event-message.png) +* [Contract negotiation event message (source)](../negotiationessage/diagram/contract-negotiation-event-message.puml) +* [Contract negotiation termination message (png)](../negotiationessage/diagram/contract-negotiation-termination-message.png) +* [Contract negotiation termination message (source)](../negotiationessage/diagram/contract-negotiation-termination-message.puml) +* [Contract offer message (png)](../negotiationessage/diagram/contract-offer-message.png) +* [Contract offer message (source)](../negotiationessage/diagram/contract-offer-message.puml) +* [Contract request message (png)](../negotiationessage/diagram/contract-request-message.png) +* [Contract request message (source)](../negotiationessage/diagram/contract-request-message.puml) + +## Transfer Process + +* [Transfer completion message (png)](../transfer/message/diagram/transfer-completion-message.png) +* [Transfer completion message (source)](../transfer/message/diagram/transfer-completion-message.puml) +* [Transfer error (png)](../transfer/message/diagram/transfer-error.png) +* [Transfer error (source)](../transfer/message/diagram/transfer-error.puml) +* [Transfer prcess (png)](../transfer/message/diagram/transfer-process.png) +* [Transfer prcess (source)](../transfer/message/diagram/transfer-process.puml) +* [Transfer request message (png)](../transfer/message/diagram/transfer-request-message.png) +* [Transfer request message (source)](../transfer/message/diagram/transfer-request-message.puml) +* [Transfer start message (png)](../transfer/message/diagram/transfer-start-message.png) +* [Transfer start message (source)](../transfer/message/diagram/transfer-start-message.puml) +* [Transfer suspension message (png)](../transfer/message/diagram/transfer-suspension-message.png) +* [Transfer suspension message (source)](../transfer/message/diagram/transfer-suspension-message.puml) +* [Transfer termination message (png)](../transfer/message/diagram/transfer-termination-message.png) +* [Transfer termination message (source)](../transfer/message/diagram/transfer-termination-message.puml) \ No newline at end of file diff --git a/specifications/resources/list_messages.md b/specifications/resources/list_messages.md new file mode 100644 index 0000000..c0145ec --- /dev/null +++ b/specifications/resources/list_messages.md @@ -0,0 +1,30 @@ +# Messages + +## Catalog + +* [Catalog (json)](../catalogessage/example/catalog.json) +* [Catalog error message (json)](../catalogessage/example/catalog-error.json) +* [Catalog request message (json)](../catalogessage/example/catalog-request-message.json) +* [Dataset (json)](../catalogessage/example/dataset.json) +* [Dataset request message (json)](../catalogessage/example/dataset-request-message.json) + +## Contract Negotiation + +* [Contract agreement message (json)](../negotiationessage/example/contract-agreement-message.json) +* [Contract agreement verification message (json)](../negotiationessage/example/contract-agreement-verification-message.json) +* [Contract negotiation (json)](../negotiationessage/example/contract-negotiation.json) +* [Contract negotiation error (json)](../negotiationessage/example/contract-negotiation-error.json) +* [Contract negotiation event message (json)](../negotiationessage/example/contract-negotiation-event-message.json) +* [Contract negotiation termination message (json)](../negotiationessage/example/contract-negotiation-termination-message.json) +* [Contract offer message (json)](../negotiationessage/example/contract-offer-message.json) +* [Contract request message (json)](../negotiationessage/example/contract-request-message.json) + +## Transfer Process + +* [Transfer completion message (json)](../transfer/message/example/transfer-completion-message.json) +* [Transfer error (json)](../transfer/message/example/transfer-error.json) +* [Transfer process (json)](../transfer/message/example/transfer-process.json) +* [Transfer request message (json)](../transfer/message/example/transfer-request-message.json) +* [Transfer start message (json)](../transfer/message/example/transfer-start-message.json) +* [Transfer suspension message (json)](../transfer/message/example/transfer-suspension-message.json) +* [Transfer termination message (json)](../transfer/message/example/transfer-termination-message.json) diff --git a/specifications/resources/list_schemes.md b/specifications/resources/list_schemes.md new file mode 100644 index 0000000..e66840d --- /dev/null +++ b/specifications/resources/list_schemes.md @@ -0,0 +1,30 @@ +# Schemes + +## Catalog + +* [Catalog error schema (json)](../catalogessage/schema/catalog-error-schema.json) +* [Catalog request message schema (json)](../catalogessage/schema/catalog-request-message-schema.json) +* [Catalog schema (json)](../catalogessage/schema/catalog-schema.json) +* [Dataset request message schema (json)](../catalogessage/schema/dataset-request-message-schema.json) +* [Dataset schema (json)](../catalogessage/schema/dataset-schema.json) + +## Contract Negotiation + +* [Contract agreement schema (json)](../negotiationessage/schema/contract-agreement-message-schema.json) +* [Contract agreement verification schema (json)](../negotiationessage/schema/contract-agreement-verification-message-schema.json) +* [Contract negotiation error schema (json)](../negotiationessage/schema/contract-negotiation-error-schema.json) +* [Contract negotiation event schema (json)](../negotiationessage/schema/contract-negotiation-event-message-schema.json) +* [Contract negotiation schema (json)](../negotiationessage/schema/contract-negotiation-schema.json) +* [Contract negotiation termination schema (json)](../negotiationessage/schema/contract-negotiation-termination-message-schema.json) +* [Contract offer message schema (json)](../negotiationessage/schema/contract-offer-message-schema.json) +* [Contract request schema (json)](../negotiationessage/schema/contract-request-message-schema.json) + +## Transfer Process + +* [Transfer completion schema (json)](../transfer/message/schema/transfer-completion-message-schema.json) +* [Transfer error schema (json)](../transfer/message/schema/transfer-error-schema.json) +* [Transfer prcess schema (json)](../transfer/message/schema/transfer-process-schema.json) +* [Transfer request schema (json)](../transfer/message/schema/transfer-request-message-schema.json) +* [Transfer start schema (json)](../transfer/message/schema/transfer-start-message-schema.json) +* [Transfer suspension schema (json)](../transfer/message/schema/transfer-suspension-message-schema.json) +* [Transfer termination schema (json)](../transfer/message/schema/transfer-termination-message-schema.json) \ No newline at end of file diff --git a/transfer/figures/pull-transfer-process.png b/specifications/transfer/figures/pull-transfer-process.png similarity index 100% rename from transfer/figures/pull-transfer-process.png rename to specifications/transfer/figures/pull-transfer-process.png diff --git a/transfer/figures/pull-transfer-process.puml b/specifications/transfer/figures/pull-transfer-process.puml similarity index 100% rename from transfer/figures/pull-transfer-process.puml rename to specifications/transfer/figures/pull-transfer-process.puml diff --git a/transfer/figures/push-transfer-process.png b/specifications/transfer/figures/push-transfer-process.png similarity index 100% rename from transfer/figures/push-transfer-process.png rename to specifications/transfer/figures/push-transfer-process.png diff --git a/transfer/figures/push-transfer-process.puml b/specifications/transfer/figures/push-transfer-process.puml similarity index 100% rename from transfer/figures/push-transfer-process.puml rename to specifications/transfer/figures/push-transfer-process.puml diff --git a/transfer/figures/transfer-process-state-machine.png b/specifications/transfer/figures/transfer-process-state-machine.png similarity index 100% rename from transfer/figures/transfer-process-state-machine.png rename to specifications/transfer/figures/transfer-process-state-machine.png diff --git a/transfer/figures/transfer-process-state-machine.puml b/specifications/transfer/figures/transfer-process-state-machine.puml similarity index 100% rename from transfer/figures/transfer-process-state-machine.puml rename to specifications/transfer/figures/transfer-process-state-machine.puml diff --git a/transfer/message/diagram/transfer-completion-message.png b/specifications/transfer/message/diagram/transfer-completion-message.png similarity index 100% rename from transfer/message/diagram/transfer-completion-message.png rename to specifications/transfer/message/diagram/transfer-completion-message.png diff --git a/transfer/message/diagram/transfer-completion-message.puml b/specifications/transfer/message/diagram/transfer-completion-message.puml similarity index 100% rename from transfer/message/diagram/transfer-completion-message.puml rename to specifications/transfer/message/diagram/transfer-completion-message.puml diff --git a/transfer/message/diagram/transfer-error.png b/specifications/transfer/message/diagram/transfer-error.png similarity index 100% rename from transfer/message/diagram/transfer-error.png rename to specifications/transfer/message/diagram/transfer-error.png diff --git a/transfer/message/diagram/transfer-error.puml b/specifications/transfer/message/diagram/transfer-error.puml similarity index 100% rename from transfer/message/diagram/transfer-error.puml rename to specifications/transfer/message/diagram/transfer-error.puml diff --git a/transfer/message/diagram/transfer-process.png b/specifications/transfer/message/diagram/transfer-process.png similarity index 100% rename from transfer/message/diagram/transfer-process.png rename to specifications/transfer/message/diagram/transfer-process.png diff --git a/transfer/message/diagram/transfer-process.puml b/specifications/transfer/message/diagram/transfer-process.puml similarity index 100% rename from transfer/message/diagram/transfer-process.puml rename to specifications/transfer/message/diagram/transfer-process.puml diff --git a/transfer/message/diagram/transfer-request-message.png b/specifications/transfer/message/diagram/transfer-request-message.png similarity index 100% rename from transfer/message/diagram/transfer-request-message.png rename to specifications/transfer/message/diagram/transfer-request-message.png diff --git a/transfer/message/diagram/transfer-request-message.puml b/specifications/transfer/message/diagram/transfer-request-message.puml similarity index 100% rename from transfer/message/diagram/transfer-request-message.puml rename to specifications/transfer/message/diagram/transfer-request-message.puml diff --git a/transfer/message/diagram/transfer-start-message.png b/specifications/transfer/message/diagram/transfer-start-message.png similarity index 100% rename from transfer/message/diagram/transfer-start-message.png rename to specifications/transfer/message/diagram/transfer-start-message.png diff --git a/transfer/message/diagram/transfer-start-message.puml b/specifications/transfer/message/diagram/transfer-start-message.puml similarity index 100% rename from transfer/message/diagram/transfer-start-message.puml rename to specifications/transfer/message/diagram/transfer-start-message.puml diff --git a/transfer/message/diagram/transfer-suspension-message.png b/specifications/transfer/message/diagram/transfer-suspension-message.png similarity index 100% rename from transfer/message/diagram/transfer-suspension-message.png rename to specifications/transfer/message/diagram/transfer-suspension-message.png diff --git a/transfer/message/diagram/transfer-suspension-message.puml b/specifications/transfer/message/diagram/transfer-suspension-message.puml similarity index 100% rename from transfer/message/diagram/transfer-suspension-message.puml rename to specifications/transfer/message/diagram/transfer-suspension-message.puml diff --git a/transfer/message/diagram/transfer-termination-message.png b/specifications/transfer/message/diagram/transfer-termination-message.png similarity index 100% rename from transfer/message/diagram/transfer-termination-message.png rename to specifications/transfer/message/diagram/transfer-termination-message.png diff --git a/transfer/message/diagram/transfer-termination-message.puml b/specifications/transfer/message/diagram/transfer-termination-message.puml similarity index 100% rename from transfer/message/diagram/transfer-termination-message.puml rename to specifications/transfer/message/diagram/transfer-termination-message.puml diff --git a/transfer/message/example/transfer-completion-message.json b/specifications/transfer/message/example/transfer-completion-message.json similarity index 100% rename from transfer/message/example/transfer-completion-message.json rename to specifications/transfer/message/example/transfer-completion-message.json diff --git a/transfer/message/example/transfer-error.json b/specifications/transfer/message/example/transfer-error.json similarity index 100% rename from transfer/message/example/transfer-error.json rename to specifications/transfer/message/example/transfer-error.json diff --git a/transfer/message/example/transfer-process.json b/specifications/transfer/message/example/transfer-process.json similarity index 100% rename from transfer/message/example/transfer-process.json rename to specifications/transfer/message/example/transfer-process.json diff --git a/transfer/message/example/transfer-request-message.json b/specifications/transfer/message/example/transfer-request-message.json similarity index 100% rename from transfer/message/example/transfer-request-message.json rename to specifications/transfer/message/example/transfer-request-message.json diff --git a/transfer/message/example/transfer-start-message.json b/specifications/transfer/message/example/transfer-start-message.json similarity index 100% rename from transfer/message/example/transfer-start-message.json rename to specifications/transfer/message/example/transfer-start-message.json diff --git a/transfer/message/example/transfer-suspension-message.json b/specifications/transfer/message/example/transfer-suspension-message.json similarity index 100% rename from transfer/message/example/transfer-suspension-message.json rename to specifications/transfer/message/example/transfer-suspension-message.json diff --git a/transfer/message/example/transfer-termination-message.json b/specifications/transfer/message/example/transfer-termination-message.json similarity index 100% rename from transfer/message/example/transfer-termination-message.json rename to specifications/transfer/message/example/transfer-termination-message.json diff --git a/transfer/message/schema/transfer-completion-message-schema.json b/specifications/transfer/message/schema/transfer-completion-message-schema.json similarity index 100% rename from transfer/message/schema/transfer-completion-message-schema.json rename to specifications/transfer/message/schema/transfer-completion-message-schema.json diff --git a/transfer/message/schema/transfer-error-schema.json b/specifications/transfer/message/schema/transfer-error-schema.json similarity index 100% rename from transfer/message/schema/transfer-error-schema.json rename to specifications/transfer/message/schema/transfer-error-schema.json diff --git a/transfer/message/schema/transfer-process-schema.json b/specifications/transfer/message/schema/transfer-process-schema.json similarity index 100% rename from transfer/message/schema/transfer-process-schema.json rename to specifications/transfer/message/schema/transfer-process-schema.json diff --git a/transfer/message/schema/transfer-request-message-schema.json b/specifications/transfer/message/schema/transfer-request-message-schema.json similarity index 100% rename from transfer/message/schema/transfer-request-message-schema.json rename to specifications/transfer/message/schema/transfer-request-message-schema.json diff --git a/transfer/message/schema/transfer-start-message-schema.json b/specifications/transfer/message/schema/transfer-start-message-schema.json similarity index 100% rename from transfer/message/schema/transfer-start-message-schema.json rename to specifications/transfer/message/schema/transfer-start-message-schema.json diff --git a/transfer/message/schema/transfer-suspension-message-schema.json b/specifications/transfer/message/schema/transfer-suspension-message-schema.json similarity index 100% rename from transfer/message/schema/transfer-suspension-message-schema.json rename to specifications/transfer/message/schema/transfer-suspension-message-schema.json diff --git a/transfer/message/schema/transfer-termination-message-schema.json b/specifications/transfer/message/schema/transfer-termination-message-schema.json similarity index 100% rename from transfer/message/schema/transfer-termination-message-schema.json rename to specifications/transfer/message/schema/transfer-termination-message-schema.json diff --git a/transfer/transfer.process.binding.https.md b/specifications/transfer/transfer.process.binding.https.md similarity index 100% rename from transfer/transfer.process.binding.https.md rename to specifications/transfer/transfer.process.binding.https.md diff --git a/transfer/transfer.process.protocol.md b/specifications/transfer/transfer.process.protocol.md similarity index 84% rename from transfer/transfer.process.protocol.md rename to specifications/transfer/transfer.process.protocol.md index 529224e..b015829 100644 --- a/transfer/transfer.process.protocol.md +++ b/specifications/transfer/transfer.process.protocol.md @@ -36,7 +36,7 @@ A push transfer is when the [=Provider=]'s data plane initiates sending data to after the [=Consumer=] has issued a [Transfer Request Message](#transfer-request-message), the [=Provider=] begins data transmission to an endpoint specified by the [=Consumer=] using an agreed-upon wire protocol. -![](./figures/push-transfer-process.png "Push Transfer Process") +![](figures/push-transfer-process.png "Push Transfer Process") _Note that the illustration of the sequence is only exemplary. The activation of actors is not determined, also, responses, parameters, possible recursions, and interactions between the components of one participant are not shown._ @@ -47,7 +47,7 @@ A pull transfer is when the [=Consumer=]'s data plane initiates retrieval of dat example, after the [=Provider=] has issued a [Transfer Start Message](#transfer-start-message), the [=Consumer=] can request the data from the [=Provider=]-specified endpoint. -![](./figures/pull-transfer-process.png "Pull Transfer Process") +![](figures/pull-transfer-process.png "Pull Transfer Process") _Note that the illustration of the sequence is only exemplary. The activation of actors is not determined, also, responses, parameters, possible recursions, and interactions between the components of one participant are not shown._ @@ -76,7 +76,7 @@ The TP states are: The TP state machine is represented in the following diagram: -![](./figures/transfer-process-state-machine.png "Transfer Process State Machine") +![](figures/transfer-process-state-machine.png "Transfer Process State Machine") Transitions marked with `C` indicate a message sent by the [=Consumer=], transitions marked with `P` indicate a [=Provider=] message. Terminal states are final; the state machine may not transition to another state. @@ -94,9 +94,9 @@ Further Dataspace specifications may define additional optional serialization fo | **Sent by** | [=Consumer=] | | **Resulting state** | `REQUESTED` | | **Response** | [ACK](#ack-transfer-process) or [ERROR](#error-transfer-error) | -| **Schema** | [JSON Schema](./message/schema/transfer-request-message-schema.json) | -| **Example** | [Message](./message/example/transfer-request-message.json) | -| **Diagram(s)** | ![](./message/diagram/transfer-request-message.png "Transfer Request Message") | +| **Schema** | [JSON Schema](message/schema/transfer-request-message-schema.json) | +| **Example** | [Message](message/example/transfer-request-message.json) | +| **Diagram(s)** | ![](message/diagram/transfer-request-message.png "Transfer Request Message") | The Transfer Request Message is sent by a [=Consumer=] to initiate a TP. @@ -134,9 +134,9 @@ again, the [=Provider=] should respond with an appropriate [Transfer Start Messa | **Sent by** | [=Provider=] | | **Resulting state** | `STARTED` | | **Response** | [ACK](#ack-transfer-process) or [ERROR](#error-transfer-error) | -| **Schema** | [JSON Schema](./message/schema/transfer-start-message-schema.json) | -| **Example** | [Message](./message/example/transfer-start-message.json) | -| **Diagram(s)** | ![](./message/diagram/transfer-start-message.png "Transfer Start Message") | +| **Schema** | [JSON Schema](message/schema/transfer-start-message-schema.json) | +| **Example** | [Message](message/example/transfer-start-message.json) | +| **Diagram(s)** | ![](message/diagram/transfer-start-message.png "Transfer Start Message") | The Transfer Start Message is sent by the [=Provider=] to indicate the data transfer has been initiated. @@ -156,9 +156,9 @@ The Transfer Start Message is sent by the [=Provider=] to indicate the data tran | **Sent by** | [=Consumer=], [=Provider=] | | **Resulting state** | `SUSPENDED` | | **Response** | [ACK](#ack-transfer-process) or [ERROR](#error-transfer-error) | -| **Schema** | [JSON Schema](./message/schema/transfer-suspension-message-schema.json) | -| **Example** | [Message](./message/example/transfer-suspension-message.json) | -| **Diagram(s)** | ![](./message/diagram/transfer-suspension-message.png "Transfer Suspension Message") | +| **Schema** | [JSON Schema](message/schema/transfer-suspension-message-schema.json) | +| **Example** | [Message](message/example/transfer-suspension-message.json) | +| **Diagram(s)** | ![](message/diagram/transfer-suspension-message.png "Transfer Suspension Message") | The Transfer Suspension Message is sent by the [=Provider=] or [=Consumer=] when either of them needs to temporarily suspend the TP. @@ -170,9 +170,9 @@ suspend the TP. | **Sent by** | [=Consumer=], [=Provider=] | | **Resulting state** | `COMPLETED` | | **Response** | [ACK](#ack-transfer-process) or [ERROR](#error-transfer-error) | -| **Schema** | [JSON Schema](./message/schema/transfer-completion-message-schema.json) | -| **Example** | [Message](./message/example/transfer-completion-message.json) | -| **Diagram(s)** | ![](./message/diagram/transfer-completion-message.png "Transfer Completion Message") | +| **Schema** | [JSON Schema](message/schema/transfer-completion-message-schema.json) | +| **Example** | [Message](message/example/transfer-completion-message.json) | +| **Diagram(s)** | ![](message/diagram/transfer-completion-message.png "Transfer Completion Message") | The Transfer Completion Message is sent by the [=Provider=] or [=Consumer=] when a data transfer has completed. Note that some [=Connector=] implementations may optimize completion @@ -186,9 +186,9 @@ need to be sent. | **Sent by** | [=Consumer=], [=Provider=] | | **Resulting state** | `TERMINATED` | | **Response** | [ACK](#ack-transfer-process) or [ERROR](#error-transfer-error) | -| **Schema** | [JSON Schema](./message/schema/transfer-termination-message-schema.json) | -| **Example** | [Message](./message/example/transfer-termination-message.json) | -| **Diagram(s)** | ![](./message/diagram/transfer-termination-message.png "Transfer Termination Message") | +| **Schema** | [JSON Schema](message/schema/transfer-termination-message-schema.json) | +| **Example** | [Message](message/example/transfer-termination-message.json) | +| **Diagram(s)** | ![](message/diagram/transfer-termination-message.png "Transfer Termination Message") | The Transfer Termination Message is sent by the [=Provider=] or [=Consumer=] at any point except a terminal state to indicate the TP should stop and be placed in a terminal state. If the termination was due to an error, the sender may @@ -204,9 +204,9 @@ provided in protocol-dependent forms, e.g., for an HTTPS binding in the request | | | |----------------|----------------------------------------------------------------| | **Sent by** | [=Consumer=], [=Provider=] | -| **Schema** | [JSON Schema](./message/schema/transfer-process-schema.json) | -| **Example** | [Process](./message/example/transfer-process.json) | -| **Diagram(s)** | ![](./message/diagram/transfer-process.png "Transfer Process") | +| **Schema** | [JSON Schema](message/schema/transfer-process-schema.json) | +| **Example** | [Process](message/example/transfer-process.json) | +| **Diagram(s)** | ![](message/diagram/transfer-process.png "Transfer Process") | The Transfer Process is an object returned by a [=Consumer=] or [=Provider=] indicating a successful state change happened. @@ -216,9 +216,9 @@ happened. | | | |----------------|------------------------------------------------------------| | **Sent by** | [=Consumer=], [=Provider=] | -| **Schema** | [JSON Schema](./message/schema/transfer-error-schema.json) | -| **Example** | [Process](./message/example/transfer-error.json) | -| **Diagram(s)** | ![](./message/diagram/transfer-error.png "Transfer Error") | +| **Schema** | [JSON Schema](message/schema/transfer-error-schema.json) | +| **Example** | [Process](message/example/transfer-error.json) | +| **Diagram(s)** | ![](message/diagram/transfer-error.png "Transfer Error") | The Transfer Error is an object returned by a [=Consumer=] or [=Provider=] indicating an error has occurred. It does not cause a state transition.