geonetwork-ui 2.4.0-dev.e97caaf2 → 2.4.0-dev.f5019723

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 (671) hide show
  1. package/esm2022/libs/api/metadata-converter/src/index.mjs +4 -1
  2. package/esm2022/libs/api/metadata-converter/src/lib/common/license.mjs +64 -0
  3. package/esm2022/libs/api/metadata-converter/src/lib/common/url.mjs +14 -0
  4. package/esm2022/libs/api/metadata-converter/src/lib/dcat-ap/dcat-ap.converter.mjs +254 -0
  5. package/esm2022/libs/api/metadata-converter/src/lib/dcat-ap/index.mjs +2 -0
  6. package/esm2022/libs/api/metadata-converter/src/lib/dcat-ap/namespaces.mjs +17 -0
  7. package/esm2022/libs/api/metadata-converter/src/lib/dcat-ap/read-parts.mjs +196 -0
  8. package/esm2022/libs/api/metadata-converter/src/lib/dcat-ap/utils/graph-utils.mjs +46 -0
  9. package/esm2022/libs/api/metadata-converter/src/lib/dcat-ap/utils/serialize-to-xml.mjs +74 -0
  10. package/esm2022/libs/api/metadata-converter/src/lib/dcat-ap/utils/uri.mjs +2 -0
  11. package/esm2022/libs/api/metadata-converter/src/lib/dcat-ap/write-parts.mjs +27 -0
  12. package/esm2022/libs/api/metadata-converter/src/lib/find-converter.mjs +11 -1
  13. package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.mjs +10 -3
  14. package/esm2022/libs/api/metadata-converter/src/lib/iso19115-3/iso19115-3.converter.mjs +6 -6
  15. package/esm2022/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.mjs +7 -4
  16. package/esm2022/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.mjs +17 -29
  17. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.mjs +8 -15
  18. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/read-parts.mjs +6 -6
  19. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/write-parts.mjs +54 -54
  20. package/esm2022/libs/api/metadata-converter/src/lib/xml-utils.mjs +35 -3
  21. package/esm2022/libs/api/repository/src/lib/gn4/gn4-repository.mjs +78 -39
  22. package/esm2022/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.mjs +41 -7
  23. package/esm2022/libs/common/domain/src/lib/model/record/contact.model.mjs +1 -1
  24. package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +1 -1
  25. package/esm2022/libs/common/domain/src/lib/platform.service.interface.mjs +1 -1
  26. package/esm2022/libs/common/domain/src/lib/repository/records-repository.interface.mjs +1 -1
  27. package/esm2022/libs/data-access/gn4/src/fixtures/site.fixtures.mjs +5 -5
  28. package/esm2022/libs/data-access/gn4/src/fixtures/ui.fixtures.mjs +3 -3
  29. package/esm2022/libs/feature/catalog/src/lib/feature-catalog.module.mjs +7 -4
  30. package/esm2022/libs/feature/catalog/src/lib/organisations/organisations.component.mjs +6 -6
  31. package/esm2022/libs/feature/dataviz/src/lib/chart-view/chart-view.component.mjs +1 -1
  32. package/esm2022/libs/feature/dataviz/src/lib/feature-dataviz.module.mjs +10 -7
  33. package/esm2022/libs/feature/dataviz/src/lib/geo-table-view/geo-table-view.component.mjs +40 -50
  34. package/esm2022/libs/feature/dataviz/src/lib/service/data.service.mjs +1 -1
  35. package/esm2022/libs/feature/dataviz/src/lib/table-view/table-view.component.mjs +1 -1
  36. package/esm2022/libs/feature/editor/src/index.mjs +2 -1
  37. package/esm2022/libs/feature/editor/src/lib/+state/editor.effects.mjs +5 -5
  38. package/esm2022/libs/feature/editor/src/lib/components/contact-card/contact-card.component.mjs +4 -16
  39. package/esm2022/libs/feature/editor/src/lib/components/generic-keywords/generic-keywords.component.mjs +4 -2
  40. package/esm2022/libs/feature/editor/src/lib/components/import-record/import-record.component.mjs +95 -0
  41. package/esm2022/libs/feature/editor/src/lib/components/online-resource-card/online-resource-card.component.mjs +71 -0
  42. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts/form-field-contacts.component.mjs +109 -0
  43. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.mjs +15 -32
  44. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-date-updated/form-field-date-updated.component.mjs +19 -0
  45. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-keywords/form-field-keywords.component.mjs +23 -10
  46. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-license/form-field-license.component.mjs +3 -3
  47. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.mjs +38 -60
  48. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-link-resources/form-field-online-link-resources.component.mjs +148 -0
  49. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.mjs +86 -11
  50. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-rich/form-field-rich.component.mjs +4 -8
  51. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.mjs +36 -7
  52. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents.component.mjs +35 -59
  53. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.mjs +4 -4
  54. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.mjs +14 -5
  55. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/index.mjs +2 -2
  56. package/esm2022/libs/feature/editor/src/lib/components/record-form/record-form.component.mjs +3 -3
  57. package/esm2022/libs/feature/editor/src/lib/components/wizard/wizard.component.mjs +3 -3
  58. package/esm2022/libs/feature/editor/src/lib/fields.config.mjs +41 -7
  59. package/esm2022/libs/feature/editor/src/lib/models/editor-config.model.mjs +1 -1
  60. package/esm2022/libs/feature/editor/src/lib/services/editor.service.mjs +5 -5
  61. package/esm2022/libs/feature/map/src/index.mjs +2 -9
  62. package/esm2022/libs/feature/map/src/lib/+state/map.actions.mjs +4 -7
  63. package/esm2022/libs/feature/map/src/lib/+state/map.facade.mjs +9 -15
  64. package/esm2022/libs/feature/map/src/lib/+state/map.reducer.mjs +13 -44
  65. package/esm2022/libs/feature/map/src/lib/+state/map.selectors.mjs +3 -2
  66. package/esm2022/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-record-preview/add-layer-record-preview.component.mjs +16 -16
  67. package/esm2022/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.mjs +16 -10
  68. package/esm2022/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.mjs +10 -8
  69. package/esm2022/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.mjs +11 -7
  70. package/esm2022/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.mjs +10 -6
  71. package/esm2022/libs/feature/map/src/lib/constant/index.mjs +1 -2
  72. package/esm2022/libs/feature/map/src/lib/feature-map.module.mjs +4 -44
  73. package/esm2022/libs/feature/map/src/lib/geocoding/geocoding.component.mjs +43 -29
  74. package/esm2022/libs/feature/map/src/lib/layers-panel/layers-panel.component.mjs +17 -8
  75. package/esm2022/libs/feature/map/src/lib/map-state-container/map-state-container.component.mjs +27 -0
  76. package/esm2022/libs/feature/map/src/lib/style/map-style.fixtures.mjs +3 -3
  77. package/esm2022/libs/feature/map/src/lib/utils/map-utils.service.mjs +4 -168
  78. package/esm2022/libs/feature/record/src/lib/data-view/data-view.component.mjs +1 -1
  79. package/esm2022/libs/feature/record/src/lib/external-viewer-button/external-viewer-button.component.mjs +21 -17
  80. package/esm2022/libs/feature/record/src/lib/feature-record.module.mjs +14 -8
  81. package/esm2022/libs/feature/record/src/lib/map-view/map-view.component.mjs +40 -52
  82. package/esm2022/libs/feature/record/src/lib/state/mdview.facade.mjs +4 -2
  83. package/esm2022/libs/feature/router/src/lib/default/state/router.facade.mjs +1 -1
  84. package/esm2022/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.mjs +3 -3
  85. package/esm2022/libs/feature/search/src/lib/results-table/results-table-container.component.mjs +12 -6
  86. package/esm2022/libs/ui/catalog/src/lib/organisations-filter/organisations-filter.component.mjs +7 -7
  87. package/esm2022/libs/ui/catalog/src/lib/ui-catalog.module.mjs +1 -6
  88. package/esm2022/libs/ui/dataviz/src/lib/table/table.fixtures.mjs +3 -3
  89. package/esm2022/libs/ui/elements/src/index.mjs +2 -2
  90. package/esm2022/libs/ui/elements/src/lib/download-item/download-item.component.mjs +2 -2
  91. package/esm2022/libs/ui/elements/src/lib/downloads-list/downloads-list.component.mjs +1 -1
  92. package/esm2022/libs/ui/elements/src/lib/link-card/link-card.component.mjs +2 -2
  93. package/esm2022/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.mjs +6 -6
  94. package/esm2022/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.mjs +2 -2
  95. package/esm2022/libs/ui/inputs/src/index.mjs +5 -1
  96. package/esm2022/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.mjs +7 -4
  97. package/esm2022/libs/ui/inputs/src/lib/badge/badge.component.mjs +5 -3
  98. package/esm2022/libs/ui/inputs/src/lib/button/button.component.mjs +8 -1
  99. package/esm2022/libs/ui/inputs/src/lib/date-picker/date-picker.component.mjs +11 -4
  100. package/esm2022/libs/ui/inputs/src/lib/date-range-picker/date-range-picker.component.mjs +9 -3
  101. package/esm2022/libs/ui/inputs/src/lib/file-input/file-input.component.mjs +87 -0
  102. package/esm2022/libs/ui/inputs/src/lib/image-input/image-input.component.mjs +5 -4
  103. package/esm2022/libs/ui/inputs/src/lib/search-input/search-input.component.mjs +6 -4
  104. package/esm2022/libs/ui/inputs/src/lib/switch-toggle/switch-toggle.component.mjs +4 -4
  105. package/esm2022/libs/ui/inputs/src/lib/text-area/text-area.component.mjs +4 -3
  106. package/esm2022/libs/ui/inputs/src/lib/ui-inputs.module.mjs +2 -7
  107. package/esm2022/libs/ui/inputs/src/lib/url-input/url-input.component.mjs +3 -3
  108. package/esm2022/libs/ui/layout/src/index.mjs +3 -1
  109. package/esm2022/libs/ui/layout/src/lib/form-field-wrapper/form-field-wrapper.component.mjs +5 -3
  110. package/esm2022/libs/ui/layout/src/lib/interactive-table/interactive-table.component.mjs +3 -3
  111. package/esm2022/libs/ui/layout/src/lib/modal-dialog/modal-dialog.component.mjs +29 -0
  112. package/esm2022/libs/ui/layout/src/lib/sortable-list/sortable-list.component.mjs +43 -0
  113. package/esm2022/libs/ui/map/src/index.mjs +4 -3
  114. package/esm2022/libs/ui/map/src/lib/components/feature-detail/feature-detail.component.mjs +8 -6
  115. package/esm2022/libs/ui/map/src/lib/components/map-container/map-container.component.mjs +137 -0
  116. package/esm2022/libs/ui/map/src/lib/components/map-container/map-settings.token.mjs +13 -0
  117. package/esm2022/libs/ui/map/src/lib/map-utils.mjs +37 -0
  118. package/esm2022/libs/ui/search/src/lib/facets/fixtures/aggregations-model-response.mjs +7 -7
  119. package/esm2022/libs/ui/search/src/lib/results-table/results-table.component.mjs +8 -8
  120. package/esm2022/libs/util/app-config/src/index.mjs +2 -1
  121. package/esm2022/libs/util/app-config/src/lib/fixtures.mjs +10 -10
  122. package/esm2022/libs/util/app-config/src/lib/map-layers.mjs +27 -0
  123. package/esm2022/libs/util/shared/src/lib/links/link-classifier.service.mjs +1 -1
  124. package/esm2022/libs/util/shared/src/lib/links/link-utils.mjs +1 -1
  125. package/esm2022/libs/util/shared/src/lib/services/theme.service.mjs +2 -1
  126. package/esm2022/libs/util/shared/src/lib/utils/bytes-convert.mjs +4 -1
  127. package/esm2022/translations/de.json +28 -2
  128. package/esm2022/translations/en.json +59 -33
  129. package/esm2022/translations/es.json +26 -0
  130. package/esm2022/translations/fr.json +90 -64
  131. package/esm2022/translations/it.json +28 -2
  132. package/esm2022/translations/nl.json +26 -0
  133. package/esm2022/translations/pt.json +26 -0
  134. package/fesm2022/geonetwork-ui.mjs +9462 -8515
  135. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  136. package/libs/api/metadata-converter/src/index.d.ts +3 -0
  137. package/libs/api/metadata-converter/src/index.d.ts.map +1 -1
  138. package/libs/api/metadata-converter/src/lib/common/license.d.ts +3 -0
  139. package/libs/api/metadata-converter/src/lib/common/license.d.ts.map +1 -0
  140. package/libs/api/metadata-converter/src/lib/common/url.d.ts +7 -0
  141. package/libs/api/metadata-converter/src/lib/common/url.d.ts.map +1 -0
  142. package/libs/api/metadata-converter/src/lib/dcat-ap/dcat-ap.converter.d.ts +13 -0
  143. package/libs/api/metadata-converter/src/lib/dcat-ap/dcat-ap.converter.d.ts.map +1 -0
  144. package/libs/api/metadata-converter/src/lib/dcat-ap/index.d.ts +2 -0
  145. package/libs/api/metadata-converter/src/lib/dcat-ap/index.d.ts.map +1 -0
  146. package/libs/api/metadata-converter/src/lib/dcat-ap/namespaces.d.ts +16 -0
  147. package/libs/api/metadata-converter/src/lib/dcat-ap/namespaces.d.ts.map +1 -0
  148. package/libs/api/metadata-converter/src/lib/dcat-ap/read-parts.d.ts +20 -0
  149. package/libs/api/metadata-converter/src/lib/dcat-ap/read-parts.d.ts.map +1 -0
  150. package/libs/api/metadata-converter/src/lib/dcat-ap/utils/graph-utils.d.ts +9 -0
  151. package/libs/api/metadata-converter/src/lib/dcat-ap/utils/graph-utils.d.ts.map +1 -0
  152. package/libs/api/metadata-converter/src/lib/dcat-ap/utils/serialize-to-xml.d.ts +8 -0
  153. package/libs/api/metadata-converter/src/lib/dcat-ap/utils/serialize-to-xml.d.ts.map +1 -0
  154. package/libs/api/metadata-converter/src/lib/dcat-ap/utils/uri.d.ts +2 -0
  155. package/libs/api/metadata-converter/src/lib/dcat-ap/utils/uri.d.ts.map +1 -0
  156. package/libs/api/metadata-converter/src/lib/dcat-ap/write-parts.d.ts +6 -0
  157. package/libs/api/metadata-converter/src/lib/dcat-ap/write-parts.d.ts.map +1 -0
  158. package/libs/api/metadata-converter/src/lib/find-converter.d.ts.map +1 -1
  159. package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts +3 -3
  160. package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts.map +1 -1
  161. package/libs/api/metadata-converter/src/lib/iso19115-3/iso19115-3.converter.d.ts.map +1 -1
  162. package/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.d.ts +2 -2
  163. package/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.d.ts.map +1 -1
  164. package/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.d.ts +1 -2
  165. package/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.d.ts.map +1 -1
  166. package/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.d.ts.map +1 -1
  167. package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts +4 -5
  168. package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts.map +1 -1
  169. package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts +10 -11
  170. package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts.map +1 -1
  171. package/libs/api/metadata-converter/src/lib/xml-utils.d.ts +58 -0
  172. package/libs/api/metadata-converter/src/lib/xml-utils.d.ts.map +1 -1
  173. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts +12 -7
  174. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts.map +1 -1
  175. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts +21 -2
  176. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts.map +1 -1
  177. package/libs/common/domain/src/lib/model/record/contact.model.d.ts +1 -1
  178. package/libs/common/domain/src/lib/model/record/contact.model.d.ts.map +1 -1
  179. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts +6 -6
  180. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
  181. package/libs/common/domain/src/lib/platform.service.interface.d.ts +15 -0
  182. package/libs/common/domain/src/lib/platform.service.interface.d.ts.map +1 -1
  183. package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts +7 -0
  184. package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts.map +1 -1
  185. package/libs/data-access/gn4/src/fixtures/site.fixtures.d.ts +2 -2
  186. package/libs/data-access/gn4/src/fixtures/site.fixtures.d.ts.map +1 -1
  187. package/libs/data-access/gn4/src/fixtures/ui.fixtures.d.ts +1 -1
  188. package/libs/data-access/gn4/src/fixtures/ui.fixtures.d.ts.map +1 -1
  189. package/libs/feature/catalog/src/lib/feature-catalog.module.d.ts +2 -1
  190. package/libs/feature/catalog/src/lib/feature-catalog.module.d.ts.map +1 -1
  191. package/libs/feature/dataviz/src/lib/chart-view/chart-view.component.d.ts +2 -2
  192. package/libs/feature/dataviz/src/lib/chart-view/chart-view.component.d.ts.map +1 -1
  193. package/libs/feature/dataviz/src/lib/feature-dataviz.module.d.ts +10 -9
  194. package/libs/feature/dataviz/src/lib/feature-dataviz.module.d.ts.map +1 -1
  195. package/libs/feature/dataviz/src/lib/geo-table-view/geo-table-view.component.d.ts +13 -20
  196. package/libs/feature/dataviz/src/lib/geo-table-view/geo-table-view.component.d.ts.map +1 -1
  197. package/libs/feature/dataviz/src/lib/service/data.service.d.ts +6 -6
  198. package/libs/feature/dataviz/src/lib/service/data.service.d.ts.map +1 -1
  199. package/libs/feature/dataviz/src/lib/table-view/table-view.component.d.ts +3 -3
  200. package/libs/feature/dataviz/src/lib/table-view/table-view.component.d.ts.map +1 -1
  201. package/libs/feature/editor/src/index.d.ts +1 -0
  202. package/libs/feature/editor/src/index.d.ts.map +1 -1
  203. package/libs/feature/editor/src/lib/+state/editor.effects.d.ts.map +1 -1
  204. package/libs/feature/editor/src/lib/components/contact-card/contact-card.component.d.ts +1 -5
  205. package/libs/feature/editor/src/lib/components/contact-card/contact-card.component.d.ts.map +1 -1
  206. package/libs/feature/editor/src/lib/components/generic-keywords/generic-keywords.component.d.ts +2 -1
  207. package/libs/feature/editor/src/lib/components/generic-keywords/generic-keywords.component.d.ts.map +1 -1
  208. package/libs/feature/editor/src/lib/components/import-record/import-record.component.d.ts +34 -0
  209. package/libs/feature/editor/src/lib/components/import-record/import-record.component.d.ts.map +1 -0
  210. package/libs/feature/editor/src/lib/components/online-resource-card/online-resource-card.component.d.ts +15 -0
  211. package/libs/feature/editor/src/lib/components/online-resource-card/online-resource-card.component.d.ts.map +1 -0
  212. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts/form-field-contacts.component.d.ts +38 -0
  213. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts/form-field-contacts.component.d.ts.map +1 -0
  214. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.d.ts +2 -5
  215. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.d.ts.map +1 -1
  216. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-date-updated/form-field-date-updated.component.d.ts +9 -0
  217. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-date-updated/form-field-date-updated.component.d.ts.map +1 -0
  218. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-keywords/form-field-keywords.component.d.ts +5 -2
  219. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-keywords/form-field-keywords.component.d.ts.map +1 -1
  220. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.d.ts +6 -13
  221. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.d.ts.map +1 -1
  222. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-link-resources/form-field-online-link-resources.component.d.ts +35 -0
  223. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-link-resources/form-field-online-link-resources.component.d.ts.map +1 -0
  224. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.d.ts +20 -2
  225. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.d.ts.map +1 -1
  226. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-rich/form-field-rich.component.d.ts +1 -3
  227. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-rich/form-field-rich.component.d.ts.map +1 -1
  228. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.d.ts +7 -2
  229. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.d.ts.map +1 -1
  230. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents.component.d.ts +9 -15
  231. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents.component.d.ts.map +1 -1
  232. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.d.ts +5 -3
  233. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.d.ts.map +1 -1
  234. package/libs/feature/editor/src/lib/components/record-form/form-field/index.d.ts +1 -1
  235. package/libs/feature/editor/src/lib/components/record-form/form-field/index.d.ts.map +1 -1
  236. package/libs/feature/editor/src/lib/components/record-form/record-form.component.d.ts +3 -2
  237. package/libs/feature/editor/src/lib/components/record-form/record-form.component.d.ts.map +1 -1
  238. package/libs/feature/editor/src/lib/fields.config.d.ts +10 -1
  239. package/libs/feature/editor/src/lib/fields.config.d.ts.map +1 -1
  240. package/libs/feature/editor/src/lib/models/editor-config.model.d.ts +6 -0
  241. package/libs/feature/editor/src/lib/models/editor-config.model.d.ts.map +1 -1
  242. package/libs/feature/editor/src/lib/services/editor.service.d.ts +2 -2
  243. package/libs/feature/editor/src/lib/services/editor.service.d.ts.map +1 -1
  244. package/libs/feature/map/src/index.d.ts +1 -8
  245. package/libs/feature/map/src/index.d.ts.map +1 -1
  246. package/libs/feature/map/src/lib/+state/map.actions.d.ts +13 -39
  247. package/libs/feature/map/src/lib/+state/map.actions.d.ts.map +1 -1
  248. package/libs/feature/map/src/lib/+state/map.facade.d.ts +9 -10
  249. package/libs/feature/map/src/lib/+state/map.facade.d.ts.map +1 -1
  250. package/libs/feature/map/src/lib/+state/map.reducer.d.ts +4 -2
  251. package/libs/feature/map/src/lib/+state/map.reducer.d.ts.map +1 -1
  252. package/libs/feature/map/src/lib/+state/map.selectors.d.ts +6 -1
  253. package/libs/feature/map/src/lib/+state/map.selectors.d.ts.map +1 -1
  254. package/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-record-preview/add-layer-record-preview.component.d.ts +7 -9
  255. package/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-record-preview/add-layer-record-preview.component.d.ts.map +1 -1
  256. package/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.d.ts.map +1 -1
  257. package/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.d.ts +2 -2
  258. package/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.d.ts.map +1 -1
  259. package/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.d.ts +1 -1
  260. package/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.d.ts.map +1 -1
  261. package/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.d.ts +1 -1
  262. package/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.d.ts.map +1 -1
  263. package/libs/feature/map/src/lib/constant/index.d.ts +0 -1
  264. package/libs/feature/map/src/lib/constant/index.d.ts.map +1 -1
  265. package/libs/feature/map/src/lib/feature-map.module.d.ts +12 -18
  266. package/libs/feature/map/src/lib/feature-map.module.d.ts.map +1 -1
  267. package/libs/feature/map/src/lib/geocoding/geocoding.component.d.ts +7 -7
  268. package/libs/feature/map/src/lib/geocoding/geocoding.component.d.ts.map +1 -1
  269. package/libs/feature/map/src/lib/layers-panel/layers-panel.component.d.ts +4 -3
  270. package/libs/feature/map/src/lib/layers-panel/layers-panel.component.d.ts.map +1 -1
  271. package/libs/feature/map/src/lib/map-state-container/map-state-container.component.d.ts +14 -0
  272. package/libs/feature/map/src/lib/map-state-container/map-state-container.component.d.ts.map +1 -0
  273. package/libs/feature/map/src/lib/style/map-style.fixtures.d.ts +2 -2
  274. package/libs/feature/map/src/lib/style/map-style.fixtures.d.ts.map +1 -1
  275. package/libs/feature/map/src/lib/utils/map-utils.service.d.ts +0 -30
  276. package/libs/feature/map/src/lib/utils/map-utils.service.d.ts.map +1 -1
  277. package/libs/feature/record/src/lib/data-view/data-view.component.d.ts +3 -3
  278. package/libs/feature/record/src/lib/data-view/data-view.component.d.ts.map +1 -1
  279. package/libs/feature/record/src/lib/external-viewer-button/external-viewer-button.component.d.ts +10 -7
  280. package/libs/feature/record/src/lib/external-viewer-button/external-viewer-button.component.d.ts.map +1 -1
  281. package/libs/feature/record/src/lib/feature-record.module.d.ts +13 -11
  282. package/libs/feature/record/src/lib/feature-record.module.d.ts.map +1 -1
  283. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts +14 -20
  284. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts.map +1 -1
  285. package/libs/feature/record/src/lib/state/mdview.facade.d.ts +7 -7
  286. package/libs/feature/record/src/lib/state/mdview.facade.d.ts.map +1 -1
  287. package/libs/feature/search/src/lib/results-table/results-table-container.component.d.ts +5 -3
  288. package/libs/feature/search/src/lib/results-table/results-table-container.component.d.ts.map +1 -1
  289. package/libs/ui/catalog/src/lib/organisations-filter/organisations-filter.component.d.ts +1 -1
  290. package/libs/ui/catalog/src/lib/organisations-filter/organisations-filter.component.d.ts.map +1 -1
  291. package/libs/ui/catalog/src/lib/ui-catalog.module.d.ts +9 -10
  292. package/libs/ui/catalog/src/lib/ui-catalog.module.d.ts.map +1 -1
  293. package/libs/ui/dataviz/src/lib/table/table.fixtures.d.ts +2 -2
  294. package/libs/ui/dataviz/src/lib/table/table.fixtures.d.ts.map +1 -1
  295. package/libs/ui/elements/src/index.d.ts +1 -1
  296. package/libs/ui/elements/src/index.d.ts.map +1 -1
  297. package/libs/ui/elements/src/lib/download-item/download-item.component.d.ts +2 -2
  298. package/libs/ui/elements/src/lib/download-item/download-item.component.d.ts.map +1 -1
  299. package/libs/ui/elements/src/lib/downloads-list/downloads-list.component.d.ts +7 -7
  300. package/libs/ui/elements/src/lib/downloads-list/downloads-list.component.d.ts.map +1 -1
  301. package/libs/ui/elements/src/lib/link-card/link-card.component.d.ts +2 -2
  302. package/libs/ui/elements/src/lib/link-card/link-card.component.d.ts.map +1 -1
  303. package/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.d.ts +2 -2
  304. package/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.d.ts.map +1 -1
  305. package/libs/ui/elements/src/lib/record-api-form/record-api-form.component.d.ts +1 -1
  306. package/libs/ui/inputs/src/index.d.ts +4 -0
  307. package/libs/ui/inputs/src/index.d.ts.map +1 -1
  308. package/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.d.ts.map +1 -1
  309. package/libs/ui/inputs/src/lib/badge/badge.component.d.ts.map +1 -1
  310. package/libs/ui/inputs/src/lib/button/button.component.d.ts +1 -1
  311. package/libs/ui/inputs/src/lib/button/button.component.d.ts.map +1 -1
  312. package/libs/ui/inputs/src/lib/date-picker/date-picker.component.d.ts.map +1 -1
  313. package/libs/ui/inputs/src/lib/date-range-picker/date-range-picker.component.d.ts.map +1 -1
  314. package/libs/ui/inputs/src/lib/file-input/file-input.component.d.ts +24 -0
  315. package/libs/ui/inputs/src/lib/file-input/file-input.component.d.ts.map +1 -0
  316. package/libs/ui/inputs/src/lib/image-input/image-input.component.d.ts +1 -1
  317. package/libs/ui/inputs/src/lib/image-input/image-input.component.d.ts.map +1 -1
  318. package/libs/ui/inputs/src/lib/search-input/search-input.component.d.ts +1 -1
  319. package/libs/ui/inputs/src/lib/search-input/search-input.component.d.ts.map +1 -1
  320. package/libs/ui/inputs/src/lib/switch-toggle/switch-toggle.component.d.ts +0 -1
  321. package/libs/ui/inputs/src/lib/switch-toggle/switch-toggle.component.d.ts.map +1 -1
  322. package/libs/ui/inputs/src/lib/text-area/text-area.component.d.ts.map +1 -1
  323. package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts +25 -26
  324. package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts.map +1 -1
  325. package/libs/ui/layout/src/index.d.ts +2 -0
  326. package/libs/ui/layout/src/index.d.ts.map +1 -1
  327. package/libs/ui/layout/src/lib/form-field-wrapper/form-field-wrapper.component.d.ts +2 -2
  328. package/libs/ui/layout/src/lib/form-field-wrapper/form-field-wrapper.component.d.ts.map +1 -1
  329. package/libs/ui/layout/src/lib/interactive-table/interactive-table-column/interactive-table-column.component.d.ts +1 -1
  330. package/libs/ui/layout/src/lib/modal-dialog/modal-dialog.component.d.ts +20 -0
  331. package/libs/ui/layout/src/lib/modal-dialog/modal-dialog.component.d.ts.map +1 -0
  332. package/libs/ui/layout/src/lib/sortable-list/sortable-list.component.d.ts +14 -0
  333. package/libs/ui/layout/src/lib/sortable-list/sortable-list.component.d.ts.map +1 -0
  334. package/libs/ui/map/src/index.d.ts +3 -2
  335. package/libs/ui/map/src/index.d.ts.map +1 -1
  336. package/libs/ui/map/src/lib/components/feature-detail/feature-detail.component.d.ts +3 -4
  337. package/libs/ui/map/src/lib/components/feature-detail/feature-detail.component.d.ts.map +1 -1
  338. package/libs/ui/map/src/lib/components/map-container/map-container.component.d.ts +37 -0
  339. package/libs/ui/map/src/lib/components/map-container/map-container.component.d.ts.map +1 -0
  340. package/libs/ui/map/src/lib/components/map-container/map-settings.token.d.ts +18 -0
  341. package/libs/ui/map/src/lib/components/map-container/map-settings.token.d.ts.map +1 -0
  342. package/libs/ui/map/src/lib/map-utils.d.ts +7 -0
  343. package/libs/ui/map/src/lib/map-utils.d.ts.map +1 -0
  344. package/libs/ui/search/src/lib/facets/fixtures/aggregations-model-response.d.ts +3 -3
  345. package/libs/ui/search/src/lib/facets/fixtures/aggregations-model-response.d.ts.map +1 -1
  346. package/libs/ui/search/src/lib/results-table/results-table.component.d.ts +3 -3
  347. package/libs/ui/search/src/lib/results-table/results-table.component.d.ts.map +1 -1
  348. package/libs/util/app-config/src/index.d.ts +1 -0
  349. package/libs/util/app-config/src/index.d.ts.map +1 -1
  350. package/libs/util/app-config/src/lib/fixtures.d.ts +8 -8
  351. package/libs/util/app-config/src/lib/fixtures.d.ts.map +1 -1
  352. package/libs/util/app-config/src/lib/map-layers.d.ts +4 -0
  353. package/libs/util/app-config/src/lib/map-layers.d.ts.map +1 -0
  354. package/libs/util/shared/src/lib/links/link-classifier.service.d.ts +3 -3
  355. package/libs/util/shared/src/lib/links/link-classifier.service.d.ts.map +1 -1
  356. package/libs/util/shared/src/lib/links/link-utils.d.ts +6 -6
  357. package/libs/util/shared/src/lib/links/link-utils.d.ts.map +1 -1
  358. package/libs/util/shared/src/lib/services/theme.service.d.ts.map +1 -1
  359. package/libs/util/shared/src/lib/utils/bytes-convert.d.ts +2 -1
  360. package/libs/util/shared/src/lib/utils/bytes-convert.d.ts.map +1 -1
  361. package/package.json +5 -3
  362. package/src/libs/api/metadata-converter/src/index.ts +3 -0
  363. package/src/libs/api/metadata-converter/src/lib/common/license.ts +66 -0
  364. package/src/libs/api/metadata-converter/src/lib/common/url.ts +15 -0
  365. package/src/libs/api/metadata-converter/src/lib/dcat-ap/dcat-ap.converter.ts +378 -0
  366. package/src/libs/api/metadata-converter/src/lib/dcat-ap/index.ts +1 -0
  367. package/src/libs/api/metadata-converter/src/lib/dcat-ap/namespaces.ts +17 -0
  368. package/src/libs/api/metadata-converter/src/lib/dcat-ap/read-parts.ts +370 -0
  369. package/src/libs/api/metadata-converter/src/lib/dcat-ap/utils/graph-utils.ts +95 -0
  370. package/src/libs/api/metadata-converter/src/lib/dcat-ap/utils/individual-name.ts +20 -0
  371. package/src/libs/api/metadata-converter/src/lib/dcat-ap/utils/keyword.mapper.ts +16 -0
  372. package/src/libs/api/metadata-converter/src/lib/dcat-ap/utils/role.mapper.ts +48 -0
  373. package/src/libs/api/metadata-converter/src/lib/dcat-ap/utils/serialize-to-xml.ts +97 -0
  374. package/src/libs/api/metadata-converter/src/lib/dcat-ap/utils/status.mapper.ts +19 -0
  375. package/src/libs/api/metadata-converter/src/lib/dcat-ap/utils/update-frequency.mapper.ts +67 -0
  376. package/src/libs/api/metadata-converter/src/lib/dcat-ap/utils/uri.ts +1 -0
  377. package/src/libs/api/metadata-converter/src/lib/dcat-ap/write-parts.ts +68 -0
  378. package/src/libs/api/metadata-converter/src/lib/find-converter.ts +13 -0
  379. package/src/libs/api/metadata-converter/src/lib/fixtures/eu.dcat-ap.records.ts +272 -0
  380. package/src/libs/api/metadata-converter/src/lib/fixtures/generic.records.ts +1 -1
  381. package/src/libs/api/metadata-converter/src/lib/fixtures/geo2france.records.ts +1 -1
  382. package/src/libs/api/metadata-converter/src/lib/fixtures/geocat-ch.records.ts +1 -1
  383. package/src/libs/api/metadata-converter/src/lib/fixtures/metawal.records.ts +1 -1
  384. package/src/libs/api/metadata-converter/src/lib/fixtures/opendataswiss.records.ts +110 -0
  385. package/src/libs/api/metadata-converter/src/lib/fixtures/sextant.records.ts +85 -0
  386. package/src/libs/api/metadata-converter/src/lib/fixtures/vlaanderen.dcat-ap.records.ts +73 -0
  387. package/src/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.ts +18 -16
  388. package/src/libs/api/metadata-converter/src/lib/iso19115-3/iso19115-3.converter.ts +5 -6
  389. package/src/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.ts +12 -4
  390. package/src/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.ts +21 -43
  391. package/src/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.ts +5 -14
  392. package/src/libs/api/metadata-converter/src/lib/iso19139/read-parts.ts +13 -15
  393. package/src/libs/api/metadata-converter/src/lib/iso19139/write-parts.ts +133 -156
  394. package/src/libs/api/metadata-converter/src/lib/xml-utils.ts +37 -2
  395. package/src/libs/api/repository/src/lib/gn4/gn4-repository.ts +132 -68
  396. package/src/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.ts +47 -3
  397. package/src/libs/common/domain/src/lib/model/record/contact.model.ts +1 -1
  398. package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +7 -7
  399. package/src/libs/common/domain/src/lib/platform.service.interface.ts +26 -0
  400. package/src/libs/common/domain/src/lib/repository/records-repository.interface.ts +10 -0
  401. package/src/libs/common/fixtures/src/index.ts +4 -1
  402. package/src/libs/common/fixtures/src/lib/editor/editor.fixtures.ts +37 -37
  403. package/src/libs/common/fixtures/src/lib/elasticsearch/{aggregations-request.ts → aggregations-request.fixtures.ts} +1 -3
  404. package/src/libs/common/fixtures/src/lib/elasticsearch/{aggregations-response.ts → aggregations-response.fixtures.ts} +6 -8
  405. package/src/libs/common/fixtures/src/lib/elasticsearch/{full-response.ts → full-response.fixtures.ts} +1 -3
  406. package/src/libs/common/fixtures/src/lib/elasticsearch/index.ts +5 -5
  407. package/src/libs/common/fixtures/src/lib/elasticsearch/metadata-links.fixtures.ts +1 -3
  408. package/src/libs/common/fixtures/src/lib/elasticsearch/metadata.fixtures.ts +1739 -1742
  409. package/src/libs/common/fixtures/src/lib/elasticsearch/{search-requests.ts → search-requests.fixtures.ts} +1 -3
  410. package/src/libs/common/fixtures/src/lib/elasticsearch/{search-responses.ts → search-responses.fixtures.ts} +4 -6
  411. package/src/libs/common/fixtures/src/lib/geojson.fixtures.ts +57178 -57195
  412. package/src/libs/common/fixtures/src/lib/gn4/groups.fixtures.ts +2 -4
  413. package/src/libs/common/fixtures/src/lib/individual.fixtures.ts +61 -0
  414. package/src/libs/common/fixtures/src/lib/link.fixtures.ts +233 -164
  415. package/src/libs/common/fixtures/src/lib/map/index.ts +1 -0
  416. package/src/libs/common/fixtures/src/lib/map/map-context.fixtures.ts +53 -0
  417. package/src/libs/common/fixtures/src/lib/ol-feature.fixtures.ts +10 -0
  418. package/src/libs/common/fixtures/src/lib/organisations.fixture.ts +35 -11
  419. package/src/libs/common/fixtures/src/lib/record-link.fixtures.ts +9 -7
  420. package/src/libs/common/fixtures/src/lib/records.fixtures.ts +9 -9
  421. package/src/libs/common/fixtures/src/lib/repository.fixtures.ts +4 -4
  422. package/src/libs/common/fixtures/src/lib/search/aggregations.ts +2 -3
  423. package/src/libs/common/fixtures/src/lib/user-feedbacks.fixtures.ts +14 -15
  424. package/src/libs/common/fixtures/src/lib/user.fixtures.ts +45 -15
  425. package/src/libs/data-access/gn4/src/fixtures/site.fixtures.ts +4 -4
  426. package/src/libs/data-access/gn4/src/fixtures/ui.fixtures.ts +2 -2
  427. package/src/libs/feature/catalog/src/lib/feature-catalog.module.ts +5 -1
  428. package/src/libs/feature/catalog/src/lib/sources/sources.fixture.ts +1 -1
  429. package/src/libs/feature/dataviz/src/lib/chart-view/chart-view.component.ts +3 -3
  430. package/src/libs/feature/dataviz/src/lib/feature-dataviz.module.ts +6 -2
  431. package/src/libs/feature/dataviz/src/lib/figure/figure.fixtures.ts +2 -2
  432. package/src/libs/feature/dataviz/src/lib/geo-table-view/geo-table-view.component.html +5 -2
  433. package/src/libs/feature/dataviz/src/lib/geo-table-view/geo-table-view.component.ts +38 -78
  434. package/src/libs/feature/dataviz/src/lib/service/data.service.ts +6 -6
  435. package/src/libs/feature/dataviz/src/lib/table-view/table-view.component.ts +4 -4
  436. package/src/libs/feature/editor/src/index.ts +1 -0
  437. package/src/libs/feature/editor/src/lib/+state/editor.effects.ts +11 -4
  438. package/src/libs/feature/editor/src/lib/components/contact-card/contact-card.component.html +12 -24
  439. package/src/libs/feature/editor/src/lib/components/contact-card/contact-card.component.ts +1 -13
  440. package/src/libs/feature/editor/src/lib/components/generic-keywords/generic-keywords.component.ts +1 -0
  441. package/src/libs/feature/editor/src/lib/components/import-record/import-record.component.html +47 -0
  442. package/src/libs/feature/editor/src/lib/components/import-record/import-record.component.ts +132 -0
  443. package/src/libs/feature/editor/src/lib/components/online-resource-card/online-resource-card.component.html +35 -0
  444. package/src/libs/feature/editor/src/lib/components/online-resource-card/online-resource-card.component.ts +79 -0
  445. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts/form-field-contacts.component.html +40 -0
  446. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts/form-field-contacts.component.ts +170 -0
  447. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.css +4 -0
  448. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.html +13 -23
  449. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.ts +11 -50
  450. package/src/libs/feature/editor/src/lib/components/record-form/form-field/{form-field-resource-updated/form-field-resource-updated.component.ts → form-field-date-updated/form-field-date-updated.component.ts} +4 -4
  451. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-keywords/form-field-keywords.component.html +3 -2
  452. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-keywords/form-field-keywords.component.ts +35 -3
  453. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-license/form-field-license.component.css +8 -0
  454. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.html +1 -4
  455. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.ts +41 -83
  456. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-link-resources/form-field-online-link-resources.component.html +34 -0
  457. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-link-resources/form-field-online-link-resources.component.ts +182 -0
  458. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.html +11 -5
  459. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.ts +93 -4
  460. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-rich/form-field-rich.component.html +13 -6
  461. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-rich/form-field-rich.component.ts +0 -9
  462. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.html +7 -2
  463. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.ts +62 -6
  464. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents.component.css +4 -0
  465. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents.component.html +23 -3
  466. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents.component.ts +37 -69
  467. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.css +4 -0
  468. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.html +16 -14
  469. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.ts +1 -1
  470. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.html +34 -20
  471. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.ts +12 -3
  472. package/src/libs/feature/editor/src/lib/components/record-form/form-field/index.ts +1 -1
  473. package/src/libs/feature/editor/src/lib/components/record-form/record-form.component.html +31 -29
  474. package/src/libs/feature/editor/src/lib/components/record-form/record-form.component.ts +2 -1
  475. package/src/libs/feature/editor/src/lib/components/wizard/wizard.component.html +2 -6
  476. package/src/libs/feature/editor/src/lib/fields.config.ts +45 -6
  477. package/src/libs/feature/editor/src/lib/models/editor-config.model.ts +12 -0
  478. package/src/libs/feature/editor/src/lib/services/editor.service.ts +7 -3
  479. package/src/libs/feature/map/src/index.ts +1 -8
  480. package/src/libs/feature/map/src/lib/+state/map.actions.ts +10 -25
  481. package/src/libs/feature/map/src/lib/+state/map.facade.ts +11 -15
  482. package/src/libs/feature/map/src/lib/+state/map.reducer.ts +16 -53
  483. package/src/libs/feature/map/src/lib/+state/map.selectors.ts +7 -2
  484. package/src/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-record-preview/add-layer-record-preview.component.ts +18 -21
  485. package/src/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.ts +17 -11
  486. package/src/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.ts +11 -12
  487. package/src/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.ts +12 -10
  488. package/src/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.ts +11 -9
  489. package/src/libs/feature/map/src/lib/constant/index.ts +0 -1
  490. package/src/libs/feature/map/src/lib/feature-map.module.ts +0 -26
  491. package/src/libs/feature/map/src/lib/geocoding/geocoding.component.ts +38 -20
  492. package/src/libs/feature/map/src/lib/layers-panel/layers-panel.component.html +2 -2
  493. package/src/libs/feature/map/src/lib/layers-panel/layers-panel.component.ts +15 -5
  494. package/src/libs/feature/map/src/lib/map-state-container/map-state-container.component.html +4 -0
  495. package/src/libs/feature/map/src/lib/map-state-container/map-state-container.component.ts +29 -0
  496. package/src/libs/feature/map/src/lib/style/map-style.fixtures.ts +29 -27
  497. package/src/libs/feature/map/src/lib/utils/map-utils.service.ts +1 -229
  498. package/src/libs/feature/record/src/lib/data-view/data-view.component.ts +3 -3
  499. package/src/libs/feature/record/src/lib/external-viewer-button/external-viewer-button.component.ts +29 -20
  500. package/src/libs/feature/record/src/lib/feature-record.module.ts +11 -3
  501. package/src/libs/feature/record/src/lib/map-view/map-view.component.html +4 -4
  502. package/src/libs/feature/record/src/lib/map-view/map-view.component.ts +45 -72
  503. package/src/libs/feature/record/src/lib/state/mdview.facade.ts +5 -1
  504. package/src/libs/feature/router/src/lib/default/state/router.facade.ts +1 -1
  505. package/src/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.html +1 -0
  506. package/src/libs/feature/search/src/lib/results-table/results-table-container.component.html +5 -1
  507. package/src/libs/feature/search/src/lib/results-table/results-table-container.component.ts +14 -3
  508. package/src/libs/feature/search/src/lib/state/fixtures/search-state.fixtures.ts +2 -2
  509. package/src/libs/ui/catalog/src/lib/organisations-filter/organisations-filter.component.ts +8 -1
  510. package/src/libs/ui/catalog/src/lib/ui-catalog.module.ts +0 -3
  511. package/src/libs/ui/dataviz/src/lib/chart/chart.fixtures.ts +2 -2
  512. package/src/libs/ui/dataviz/src/lib/table/table.fixtures.ts +2 -2
  513. package/src/libs/ui/elements/src/index.ts +1 -1
  514. package/src/libs/ui/elements/src/lib/download-item/download-item.component.ts +4 -4
  515. package/src/libs/ui/elements/src/lib/downloads-list/downloads-list.component.ts +7 -7
  516. package/src/libs/ui/elements/src/lib/link-card/link-card.component.ts +3 -3
  517. package/src/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.html +13 -20
  518. package/src/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.ts +1 -1
  519. package/src/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.css +5 -0
  520. package/src/libs/ui/inputs/src/index.ts +4 -0
  521. package/src/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.css +25 -18
  522. package/src/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.html +38 -24
  523. package/src/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.ts +4 -1
  524. package/src/libs/ui/inputs/src/lib/badge/badge.component.html +11 -3
  525. package/src/libs/ui/inputs/src/lib/badge/badge.component.ts +2 -1
  526. package/src/libs/ui/inputs/src/lib/button/button.component.ts +15 -1
  527. package/src/libs/ui/inputs/src/lib/date-picker/date-picker.component.css +7 -2
  528. package/src/libs/ui/inputs/src/lib/date-picker/date-picker.component.html +14 -6
  529. package/src/libs/ui/inputs/src/lib/date-picker/date-picker.component.ts +7 -1
  530. package/src/libs/ui/inputs/src/lib/date-range-picker/date-range-picker.component.css +7 -2
  531. package/src/libs/ui/inputs/src/lib/date-range-picker/date-range-picker.component.html +28 -23
  532. package/src/libs/ui/inputs/src/lib/date-range-picker/date-range-picker.component.ts +7 -1
  533. package/src/libs/ui/inputs/src/lib/file-input/file-input.component.css +4 -0
  534. package/src/libs/ui/inputs/src/lib/file-input/file-input.component.html +7 -3
  535. package/src/libs/ui/inputs/src/lib/file-input/file-input.component.ts +2 -1
  536. package/src/libs/ui/inputs/src/lib/image-input/image-input.component.css +4 -0
  537. package/src/libs/ui/inputs/src/lib/image-input/image-input.component.html +30 -22
  538. package/src/libs/ui/inputs/src/lib/image-input/image-input.component.ts +2 -1
  539. package/src/libs/ui/inputs/src/lib/search-input/search-input.component.ts +5 -1
  540. package/src/libs/ui/inputs/src/lib/switch-toggle/switch-toggle.component.css +4 -3
  541. package/src/libs/ui/inputs/src/lib/switch-toggle/switch-toggle.component.html +0 -1
  542. package/src/libs/ui/inputs/src/lib/switch-toggle/switch-toggle.component.ts +1 -2
  543. package/src/libs/ui/inputs/src/lib/text-area/text-area.component.html +1 -1
  544. package/src/libs/ui/inputs/src/lib/text-area/text-area.component.ts +1 -1
  545. package/src/libs/ui/inputs/src/lib/ui-inputs.module.ts +0 -3
  546. package/src/libs/ui/inputs/src/lib/url-input/url-input.component.html +1 -1
  547. package/src/libs/ui/layout/src/index.ts +2 -0
  548. package/src/libs/ui/layout/src/lib/form-field-wrapper/form-field-wrapper.component.html +8 -3
  549. package/src/libs/ui/layout/src/lib/form-field-wrapper/form-field-wrapper.component.ts +4 -3
  550. package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.css +1 -1
  551. package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.html +2 -2
  552. package/src/libs/ui/layout/src/lib/modal-dialog/modal-dialog.component.html +15 -0
  553. package/src/libs/ui/layout/src/lib/modal-dialog/modal-dialog.component.ts +44 -0
  554. package/src/libs/ui/layout/src/lib/sortable-list/sortable-list.component.html +37 -0
  555. package/src/libs/ui/{elements → layout}/src/lib/sortable-list/sortable-list.component.ts +13 -16
  556. package/src/libs/ui/map/src/index.ts +3 -2
  557. package/src/libs/ui/map/src/lib/components/feature-detail/feature-detail.component.html +1 -1
  558. package/src/libs/ui/map/src/lib/components/feature-detail/feature-detail.component.ts +8 -5
  559. package/src/libs/ui/map/src/lib/components/map-container/map-container.component.css +0 -0
  560. package/src/libs/ui/map/src/lib/components/map-container/map-container.component.ts +203 -0
  561. package/src/libs/ui/map/src/lib/components/map-container/map-settings.token.ts +23 -0
  562. package/src/libs/ui/map/src/lib/map-utils.ts +54 -0
  563. package/src/libs/ui/search/src/lib/facets/fixtures/aggregations-model-response.ts +7 -6
  564. package/src/libs/ui/search/src/lib/results-table/results-table.component.html +20 -9
  565. package/src/libs/ui/search/src/lib/results-table/results-table.component.ts +5 -6
  566. package/src/libs/util/app-config/src/index.ts +1 -0
  567. package/src/libs/util/app-config/src/lib/fixtures.ts +9 -9
  568. package/src/libs/util/app-config/src/lib/map-layers.ts +31 -0
  569. package/src/libs/util/shared/src/lib/links/link-classifier.service.ts +4 -3
  570. package/src/libs/util/shared/src/lib/links/link-utils.ts +6 -6
  571. package/src/libs/util/shared/src/lib/services/theme.service.ts +1 -0
  572. package/src/libs/util/shared/src/lib/utils/bytes-convert.ts +4 -1
  573. package/tailwind.base.config.js +1 -0
  574. package/tailwind.base.css +38 -6
  575. package/translations/de.json +28 -2
  576. package/translations/en.json +59 -33
  577. package/translations/es.json +26 -0
  578. package/translations/fr.json +90 -64
  579. package/translations/it.json +28 -2
  580. package/translations/nl.json +26 -0
  581. package/translations/pt.json +26 -0
  582. package/translations/sk.json +26 -0
  583. package/esm2022/libs/feature/editor/src/lib/components/overview-upload/overview-upload.component.mjs +0 -96
  584. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-resource-updated/form-field-resource-updated.component.mjs +0 -19
  585. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents-date/form-field-temporal-extents-date.component.mjs +0 -17
  586. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents-range/form-field-temporal-extents-range.component.mjs +0 -17
  587. package/esm2022/libs/feature/map/src/lib/+state/map.effects.mjs +0 -15
  588. package/esm2022/libs/feature/map/src/lib/+state/map.models.mjs +0 -2
  589. package/esm2022/libs/feature/map/src/lib/constant/map-options.mjs +0 -8
  590. package/esm2022/libs/feature/map/src/lib/constant/style.constant.mjs +0 -17
  591. package/esm2022/libs/feature/map/src/lib/feature-info/feature-info.service.mjs +0 -38
  592. package/esm2022/libs/feature/map/src/lib/manager/map-instance.directive.mjs +0 -19
  593. package/esm2022/libs/feature/map/src/lib/manager/map-manager.service.mjs +0 -19
  594. package/esm2022/libs/feature/map/src/lib/map-container/map-container.component.mjs +0 -27
  595. package/esm2022/libs/feature/map/src/lib/map-context/component/map-context.component.mjs +0 -46
  596. package/esm2022/libs/feature/map/src/lib/map-context/map-context.model.mjs +0 -10
  597. package/esm2022/libs/feature/map/src/lib/map-context/map-context.service.mjs +0 -289
  598. package/esm2022/libs/ui/elements/src/lib/sortable-list/sortable-list.component.mjs +0 -39
  599. package/esm2022/libs/ui/map/src/lib/components/map/map.component.mjs +0 -40
  600. package/esm2022/libs/ui/map/src/lib/ui-map.module.mjs +0 -33
  601. package/libs/feature/editor/src/lib/components/overview-upload/overview-upload.component.d.ts +0 -27
  602. package/libs/feature/editor/src/lib/components/overview-upload/overview-upload.component.d.ts.map +0 -1
  603. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-resource-updated/form-field-resource-updated.component.d.ts +0 -9
  604. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-resource-updated/form-field-resource-updated.component.d.ts.map +0 -1
  605. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents-date/form-field-temporal-extents-date.component.d.ts +0 -8
  606. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents-date/form-field-temporal-extents-date.component.d.ts.map +0 -1
  607. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents-range/form-field-temporal-extents-range.component.d.ts +0 -8
  608. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents-range/form-field-temporal-extents-range.component.d.ts.map +0 -1
  609. package/libs/feature/map/src/lib/+state/map.effects.d.ts +0 -9
  610. package/libs/feature/map/src/lib/+state/map.effects.d.ts.map +0 -1
  611. package/libs/feature/map/src/lib/+state/map.models.d.ts +0 -9
  612. package/libs/feature/map/src/lib/+state/map.models.d.ts.map +0 -1
  613. package/libs/feature/map/src/lib/constant/map-options.d.ts +0 -9
  614. package/libs/feature/map/src/lib/constant/map-options.d.ts.map +0 -1
  615. package/libs/feature/map/src/lib/constant/style.constant.d.ts +0 -4
  616. package/libs/feature/map/src/lib/constant/style.constant.d.ts.map +0 -1
  617. package/libs/feature/map/src/lib/feature-info/feature-info.service.d.ts +0 -16
  618. package/libs/feature/map/src/lib/feature-info/feature-info.service.d.ts.map +0 -1
  619. package/libs/feature/map/src/lib/manager/map-instance.directive.d.ts +0 -9
  620. package/libs/feature/map/src/lib/manager/map-instance.directive.d.ts.map +0 -1
  621. package/libs/feature/map/src/lib/manager/map-manager.service.d.ts +0 -11
  622. package/libs/feature/map/src/lib/manager/map-manager.service.d.ts.map +0 -1
  623. package/libs/feature/map/src/lib/map-container/map-container.component.d.ts +0 -12
  624. package/libs/feature/map/src/lib/map-container/map-container.component.d.ts.map +0 -1
  625. package/libs/feature/map/src/lib/map-context/component/map-context.component.d.ts +0 -26
  626. package/libs/feature/map/src/lib/map-context/component/map-context.component.d.ts.map +0 -1
  627. package/libs/feature/map/src/lib/map-context/map-context.model.d.ts +0 -77
  628. package/libs/feature/map/src/lib/map-context/map-context.model.d.ts.map +0 -1
  629. package/libs/feature/map/src/lib/map-context/map-context.service.d.ts +0 -26
  630. package/libs/feature/map/src/lib/map-context/map-context.service.d.ts.map +0 -1
  631. package/libs/ui/elements/src/lib/sortable-list/sortable-list.component.d.ts +0 -17
  632. package/libs/ui/elements/src/lib/sortable-list/sortable-list.component.d.ts.map +0 -1
  633. package/libs/ui/map/src/lib/components/map/map.component.d.ts +0 -19
  634. package/libs/ui/map/src/lib/components/map/map.component.d.ts.map +0 -1
  635. package/libs/ui/map/src/lib/ui-map.module.d.ts +0 -13
  636. package/libs/ui/map/src/lib/ui-map.module.d.ts.map +0 -1
  637. package/src/libs/common/fixtures/src/lib/ol-feature.fixture.ts +0 -7
  638. package/src/libs/common/fixtures/src/lib/utils/freeze.ts +0 -10
  639. package/src/libs/common/fixtures/src/lib/utils/index.ts +0 -1
  640. package/src/libs/feature/editor/src/lib/components/overview-upload/overview-upload.component.html +0 -9
  641. package/src/libs/feature/editor/src/lib/components/overview-upload/overview-upload.component.ts +0 -113
  642. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents-date/form-field-temporal-extents-date.component.html +0 -7
  643. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents-date/form-field-temporal-extents-date.component.ts +0 -16
  644. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents-range/form-field-temporal-extents-range.component.html +0 -13
  645. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents-range/form-field-temporal-extents-range.component.ts +0 -16
  646. package/src/libs/feature/map/src/lib/+state/map.effects.ts +0 -7
  647. package/src/libs/feature/map/src/lib/+state/map.models.ts +0 -9
  648. package/src/libs/feature/map/src/lib/constant/map-options.ts +0 -17
  649. package/src/libs/feature/map/src/lib/feature-info/feature-info.service.ts +0 -42
  650. package/src/libs/feature/map/src/lib/manager/map-instance.directive.ts +0 -10
  651. package/src/libs/feature/map/src/lib/manager/map-manager.service.ts +0 -13
  652. package/src/libs/feature/map/src/lib/map-container/map-container.component.html +0 -1
  653. package/src/libs/feature/map/src/lib/map-container/map-container.component.ts +0 -26
  654. package/src/libs/feature/map/src/lib/map-context/component/map-context.component.html +0 -1
  655. package/src/libs/feature/map/src/lib/map-context/component/map-context.component.ts +0 -57
  656. package/src/libs/feature/map/src/lib/map-context/map-context.fixtures.ts +0 -51
  657. package/src/libs/feature/map/src/lib/map-context/map-context.model.ts +0 -95
  658. package/src/libs/feature/map/src/lib/map-context/map-context.service.ts +0 -318
  659. package/src/libs/ui/elements/src/lib/sortable-list/sortable-list.component.html +0 -29
  660. package/src/libs/ui/map/src/lib/components/map/map.component.ts +0 -57
  661. package/src/libs/ui/map/src/lib/ui-map.module.ts +0 -19
  662. /package/src/libs/feature/editor/src/lib/components/{overview-upload/overview-upload.component.css → import-record/import-record.component.css} +0 -0
  663. /package/src/libs/feature/editor/src/lib/components/{record-form/form-field/form-field-resource-updated/form-field-resource-updated.component.css → online-resource-card/online-resource-card.component.css} +0 -0
  664. /package/src/libs/feature/editor/src/lib/components/record-form/form-field/{form-field-temporal-extents/form-field-temporal-extents-date/form-field-temporal-extents-date.component.css → form-field-contacts/form-field-contacts.component.css} +0 -0
  665. /package/src/libs/feature/editor/src/lib/components/record-form/form-field/{form-field-temporal-extents/form-field-temporal-extents-range/form-field-temporal-extents-range.component.css → form-field-date-updated/form-field-date-updated.component.css} +0 -0
  666. /package/src/libs/feature/editor/src/lib/components/record-form/form-field/{form-field-resource-updated/form-field-resource-updated.component.html → form-field-date-updated/form-field-date-updated.component.html} +0 -0
  667. /package/src/libs/feature/{map/src/lib/map-container/map-container.component.css → editor/src/lib/components/record-form/form-field/form-field-online-link-resources/form-field-online-link-resources.component.css} +0 -0
  668. /package/src/libs/feature/map/src/lib/{map-context/component/map-context.component.css → map-state-container/map-state-container.component.css} +0 -0
  669. /package/src/libs/ui/{map/src/lib/components/map/map.component.css → layout/src/lib/modal-dialog/modal-dialog.component.css} +0 -0
  670. /package/src/libs/ui/{elements → layout}/src/lib/sortable-list/sortable-list.component.css +0 -0
  671. /package/src/libs/ui/map/src/lib/components/{map/map.component.html → map-container/map-container.component.html} +0 -0
@@ -0,0 +1,196 @@
1
+ import { DCAT, DCTERMS, FOAF, LOCN, RDF, SKOS, VCARD } from './namespaces';
2
+ import { findNodeLocalized } from './utils/graph-utils';
3
+ import { getAsValidUrl } from '../common/url';
4
+ import { fullNameToParts } from '../iso19139/utils/individual-name';
5
+ import { readLicenseFromString } from '../common/license';
6
+ import { matchProtocol } from '../common/distribution.mapper';
7
+ function getDataset(dataStore, recordNode) {
8
+ return (dataStore.the(recordNode, FOAF('primaryTopic'), null) ||
9
+ dataStore.the(null, RDF('type'), DCAT('Dataset')));
10
+ }
11
+ export function readUniqueIdentifier(dataStore, recordNode) {
12
+ return dataStore.the(recordNode, DCTERMS('identifier'), null)?.value;
13
+ }
14
+ export function readTitle(dataStore, recordNode) {
15
+ const dataset = getDataset(dataStore, recordNode);
16
+ return findNodeLocalized(dataStore, dataset, DCTERMS('title'), null, 'en')
17
+ ?.value;
18
+ }
19
+ export function readAbstract(dataStore, recordNode) {
20
+ const dataset = getDataset(dataStore, recordNode);
21
+ return findNodeLocalized(dataStore, dataset, DCTERMS('description'), null, 'en')?.value;
22
+ }
23
+ function mapContactFromStatement(dataStore, statement) {
24
+ const contactNode = statement.object;
25
+ const fullName = dataStore.the(contactNode, VCARD('fn'), null) ??
26
+ dataStore.the(contactNode, VCARD('title'), null) ??
27
+ dataStore.the(contactNode, VCARD('organisation-name'), null);
28
+ let firstName, lastName;
29
+ if (fullName) {
30
+ const parts = fullNameToParts(fullName.value);
31
+ firstName = parts[0];
32
+ lastName = parts[1];
33
+ }
34
+ const role = dataStore.the(contactNode, VCARD('role'), null);
35
+ const email = dataStore.the(contactNode, VCARD('hasEmail'), null);
36
+ const emailValue = email
37
+ ? email.value.replace(/^mailto:/, '')
38
+ : 'missing@missing.com';
39
+ return {
40
+ role: role?.value ?? 'point_of_contact',
41
+ email: emailValue,
42
+ ...(firstName && { firstName }),
43
+ ...(lastName && { lastName }),
44
+ };
45
+ }
46
+ export function readContacts(dataStore, recordNode) {
47
+ const statements = dataStore.statementsMatching(recordNode, DCAT('contactPoint'), null);
48
+ return statements.map((s) => mapContactFromStatement(dataStore, s));
49
+ }
50
+ export function readContactsForResource(dataStore, recordNode) {
51
+ const dataset = getDataset(dataStore, recordNode);
52
+ const statements = dataStore.statementsMatching(dataset, DCAT('contactPoint'), null);
53
+ return statements.map((s) => mapContactFromStatement(dataStore, s));
54
+ }
55
+ export function readLandingPage(dataStore, recordNode) {
56
+ const dataset = getDataset(dataStore, recordNode);
57
+ const landingPage = dataStore.the(dataset, DCAT('landingPage'), null);
58
+ return landingPage !== null ? getAsValidUrl(landingPage.value) : undefined;
59
+ }
60
+ function readOnlineLinkResource(dataStore, distributionNode) {
61
+ const accessUrl = dataStore.the(distributionNode, DCAT('accessURL'), null);
62
+ const description = findNodeLocalized(dataStore, distributionNode, DCTERMS('description'), null, 'en');
63
+ const title = findNodeLocalized(dataStore, distributionNode, DCTERMS('title'), null, 'en');
64
+ return {
65
+ url: getAsValidUrl(accessUrl?.value),
66
+ type: 'link',
67
+ ...(title && { name: title?.value }),
68
+ ...(description && { description: description?.value }),
69
+ };
70
+ }
71
+ function readDownloadDistribution(dataStore, distributionNode) {
72
+ const downloadUrl = dataStore.the(distributionNode, DCAT('downloadURL'), null);
73
+ const description = findNodeLocalized(dataStore, distributionNode, DCTERMS('description'), null, 'en');
74
+ const title = findNodeLocalized(dataStore, distributionNode, DCTERMS('title'), null, 'en');
75
+ // todo mime type
76
+ return {
77
+ url: getAsValidUrl(downloadUrl?.value),
78
+ type: 'download',
79
+ ...(title && { name: title?.value }),
80
+ ...(description && { description: description?.value }),
81
+ };
82
+ }
83
+ function readServiceDistribution(dataStore, distributionNode) {
84
+ const service = dataStore.the(distributionNode, DCAT('accessService'), null);
85
+ const conformsTo = dataStore.the(service, DCTERMS('conformsTo'), null);
86
+ const accessUrl = dataStore.the(distributionNode, DCAT('accessURL'), null);
87
+ const description = findNodeLocalized(dataStore, distributionNode, DCTERMS('description'), null, 'en');
88
+ const title = findNodeLocalized(dataStore, distributionNode, DCTERMS('title'), null, 'en');
89
+ return {
90
+ url: getAsValidUrl(accessUrl?.value),
91
+ type: 'service',
92
+ accessServiceProtocol: matchProtocol(conformsTo?.value),
93
+ ...(title && { name: title?.value }),
94
+ ...(description && { description: description?.value }),
95
+ };
96
+ }
97
+ export function mapOnlineResource(dataStore, distributionNode) {
98
+ if (dataStore.holds(distributionNode, DCAT('accessService'), null)) {
99
+ const service = dataStore.the(distributionNode, DCAT('accessService'), null);
100
+ const conformsTo = dataStore.the(service, DCTERMS('conformsTo'), null);
101
+ if (conformsTo) {
102
+ return readServiceDistribution(dataStore, distributionNode);
103
+ }
104
+ }
105
+ if (dataStore.holds(distributionNode, DCAT('downloadURL'), null)) {
106
+ return readDownloadDistribution(dataStore, distributionNode);
107
+ }
108
+ return readOnlineLinkResource(dataStore, distributionNode);
109
+ }
110
+ export function readOnlineResources(dataStore, recordNode) {
111
+ const dataset = getDataset(dataStore, recordNode);
112
+ const statements = dataStore.statementsMatching(dataset, DCAT('distribution'), null);
113
+ return statements.map((statement) => mapOnlineResource(dataStore, statement.object));
114
+ }
115
+ export function readSpatialExtents(dataStore, recordNode) {
116
+ const dataset = getDataset(dataStore, recordNode);
117
+ const statements = dataStore.statementsMatching(dataset, DCTERMS('spatial'), null);
118
+ return statements
119
+ .map((statement) => {
120
+ const geom = dataStore.the(statement.object, LOCN('geometry'), null);
121
+ if (!geom)
122
+ return {
123
+ description: statement.object.value,
124
+ };
125
+ return {
126
+ geometry: JSON.parse(geom.value),
127
+ };
128
+ })
129
+ .filter((statement) => !!statement);
130
+ }
131
+ export function readKeywords(dataStore, recordNode) {
132
+ const dataset = getDataset(dataStore, recordNode);
133
+ const statements = dataStore.statementsMatching(dataset, DCAT('keyword'), null);
134
+ return statements.map((statement) => {
135
+ return {
136
+ label: statement.object.value,
137
+ type: 'theme',
138
+ };
139
+ });
140
+ }
141
+ export function readTopics(dataStore, recordNode) {
142
+ const dataset = getDataset(dataStore, recordNode);
143
+ const statements = dataStore.statementsMatching(dataset, DCAT('theme'), null);
144
+ return statements.map((statement) => {
145
+ const prefLabel = dataStore.the(statement.object, SKOS('prefLabel'), null);
146
+ return prefLabel?.value ?? statement.object.value;
147
+ });
148
+ }
149
+ export function readRecordCreated(dataStore, recordNode) {
150
+ const dateString = dataStore.the(recordNode, DCTERMS('issued'), null)?.value;
151
+ if (dateString)
152
+ return new Date(dateString);
153
+ return null;
154
+ }
155
+ export function readRecordUpdated(dataStore, recordNode) {
156
+ const dateString = dataStore.the(recordNode, DCTERMS('modified'), null)?.value;
157
+ if (dateString)
158
+ return new Date(dateString);
159
+ return new Date(); // record updated is a mandatory field
160
+ }
161
+ export function readResourceCreated(dataStore, recordNode) {
162
+ const dataset = getDataset(dataStore, recordNode);
163
+ const dateString = dataStore.the(dataset, DCTERMS('issued'), null)?.value;
164
+ if (dateString)
165
+ return new Date(dateString);
166
+ return null;
167
+ }
168
+ export function readResourceUpdated(dataStore, recordNode) {
169
+ const dataset = getDataset(dataStore, recordNode);
170
+ const dateString = dataStore.the(dataset, DCTERMS('modified'), null)?.value;
171
+ if (dateString)
172
+ return new Date(dateString);
173
+ return null;
174
+ }
175
+ export function readOwnerOrganization(dataStore) {
176
+ const publisherStatements = dataStore.statementsMatching(null, DCTERMS('publisher'), null);
177
+ if (!publisherStatements.length)
178
+ return null;
179
+ const publisher = publisherStatements[0].object;
180
+ const nameNode = dataStore.the(publisher, FOAF('name'), null);
181
+ const name = nameNode ? nameNode.value : publisher.value;
182
+ return {
183
+ name,
184
+ };
185
+ }
186
+ export function readLicenses(dataStore, recordNode) {
187
+ const dataset = getDataset(dataStore, recordNode);
188
+ const distributions = dataStore.statementsMatching(dataset, DCAT('distribution'), null);
189
+ return distributions
190
+ .map((statement) => dataStore.the(statement.object, DCTERMS('license'), null))
191
+ .filter((license) => !!license)
192
+ .map((s) => readLicenseFromString(s.value))
193
+ .filter((license, index, array) => array.findIndex((l) => l.url?.toString() === license.url?.toString() &&
194
+ l.text === license.text) === index);
195
+ }
196
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhZC1wYXJ0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYXBpL21ldGFkYXRhLWNvbnZlcnRlci9zcmMvbGliL2RjYXQtYXAvcmVhZC1wYXJ0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBQzFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBV3ZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDN0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1DQUFtQyxDQUFBO0FBQ25FLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQ3pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQTtBQUU3RCxTQUFTLFVBQVUsQ0FBQyxTQUFnQixFQUFFLFVBQXFCO0lBQ3pELE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUUsSUFBSSxDQUFDO1FBQzNELFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBYyxDQUFBO0FBQ25FLENBQUM7QUFFRCxNQUFNLFVBQVUsb0JBQW9CLENBQ2xDLFNBQWdCLEVBQ2hCLFVBQXFCO0lBRXJCLE9BQU8sU0FBUyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLFlBQVksQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFFLEtBQUssQ0FBQTtBQUN0RSxDQUFDO0FBRUQsTUFBTSxVQUFVLFNBQVMsQ0FBQyxTQUFnQixFQUFFLFVB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LFVBQXFCO0lBQ2xFLE1BQU0sT0FBTyxHQUFHLFVBQVUsQ0FBQyxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUE7SUFDakQsTUFBTSxhQUFhLEdBQUcsU0FBUyxDQUFDLGtCQUFrQixDQUNoRCxPQUFPLEVBQ1AsSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUNwQixJQUFJLENBQ0wsQ0FBQTtJQUNELE9BQU8sYUFBYTtTQUNqQixHQUFHLENBQ0YsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUNaLFNBQVMsQ0FBQyxHQUFHLENBQ1gsU0FBUyxDQUFDLE1BQW1CLEVBQzdCLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFDbEIsSUFBSSxDQUNRLENBQ2pCO1NBQ0EsTUFBTSxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO1NBQzlCLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzFDLE1BQU0sQ0FDTCxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FDeEIsS0FBSyxDQUFDLFNBQVMsQ0FDYixDQUFDLENBQUMsRUFBRSxFQUFFLENBQ0osQ0FBQyxDQUFDLEdBQUcsRUFBRSxRQUFRLEVBQUUsS0FBSyxPQUFPLENBQUMsR0FBRyxFQUFFLFFBQVEsRUFBRTtRQUM3QyxDQUFDLENBQUMsSUFBSSxLQUFLLE9BQU8sQ0FBQyxJQUFJLENBQzFCLEtBQUssS0FBSyxDQUNkLENBQUE7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmFtZWROb2RlLCBTdGF0ZW1lbnQsIFN0b3JlIH0gZnJvbSAncmRmbGliJ1xuaW1wb3J0IHsgRENBVCwgRENURVJNUywgRk9BRiwgTE9DTiwgUkRGLCBTS09TLCBWQ0FSRCB9IGZyb20gJy4vbmFtZXNwYWNlcydcbmltcG9ydCB7IGZpbmROb2RlTG9jYWxpemVkIH0gZnJvbSAnLi91dGlscy9ncmFwaC11dGlscydcbmltcG9ydCB7XG4gIERhdGFzZXREb3dubG9hZERpc3RyaWJ1dGlvbixcbiAgRGF0YXNldFNlcnZpY2VEaXN0cmlidXRpb24sXG4gIERhdGFzZXRTcGF0aWFsRXh0ZW50LFxuICBJbmRpdmlkdWFsLFxuICBLZXl3b3JkLFxuICBPbmxpbmVMaW5rUmVzb3VyY2UsXG4gIE9ubGluZVJlc291cmNlLFxuICBPcmdhbml6YXRpb24sXG59IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL2RvbWFpbi9zcmMvbGliL21vZGVsL3JlY29yZCdcbmltcG9ydCB7IGdldEFzVmFsaWRVcmwgfSBmcm9tICcuLi9jb21tb24vdXJsJ1xuaW1wb3J0IHsgZnVsbE5hbWVUb1BhcnRzIH0gZnJvbSAnLi4vaXNvMTkxMzkvdXRpbHMvaW5kaXZpZHVhbC1uYW1lJ1xuaW1wb3J0IHsgcmVhZExpY2Vuc2VGcm9tU3RyaW5nIH0gZnJvbSAnLi4vY29tbW9uL2xpY2Vuc2UnXG5pbXBvcnQgeyBtYXRjaFByb3RvY29sIH0gZnJvbSAnLi4vY29tbW9uL2Rpc3RyaWJ1dGlvbi5tYXBwZXInXG5cbmZ1bmN0aW9uIGdldERhdGFzZXQoZGF0YVN0b3JlOiBTdG9yZSwgcmVjb3JkTm9kZTogTmFtZWROb2RlKTogTmFtZWROb2RlIHtcbiAgcmV0dXJuIChkYXRhU3RvcmUudGhlKHJlY29yZE5vZGUsIEZPQUYoJ3ByaW1hcnlUb3BpYycpLCBudWxsKSB8fFxuICAgIGRhdGFTdG9yZS50aGUobnVsbCwgUkRGKCd0eXBlJyksIERDQVQoJ0RhdGFzZXQnKSkpIGFzIE5hbWVkTm9kZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZFVuaXF1ZUlkZW50aWZpZXIoXG4gIGRhdGFTdG9yZTogU3RvcmUsXG4gIHJlY29yZE5vZGU6IE5hbWVkTm9kZVxuKTogc3RyaW5nIHtcbiAgcmV0dXJuIGRhdGFTdG9yZS50aGUocmVjb3JkTm9kZSwgRENURVJNUygnaWRlbnRpZmllcicpLCBudWxsKT8udmFsdWVcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRUaXRsZShkYXRhU3RvcmU6IFN0b3JlLCByZWNvcmROb2RlOiBOYW1lZE5vZGUpOiBzdHJpbmcge1xuICBjb25zdCBkYXRhc2V0ID0gZ2V0RGF0YXNldChkYXRhU3RvcmUsIHJlY29yZE5vZGUpXG4gIHJldHVybiBmaW5kTm9kZUxvY2FsaXplZChkYXRhU3RvcmUsIGRhdGFzZXQsIERDVEVSTVMoJ3RpdGxlJyksIG51bGwsICdlbicpXG4gICAgPy52YWx1ZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZEFic3RyYWN0KGRhdGFTdG9yZTogU3RvcmUsIHJlY29yZE5vZGU6IE5hbWVkTm9kZSk6IHN0cmluZyB7XG4gIGNvbnN0IGRhdGFzZXQgPSBnZXREYXRhc2V0KGRhdGFTdG9yZSwgcmVjb3JkTm9kZSlcbiAgcmV0dXJuIGZpbmROb2RlTG9jYWxpemVkKFxuICAgIGRhdGFTdG9yZSxcbiAgICBkYXRhc2V0LFxuICAgIERDVEVSTVMoJ2Rlc2NyaXB0aW9uJyksXG4gICAgbnVsbCxcbiAgICAnZW4nXG4gICk/LnZhbHVlXG59XG5cbmZ1bmN0aW9uIG1hcENvbnRhY3RGcm9tU3RhdGVtZW50KFxuICBkYXRhU3RvcmU6IFN0b3JlLFxuICBzdGF0ZW1lbnQ6IFN0YXRlbWVudFxuKTogSW5kaXZpZHVhbCB7XG4gIGNvbnN0IGNvbnRhY3ROb2RlID0gc3RhdGVtZW50Lm9iamVjdCBhcyBOYW1lZE5vZGVcbiAgY29uc3QgZnVsbE5hbWUgPVxuICAgIGRhdGFTdG9yZS50aGUoY29udGFjdE5vZGUsIFZDQVJEKCdmbicpLCBudWxsKSA/P1xuICAgIGRhdGFTdG9yZS50aGUoY29udGFjdE5vZGUsIFZDQVJEKCd0aXRsZScpLCBudWxsKSA/P1xuICAgIGRhdGFTdG9yZS50aGUoY29udGFjdE5vZGUsIFZDQVJEKCdvcmdhbmlzYXRpb24tbmFtZScpLCBudWxsKVxuICBsZXQgZmlyc3ROYW1lLCBsYXN0TmFtZVxuICBpZiAoZnVsbE5hbWUpIHtcbiAgICBjb25zdCBwYXJ0cyA9IGZ1bGxOYW1lVG9QYXJ0cyhmdWxsTmFtZS52YWx1ZSlcbiAgICBmaXJzdE5hbWUgPSBwYXJ0c1swXVxuICAgIGxhc3ROYW1lID0gcGFydHNbMV1cbiAgfVxuICBjb25zdCByb2xlID0gZGF0YVN0b3JlLnRoZShjb250YWN0Tm9kZSwgVkNBUkQoJ3JvbGUnKSwgbnVsbClcbiAgY29uc3QgZW1haWwgPSBkYXRhU3RvcmUudGhlKGNvbnRhY3ROb2RlLCBWQ0FSRCgnaGFzRW1haWwnKSwgbnVsbClcbiAgY29uc3QgZW1haWxWYWx1ZSA9IGVtYWlsXG4gICAgPyBlbWFpbC52YWx1ZS5yZXBsYWNlKC9ebWFpbHRvOi8sICcnKVxuICAgIDogJ21pc3NpbmdAbWlzc2luZy5jb20nXG4gIHJldHVybiB7XG4gICAgcm9sZTogcm9sZT8udmFsdWUgPz8gJ3BvaW50X29mX2NvbnRhY3QnLFxuICAgIGVtYWlsOiBlbWFpbFZhbHVlLFxuICAgIC4uLihmaXJzdE5hbWUgJiYgeyBmaXJzdE5hbWUgfSksXG4gICAgLi4uKGxhc3ROYW1lICYmIHsgbGFzdE5hbWUgfSksXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRDb250YWN0cyhcbiAgZGF0YVN0b3JlOiBTdG9yZSxcbiAgcmVjb3JkTm9kZTogTmFtZWROb2RlXG4pOiBJbmRpdmlkdWFsW10ge1xuICBjb25zdCBzdGF0ZW1lbnRzID0gZGF0YVN0b3JlLnN0YXRlbWVudHNNYXRjaGluZyhcbiAgICByZWNvcmROb2RlLFxuICAgIERDQVQoJ2NvbnRhY3RQb2ludCcpLFxuICAgIG51bGxcbiAgKVxuICByZXR1cm4gc3RhdGVtZW50cy5tYXAoKHMpID0+IG1hcENvbnRhY3RGcm9tU3RhdGVtZW50KGRhdGFTdG9yZSwgcykpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkQ29udGFjdHNGb3JSZXNvdXJjZShcbiAgZGF0YVN0b3JlOiBTdG9yZSxcbiAgcmVjb3JkTm9kZTogTmFtZWROb2RlXG4pOiBJbmRpdmlkdWFsW10ge1xuICBjb25zdCBkYXRhc2V0ID0gZ2V0RGF0YXNldChkYXRhU3RvcmUsIHJlY29yZE5vZGUpXG4gIGNvbnN0IHN0YXRlbWVudHMgPSBkYXRhU3RvcmUuc3RhdGVtZW50c01hdGNoaW5nKFxuICAgIGRhdGFzZXQsXG4gICAgRENBVCgnY29udGFjdFBvaW50JyksXG4gICAgbnVsbFxuICApXG4gIHJldHVybiBzdGF0ZW1lbnRzLm1hcCgocykgPT4gbWFwQ29udGFjdEZyb21TdGF0ZW1lbnQoZGF0YVN0b3JlLCBzKSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRMYW5kaW5nUGFnZShkYXRhU3RvcmU6IFN0b3JlLCByZWNvcmROb2RlOiBOYW1lZE5vZGUpOiBVUkwge1xuICBjb25zdCBkYXRhc2V0ID0gZ2V0RGF0YXNldChkYXRhU3RvcmUsIHJlY29yZE5vZGUpXG4gIGNvbnN0IGxhbmRpbmdQYWdlID0gZGF0YVN0b3JlLnRoZShkYXRhc2V0LCBEQ0FUKCdsYW5kaW5nUGFnZScpLCBudWxsKVxuICByZXR1cm4gbGFuZGluZ1BhZ2UgIT09IG51bGwgPyBnZXRBc1ZhbGlkVXJsKGxhbmRpbmdQYWdlLnZhbHVlKSA6IHVuZGVmaW5lZFxufVxuXG5mdW5jdGlvbiByZWFkT25saW5lTGlua1Jlc291cmNlKFxuICBkYXRhU3RvcmU6IFN0b3JlLFxuICBkaXN0cmlidXRpb25Ob2RlOiBOYW1lZE5vZGVcbik6IE9ubGluZUxpbmtSZXNvdXJjZSB7XG4gIGNvbnN0IGFjY2Vzc1VybCA9IGRhdGFTdG9yZS50aGUoZGlzdHJpYnV0aW9uTm9kZSwgRENBVCgnYWNjZXNzVVJMJyksIG51bGwpXG4gIGNvbnN0IGRlc2NyaXB0aW9uID0gZmluZE5vZGVMb2NhbGl6ZWQoXG4gICAgZGF0YVN0b3JlLFxuICAgIGRpc3RyaWJ1dGlvbk5vZGUsXG4gICAgRENURVJNUygnZGVzY3JpcHRpb24nKSxcbiAgICBudWxsLFxuICAgICdlbidcbiAgKVxuICBjb25zdCB0aXRsZSA9IGZpbmROb2RlTG9jYWxpemVkKFxuICAgIGRhdGFTdG9yZSxcbiAgICBkaXN0cmlidXRpb25Ob2RlLFxuICAgIERDVEVSTVMoJ3RpdGxlJyksXG4gICAgbnVsbCxcbiAgICAnZW4nXG4gIClcbiAgcmV0dXJuIHtcbiAgICB1cmw6IGdldEFzVmFsaWRVcmwoYWNjZXNzVXJsPy52YWx1ZSksXG4gICAgdHlwZTogJ2xpbmsnLFxuICAgIC4uLih0aXRsZSAmJiB7IG5hbWU6IHRpdGxlPy52YWx1ZSB9KSxcbiAgICAuLi4oZGVzY3JpcHRpb24gJiYgeyBkZXNjcmlwdGlvbjogZGVzY3JpcHRpb24/LnZhbHVlIH0pLFxuICB9XG59XG5cbmZ1bmN0aW9uIHJlYWREb3dubG9hZERpc3RyaWJ1dGlvbihcbiAgZGF0YVN0b3JlOiBTdG9yZSxcbiAgZGlzdHJpYnV0aW9uTm9kZTogTmFtZWROb2RlXG4pOiBEYXRhc2V0RG93bmxvYWREaXN0cmlidXRpb24ge1xuICBjb25zdCBkb3dubG9hZFVybCA9IGRhdGFTdG9yZS50aGUoZGlzdHJpYnV0aW9uTm9kZSwgRENBVCgnZG93bmxvYWRVUkwnKSwgbnVsbClcbiAgY29uc3QgZGVzY3JpcHRpb24gPSBmaW5kTm9kZUxvY2FsaXplZChcbiAgICBkYXRhU3RvcmUsXG4gICAgZGlzdHJpYnV0aW9uTm9kZSxcbiAgICBEQ1RFUk1TKCdkZXNjcmlwdGlvbicpLFxuICAgIG51bGwsXG4gICAgJ2VuJ1xuICApXG4gIGNvbnN0IHRpdGxlID0gZmluZE5vZGVMb2NhbGl6ZWQoXG4gICAgZGF0YVN0b3JlLFxuICAgIGRpc3RyaWJ1dGlvbk5vZGUsXG4gICAgRENURVJNUygndGl0bGUnKSxcbiAgICBudWxsLFxuICAgICdlbidcbiAgKVxuICAvLyB0b2RvIG1pbWUgdHlwZVxuICByZXR1cm4ge1xuICAgIHVybDogZ2V0QXNWYWxpZFVybChkb3dubG9hZFVybD8udmFsdWUpLFxuICAgIHR5cGU6ICdkb3dubG9hZCcsXG4gICAgLi4uKHRpdGxlICYmIHsgbmFtZTogdGl0bGU/LnZhbHVlIH0pLFxuICAgIC4uLihkZXNjcmlwdGlvbiAmJiB7IGRlc2NyaXB0aW9uOiBkZXNjcmlwdGlvbj8udmFsdWUgfSksXG4gIH1cbn1cblxuZnVuY3Rpb24gcmVhZFNlcnZpY2VEaXN0cmlidXRpb24oXG4gIGRhdGFTdG9yZTogU3RvcmUsXG4gIGRpc3RyaWJ1dGlvbk5vZGU6IE5hbWVkTm9kZVxuKTogRGF0YXNldFNlcnZpY2VEaXN0cmlidXRpb24ge1xuICBjb25zdCBzZXJ2aWNlID0gZGF0YVN0b3JlLnRoZShcbiAgICBkaXN0cmlidXRpb25Ob2RlLFxuICAgIERDQVQoJ2FjY2Vzc1NlcnZpY2UnKSxcbiAgICBudWxsXG4gICkgYXMgTmFtZWROb2RlXG4gIGNvbnN0IGNvbmZvcm1zVG8gPSBkYXRhU3RvcmUudGhlKHNlcnZpY2UsIERDVEVSTVMoJ2NvbmZvcm1zVG8nKSwgbnVsbClcbiAgY29uc3QgYWNjZXNzVXJsID0gZGF0YVN0b3JlLnRoZShkaXN0cmlidXRpb25Ob2RlLCBEQ0FUKCdhY2Nlc3NVUkwnKSwgbnVsbClcbiAgY29uc3QgZGVzY3JpcHRpb24gPSBmaW5kTm9kZUxvY2FsaXplZChcbiAgICBkYXRhU3RvcmUsXG4gICAgZGlzdHJpYnV0aW9uTm9kZSxcbiAgICBEQ1RFUk1TKCdkZXNjcmlwdGlvbicpLFxuICAgIG51bGwsXG4gICAgJ2VuJ1xuICApXG4gIGNvbnN0IHRpdGxlID0gZmluZE5vZGVMb2NhbGl6ZWQoXG4gICAgZGF0YVN0b3JlLFxuICAgIGRpc3RyaWJ1dGlvbk5vZGUsXG4gICAgRENURVJNUygndGl0bGUnKSxcbiAgICBudWxsLFxuICAgICdlbidcbiAgKVxuICByZXR1cm4ge1xuICAgIHVybDogZ2V0QXNWYWxpZFVybChhY2Nlc3NVcmw/LnZhbHVlKSxcbiAgICB0eXBlOiAnc2VydmljZScsXG4gICAgYWNjZXNzU2VydmljZVByb3RvY29sOiBtYXRjaFByb3RvY29sKGNvbmZvcm1zVG8/LnZhbHVlKSxcbiAgICAuLi4odGl0bGUgJiYgeyBuYW1lOiB0aXRsZT8udmFsdWUgfSksXG4gICAgLi4uKGRlc2NyaXB0aW9uICYmIHsgZGVzY3JpcHRpb246IGRlc2NyaXB0aW9uPy52YWx1ZSB9KSxcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbWFwT25saW5lUmVzb3VyY2UoXG4gIGRhdGFTdG9yZTogU3RvcmUsXG4gIGRpc3RyaWJ1dGlvbk5vZGU6IE5hbWVkTm9kZVxuKTogT25saW5lUmVzb3VyY2Uge1xuICBpZiAoZGF0YVN0b3JlLmhvbGRzKGRpc3RyaWJ1dGlvbk5vZGUsIERDQVQoJ2FjY2Vzc1NlcnZpY2UnKSwgbnVsbCkpIHtcbiAgICBjb25zdCBzZXJ2aWNlID0gZGF0YVN0b3JlLnRoZShcbiAgICAgIGRpc3RyaWJ1dGlvbk5vZGUsXG4gICAgICBEQ0FUKCdhY2Nlc3NTZXJ2aWNlJyksXG4gICAgICBudWxsXG4gICAgKSBhcyBOYW1lZE5vZGVcbiAgICBjb25zdCBjb25mb3Jtc1RvID0gZGF0YVN0b3JlLnRoZShzZXJ2aWNlLCBEQ1RFUk1TKCdjb25mb3Jtc1RvJyksIG51bGwpXG4gICAgaWYgKGNvbmZvcm1zVG8pIHtcbiAgICAgIHJldHVybiByZWFkU2VydmljZURpc3RyaWJ1dGlvbihkYXRhU3RvcmUsIGRpc3RyaWJ1dGlvbk5vZGUpXG4gICAgfVxuICB9XG4gIGlmIChkYXRhU3RvcmUuaG9sZHMoZGlzdHJpYnV0aW9uTm9kZSwgRENBVCgnZG93bmxvYWRVUkwnKSwgbnVsbCkpIHtcbiAgICByZXR1cm4gcmVhZERvd25sb2FkRGlzdHJpYnV0aW9uKGRhdGFTdG9yZSwgZGlzdHJpYnV0aW9uTm9kZSlcbiAgfVxuICByZXR1cm4gcmVhZE9ubGluZUxpbmtSZXNvdXJjZShkYXRhU3RvcmUsIGRpc3RyaWJ1dGlvbk5vZGUpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkT25saW5lUmVzb3VyY2VzKFxuICBkYXRhU3RvcmU6IFN0b3JlLFxuICByZWNvcmROb2RlOiBOYW1lZE5vZGVcbik6IE9ubGluZVJlc291cmNlW10ge1xuICBjb25zdCBkYXRhc2V0ID0gZ2V0RGF0YXNldChkYXRhU3RvcmUsIHJlY29yZE5vZGUpXG4gIGNvbnN0IHN0YXRlbWVudHMgPSBkYXRhU3RvcmUuc3RhdGVtZW50c01hdGNoaW5nKFxuICAgIGRhdGFzZXQsXG4gICAgRENBVCgnZGlzdHJpYnV0aW9uJyksXG4gICAgbnVsbFxuICApXG4gIHJldHVybiBzdGF0ZW1lbnRzLm1hcCgoc3RhdGVtZW50KSA9PlxuICAgIG1hcE9ubGluZVJlc291cmNlKGRhdGFTdG9yZSwgc3RhdGVtZW50Lm9iamVjdCBhcyBOYW1lZE5vZGUpXG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRTcGF0aWFsRXh0ZW50cyhcbiAgZGF0YVN0b3JlOiBTdG9yZSxcbiAgcmVjb3JkTm9kZTogTmFtZWROb2RlXG4pOiBEYXRhc2V0U3BhdGlhbEV4dGVudFtdIHtcbiAgY29uc3QgZGF0YXNldCA9IGdldERhdGFzZXQoZGF0YVN0b3JlLCByZWNvcmROb2RlKVxuICBjb25zdCBzdGF0ZW1lbnRzID0gZGF0YVN0b3JlLnN0YXRlbWVudHNNYXRjaGluZyhcbiAgICBkYXRhc2V0LFxuICAgIERDVEVSTVMoJ3NwYXRpYWwnKSxcbiAgICBudWxsXG4gIClcbiAgcmV0dXJuIHN0YXRlbWVudHNcbiAgICAubWFwKChzdGF0ZW1lbnQpID0+IHtcbiAgICAgIGNvbnN0IGdlb20gPSBkYXRhU3RvcmUudGhlKFxuICAgICAgICBzdGF0ZW1lbnQub2JqZWN0IGFzIE5hbWVkTm9kZSxcbiAgICAgICAgTE9DTignZ2VvbWV0cnknKSxcbiAgICAgICAgbnVsbFxuICAgICAgKVxuICAgICAgaWYgKCFnZW9tKVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGRlc2NyaXB0aW9uOiBzdGF0ZW1lbnQub2JqZWN0LnZhbHVlLFxuICAgICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICBnZW9tZXRyeTogSlNPTi5wYXJzZShnZW9tLnZhbHVlKSxcbiAgICAgIH1cbiAgICB9KVxuICAgIC5maWx0ZXIoKHN0YXRlbWVudCkgPT4gISFzdGF0ZW1lbnQpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkS2V5d29yZHMoXG4gIGRhdGFTdG9yZTogU3RvcmUsXG4gIHJlY29yZE5vZGU6IE5hbWVkTm9kZVxuKTogS2V5d29yZFtdIHtcbiAgY29uc3QgZGF0YXNldCA9IGdldERhdGFzZXQoZGF0YVN0b3JlLCByZWNvcmROb2RlKVxuICBjb25zdCBzdGF0ZW1lbnRzID0gZGF0YVN0b3JlLnN0YXRlbWVudHNNYXRjaGluZyhcbiAgICBkYXRhc2V0LFxuICAgIERDQVQoJ2tleXdvcmQnKSxcbiAgICBudWxsXG4gIClcbiAgcmV0dXJuIHN0YXRlbWVudHMubWFwKChzdGF0ZW1lbnQpID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgbGFiZWw6IHN0YXRlbWVudC5vYmplY3QudmFsdWUsXG4gICAgICB0eXBlOiAndGhlbWUnLFxuICAgIH1cbiAgfSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRUb3BpY3MoZGF0YVN0b3JlOiBTdG9yZSwgcmVjb3JkTm9kZTogTmFtZWROb2RlKTogc3RyaW5nW10ge1xuICBjb25zdCBkYXRhc2V0ID0gZ2V0RGF0YXNldChkYXRhU3RvcmUsIHJlY29yZE5vZGUpXG4gIGNvbnN0IHN0YXRlbWVudHMgPSBkYXRhU3RvcmUuc3RhdGVtZW50c01hdGNoaW5nKGRhdGFzZXQsIERDQVQoJ3RoZW1lJyksIG51bGwpXG4gIHJldHVybiBzdGF0ZW1lbnRzLm1hcCgoc3RhdGVtZW50KSA9PiB7XG4gICAgY29uc3QgcHJlZkxhYmVsID0gZGF0YVN0b3JlLnRoZShcbiAgICAgIHN0YXRlbWVudC5vYmplY3QgYXMgTmFtZWROb2RlLFxuICAgICAgU0tPUygncHJlZkxhYmVsJyksXG4gICAgICBudWxsXG4gICAgKVxuICAgIHJldHVybiBwcmVmTGFiZWw/LnZhbHVlID8/IHN0YXRlbWVudC5vYmplY3QudmFsdWVcbiAgfSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRSZWNvcmRDcmVhdGVkKFxuICBkYXRhU3RvcmU6IFN0b3JlLFxuICByZWNvcmROb2RlOiBOYW1lZE5vZGVcbik6IERhdGUge1xuICBjb25zdCBkYXRlU3RyaW5nID0gZGF0YVN0b3JlLnRoZShyZWNvcmROb2RlLCBEQ1RFUk1TKCdpc3N1ZWQnKSwgbnVsbCk/LnZhbHVlXG4gIGlmIChkYXRlU3RyaW5nKSByZXR1cm4gbmV3IERhdGUoZGF0ZVN0cmluZylcbiAgcmV0dXJuIG51bGxcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRSZWNvcmRVcGRhdGVkKFxuICBkYXRhU3RvcmU6IFN0b3JlLFxuICByZWNvcmROb2RlOiBOYW1lZE5vZGVcbik6IERhdGUge1xuICBjb25zdCBkYXRlU3RyaW5nID0gZGF0YVN0b3JlLnRoZShyZWNvcmROb2RlLCBEQ1RFUk1TKCdtb2RpZmllZCcpLCBudWxsKT8udmFsdWVcbiAgaWYgKGRhdGVTdHJpbmcpIHJldHVybiBuZXcgRGF0ZShkYXRlU3RyaW5nKVxuICByZXR1cm4gbmV3IERhdGUoKSAvLyByZWNvcmQgdXBkYXRlZCBpcyBhIG1hbmRhdG9yeSBmaWVsZFxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZFJlc291cmNlQ3JlYXRlZChcbiAgZGF0YVN0b3JlOiBTdG9yZSxcbiAgcmVjb3JkTm9kZTogTmFtZWROb2RlXG4pOiBEYXRlIHtcbiAgY29uc3QgZGF0YXNldCA9IGdldERhdGFzZXQoZGF0YVN0b3JlLCByZWNvcmROb2RlKVxuICBjb25zdCBkYXRlU3RyaW5nID0gZGF0YVN0b3JlLnRoZShkYXRhc2V0LCBEQ1RFUk1TKCdpc3N1ZWQnKSwgbnVsbCk/LnZhbHVlXG4gIGlmIChkYXRlU3RyaW5nKSByZXR1cm4gbmV3IERhdGUoZGF0ZVN0cmluZylcbiAgcmV0dXJuIG51bGxcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRSZXNvdXJjZVVwZGF0ZWQoXG4gIGRhdGFTdG9yZTogU3RvcmUsXG4gIHJlY29yZE5vZGU6IE5hbWVkTm9kZVxuKTogRGF0ZSB7XG4gIGNvbnN0IGRhdGFzZXQgPSBnZXREYXRhc2V0KGRhdGFTdG9yZSwgcmVjb3JkTm9kZSlcbiAgY29uc3QgZGF0ZVN0cmluZyA9IGRhdGFTdG9yZS50aGUoZGF0YXNldCwgRENURVJNUygnbW9kaWZpZWQnKSwgbnVsbCk/LnZhbHVlXG4gIGlmIChkYXRlU3RyaW5nKSByZXR1cm4gbmV3IERhdGUoZGF0ZVN0cmluZylcbiAgcmV0dXJuIG51bGxcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRPd25lck9yZ2FuaXphdGlvbihkYXRhU3RvcmU6IFN0b3JlKTogT3JnYW5pemF0aW9uIHtcbiAgY29uc3QgcHVibGlzaGVyU3RhdGVtZW50cyA9IGRhdGFTdG9yZS5zdGF0ZW1lbnRzTWF0Y2hpbmcoXG4gICAgbnVsbCxcbiAgICBEQ1RFUk1TKCdwdWJsaXNoZXInKSxcbiAgICBudWxsXG4gIClcbiAgaWYgKCFwdWJsaXNoZXJTdGF0ZW1lbnRzLmxlbmd0aCkgcmV0dXJuIG51bGxcbiAgY29uc3QgcHVibGlzaGVyID0gcHVibGlzaGVyU3RhdGVtZW50c1swXS5vYmplY3QgYXMgTmFtZWROb2RlXG4gIGNvbnN0IG5hbWVOb2RlID0gZGF0YVN0b3JlLnRoZShwdWJsaXNoZXIsIEZPQUYoJ25hbWUnKSwgbnVsbClcbiAgY29uc3QgbmFtZSA9IG5hbWVOb2RlID8gbmFtZU5vZGUudmFsdWUgOiBwdWJsaXNoZXIudmFsdWVcbiAgcmV0dXJuIHtcbiAgICBuYW1lLFxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkTGljZW5zZXMoZGF0YVN0b3JlOiBTdG9yZSwgcmVjb3JkTm9kZTogTmFtZWROb2RlKSB7XG4gIGNvbnN0IGRhdGFzZXQgPSBnZXREYXRhc2V0KGRhdGFTdG9yZSwgcmVjb3JkTm9kZSlcbiAgY29uc3QgZGlzdHJpYnV0aW9ucyA9IGRhdGFTdG9yZS5zdGF0ZW1lbnRzTWF0Y2hpbmcoXG4gICAgZGF0YXNldCxcbiAgICBEQ0FUKCdkaXN0cmlidXRpb24nKSxcbiAgICBudWxsXG4gIClcbiAgcmV0dXJuIGRpc3RyaWJ1dGlvbnNcbiAgICAubWFwKFxuICAgICAgKHN0YXRlbWVudCkgPT5cbiAgICAgICAgZGF0YVN0b3JlLnRoZShcbiAgICAgICAgICBzdGF0ZW1lbnQub2JqZWN0IGFzIE5hbWVkTm9kZSxcbiAgICAgICAgICBEQ1RFUk1TKCdsaWNlbnNlJyksXG4gICAgICAgICAgbnVsbFxuICAgICAgICApIGFzIE5hbWVkTm9kZVxuICAgIClcbiAgICAuZmlsdGVyKChsaWNlbnNlKSA9PiAhIWxpY2Vuc2UpXG4gICAgLm1hcCgocykgPT4gcmVhZExpY2Vuc2VGcm9tU3RyaW5nKHMudmFsdWUpKVxuICAgIC5maWx0ZXIoXG4gICAgICAobGljZW5zZSwgaW5kZXgsIGFycmF5KSA9PlxuICAgICAgICBhcnJheS5maW5kSW5kZXgoXG4gICAgICAgICAgKGwpID0+XG4gICAgICAgICAgICBsLnVybD8udG9TdHJpbmcoKSA9PT0gbGljZW5zZS51cmw/LnRvU3RyaW5nKCkgJiZcbiAgICAgICAgICAgIGwudGV4dCA9PT0gbGljZW5zZS50ZXh0XG4gICAgICAgICkgPT09IGluZGV4XG4gICAgKVxufVxuIl19
@@ -0,0 +1,46 @@
1
+ import { lit, Literal, parse } from 'rdflib';
2
+ import { BASE_URI } from './uri';
3
+ export function findNodeLocalized(dataStore, subject, predicate, object, language) {
4
+ const literals = dataStore
5
+ .each(subject, predicate, object)
6
+ .filter((node) => node instanceof Literal);
7
+ const matchingLang = literals.find((node) => node.language.startsWith(language));
8
+ const noLang = literals.find((node) => !node.language);
9
+ const anyLang = literals[0];
10
+ return matchingLang ?? noLang ?? anyLang;
11
+ }
12
+ export function getOrAddStatement(dataStore, subject, predicate, object) {
13
+ let statement = dataStore.statementsMatching(subject, predicate, typeof object === 'string' ? null : object)[0];
14
+ if (!statement) {
15
+ statement = dataStore.add(subject, predicate, object);
16
+ }
17
+ return statement;
18
+ }
19
+ export function getOrAddLiteral(dataStore, subject, predicate, objectValue) {
20
+ let statement = dataStore.statementsMatching(subject, predicate, null)[0];
21
+ if (!statement) {
22
+ statement = dataStore.add(subject, predicate, lit(objectValue));
23
+ }
24
+ else {
25
+ statement.object = lit(objectValue);
26
+ }
27
+ return statement;
28
+ }
29
+ export function getOrAddLocalizedLiteral(dataStore, subject, predicate, objectValue, language) {
30
+ const statements = dataStore.statementsMatching(subject, predicate, null);
31
+ const withMatchingLanguage = statements.filter((statement) => statement.object instanceof Literal &&
32
+ statement.object.language.startsWith(language));
33
+ const withNoLanguage = statements.filter((statement) => statement.object instanceof Literal && !statement.object.language);
34
+ let statement = withMatchingLanguage[0] || withNoLanguage[0];
35
+ if (!statement) {
36
+ statement = dataStore.add(subject, predicate, lit(objectValue, language));
37
+ }
38
+ else {
39
+ statement.object = lit(objectValue, language);
40
+ }
41
+ return statement;
42
+ }
43
+ export function loadGraph(dataStore, document, contentType, base = BASE_URI) {
44
+ return new Promise((resolve) => parse(document, dataStore, base, contentType, resolve));
45
+ }
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhcGgtdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FwaS9tZXRhZGF0YS1jb252ZXJ0ZXIvc3JjL2xpYi9kY2F0LWFwL3V0aWxzL2dyYXBoLXV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFRLEtBQUssRUFBb0IsTUFBTSxRQUFRLENBQUE7QUFHcEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLE9BQU8sQ0FBQTtBQUVoQyxNQUFNLFVBQVUsaUJBQWlCLENBQy9CLFNBQWdCLEVBQ2hCLE9BQXFCLEVBQ3JCLFNBQXlCLEVBQ3pCLE1BQW1CLEVBQ25CLFFBQWdCO0lBRWhCLE1BQU0sUUFBUSxHQUFHLFNBQVM7U0FDdkIsSUFBSSxDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxDQUFDO1NBQ2hDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBbUIsRUFBRSxDQUFDLElBQUksWUFBWSxPQUFPLENBQUMsQ0FBQTtJQUM3RCxNQUFNLFlBQVksR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FDMUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQ25DLENBQUE7SUFDRCxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUN0RCxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDM0IsT0FBTyxZQUFZLElBQUksTUFBTSxJQUFJLE9BQU8sQ0FBQTtBQUMxQyxDQUFDO0FBRUQsTUFBTSxVQUFVLGlCQUFpQixDQUMvQixTQUFnQixFQUNoQixPQUFxQixFQUNyQixTQUF5QixFQUN6QixNQUE0QjtJQUU1QixJQUFJLFNBQVMsR0FBRyxTQUFTLENBQUMsa0JBQWtCLENBQzFDLE9BQU8sRUFDUCxTQUFTLEVBQ1QsT0FBTyxNQUFNLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FDM0MsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUNKLElBQUksQ0FBQyxTQUFTLEVBQUU7UUFDZCxTQUFTLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sQ0FBYyxDQUFBO0tBQ25FO0lBQ0QsT0FBTyxTQUFTLENBQUE7QUFDbEIsQ0FBQztBQUVELE1BQU0sVUFBVSxlQUFlLENBQzdCLFNBQWdCLEVBQ2hCLE9BQXFCLEVBQ3JCLFNBQXlCLEVBQ3pCLFdBQW1CO0lBRW5CLElBQUksU0FBUyxHQUFHLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ3pFLElBQUksQ0FBQyxTQUFTLEVBQUU7UUFDZCxTQUFTLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBYyxDQUFBO0tBQzdFO1NBQU07UUFDTCxTQUFTLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQTtLQUNwQztJQUNELE9BQU8sU0FBUyxDQUFBO0FBQ2xCLENBQUM7QUFFRCxNQUFNLFVBQVUsd0JBQXdCLENBQ3RDLFNBQWdCLEVBQ2hCLE9BQXFCLEVBQ3JCLFNBQXlCLEVBQ3pCLFdBQW1CLEVBQ25CLFFBQWdCO0lBRWhCLE1BQU0sVUFBVSxHQUFHLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFBO0lBQ3pFLE1BQU0sb0JBQW9CLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FDNUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUNaLFNBQVMsQ0FBQyxNQUFNLFlBQVksT0FBTztRQUNuQyxTQUFTLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQ2pELENBQUE7SUFDRCxNQUFNLGNBQWMsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUN0QyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQ1osU0FBUyxDQUFDLE1BQU0sWUFBWSxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FDcEUsQ0FBQTtJQUNELElBQUksU0FBUyxHQUFHLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxJQUFJLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUM1RCxJQUFJLENBQUMsU0FBUyxFQUFFO1FBQ2QsU0FBUyxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQ3ZCLE9BQU8sRUFDUCxTQUFTLEVBQ1QsR0FBRyxDQUFDLFdBQVcsRUFBRSxRQUFRLENBQUMsQ0FDZCxDQUFBO0tBQ2Y7U0FBTTtRQUNMLFNBQVMsQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDLFdBQVcsRUFBRSxRQUFRLENBQUMsQ0FBQTtLQUM5QztJQUNELE9BQU8sU0FBUyxDQUFBO0FBQ2xCLENBQUM7QUFFRCxNQUFNLFVBQVUsU0FBUyxDQUN2QixTQUFnQixFQUNoQixRQUFnQixFQUNoQixXQUF3QixFQUN4QixJQUFJLEdBQUcsUUFBUTtJQUVmLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUM3QixLQUFLLENBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLE9BQU8sQ0FBQyxDQUN2RCxDQUFBO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGxpdCwgTGl0ZXJhbCwgTm9kZSwgcGFyc2UsIFN0YXRlbWVudCwgU3RvcmUgfSBmcm9tICdyZGZsaWInXG5pbXBvcnQgeyBRdWFkX09iamVjdCwgUXVhZF9QcmVkaWNhdGUsIFF1YWRfU3ViamVjdCB9IGZyb20gJ3JkZmxpYi9saWIvdGYtdHlwZXMnXG5pbXBvcnQgeyBDb250ZW50VHlwZSB9IGZyb20gJ3JkZmxpYi9saWIvdHlwZXMnXG5pbXBvcnQgeyBCQVNFX1VSSSB9IGZyb20gJy4vdXJpJ1xuXG5leHBvcnQgZnVuY3Rpb24gZmluZE5vZGVMb2NhbGl6ZWQoXG4gIGRhdGFTdG9yZTogU3RvcmUsXG4gIHN1YmplY3Q6IFF1YWRfU3ViamVjdCxcbiAgcHJlZGljYXRlOiBRdWFkX1ByZWRpY2F0ZSxcbiAgb2JqZWN0OiBRdWFkX09iamVjdCxcbiAgbGFuZ3VhZ2U6IHN0cmluZ1xuKTogTm9kZSB8IG51bGwge1xuICBjb25zdCBsaXRlcmFscyA9IGRhdGFTdG9yZVxuICAgIC5lYWNoKHN1YmplY3QsIHByZWRpY2F0ZSwgb2JqZWN0KVxuICAgIC5maWx0ZXIoKG5vZGUpOiBub2RlIGlzIExpdGVyYWwgPT4gbm9kZSBpbnN0YW5jZW9mIExpdGVyYWwpXG4gIGNvbnN0IG1hdGNoaW5nTGFuZyA9IGxpdGVyYWxzLmZpbmQoKG5vZGUpID0+XG4gICAgbm9kZS5sYW5ndWFnZS5zdGFydHNXaXRoKGxhbmd1YWdlKVxuICApXG4gIGNvbnN0IG5vTGFuZyA9IGxpdGVyYWxzLmZpbmQoKG5vZGUpID0+ICFub2RlLmxhbmd1YWdlKVxuICBjb25zdCBhbnlMYW5nID0gbGl0ZXJhbHNbMF1cbiAgcmV0dXJuIG1hdGNoaW5nTGFuZyA/PyBub0xhbmcgPz8gYW55TGFuZ1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0T3JBZGRTdGF0ZW1lbnQoXG4gIGRhdGFTdG9yZTogU3RvcmUsXG4gIHN1YmplY3Q6IFF1YWRfU3ViamVjdCxcbiAgcHJlZGljYXRlOiBRdWFkX1ByZWRpY2F0ZSxcbiAgb2JqZWN0OiBRdWFkX09iamVjdCB8IHN0cmluZ1xuKTogU3RhdGVtZW50IHtcbiAgbGV0IHN0YXRlbWVudCA9IGRhdGFTdG9yZS5zdGF0ZW1lbnRzTWF0Y2hpbmcoXG4gICAgc3ViamVjdCxcbiAgICBwcmVkaWNhdGUsXG4gICAgdHlwZW9mIG9iamVjdCA9PT0gJ3N0cmluZycgPyBudWxsIDogb2JqZWN0XG4gIClbMF1cbiAgaWYgKCFzdGF0ZW1lbnQpIHtcbiAgICBzdGF0ZW1lbnQgPSBkYXRhU3RvcmUuYWRkKHN1YmplY3QsIHByZWRpY2F0ZSwgb2JqZWN0KSBhcyBTdGF0ZW1lbnRcbiAgfVxuICByZXR1cm4gc3RhdGVtZW50XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRPckFkZExpdGVyYWwoXG4gIGRhdGFTdG9yZTogU3RvcmUsXG4gIHN1YmplY3Q6IFF1YWRfU3ViamVjdCxcbiAgcHJlZGljYXRlOiBRdWFkX1ByZWRpY2F0ZSxcbiAgb2JqZWN0VmFsdWU6IHN0cmluZ1xuKSB7XG4gIGxldCBzdGF0ZW1lbnQgPSBkYXRhU3RvcmUuc3RhdGVtZW50c01hdGNoaW5nKHN1YmplY3QsIHByZWRpY2F0ZSwgbnVsbClbMF1cbiAgaWYgKCFzdGF0ZW1lbnQpIHtcbiAgICBzdGF0ZW1lbnQgPSBkYXRhU3RvcmUuYWRkKHN1YmplY3QsIHByZWRpY2F0ZSwgbGl0KG9iamVjdFZhbHVlKSkgYXMgU3RhdGVtZW50XG4gIH0gZWxzZSB7XG4gICAgc3RhdGVtZW50Lm9iamVjdCA9IGxpdChvYmplY3RWYWx1ZSlcbiAgfVxuICByZXR1cm4gc3RhdGVtZW50XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRPckFkZExvY2FsaXplZExpdGVyYWwoXG4gIGRhdGFTdG9yZTogU3RvcmUsXG4gIHN1YmplY3Q6IFF1YWRfU3ViamVjdCxcbiAgcHJlZGljYXRlOiBRdWFkX1ByZWRpY2F0ZSxcbiAgb2JqZWN0VmFsdWU6IHN0cmluZyxcbiAgbGFuZ3VhZ2U6IHN0cmluZ1xuKSB7XG4gIGNvbnN0IHN0YXRlbWVudHMgPSBkYXRhU3RvcmUuc3RhdGVtZW50c01hdGNoaW5nKHN1YmplY3QsIHByZWRpY2F0ZSwgbnVsbClcbiAgY29uc3Qgd2l0aE1hdGNoaW5nTGFuZ3VhZ2UgPSBzdGF0ZW1lbnRzLmZpbHRlcihcbiAgICAoc3RhdGVtZW50KSA9PlxuICAgICAgc3RhdGVtZW50Lm9iamVjdCBpbnN0YW5jZW9mIExpdGVyYWwgJiZcbiAgICAgIHN0YXRlbWVudC5vYmplY3QubGFuZ3VhZ2Uuc3RhcnRzV2l0aChsYW5ndWFnZSlcbiAgKVxuICBjb25zdCB3aXRoTm9MYW5ndWFnZSA9IHN0YXRlbWVudHMuZmlsdGVyKFxuICAgIChzdGF0ZW1lbnQpID0+XG4gICAgICBzdGF0ZW1lbnQub2JqZWN0IGluc3RhbmNlb2YgTGl0ZXJhbCAmJiAhc3RhdGVtZW50Lm9iamVjdC5sYW5ndWFnZVxuICApXG4gIGxldCBzdGF0ZW1lbnQgPSB3aXRoTWF0Y2hpbmdMYW5ndWFnZVswXSB8fCB3aXRoTm9MYW5ndWFnZVswXVxuICBpZiAoIXN0YXRlbWVudCkge1xuICAgIHN0YXRlbWVudCA9IGRhdGFTdG9yZS5hZGQoXG4gICAgICBzdWJqZWN0LFxuICAgICAgcHJlZGljYXRlLFxuICAgICAgbGl0KG9iamVjdFZhbHVlLCBsYW5ndWFnZSlcbiAgICApIGFzIFN0YXRlbWVudFxuICB9IGVsc2Uge1xuICAgIHN0YXRlbWVudC5vYmplY3QgPSBsaXQob2JqZWN0VmFsdWUsIGxhbmd1YWdlKVxuICB9XG4gIHJldHVybiBzdGF0ZW1lbnRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxvYWRHcmFwaChcbiAgZGF0YVN0b3JlOiBTdG9yZSxcbiAgZG9jdW1lbnQ6IHN0cmluZyxcbiAgY29udGVudFR5cGU6IENvbnRlbnRUeXBlLFxuICBiYXNlID0gQkFTRV9VUklcbikge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+XG4gICAgcGFyc2UoZG9jdW1lbnQsIGRhdGFTdG9yZSwgYmFzZSwgY29udGVudFR5cGUsIHJlc29sdmUpXG4gIClcbn1cbiJdfQ==
@@ -0,0 +1,74 @@
1
+ import { BlankNode, Literal, sym } from 'rdflib';
2
+ import { XmlElement, XmlText } from '@rgrove/parse-xml';
3
+ import { DCAT, FOAF, RDF } from '../namespaces';
4
+ import { createDocument, NAMESPACES, xmlToString } from '../../xml-utils';
5
+ import { BASE_URI } from './uri';
6
+ function fullNameToXml(fullName) {
7
+ for (const key in NAMESPACES) {
8
+ if (fullName.startsWith(NAMESPACES[key])) {
9
+ return [key, fullName.replace(NAMESPACES[key], '')];
10
+ }
11
+ }
12
+ return [null, fullName];
13
+ }
14
+ function createXmlElementFromNode(dataStore, node) {
15
+ if (node instanceof Literal) {
16
+ return new XmlText(node.value);
17
+ }
18
+ const type = dataStore.the(node, RDF('type'));
19
+ if (!type)
20
+ return null;
21
+ const statements = dataStore.statementsMatching(node, null, null);
22
+ const children = statements
23
+ // filtering out the rdf:type statements because they are already used above
24
+ .filter((statement) => statement.predicate.value !== RDF('type').value)
25
+ .map((statement) => {
26
+ if (statement.object.toString() === statement.subject.toString()) {
27
+ return null;
28
+ }
29
+ // special cases: foaf:primaryTopic in dcat:CatalogRecord
30
+ if (statement.predicate.value === FOAF('primaryTopic').value) {
31
+ return new XmlElement(`foaf:primaryTopic`, {
32
+ 'rdf:resource': statement.object.value,
33
+ });
34
+ }
35
+ const [namespace, name] = fullNameToXml(statement.predicate.value);
36
+ const objectNode = createXmlElementFromNode(dataStore, statement.object);
37
+ if (!objectNode) {
38
+ // no object node: simply use the object value
39
+ return new XmlElement(`${namespace}:${name}`, {
40
+ 'rdf:resource': statement.object.value,
41
+ }, []);
42
+ }
43
+ // wrap the object node in the predicate one
44
+ return new XmlElement(`${namespace}:${name}`, {}, [objectNode]);
45
+ })
46
+ .filter((child) => !!child);
47
+ const [namespace, name] = fullNameToXml(type.value);
48
+ const attributes = node instanceof BlankNode
49
+ ? {}
50
+ : {
51
+ 'rdf:about': node.value,
52
+ };
53
+ return new XmlElement(`${namespace}:${name}`, attributes, children);
54
+ }
55
+ /**
56
+ * This will output an XML document serialized as string, tailored in a way that it
57
+ * can be understood and indexed by GN4 dcat-ap plugin
58
+ * @param dataStore
59
+ */
60
+ export function exportGraphToXml(dataStore) {
61
+ // we start with the catalog node (which is created if missing)
62
+ let catalogNode = dataStore.statementsMatching(null, RDF('type'), DCAT('Catalog'))[0]?.subject;
63
+ if (!catalogNode) {
64
+ const recordNode = dataStore.the(null, RDF('type'), DCAT('CatalogRecord'));
65
+ const statement = dataStore.add(sym(`${BASE_URI}catalog`), RDF('type'), DCAT('Catalog'));
66
+ catalogNode = statement.subject;
67
+ dataStore.add(catalogNode, DCAT('record'), recordNode);
68
+ }
69
+ const rootEl = new XmlElement('rdf:RDF', {}, [
70
+ createXmlElementFromNode(dataStore, catalogNode),
71
+ ]);
72
+ return xmlToString(createDocument(rootEl));
73
+ }
74
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VyaWFsaXplLXRvLXhtbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYXBpL21ldGFkYXRhLWNvbnZlcnRlci9zcmMvbGliL2RjYXQtYXAvdXRpbHMvc2VyaWFsaXplLXRvLXhtbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBK0IsR0FBRyxFQUFFLE1BQU0sUUFBUSxDQUFBO0FBQzdFLE9BQU8sRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDdkQsT0FBTyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQy9DLE9BQU8sRUFBRSxjQUFjLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQ3pFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxPQUFPLENBQUE7QUFFaEMsU0FBUyxhQUFhLENBQUMsUUFBZ0I7SUFDckMsS0FBSyxNQUFNLEdBQUcsSUFBSSxVQUFVLEVBQUU7UUFDNUIsSUFBSSxRQUFRLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO1lBQ3hDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQTtTQUNwRDtLQUNGO0lBQ0QsT0FBTyxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQTtBQUN6QixDQUFDO0FBRUQsU0FBUyx3QkFBd0IsQ0FDL0IsU0FBZ0IsRUFDaEIsSUFBeUI7SUFFekIsSUFBSSxJQUFJLFlBQVksT0FBTyxFQUFFO1FBQzNCLE9BQU8sSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO0tBQy9CO0lBQ0QsTUFBTSxJQUFJLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFjLENBQUE7SUFDMUQsSUFBSSxDQUFDLElBQUk7UUFBRSxPQUFPLElBQUksQ0FBQTtJQUV0QixNQUFNLFVBQVUsR0FBRyxTQUFTLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQTtJQUNqRSxNQUFNLFFBQVEsR0FBRyxVQUFVO1FBQ3pCLDRFQUE0RTtTQUMzRSxNQUFNLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsS0FBSyxLQUFLLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUM7U0FDdEUsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7UUFDakIsSUFBSSxTQUFTLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxLQUFLLFNBQVMsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDaEUsT0FBTyxJQUFJLENBQUE7U0FDWjtRQUVELHlEQUF5RDtRQUN6RCxJQUFJLFNBQVMsQ0FBQyxTQUFTLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxLQUFLLEVBQUU7WUFDNUQsT0FBTyxJQUFJLFVBQVUsQ0FBQyxtQkFBbUIsRUFBRTtnQkFDekMsY0FBYyxFQUFFLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSzthQUN2QyxDQUFDLENBQUE7U0FDSDtRQUVELE1BQU0sQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLEdBQUcsYUFBYSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDbEUsTUFBTSxVQUFVLEdBQUcsd0JBQXdCLENBQ3pDLFNBQVMsRUFDVCxTQUFTLENBQUMsTUFBbUIsQ0FDOUIsQ0FBQTtRQUNELElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDZiw4Q0FBOEM7WUFDOUMsT0FBTyxJQUFJLFVBQVUsQ0FDbkIsR0FBRyxTQUFTLElBQUksSUFBSSxFQUFFLEVBQ3RCO2dCQUNFLGNBQWMsRUFBRSxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUs7YUFDdkMsRUFDRCxFQUFFLENBQ0gsQ0FBQTtTQUNGO1FBQ0QsNENBQTRDO1FBQzVDLE9BQU8sSUFBSSxVQUFVLENBQUMsR0FBRyxTQUFTLElBQUksSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQTtJQUNqRSxDQUFDLENBQUM7U0FDRCxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUM3QixNQUFNLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDbkQsTUFBTSxVQUFVLEdBQ2QsSUFBSSxZQUFZLFNBQVM7UUFDdkIsQ0FBQyxDQUFDLEVBQUU7UUFDSixDQUFDLENBQUM7WUFDRSxXQUFXLEVBQUUsSUFBSSxDQUFDLEtBQUs7U0FDeEIsQ0FBQTtJQUNQLE9BQU8sSUFBSSxVQUFVLENBQUMsR0FBRyxTQUFTLElBQUksSUFBSSxFQUFFLEVBQUUsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFBO0FBQ3JFLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLGdCQUFnQixDQUFDLFNBQWdCO0lBQy9DLCtEQUErRDtJQUMvRCxJQUFJLFdBQVcsR0FBRyxTQUFTLENBQUMsa0JBQWtCLENBQzVDLElBQUksRUFDSixHQUFHLENBQUMsTUFBTSxDQUFDLEVBQ1gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUNoQixDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQW9CLENBQUE7SUFDMUIsSUFBSSxDQUFDLFdBQVcsRUFBRTtRQUNoQixNQUFNLFVBQVUsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUE7UUFDMUUsTUFBTSxTQUFTLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FDN0IsR0FBRyxDQUFDLEdBQUcsUUFBUSxTQUFTLENBQUMsRUFDekIsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUNYLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FDSCxDQUFBO1FBQ2QsV0FBVyxHQUFHLFNBQVMsQ0FBQyxPQUFvQixDQUFBO1FBQzVDLFNBQVMsQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQTtLQUN2RDtJQUNELE1BQU0sTUFBTSxHQUFHLElBQUksVUFBVSxDQUFDLFNBQVMsRUFBRSxFQUFFLEVBQUU7UUFDM0Msd0JBQXdCLENBQUMsU0FBUyxFQUFFLFdBQVcsQ0FBQztLQUNqRCxDQUFDLENBQUE7SUFDRixPQUFPLFdBQVcsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQTtBQUM1QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmxhbmtOb2RlLCBMaXRlcmFsLCBOYW1lZE5vZGUsIFN0YXRlbWVudCwgU3RvcmUsIHN5bSB9IGZyb20gJ3JkZmxpYidcbmltcG9ydCB7IFhtbEVsZW1lbnQsIFhtbFRleHQgfSBmcm9tICdAcmdyb3ZlL3BhcnNlLXhtbCdcbmltcG9ydCB7IERDQVQsIEZPQUYsIFJERiB9IGZyb20gJy4uL25hbWVzcGFjZXMnXG5pbXBvcnQgeyBjcmVhdGVEb2N1bWVudCwgTkFNRVNQQUNFUywgeG1sVG9TdHJpbmcgfSBmcm9tICcuLi8uLi94bWwtdXRpbHMnXG5pbXBvcnQgeyBCQVNFX1VSSSB9IGZyb20gJy4vdXJpJ1xuXG5mdW5jdGlvbiBmdWxsTmFtZVRvWG1sKGZ1bGxOYW1lOiBzdHJpbmcpOiBbc3RyaW5nLCBzdHJpbmddIHtcbiAgZm9yIChjb25zdCBrZXkgaW4gTkFNRVNQQUNFUykge1xuICAgIGlmIChmdWxsTmFtZS5zdGFydHNXaXRoKE5BTUVTUEFDRVNba2V5XSkpIHtcbiAgICAgIHJldHVybiBba2V5LCBmdWxsTmFtZS5yZXBsYWNlKE5BTUVTUEFDRVNba2V5XSwgJycpXVxuICAgIH1cbiAgfVxuICByZXR1cm4gW251bGwsIGZ1bGxOYW1lXVxufVxuXG5mdW5jdGlvbiBjcmVhdGVYbWxFbGVtZW50RnJvbU5vZGUoXG4gIGRhdGFTdG9yZTogU3RvcmUsXG4gIG5vZGU6IE5hbWVkTm9kZSB8IExpdGVyYWxcbik6IFhtbEVsZW1lbnQgfCBYbWxUZXh0IHtcbiAgaWYgKG5vZGUgaW5zdGFuY2VvZiBMaXRlcmFsKSB7XG4gICAgcmV0dXJuIG5ldyBYbWxUZXh0KG5vZGUudmFsdWUpXG4gIH1cbiAgY29uc3QgdHlwZSA9IGRhdGFTdG9yZS50aGUobm9kZSwgUkRGKCd0eXBlJykpIGFzIE5hbWVkTm9kZVxuICBpZiAoIXR5cGUpIHJldHVybiBudWxsXG5cbiAgY29uc3Qgc3RhdGVtZW50cyA9IGRhdGFTdG9yZS5zdGF0ZW1lbnRzTWF0Y2hpbmcobm9kZSwgbnVsbCwgbnVsbClcbiAgY29uc3QgY2hpbGRyZW4gPSBzdGF0ZW1lbnRzXG4gICAgLy8gZmlsdGVyaW5nIG91dCB0aGUgcmRmOnR5cGUgc3RhdGVtZW50cyBiZWNhdXNlIHRoZXkgYXJlIGFscmVhZHkgdXNlZCBhYm92ZVxuICAgIC5maWx0ZXIoKHN0YXRlbWVudCkgPT4gc3RhdGVtZW50LnByZWRpY2F0ZS52YWx1ZSAhPT0gUkRGKCd0eXBlJykudmFsdWUpXG4gICAgLm1hcCgoc3RhdGVtZW50KSA9PiB7XG4gICAgICBpZiAoc3RhdGVtZW50Lm9iamVjdC50b1N0cmluZygpID09PSBzdGF0ZW1lbnQuc3ViamVjdC50b1N0cmluZygpKSB7XG4gICAgICAgIHJldHVybiBudWxsXG4gICAgICB9XG5cbiAgICAgIC8vIHNwZWNpYWwgY2FzZXM6IGZvYWY6cHJpbWFyeVRvcGljIGluIGRjYXQ6Q2F0YWxvZ1JlY29yZFxuICAgICAgaWYgKHN0YXRlbWVudC5wcmVkaWNhdGUudmFsdWUgPT09IEZPQUYoJ3ByaW1hcnlUb3BpYycpLnZhbHVlKSB7XG4gICAgICAgIHJldHVybiBuZXcgWG1sRWxlbWVudChgZm9hZjpwcmltYXJ5VG9waWNgLCB7XG4gICAgICAgICAgJ3JkZjpyZXNvdXJjZSc6IHN0YXRlbWVudC5vYmplY3QudmFsdWUsXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IFtuYW1lc3BhY2UsIG5hbWVdID0gZnVsbE5hbWVUb1htbChzdGF0ZW1lbnQucHJlZGljYXRlLnZhbHVlKVxuICAgICAgY29uc3Qgb2JqZWN0Tm9kZSA9IGNyZWF0ZVhtbEVsZW1lbnRGcm9tTm9kZShcbiAgICAgICAgZGF0YVN0b3JlLFxuICAgICAgICBzdGF0ZW1lbnQub2JqZWN0IGFzIE5hbWVkTm9kZVxuICAgICAgKVxuICAgICAgaWYgKCFvYmplY3ROb2RlKSB7XG4gICAgICAgIC8vIG5vIG9iamVjdCBub2RlOiBzaW1wbHkgdXNlIHRoZSBvYmplY3QgdmFsdWVcbiAgICAgICAgcmV0dXJuIG5ldyBYbWxFbGVtZW50KFxuICAgICAgICAgIGAke25hbWVzcGFjZX06JHtuYW1lfWAsXG4gICAgICAgICAge1xuICAgICAgICAgICAgJ3JkZjpyZXNvdXJjZSc6IHN0YXRlbWVudC5vYmplY3QudmFsdWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBbXVxuICAgICAgICApXG4gICAgICB9XG4gICAgICAvLyB3cmFwIHRoZSBvYmplY3Qgbm9kZSBpbiB0aGUgcHJlZGljYXRlIG9uZVxuICAgICAgcmV0dXJuIG5ldyBYbWxFbGVtZW50KGAke25hbWVzcGFjZX06JHtuYW1lfWAsIHt9LCBbb2JqZWN0Tm9kZV0pXG4gICAgfSlcbiAgICAuZmlsdGVyKChjaGlsZCkgPT4gISFjaGlsZClcbiAgY29uc3QgW25hbWVzcGFjZSwgbmFtZV0gPSBmdWxsTmFtZVRvWG1sKHR5cGUudmFsdWUpXG4gIGNvbnN0IGF0dHJpYnV0ZXMgPVxuICAgIG5vZGUgaW5zdGFuY2VvZiBCbGFua05vZGVcbiAgICAgID8ge31cbiAgICAgIDoge1xuICAgICAgICAgICdyZGY6YWJvdXQnOiBub2RlLnZhbHVlLFxuICAgICAgICB9XG4gIHJldHVybiBuZXcgWG1sRWxlbWVudChgJHtuYW1lc3BhY2V9OiR7bmFtZX1gLCBhdHRyaWJ1dGVzLCBjaGlsZHJlbilcbn1cblxuLyoqXG4gKiBUaGlzIHdpbGwgb3V0cHV0IGFuIFhNTCBkb2N1bWVudCBzZXJpYWxpemVkIGFzIHN0cmluZywgdGFpbG9yZWQgaW4gYSB3YXkgdGhhdCBpdFxuICogY2FuIGJlIHVuZGVyc3Rvb2QgYW5kIGluZGV4ZWQgYnkgR040IGRjYXQtYXAgcGx1Z2luXG4gKiBAcGFyYW0gZGF0YVN0b3JlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleHBvcnRHcmFwaFRvWG1sKGRhdGFTdG9yZTogU3RvcmUpOiBzdHJpbmcge1xuICAvLyB3ZSBzdGFydCB3aXRoIHRoZSBjYXRhbG9nIG5vZGUgKHdoaWNoIGlzIGNyZWF0ZWQgaWYgbWlzc2luZylcbiAgbGV0IGNhdGFsb2dOb2RlID0gZGF0YVN0b3JlLnN0YXRlbWVudHNNYXRjaGluZyhcbiAgICBudWxsLFxuICAgIFJERigndHlwZScpLFxuICAgIERDQVQoJ0NhdGFsb2cnKVxuICApWzBdPy5zdWJqZWN0IGFzIE5hbWVkTm9kZVxuICBpZiAoIWNhdGFsb2dOb2RlKSB7XG4gICAgY29uc3QgcmVjb3JkTm9kZSA9IGRhdGFTdG9yZS50aGUobnVsbCwgUkRGKCd0eXBlJyksIERDQVQoJ0NhdGFsb2dSZWNvcmQnKSlcbiAgICBjb25zdCBzdGF0ZW1lbnQgPSBkYXRhU3RvcmUuYWRkKFxuICAgICAgc3ltKGAke0JBU0VfVVJJfWNhdGFsb2dgKSxcbiAgICAgIFJERigndHlwZScpLFxuICAgICAgRENBVCgnQ2F0YWxvZycpXG4gICAgKSBhcyBTdGF0ZW1lbnRcbiAgICBjYXRhbG9nTm9kZSA9IHN0YXRlbWVudC5zdWJqZWN0IGFzIE5hbWVkTm9kZVxuICAgIGRhdGFTdG9yZS5hZGQoY2F0YWxvZ05vZGUsIERDQVQoJ3JlY29yZCcpLCByZWNvcmROb2RlKVxuICB9XG4gIGNvbnN0IHJvb3RFbCA9IG5ldyBYbWxFbGVtZW50KCdyZGY6UkRGJywge30sIFtcbiAgICBjcmVhdGVYbWxFbGVtZW50RnJvbU5vZGUoZGF0YVN0b3JlLCBjYXRhbG9nTm9kZSksXG4gIF0pXG4gIHJldHVybiB4bWxUb1N0cmluZyhjcmVhdGVEb2N1bWVudChyb290RWwpKVxufVxuIl19
@@ -0,0 +1,2 @@
1
+ export const BASE_URI = 'http://geonetwork-ui/';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXJpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hcGkvbWV0YWRhdGEtY29udmVydGVyL3NyYy9saWIvZGNhdC1hcC91dGlscy91cmkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLHVCQUF1QixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IEJBU0VfVVJJID0gJ2h0dHA6Ly9nZW9uZXR3b3JrLXVpLydcbiJdfQ==
@@ -0,0 +1,27 @@
1
+ import { sym } from 'rdflib';
2
+ import { DCAT, DCTERMS, FOAF, RDF } from './namespaces';
3
+ import { getOrAddLiteral, getOrAddLocalizedLiteral, getOrAddStatement, } from './utils/graph-utils';
4
+ import { BASE_URI } from './utils/uri';
5
+ function getOrAddDatasetNode(record, dataStore, recordNode) {
6
+ if (dataStore.holds(null, RDF('type'), DCAT('Dataset'))) {
7
+ return dataStore.the(null, RDF('type'), DCAT('Dataset'));
8
+ }
9
+ const datasetNode = sym(`${BASE_URI}dataset/${record.uniqueIdentifier}`);
10
+ dataStore.add(datasetNode, RDF('type'), DCAT('Dataset'));
11
+ dataStore.add(recordNode, FOAF('primaryTopic'), datasetNode);
12
+ return datasetNode;
13
+ }
14
+ export function writeUniqueIdentifier(record, dataStore, recordNode) {
15
+ getOrAddStatement(dataStore, recordNode, DCTERMS('identifier'), record.uniqueIdentifier);
16
+ }
17
+ export function writeTitle(record, dataStore, recordNode) {
18
+ const dataset = getOrAddDatasetNode(record, dataStore, recordNode);
19
+ getOrAddLocalizedLiteral(dataStore, dataset, DCTERMS('title'), record.title, 'en');
20
+ getOrAddLiteral(dataStore, dataset, DCTERMS('title'), record.title);
21
+ }
22
+ export function writeAbstract(record, dataStore, recordNode) {
23
+ const dataset = getOrAddDatasetNode(record, dataStore, recordNode);
24
+ getOrAddLocalizedLiteral(dataStore, dataset, DCTERMS('description'), record.abstract, 'en');
25
+ getOrAddLiteral(dataStore, dataset, DCTERMS('description'), record.abstract);
26
+ }
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JpdGUtcGFydHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FwaS9tZXRhZGF0YS1jb252ZXJ0ZXIvc3JjL2xpYi9kY2F0LWFwL3dyaXRlLXBhcnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBb0IsR0FBRyxFQUFFLE1BQU0sUUFBUSxDQUFBO0FBQzlDLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFDdkQsT0FBTyxFQUNMLGVBQWUsRUFDZix3QkFBd0IsRUFDeEIsaUJBQWlCLEdBQ2xCLE1BQU0scUJBQXFCLENBQUE7QUFDNUIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUV0QyxTQUFTLG1CQUFtQixDQUMxQixNQUFxQixFQUNyQixTQUFnQixFQUNoQixVQUFxQjtJQUVyQixJQUFJLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRTtRQUN2RCxPQUFPLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQWMsQ0FBQTtLQUN0RTtJQUNELE1BQU0sV0FBVyxHQUFHLEdBQUcsQ0FBQyxHQUFHLFFBQVEsV0FBVyxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFBO0lBQ3hFLFNBQVMsQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQTtJQUN4RCxTQUFTLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUUsV0FBVyxDQUFDLENBQUE7SUFDNUQsT0FBTyxXQUFXLENBQUE7QUFDcEIsQ0FBQztBQUVELE1BQU0sVUFBVSxxQkFBcUIsQ0FDbkMsTUFBcUIsRUFDckIsU0FBZ0IsRUFDaEIsVUFBcUI7SUFFckIsaUJBQWlCLENBQ2YsU0FBUyxFQUNULFVBQVUsRUFDVixPQUFPLENBQUMsWUFBWSxDQUFDLEVBQ3JCLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FDeEIsQ0FBQTtBQUNILENBQUM7QUFFRCxNQUFNLFVBQVUsVUFBVSxDQUN4QixNQUFxQixFQUNyQixTQUFnQixFQUNoQixVQUFxQjtJQUVyQixNQUFNLE9BQU8sR0FBRyxtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFBO0lBQ2xFLHdCQUF3QixDQUN0QixTQUFTLEVBQ1QsT0FBTyxFQUNQLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFDaEIsTUFBTSxDQUFDLEtBQUssRUFDWixJQUFJLENBQ0wsQ0FBQTtJQUNELGVBQWUsQ0FBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUE7QUFDckUsQ0FBQztBQUVELE1BQU0sVUFBVSxhQUFhLENBQzNCLE1BQXFCLEVBQ3JCLFNBQWdCLEVBQ2hCLFVBQXFCO0lBRXJCLE1BQU0sT0FBTyxHQUFHLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUE7SUFDbEUsd0JBQXdCLENBQ3RCLFNBQVMsRUFDVCxPQUFPLEVBQ1AsT0FBTyxDQUFDLGFBQWEsQ0FBQyxFQUN0QixNQUFNLENBQUMsUUFBUSxFQUNmLElBQUksQ0FDTCxDQUFBO0lBQ0QsZUFBZSxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLGFBQWEsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQTtBQUM5RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2F0YWxvZ1JlY29yZCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL2RvbWFpbi9zcmMvbGliL21vZGVsL3JlY29yZCdcbmltcG9ydCB7IE5hbWVkTm9kZSwgU3RvcmUsIHN5bSB9IGZyb20gJ3JkZmxpYidcbmltcG9ydCB7IERDQVQsIERDVEVSTVMsIEZPQUYsIFJERiB9IGZyb20gJy4vbmFtZXNwYWNlcydcbmltcG9ydCB7XG4gIGdldE9yQWRkTGl0ZXJhbCxcbiAgZ2V0T3JBZGRMb2NhbGl6ZWRMaXRlcmFsLFxuICBnZXRPckFkZFN0YXRlbWVudCxcbn0gZnJvbSAnLi91dGlscy9ncmFwaC11dGlscydcbmltcG9ydCB7IEJBU0VfVVJJIH0gZnJvbSAnLi91dGlscy91cmknXG5cbmZ1bmN0aW9uIGdldE9yQWRkRGF0YXNldE5vZGUoXG4gIHJlY29yZDogQ2F0YWxvZ1JlY29yZCxcbiAgZGF0YVN0b3JlOiBTdG9yZSxcbiAgcmVjb3JkTm9kZTogTmFtZWROb2RlXG4pOiBOYW1lZE5vZGUge1xuICBpZiAoZGF0YVN0b3JlLmhvbGRzKG51bGwsIFJERigndHlwZScpLCBEQ0FUKCdEYXRhc2V0JykpKSB7XG4gICAgcmV0dXJuIGRhdGFTdG9yZS50aGUobnVsbCwgUkRGKCd0eXBlJyksIERDQVQoJ0RhdGFzZXQnKSkgYXMgTmFtZWROb2RlXG4gIH1cbiAgY29uc3QgZGF0YXNldE5vZGUgPSBzeW0oYCR7QkFTRV9VUkl9ZGF0YXNldC8ke3JlY29yZC51bmlxdWVJZGVudGlmaWVyfWApXG4gIGRhdGFTdG9yZS5hZGQoZGF0YXNldE5vZGUsIFJERigndHlwZScpLCBEQ0FUKCdEYXRhc2V0JykpXG4gIGRhdGFTdG9yZS5hZGQocmVjb3JkTm9kZSwgRk9BRigncHJpbWFyeVRvcGljJyksIGRhdGFzZXROb2RlKVxuICByZXR1cm4gZGF0YXNldE5vZGVcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdyaXRlVW5pcXVlSWRlbnRpZmllcihcbiAgcmVjb3JkOiBDYXRhbG9nUmVjb3JkLFxuICBkYXRhU3RvcmU6IFN0b3JlLFxuICByZWNvcmROb2RlOiBOYW1lZE5vZGVcbikge1xuICBnZXRPckFkZFN0YXRlbWVudChcbiAgICBkYXRhU3RvcmUsXG4gICAgcmVjb3JkTm9kZSxcbiAgICBEQ1RFUk1TKCdpZGVudGlmaWVyJyksXG4gICAgcmVjb3JkLnVuaXF1ZUlkZW50aWZpZXJcbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gd3JpdGVUaXRsZShcbiAgcmVjb3JkOiBDYXRhbG9nUmVjb3JkLFxuICBkYXRhU3RvcmU6IFN0b3JlLFxuICByZWNvcmROb2RlOiBOYW1lZE5vZGVcbikge1xuICBjb25zdCBkYXRhc2V0ID0gZ2V0T3JBZGREYXRhc2V0Tm9kZShyZWNvcmQsIGRhdGFTdG9yZSwgcmVjb3JkTm9kZSlcbiAgZ2V0T3JBZGRMb2NhbGl6ZWRMaXRlcmFsKFxuICAgIGRhdGFTdG9yZSxcbiAgICBkYXRhc2V0LFxuICAgIERDVEVSTVMoJ3RpdGxlJyksXG4gICAgcmVjb3JkLnRpdGxlLFxuICAgICdlbidcbiAgKVxuICBnZXRPckFkZExpdGVyYWwoZGF0YVN0b3JlLCBkYXRhc2V0LCBEQ1RFUk1TKCd0aXRsZScpLCByZWNvcmQudGl0bGUpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZUFic3RyYWN0KFxuICByZWNvcmQ6IENhdGFsb2dSZWNvcmQsXG4gIGRhdGFTdG9yZTogU3RvcmUsXG4gIHJlY29yZE5vZGU6IE5hbWVkTm9kZVxuKSB7XG4gIGNvbnN0IGRhdGFzZXQgPSBnZXRPckFkZERhdGFzZXROb2RlKHJlY29yZCwgZGF0YVN0b3JlLCByZWNvcmROb2RlKVxuICBnZXRPckFkZExvY2FsaXplZExpdGVyYWwoXG4gICAgZGF0YVN0b3JlLFxuICAgIGRhdGFzZXQsXG4gICAgRENURVJNUygnZGVzY3JpcHRpb24nKSxcbiAgICByZWNvcmQuYWJzdHJhY3QsXG4gICAgJ2VuJ1xuICApXG4gIGdldE9yQWRkTGl0ZXJhbChkYXRhU3RvcmUsIGRhdGFzZXQsIERDVEVSTVMoJ2Rlc2NyaXB0aW9uJyksIHJlY29yZC5hYnN0cmFjdClcbn1cbiJdfQ==
@@ -1,5 +1,6 @@
1
1
  import { Iso19139Converter } from './iso19139';
2
2
  import { Iso191153Converter } from './iso19115-3';
3
+ import { DcatApConverter } from './dcat-ap';
3
4
  export function findConverterForDocument(document) {
4
5
  if (document.indexOf('mdb:MD_Metadata') > 0) {
5
6
  return new Iso191153Converter();
@@ -7,9 +8,18 @@ export function findConverterForDocument(document) {
7
8
  else if (document.indexOf('gmd:MD_Metadata') > 0) {
8
9
  return new Iso19139Converter();
9
10
  }
11
+ else if (/@prefix\s*[a-z]+\s*:\s*<http:\/\/www\.w3\.org\/ns\/dcat#>\s*\./.test(document)) {
12
+ return new DcatApConverter('text/turtle');
13
+ }
14
+ else if (/xmlns:[a-z]+="http:\/\/www\.w3\.org\/ns\/dcat#"/.test(document)) {
15
+ return new DcatApConverter('application/rdf+xml');
16
+ }
17
+ else if (/"[a-zA-Z]+"\s*:\s*"http:\/\/www\.w3\.org\/ns\/dcat#/.test(document)) {
18
+ return new DcatApConverter('application/ld+json');
19
+ }
10
20
  else {
11
21
  throw new Error(`No suitable converter found for the following document:
12
22
  ${document.substring(0, 400)}...`);
13
23
  }
14
24
  }
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluZC1jb252ZXJ0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FwaS9tZXRhZGF0YS1jb252ZXJ0ZXIvc3JjL2xpYi9maW5kLWNvbnZlcnRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFFOUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sY0FBYyxDQUFBO0FBRWpELE1BQU0sVUFBVSx3QkFBd0IsQ0FDdEMsUUFBZ0I7SUFFaEIsSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxFQUFFO1FBQzNDLE9BQU8sSUFBSSxrQkFBa0IsRUFBRSxDQUFBO0tBQ2hDO1NBQU0sSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxFQUFFO1FBQ2xELE9BQU8sSUFBSSxpQkFBaUIsRUFBRSxDQUFBO0tBQy9CO1NBQU07UUFDTCxNQUFNLElBQUksS0FBSyxDQUFDO0VBQ2xCLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQTtLQUMvQjtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJc28xOTEzOUNvbnZlcnRlciB9IGZyb20gJy4vaXNvMTkxMzknXG5pbXBvcnQgeyBCYXNlQ29udmVydGVyIH0gZnJvbSAnLi9iYXNlLmNvbnZlcnRlcidcbmltcG9ydCB7IElzbzE5MTE1M0NvbnZlcnRlciB9IGZyb20gJy4vaXNvMTkxMTUtMydcblxuZXhwb3J0IGZ1bmN0aW9uIGZpbmRDb252ZXJ0ZXJGb3JEb2N1bWVudChcbiAgZG9jdW1lbnQ6IHN0cmluZ1xuKTogQmFzZUNvbnZlcnRlcjxzdHJpbmc+IHtcbiAgaWYgKGRvY3VtZW50LmluZGV4T2YoJ21kYjpNRF9NZXRhZGF0YScpID4gMCkge1xuICAgIHJldHVybiBuZXcgSXNvMTkxMTUzQ29udmVydGVyKClcbiAgfSBlbHNlIGlmIChkb2N1bWVudC5pbmRleE9mKCdnbWQ6TURfTWV0YWRhdGEnKSA+IDApIHtcbiAgICByZXR1cm4gbmV3IElzbzE5MTM5Q29udmVydGVyKClcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIHN1aXRhYmxlIGNvbnZlcnRlciBmb3VuZCBmb3IgdGhlIGZvbGxvd2luZyBkb2N1bWVudDpcbiR7ZG9jdW1lbnQuc3Vic3RyaW5nKDAsIDQwMCl9Li4uYClcbiAgfVxufVxuIl19
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluZC1jb252ZXJ0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FwaS9tZXRhZGF0YS1jb252ZXJ0ZXIvc3JjL2xpYi9maW5kLWNvbnZlcnRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFFOUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sY0FBYyxDQUFBO0FBQ2pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFFM0MsTUFBTSxVQUFVLHdCQUF3QixDQUN0QyxRQUFnQjtJQUVoQixJQUFJLFFBQVEsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFDM0MsT0FBTyxJQUFJLGtCQUFrQixFQUFFLENBQUE7S0FDaEM7U0FBTSxJQUFJLFFBQVEsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFDbEQsT0FBTyxJQUFJLGlCQUFpQixFQUFFLENBQUE7S0FDL0I7U0FBTSxJQUNMLGdFQUFnRSxDQUFDLElBQUksQ0FDbkUsUUFBUSxDQUNULEVBQ0Q7UUFDQSxPQUFPLElBQUksZUFBZSxDQUFDLGFBQWEsQ0FBQyxDQUFBO0tBQzFDO1NBQU0sSUFBSSxpREFBaUQsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUU7UUFDM0UsT0FBTyxJQUFJLGVBQWUsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFBO0tBQ2xEO1NBQU0sSUFDTCxxREFBcUQsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQ3BFO1FBQ0EsT0FBTyxJQUFJLGVBQWUsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFBO0tBQ2xEO1NBQU07UUFDTCxNQUFNLElBQUksS0FBSyxDQUFDO0VBQ2xCLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQTtLQUMvQjtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJc28xOTEzOUNvbnZlcnRlciB9IGZyb20gJy4vaXNvMTkxMzknXG5pbXBvcnQgeyBCYXNlQ29udmVydGVyIH0gZnJvbSAnLi9iYXNlLmNvbnZlcnRlcidcbmltcG9ydCB7IElzbzE5MTE1M0NvbnZlcnRlciB9IGZyb20gJy4vaXNvMTkxMTUtMydcbmltcG9ydCB7IERjYXRBcENvbnZlcnRlciB9IGZyb20gJy4vZGNhdC1hcCdcblxuZXhwb3J0IGZ1bmN0aW9uIGZpbmRDb252ZXJ0ZXJGb3JEb2N1bWVudChcbiAgZG9jdW1lbnQ6IHN0cmluZ1xuKTogQmFzZUNvbnZlcnRlcjxzdHJpbmc+IHtcbiAgaWYgKGRvY3VtZW50LmluZGV4T2YoJ21kYjpNRF9NZXRhZGF0YScpID4gMCkge1xuICAgIHJldHVybiBuZXcgSXNvMTkxMTUzQ29udmVydGVyKClcbiAgfSBlbHNlIGlmIChkb2N1bWVudC5pbmRleE9mKCdnbWQ6TURfTWV0YWRhdGEnKSA+IDApIHtcbiAgICByZXR1cm4gbmV3IElzbzE5MTM5Q29udmVydGVyKClcbiAgfSBlbHNlIGlmIChcbiAgICAvQHByZWZpeFxccypbYS16XStcXHMqOlxccyo8aHR0cDpcXC9cXC93d3dcXC53M1xcLm9yZ1xcL25zXFwvZGNhdCM+XFxzKlxcLi8udGVzdChcbiAgICAgIGRvY3VtZW50XG4gICAgKVxuICApIHtcbiAgICByZXR1cm4gbmV3IERjYXRBcENvbnZlcnRlcigndGV4dC90dXJ0bGUnKVxuICB9IGVsc2UgaWYgKC94bWxuczpbYS16XSs9XCJodHRwOlxcL1xcL3d3d1xcLnczXFwub3JnXFwvbnNcXC9kY2F0I1wiLy50ZXN0KGRvY3VtZW50KSkge1xuICAgIHJldHVybiBuZXcgRGNhdEFwQ29udmVydGVyKCdhcHBsaWNhdGlvbi9yZGYreG1sJylcbiAgfSBlbHNlIGlmIChcbiAgICAvXCJbYS16QS1aXStcIlxccyo6XFxzKlwiaHR0cDpcXC9cXC93d3dcXC53M1xcLm9yZ1xcL25zXFwvZGNhdCMvLnRlc3QoZG9jdW1lbnQpXG4gICkge1xuICAgIHJldHVybiBuZXcgRGNhdEFwQ29udmVydGVyKCdhcHBsaWNhdGlvbi9sZCtqc29uJylcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIHN1aXRhYmxlIGNvbnZlcnRlciBmb3VuZCBmb3IgdGhlIGZvbGxvd2luZyBkb2N1bWVudDpcbiR7ZG9jdW1lbnQuc3Vic3RyaW5nKDAsIDQwMCl9Li4uYClcbiAgfVxufVxuIl19