@twin.org/standards-dataspace-protocol 0.0.3-next.54 → 0.0.3-next.56

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (171) hide show
  1. package/dist/es/dataTypes/catalogDataTypes.js +18 -39
  2. package/dist/es/dataTypes/catalogDataTypes.js.map +1 -1
  3. package/dist/es/dataTypes/dataspaceProtocolDataTypes.js +6 -0
  4. package/dist/es/dataTypes/dataspaceProtocolDataTypes.js.map +1 -1
  5. package/dist/es/index.js +10 -13
  6. package/dist/es/index.js.map +1 -1
  7. package/dist/es/models/catalog/dataspaceProtocolCatalogTypes.js +1 -33
  8. package/dist/es/models/catalog/dataspaceProtocolCatalogTypes.js.map +1 -1
  9. package/dist/es/models/contractNegotiation/IDataspaceProtocolContractAgreementMessage.js.map +1 -1
  10. package/dist/es/models/contractNegotiation/IDataspaceProtocolContractOfferMessage.js.map +1 -1
  11. package/dist/es/models/contractNegotiation/IDataspaceProtocolContractRequestMessage.js.map +1 -1
  12. package/dist/es/models/dataspaceProtocolContextType.js.map +1 -1
  13. package/dist/es/models/dcat3/IDataspaceProtocolCatalog.js.map +1 -1
  14. package/dist/es/models/dcat3/IDataspaceProtocolCatalogBase.js +2 -0
  15. package/dist/es/models/dcat3/IDataspaceProtocolCatalogBase.js.map +1 -0
  16. package/dist/es/models/dcat3/IDataspaceProtocolDataService.js.map +1 -1
  17. package/dist/es/models/dcat3/IDataspaceProtocolDataServiceBase.js +2 -0
  18. package/dist/es/models/dcat3/IDataspaceProtocolDataServiceBase.js.map +1 -0
  19. package/dist/es/models/dcat3/IDataspaceProtocolDataset.js.map +1 -1
  20. package/dist/es/models/dcat3/IDataspaceProtocolDatasetBase.js +2 -0
  21. package/dist/es/models/dcat3/IDataspaceProtocolDatasetBase.js.map +1 -0
  22. package/dist/es/models/dcat3/IDataspaceProtocolDistribution.js.map +1 -1
  23. package/dist/es/models/dcat3/IDataspaceProtocolDistributionBase.js +2 -0
  24. package/dist/es/models/dcat3/IDataspaceProtocolDistributionBase.js.map +1 -0
  25. package/dist/es/models/odrl/IDataspaceProtocolOffer.js.map +1 -1
  26. package/dist/es/models/odrl/IDataspaceProtocolOfferBase.js +2 -0
  27. package/dist/es/models/odrl/IDataspaceProtocolOfferBase.js.map +1 -0
  28. package/dist/es/schemas/DataspaceProtocolAgreement.json +181 -158
  29. package/dist/es/schemas/DataspaceProtocolCatalog.json +13 -3
  30. package/dist/es/schemas/DataspaceProtocolCatalogBase.json +428 -0
  31. package/dist/es/schemas/DataspaceProtocolCatalogError.json +4 -50
  32. package/dist/es/schemas/DataspaceProtocolCatalogRequestMessage.json +4 -50
  33. package/dist/es/schemas/DataspaceProtocolContextType.json +30 -0
  34. package/dist/es/schemas/DataspaceProtocolContractAgreementMessage.json +191 -52
  35. package/dist/es/schemas/DataspaceProtocolContractAgreementVerificationMessage.json +4 -50
  36. package/dist/es/schemas/DataspaceProtocolContractNegotiation.json +4 -50
  37. package/dist/es/schemas/DataspaceProtocolContractNegotiationError.json +4 -50
  38. package/dist/es/schemas/DataspaceProtocolContractNegotiationEventMessage.json +4 -50
  39. package/dist/es/schemas/DataspaceProtocolContractNegotiationEventType.json +11 -5
  40. package/dist/es/schemas/DataspaceProtocolContractNegotiationStateType.json +31 -10
  41. package/dist/es/schemas/DataspaceProtocolContractNegotiationTerminationMessage.json +4 -50
  42. package/dist/es/schemas/DataspaceProtocolContractOfferMessage.json +5 -51
  43. package/dist/es/schemas/DataspaceProtocolContractRequestMessage.json +5 -51
  44. package/dist/es/schemas/DataspaceProtocolDataAddress.json +2 -2
  45. package/dist/es/schemas/DataspaceProtocolDataService.json +21 -0
  46. package/dist/es/schemas/DataspaceProtocolDataServiceBase.json +285 -0
  47. package/dist/es/schemas/DataspaceProtocolDataset.json +13 -3
  48. package/dist/es/schemas/DataspaceProtocolDatasetBase.json +342 -0
  49. package/dist/es/schemas/DataspaceProtocolDatasetRequestMessage.json +4 -50
  50. package/dist/es/schemas/DataspaceProtocolDistribution.json +26 -0
  51. package/dist/es/schemas/DataspaceProtocolDistributionBase.json +170 -0
  52. package/dist/es/schemas/DataspaceProtocolEndpointProperty.json +2 -2
  53. package/dist/es/schemas/DataspaceProtocolOffer.json +10 -186
  54. package/dist/es/schemas/DataspaceProtocolOfferBase.json +219 -0
  55. package/dist/es/schemas/DataspaceProtocolPolicy.json +214 -202
  56. package/dist/es/schemas/DataspaceProtocolSet.json +225 -202
  57. package/dist/es/schemas/DataspaceProtocolTransferCompletionMessage.json +4 -50
  58. package/dist/es/schemas/DataspaceProtocolTransferError.json +4 -50
  59. package/dist/es/schemas/DataspaceProtocolTransferProcess.json +4 -50
  60. package/dist/es/schemas/DataspaceProtocolTransferRequestMessage.json +6 -52
  61. package/dist/es/schemas/DataspaceProtocolTransferStartMessage.json +5 -51
  62. package/dist/es/schemas/DataspaceProtocolTransferSuspensionMessage.json +4 -50
  63. package/dist/es/schemas/DataspaceProtocolTransferTerminationMessage.json +4 -50
  64. package/dist/types/index.d.ts +10 -13
  65. package/dist/types/models/catalog/dataspaceProtocolCatalogTypes.d.ts +0 -32
  66. package/dist/types/models/contractNegotiation/IDataspaceProtocolContractAgreementMessage.d.ts +3 -2
  67. package/dist/types/models/contractNegotiation/IDataspaceProtocolContractOfferMessage.d.ts +2 -2
  68. package/dist/types/models/contractNegotiation/IDataspaceProtocolContractRequestMessage.d.ts +2 -2
  69. package/dist/types/models/dataspaceProtocolContextType.d.ts +2 -9
  70. package/dist/types/models/dcat3/IDataspaceProtocolCatalog.d.ts +2 -37
  71. package/dist/types/models/dcat3/IDataspaceProtocolCatalogBase.d.ts +58 -0
  72. package/dist/types/models/dcat3/IDataspaceProtocolDataService.d.ts +2 -22
  73. package/dist/types/models/dcat3/IDataspaceProtocolDataServiceBase.d.ts +44 -0
  74. package/dist/types/models/dcat3/IDataspaceProtocolDataset.d.ts +2 -29
  75. package/dist/types/models/dcat3/IDataspaceProtocolDatasetBase.d.ts +61 -0
  76. package/dist/types/models/dcat3/IDataspaceProtocolDistribution.d.ts +4 -31
  77. package/dist/types/models/dcat3/IDataspaceProtocolDistributionBase.d.ts +66 -0
  78. package/dist/types/models/odrl/IDataspaceProtocolOffer.d.ts +7 -2
  79. package/dist/types/models/odrl/IDataspaceProtocolOfferBase.d.ts +18 -0
  80. package/docs/changelog.md +35 -0
  81. package/docs/reference/classes/CatalogDataTypes.md +1 -1
  82. package/docs/reference/classes/ContractNegotiationDataTypes.md +1 -1
  83. package/docs/reference/classes/DataspaceProtocolDataTypes.md +2 -2
  84. package/docs/reference/classes/DataspaceProtocolHelper.md +2 -2
  85. package/docs/reference/classes/TransferProcessDataTypes.md +1 -1
  86. package/docs/reference/index.md +5 -8
  87. package/docs/reference/interfaces/IDataspaceProtocolAgreement.md +21 -21
  88. package/docs/reference/interfaces/IDataspaceProtocolCatalog.md +129 -105
  89. package/docs/reference/interfaces/IDataspaceProtocolCatalogBase.md +570 -0
  90. package/docs/reference/interfaces/IDataspaceProtocolCatalogError.md +5 -5
  91. package/docs/reference/interfaces/IDataspaceProtocolCatalogRequestMessage.md +4 -4
  92. package/docs/reference/interfaces/IDataspaceProtocolContractAgreementMessage.md +8 -8
  93. package/docs/reference/interfaces/IDataspaceProtocolContractAgreementVerificationMessage.md +4 -4
  94. package/docs/reference/interfaces/IDataspaceProtocolContractNegotiation.md +5 -5
  95. package/docs/reference/interfaces/IDataspaceProtocolContractNegotiationError.md +8 -8
  96. package/docs/reference/interfaces/IDataspaceProtocolContractNegotiationEventMessage.md +5 -5
  97. package/docs/reference/interfaces/IDataspaceProtocolContractNegotiationTerminationMessage.md +8 -8
  98. package/docs/reference/interfaces/IDataspaceProtocolContractOfferMessage.md +9 -9
  99. package/docs/reference/interfaces/IDataspaceProtocolContractRequestMessage.md +9 -9
  100. package/docs/reference/interfaces/IDataspaceProtocolDataAddress.md +6 -6
  101. package/docs/reference/interfaces/IDataspaceProtocolDataService.md +82 -70
  102. package/docs/reference/interfaces/IDataspaceProtocolDataServiceBase.md +387 -0
  103. package/docs/reference/interfaces/IDataspaceProtocolDataset.md +97 -85
  104. package/docs/reference/interfaces/IDataspaceProtocolDatasetBase.md +484 -0
  105. package/docs/reference/interfaces/IDataspaceProtocolDatasetRequestMessage.md +3 -3
  106. package/docs/reference/interfaces/IDataspaceProtocolDistribution.md +87 -71
  107. package/docs/reference/interfaces/IDataspaceProtocolDistributionBase.md +381 -0
  108. package/docs/reference/interfaces/IDataspaceProtocolEndpointProperty.md +3 -3
  109. package/docs/reference/interfaces/IDataspaceProtocolOffer.md +44 -45
  110. package/docs/reference/interfaces/IDataspaceProtocolOfferBase.md +171 -0
  111. package/docs/reference/interfaces/IDataspaceProtocolPolicy.md +24 -24
  112. package/docs/reference/interfaces/IDataspaceProtocolSet.md +23 -23
  113. package/docs/reference/interfaces/IDataspaceProtocolTransferCompletionMessage.md +4 -4
  114. package/docs/reference/interfaces/IDataspaceProtocolTransferError.md +8 -8
  115. package/docs/reference/interfaces/IDataspaceProtocolTransferProcess.md +5 -5
  116. package/docs/reference/interfaces/IDataspaceProtocolTransferRequestMessage.md +8 -8
  117. package/docs/reference/interfaces/IDataspaceProtocolTransferStartMessage.md +6 -6
  118. package/docs/reference/interfaces/IDataspaceProtocolTransferSuspensionMessage.md +8 -8
  119. package/docs/reference/interfaces/IDataspaceProtocolTransferTerminationMessage.md +8 -8
  120. package/docs/reference/type-aliases/DataspaceProtocolContextType.md +1 -1
  121. package/docs/reference/variables/DataspaceProtocolCatalogTypes.md +11 -59
  122. package/docs/reference/variables/DataspaceProtocolContexts.md +4 -4
  123. package/docs/reference/variables/DataspaceProtocolContractNegotiationEventType.md +2 -2
  124. package/docs/reference/variables/DataspaceProtocolContractNegotiationStateType.md +7 -7
  125. package/docs/reference/variables/DataspaceProtocolContractNegotiationTypes.md +10 -10
  126. package/docs/reference/variables/DataspaceProtocolEndpointType.md +4 -4
  127. package/docs/reference/variables/DataspaceProtocolTransferProcessStateType.md +5 -5
  128. package/docs/reference/variables/DataspaceProtocolTransferProcessTypes.md +9 -9
  129. package/package.json +3 -3
  130. package/dist/es/models/dcat3/IDataspaceProtocolCatalogNoContext.js +0 -2
  131. package/dist/es/models/dcat3/IDataspaceProtocolCatalogNoContext.js.map +0 -1
  132. package/dist/es/models/dcat3/IDataspaceProtocolDataServiceNoContext.js +0 -2
  133. package/dist/es/models/dcat3/IDataspaceProtocolDataServiceNoContext.js.map +0 -1
  134. package/dist/es/models/dcat3/IDataspaceProtocolDatasetNoContext.js +0 -2
  135. package/dist/es/models/dcat3/IDataspaceProtocolDatasetNoContext.js.map +0 -1
  136. package/dist/es/models/dcat3/IDataspaceProtocolDistributionNoContext.js +0 -2
  137. package/dist/es/models/dcat3/IDataspaceProtocolDistributionNoContext.js.map +0 -1
  138. package/dist/es/models/odrl/IDataspaceProtocolAgreementNoContext.js +0 -2
  139. package/dist/es/models/odrl/IDataspaceProtocolAgreementNoContext.js.map +0 -1
  140. package/dist/es/models/odrl/IDataspaceProtocolOfferNoContext.js +0 -2
  141. package/dist/es/models/odrl/IDataspaceProtocolOfferNoContext.js.map +0 -1
  142. package/dist/es/models/odrl/IDataspaceProtocolPolicyNoContext.js +0 -2
  143. package/dist/es/models/odrl/IDataspaceProtocolPolicyNoContext.js.map +0 -1
  144. package/dist/es/models/odrl/IDataspaceProtocolSetNoContext.js +0 -2
  145. package/dist/es/models/odrl/IDataspaceProtocolSetNoContext.js.map +0 -1
  146. package/dist/es/schemas/DataspaceProtocolAgreementNoContext.json +0 -6
  147. package/dist/es/schemas/DataspaceProtocolCatalogNoContext.json +0 -6
  148. package/dist/es/schemas/DataspaceProtocolDataServiceNoContext.json +0 -6
  149. package/dist/es/schemas/DataspaceProtocolDatasetNoContext.json +0 -6
  150. package/dist/es/schemas/DataspaceProtocolDistributionNoContext.json +0 -6
  151. package/dist/es/schemas/DataspaceProtocolOfferNoContext.json +0 -6
  152. package/dist/es/schemas/DataspaceProtocolPolicyNoContext.json +0 -6
  153. package/dist/es/schemas/DataspaceProtocolSetNoContext.json +0 -6
  154. package/dist/es/schemas-src/DataspaceProtocolDataService.json +0 -11
  155. package/dist/es/schemas-src/DataspaceProtocolDistribution.json +0 -11
  156. package/dist/types/models/dcat3/IDataspaceProtocolCatalogNoContext.d.ts +0 -5
  157. package/dist/types/models/dcat3/IDataspaceProtocolDataServiceNoContext.d.ts +0 -5
  158. package/dist/types/models/dcat3/IDataspaceProtocolDatasetNoContext.d.ts +0 -5
  159. package/dist/types/models/dcat3/IDataspaceProtocolDistributionNoContext.d.ts +0 -5
  160. package/dist/types/models/odrl/IDataspaceProtocolAgreementNoContext.d.ts +0 -5
  161. package/dist/types/models/odrl/IDataspaceProtocolOfferNoContext.d.ts +0 -5
  162. package/dist/types/models/odrl/IDataspaceProtocolPolicyNoContext.d.ts +0 -5
  163. package/dist/types/models/odrl/IDataspaceProtocolSetNoContext.d.ts +0 -5
  164. package/docs/reference/type-aliases/IDataspaceProtocolAgreementNoContext.md +0 -5
  165. package/docs/reference/type-aliases/IDataspaceProtocolCatalogNoContext.md +0 -5
  166. package/docs/reference/type-aliases/IDataspaceProtocolDataServiceNoContext.md +0 -5
  167. package/docs/reference/type-aliases/IDataspaceProtocolDatasetNoContext.md +0 -5
  168. package/docs/reference/type-aliases/IDataspaceProtocolDistributionNoContext.md +0 -5
  169. package/docs/reference/type-aliases/IDataspaceProtocolOfferNoContext.md +0 -5
  170. package/docs/reference/type-aliases/IDataspaceProtocolPolicyNoContext.md +0 -5
  171. package/docs/reference/type-aliases/IDataspaceProtocolSetNoContext.md +0 -5
@@ -1,7 +1,5 @@
1
- import type { IDcatDataService } from "@twin.org/standards-w3c-dcat";
2
- import type { DataspaceProtocolCatalogTypes } from "../catalog/dataspaceProtocolCatalogTypes.js";
3
1
  import type { DataspaceProtocolContextType } from "../dataspaceProtocolContextType.js";
4
- import type { IDataspaceProtocolDatasetNoContext } from "./IDataspaceProtocolDatasetNoContext.js";
2
+ import type { IDataspaceProtocolDataServiceBase } from "./IDataspaceProtocolDataServiceBase.js";
5
3
  /**
6
4
  * Data Service interface compliant with Eclipse Data Space Protocol.
7
5
  *
@@ -22,27 +20,9 @@ import type { IDataspaceProtocolDatasetNoContext } from "./IDataspaceProtocolDat
22
20
  * @see https://www.w3.org/TR/vocab-dcat-3/ - W3C DCAT v3 spec
23
21
  *
24
22
  */
25
- export interface IDataspaceProtocolDataService extends Omit<IDcatDataService, "@type" | "@context" | "dcat:servesDataset" | "dcat:endpointURL"> {
23
+ export interface IDataspaceProtocolDataService extends IDataspaceProtocolDataServiceBase {
26
24
  /**
27
25
  * LD Context. Required per Eclipse Data Space Protocol.
28
26
  */
29
27
  "@context": DataspaceProtocolContextType;
30
- /**
31
- * The type identifier for the Data Service.
32
- * REQUIRED per Eclipse Data Space Protocol.
33
- */
34
- "@type": typeof DataspaceProtocolCatalogTypes.DataService;
35
- /**
36
- * Unique identifier for the dataset.
37
- * REQUIRED per Eclipse Data Space Protocol.
38
- */
39
- "@id": string;
40
- /**
41
- * Endpoint URL
42
- */
43
- endpointURL: string;
44
- /**
45
- * Datasets served.
46
- */
47
- servesDataset?: IDataspaceProtocolDatasetNoContext | IDataspaceProtocolDatasetNoContext[];
48
28
  }
@@ -0,0 +1,44 @@
1
+ import type { ObjectOrArray } from "@twin.org/core";
2
+ import type { IDcatDataServiceBase } from "@twin.org/standards-w3c-dcat";
3
+ import type { IDataspaceProtocolDatasetBase } from "./IDataspaceProtocolDatasetBase.js";
4
+ import type { DataspaceProtocolCatalogTypes } from "../catalog/dataspaceProtocolCatalogTypes.js";
5
+ /**
6
+ * Data Service interface compliant with Eclipse Data Space Protocol.
7
+ *
8
+ * This interface extends IDataService and enforces DS Protocol-specific requirements
9
+ * by overriding properties with more specific types and constraints.
10
+ *
11
+ * **Requirements per DS Protocol:**
12
+ * - `@id` MUST be present for dataset identification (REQUIRED)
13
+ * - endpointURL MUST be present (REQUIRED)
14
+ *
15
+ * **Type System Design:**
16
+ * - Interface extension allows TypeScript to override inherited property types
17
+ * - Standards packages (@twin.org/standards-w3c-*) follow W3C specs exactly
18
+ * - DS Protocol-specific constraints are defined here
19
+ *
20
+ *
21
+ * @see https://eclipse-dataspace-protocol-base.github.io/DataspaceProtocol/2025-1-err1/#lower-level-types
22
+ * @see https://www.w3.org/TR/vocab-dcat-3/ - W3C DCAT v3 spec
23
+ *
24
+ */
25
+ export interface IDataspaceProtocolDataServiceBase extends Omit<IDcatDataServiceBase, "@type" | "dcat:servesDataset" | "dcat:endpointURL"> {
26
+ /**
27
+ * The type identifier for the Data Service.
28
+ * REQUIRED per Eclipse Data Space Protocol.
29
+ */
30
+ "@type": typeof DataspaceProtocolCatalogTypes.DataService;
31
+ /**
32
+ * Unique identifier for the dataset.
33
+ * REQUIRED per Eclipse Data Space Protocol.
34
+ */
35
+ "@id": string;
36
+ /**
37
+ * Endpoint URL.
38
+ */
39
+ endpointURL: string;
40
+ /**
41
+ * Datasets served.
42
+ */
43
+ servesDataset?: ObjectOrArray<IDataspaceProtocolDatasetBase>;
44
+ }
@@ -1,8 +1,5 @@
1
- import type { IDcatDataset } from "@twin.org/standards-w3c-dcat";
2
- import type { DataspaceProtocolCatalogTypes } from "../catalog/dataspaceProtocolCatalogTypes.js";
3
1
  import type { DataspaceProtocolContextType } from "../dataspaceProtocolContextType.js";
4
- import type { IDataspaceProtocolDistributionNoContext } from "./IDataspaceProtocolDistributionNoContext.js";
5
- import type { IDataspaceProtocolOfferNoContext } from "../odrl/IDataspaceProtocolOfferNoContext.js";
2
+ import type { IDataspaceProtocolDatasetBase } from "./IDataspaceProtocolDatasetBase.js";
6
3
  /**
7
4
  * Dataset interface compliant with Eclipse Data Space Protocol.
8
5
  *
@@ -33,33 +30,9 @@ import type { IDataspaceProtocolOfferNoContext } from "../odrl/IDataspaceProtoco
33
30
  * @see IOdrlOffer from @twin.org/standards-w3c-odrl
34
31
  * @see IResource.odrl:hasPolicy from @twin.org/standards-w3c-dcat
35
32
  */
36
- export interface IDataspaceProtocolDataset extends Omit<IDcatDataset, "odrl:hasPolicy" | "dcat:distribution" | "@type" | "@context"> {
33
+ export interface IDataspaceProtocolDataset extends IDataspaceProtocolDatasetBase {
37
34
  /**
38
35
  * LD Context. Required per Eclipse Data Space Protocol.
39
36
  */
40
37
  "@context": DataspaceProtocolContextType;
41
- /**
42
- * The type identifier for the dataset.
43
- * REQUIRED per Eclipse Data Space Protocol.
44
- */
45
- "@type": typeof DataspaceProtocolCatalogTypes.Dataset;
46
- /**
47
- * Unique identifier for the dataset.
48
- * REQUIRED per Eclipse Data Space Protocol.
49
- */
50
- "@id": string;
51
- /**
52
- * Array of ODRL policies (Offers) as required by DS Protocol.
53
- *
54
- * REQUIRED per Eclipse Data Space Protocol spec.
55
- * Must contain at least one IOdrlOffer.
56
- * Currently only single offer is supported, but array structure
57
- * allows for future multi-offer support.
58
- */
59
- hasPolicy: IDataspaceProtocolOfferNoContext | IDataspaceProtocolOfferNoContext[];
60
- /**
61
- * Distribution of the dataset.
62
- * REQUIRED per Eclipse Data Space Protocol.
63
- */
64
- distribution: IDataspaceProtocolDistributionNoContext | IDataspaceProtocolDistributionNoContext[];
65
38
  }
@@ -0,0 +1,61 @@
1
+ import type { ObjectOrArray } from "@twin.org/core";
2
+ import type { IDcatDatasetBase } from "@twin.org/standards-w3c-dcat";
3
+ import type { IDataspaceProtocolDistributionBase } from "./IDataspaceProtocolDistributionBase.js";
4
+ import type { DataspaceProtocolCatalogTypes } from "../catalog/dataspaceProtocolCatalogTypes.js";
5
+ import type { IDataspaceProtocolOfferBase } from "../odrl/IDataspaceProtocolOfferBase.js";
6
+ /**
7
+ * Dataset interface compliant with Eclipse Data Space Protocol.
8
+ *
9
+ * This interface extends IDataset and enforces DS Protocol-specific requirements
10
+ * by overriding properties with more specific types and constraints.
11
+ *
12
+ * **Requirements per DS Protocol:**
13
+ * - `@id` MUST be present for dataset identification (REQUIRED)
14
+ * - `odrl:hasPolicy` MUST be present as an array of ODRL Offers (REQUIRED)
15
+ * - Array MUST contain at least one IOdrlOffer
16
+ * - Each Offer MUST have `@type`: "Offer"
17
+ * - Each Offer MUST have `@id`
18
+ * - `dcat:distribution` MUST be present (REQUIRED)
19
+ *
20
+ * **Type System Design:**
21
+ * - W3C DCAT spec defines `odrl:hasPolicy` as optional singular `IOdrlPolicy`
22
+ * - DS Protocol requires it as a REQUIRED array of `IOdrlOffer`
23
+ * - Interface extension allows TypeScript to override inherited property types
24
+ * - Standards packages (@twin.org/standards-w3c-*) follow W3C specs exactly
25
+ * - DS Protocol-specific constraints are defined here
26
+ *
27
+ * **Future Compatibility:**
28
+ * - Currently only one Offer per dataset is supported
29
+ * - Array structure allows future support for multiple offers
30
+ *
31
+ * @see https://eclipse-dataspace-protocol-base.github.io/DataspaceProtocol/2025-1-err1/#lower-level-types
32
+ * @see https://www.w3.org/TR/vocab-dcat-3/ - W3C DCAT v3 spec
33
+ * @see IOdrlOffer from @twin.org/standards-w3c-odrl
34
+ * @see IResource.odrl:hasPolicy from @twin.org/standards-w3c-dcat
35
+ */
36
+ export interface IDataspaceProtocolDatasetBase extends Omit<IDcatDatasetBase, "odrl:hasPolicy" | "dcat:distribution" | "@type"> {
37
+ /**
38
+ * The type identifier for the dataset.
39
+ * REQUIRED per Eclipse Data Space Protocol.
40
+ */
41
+ "@type": typeof DataspaceProtocolCatalogTypes.Dataset;
42
+ /**
43
+ * Unique identifier for the dataset.
44
+ * REQUIRED per Eclipse Data Space Protocol.
45
+ */
46
+ "@id": string;
47
+ /**
48
+ * Array of ODRL policies (Offers) as required by DS Protocol.
49
+ *
50
+ * REQUIRED per Eclipse Data Space Protocol spec.
51
+ * Must contain at least one IOdrlOffer.
52
+ * Currently only single offer is supported, but array structure
53
+ * allows for future multi-offer support.
54
+ */
55
+ hasPolicy: ObjectOrArray<IDataspaceProtocolOfferBase>;
56
+ /**
57
+ * Distribution of the dataset.
58
+ * REQUIRED per Eclipse Data Space Protocol.
59
+ */
60
+ distribution: ObjectOrArray<IDataspaceProtocolDistributionBase>;
61
+ }
@@ -1,8 +1,5 @@
1
- import type { IDcatDistribution } from "@twin.org/standards-w3c-dcat";
2
- import type { DataspaceProtocolCatalogTypes } from "../catalog/dataspaceProtocolCatalogTypes.js";
3
1
  import type { DataspaceProtocolContextType } from "../dataspaceProtocolContextType.js";
4
- import type { IDataspaceProtocolDataServiceNoContext } from "./IDataspaceProtocolDataServiceNoContext.js";
5
- import type { IDataspaceProtocolOfferNoContext } from "../odrl/IDataspaceProtocolOfferNoContext.js";
2
+ import type { IDataspaceProtocolDistributionBase } from "./IDataspaceProtocolDistributionBase.js";
6
3
  /**
7
4
  * Distribution interface compliant with Eclipse Data Space Protocol.
8
5
  *
@@ -32,38 +29,14 @@ import type { IDataspaceProtocolOfferNoContext } from "../odrl/IDataspaceProtoco
32
29
  * @see IOdrlOffer from @twin.org/standards-w3c-odrl
33
30
  * @see IResource.odrl:hasPolicy from @twin.org/standards-w3c-dcat
34
31
  */
35
- export interface IDataspaceProtocolDistribution extends Omit<IDcatDistribution, "odrl:hasPolicy" | "@type" | "@context" | "dcterms:format"> {
32
+ export interface IDataspaceProtocolDistribution extends IDataspaceProtocolDistributionBase {
36
33
  /**
37
34
  * LD Context. Required per Eclipse Data Space Protocol.
38
35
  */
39
36
  "@context": DataspaceProtocolContextType;
40
37
  /**
41
- * The type identifier for the Distribution.
42
- * REQUIRED per Eclipse Data Space Protocol.
43
- */
44
- "@type": typeof DataspaceProtocolCatalogTypes.Distribution;
45
- /**
46
- * Unique identifier for the dataset.
47
- * REQUIRED per Eclipse Data Space Protocol.
38
+ * Unique identifier for the distribution.
39
+ * REQUIRED on standalone Distribution objects per Eclipse Data Space Protocol.
48
40
  */
49
41
  "@id": string;
50
- /**
51
- * Array of ODRL policies (Offers) as required by DS Protocol.
52
- *
53
- * REQUIRED per Eclipse Data Space Protocol spec.
54
- * Must contain at least one IOdrlOffer.
55
- * Currently only single offer is supported, but array structure
56
- * allows for future multi-offer support.
57
- */
58
- hasPolicy?: IDataspaceProtocolOfferNoContext | IDataspaceProtocolOfferNoContext[];
59
- /**
60
- * Access service.
61
- * It can be a URI pointing to an access service or inline the access service itself
62
- */
63
- accessService: string | IDataspaceProtocolDataServiceNoContext;
64
- /**
65
- * Distribution format.
66
- * REQUIRED per Eclipse Data Space Protocol.
67
- */
68
- format: string;
69
42
  }
@@ -0,0 +1,66 @@
1
+ import type { ObjectOrArray } from "@twin.org/core";
2
+ import type { IDcatDistributionBase } from "@twin.org/standards-w3c-dcat";
3
+ import type { IDataspaceProtocolDataServiceBase } from "./IDataspaceProtocolDataServiceBase.js";
4
+ import type { DataspaceProtocolCatalogTypes } from "../catalog/dataspaceProtocolCatalogTypes.js";
5
+ import type { IDataspaceProtocolOfferBase } from "../odrl/IDataspaceProtocolOfferBase.js";
6
+ /**
7
+ * Distribution interface compliant with Eclipse Data Space Protocol.
8
+ *
9
+ * This interface extends IDistribution and enforces DS Protocol-specific requirements
10
+ * by overriding properties with more specific types and constraints.
11
+ *
12
+ * **Requirements per DS Protocol:**
13
+ * - `@id` MUST be present for dataset identification (REQUIRED)
14
+ * - `odrl:hasPolicy` MIGHT be present as an array of ODRL Offers (OPTIONAL)
15
+ * - Array MUST contain at least one IOdrlOffer
16
+ * - Each Offer MUST have `@type`: "Offer"
17
+ * - `format` is REQUIRED.
18
+ *
19
+ * **Type System Design:**
20
+ * - W3C DCAT spec defines `odrl:hasPolicy` as optional singular `IOdrlPolicy`
21
+ * - DS Protocol requires it as a REQUIRED array of `IOdrlOffer`
22
+ * - Interface extension allows TypeScript to override inherited property types
23
+ * - Standards packages (@twin.org/standards-w3c-*) follow W3C specs exactly
24
+ * - DS Protocol-specific constraints are defined here
25
+ *
26
+ * **Future Compatibility:**
27
+ * - Currently only one Offer per dataset is supported
28
+ * - Array structure allows future support for multiple offers
29
+ *
30
+ * @see https://eclipse-dataspace-protocol-base.github.io/DataspaceProtocol/2025-1-err1/#lower-level-types
31
+ * @see https://www.w3.org/TR/vocab-dcat-3/ - W3C DCAT v3 spec
32
+ * @see IOdrlOffer from @twin.org/standards-w3c-odrl
33
+ * @see IResource.odrl:hasPolicy from @twin.org/standards-w3c-dcat
34
+ */
35
+ export interface IDataspaceProtocolDistributionBase extends Omit<IDcatDistributionBase, "odrl:hasPolicy" | "@type" | "dcterms:format"> {
36
+ /**
37
+ * The type identifier for the Distribution.
38
+ * REQUIRED per Eclipse Data Space Protocol.
39
+ */
40
+ "@type": typeof DataspaceProtocolCatalogTypes.Distribution;
41
+ /**
42
+ * Unique identifier for the distribution.
43
+ * OPTIONAL for embedded distributions (may use JSON-LD blank nodes).
44
+ * REQUIRED on standalone Distribution objects per Eclipse Data Space Protocol.
45
+ */
46
+ "@id"?: string;
47
+ /**
48
+ * Array of ODRL policies (Offers) as required by DS Protocol.
49
+ *
50
+ * REQUIRED per Eclipse Data Space Protocol spec.
51
+ * Must contain at least one IOdrlOffer.
52
+ * Currently only single offer is supported, but array structure
53
+ * allows for future multi-offer support.
54
+ */
55
+ hasPolicy?: ObjectOrArray<IDataspaceProtocolOfferBase>;
56
+ /**
57
+ * Access service.
58
+ * It can be a URI pointing to an access service or inline the access service itself.
59
+ */
60
+ accessService: string | IDataspaceProtocolDataServiceBase;
61
+ /**
62
+ * Distribution format.
63
+ * REQUIRED per Eclipse Data Space Protocol.
64
+ */
65
+ format: string;
66
+ }
@@ -1,4 +1,5 @@
1
- import type { IOdrlOffer } from "@twin.org/standards-w3c-odrl";
1
+ import type { OdrlContextType } from "@twin.org/standards-w3c-odrl";
2
+ import type { IDataspaceProtocolOfferBase } from "./IDataspaceProtocolOfferBase.js";
2
3
  /**
3
4
  * Offer interface compliant with Eclipse Data Space Protocol.
4
5
  *
@@ -9,9 +10,13 @@ import type { IOdrlOffer } from "@twin.org/standards-w3c-odrl";
9
10
  * @see https://eclipse-dataspace-protocol-base.github.io/DataspaceProtocol/2025-1-err1/#lower-level-types
10
11
  * @see IOdrlOffer from @twin.org/standards-w3c-odrl
11
12
  */
12
- export interface IDataspaceProtocolOffer extends Omit<IOdrlOffer, "uid"> {
13
+ export interface IDataspaceProtocolOffer extends IDataspaceProtocolOfferBase {
13
14
  /**
14
15
  * Unique identifier for the offer.
15
16
  */
16
17
  "@id": string;
18
+ /**
19
+ * LD Context.
20
+ */
21
+ "@context": OdrlContextType;
17
22
  }
@@ -0,0 +1,18 @@
1
+ import type { IOdrlOffer } from "@twin.org/standards-w3c-odrl";
2
+ /**
3
+ * Offer interface compliant with Eclipse Data Space Protocol without JSON-LD context.
4
+ * This is the context-free variant of IDataspaceProtocolOffer, intended for embedding
5
+ * offers inline within other objects where the context is provided by the enclosing document.
6
+ *
7
+ * Extends IOdrlOffer with DS Protocol-specific constraints:
8
+ * - '@id' is REQUIRED (used as the primary offer identifier in DS Protocol)
9
+ * - '@context' is omitted (context is inherited from the parent object)
10
+ *
11
+ * @see https://eclipse-dataspace-protocol-base.github.io/DataspaceProtocol/2025-1-err1/#lower-level-types
12
+ */
13
+ export interface IDataspaceProtocolOfferBase extends Omit<IOdrlOffer, "uid" | "@context"> {
14
+ /**
15
+ * Unique identifier for the offer.
16
+ */
17
+ "@id": string;
18
+ }
package/docs/changelog.md CHANGED
@@ -1,5 +1,40 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.0.3-next.56](https://github.com/twinfoundation/standards/compare/standards-dataspace-protocol-v0.0.3-next.55...standards-dataspace-protocol-v0.0.3-next.56) (2026-03-20)
4
+
5
+
6
+ ### Features
7
+
8
+ * fixes in dataspace and odrl ([9924f91](https://github.com/twinfoundation/standards/commit/9924f9135cb6e227e1040065ab017b1c7ef8347a))
9
+
10
+
11
+ ### Dependencies
12
+
13
+ * The following workspace dependencies were updated
14
+ * dependencies
15
+ * @twin.org/standards-w3c-dcat bumped from 0.0.3-next.55 to 0.0.3-next.56
16
+ * @twin.org/standards-w3c-odrl bumped from 0.0.3-next.55 to 0.0.3-next.56
17
+ * devDependencies
18
+ * @twin.org/standards-ld-contexts bumped from 0.0.3-next.55 to 0.0.3-next.56
19
+
20
+ ## [0.0.3-next.55](https://github.com/twinfoundation/standards/compare/standards-dataspace-protocol-v0.0.3-next.54...standards-dataspace-protocol-v0.0.3-next.55) (2026-03-19)
21
+
22
+
23
+ ### Features
24
+
25
+ * update to new ts-ts-schema and generic constructs ([4dff991](https://github.com/twinfoundation/standards/commit/4dff991fb70de4320668641ed94abf8e9b06acad))
26
+ * use local LD contexts in tests instead of remote ones ([#201](https://github.com/twinfoundation/standards/issues/201)) ([7d6c6ea](https://github.com/twinfoundation/standards/commit/7d6c6ea7b952fb9e2240ff252f8ce85c42d78985))
27
+
28
+
29
+ ### Dependencies
30
+
31
+ * The following workspace dependencies were updated
32
+ * dependencies
33
+ * @twin.org/standards-w3c-dcat bumped from 0.0.3-next.54 to 0.0.3-next.55
34
+ * @twin.org/standards-w3c-odrl bumped from 0.0.3-next.54 to 0.0.3-next.55
35
+ * devDependencies
36
+ * @twin.org/standards-ld-contexts bumped from 0.0.3-next.54 to 0.0.3-next.55
37
+
3
38
  ## [0.0.3-next.54](https://github.com/twinfoundation/standards/compare/standards-dataspace-protocol-v0.0.3-next.53...standards-dataspace-protocol-v0.0.3-next.54) (2026-03-12)
4
39
 
5
40
 
@@ -14,7 +14,7 @@ Handle all the catalog data types for Dataspace Protocol.
14
14
 
15
15
  ## Methods
16
16
 
17
- ### registerTypes()
17
+ ### registerTypes() {#registertypes}
18
18
 
19
19
  > `static` **registerTypes**(): `void`
20
20
 
@@ -14,7 +14,7 @@ Handle all the contract negotiation data types for Dataspace Protocol.
14
14
 
15
15
  ## Methods
16
16
 
17
- ### registerTypes()
17
+ ### registerTypes() {#registertypes}
18
18
 
19
19
  > `static` **registerTypes**(): `void`
20
20
 
@@ -14,7 +14,7 @@ Handle all the data types for Dataspace Protocol.
14
14
 
15
15
  ## Methods
16
16
 
17
- ### registerRedirects()
17
+ ### registerRedirects() {#registerredirects}
18
18
 
19
19
  > `static` **registerRedirects**(): `void`
20
20
 
@@ -26,7 +26,7 @@ Register the JSON-LD Redirects.
26
26
 
27
27
  ***
28
28
 
29
- ### registerTypes()
29
+ ### registerTypes() {#registertypes}
30
30
 
31
31
  > `static` **registerTypes**(): `void`
32
32
 
@@ -14,7 +14,7 @@ Dataspace protocol helper.
14
14
 
15
15
  ## Methods
16
16
 
17
- ### validate()
17
+ ### validate() {#validate}
18
18
 
19
19
  > `static` **validate**(`object`): `Promise`\<`IValidationFailure`[]\>
20
20
 
@@ -36,7 +36,7 @@ An array of validation failures, empty if the object is conformant
36
36
 
37
37
  ***
38
38
 
39
- ### normalize()
39
+ ### normalize() {#normalize}
40
40
 
41
41
  > `static` **normalize**(`object`): `Promise`\<`IJsonLdNodeObject`\>
42
42
 
@@ -14,7 +14,7 @@ Handle all the transfer process data types for Dataspace Protocol.
14
14
 
15
15
  ## Methods
16
16
 
17
- ### registerTypes()
17
+ ### registerTypes() {#registertypes}
18
18
 
19
19
  > `static` **registerTypes**(): `void`
20
20
 
@@ -22,11 +22,16 @@
22
22
  - [IDataspaceProtocolContractOfferMessage](interfaces/IDataspaceProtocolContractOfferMessage.md)
23
23
  - [IDataspaceProtocolContractRequestMessage](interfaces/IDataspaceProtocolContractRequestMessage.md)
24
24
  - [IDataspaceProtocolCatalog](interfaces/IDataspaceProtocolCatalog.md)
25
+ - [IDataspaceProtocolCatalogBase](interfaces/IDataspaceProtocolCatalogBase.md)
25
26
  - [IDataspaceProtocolDataService](interfaces/IDataspaceProtocolDataService.md)
27
+ - [IDataspaceProtocolDataServiceBase](interfaces/IDataspaceProtocolDataServiceBase.md)
26
28
  - [IDataspaceProtocolDataset](interfaces/IDataspaceProtocolDataset.md)
29
+ - [IDataspaceProtocolDatasetBase](interfaces/IDataspaceProtocolDatasetBase.md)
27
30
  - [IDataspaceProtocolDistribution](interfaces/IDataspaceProtocolDistribution.md)
31
+ - [IDataspaceProtocolDistributionBase](interfaces/IDataspaceProtocolDistributionBase.md)
28
32
  - [IDataspaceProtocolAgreement](interfaces/IDataspaceProtocolAgreement.md)
29
33
  - [IDataspaceProtocolOffer](interfaces/IDataspaceProtocolOffer.md)
34
+ - [IDataspaceProtocolOfferBase](interfaces/IDataspaceProtocolOfferBase.md)
30
35
  - [IDataspaceProtocolPolicy](interfaces/IDataspaceProtocolPolicy.md)
31
36
  - [IDataspaceProtocolSet](interfaces/IDataspaceProtocolSet.md)
32
37
  - [IDataspaceProtocolDataAddress](interfaces/IDataspaceProtocolDataAddress.md)
@@ -47,14 +52,6 @@
47
52
  - [DataspaceProtocolContractNegotiationStateType](type-aliases/DataspaceProtocolContractNegotiationStateType.md)
48
53
  - [DataspaceProtocolContextType](type-aliases/DataspaceProtocolContextType.md)
49
54
  - [DataspaceProtocolContexts](type-aliases/DataspaceProtocolContexts.md)
50
- - [IDataspaceProtocolCatalogNoContext](type-aliases/IDataspaceProtocolCatalogNoContext.md)
51
- - [IDataspaceProtocolDataServiceNoContext](type-aliases/IDataspaceProtocolDataServiceNoContext.md)
52
- - [IDataspaceProtocolDatasetNoContext](type-aliases/IDataspaceProtocolDatasetNoContext.md)
53
- - [IDataspaceProtocolDistributionNoContext](type-aliases/IDataspaceProtocolDistributionNoContext.md)
54
- - [IDataspaceProtocolAgreementNoContext](type-aliases/IDataspaceProtocolAgreementNoContext.md)
55
- - [IDataspaceProtocolOfferNoContext](type-aliases/IDataspaceProtocolOfferNoContext.md)
56
- - [IDataspaceProtocolPolicyNoContext](type-aliases/IDataspaceProtocolPolicyNoContext.md)
57
- - [IDataspaceProtocolSetNoContext](type-aliases/IDataspaceProtocolSetNoContext.md)
58
55
  - [DataspaceProtocolTransferProcessTypes](type-aliases/DataspaceProtocolTransferProcessTypes.md)
59
56
  - [DataspaceProtocolEndpointType](type-aliases/DataspaceProtocolEndpointType.md)
60
57
  - [DataspaceProtocolTransferProcessStateType](type-aliases/DataspaceProtocolTransferProcessStateType.md)
@@ -17,7 +17,7 @@ Extends IOdrlAgreement with DS Protocol-specific constraints:
17
17
 
18
18
  ## Properties
19
19
 
20
- ### @id
20
+ ### @id {#id}
21
21
 
22
22
  > **@id**: `string`
23
23
 
@@ -25,7 +25,7 @@ Unique identifier for the agreement.
25
25
 
26
26
  ***
27
27
 
28
- ### @type
28
+ ### @type {#type}
29
29
 
30
30
  > **@type**: `"Agreement"`
31
31
 
@@ -37,7 +37,7 @@ The type must be "Agreement".
37
37
 
38
38
  ***
39
39
 
40
- ### assigner
40
+ ### assigner {#assigner}
41
41
 
42
42
  > **assigner**: `string` \| `IOdrlParty`
43
43
 
@@ -50,7 +50,7 @@ Required for Agreement policies.
50
50
 
51
51
  ***
52
52
 
53
- ### assignee
53
+ ### assignee {#assignee}
54
54
 
55
55
  > **assignee**: `string` \| `IOdrlParty`
56
56
 
@@ -63,7 +63,7 @@ Required for Agreement policies.
63
63
 
64
64
  ***
65
65
 
66
- ### @context
66
+ ### @context {#context}
67
67
 
68
68
  > **@context**: `OdrlContextType`
69
69
 
@@ -76,9 +76,9 @@ Must include "https://www.w3.org/ns/odrl.jsonld"
76
76
 
77
77
  ***
78
78
 
79
- ### profile?
79
+ ### profile? {#profile}
80
80
 
81
- > `optional` **profile**: `string` \| `string`[]
81
+ > `optional` **profile?**: `ObjectOrArray`\<`string`\>
82
82
 
83
83
  The profile(s) this policy conforms to.
84
84
  IRIs identifying the ODRL Profile(s).
@@ -89,9 +89,9 @@ IRIs identifying the ODRL Profile(s).
89
89
 
90
90
  ***
91
91
 
92
- ### target?
92
+ ### target? {#target}
93
93
 
94
- > `optional` **target**: `string` \| `IOdrlAsset` \| `IOdrlAssetCollection` \| (`string` \| `IOdrlAsset` \| `IOdrlAssetCollection`)[]
94
+ > `optional` **target?**: `ObjectOrArray`\<`string` \| `IOdrlAsset` \| `IOdrlAssetCollection`\>
95
95
 
96
96
  The target asset for the rule.
97
97
 
@@ -101,9 +101,9 @@ The target asset for the rule.
101
101
 
102
102
  ***
103
103
 
104
- ### action?
104
+ ### action? {#action}
105
105
 
106
- > `optional` **action**: `string` \| `IOdrlAction` \| (`string` \| `IOdrlAction`)[]
106
+ > `optional` **action?**: `ObjectOrArray`\<`string` \| `IOdrlAction`\>
107
107
 
108
108
  The action associated with the rule.
109
109
 
@@ -113,9 +113,9 @@ The action associated with the rule.
113
113
 
114
114
  ***
115
115
 
116
- ### inheritFrom?
116
+ ### inheritFrom? {#inheritfrom}
117
117
 
118
- > `optional` **inheritFrom**: `string` \| `string`[]
118
+ > `optional` **inheritFrom?**: `ObjectOrArray`\<`string`\>
119
119
 
120
120
  The parent policy(ies) this policy inherits from.
121
121
  IRIs identifying the parent Policy(ies).
@@ -126,9 +126,9 @@ IRIs identifying the parent Policy(ies).
126
126
 
127
127
  ***
128
128
 
129
- ### conflict?
129
+ ### conflict? {#conflict}
130
130
 
131
- > `optional` **conflict**: `ConflictStrategyType`
131
+ > `optional` **conflict?**: `OdrlConflictStrategyType`
132
132
 
133
133
  The conflict resolution strategy.
134
134
  - perm: Permissions override Prohibitions
@@ -141,9 +141,9 @@ The conflict resolution strategy.
141
141
 
142
142
  ***
143
143
 
144
- ### permission?
144
+ ### permission? {#permission}
145
145
 
146
- > `optional` **permission**: `IOdrlPermission` \| `IOdrlPermission`[]
146
+ > `optional` **permission?**: `ObjectOrArray`\<`IOdrlPermission`\>
147
147
 
148
148
  The permissions in the policy.
149
149
  At least one of permission, prohibition, or obligation must be present.
@@ -154,9 +154,9 @@ At least one of permission, prohibition, or obligation must be present.
154
154
 
155
155
  ***
156
156
 
157
- ### prohibition?
157
+ ### prohibition? {#prohibition}
158
158
 
159
- > `optional` **prohibition**: `IOdrlProhibition` \| `IOdrlProhibition`[]
159
+ > `optional` **prohibition?**: `ObjectOrArray`\<`IOdrlProhibition`\>
160
160
 
161
161
  The prohibitions in the policy.
162
162
  At least one of permission, prohibition, or obligation must be present.
@@ -167,9 +167,9 @@ At least one of permission, prohibition, or obligation must be present.
167
167
 
168
168
  ***
169
169
 
170
- ### obligation?
170
+ ### obligation? {#obligation}
171
171
 
172
- > `optional` **obligation**: `IOdrlDuty` \| `IOdrlDuty`[]
172
+ > `optional` **obligation?**: `ObjectOrArray`\<`IOdrlDuty`\>
173
173
 
174
174
  The obligations in the policy.
175
175
  At least one of permission, prohibition, or obligation must be present.