@twin.org/standards-w3c-dcat 0.0.3-next.64 → 0.0.3-next.65

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.
@@ -1 +1 @@
1
- {"version":3,"file":"IDcatResourceBase.js","sourceRoot":"","sources":["../../../src/models/IDcatResourceBase.ts"],"names":[],"mappings":"","sourcesContent":["// Copyright 2025 IOTA Stiftung.\n// SPDX-License-Identifier: Apache-2.0.\nimport type { ObjectOrArray } from \"@twin.org/core\";\nimport type { IJsonLdNodeObject, JsonLdObjectWithAliases } from \"@twin.org/data-json-ld\";\nimport type { IFoafAgent } from \"@twin.org/standards-foaf\";\nimport type { IOdrlPolicy } from \"@twin.org/standards-w3c-odrl\";\nimport type { DcatClasses } from \"./dcatClasses.js\";\nimport type { IDcatRelationship } from \"./IDcatRelationship.js\";\n\n/**\n * Base interface for DCAT catalogued resources without JSON-LD context.\n * This is the context-free variant of IDcatResource, intended for embedding\n * resources inline within other objects where the context is provided by the enclosing document.\n * @see https://www.w3.org/TR/vocab-dcat-3/#Class:Resource\n */\nexport interface IDcatResourceBase {\n\t/**\n\t * The type of the resource.\n\t * Typically \"Catalog\", \"Dataset\", \"DataService\", \"DatasetSeries\", or the base \"Resource\".\n\t */\n\t\"@type\":\n\t\t| typeof DcatClasses.Resource\n\t\t| typeof DcatClasses.Dataset\n\t\t| typeof DcatClasses.DataService\n\t\t| typeof DcatClasses.Catalog\n\t\t| typeof DcatClasses.DatasetSeries;\n\n\t/**\n\t * The unique identifier for the resource.\n\t */\n\t\"@id\"?: string;\n\n\t/**\n\t * A name given to the resource.\n\t * @see https://www.w3.org/TR/vocab-dcat-3/#Property:resource_title\n\t */\n\t\"dcterms:title\"?: ObjectOrArray<string>;\n\n\t/**\n\t * A free-text account of the resource.\n\t * @see https://www.w3.org/TR/vocab-dcat-3/#Property:resource_description\n\t */\n\t\"dcterms:description\"?: ObjectOrArray<string>;\n\n\t/**\n\t * A unique identifier of the resource.\n\t * @see https://www.w3.org/TR/vocab-dcat-3/#Property:resource_identifier\n\t */\n\t\"dcterms:identifier\"?: ObjectOrArray<string>;\n\n\t/**\n\t * Date of formal issuance (publication) of the resource.\n\t * @json-schema format:date-time\n\t * @see https://www.w3.org/TR/vocab-dcat-3/#Property:resource_release_date\n\t */\n\t\"dcterms:issued\"?: string;\n\n\t/**\n\t * Most recent date on which the resource was changed, updated or modified.\n\t * @json-schema format:date-time\n\t * @see https://www.w3.org/TR/vocab-dcat-3/#Property:resource_update_date\n\t */\n\t\"dcterms:modified\"?: string;\n\n\t/**\n\t * A language of the resource.\n\t * @see https://www.w3.org/TR/vocab-dcat-3/#Property:resource_language\n\t */\n\t\"dcterms:language\"?: ObjectOrArray<string>;\n\n\t/**\n\t * An entity responsible for making the resource available.\n\t * @see https://www.w3.org/TR/vocab-dcat-3/#Property:resource_publisher\n\t */\n\t\"dcterms:publisher\"?: JsonLdObjectWithAliases<IFoafAgent, \"foaf\"> | string;\n\n\t/**\n\t * An entity responsible for producing the resource.\n\t * @see https://www.w3.org/TR/vocab-dcat-3/#Property:resource_creator\n\t */\n\t\"dcterms:creator\"?: JsonLdObjectWithAliases<IFoafAgent, \"foaf\"> | string;\n\n\t/**\n\t * Information about who can access the resource or an indication of its security status.\n\t * @see https://www.w3.org/TR/vocab-dcat-3/#Property:resource_access_rights\n\t */\n\t\"dcterms:accessRights\"?: IJsonLdNodeObject | string;\n\n\t/**\n\t * A legal document under which the resource is made available.\n\t * @see https://www.w3.org/TR/vocab-dcat-3/#Property:resource_license\n\t */\n\t\"dcterms:license\"?: IJsonLdNodeObject | string;\n\n\t/**\n\t * Information about rights held in and over the resource.\n\t * @see https://www.w3.org/TR/vocab-dcat-3/#Property:resource_rights\n\t */\n\t\"dcterms:rights\"?: IJsonLdNodeObject | string;\n\n\t/**\n\t * An established standard to which the resource conforms.\n\t * @see https://www.w3.org/TR/vocab-dcat-3/#Property:resource_conforms_to\n\t */\n\t\"dcterms:conformsTo\"?: ObjectOrArray<string>;\n\n\t/**\n\t * The nature or genre of the resource.\n\t * @see https://www.w3.org/TR/vocab-dcat-3/#Property:resource_type\n\t */\n\t\"dcterms:type\"?: string;\n\n\t/**\n\t * Relevant contact information for the catalogued resource.\n\t * @see https://www.w3.org/TR/vocab-dcat-3/#Property:resource_contact_point\n\t */\n\t\"dcat:contactPoint\"?: IJsonLdNodeObject | string;\n\n\t/**\n\t * A keyword or tag describing the resource.\n\t * @see https://www.w3.org/TR/vocab-dcat-3/#Property:resource_keyword\n\t */\n\t\"dcat:keyword\"?: ObjectOrArray<string>;\n\n\t/**\n\t * A main category of the resource. A resource can have multiple themes.\n\t * @see https://www.w3.org/TR/vocab-dcat-3/#Property:resource_theme\n\t */\n\t\"dcat:theme\"?: ObjectOrArray<string>;\n\n\t/**\n\t * A Web page that can be navigated to gain access to the resource.\n\t * @see https://www.w3.org/TR/vocab-dcat-3/#Property:resource_landing_page\n\t */\n\t\"dcat:landingPage\"?: ObjectOrArray<string>;\n\n\t/**\n\t * Link to a description of a relationship with another resource.\n\t * @see https://www.w3.org/TR/vocab-dcat-3/#Property:resource_qualified_relation\n\t */\n\t\"dcat:qualifiedRelation\"?: IDcatRelationship | string;\n\n\t/**\n\t * An ODRL conformant policy expressing the rights associated with the resource.\n\t * @see https://www.w3.org/TR/vocab-dcat-3/#Property:resource_has_policy\n\t */\n\t\"odrl:hasPolicy\"?: IOdrlPolicy;\n}\n"]}
1
+ {"version":3,"file":"IDcatResourceBase.js","sourceRoot":"","sources":["../../../src/models/IDcatResourceBase.ts"],"names":[],"mappings":"","sourcesContent":["// Copyright 2025 IOTA Stiftung.\n// SPDX-License-Identifier: Apache-2.0.\nimport type { ObjectOrArray } from \"@twin.org/core\";\nimport type {\n\tIJsonLdNodeObject,\n\tJsonLdObjectWithAliases,\n\tJsonLdObjectWithOptionalContext\n} from \"@twin.org/data-json-ld\";\nimport type { IFoafAgent } from \"@twin.org/standards-foaf\";\nimport type { IOdrlPolicy } from \"@twin.org/standards-w3c-odrl\";\nimport type { DcatClasses } from \"./dcatClasses.js\";\nimport type { IDcatRelationship } from \"./IDcatRelationship.js\";\n\n/**\n * Base interface for DCAT catalogued resources without JSON-LD context.\n * This is the context-free variant of IDcatResource, intended for embedding\n * resources inline within other objects where the context is provided by the enclosing document.\n * @see https://www.w3.org/TR/vocab-dcat-3/#Class:Resource\n */\nexport interface IDcatResourceBase {\n\t/**\n\t * The type of the resource.\n\t * Typically \"Catalog\", \"Dataset\", \"DataService\", \"DatasetSeries\", or the base \"Resource\".\n\t */\n\t\"@type\":\n\t\t| typeof DcatClasses.Resource\n\t\t| typeof DcatClasses.Dataset\n\t\t| typeof DcatClasses.DataService\n\t\t| typeof DcatClasses.Catalog\n\t\t| typeof DcatClasses.DatasetSeries;\n\n\t/**\n\t * The unique identifier for the resource.\n\t */\n\t\"@id\"?: string;\n\n\t/**\n\t * A name given to the resource.\n\t * @see https://www.w3.org/TR/vocab-dcat-3/#Property:resource_title\n\t */\n\t\"dcterms:title\"?: ObjectOrArray<string>;\n\n\t/**\n\t * A free-text account of the resource.\n\t * @see https://www.w3.org/TR/vocab-dcat-3/#Property:resource_description\n\t */\n\t\"dcterms:description\"?: ObjectOrArray<string>;\n\n\t/**\n\t * A unique identifier of the resource.\n\t * @see https://www.w3.org/TR/vocab-dcat-3/#Property:resource_identifier\n\t */\n\t\"dcterms:identifier\"?: ObjectOrArray<string>;\n\n\t/**\n\t * Date of formal issuance (publication) of the resource.\n\t * @json-schema format:date-time\n\t * @see https://www.w3.org/TR/vocab-dcat-3/#Property:resource_release_date\n\t */\n\t\"dcterms:issued\"?: string;\n\n\t/**\n\t * Most recent date on which the resource was changed, updated or modified.\n\t * @json-schema format:date-time\n\t * @see https://www.w3.org/TR/vocab-dcat-3/#Property:resource_update_date\n\t */\n\t\"dcterms:modified\"?: string;\n\n\t/**\n\t * A language of the resource.\n\t * @see https://www.w3.org/TR/vocab-dcat-3/#Property:resource_language\n\t */\n\t\"dcterms:language\"?: ObjectOrArray<string>;\n\n\t/**\n\t * An entity responsible for making the resource available.\n\t * @see https://www.w3.org/TR/vocab-dcat-3/#Property:resource_publisher\n\t */\n\t\"dcterms:publisher\"?: JsonLdObjectWithAliases<IFoafAgent, \"foaf\"> | string;\n\n\t/**\n\t * An entity responsible for producing the resource.\n\t * @see https://www.w3.org/TR/vocab-dcat-3/#Property:resource_creator\n\t */\n\t\"dcterms:creator\"?: JsonLdObjectWithAliases<IFoafAgent, \"foaf\"> | string;\n\n\t/**\n\t * Information about who can access the resource or an indication of its security status.\n\t * @see https://www.w3.org/TR/vocab-dcat-3/#Property:resource_access_rights\n\t */\n\t\"dcterms:accessRights\"?: IJsonLdNodeObject | string;\n\n\t/**\n\t * A legal document under which the resource is made available.\n\t * @see https://www.w3.org/TR/vocab-dcat-3/#Property:resource_license\n\t */\n\t\"dcterms:license\"?: IJsonLdNodeObject | string;\n\n\t/**\n\t * Information about rights held in and over the resource.\n\t * @see https://www.w3.org/TR/vocab-dcat-3/#Property:resource_rights\n\t */\n\t\"dcterms:rights\"?: IJsonLdNodeObject | string;\n\n\t/**\n\t * An established standard to which the resource conforms.\n\t * @see https://www.w3.org/TR/vocab-dcat-3/#Property:resource_conforms_to\n\t */\n\t\"dcterms:conformsTo\"?: ObjectOrArray<string>;\n\n\t/**\n\t * The nature or genre of the resource.\n\t * @see https://www.w3.org/TR/vocab-dcat-3/#Property:resource_type\n\t */\n\t\"dcterms:type\"?: string;\n\n\t/**\n\t * Relevant contact information for the catalogued resource.\n\t * @see https://www.w3.org/TR/vocab-dcat-3/#Property:resource_contact_point\n\t */\n\t\"dcat:contactPoint\"?: IJsonLdNodeObject | string;\n\n\t/**\n\t * A keyword or tag describing the resource.\n\t * @see https://www.w3.org/TR/vocab-dcat-3/#Property:resource_keyword\n\t */\n\t\"dcat:keyword\"?: ObjectOrArray<string>;\n\n\t/**\n\t * A main category of the resource. A resource can have multiple themes.\n\t * @see https://www.w3.org/TR/vocab-dcat-3/#Property:resource_theme\n\t */\n\t\"dcat:theme\"?: ObjectOrArray<string>;\n\n\t/**\n\t * A Web page that can be navigated to gain access to the resource.\n\t * @see https://www.w3.org/TR/vocab-dcat-3/#Property:resource_landing_page\n\t */\n\t\"dcat:landingPage\"?: ObjectOrArray<string>;\n\n\t/**\n\t * Link to a description of a relationship with another resource.\n\t * @see https://www.w3.org/TR/vocab-dcat-3/#Property:resource_qualified_relation\n\t */\n\t\"dcat:qualifiedRelation\"?: IDcatRelationship | string;\n\n\t/**\n\t * An ODRL conformant policy expressing the rights associated with the resource.\n\t * @see https://www.w3.org/TR/vocab-dcat-3/#Property:resource_has_policy\n\t */\n\t\"odrl:hasPolicy\"?: JsonLdObjectWithOptionalContext<IOdrlPolicy>;\n}\n"]}
@@ -98,7 +98,110 @@
98
98
  "dcterms:publisher": {
99
99
  "anyOf": [
100
100
  {
101
- "$ref": "https://schema.twindev.org/json-ld/JsonLdObjectWithAliases"
101
+ "description": "A FOAF Agent.",
102
+ "type": "object",
103
+ "properties": {
104
+ "@context": {
105
+ "$ref": "https://schema.twindev.org/w3c-dcat/FoafContextType",
106
+ "description": "The LD Context.",
107
+ "$comment": "Inherited from FoafAgent"
108
+ },
109
+ "@id": {
110
+ "type": "string",
111
+ "description": "The unique identifier for the FOAF object.",
112
+ "$comment": "Inherited from FoafBaseObject"
113
+ },
114
+ "foaf:name": {
115
+ "type": "string",
116
+ "description": "A name for some thing.",
117
+ "$comment": "Inherited from FoafBaseObject"
118
+ },
119
+ "foaf:title": {
120
+ "type": "string",
121
+ "description": "Title (Mr, Mrs, Ms, Dr. etc)",
122
+ "$comment": "Inherited from FoafBaseObject"
123
+ },
124
+ "foaf:mbox": {
125
+ "type": "string",
126
+ "description": "A personal mailbox, ie. an Internet mailbox associated with exactly one owner, the first owner of this mailbox",
127
+ "$comment": "Inherited from FoafBaseObject"
128
+ },
129
+ "foaf:homepage": {
130
+ "type": "string",
131
+ "description": "A homepage for some thing.",
132
+ "$comment": "Inherited from FoafBaseObject"
133
+ },
134
+ "foaf:depiction": {
135
+ "$ref": "https://schema.twindev.org/w3c-dcat/FoafImage",
136
+ "description": "A depiction of some thing.",
137
+ "$comment": "Inherited from FoafBaseObject"
138
+ },
139
+ "@type": {
140
+ "anyOf": [
141
+ {
142
+ "const": "Agent"
143
+ },
144
+ {
145
+ "const": "Person"
146
+ },
147
+ {
148
+ "const": "Organization"
149
+ },
150
+ {
151
+ "const": "Group"
152
+ },
153
+ {
154
+ "type": "string"
155
+ }
156
+ ],
157
+ "description": "Type.",
158
+ "$comment": "Inherited from FoafAgent"
159
+ },
160
+ "foaf:age": {
161
+ "type": "number",
162
+ "description": "The age in years of some agent.",
163
+ "$comment": "Inherited from FoafAgent"
164
+ },
165
+ "foaf:made": {
166
+ "anyOf": [
167
+ {
168
+ "$ref": "https://schema.twindev.org/json-ld/JsonLdNodeObject"
169
+ },
170
+ {
171
+ "type": "array",
172
+ "items": {
173
+ "$ref": "https://schema.twindev.org/json-ld/JsonLdNodeObject"
174
+ }
175
+ }
176
+ ],
177
+ "description": "Something that was made by this agent.",
178
+ "$comment": "Inherited from FoafAgent"
179
+ },
180
+ "foaf:weblog": {
181
+ "$ref": "https://schema.twindev.org/w3c-dcat/FoafDocument",
182
+ "description": "A weblog of some thing (whether person, group, company etc.).",
183
+ "$comment": "Inherited from FoafAgent"
184
+ },
185
+ "foaf:openid": {
186
+ "$ref": "https://schema.twindev.org/w3c-dcat/FoafDocument",
187
+ "description": "An OpenID for an agent.",
188
+ "$comment": "Inherited from FoafAgent"
189
+ },
190
+ "foaf:interest": {
191
+ "$ref": "https://schema.twindev.org/w3c-dcat/FoafDocument",
192
+ "description": "A page about a topic of interest to this person.",
193
+ "$comment": "Inherited from FoafAgent"
194
+ },
195
+ "foaf:topic_interest": {
196
+ "$ref": "https://schema.twindev.org/json-ld/JsonLdNodeObject",
197
+ "description": "A thing of interest to this person.",
198
+ "$comment": "Inherited from FoafAgent"
199
+ }
200
+ },
201
+ "required": [
202
+ "@type"
203
+ ],
204
+ "$comment": "Inlined utility base type FoafAgent so utility transformations can operate on concrete properties instead of a $ref."
102
205
  },
103
206
  {
104
207
  "type": "string"
@@ -109,7 +212,110 @@
109
212
  "dcterms:creator": {
110
213
  "anyOf": [
111
214
  {
112
- "$ref": "https://schema.twindev.org/json-ld/JsonLdObjectWithAliases"
215
+ "description": "A FOAF Agent.",
216
+ "type": "object",
217
+ "properties": {
218
+ "@context": {
219
+ "$ref": "https://schema.twindev.org/w3c-dcat/FoafContextType",
220
+ "description": "The LD Context.",
221
+ "$comment": "Inherited from FoafAgent"
222
+ },
223
+ "@id": {
224
+ "type": "string",
225
+ "description": "The unique identifier for the FOAF object.",
226
+ "$comment": "Inherited from FoafBaseObject"
227
+ },
228
+ "foaf:name": {
229
+ "type": "string",
230
+ "description": "A name for some thing.",
231
+ "$comment": "Inherited from FoafBaseObject"
232
+ },
233
+ "foaf:title": {
234
+ "type": "string",
235
+ "description": "Title (Mr, Mrs, Ms, Dr. etc)",
236
+ "$comment": "Inherited from FoafBaseObject"
237
+ },
238
+ "foaf:mbox": {
239
+ "type": "string",
240
+ "description": "A personal mailbox, ie. an Internet mailbox associated with exactly one owner, the first owner of this mailbox",
241
+ "$comment": "Inherited from FoafBaseObject"
242
+ },
243
+ "foaf:homepage": {
244
+ "type": "string",
245
+ "description": "A homepage for some thing.",
246
+ "$comment": "Inherited from FoafBaseObject"
247
+ },
248
+ "foaf:depiction": {
249
+ "$ref": "https://schema.twindev.org/w3c-dcat/FoafImage",
250
+ "description": "A depiction of some thing.",
251
+ "$comment": "Inherited from FoafBaseObject"
252
+ },
253
+ "@type": {
254
+ "anyOf": [
255
+ {
256
+ "const": "Agent"
257
+ },
258
+ {
259
+ "const": "Person"
260
+ },
261
+ {
262
+ "const": "Organization"
263
+ },
264
+ {
265
+ "const": "Group"
266
+ },
267
+ {
268
+ "type": "string"
269
+ }
270
+ ],
271
+ "description": "Type.",
272
+ "$comment": "Inherited from FoafAgent"
273
+ },
274
+ "foaf:age": {
275
+ "type": "number",
276
+ "description": "The age in years of some agent.",
277
+ "$comment": "Inherited from FoafAgent"
278
+ },
279
+ "foaf:made": {
280
+ "anyOf": [
281
+ {
282
+ "$ref": "https://schema.twindev.org/json-ld/JsonLdNodeObject"
283
+ },
284
+ {
285
+ "type": "array",
286
+ "items": {
287
+ "$ref": "https://schema.twindev.org/json-ld/JsonLdNodeObject"
288
+ }
289
+ }
290
+ ],
291
+ "description": "Something that was made by this agent.",
292
+ "$comment": "Inherited from FoafAgent"
293
+ },
294
+ "foaf:weblog": {
295
+ "$ref": "https://schema.twindev.org/w3c-dcat/FoafDocument",
296
+ "description": "A weblog of some thing (whether person, group, company etc.).",
297
+ "$comment": "Inherited from FoafAgent"
298
+ },
299
+ "foaf:openid": {
300
+ "$ref": "https://schema.twindev.org/w3c-dcat/FoafDocument",
301
+ "description": "An OpenID for an agent.",
302
+ "$comment": "Inherited from FoafAgent"
303
+ },
304
+ "foaf:interest": {
305
+ "$ref": "https://schema.twindev.org/w3c-dcat/FoafDocument",
306
+ "description": "A page about a topic of interest to this person.",
307
+ "$comment": "Inherited from FoafAgent"
308
+ },
309
+ "foaf:topic_interest": {
310
+ "$ref": "https://schema.twindev.org/json-ld/JsonLdNodeObject",
311
+ "description": "A thing of interest to this person.",
312
+ "$comment": "Inherited from FoafAgent"
313
+ }
314
+ },
315
+ "required": [
316
+ "@type"
317
+ ],
318
+ "$comment": "Inlined utility base type FoafAgent so utility transformations can operate on concrete properties instead of a $ref."
113
319
  },
114
320
  {
115
321
  "type": "string"
@@ -233,8 +439,222 @@
233
439
  "description": "Link to a description of a relationship with another resource."
234
440
  },
235
441
  "odrl:hasPolicy": {
236
- "$ref": "https://schema.twindev.org/w3c-odrl/OdrlPolicy",
237
- "description": "An ODRL conformant policy expressing the rights associated with the resource."
442
+ "description": "An ODRL conformant policy expressing the rights associated with the resource.",
443
+ "type": "object",
444
+ "properties": {
445
+ "@type": {
446
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlPolicyType",
447
+ "description": "The type of policy.\nMust be one of: \"Set\", \"Offer\", \"Agreement\""
448
+ },
449
+ "uid": {
450
+ "type": "string",
451
+ "description": "The unique identifier for the policy.\nMust be an IRI.",
452
+ "format": "uri"
453
+ },
454
+ "profile": {
455
+ "anyOf": [
456
+ {
457
+ "type": "string"
458
+ },
459
+ {
460
+ "type": "array",
461
+ "items": {
462
+ "type": "string"
463
+ }
464
+ }
465
+ ],
466
+ "description": "The profile(s) this policy conforms to.\nIRIs identifying the ODRL Profile(s)."
467
+ },
468
+ "assigner": {
469
+ "anyOf": [
470
+ {
471
+ "type": "string"
472
+ },
473
+ {
474
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlParty"
475
+ },
476
+ {
477
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlPartyCollection"
478
+ },
479
+ {
480
+ "type": "array",
481
+ "items": {
482
+ "anyOf": [
483
+ {
484
+ "type": "string"
485
+ },
486
+ {
487
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlParty"
488
+ },
489
+ {
490
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlPartyCollection"
491
+ }
492
+ ]
493
+ }
494
+ }
495
+ ],
496
+ "description": "The assigner of the policy.\nApplies to all rules unless overridden at rule level."
497
+ },
498
+ "assignee": {
499
+ "anyOf": [
500
+ {
501
+ "type": "string"
502
+ },
503
+ {
504
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlParty"
505
+ },
506
+ {
507
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlPartyCollection"
508
+ },
509
+ {
510
+ "type": "array",
511
+ "items": {
512
+ "anyOf": [
513
+ {
514
+ "type": "string"
515
+ },
516
+ {
517
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlParty"
518
+ },
519
+ {
520
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlPartyCollection"
521
+ }
522
+ ]
523
+ }
524
+ }
525
+ ],
526
+ "description": "The assignee of the policy.\nApplies to all rules unless overridden at rule level."
527
+ },
528
+ "target": {
529
+ "anyOf": [
530
+ {
531
+ "type": "string"
532
+ },
533
+ {
534
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlAsset"
535
+ },
536
+ {
537
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlAssetCollection"
538
+ },
539
+ {
540
+ "type": "array",
541
+ "items": {
542
+ "anyOf": [
543
+ {
544
+ "type": "string"
545
+ },
546
+ {
547
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlAsset"
548
+ },
549
+ {
550
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlAssetCollection"
551
+ }
552
+ ]
553
+ }
554
+ }
555
+ ],
556
+ "description": "The target asset for the rule."
557
+ },
558
+ "action": {
559
+ "anyOf": [
560
+ {
561
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlActionType"
562
+ },
563
+ {
564
+ "type": "string"
565
+ },
566
+ {
567
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlAction"
568
+ },
569
+ {
570
+ "type": "array",
571
+ "items": {
572
+ "anyOf": [
573
+ {
574
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlActionType"
575
+ },
576
+ {
577
+ "type": "string"
578
+ },
579
+ {
580
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlAction"
581
+ }
582
+ ]
583
+ }
584
+ }
585
+ ],
586
+ "description": "The action associated with the rule."
587
+ },
588
+ "inheritFrom": {
589
+ "anyOf": [
590
+ {
591
+ "type": "string"
592
+ },
593
+ {
594
+ "type": "array",
595
+ "items": {
596
+ "type": "string"
597
+ }
598
+ }
599
+ ],
600
+ "description": "The parent policy(ies) this policy inherits from.\nIRIs identifying the parent Policy(ies)."
601
+ },
602
+ "conflict": {
603
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlConflictStrategyType",
604
+ "description": "The conflict resolution strategy.\n- perm: Permissions override Prohibitions\n- prohibit: Prohibitions override Permissions\n- invalid: Policy is void if conflicts exist (default)"
605
+ },
606
+ "permission": {
607
+ "anyOf": [
608
+ {
609
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlPermission"
610
+ },
611
+ {
612
+ "type": "array",
613
+ "items": {
614
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlPermission"
615
+ }
616
+ }
617
+ ],
618
+ "description": "The permissions in the policy.\nAt least one of permission, prohibition, or obligation must be present."
619
+ },
620
+ "prohibition": {
621
+ "anyOf": [
622
+ {
623
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlProhibition"
624
+ },
625
+ {
626
+ "type": "array",
627
+ "items": {
628
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlProhibition"
629
+ }
630
+ }
631
+ ],
632
+ "description": "The prohibitions in the policy.\nAt least one of permission, prohibition, or obligation must be present."
633
+ },
634
+ "obligation": {
635
+ "anyOf": [
636
+ {
637
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlDuty"
638
+ },
639
+ {
640
+ "type": "array",
641
+ "items": {
642
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlDuty"
643
+ }
644
+ }
645
+ ],
646
+ "description": "The obligations in the policy.\nAt least one of permission, prohibition, or obligation must be present."
647
+ },
648
+ "@context": {
649
+ "$ref": "https://schema.twindev.org/w3c-odrl/OdrlContextType",
650
+ "description": "The context for the policy.\nMust include \"https://www.w3.org/ns/odrl.jsonld\""
651
+ }
652
+ },
653
+ "required": [
654
+ "@type",
655
+ "uid"
656
+ ],
657
+ "$comment": "Inlined utility base type OdrlPolicy so utility transformations can operate on concrete properties instead of a $ref."
238
658
  }
239
659
  },
240
660
  "required": [
@@ -1,5 +1,5 @@
1
1
  import type { ObjectOrArray } from "@twin.org/core";
2
- import type { IJsonLdNodeObject, JsonLdObjectWithAliases } from "@twin.org/data-json-ld";
2
+ import type { IJsonLdNodeObject, JsonLdObjectWithAliases, JsonLdObjectWithOptionalContext } from "@twin.org/data-json-ld";
3
3
  import type { IFoafAgent } from "@twin.org/standards-foaf";
4
4
  import type { IOdrlPolicy } from "@twin.org/standards-w3c-odrl";
5
5
  import type { DcatClasses } from "./dcatClasses.js";
@@ -116,5 +116,5 @@ export interface IDcatResourceBase {
116
116
  * An ODRL conformant policy expressing the rights associated with the resource.
117
117
  * @see https://www.w3.org/TR/vocab-dcat-3/#Property:resource_has_policy
118
118
  */
119
- "odrl:hasPolicy"?: IOdrlPolicy;
119
+ "odrl:hasPolicy"?: JsonLdObjectWithOptionalContext<IOdrlPolicy>;
120
120
  }
package/docs/changelog.md CHANGED
@@ -1,5 +1,24 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.0.3-next.65](https://github.com/iotaledger/twin-standards/compare/standards-w3c-dcat-v0.0.3-next.64...standards-w3c-dcat-v0.0.3-next.65) (2026-06-02)
4
+
5
+
6
+ ### Bug Fixes
7
+
8
+ * dcat resource optional context for policy ([#231](https://github.com/iotaledger/twin-standards/issues/231)) ([2dd5a55](https://github.com/iotaledger/twin-standards/commit/2dd5a553ec43f811bb9c4f65f0fff976d7074101))
9
+
10
+
11
+ ### Dependencies
12
+
13
+ * The following workspace dependencies were updated
14
+ * dependencies
15
+ * @twin.org/standards-dublin-core bumped from 0.0.3-next.64 to 0.0.3-next.65
16
+ * @twin.org/standards-foaf bumped from 0.0.3-next.64 to 0.0.3-next.65
17
+ * @twin.org/standards-w3c-odrl bumped from 0.0.3-next.64 to 0.0.3-next.65
18
+ * @twin.org/standards-w3c-vcard bumped from 0.0.3-next.64 to 0.0.3-next.65
19
+ * devDependencies
20
+ * @twin.org/standards-ld-contexts bumped from 0.0.3-next.64 to 0.0.3-next.65
21
+
3
22
  ## [0.0.3-next.64](https://github.com/iotaledger/twin-standards/compare/standards-w3c-dcat-v0.0.3-next.63...standards-w3c-dcat-v0.0.3-next.64) (2026-06-01)
4
23
 
5
24
 
@@ -576,7 +576,7 @@ https://www.w3.org/TR/vocab-dcat-3/#Property:resource_qualified_relation
576
576
 
577
577
  ### odrl:hasPolicy? {#odrlhaspolicy}
578
578
 
579
- > `optional` **odrl:hasPolicy?**: `IOdrlPolicy`
579
+ > `optional` **odrl:hasPolicy?**: `JsonLdObjectWithOptionalContext`\<`IOdrlPolicy`\>
580
580
 
581
581
  An ODRL conformant policy expressing the rights associated with the resource.
582
582
 
@@ -545,7 +545,7 @@ https://www.w3.org/TR/vocab-dcat-3/#Property:resource_qualified_relation
545
545
 
546
546
  ### odrl:hasPolicy? {#odrlhaspolicy}
547
547
 
548
- > `optional` **odrl:hasPolicy?**: `IOdrlPolicy`
548
+ > `optional` **odrl:hasPolicy?**: `JsonLdObjectWithOptionalContext`\<`IOdrlPolicy`\>
549
549
 
550
550
  An ODRL conformant policy expressing the rights associated with the resource.
551
551
 
@@ -385,7 +385,7 @@ https://www.w3.org/TR/vocab-dcat-3/#Property:resource_qualified_relation
385
385
 
386
386
  ### odrl:hasPolicy? {#odrlhaspolicy}
387
387
 
388
- > `optional` **odrl:hasPolicy?**: `IOdrlPolicy`
388
+ > `optional` **odrl:hasPolicy?**: `JsonLdObjectWithOptionalContext`\<`IOdrlPolicy`\>
389
389
 
390
390
  An ODRL conformant policy expressing the rights associated with the resource.
391
391
 
@@ -369,7 +369,7 @@ https://www.w3.org/TR/vocab-dcat-3/#Property:resource_qualified_relation
369
369
 
370
370
  ### odrl:hasPolicy? {#odrlhaspolicy}
371
371
 
372
- > `optional` **odrl:hasPolicy?**: `IOdrlPolicy`
372
+ > `optional` **odrl:hasPolicy?**: `JsonLdObjectWithOptionalContext`\<`IOdrlPolicy`\>
373
373
 
374
374
  An ODRL conformant policy expressing the rights associated with the resource.
375
375
 
@@ -469,7 +469,7 @@ https://www.w3.org/TR/vocab-dcat-3/#Property:resource_qualified_relation
469
469
 
470
470
  ### odrl:hasPolicy? {#odrlhaspolicy}
471
471
 
472
- > `optional` **odrl:hasPolicy?**: `IOdrlPolicy`
472
+ > `optional` **odrl:hasPolicy?**: `JsonLdObjectWithOptionalContext`\<`IOdrlPolicy`\>
473
473
 
474
474
  An ODRL conformant policy expressing the rights associated with the resource.
475
475
 
@@ -430,7 +430,7 @@ https://www.w3.org/TR/vocab-dcat-3/#Property:resource_qualified_relation
430
430
 
431
431
  ### odrl:hasPolicy? {#odrlhaspolicy}
432
432
 
433
- > `optional` **odrl:hasPolicy?**: `IOdrlPolicy`
433
+ > `optional` **odrl:hasPolicy?**: `JsonLdObjectWithOptionalContext`\<`IOdrlPolicy`\>
434
434
 
435
435
  An ODRL conformant policy expressing the rights associated with the resource.
436
436
 
@@ -516,7 +516,7 @@ https://www.w3.org/TR/vocab-dcat-3/#Property:resource_qualified_relation
516
516
 
517
517
  ### odrl:hasPolicy? {#odrlhaspolicy}
518
518
 
519
- > `optional` **odrl:hasPolicy?**: `IOdrlPolicy`
519
+ > `optional` **odrl:hasPolicy?**: `JsonLdObjectWithOptionalContext`\<`IOdrlPolicy`\>
520
520
 
521
521
  An ODRL conformant policy expressing the rights associated with the resource.
522
522
 
@@ -336,7 +336,7 @@ https://www.w3.org/TR/vocab-dcat-3/#Property:resource_qualified_relation
336
336
 
337
337
  ### odrl:hasPolicy? {#odrlhaspolicy}
338
338
 
339
- > `optional` **odrl:hasPolicy?**: `IOdrlPolicy`
339
+ > `optional` **odrl:hasPolicy?**: `JsonLdObjectWithOptionalContext`\<`IOdrlPolicy`\>
340
340
 
341
341
  An ODRL conformant policy expressing the rights associated with the resource.
342
342
 
@@ -251,7 +251,7 @@ https://www.w3.org/TR/vocab-dcat-3/#Property:resource_qualified_relation
251
251
 
252
252
  ### odrl:hasPolicy? {#odrlhaspolicy}
253
253
 
254
- > `optional` **odrl:hasPolicy?**: `IOdrlPolicy`
254
+ > `optional` **odrl:hasPolicy?**: `JsonLdObjectWithOptionalContext`\<`IOdrlPolicy`\>
255
255
 
256
256
  An ODRL conformant policy expressing the rights associated with the resource.
257
257
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@twin.org/standards-w3c-dcat",
3
- "version": "0.0.3-next.64",
3
+ "version": "0.0.3-next.65",
4
4
  "description": "Data models for the W3C Data Catalog Vocabulary.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -15,10 +15,10 @@
15
15
  },
16
16
  "dependencies": {
17
17
  "@twin.org/data-json-ld": "next",
18
- "@twin.org/standards-dublin-core": "0.0.3-next.64",
19
- "@twin.org/standards-foaf": "0.0.3-next.64",
20
- "@twin.org/standards-w3c-odrl": "0.0.3-next.64",
21
- "@twin.org/standards-w3c-vcard": "0.0.3-next.64",
18
+ "@twin.org/standards-dublin-core": "0.0.3-next.65",
19
+ "@twin.org/standards-foaf": "0.0.3-next.65",
20
+ "@twin.org/standards-w3c-odrl": "0.0.3-next.65",
21
+ "@twin.org/standards-w3c-vcard": "0.0.3-next.65",
22
22
  "@twin.org/web": "next"
23
23
  },
24
24
  "main": "./dist/es/index.js",