diff --git a/catalog/catalog.protocol.md b/catalog/catalog.protocol.md index 031552d3..db0129d6 100644 --- a/catalog/catalog.protocol.md +++ b/catalog/catalog.protocol.md @@ -118,8 +118,8 @@ A [Dataset](../model/terminology.md#dataset) is a [DCAT Dataset](https://www.w3. #### 3.1.1 odrl:hasPolicy -A [Dataset](../model/terminology.md#dataset) must have 1..N `hasPolicy` attributes that contain an [ODRL `Offer`](https://www.w3.org/TR/odrl-vocab/#term-Offer) defining the [Usage Policy](../model/terminology.md#policy) associated with the [Dataset](../model/terminology.md#dataset). Offers must NOT contain any -target attributes. The target of an [Offer](../model/terminology.md#offer) is the associated [Dataset](../model/terminology.md#dataset). +A [Dataset](../model/terminology.md#dataset) must have 1..N `hasPolicy` attributes that contain an [ODRL `Offer`](https://www.w3.org/TR/odrl-vocab/#term-Offer) defining the [Usage Policy](../model/terminology.md#policy) associated with the [Dataset](../model/terminology.md#dataset). +**Offers must contain one root `target` property that is the id of the associated [Dataset](./terminology.md#dataset). Policy constraints must not contain `target` properties.** > Note: As `odrl:hasPolicy rdfs:domain odrl:Asset`, each [Dataset](../model/terminology.md#dataset) is also an `odrl:Asset` from an ODRL perspective. @@ -129,7 +129,7 @@ A [Dataset](../model/terminology.md#dataset) may contain 0..N [DCAT Distribution the distribution is obtained. Specifically, a `DataService` specifies the endpoint for initiating a [Contract Negotiation](../model/terminology.md#contract-negotiation) and [Transfer Process](../model/terminology.md#transfer-process). A Distribution may have 0..N `hasPolicy` attributes that contain an [ODRL `Offer`](https://www.w3.org/TR/odrl-vocab/#term-Offer) defining the [Usage Policy](../model/terminology.md#policy) associated with the [Dataset](../model/terminology.md#dataset) and this explicit `Distribution`. -[Offers](../model/terminology.md#offer) must NOT contain any target attributes. The target of an [Offer](../model/terminology.md#offer) is the [Dataset](../model/terminology.md#dataset) that contains the distribution. +**Offers must contain one root `target` property that is the id of the associated [Dataset](./terminology.md#dataset). Policy constraints must not contain `target` properties.** Support for `hasPolicy` attributes on a `Distribution` is optional. Implementations may choose not to support this feature, in which case they should return an appropriate error message to clients. @@ -199,5 +199,4 @@ a single [Catalog Service](../model/terminology.md#catalog-service). The broker The [Catalog](../model/terminology.md#catalog) is a [DCAT Catalog](https://www.w3.org/TR/vocab-dcat-3/#Class:Catalog) with the following restrictions: -1. Each [ODRL `Offer`](https://www.w3.org/TR/odrl-vocab/#term-Offer) must be unique to a [Dataset](../model/terminology.md#dataset) since the target of the [Offer](../model/terminology.md#offer) is derived from its enclosing context. -2. Each [ODRL `Offer`](https://www.w3.org/TR/odrl-vocab/#term-Offer) must NOT include an explicit `target` attribute. +1. Each [ODRL `Offer`](https://www.w3.org/TR/odrl-vocab/#term-Offer) must contain only one root `target` attribute. Policy constraints may not contain `target` attributes. diff --git a/model/model.md b/model/model.md index 5ad9430e..361d4c61 100644 --- a/model/model.md +++ b/model/model.md @@ -56,8 +56,7 @@ A [Catalog](./terminology.md#catalog) is a [DCAT Catalog](https://www.w3.org/TR/ A [Dataset](./terminology.md#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](./terminology.md#policy) associated with the [Dataset](./terminology.md#dataset). **_Offers must NOT contain any target attributes. The - target of an [Offer](./terminology.md#offer) is the associated [Dataset](./terminology.md#dataset)._** (ODRL PROFILE) +- 1..N `hasPolicy` attributes that contain an [ODRL `Offer`](https://www.w3.org/TR/odrl-vocab/#term-Offer) defining the [Usage Policy](./terminology.md#policy) associated with the [Dataset](./terminology.md#dataset). **Offers must contain one root `target` property that is the id of the associated [Dataset](./terminology.md#dataset). Policy constraints must not contain `target` properties.** - 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](./terminology.md#contract-negotiation) and [Transfer Process](./terminology.md#transfer-process). (DCAT PROFILE) @@ -66,8 +65,7 @@ A [Dataset](./terminology.md#dataset) is a [DCAT Dataset](https://www.w3.org/TR/ An [Offer](./terminology.md#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 UUID. (ODRL PROFILE) -- The [Offer](./terminology.md#offer) must be unique to a [Dataset](./terminology.md#dataset) since the target of the [Offer](./terminology.md#offer) is derived from its enclosing context. -- The [Offer](./terminology.md#offer) must NOT include an explicit `target` attribute. +- An a `target` attribute that is the dataset id. ## 2.2.4 Agreement diff --git a/negotiation/contract.negotiation.binding.https.md b/negotiation/contract.negotiation.binding.https.md index dab2425c..aa566b8b 100644 --- a/negotiation/contract.negotiation.binding.https.md +++ b/negotiation/contract.negotiation.binding.https.md @@ -81,7 +81,6 @@ Authorization: ... "@context": "https://w3id.org/dspace/v0.8/context.json", "@type": "dspace:ContractRequest" "dspace:consumerPid": "urn:uuid:32541fe6-c580-409e-85a8-8a9a32fbe833", - "dspace:dataset": "urn:uuid:3dd1add8-4d2d-569e-d634-8394a8836a88", "dspace:offerId": "urn:uuid:2828282:3dd1add8-4d2d-569e-d634-8394a8836a88", "dspace:callbackAddress": "https://..." } @@ -197,7 +196,6 @@ Authorization: ... "@context": "https://w3id.org/dspace/v0.8/context.json", "@type": "dspace:ContractOfferMessage" "dspace:providerPid": "urn:uuid:dcbf434c-eacf-4582-9a02-f8dd50120fd3", - "dspace:dataset": "urn:uuid:3dd1add8-4d2d-569e-d634-8394a8836a88", "dspace:offer": { "@type": "odrl:Offer", "@id": "...", diff --git a/negotiation/contract.negotiation.protocol.md b/negotiation/contract.negotiation.protocol.md index 090c1b8f..ecd78025 100644 --- a/negotiation/contract.negotiation.protocol.md +++ b/negotiation/contract.negotiation.protocol.md @@ -46,7 +46,7 @@ The CN state machine is transitioned upon receipt and acknowledgement of a messa ### Notes - Concrete wire formats are defined by the protocol binding, e.g. HTTPS. -- All [Policy](../model/terminology.md#policy) types ([Offer](../model/terminology.md#offer), [Agreement](../model/terminology.md#agreement)) must contain an unique identifier in the form of a URI. GUIDs can also be used in the form of URNs, for instance following the +- All [Policy](../model/terminology.md#policy) types ([Offer](../model/terminology.md#offer), [Agreement](../model/terminology.md#agreement)) must contain a unique identifier in the form of a URI. GUIDs can also be used in the form of URNs, for instance following the pattern . - An [ODRL Agreement](https://www.w3.org/TR/odrl-vocab/#term-Agreement) must have a target property containing the [Dataset](../model/terminology.md#dataset) id. diff --git a/negotiation/message/contract-offer-message_initial.json b/negotiation/message/contract-offer-message_initial.json index 0bda4919..fc704cde 100644 --- a/negotiation/message/contract-offer-message_initial.json +++ b/negotiation/message/contract-offer-message_initial.json @@ -2,7 +2,6 @@ "@context": "https://w3id.org/dspace/v0.8/context.json", "@type": "dspace:ContractOfferMessage", "dspace:providerPid": "urn:uuid:a343fcbf-99fc-4ce8-8e9b-148c97605aab", - "dspace:dataset": "urn:uuid:3dd1add8-4d2d-569e-d634-8394a8836a88", "dspace:offer": { "@type": "odrl:Offer", "@id": "urn:uuid:d526561f-528e-4d5a-ae12-9a9dd9b7a518", diff --git a/negotiation/message/contract-request-message_initial.json b/negotiation/message/contract-request-message_initial.json index 54626058..f4966599 100644 --- a/negotiation/message/contract-request-message_initial.json +++ b/negotiation/message/contract-request-message_initial.json @@ -1,7 +1,6 @@ { "@context": "https://w3id.org/dspace/v0.8/context.json", "@type": "dspace:ContractRequestMessage", - "dspace:dataset": "urn:uuid:3dd1add8-4d2d-569e-d634-8394a8836a88", "dspace:consumerPid": "urn:uuid:32541fe6-c580-409e-85a8-8a9a32fbe833", "dspace:offer": { "@type": "odrl:Offer", diff --git a/negotiation/message/diagram/contract-request-message_initial.png b/negotiation/message/diagram/contract-request-message_initial.png index 2dc83fdd..6cde3262 100644 Binary files a/negotiation/message/diagram/contract-request-message_initial.png and b/negotiation/message/diagram/contract-request-message_initial.png differ diff --git a/negotiation/message/diagram/contract-request-message_initial.puml b/negotiation/message/diagram/contract-request-message_initial.puml index 8e1db699..66357d6e 100644 --- a/negotiation/message/diagram/contract-request-message_initial.puml +++ b/negotiation/message/diagram/contract-request-message_initial.puml @@ -9,7 +9,6 @@ hide empty description class "dspace:ContractRequestMessage" { @context : "https://w3id.org/dspace/v0.8/context.json" @type : dspace:ContractRequestMessage - dspace:dataset : String dspace:consumerPid : String dspace:offer : odrl:Offer dspace:callbackAddress : String @@ -23,4 +22,4 @@ class odrl:Offer { "dspace:ContractRequestMessage" "1" *-- "1" "odrl:Offer" : "dspace:offer" -@enduml \ No newline at end of file +@enduml diff --git a/releases/v0.8/negotiation/message/contract-offer-message_initial.json b/releases/v0.8/negotiation/message/contract-offer-message_initial.json index 0bda4919..fc704cde 100644 --- a/releases/v0.8/negotiation/message/contract-offer-message_initial.json +++ b/releases/v0.8/negotiation/message/contract-offer-message_initial.json @@ -2,7 +2,6 @@ "@context": "https://w3id.org/dspace/v0.8/context.json", "@type": "dspace:ContractOfferMessage", "dspace:providerPid": "urn:uuid:a343fcbf-99fc-4ce8-8e9b-148c97605aab", - "dspace:dataset": "urn:uuid:3dd1add8-4d2d-569e-d634-8394a8836a88", "dspace:offer": { "@type": "odrl:Offer", "@id": "urn:uuid:d526561f-528e-4d5a-ae12-9a9dd9b7a518", diff --git a/releases/v0.8/negotiation/message/contract-request-message_initial.json b/releases/v0.8/negotiation/message/contract-request-message_initial.json index 54626058..f4966599 100644 --- a/releases/v0.8/negotiation/message/contract-request-message_initial.json +++ b/releases/v0.8/negotiation/message/contract-request-message_initial.json @@ -1,7 +1,6 @@ { "@context": "https://w3id.org/dspace/v0.8/context.json", "@type": "dspace:ContractRequestMessage", - "dspace:dataset": "urn:uuid:3dd1add8-4d2d-569e-d634-8394a8836a88", "dspace:consumerPid": "urn:uuid:32541fe6-c580-409e-85a8-8a9a32fbe833", "dspace:offer": { "@type": "odrl:Offer",