# Information Model

## 2 Dataspace Information Model

The following sections outline the Dataspace Information Model, which form the foundation of this specification. Some aspects of this section describe additional concepts of Dataspaces and provide context for the Dataspace Protocol, those are considered as non-normative. Further information on the functional requirements of a Dataspace can be found for example in the [IDSA Rulebook](https://docs.internationaldataspaces.org/idsa-rulebook).

### 2.1 Dataspace Entity Relationships

#### 2.1.1 Context of the Dataspace Protocol

In a broader context, the Dataspace Protocol enables the interaction between participants of a Dataspace. This may require additional concepts, which are not in the scope of this specification. The definitions below are therefore informative and not-normative. The relationships between the primary [Dataspace](https://docs.internationaldataspaces.org/ids-knowledgebase/dataspace-protocol/terminology#dataspace) entities are defined as follows:

![](https://377581754-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlnGZQUB3A7aTQkUjaEA4%2Fuploads%2Fgit-blob-c62080bb211fecee11adedc80484d601014fd65d%2Fim.dataspace.relationships.png?alt=media)

Note that all relationships are multiplicities unless specified. `Dataspace Authority` and `Dataspace Registry` are non-normative entities.

* A [Dataspace Authority](https://docs.internationaldataspaces.org/ids-knowledgebase/dataspace-protocol/terminology#dataspace-authority) manages one or more [Dataspaces](https://docs.internationaldataspaces.org/ids-knowledgebase/dataspace-protocol/terminology#dataspace). This will include [Participant](https://docs.internationaldataspaces.org/ids-knowledgebase/dataspace-protocol/terminology#participant) registration and may entail mandating business and/or technical requirements. For example, a [Dataspace Authority](https://docs.internationaldataspaces.org/ids-knowledgebase/dataspace-protocol/terminology#dataspace-authority) may require [Participants](https://docs.internationaldataspaces.org/ids-knowledgebase/dataspace-protocol/terminology#participant) to obtain some form of business certification. A [Dataspace Authority](https://docs.internationaldataspaces.org/ids-knowledgebase/dataspace-protocol/terminology#dataspace-authority) may also impose technical requirements such as support for the technical enforcement of specific usage policies.
* A [Dataspace Registry](https://docs.internationaldataspaces.org/ids-knowledgebase/dataspace-protocol/terminology#dataspace-registration-service--dataspace-registry-) records dataspace participants.
* A [Participant](https://docs.internationaldataspaces.org/ids-knowledgebase/dataspace-protocol/terminology#participant) is a member of one or more [Dataspaces](https://docs.internationaldataspaces.org/ids-knowledgebase/dataspace-protocol/terminology#dataspace). A [Participant](https://docs.internationaldataspaces.org/ids-knowledgebase/dataspace-protocol/terminology#participant) registers [Participant Agents](https://docs.internationaldataspaces.org/ids-knowledgebase/dataspace-protocol/terminology#participant-agent) that perform tasks on its behalf.
* A [Participant Agent](https://docs.internationaldataspaces.org/ids-knowledgebase/dataspace-protocol/terminology#participant-agent) performs tasks such as publishing a [Catalog](https://docs.internationaldataspaces.org/ids-knowledgebase/dataspace-protocol/terminology#catalog) or engaging in a [Transfer Process](https://docs.internationaldataspaces.org/ids-knowledgebase/dataspace-protocol/terminology#transfer-process). In order to accomplish these tasks, a [Participant Agent](https://docs.internationaldataspaces.org/ids-knowledgebase/dataspace-protocol/terminology#participant-agent) may use a ***verifiable presentation*** generated from a ***credential*** obtained from a third-party [Credential Issuer](https://docs.internationaldataspaces.org/ids-knowledgebase/dataspace-protocol/terminology#credential-issuer). A [Participant Agent](https://docs.internationaldataspaces.org/ids-knowledgebase/dataspace-protocol/terminology#participant-agent) may also use an ***ID token*** issued by a third-party [Identity Provider](https://docs.internationaldataspaces.org/ids-knowledgebase/dataspace-protocol/terminology#identity-provider). Note that a [Participant Agent](https://docs.internationaldataspaces.org/ids-knowledgebase/dataspace-protocol/terminology#participant-agent) is a logical construct and does not necessarily correspond to a single runtime process.
* An [Identity Provider](https://docs.internationaldataspaces.org/ids-knowledgebase/dataspace-protocol/terminology#identity-provider) is a trust anchor that generates `ID tokens` used to verify the identity of a [Participant Agent](https://docs.internationaldataspaces.org/ids-knowledgebase/dataspace-protocol/terminology#participant-agent). Multiple identity providers may operate in a [Dataspace](https://docs.internationaldataspaces.org/ids-knowledgebase/dataspace-protocol/terminology#dataspace). The types and semantics of ID tokens are not part of this specification. An [Identity Provider](https://docs.internationaldataspaces.org/ids-knowledgebase/dataspace-protocol/terminology#identity-provider) may be a third-party or a [Participant](https://docs.internationaldataspaces.org/ids-knowledgebase/dataspace-protocol/terminology#participant) itself (for example, in the case of decentralized identifiers).
* A [Credential Issuer](https://docs.internationaldataspaces.org/ids-knowledgebase/dataspace-protocol/terminology#credential-issuer) issues *verifiable credentials* used by [Participant Agents](https://docs.internationaldataspaces.org/ids-knowledgebase/dataspace-protocol/terminology#participant-agent) to allow access to [Datasets](https://docs.internationaldataspaces.org/ids-knowledgebase/dataspace-protocol/terminology#dataset) and verify usage control.

Further non-normative information on the context of the Dataspace Protocol can be found for example in the [IDSA Rulebook](https://docs.internationaldataspaces.org/idsa-rulebook).

#### 2.1.2 Dataspace Protocol specific

The Dataspace Protocol shall enable the interactions between the [Participant Agents](https://docs.internationaldataspaces.org/ids-knowledgebase/dataspace-protocol/terminology#participant-agent) in a Dataspace. The following concepts are therefore normative.

The diagram below depicts the relationships between [Participant Agent](https://docs.internationaldataspaces.org/ids-knowledgebase/dataspace-protocol/terminology#participant-agent) types:

![](https://377581754-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlnGZQUB3A7aTQkUjaEA4%2Fuploads%2Fgit-blob-22505a056c098da7b001b2b8908059cc4b989770%2Fim.participant.entities.png?alt=media)

* A [Catalog Service](https://docs.internationaldataspaces.org/ids-knowledgebase/dataspace-protocol/terminology#catalog-service) is a [Participant Agent](https://docs.internationaldataspaces.org/ids-knowledgebase/dataspace-protocol/terminology#participant-agent) that makes a [DCAT Catalog](https://www.w3.org/TR/vocab-dcat-3/#Class:Catalog) available to other [Participants](https://docs.internationaldataspaces.org/ids-knowledgebase/dataspace-protocol/terminology#participant).
* A [Catalog](https://docs.internationaldataspaces.org/ids-knowledgebase/dataspace-protocol/terminology#catalog) contains one or more [Datasets](https://docs.internationaldataspaces.org/ids-knowledgebase/dataspace-protocol/terminology#dataset), which are [DCAT Datasets](https://www.w3.org/TR/vocab-dcat-3/#Class:Dataset). A [Catalog](https://docs.internationaldataspaces.org/ids-knowledgebase/dataspace-protocol/terminology#catalog) also contains ***at least one*** [DCAT DataService](https://www.w3.org/TR/vocab-dcat-3/#Class:Data_Service) that references a [Connector](https://docs.internationaldataspaces.org/ids-knowledgebase/dataspace-protocol/terminology#connector--data-service-) where [Datasets](https://docs.internationaldataspaces.org/ids-knowledgebase/dataspace-protocol/terminology#dataset) may be obtained.
* A [Dataset](https://docs.internationaldataspaces.org/ids-knowledgebase/dataspace-protocol/terminology#dataset) has ***at least one*** [Offer](https://docs.internationaldataspaces.org/ids-knowledgebase/dataspace-protocol/terminology#offer), which is an [ODRL Offer](https://www.w3.org/TR/odrl-model/#policy-offer) describing the [Usage Policy](https://docs.internationaldataspaces.org/ids-knowledgebase/dataspace-protocol/terminology#policy) associated with the [Dataset](https://docs.internationaldataspaces.org/ids-knowledgebase/dataspace-protocol/terminology#dataset).
* A [Connector](https://docs.internationaldataspaces.org/ids-knowledgebase/dataspace-protocol/terminology#connector--data-service-) is a [Participant Agent](https://docs.internationaldataspaces.org/ids-knowledgebase/dataspace-protocol/terminology#participant-agent) that performs [Contract Negotiation](https://docs.internationaldataspaces.org/ids-knowledgebase/dataspace-protocol/terminology#contract-negotiation) and [Transfer Process](https://docs.internationaldataspaces.org/ids-knowledgebase/dataspace-protocol/terminology#transfer-process) operations with another [Connector](https://docs.internationaldataspaces.org/ids-knowledgebase/dataspace-protocol/terminology#connector--data-service-). An outcome of a [Contract Negotiation](https://docs.internationaldataspaces.org/ids-knowledgebase/dataspace-protocol/terminology#contract-negotiation) may be the production of an [Agreement](https://docs.internationaldataspaces.org/ids-knowledgebase/dataspace-protocol/terminology#agreement), which is an [ODRL Agreement](https://www.w3.org/TR/odrl-model/#policy-agreement) defining the [Usage Policy](https://docs.internationaldataspaces.org/ids-knowledgebase/dataspace-protocol/terminology#policy) agreed to for a [Dataset](https://docs.internationaldataspaces.org/ids-knowledgebase/dataspace-protocol/terminology#dataset).

### 2.2 Classes

Not all [Dataspace](https://docs.internationaldataspaces.org/ids-knowledgebase/dataspace-protocol/terminology#dataspace) entities have a concrete *technical* materialization; some entities may exist as purely logical constructs. For example, a [Dataspace Authority](https://docs.internationaldataspaces.org/ids-knowledgebase/dataspace-protocol/terminology#dataspace-authority) and a [Participant Agent](https://docs.internationaldataspaces.org/ids-knowledgebase/dataspace-protocol/terminology#participant-agent) have no representation in the protocol message flows that constitute [Dataspace](https://docs.internationaldataspaces.org/ids-knowledgebase/dataspace-protocol/terminology#dataspace) interactions. This section outlines the classes that comprise the concrete elements of the model, i.e., those that are represented in protocol message flows.

***Note 1:*** The classes and definitions used in the Dataspace Protocol are reused from different standards and specifications as much as possible, in particular, [DCAT](https://www.w3.org/TR/vocab-dcat-3) and [ODRL](https://www.w3.org/TR/odrl/). As, however, the external definitions allow different interpretations or provide more attributes than required, the Dataspace Protocol is leveraging *profiles* of the original definitions rather than the complete original expressiveness. A *profile* in this sense is a restriction or subset of an external definition, enforcing that every occurrence of an externally defined class is always conformant with the original definition. However, not every standard-compliant class might be compliant to the dataspace profile.

#### 2.2.1 Catalog

A [Catalog](https://docs.internationaldataspaces.org/ids-knowledgebase/dataspace-protocol/terminology#catalog) is a [DCAT Catalog](https://www.w3.org/TR/vocab-dcat-3/#Class:Catalog) with the following attributes:

* 0..N [Datasets](https://docs.internationaldataspaces.org/ids-knowledgebase/dataspace-protocol/terminology#dataset). Since a [Catalog](https://docs.internationaldataspaces.org/ids-knowledgebase/dataspace-protocol/terminology#catalog) may be dynamically generated for a request based on the requesting [Participant's](https://docs.internationaldataspaces.org/ids-knowledgebase/dataspace-protocol/terminology#participant) credentials it is possible for it to contain 0 matching [Datasets](https://docs.internationaldataspaces.org/ids-knowledgebase/dataspace-protocol/terminology#dataset). (DCAT PROFILE)
* 1..N [DCAT DataService](https://www.w3.org/TR/vocab-dcat-3/#Class:Data_Service) that references a [Connector](https://docs.internationaldataspaces.org/ids-knowledgebase/dataspace-protocol/terminology#connector--data-service-) where [Datasets](https://docs.internationaldataspaces.org/ids-knowledgebase/dataspace-protocol/terminology#dataset) may be obtained. (DCAT PROFILE)

#### 2.2.2 Dataset

A [Dataset](https://docs.internationaldataspaces.org/ids-knowledgebase/dataspace-protocol/terminology#dataset) is a [DCAT Dataset](https://www.w3.org/TR/vocab-dcat-3/#Class:Dataset) with the following attributes:

* 1..N `hasPolicy` attributes that contain an [ODRL `Offer`](https://www.w3.org/TR/odrl-vocab/#term-Offer) defining the [Usage Policy](https://docs.internationaldataspaces.org/ids-knowledgebase/dataspace-protocol/terminology#policy) associated with the [Dataset](https://docs.internationaldataspaces.org/ids-knowledgebase/dataspace-protocol/terminology#dataset). ***Offers must NOT contain any target attributes. The target of an*** [***Offer***](https://docs.internationaldataspaces.org/ids-knowledgebase/dataspace-protocol/terminology#offer) ***is the associated*** [***Dataset***](https://docs.internationaldataspaces.org/ids-knowledgebase/dataspace-protocol/terminology#dataset)***.*** (ODRL PROFILE)
* 1..N [DCAT Distributions](https://www.w3.org/TR/vocab-dcat-3/#Class:Distribution). Each distribution must have at least one `DataService` which specifies where the distribution is obtained. Specifically, a `DataService` specifies the endpoint for initiating a [Contract Negotiation](https://docs.internationaldataspaces.org/ids-knowledgebase/dataspace-protocol/terminology#contract-negotiation) and [Transfer Process](https://docs.internationaldataspaces.org/ids-knowledgebase/dataspace-protocol/terminology#transfer-process). (DCAT PROFILE)

#### 2.2.3 Offer

An [Offer](https://docs.internationaldataspaces.org/ids-knowledgebase/dataspace-protocol/terminology#offer) is an [ODRL Offer](https://www.w3.org/TR/odrl-model/#policy-offer) with the following attributes:

* An ODRL `uid` is represented as an "@id" that is a unique identifier. (ODRL PROFILE)
* The [Offer](https://docs.internationaldataspaces.org/ids-knowledgebase/dataspace-protocol/terminology#offer) must be unique to a [Dataset](https://docs.internationaldataspaces.org/ids-knowledgebase/dataspace-protocol/terminology#dataset) since the target of the [Offer](https://docs.internationaldataspaces.org/ids-knowledgebase/dataspace-protocol/terminology#offer) is derived from its enclosing context.
* The value of the `target` attribute is the dataset id. Except if the \[Offer][Catalog](https://docs.internationaldataspaces.org/ids-knowledgebase/dataspace-protocol/terminology#offer) is used in an enclosing [Catalog](https://docs.internationaldataspaces.org/ids-knowledgebase/dataspace-protocol/terminology#catalog) or [Dataset](https://docs.internationaldataspaces.org/ids-knowledgebase/dataspace-protocol/terminology#dataset), then the there must not be any `target` attribute set.

#### 2.2.4 Agreement

An [Agreement](https://docs.internationaldataspaces.org/ids-knowledgebase/dataspace-protocol/terminology#agreement) is an [ODRL Agreement](https://www.w3.org/TR/odrl-model/#policy-agreement) with the following attributes:

* The [Agreement](https://docs.internationaldataspaces.org/ids-knowledgebase/dataspace-protocol/terminology#agreement) class must include one `target` attribute that is the identifier of the [Dataset](https://docs.internationaldataspaces.org/ids-knowledgebase/dataspace-protocol/terminology#dataset) the [Agreement](https://docs.internationaldataspaces.org/ids-knowledgebase/dataspace-protocol/terminology#agreement) is associated with. An [Agreement](https://docs.internationaldataspaces.org/ids-knowledgebase/dataspace-protocol/terminology#agreement) is therefore associated with **EXACTLY ONE** [Dataset](https://docs.internationaldataspaces.org/ids-knowledgebase/dataspace-protocol/terminology#dataset). (ODRL PROFILE)
