From cf7d3b7014dba02b91cdfcae9242125b500e4807 Mon Sep 17 00:00:00 2001 From: sebbader-sap <107036549+sebbader-sap@users.noreply.github.com> Date: Thu, 15 Feb 2024 09:18:53 +0100 Subject: [PATCH] Replace providerId/consumerId with odrl:assigner / odrl:assignee (#213) * replace providerId/consumerId with odrl:assigner / odrl:assignee * replace providerId/consumerId in contract.negotiation.protocol * fix the ToC in contract.negotiation.binding.https --- common/schema/context.json | 6 +- common/shape/odrl-shapes.ttl | 8 +- .../contract.negotiation.binding.https.md | 85 ++++++------------ negotiation/contract.negotiation.protocol.md | 2 +- .../diagram/contract-agreement-message.png | Bin 25221 -> 24762 bytes .../diagram/contract-agreement-message.puml | 4 +- .../example/contract-agreement-message.json | 4 +- .../example/contract-offer-message.json | 4 +- .../example/contract-request-message.json | 4 +- ...tract.agreement.message.http.transfer.json | 4 +- .../message/schema/contract-schema.json | 11 ++- 11 files changed, 49 insertions(+), 83 deletions(-) diff --git a/common/schema/context.json b/common/schema/context.json index b52480f4..2f3157c9 100644 --- a/common/schema/context.json +++ b/common/schema/context.json @@ -32,8 +32,6 @@ "dspace:dataset": { "@type": "@id" }, "dspace:transportType": { "@type": "@id" }, "dspace:state": { "@type": "@id" }, - "dspace:providerId": { "@type": "@id" }, - "dspace:consumerId": { "@type": "@id" }, "dspace:reason": { "@container": "@set" }, "dspace:catalog": { "@container": "@set" }, "dspace:filter": { "@container": "@set" }, @@ -54,6 +52,8 @@ "odrl:leftOperand": { "@type": "@id" }, "odrl:operator": { "@type": "@id" }, "odrl:rightOperandReference": { "@type": "@id" }, - "odrl:profile": { "@type": "@id", "@container": "@set" } + "odrl:profile": { "@container": "@set" } + "odrl:assigner": { "@type": "@id" }, + "odrl:assignee": { "@type": "@id" } } } diff --git a/common/shape/odrl-shapes.ttl b/common/shape/odrl-shapes.ttl index fb472eff..d8613ce3 100644 --- a/common/shape/odrl-shapes.ttl +++ b/common/shape/odrl-shapes.ttl @@ -60,20 +60,20 @@ dspace_shapes:AgreementShape ] ; sh:property [ a sh:PropertyShape ; - sh:path dspace:providerId ; + sh:path odrl:assigner ; sh:nodeKind sh:IRI ; sh:maxCount 1 ; sh:minCount 1 ; sh:severity sh:Violation ; - sh:message " (AgreementShape): An dspace:providerId property must point to exactly one Provider Node."@en ; + sh:message " (AgreementShape): An odrl:assigner property must point to exactly one Provider Node."@en ; ] ; sh:property [ a sh:PropertyShape ; - sh:path dspace:consumerId ; + sh:path odrl:assignee ; sh:nodeKind sh:IRI ; sh:maxCount 1 ; sh:minCount 1 ; sh:severity sh:Violation ; - sh:message " (AgreementShape): An dspace:consumerId property must point to exactly one Consumer Node."@en ; + sh:message " (AgreementShape): An odrl:assignee property must point to exactly one Consumer Node."@en ; ] ; . diff --git a/negotiation/contract.negotiation.binding.https.md b/negotiation/contract.negotiation.binding.https.md index 47cac59c..0c6173aa 100644 --- a/negotiation/contract.negotiation.binding.https.md +++ b/negotiation/contract.negotiation.binding.https.md @@ -2,61 +2,28 @@ This specification defines a RESTful API over HTTPS for the [Contract Negotiation Protocol](./contract.negotiation.protocol.md). -- [Contract Negotiation HTTPS Binding](#contract-negotiation-https-binding) - - [1 Introduction](#1-introduction) - - [1.1 Prerequisites](#11-prerequisites) - - [1.2 Contract Negotiation Error](#12-contract-negotiation-error) - - [1.2.1 State Transition Errors](#121-state-transition-errors) - - [1.2.2 Object Not Found](#122-object-not-found) - - [1.2.3 Unauthorized Access](#123-unauthorized-access) - - [1.3 Authorization](#13-authorization) - - [2 Provider Path Bindings](#2-provider-path-bindings) - - [2.1 The `negotiations` Endpoint _(Provider-side)_](#21-the-negotiations-endpoint-provider-side) - - [2.1.1 GET](#211-get) - - [Request](#request) - - [Response](#response) - - [2.2 The `negotiations/request` Endpoint _(Provider-side)_](#22-the-negotiationsrequest-endpoint-provider-side) - - [2.2.1 POST](#221-post) - - [Request](#request-1) - - [Response](#response-1) - - [2.3 The `negotiations/:providerPid/request` Endpoint _(Provider-side)_](#23-the-negotiationsproviderpidrequest-endpoint-provider-side) - - [2.3.1 POST](#231-post) - - [Request](#request-2) - - [Response](#response-2) - - [2.4 The `negotiations/:providerPid/events` Endpoint _(Provider-side)_](#24-the-negotiationsproviderpidevents-endpoint-provider-side) - - [2.4.1 POST](#241-post) - - [Request](#request-3) - - [Response](#response-3) - - [2.5 The `negotiations/:providerPid/agreement/verification` Endpoint _(Provider-side)_](#25-the-negotiationsproviderpidagreementverification-endpoint--provider-side) - - [2.5.1 POST](#251-post) - - [Request](#request-4) - - [Response](#response-4) - - [2.6 The `negotiations/:providerPid/termination` Endpoint _(Provider-side)_](#26-the-negotiationsproviderpidtermination-endpoint-provider-side) - - [2.6.1 POST](#261-post) - - [Request](#request-5) - - [Response](#response-5) - - [3 Consumer Callback Path Bindings](#3-consumer-callback-path-bindings) - - [3.1 Prerequisites](#31-prerequisites) - - [3.2 The `negotiations/offers` Endpoint _(Consumer-side)_](#32-the-negotiationsoffers-endpoint-consumer-side) - - [3.2.1 POST](#321-post) - - [Request](#request-6) - - [Response](#response-6) - - [3.3 The `negotiations/:consumerPid/offers` Endpoint _(Consumer-side)_](#33-the-negotiationsconsumerpidoffers-endpoint-consumer-side) - - [3.3.1 POST](#331-post) - - [Request](#request-7) - - [Response](#response-7) - - [3.4 The `negotiations/:consumerPid/agreement` Endpoint _(Consumer-side)_](#34-the-negotiationsconsumerpidagreement-endpoint-consumer-side) - - [3.4.1 POST](#341-post) - - [Request](#request-8) - - [Response](#response-8) - - [3.5 The `negotiations/:consumerPid/events` Endpoint _(Consumer-side)_](#35-the-negotiationsconsumerpidevents-endpoint-consumer-side) - - [3.5.1 POST](#351-post) - - [Request](#request-9) - - [Response](#response-9) - - [3.6 The `negotiations/:consumerPid/termination` Endpoint _(Consumer-side)_](#36-the-negotiationsconsumerpidtermination-endpoint-consumer-side) - - [3.6.1 POST](#361-post) - - [Request](#request-10) - - [Response](#response-10) +- [1 Introduction](#1-introduction) + - [1.1 Prerequisites](#11-prerequisites) + - [1.2 Contract Negotiation Error](#12-contract-negotiation-error) + - [1.2.1 State Transition Errors](#121-state-transition-errors) + - [1.2.2 Object Not Found](#122-object-not-found) + - [1.2.3 Unauthorized Access](#123-unauthorized-access) + - [1.3 Authorization](#13-authorization) +- [2 Provider Path Bindings](#2-provider-path-bindings) + - [2.1 The `negotiations` Endpoint _(Provider-side)_](#21-the-negotiations-endpoint-provider-side) + - [2.2 The `negotiations/request` Endpoint _(Provider-side)_](#22-the-negotiationsrequest-endpoint-provider-side) + - [2.3 The `negotiations/:providerPid/request` Endpoint _(Provider-side)_](#23-the-negotiationsproviderpidrequest-endpoint-provider-side) + - [2.4 The `negotiations/:providerPid/events` Endpoint _(Provider-side)_](#24-the-negotiationsproviderpidevents-endpoint-provider-side) + - [2.5 The `negotiations/:providerPid/agreement/verification` Endpoint _(Provider-side)_](#25-the-negotiationsproviderpidagreementverification-endpoint--provider-side) + - [2.6 The `negotiations/:providerPid/termination` Endpoint _(Provider-side)_](#26-the-negotiationsproviderpidtermination-endpoint-provider-side) +- [3 Consumer Callback Path Bindings](#3-consumer-callback-path-bindings) + - [3.1 Prerequisites](#31-prerequisites) + - [3.2 The `negotiations/offers` Endpoint _(Consumer-side)_](#32-the-negotiationsoffers-endpoint-consumer-side) + - [3.3 The `negotiations/:consumerPid/offers` Endpoint _(Consumer-side)_](#33-the-negotiationsconsumerpidoffers-endpoint-consumer-side) + - [3.4 The `negotiations/:consumerPid/agreement` Endpoint _(Consumer-side)_](#34-the-negotiationsconsumerpidagreement-endpoint-consumer-side) + - [3.5 The `negotiations/:consumerPid/events` Endpoint _(Consumer-side)_](#35-the-negotiationsconsumerpidevents-endpoint-consumer-side) + - [3.6 The `negotiations/:consumerPid/termination` Endpoint _(Consumer-side)_](#36-the-negotiationsconsumerpidtermination-endpoint-consumer-side) + ## 1 Introduction @@ -368,8 +335,8 @@ Authorization: ... "@type": "odrl:Offer", "@id": "urn:uuid:6bcea82e-c509-443d-ba8c-8eef25984c07", "odrl:target": "urn:uuid:3dd1add8-4d2d-569e-d634-8394a8836a88", - "dspace:providerId": "urn:tsdshhs636378", - "dspace:consumerId": "urn:jashd766", + "odrl:assigner": "urn:tsdshhs636378", + "odrl:assignee": "urn:jashd766", ... }, "dspace:callbackAddress": "https://......" @@ -403,8 +370,8 @@ Authorization: ... "@type": "odrl:Agreement", "odrl:target": "urn:uuid:3dd1add4-4d2d-569e-d634-8394a8836d23", "dspace:timestamp": "2023-01-01T01:00:00Z", - "dspace:providerId": "urn:tsdshhs636378", - "dspace:consumerId": "urn:jashd766", + "odrl:assigner": "urn:tsdshhs636378", + "odrl:assignee": "urn:jashd766", ... }, "dspace:callbackAddress": "https://......" diff --git a/negotiation/contract.negotiation.protocol.md b/negotiation/contract.negotiation.protocol.md index ec7e2e38..495e4de2 100644 --- a/negotiation/contract.negotiation.protocol.md +++ b/negotiation/contract.negotiation.protocol.md @@ -99,7 +99,7 @@ The Contract Agreement Message is sent by a [Provider](../model/terminology.md#p - The message must contain a `consumerPid` and a `providerPid`. - The message must contain an [ODRL Agreement](https://www.w3.org/TR/odrl-vocab/#term-Agreement). - An [Agreement](../model/terminology.md#agreement) must contain a `timestamp` property defined as an [XSD DateTime](https://www.w3schools.com/XML/schema_dtypes_date.asp) type. -- An [Agreement](../model/terminology.md#agreement) must contain a `consumerId` and `providerId`. The contents of these properties are a dataspace-specific unique identifier of the [Agreement](../model/terminology.md#agreement) parties. Note that these identifiers are not necessarily the same as the identifiers of the [Participant Agents](../model/terminology.md#participant-agent) negotiating the contract (e.g., [Connectors](../model/terminology.md#connector--data-service-)). +- An [Agreement](../model/terminology.md#agreement) must contain an `assigner` and `assignee`. The contents of these properties are a dataspace-specific unique identifier of the [Agreement](../model/terminology.md#agreement) parties. Note that these identifiers are not necessarily the same as the identifiers of the [Participant Agents](../model/terminology.md#participant-agent) negotiating the contract (e.g., [Connectors](../model/terminology.md#connector--data-service-)). - An [Agreement](../model/terminology.md#agreement) must contain a `odrl:target` property. None of its Rules, however, must have any `odrl:target` attributes to prevent inconsistencies with the [ODRL inferencing rules for compact policies](https://www.w3.org/TR/odrl-model/#composition-compact). diff --git a/negotiation/message/diagram/contract-agreement-message.png b/negotiation/message/diagram/contract-agreement-message.png index c3710a1ddb5c7ab0022824e01a54e60e4cd3a40d..b1dbe66a880a29df34dae8ae3b2a8ab764b6f1c3 100644 GIT binary patch literal 24762 zcmbrl1yoe;yDzSE3j#xT!w3u^p@6i6q|!N*beEKL4BcHy=YX_;#Ly|NbV`Fr*WLL2 z{nk0>-m~tx|Mh3-V)n52e&7A>WI9%*~Y6Jc5$@0D)O zJ9RfKN3iwq$0E7XhA+^y7Zs&I9JAW9+l3mf20}E zPp5T?2FP%-N6Fy9k!S@m9p>+q(TOeYD^L!T6i%NPTsEucVKoP+u|3b#<0SJh;CMzB zqxd37Rr|Yfuj9?fE|wI0%maT<)$R^&ultRJ)7lXOe6kl+!aHxRTd$|t$z;wtiE;S& z^FN4%qAkwh+u`)vFO#xz8~0jsQOF*$9peBB*!ku*RbL!nl_5m zK+La?$HjT$W|JbzfJq*9d2=37b8E(f}+Cohgy0zgTjTzbBa!uuYf>6{dy zgB;UB;s(BN9Qi44o}}6B*`UvdKWlmw{bu#h`r#j!0bvS+QtZ3|`%9i$M|EzT2zB)6 z{`k?pfc)4SP}icrOv=c0IPX`fMQ_(or{%2Evo0t9#6HG(Y)thHm%vc>Y1~DlKTK<$ z&nW+B%3ns^H{Br(UxvtaIMYoJ&-|ovfNYPZhN#N~fc~6L|K4U8f#PyV#L>jyHMe75 zsayMdCW>$3<L;K%;CSZiQpWaLm;q}Ic)mZ<-K zzlIYLzL)!lh|q&`9Y?Vb!?$_67$`_9$3`mix1t<}RibxWOMbhS5or*Ze(SYG%jNkD zReP0>0xdp93{CDQCD>i#bwYOe9mEt;-uYv+-S0SAlmyBDl}F?wHdlSCYI zev_qhjK7an&l*1#~4UA=lvIwB@cNZIEu8FX8j}!6#xhSQIyRV*v=P0)>>3QDY|g zBt1{Y1JwXsb+*q=H-#cjAy%dXiB0ZH9X0ok#(+ozI5bwC4ad@TO%!A&eexv2qiSD1 zJT#;$j;CBl#;DNX^||^}bxK1otXc6B&tkh~WBmeU_vj5sq50bD^asDod8aVWUU%V_ z_X>FB_-oxS4&tVw!(Ja$B~v4yFV3h3Q`ywd_Jo*~bNu*L*hy_CXEBpXg9acKCIf#^ zZ$E_&`py`o{>-KOG%MF}rK+^*I#vf^{3FCyVcO4v5Zo7b2|P)&80_oEoLF+}!hMAVf}kN5!|AyEhZ9^fN(V$5 zrN*0Ec_F>|6Jz$NQZq6=&}!S381B)ipXW|n{T#Ka+HCz!1+#pYp&?$rs&^c0aA#Nb9wn5^{cSa@t~3$sJqH`^0NH z)Th0daLYm=VCjz;4!OFbu!peFH@u&+TTK*F7P-XqX7$cJp?9!hJdLMfkKX-4@zMXGgci3_k1)5WC*`ra=2KWhLWnU$d}b8&V&ctE346 z3pT~QOT#NRXgvLuxELoQESk)d?bs`mYO?x6)DNvG9XY##-fz%%lGeFV<=NkArZOA~ zm$$&?8WAgDJTB>3sM0j)#5>Y}ew7icdVNo~q=!sd8pOb7*Xw8oz7!yTmzgYKvEaz} z={+#2RMPhv&Tg-fpW5k5t0nDW>N)5%+hy?)v>*SCJA|o&iP0BfInVV$tKvso*eLoO zN7e_I{o@~Br5)d7$acht(4N%p_Y77TiZiDcbF9{P&ei*n;50TYrUhLli~3w06IxXF z8HEa;8hq>6q(YCgy6Dq_*V9u^zLX3puBT#A%7TqYhJP{Jq5}oVLun$$=L@`YNDQsQ zy<;hEXzYIiCiJuq^_fny6$31dN#T`$Krn=5E`Rg`$ND^4=ZX5_F z41?yGj`}B!#@Q(+{-LYhp%_XP&Ww|lxYIb#rr#aQRRo`UHu~ZSaW?px5Y%18?@@|LkMf}ee5$hfB` z>j&*bGTv)lI##Wb$O?^=?cL}#J*V2u+V!(<)wMv|cp`M8$ z90TcmyJq43Qv2=Gz^A>KTXxXb+jjlD7Ner$d)7uxxm#AERf8ylSf)I-oAg=tenOeb z5_pXvwN(~eK2f3_i=jT!OyUlMGd4ZP{al1`qt$WtwX_R&VR64le0n$NGwUTraD7lY zzm@kuSd-w?*ut*QRm-_Gu%Mc|rN+}@=Dx|uvsTyHp9Brs&1fR*CL7t5iZ_c*kDoGS zF*nSbL?Rqq#VNtZ)ye3WZ!V0OEg;ftAq)d!{dC!YI9;`FioJwu8 zII1Dnm?a4*pnXqfRh1Y?M%L6>f9^JqKF_d7LLm$VOThO&Trc!{TLi5{I}WXx;Ko?5 zX==7lQ7T+Lv3S-)jsjz2?CuNUwd>-fZ2#evtHtRYfD8HY2u$zd4trb<#YdOky}_|r z3&G|(H!5^YCg2E9XV_exxoIfg(sY1!Pd_*~m<~gYeT(XyoR_XrN%52c8MA#tR zzn|CA14QIg%sL5M&H!svN_Z~lfQxmwM>LxMY_IqBn$p^;I7kcW;`I=zTY%T87Z!Ym zP;930L#t+7PH=TqgRSMu%?e%)9&k>^dL5!Kj-KpC=^( zn?JloeLQopIi#t%mlS3hjpw(sZ4s;6ipI6d@$dlY<6-ex<`&}Pp*s?-sDSF$F)+BC zBj_`x%$(P{Vl4W<6m(5Crp38Z^vyZxeLeQmN^svFPw^3P+(fGqba9jKPEO_02Q(!jXagAxs&;n2K`i+Wa%<}h8cq~)^n(Pat{zHQ)88(jLe3i!jWm#)ibszk`{F5oKR0h5D_6IUClBs*2oSzIFuy8M0g0 zF98jXw+w*i1H1{m&!*j`2l~%jGwOkY63VePIq>~_I?)1o&S9;8xr{X1|;&~{ZJSDeMq`7fspeCwUGG@ z`h;kwPRJA3=azO8k#-LRT6uUU1I7BNVeEb+_dGn1RFvoJs9yonwTR-5L&}GASJ8sU zU>iD8#i?IMaO^l=*K1vl5vk;jScWZqvDlOygrkpBHUvRTukpNnM*V}Le&QXS(#D?@ zB~&kWjtwOU&`7Axw@F$!L?NDj42D+ur}swZG~1pNxIOW>i+2UT23#3#mRXsAe}^li zZoNTb$hN!K(Fo#8lm7SwOG#0hGSHcT>=eBUu)FWd7ir3xxWixlhHf;phM-QaF^-@Y zPCHm5cuPDm_j6o@zkUnxAQ`WTL0fa`Alx#5Tinp3nR>(GG%&Em-vXA1PRCcMG z$3kfy|12aUfmZK~*ttq#EYR?EC*`O^7=$c-3JW4oPT9q<3)6ml0z%OJ8E#mbp~UV1 z0`=Px9jX)C+hm_Ut6yPoaJn9D?H%LhzdxfStX0ieF4jVuT|{cA)t-3)#xVm`C#t$>{j?fj=6R=$TNX~eplNQ3I7v_ zg73^L885~D?%Om0JZ}RUPP1=NHKZSJ6*fxWx!ixEJQ~S;d3oZ1#c?GCC(aT3EjI8@cC}2S z?4a|WHA`ag8XrtAY;JmzY+H?b@Z*#H;@3;~=T^t-Y|5zIkM`$zqcy2#%a_{%sI6nF!KVfql%FV%^=#E%az|VFus3c%QOwdV`|+ zyzX7`sRFVg!LqcIROg)-C=%q~K;S|l->SKOwJ&S2~{!rr5AT=&tE zwD@09-HahXbx}qOV!+2(#DzW_Ed1-B4E)^n+{gPV21}I#Ijzun?}F_{|Fc2FZiDZl`>&zJz@nz_N%Xuvq4l$prpvPWWRpqVh8KK~MTCt?O_Fh@p(%HcaLB>B# zfXSF44Z0spXSDzR@e@vO2g}J>vXC9!8qN?C-t_-9yY@~v@@F-6miPX&vQn10hsmE8 zcXxM+bTxp{Vy9GWi32%K*}EzxmhsOsFPff2)PL5d%9K!*i*8uTip07WLg{Eq{u0?g zvBmrD7>A5!5(gIRs!@@+VM!`@fy*a*R)q3fagt6N>~{0#w8o!!XWAYo07bp>XX7>C zyH^}T(S9awV_*D)=t(*`8y#wiT$(|F#9_(fME^}cw0S5&H<|d)HVMP-1cmT0x4r88 zb%F&;W(!%nr+tTnw8PYjI4R{r`NJ~)Jyx8^R<2f9FgQORXK&$sU}&_c^RZitX0!QF zB4*h$p&uI=V(TLb=SfN;Pe*_>)EW}sSEb^tlWhI^a{2B0$NGl~WG?4vAFnFED)yf0xu_F9a#g%KnyRJ&6}yBTEFUkz1~-sMQu>U8 zelThB@mf1jP-#15X0m~{-+O)`4Jyu+BIP91ZJid7|sTuF-0^!TrRvddDfFEK?j7>t;y~jVwhyEf4ga|=Q{bb_3|Skf zjt3GISHLLHjb{QyWl<724G`8-(KuidM)S_<{e;oDckRE7)7L8AzNhtyVGOO5#IfG} zLnKI5mM)i|pDn-qxUEOvr8?)N_JjEQpaOPFT@EOoE2I|rle`5jE{B2o9A4Wl6Pv0w zo{?57ieKlilB5R(j1;TFeqvc%M=!vgqpf~Au1+=;+cmpv*YCaTu0efcIvRbPOwrVO zp{DS8;p-ahzp50qyiRFmplaGKjXE;I4RZ^SgA>c=h>Cc5v3|5AP#aEfKT$4+R zuee#WgKOYw6Y#bw3PpgRdNIV0>rdVqN#TfASVw3GSo;z(Dz9fQDkx6I>$da5`s^m@ zU8%-7;Ubhn!iO4;#->uu%^KNSgJbe&;)%unCuwV|NvxEUNq!Yo^e$@kKinEw`d(i{ z7Wlj_nf;CnR+jlFG@Y0r->W5F`fYGtM{Hnn;usoy4SX4jL(`S;#d3xWS!O8caf;uN zgVaMUkv_3oC*F+Fj0Y*NxFXUbD@*rG(9e*cwah2qn>|u&Qn4s#74b2It3ol1Z z2}8Jv;^_{*)eE0Fk`IyXD&NO07e8y;L_moH%V?6h_oC+aa9e&svb#r(jpUAT?K2VF zPsC{+O1e7$aO&V!H-{8$5o88LJ-Ys|W0Oxxrs*Z541cyGOnR1@A1ZX_=L^EMknHqu zNRQz_gU9b}B-wn+X>-6P_T6fIa_)PEnyD3Y#HfYQW#SQ<-8%4d^te++(Ne!yE7{RD zD+`IksM@Q!)-i3~Vx!tPE_lzQepU}2u0(u9)-)Fs zznKp_ST2&)BlxxW1?)ySNcIVog=gf$(I$U)qMkB-8url##eK)g0T)!p;zvw~M4F|Q z%DqDaRAs+A=#eCs_V!~_dm1Ie#n=W$7>X({gqVrzpKGD7JX%`=@)%Zya~MhwdVOZ& znbEsZ3z90j$}fGgU#S?D628YfQ~UGpy3;!W;m_Q2=SP0!KL-4w@S&(Xc+wpeWTR~* zC^)qyFNz%&s2vdqffMptj5r-S*sUGNoqN&cOX-j`w=W7b@Ol z^0tR+a)&I-(|K={zYm#p1Y78psZs`BT#o?J(*&~0@^w*vq=R3pJp1OIKyS6Ggiae- zM>dUu^)x-TtQ3Icksj~8E5TxMOMH{w7O62~e?eaf_l*`Pf`&v=@*0frn$Kp0eLIvt zBJV_Qzex9z1l9UdKei#eq5d9foZVb6SP?jHVlILs{B4!qe(^@j?jy4YKMs1)2fco( z=x9VF;uQJ%sRkht3#aWzw5aq4pb1VCvdPt81~VImONdhrxlxyL3|7}qEBiysOEdO5 z-#*n=Oc+TVbk*pR26g$8s!Kc1yS$$&4BR9wX}p3H)7D>|q?C8@)9kMlMLgb%9;mbX z8Sc}Xcp)+!dsDCzVg7aOvrxOdQD{J>crJ7VM+;4}T#vsIO00(*mwDLZD%6Mun@VWk z*(5Cu^+dGS%G?^HpffVdYjeo%ma6j?&VLnfRkfQHM_zy0QY)Wn?Bwo3YN^dzp1ZAO z+N#aQ_c}PR_argDQ*(ZclNrnwWpioI#@|J+BK)FfQOKfl{&!4Fx(P0Qasun$p3?mO$~R0@Fw2;1wv^rS5EwWl+`mlr`@#~09vP`-^=00>Wq!THA76GO zP3qr?@2e8y80zVo`+mt3c^nojqGY>wQS#G`##lh_@}x1s9EXMsRyC+$4<#uE@TYMu zAN01ityi5rw&)kG6h$0+QTN(ntFl{*!eTt7|RlVTSOg|}3Te8Bw%zfd8)qDjD& zHiDf`PK+9@dEWeS1u;IyJ;7(eNb}>~XV7E0Md|TuI_1!shf}PBMj4RNIO&%=VRX7* zrQ|4UmpIAR>raS<>h31aMIVp;>JO|Vaazbst1A0|Lli;`3B9FkaLTBAKU~=?I5C>cIe5iVt%vV7 zqFestEaY_n0rPbCSh!_i7KtIoL%gdY&T;K|f8zC?^c?{Ebp>`8=22i1u?7hWIjv_3 zy4r0HX$!)nr)^QhdJ4=hU-B5C1imYKTM;c(>pLjQ=lM`0_EkSKcjbQ2Q#2i!y3u8B zMfSZz{FSV8(Md(LqLoITvd^0yk;o8qTrwu%xTN+qv8TmnkwOYhhI=AlMHNVSmNo^v z!*qta_CZ^ZiHdtmjS~|1le*pfuLWUb*=#dA4+@LcZNCW1dg*7Q{5aBxFT=2$lvD3s z$xRq_8gEsZddB`1rzi2gIqxH9=wvXb^IejmDYx3(GYf*SF4=0FA;RMh&fp0wCBw$x zjeelan92${2|%A=3i9&9Fh&z{4EHnU@c2Bg*B zti&GNSu>Cc{hk{?ainlNmKDRGU#CiT<+GoYx#J4Tn@I3yqT7k|k(#0QftXj@H9KBY zW6LMifBqa=LHmx~lE6}1!)gUq#b-0M^ua<6r~@u=hxsHUv~UEye?N8WJSG3C)oddK z#&9HyTf^rLy$tN@N9COP%``Z+-JdGzB?shX8w2Q?cqP*S8h@NqU-CUU@lQ4JXL+V) z^v?$6pJle(;6DGl!SR;z=IZ?(*#?H4w7fP@yWvxFc_$z;v7UMs8cYGz1W^C)^p$Wl zw;vK}JS9EQl;fw8%S&0`e>Nc|738U|OdMeYW1 zNg2pU-R~E5Taq&}da2`l3$i2rE6)V3Ejy6G;+^AFv;oIKKU zA-}>+`1PYt3#T4{oi>{suMG}fdYXZFIheGSB-@di8O@OwnH{noo@3i33_!#9EU$Q! zqs!25yq;uhuu77#(`?f!I9kdCNM#plBFcO=S8Z(=H_#msHVI|Dj2y4vsrkz(rvMad z`Q(238c3^H8&p>4SCbU!n3y%Y$^oG>M*$TSXtsY<&8lhah=UV`h#Bk!Y z5!hkKAQLqh$6x^qm57O02YKOq%74=`(svWil4EY^h@~>7Fs$PU$PM8j1r&HA0r^jc zvFdpBOdsCWk56STj4OH$K#r5fYhjGUY|K2Mg0=B!z0>5h^h>B;RQ7Y{xRLvIO1&wQ zcxisA4lV*Epb-?(hD2hdVg2NkoqJa+R!3e@^DkmmOZiRX=Q-sR^&*ZHkXd`R(IkNl z@;^@in~H>!UU$(ZduR>v!sSMw5o$QHiFpZ#;-x66_0Ewf<9|WJJ>D$t$19y_t z01%F*9w6DQd_Kvq8KTBP!-Sn(qKWwS_Pvz82m$9Vq#s=9^=08fO4VcLa@^;S`0y#1 z&I}Ff5>x*JJx|Y}9UL!xgMQXa1?!&@>CwW`Mep9G5uwab(Zg^QS_c=h{uK)DC?FK# z;2&h1HL1itkT>LHhizh1TeQ9>2APlaB+}FcYJj(TOd)?9w(V#q@uTBbQGO!UupW)VrS}X#v1%v)oCT|!#f<-21O&!N!fFA ze6*C))JY_Z{~nGm%aH#+m$!hcny_35MV6>LfYcK^Pg3~Tr2Y*;?_-i^59PO|g13Xk zA3c$wxEE&`k|LAm)f9bdtV%vK@u#%gir4byrRND95n}&^3)+kp__0>8^#{e8Z)vY- z`fY<#e}<{9eS_YJ@*!^$XDYV7qGKv73o%~=;C_yOzXHwZu24fd;H_&jo;0X?tPqt z6h0_6XQ!aH{|igq&}@a`(Ei0y6V;&q^v$?7zb!67+*hp5h!MokH0D15XfvJ8&(NCS z+~;?EG#6CJGOB-jjaHiv&4!TRAC$mLPp0&NsD@&c;V8bgN%UZCe@V_RY01e(L$+GT zvi**16=;-ILj;H_+}_0Wt2~ZiXsS@zGRMeDOeK5h)!7qpGP>tQg%tEL3=EYBV&jB7 zfU&kK!Z6GJ84?ps#)T=#MKceim$e!OkAo9QJLrp_Bm@(|Qzg!x4 z60MJhbUaas)SxJ^Tv0`k+5i*<$^Xbh94rF>gA^q_(Cm^IsXec2l^pVN0f*#QbH6?w zRMvkR{_)k3!)J0>zm7m##8KbXO_GLi<20sX?2}|6=VZ0fL~4FFq?013_=GtplwH_2 zdInaZ-L4*Of+0OHh!gX1PcBlR}@#dY=^F-Cv3%hP|!` zc-nqf=Ma|w^N~oeEbx6jlf!1Og`cCA1e@jy(npP6C z01kg6wPu3*HGw*=D+_ClnYa=BH!(ZU=!-)i3=jp6cO+$6?@T0?+Q(ZmXP_;yLA#KH zF3noH&zJb>wE_S`oZrQbZnrU>~vgtD)U2N}y(Kp|^1ZazF zV1eGjmm2OW`WmT> zlNQX9VOd1UFSn}Z%`o9Mn3Y<=8{cTc-u?TIA#Z)3yo-MZVwBiJAt)A#pR~Wozu0R8 zJ)_XhD=5fW%SpY72~GdHT~HnRl%b>(`d_wXZjem*IhjtX zrCPJ|t!(DI-TGZ8m4|2LQ5Q6WNQ-mk0(eyuUW$&Q>K4QV5?o5-ABzUSDSV^TRD2vT z)NSTciI7-CXpz?O(-2*gTBWg}T{g{cY_JmSr^dx(;k!}*PSzp{boo|onaM?=lY*en zAoWSlAuUDq(klXtgOFYDW`A>FM2%^lXfRIRrUw?v9gwLw#-s*nv%KFtP2~7kMI68$ zPAycJPfHMz9yhyif_{!o%=sNi%@!$?fXpOD0;=*Ll17Tk+SJXC=D?jAoRxH(yuv+{ zVQrBFR9A7UTroKK*7RPktLUA6EZW;|DpN799B9YCk{ALE9w2oKUVYcMHci5-_`Z;#XUDuS(`+{Ro0B*$IlnQ` z^iQ~M>?z3+q5gZ2j>w%1$6-Ii>J0>Ur zu0Seag(&MS<1$ZGsbFB9eseBn(N$lp9cdA~z#6a#)hlF5^3K&O-*o>HQSYq_ov{@#w!EmiZNy#%7ULhx+ourNm;T zJ5%qAH!>dg{YLrhwd}>M6SpSN+na-HbC?Em{Z$9RMe!A^POVLms582V%PQJocO6g6 zm|4^q6%d2+1WAwm0VlQeodbOqm2vp5dN(m3i4P=H z_qsWAj`FeWm#od21nbX^{F(8o8PuW>U(Z!#YI{-Dc4e}KbAZ``i|cEOJ1jPd@zw}h zd;gXUm7TQjbzQqVFK?Ep@&j~%rYG+vcw>CXmzLRsC=8*PrZ6lzoi}0up!$1k4|8e# zd6W?c?@&Ck=NE!la@gOMxqTj)XtnTjqx`MX@vPLgcW=)5E4NLZ!|Xu| z#5$}u99=p4#Nu+BP~93s0-+|%;Z%i}$tRE@d7RZ=ERf`vc%~fF7;Cb-KgI=K8?^c; zZZ=x)c1MUhxs{9FERW+PoT$u|1geA9Mv0%0iS{U86p_PIHNOFN@?M9`%IU#WYSo5P zVN^w5JE7S?ue>`*2$*KL9=Q8-2c-Y+l>i{TyJ(hZp$sFQ>Dy5A;1MO6urw)q;=YJS zGmwF`iMPc6S###k+2S%07*Zccfn(JAKA+&hj?31TcZsYUsiPy+K?O7ncPo>IqO z7pNdy#ZZn|bI)gI8;BPGp0ONx3jqHD|B^8sjcjO-VySz7*sYuIl2d)GJPXjF!PAU$EAUOLU~SP~5nnw|Oz4ksvo<|Ii3JEE)G=0@mf7}UV&Ek} z&B9$ZTvAqqcwBV4w~9Cev12K{UX62YmDmMfboowG+ZG<=Yyk-gR5r)u{CxIU{hQ0O z<1i9zqd()x7RjwT-09shCBZ*3C`#9;VNS6ND1f&C!+YsM&IR(o`qIE)(A!1~4W`tc z`Fn3E5wZTlVZG06Eq`UOTYkWKNtq^8v0VFUYi^WCFFr^zrKlN`()_lZO*^vR2>?g1 zr#G7$jp)I3-9u^KoGCCVYxpYcKE(gWqMo8Tdt%`W1H7Zj z#;uM3q_$^huq(FyzVjWL4f43A;{0F3GXQb@uyo%ZiR&yub4%1h(8)Nxo{PJYu9(clD<*$9*Ik0d=v|WY+yBwl}#@V zJ8q@B-XKt@J=Hz4{c%Tz=kWZJ3z3O<#7F162`(5!;Td3f5Y7nHJY7SMIbF{gbZeJd@}p7rYv@0XB0rweBGqz=i^}g0#grz6?DAcid1f{9sTz&%V{>pDkG#6n^vJ z)qRw}(y7N&IV=V{<7fxD(3l|lX&&n>k#aj_AU*_bAR<4E2$$~09J`d^{kbo{VY7Y6H_&Y z>Glfn%G)r4?~l-9eBM=cz<@!+K5-Po2WJg*?i-Q2ffT=^Kv915aLtjO78IUZcV!Bc2FrA$EvNs?JdbXiCmigk1ET?*CcRmQ zcVPzB{s;}qONP5fQ3$ZoOE(*_ldUTh>=y%K_g7m{bTj?8nbQm{gA|adV<87pWU7uD1WHA>WxGg(SB_t^ur6g zHkrK=ld-)?c;)cezS~E@bP~sVKpZ7N8fWQf*+9#?)9^QYWEvYRF0Nqg?(X^!Q$0Bl zadg=*_lS`}0ZssmYZ`Pr5V^YgrELW9Ue%&elu4GC0n2QHuFqO%LZZ@eu}r=}US7R6 zH7zmjhMJaGl5py!@>(dhxb26u3MHwNBJXqb&znB{$viy#$>KMSFYi^o-3~=`dZAyc z7@ZSq3;1k0 zC>R~jFE8eeOfr-K#Gqhi0)Fna_ho!-(-Eud_)pWZi(%vt6|l$TfgY{Bs8{7{H*nhHbosSVGbK=T(`+@F98V`OELOCRK70Bp&* z;X!UQz$t%ke83Nd@VHaJNz=T5CmCA!pHCZ(Mcf_U-yQDF)qdb2OH=rJ1+OW*$$9JQ z@^XABzE2JDaChr&XoUVd^GFzlsWiV4^*ei9r5_(@^ zNNaxeXWQ#+kBo$bgn;02^!0WT`e8kdnD0%q>n@;*Bp?uoj0|&>#_vY8M6CdbgG%Xq z+c%dd6ascq*?zaDB<7+Qzq-Q-Z?Dg}^cuMb-S&UfVS~U%y-pghwc5NddCUfE7Mf3& zI|7Tji*zPg^qXC>gk6!g?ru&-oi@#x==0j!#eUgepY0dO19U4%Nl5|QACrxaCJxEM z#vwRlxb2Mi((_0pk zL+8u;*RL@O3sSM18%=tn_bvea3H$1M`+*vZnhXL(NoEv$Se-!Fv=5(pAZxiqG8E4r z-SGxN(!&!4)d-7BrSbVgfc>_@=9l?o5@%ffN`)X=KjyN|&J_W+|jAG@r_= z)g((3Sd?opgh6YkkfHgp5`{1(mgJ~CkN$Y3NJKefCXX2wJhk($0YoB3GKB)0B8CZ^ zM^YhygxzA%x6JQ30X6RmePTiFh*$fi)?)PT&xGaA>R7xp^EU6d4&A?iSb%$Ro8YHx-xSIqg(0ji2}O zx5uU%hleo>WExf-9UZ~gBnH4N$c&+1tK~$Y*ZBcF!%S;+f4=FYVad0P`WXarOcR=Z z7ESfS!6=pZW~xlHcLyhvl$bb4#LF#~yeg*gc_OgOou}kAsYyZfFxOvWD{~e(w}4BZ z)2#9P>x(iG8kKtCC1EAHrEl5VhAvk^X|g};u*FJm4yEnRRQYXgY1Qs?U$!p+hc z`XEu=KL5<^IpCPj(^u51l-|rM7Ze!7&sJevcoffZU@yuerz`c#V#GH+|2kjiD1`Y) zW|Ql#M(fONJz!jLlU}!-$?ek_Lot_Mv7)I%41ZOBlN^Yo+5!*v1p-Lg1AA+z_2CY7 zf1l*RY9Cy++5{)yGb~0j0k5&p=oskv_x=1UNQUnQ@$_S?NE{>!f4xDT2q+c6RC49d{P-i%a%T3BcZn~<8!v~eI0S4D zAl1rIM>=L4C?HNf!D@-7bOPg6G~BSI`WM>=hfYrcPJkN+Jarggmfg}GDS~wxDs{9@ zOZg?eaCZ6G?0y7@D6A^mcd|sUl<08$Y5GyOD!RzY!Z?cy|M_0llJ~?L)N*_Z43BuB z2BXAepMp{caWHW4N@ndH6jx{32h#BOkfD&DX`!{VQ7_uRj^)cOr0i5&ct;KC3DYV8 zp9Ny9-bk5S;KSxdUS=YipZr3`(#<%6M^`7)7>IZ-xYSn>`KQv>Jcd*aY8Rj^80-u9 z9qY`E0#L!guZG2h+n`>ghx@bC&i+2lsE*U~y@-1^yL=uB0&B1Wu}1Mvp;SpcM@+Yf zyn{7+@Z0F6FR~+JX8&fF<&&DHjbPFCwdzscT(5oG54klL50=zIS5qBCvrqB;mg^Gq_Vjmj!&ME&s zQ8Hq+VZTy`+yo8X3y+wAD!bl$2&lRGNAXB28A{w{M>ObgSpT}Xt@+r?)WKaIR(iIN*#ZI*W zJ;asjN1&=!S20PWGeFO?Rw_@?E}uDS3pAu*vfx;~s>ta80~O^cz~Ya#wN0aa@LviB#JpqXtu<-n?T?K$l44tyD>B(Z^N=~HlZ_L1iDW-SgKfJ4>8{FHz#~YiYhWIz6 z)Y>#@DI7F7cR+Qj7fmVDp`w&vF`A7$IsGrb)p~|IWzhYa?KKC=J0vRQD~HAJ?v?0$;NP$|KzsV^Pt_6RN!(fA_#KO$_dQU_G%&D|Yd2mC<^*~EY?Q-3JKZa& zisP+U5WM@nN~NL&OrUFx0hVQSN~fmy>eY1Cb@WO3kXs@!J^zUFk-{qJP1rzSlh#;C zZ8&sW3xzG>wV*p;oYz^nxgqi(s)*)^XK>EOqxv6hTddJD_H&{66#RA(A@8G~8UH0N zp|^7x){^zIw0j?s`~RH}{PO9K7El%o68$Ht5+n=hzfhF|_fM;FR;U$6iWEf3gfu8I z$X^^FQ!_4-BnT;-aVr7{&86an(dOOgC=x0*aeq2L#k3iQPOUFX0JK*bt|kRE)WRay zX~`eK$^kI#?S-q5cg;QH|3)(E*gXA z=QA!=C9B0CF!0UclmX1%o}*}Dv8k?NQW`CV=9ch+e$%2NNI#Hf$6PFdw7yvKl2|@T zF{c&ekS+&EMSWTn(3XKmz7OlC!c!6J-Oxp7H+Xib~PcAJ~u z&fIhX&8eO;C#N~GT&H2byA2v1BtqnY-b-SCLv!Y?@Abz_oMmMGRV*2>;zxj_W72-6 zb5AErSjl4)`s?s;G~yBe`k-d6w?1On@K z1)oVIYdyfq8hd*Pfp@gG2z#wca zK(z#br-pq|Bnj~mV7|>n92gD5=W`mm06J(vsObSvm+XSF=QX`0GLhuyAY{*Qh&Y); z_6-j~FRh9x43*ZS!XrFh&|FNG97Hfx&p?V#03f5Yjr)%bS<){nssZT;gD6CKK!zz5 zizt;A)XK>Jn5@l7^k`|Y2+Pxn)msi8bkk$!`DOdL)~O8V#RJj>CR$yMt}TR>2+hGC zPk7LY9Dyr&P5Wa2YJ8xoP=7JrEdo-o0I~nfn)$KfS{5>me?lMvct+Fyrym1({5Kv5 zE8`zMVXLuQ8TRc}LK=QR->+D$PPo_<0P&3)@)&vs$ap^TJeW8WUA#qKYTUD5M81#* zAeheOpmS=EBZ5Pxyzz8B5&;cq?Qf$NaxDOeF*(}bT!z*x|0QXrh1=Huj<&*( zQHB)1-BS5~;GJYQ-+yvJ&o_~IZa;^1Jy$7mwK<$Yb3IMbaM(YN(U1Bd?F4N_ucPV< z3fv6-WWPkcM*F#-4Vs}vQNu06b3|d`Gec@V)6bbnMaEZqOaL7$iGxN@=(A2Qr-*Wv zk3(%_tkb`OFwjHgFCFIK;A?xw8$*VV%QiNtau8odo0VEaI*2)lIrT_$1Vhk$VePMPkxxVHlnr!Vz}>;W$N9zU5S&RO(q zf*~`AOZ7K^5GFCO#y$loQ>H}fDGNT!iIh98_{xUz&6CLDz~cg73BaH61z3!L=F^vs z|C_{NVwiAkAR#%7DTsTEwKwlhsgAcRl_+Z0$p`5Ja~uemKtSRh&@h#n^#tu&bII|4 zCm|WyWyAk5_!L&8JYKN)R|<5n*3*&CV^;igjZ4kDM?Vjh9_SY@qJx|TYRv|H0Wu

= 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 T(IN0p1ooWOGtqslV;}WDHU=0E literal 25221 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 diff --git a/negotiation/message/diagram/contract-agreement-message.puml b/negotiation/message/diagram/contract-agreement-message.puml index f7e6e00c..2b9f56f1 100644 --- a/negotiation/message/diagram/contract-agreement-message.puml +++ b/negotiation/message/diagram/contract-agreement-message.puml @@ -19,8 +19,8 @@ class odrl:Agreement { @id: String odrl:target : xsd:anyURI dspace:timestamp : xsd:dateTime - dspace:consumerId : String - dspace:providerId : String + odrl:assignee : String + odrl:assigner : String } "dspace:ContractAgreementMessage" "1" *-- "1" "odrl:Agreement" : "dspace:agreement" diff --git a/negotiation/message/example/contract-agreement-message.json b/negotiation/message/example/contract-agreement-message.json index 36f8cf2d..8ec88d9d 100644 --- a/negotiation/message/example/contract-agreement-message.json +++ b/negotiation/message/example/contract-agreement-message.json @@ -8,8 +8,8 @@ "@type": "odrl:Agreement", "odrl:target": "urn:uuid:3dd1add4-4d2d-569e-d634-8394a8836d23", "dspace:timestamp": "2023-01-01T01:00:00Z", - "dspace:providerId": "urn:tsdshhs636378", - "dspace:consumerId": "urn:jashd766", + "odrl:assigner": "urn:tsdshhs636378", + "odrl:assignee": "urn:jashd766", "odrl:permission": [{ "odrl:action": "odrl:use" , "odrl:constraint": [{ diff --git a/negotiation/message/example/contract-offer-message.json b/negotiation/message/example/contract-offer-message.json index 77a6c918..b0d20578 100644 --- a/negotiation/message/example/contract-offer-message.json +++ b/negotiation/message/example/contract-offer-message.json @@ -7,8 +7,8 @@ "@type": "odrl:Offer", "@id": "urn:uuid:6bcea82e-c509-443d-ba8c-8eef25984c07", "odrl:target": "urn:uuid:3dd1add8-4d2d-569e-d634-8394a8836a88", - "dspace:providerId": "urn:tsdshhs636378", - "dspace:consumerId": "urn:jashd766", + "odrl:assigner": "urn:tsdshhs636378", + "odrl:assignee": "urn:jashd766", "odrl:permission": [{ "odrl:action": "odrl:use" , "odrl:constraint": [{ diff --git a/negotiation/message/example/contract-request-message.json b/negotiation/message/example/contract-request-message.json index c65fb1b3..3544e4ec 100644 --- a/negotiation/message/example/contract-request-message.json +++ b/negotiation/message/example/contract-request-message.json @@ -5,8 +5,8 @@ "dspace:consumerPid": "urn:uuid:32541fe6-c580-409e-85a8-8a9a32fbe833", "dspace:offer": { "odrl:target": "urn:uuid:3dd1add8-4d2d-569e-d634-8394a8836a88", - "dspace:providerId": "urn:tsdshhs636378", - "dspace:consumerId": "urn:jashd766", + "odrl:assigner": "urn:tsdshhs636378", + "odrl:assignee": "urn:jashd766", "odrl:permission": [{ "odrl:action": "odrl:use" , "odrl:constraint": [{ diff --git a/negotiation/message/example/contract.agreement.message.http.transfer.json b/negotiation/message/example/contract.agreement.message.http.transfer.json index d3e7c5c7..04e3577a 100644 --- a/negotiation/message/example/contract.agreement.message.http.transfer.json +++ b/negotiation/message/example/contract.agreement.message.http.transfer.json @@ -3,12 +3,12 @@ "@type": "dspace:ContractAgreementMessage", "dspace:providerPid": "urn:uuid:a343fcbf-99fc-4ce8-8e9b-148c97605aab", "dspace:consumerPid": "urn:uuid:32541fe6-c580-409e-85a8-8a9a32fbe833", - "dspace:consumerId": "...", - "dspace:providerId": "...", "dspace:agreement": { "@id": "some-other-id", "@type": "odrl:Agreement", "odrl:target": "urn:uuid:3dd1add8-4d2d-569e-d634-8394a8836a88", + "odrl:assignee": "...", + "odrl:assigner": "...", "odrl:permission": [ { "@id": "some-permission-id", diff --git a/negotiation/message/schema/contract-schema.json b/negotiation/message/schema/contract-schema.json index ffeda39f..96e1ed4a 100644 --- a/negotiation/message/schema/contract-schema.json +++ b/negotiation/message/schema/contract-schema.json @@ -62,10 +62,10 @@ }, "AbstractPolicyRule": { "properties": { - "dspace:providerId": { + "odrl:assigner": { "type": "string" }, - "dspace:consumerId": { + "odrl:assignee": { "type": "string" } }, @@ -100,7 +100,7 @@ ] } ], - "required": [ "@type", "dspace:providerId" ] + "required": [ "@type", "odrl:assigner" ] }, "#/definitions/Offer": { "type": "object", @@ -154,9 +154,8 @@ "@type", "@id", "@target", - "dspace:providerId", - "dspace:consumerId", - "dspace:timestamp" + "odrl:assignee", + "odrl:assigner" ] }, "RuleClass": {