@twin.org/federated-catalogue-service 0.0.3-next.2 → 0.0.3-next.21

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 (37) hide show
  1. package/README.md +1 -1
  2. package/dist/es/entities/dataset.js +12 -4
  3. package/dist/es/entities/dataset.js.map +1 -1
  4. package/dist/es/federatedCatalogueRoutes.js +241 -53
  5. package/dist/es/federatedCatalogueRoutes.js.map +1 -1
  6. package/dist/es/index.js +2 -0
  7. package/dist/es/index.js.map +1 -1
  8. package/dist/es/models/IFederatedCatalogueServiceConfig.js +4 -0
  9. package/dist/es/models/IFederatedCatalogueServiceConfig.js.map +1 -0
  10. package/dist/es/models/IFederatedCatalogueServiceConstructorOptions.js.map +1 -1
  11. package/dist/es/services/federatedCatalogueService.js +344 -131
  12. package/dist/es/services/federatedCatalogueService.js.map +1 -1
  13. package/dist/es/utils/catalogErrorUtils.js +49 -0
  14. package/dist/es/utils/catalogErrorUtils.js.map +1 -0
  15. package/dist/es/utils/datasetConverters.js +23 -10
  16. package/dist/es/utils/datasetConverters.js.map +1 -1
  17. package/dist/types/entities/dataset.d.ts +37 -33
  18. package/dist/types/index.d.ts +2 -0
  19. package/dist/types/models/IFederatedCatalogueServiceConfig.d.ts +5 -0
  20. package/dist/types/models/IFederatedCatalogueServiceConstructorOptions.d.ts +14 -4
  21. package/dist/types/services/federatedCatalogueService.d.ts +37 -21
  22. package/dist/types/utils/catalogErrorUtils.d.ts +15 -0
  23. package/dist/types/utils/datasetConverters.d.ts +10 -10
  24. package/docs/changelog.md +271 -3
  25. package/docs/examples.md +126 -1
  26. package/docs/open-api/spec.json +256 -2513
  27. package/docs/reference/classes/Dataset.md +70 -62
  28. package/docs/reference/classes/FederatedCatalogueService.md +77 -40
  29. package/docs/reference/functions/datasetEntityToModel.md +7 -7
  30. package/docs/reference/functions/datasetModelToEntity.md +11 -6
  31. package/docs/reference/functions/transformErrorToStatusCode.md +19 -0
  32. package/docs/reference/functions/transformToCatalogError.md +20 -0
  33. package/docs/reference/index.md +3 -0
  34. package/docs/reference/interfaces/IFederatedCatalogueServiceConfig.md +3 -0
  35. package/docs/reference/interfaces/IFederatedCatalogueServiceConstructorOptions.md +33 -5
  36. package/locales/en.json +12 -6
  37. package/package.json +10 -5
package/docs/changelog.md CHANGED
@@ -1,11 +1,279 @@
1
- # @twin.org/federated-catalogue-service - Changelog
1
+ # Changelog
2
2
 
3
- ## [0.0.3-next.2](https://github.com/twinfoundation/federated-catalogue/compare/federated-catalogue-service-v0.0.3-next.1...federated-catalogue-service-v0.0.3-next.2) (2025-11-28)
3
+ ## [0.0.3-next.21](https://github.com/iotaledger/twin-federated-catalogue/compare/federated-catalogue-service-v0.0.3-next.20...federated-catalogue-service-v0.0.3-next.21) (2026-06-12)
4
+
5
+
6
+ ### Bug Fixes
7
+
8
+ * bake organization id into object-form accessService endpoint URLs ([#88](https://github.com/iotaledger/twin-federated-catalogue/issues/88)) ([155d86d](https://github.com/iotaledger/twin-federated-catalogue/commit/155d86de7c416abf3c17a38fc3ac5969fd36449c))
9
+
10
+
11
+ ### Dependencies
12
+
13
+ * The following workspace dependencies were updated
14
+ * dependencies
15
+ * @twin.org/federated-catalogue-models bumped from 0.0.3-next.20 to 0.0.3-next.21
16
+
17
+ ## [0.0.3-next.20](https://github.com/iotaledger/twin-federated-catalogue/compare/federated-catalogue-service-v0.0.3-next.19...federated-catalogue-service-v0.0.3-next.20) (2026-06-11)
18
+
19
+
20
+ ### Features
21
+
22
+ * organization identifiers ([#84](https://github.com/iotaledger/twin-federated-catalogue/issues/84)) ([1e02971](https://github.com/iotaledger/twin-federated-catalogue/commit/1e02971a12e40bd20a0034ee1de0988a689d3dc8))
23
+
24
+
25
+ ### Dependencies
26
+
27
+ * The following workspace dependencies were updated
28
+ * dependencies
29
+ * @twin.org/federated-catalogue-models bumped from 0.0.3-next.19 to 0.0.3-next.20
30
+
31
+ ## [0.0.3-next.19](https://github.com/iotaledger/twin-federated-catalogue/compare/federated-catalogue-service-v0.0.3-next.18...federated-catalogue-service-v0.0.3-next.19) (2026-06-08)
32
+
33
+
34
+ ### Features
35
+
36
+ * replace sync storage with shared DB and trust-token auth ([#79](https://github.com/iotaledger/twin-federated-catalogue/issues/79)) ([3a07f02](https://github.com/iotaledger/twin-federated-catalogue/commit/3a07f02aba8d6f3540a23e5c2cebc7b0e579ef30))
37
+
38
+
39
+ ### Dependencies
40
+
41
+ * The following workspace dependencies were updated
42
+ * dependencies
43
+ * @twin.org/federated-catalogue-models bumped from 0.0.3-next.18 to 0.0.3-next.19
44
+
45
+ ## [0.0.3-next.18](https://github.com/iotaledger/twin-federated-catalogue/compare/federated-catalogue-service-v0.0.3-next.17...federated-catalogue-service-v0.0.3-next.18) (2026-06-01)
46
+
47
+
48
+ ### Bug Fixes
49
+
50
+ * allow CatalogRequestMessage without filter ([#72](https://github.com/iotaledger/twin-federated-catalogue/issues/72)) ([477343d](https://github.com/iotaledger/twin-federated-catalogue/commit/477343dd590150626c417a16705d5fa8bb96838f))
51
+ * stop double-converting filter results in query, preserving dataset [@id](https://github.com/id) ([#75](https://github.com/iotaledger/twin-federated-catalogue/issues/75)) ([f071eda](https://github.com/iotaledger/twin-federated-catalogue/commit/f071eda0f5fc35270570cac7bd106b2bdf02e6e2))
52
+
53
+
54
+ ### Dependencies
55
+
56
+ * The following workspace dependencies were updated
57
+ * dependencies
58
+ * @twin.org/federated-catalogue-models bumped from 0.0.3-next.17 to 0.0.3-next.18
59
+
60
+ ## [0.0.3-next.17](https://github.com/iotaledger/twin-federated-catalogue/compare/federated-catalogue-service-v0.0.3-next.16...federated-catalogue-service-v0.0.3-next.17) (2026-05-20)
61
+
62
+
63
+ ### Features
64
+
65
+ * update dependencies ([9534767](https://github.com/iotaledger/twin-federated-catalogue/commit/9534767b6aa85468ab5094512886246814edce9a))
66
+
67
+
68
+ ### Dependencies
69
+
70
+ * The following workspace dependencies were updated
71
+ * dependencies
72
+ * @twin.org/federated-catalogue-models bumped from 0.0.3-next.16 to 0.0.3-next.17
73
+
74
+ ## [0.0.3-next.16](https://github.com/iotaledger/twin-federated-catalogue/compare/federated-catalogue-service-v0.0.3-next.15...federated-catalogue-service-v0.0.3-next.16) (2026-05-12)
75
+
76
+
77
+ ### Features
78
+
79
+ * typescript 6 update ([ead042d](https://github.com/iotaledger/twin-federated-catalogue/commit/ead042d09f4e6b03a2db46ace2ea95d197f0f4b0))
80
+
81
+
82
+ ### Dependencies
83
+
84
+ * The following workspace dependencies were updated
85
+ * dependencies
86
+ * @twin.org/federated-catalogue-models bumped from 0.0.3-next.15 to 0.0.3-next.16
87
+
88
+ ## [0.0.3-next.15](https://github.com/iotaledger/twin-federated-catalogue/compare/federated-catalogue-service-v0.0.3-next.14...federated-catalogue-service-v0.0.3-next.15) (2026-05-08)
89
+
90
+
91
+ ### Features
92
+
93
+ * publish encrypted `twin:tenantToken` per dataset ([#64](https://github.com/iotaledger/twin-federated-catalogue/issues/64)) ([77e4517](https://github.com/iotaledger/twin-federated-catalogue/commit/77e451782ad8b227b91b4cc8a97bdd6eb90881b6))
94
+
95
+
96
+ ### Dependencies
97
+
98
+ * The following workspace dependencies were updated
99
+ * dependencies
100
+ * @twin.org/federated-catalogue-models bumped from 0.0.3-next.14 to 0.0.3-next.15
101
+
102
+ ## [0.0.3-next.14](https://github.com/iotaledger/twin-federated-catalogue/compare/federated-catalogue-service-v0.0.3-next.13...federated-catalogue-service-v0.0.3-next.14) (2026-03-20)
103
+
104
+
105
+ ### Features
106
+
107
+ * update to use new schemas ([41dae8d](https://github.com/iotaledger/twin-federated-catalogue/commit/41dae8d401dcea830b435aa35590e9c90a11eb1f))
108
+
109
+
110
+ ### Dependencies
111
+
112
+ * The following workspace dependencies were updated
113
+ * dependencies
114
+ * @twin.org/federated-catalogue-models bumped from 0.0.3-next.13 to 0.0.3-next.14
115
+
116
+ ## [0.0.3-next.13](https://github.com/iotaledger/twin-federated-catalogue/compare/federated-catalogue-service-v0.0.3-next.12...federated-catalogue-service-v0.0.3-next.13) (2026-03-12)
117
+
118
+
119
+ ### Features
120
+
121
+ * update DataspaceProtocolHelper.validate usage ([49eda69](https://github.com/iotaledger/twin-federated-catalogue/commit/49eda69073d0ef4cd88c0e01f5eee8a78e4195e4))
122
+
123
+
124
+ ### Dependencies
125
+
126
+ * The following workspace dependencies were updated
127
+ * dependencies
128
+ * @twin.org/federated-catalogue-models bumped from 0.0.3-next.12 to 0.0.3-next.13
129
+
130
+ ## [0.0.3-next.12](https://github.com/iotaledger/twin-federated-catalogue/compare/federated-catalogue-service-v0.0.3-next.11...federated-catalogue-service-v0.0.3-next.12) (2026-03-06)
131
+
132
+
133
+ ### Features
134
+
135
+ * add [@id](https://github.com/id) to policy example in federated catalogue route definition ([#58](https://github.com/iotaledger/twin-federated-catalogue/issues/58)) ([c854f16](https://github.com/iotaledger/twin-federated-catalogue/commit/c854f16eac91d23468134bb46e8a2c7a74e854af))
136
+
137
+
138
+ ### Dependencies
139
+
140
+ * The following workspace dependencies were updated
141
+ * dependencies
142
+ * @twin.org/federated-catalogue-models bumped from 0.0.3-next.11 to 0.0.3-next.12
143
+
144
+ ## [0.0.3-next.11](https://github.com/iotaledger/twin-federated-catalogue/compare/federated-catalogue-service-v0.0.3-next.10...federated-catalogue-service-v0.0.3-next.11) (2026-03-05)
145
+
146
+
147
+ ### Bug Fixes
148
+
149
+ * consistent naming of entity storage component in config ([1c1cb27](https://github.com/iotaledger/twin-federated-catalogue/commit/1c1cb274c5bca8cbe5f1da71b3dd4ddf52487001))
150
+
151
+
152
+ ### Dependencies
153
+
154
+ * The following workspace dependencies were updated
155
+ * dependencies
156
+ * @twin.org/federated-catalogue-models bumped from 0.0.3-next.10 to 0.0.3-next.11
157
+
158
+ ## [0.0.3-next.10](https://github.com/iotaledger/twin-federated-catalogue/compare/federated-catalogue-service-v0.0.3-next.9...federated-catalogue-service-v0.0.3-next.10) (2026-02-25)
159
+
160
+
161
+ ### Features
162
+
163
+ * update json-ld patterns ([172aff0](https://github.com/iotaledger/twin-federated-catalogue/commit/172aff07d0f0b780f72d1be3a4896bbf12f6173a))
164
+
165
+
166
+ ### Dependencies
167
+
168
+ * The following workspace dependencies were updated
169
+ * dependencies
170
+ * @twin.org/federated-catalogue-models bumped from 0.0.3-next.9 to 0.0.3-next.10
171
+
172
+ ## [0.0.3-next.9](https://github.com/iotaledger/twin-federated-catalogue/compare/federated-catalogue-service-v0.0.3-next.8...federated-catalogue-service-v0.0.3-next.9) (2026-02-12)
173
+
174
+
175
+ ### Features
176
+
177
+ * integrate synchronised storage with federated catalogue ([#53](https://github.com/iotaledger/twin-federated-catalogue/issues/53)) ([d1cdf06](https://github.com/iotaledger/twin-federated-catalogue/commit/d1cdf066adff8fb2266ccaaebcf57da391e03d3f))
178
+
179
+
180
+ ### Dependencies
181
+
182
+ * The following workspace dependencies were updated
183
+ * dependencies
184
+ * @twin.org/federated-catalogue-models bumped from 0.0.3-next.8 to 0.0.3-next.9
185
+
186
+ ## [0.0.3-next.8](https://github.com/iotaledger/twin-federated-catalogue/compare/federated-catalogue-service-v0.0.3-next.7...federated-catalogue-service-v0.0.3-next.8) (2026-01-26)
187
+
188
+
189
+ ### Features
190
+
191
+ * use new hosting url for cursor links ([e42c934](https://github.com/iotaledger/twin-federated-catalogue/commit/e42c934b9c8748ec5bdd4803c1cdc05c82ccace8))
192
+
193
+
194
+ ### Dependencies
195
+
196
+ * The following workspace dependencies were updated
197
+ * dependencies
198
+ * @twin.org/federated-catalogue-models bumped from 0.0.3-next.7 to 0.0.3-next.8
199
+
200
+ ## [0.0.3-next.7](https://github.com/iotaledger/twin-federated-catalogue/compare/federated-catalogue-service-v0.0.3-next.6...federated-catalogue-service-v0.0.3-next.7) (2026-01-22)
201
+
202
+
203
+ ### Bug Fixes
204
+
205
+ * context usage ([cd51790](https://github.com/iotaledger/twin-federated-catalogue/commit/cd51790ef97e14d21e89ef668b98477c163856bb))
206
+
207
+
208
+ ### Dependencies
209
+
210
+ * The following workspace dependencies were updated
211
+ * dependencies
212
+ * @twin.org/federated-catalogue-models bumped from 0.0.3-next.6 to 0.0.3-next.7
213
+
214
+ ## [0.0.3-next.6](https://github.com/iotaledger/twin-federated-catalogue/compare/federated-catalogue-service-v0.0.3-next.5...federated-catalogue-service-v0.0.3-next.6) (2026-01-20)
215
+
216
+
217
+ ### Bug Fixes
218
+
219
+ * transform GuardError to CatalogError for DS Protocol compliance ([#49](https://github.com/iotaledger/twin-federated-catalogue/issues/49)) ([d0f1090](https://github.com/iotaledger/twin-federated-catalogue/commit/d0f10900c251b9abc18e58c90562c393c3265727))
220
+
221
+
222
+ ### Dependencies
223
+
224
+ * The following workspace dependencies were updated
225
+ * dependencies
226
+ * @twin.org/federated-catalogue-models bumped from 0.0.3-next.5 to 0.0.3-next.6
227
+
228
+ ## [0.0.3-next.5](https://github.com/iotaledger/twin-federated-catalogue/compare/federated-catalogue-service-v0.0.3-next.4...federated-catalogue-service-v0.0.3-next.5) (2026-01-15)
229
+
230
+
231
+ ### Bug Fixes
232
+
233
+ * linting ([df034b1](https://github.com/iotaledger/twin-federated-catalogue/commit/df034b11e78fed68f64dfe9406809d2365acdfb8))
234
+ * pagination and ld context ([#45](https://github.com/iotaledger/twin-federated-catalogue/issues/45)) ([e36f096](https://github.com/iotaledger/twin-federated-catalogue/commit/e36f096aa4fdc61eb5b929a0fc4403247dbd41ce))
235
+
236
+
237
+ ### Dependencies
238
+
239
+ * The following workspace dependencies were updated
240
+ * dependencies
241
+ * @twin.org/federated-catalogue-models bumped from 0.0.3-next.4 to 0.0.3-next.5
242
+
243
+ ## [0.0.3-next.4](https://github.com/iotaledger/twin-federated-catalogue/compare/federated-catalogue-service-v0.0.3-next.3...federated-catalogue-service-v0.0.3-next.4) (2026-01-06)
244
+
245
+
246
+ ### Features
247
+
248
+ * updates standards dependencies ([62f5d9c](https://github.com/iotaledger/twin-federated-catalogue/commit/62f5d9c6180bc27497ac43624ffd714e7ce65ce6))
249
+
250
+
251
+ ### Dependencies
252
+
253
+ * The following workspace dependencies were updated
254
+ * dependencies
255
+ * @twin.org/federated-catalogue-models bumped from 0.0.3-next.3 to 0.0.3-next.4
256
+
257
+ ## [0.0.3-next.3](https://github.com/iotaledger/twin-federated-catalogue/compare/federated-catalogue-service-v0.0.3-next.2...federated-catalogue-service-v0.0.3-next.3) (2025-11-28)
258
+
259
+
260
+ ### Bug Fixes
261
+
262
+ * service logging constructor type ([35e63cc](https://github.com/iotaledger/twin-federated-catalogue/commit/35e63cc6a46769b32c817f43157233d9f05346da))
263
+
264
+
265
+ ### Dependencies
266
+
267
+ * The following workspace dependencies were updated
268
+ * dependencies
269
+ * @twin.org/federated-catalogue-models bumped from 0.0.3-next.2 to 0.0.3-next.3
270
+
271
+ ## [0.0.3-next.2](https://github.com/iotaledger/twin-federated-catalogue/compare/federated-catalogue-service-v0.0.3-next.1...federated-catalogue-service-v0.0.3-next.2) (2025-11-28)
4
272
 
5
273
 
6
274
  ### Features
7
275
 
8
- * implement Dataspace Protocol federated catalogue ([#36](https://github.com/twinfoundation/federated-catalogue/issues/36)) ([4765aba](https://github.com/twinfoundation/federated-catalogue/commit/4765aba4485ef8ad61e7ec1affbf0e454d974d36))
276
+ * implement Dataspace Protocol federated catalogue ([#36](https://github.com/iotaledger/twin-federated-catalogue/issues/36)) ([4765aba](https://github.com/iotaledger/twin-federated-catalogue/commit/4765aba4485ef8ad61e7ec1affbf0e454d974d36))
9
277
 
10
278
 
11
279
  ### Dependencies
package/docs/examples.md CHANGED
@@ -1 +1,126 @@
1
- # @twin.org/federated-catalogue-service - Examples
1
+ # Federated Catalogue Service Examples
2
+
3
+ These snippets show a realistic service flow for bootstrapping, storing and querying datasets, then removing records when lifecycle events require cleanup.
4
+
5
+ ## FederatedCatalogueService
6
+
7
+ ```typescript
8
+ import { MemoryEntityStorageConnector } from '@twin.org/entity-storage-connector-memory';
9
+ import { EntityStorageConnectorFactory } from '@twin.org/entity-storage-models';
10
+ import { FederatedCatalogueService } from '@twin.org/federated-catalogue-service';
11
+
12
+ EntityStorageConnectorFactory.register('dataset', () => new MemoryEntityStorageConnector());
13
+
14
+ const service = new FederatedCatalogueService({
15
+ datasetEntityStorageType: 'dataset'
16
+ });
17
+
18
+ console.log(service.className() === FederatedCatalogueService.CLASS_NAME); // true
19
+ ```
20
+
21
+ ```typescript
22
+ import { ContextIdKeys, ContextIdStore } from '@twin.org/context';
23
+ import { MemoryEntityStorageConnector } from '@twin.org/entity-storage-connector-memory';
24
+ import { EntityStorageConnectorFactory } from '@twin.org/entity-storage-models';
25
+ import { FederatedCatalogueService } from '@twin.org/federated-catalogue-service';
26
+
27
+ EntityStorageConnectorFactory.register('dataset', () => new MemoryEntityStorageConnector());
28
+
29
+ const service = new FederatedCatalogueService({
30
+ datasetEntityStorageType: 'dataset'
31
+ });
32
+
33
+ await ContextIdStore.set('request-1', {
34
+ [ContextIdKeys.Node]: 'did:web:node.example',
35
+ [ContextIdKeys.Organization]: 'did:web:publisher.example'
36
+ });
37
+
38
+ await service.start();
39
+
40
+ await service.set({
41
+ '@context': ['https://w3id.org/dspace/2024/1/context.json', 'https://www.w3.org/ns/dcat3.jsonld'],
42
+ '@type': 'dcat:Dataset',
43
+ '@id': 'urn:dataset:air-quality-2026',
44
+ 'dcterms:identifier': 'urn:dataset:air-quality-2026',
45
+ 'dcterms:publisher': {
46
+ '@id': 'did:web:publisher.example'
47
+ },
48
+ 'dcterms:title': {
49
+ '@value': 'Air quality readings'
50
+ }
51
+ });
52
+
53
+ const dataset = await service.get('urn:dataset:air-quality-2026');
54
+
55
+ console.log(dataset['@id']); // urn:dataset:air-quality-2026
56
+ ```
57
+
58
+ ```typescript
59
+ import { ContextIdKeys, ContextIdStore } from '@twin.org/context';
60
+ import { MemoryEntityStorageConnector } from '@twin.org/entity-storage-connector-memory';
61
+ import { EntityStorageConnectorFactory } from '@twin.org/entity-storage-models';
62
+ import { FederatedCatalogueService } from '@twin.org/federated-catalogue-service';
63
+
64
+ EntityStorageConnectorFactory.register('dataset', () => new MemoryEntityStorageConnector());
65
+
66
+ const service = new FederatedCatalogueService({
67
+ datasetEntityStorageType: 'dataset'
68
+ });
69
+
70
+ await ContextIdStore.set('request-2', {
71
+ [ContextIdKeys.Node]: 'did:web:node.example',
72
+ [ContextIdKeys.Organization]: 'did:web:publisher.example'
73
+ });
74
+
75
+ await service.start();
76
+
77
+ const queryResult = await service.query(
78
+ [
79
+ {
80
+ '@type': 'FilterByMetadata',
81
+ 'dcterms:publisher': {
82
+ '@id': 'did:web:publisher.example'
83
+ }
84
+ }
85
+ ],
86
+ 'cursor-0',
87
+ 20
88
+ );
89
+
90
+ console.log(queryResult.result['@type']); // Catalog
91
+ console.log(typeof queryResult.cursor === 'string' || queryResult.cursor === undefined); // true
92
+ ```
93
+
94
+ ```typescript
95
+ import { MemoryEntityStorageConnector } from '@twin.org/entity-storage-connector-memory';
96
+ import { EntityStorageConnectorFactory } from '@twin.org/entity-storage-models';
97
+ import { FederatedCatalogueService } from '@twin.org/federated-catalogue-service';
98
+
99
+ EntityStorageConnectorFactory.register('dataset', () => new MemoryEntityStorageConnector());
100
+
101
+ const service = new FederatedCatalogueService({
102
+ datasetEntityStorageType: 'dataset'
103
+ });
104
+
105
+ await service.remove('urn:dataset:air-quality-2026');
106
+
107
+ console.log('removed'.toUpperCase()); // REMOVED
108
+ ```
109
+
110
+ ## Dataset
111
+
112
+ ```typescript
113
+ import { Dataset } from '@twin.org/federated-catalogue-service';
114
+
115
+ const datasetEntity = new Dataset();
116
+ datasetEntity.id = 'urn:dataset:air-quality-2026';
117
+ datasetEntity.nodeIdentity = 'did:web:node.example';
118
+ datasetEntity.dateModified = '2026-03-10T12:00:00.000Z';
119
+ datasetEntity['@context'] = ['https://www.w3.org/ns/dcat3.jsonld'];
120
+ datasetEntity['@type'] = 'dcat:Dataset';
121
+ datasetEntity['dcterms:title'] = { '@value': 'Air quality readings' };
122
+ datasetEntity['dcterms:publisher'] = { '@id': 'did:web:publisher.example' };
123
+
124
+ console.log(datasetEntity.id); // urn:dataset:air-quality-2026
125
+ console.log(datasetEntity['@type']); // dcat:Dataset
126
+ ```