From c15cc500b3ac107d0ff45aafae1f31f0367837bb Mon Sep 17 00:00:00 2001 From: jnaud <j.naud@alkante.com> Date: Tue, 22 Oct 2019 10:44:21 +0200 Subject: [PATCH] init --- README.txt | 6 + config-overrides.properties.dev | 23 + config-overrides.properties.prod | 23 + generate_overlay.sh | 155 + initialize.sql | 3 + maven/maven-wrapper.jar | Bin 0 -> 71910 bytes maven/maven-wrapper.properties | 3 + mvnw | 234 ++ mvnw.bat | 174 + pom.xml | 21 + .../sql/migrate/v304/migrate-default.sql | 3 + .../sql/migrate/v330/migrate-default.sql | 64 + .../sql/migrate/v340/migrate-default.sql | 10 + .../webapp/WEB-INF/config-db/jdbc.properties | 45 + src/main/webapp/WEB-INF/config-gui.xml | 315 ++ src/main/webapp/WEB-INF/config-lucene.xml | 373 ++ src/main/webapp/WEB-INF/config-node/srv.xml | 48 + .../webapp/WEB-INF/config-overrides-prod.xml | 43 + .../WEB-INF/config-overrides.properties | 15 + .../config-security-cas-database.xml | 31 + .../config-security-cas-ldap.xml | 45 + .../config-security/config-security-cas.xml | 165 + .../config-security/config-security-core.xml | 382 ++ .../config-security/config-security-ldap.xml | 271 ++ .../config-security-overrides.properties | 46 + .../config-security.properties | 119 + .../config-security/config-security.xml | 44 + .../WEB-INF/config-spring-geonetwork.xml | 197 + src/main/webapp/WEB-INF/config-summary.xml | 270 ++ src/main/webapp/WEB-INF/config.xml | 311 ++ .../theme/inspire-service-taxonomy.rdf | 1912 +++++++++ .../external/thesauri/theme/inspire-theme.rdf | 1614 ++++++++ .../convert/thesaurus-transformation.xsl | 323 ++ .../iso19139/index-fields/default.xsl | 1103 +++++ .../layout/layout-custom-fields-keywords.xsl | 307 ++ .../iso19139/loc/fre/codelists.xml | 2127 ++++++++++ .../schematron-rules-geonetwork.sch | 71 + .../schematron-rules-geonetwork.xsl | 303 ++ .../schematron/schematron-rules-inspire.sch | 736 ++++ .../schematron/schematron-rules-inspire.xsl | 2253 ++++++++++ .../schematron/schematron-rules-iso.sch | 568 +++ .../schematron/schematron-rules-iso.xsl | 2144 ++++++++++ .../formatter/groovy/common/Functions.groovy | 69 + .../formatter/groovy/common/Handlers.groovy | 270 ++ .../formatter/groovy/common/Matchers.groovy | 11 + .../hierarchy_view/config.properties | 1 + .../data/formatter/hierarchy_view/view.groovy | 3 + .../data/formatter/html/2-level-entry.html | 15 + .../data/data/formatter/html/associated.html | 54 + .../data/data/formatter/html/bbox.html | 36 + .../data/data/formatter/html/links.html | 4 + .../data/data/formatter/html/list-entry.html | 7 + .../data/data/formatter/html/single-link.html | 31 + .../data/data/formatter/html/text-el.html | 4 + .../data/data/formatter/html/url-el.html | 4 + .../data/data/formatter/html/view-header.html | 83 + .../data/data/formatter/html/wikitext-el.html | 4 + .../formatter/xml_view/highlight-json-xml.js | 1 + .../data/formatter/xml_view/highlightjs.css | 153 + .../data/data/formatter/xml_view/view.groovy | 19 + .../data/formatter/xslt/render-functions.xsl | 139 + .../formatter/xslt/render-layout-fields.xsl | 27 + .../data/formatter/xslt/render-layout.xsl | 408 ++ .../data/formatter/xslt/render-variables.xsl | 69 + src/main/webapp/apps_extend/actions.js | 3643 +++++++++++++++++ src/main/webapp/apps_extend/admin.js | 941 +++++ .../apps_extend/administration_carto.js | 1434 +++++++ .../css/bootstrap-submenu.css | 126 + .../css/bootstrap-submenu.css.map | 1 + .../css/bootstrap-submenu.min.css | 7 + .../js/bootstrap-submenu.js | 195 + .../js/bootstrap-submenu.min.js | 7 + .../webapp/apps_extend/css/apps_extend.css | 119 + .../webapp/apps_extend/images/FitAll_OFF.gif | Bin 0 -> 1122 bytes .../webapp/apps_extend/images/FitAll_ON.gif | Bin 0 -> 1107 bytes .../webapp/apps_extend/images/Infos_OFF.gif | Bin 0 -> 1032 bytes .../webapp/apps_extend/images/Infos_ON.gif | Bin 0 -> 1028 bytes .../webapp/apps_extend/images/Marianne.jpg | Bin 0 -> 23771 bytes .../webapp/apps_extend/images/Mesure_OFF.gif | Bin 0 -> 961 bytes .../webapp/apps_extend/images/Mesure_ON.gif | Bin 0 -> 947 bytes .../webapp/apps_extend/images/Minimiser.gif | Bin 0 -> 106 bytes src/main/webapp/apps_extend/images/Oeil.gif | Bin 0 -> 89 bytes src/main/webapp/apps_extend/images/PRRA.gif | Bin 0 -> 2563 bytes .../webapp/apps_extend/images/Pan_Est_OFF.gif | Bin 0 -> 836 bytes .../webapp/apps_extend/images/Pan_Est_ON.gif | Bin 0 -> 836 bytes .../apps_extend/images/Pan_NordEst_OFF.gif | Bin 0 -> 834 bytes .../apps_extend/images/Pan_NordEst_ON.gif | Bin 0 -> 834 bytes .../apps_extend/images/Pan_NordOuest_OFF.gif | Bin 0 -> 837 bytes .../apps_extend/images/Pan_NordOuest_ON.gif | Bin 0 -> 837 bytes .../apps_extend/images/Pan_Nord_OFF.gif | Bin 0 -> 834 bytes .../webapp/apps_extend/images/Pan_Nord_ON.gif | Bin 0 -> 834 bytes .../webapp/apps_extend/images/Pan_OFF.gif | Bin 0 -> 995 bytes src/main/webapp/apps_extend/images/Pan_ON.gif | Bin 0 -> 987 bytes .../apps_extend/images/Pan_Ouest_OFF.gif | Bin 0 -> 837 bytes .../apps_extend/images/Pan_Ouest_ON.gif | Bin 0 -> 837 bytes .../apps_extend/images/Pan_SudEst_OFF.gif | Bin 0 -> 837 bytes .../apps_extend/images/Pan_SudEst_ON.gif | Bin 0 -> 837 bytes .../apps_extend/images/Pan_SudOuest_OFF.gif | Bin 0 -> 837 bytes .../apps_extend/images/Pan_SudOuest_ON.gif | Bin 0 -> 837 bytes .../webapp/apps_extend/images/Pan_Sud_OFF.gif | Bin 0 -> 834 bytes .../webapp/apps_extend/images/Pan_Sud_ON.gif | Bin 0 -> 834 bytes .../webapp/apps_extend/images/ZoomIn_OFF.gif | Bin 0 -> 1150 bytes .../webapp/apps_extend/images/ZoomIn_ON.gif | Bin 0 -> 1156 bytes .../webapp/apps_extend/images/ZoomOut_OFF.gif | Bin 0 -> 1147 bytes .../webapp/apps_extend/images/ZoomOut_ON.gif | Bin 0 -> 1152 bytes src/main/webapp/apps_extend/images/add.png | Bin 0 -> 733 bytes .../webapp/apps_extend/images/ancre_bas.gif | Bin 0 -> 850 bytes .../webapp/apps_extend/images/ancre_droit.gif | Bin 0 -> 862 bytes .../webapp/apps_extend/images/bandeau.png | Bin 0 -> 253 bytes .../images/bandeaux/bandeau_bleu.png | Bin 0 -> 211 bytes .../images/bandeaux/bandeau_gris.png | Bin 0 -> 801 bytes .../images/bandeaux/bandeau_marron.png | Bin 0 -> 908 bytes .../images/bandeaux/bandeau_orange.png | Bin 0 -> 887 bytes .../images/bandeaux/bandeau_rouge.png | Bin 0 -> 882 bytes .../images/bandeaux/bandeau_vert.png | Bin 0 -> 850 bytes .../images/bandeaux/bandeau_violet.png | Bin 0 -> 877 bytes src/main/webapp/apps_extend/images/barre.gif | Bin 0 -> 488 bytes src/main/webapp/apps_extend/images/basket.gif | Bin 0 -> 133 bytes .../webapp/apps_extend/images/boulerouge.gif | Bin 0 -> 102 bytes .../webapp/apps_extend/images/carte16.png | Bin 0 -> 1087 bytes .../webapp/apps_extend/images/carte32.png | Bin 0 -> 1771 bytes .../webapp/apps_extend/images/checked.gif | Bin 0 -> 959 bytes .../webapp/apps_extend/images/contact.png | Bin 0 -> 437 bytes .../apps_extend/images/corbeille 16.gif | Bin 0 -> 949 bytes .../apps_extend/images/croix rouge 12.gif | Bin 0 -> 916 bytes .../webapp/apps_extend/images/croix rouge.gif | Bin 0 -> 337 bytes .../webapp/apps_extend/images/data_hide.gif | Bin 0 -> 339 bytes .../webapp/apps_extend/images/data_show.gif | Bin 0 -> 319 bytes .../webapp/apps_extend/images/domaines.gif | Bin 0 -> 956 bytes .../webapp/apps_extend/images/download.gif | Bin 0 -> 151 bytes .../apps_extend/images/fleche_jaune.gif | Bin 0 -> 875 bytes .../webapp/apps_extend/images/fondPRRA.jpg | Bin 0 -> 37705 bytes .../webapp/apps_extend/images/fondPRRA2.jpg | Bin 0 -> 113872 bytes .../webapp/apps_extend/images/graphique16.png | Bin 0 -> 1007 bytes .../webapp/apps_extend/images/iconevideo.jpeg | Bin 0 -> 630 bytes .../webapp/apps_extend/images/imagesPDF.jpeg | Bin 0 -> 698 bytes src/main/webapp/apps_extend/images/lbleu.gif | Bin 0 -> 879 bytes .../webapp/apps_extend/images/legende.png | Bin 0 -> 145 bytes .../apps_extend/images/legende_carte.gif | Bin 0 -> 46 bytes .../apps_extend/images/legende_dataset.gif | Bin 0 -> 46 bytes .../apps_extend/images/legende_donnee.gif | Bin 0 -> 46 bytes .../apps_extend/images/legende_service.gif | Bin 0 -> 46 bytes src/main/webapp/apps_extend/images/lgris.png | Bin 0 -> 245 bytes .../webapp/apps_extend/images/loading.gif | Bin 0 -> 771 bytes .../images/logos/Logo_Prodige_V0.jpg | Bin 0 -> 77205 bytes .../apps_extend/images/logos/Marianne.jpg | Bin 0 -> 23771 bytes src/main/webapp/apps_extend/images/lrouge.gif | Bin 0 -> 492 bytes src/main/webapp/apps_extend/images/lrouge.png | Bin 0 -> 268 bytes src/main/webapp/apps_extend/images/moins.GIF | Bin 0 -> 838 bytes src/main/webapp/apps_extend/images/ombre.gif | Bin 0 -> 859 bytes .../webapp/apps_extend/images/ombre_h.gif | Bin 0 -> 846 bytes .../webapp/apps_extend/images/outils16.png | Bin 0 -> 3689 bytes src/main/webapp/apps_extend/images/plus.gif | Bin 0 -> 65 bytes .../apps_extend/images/puce_h2-trans.png | Bin 0 -> 704 bytes .../webapp/apps_extend/images/puce_h3.gif | Bin 0 -> 51 bytes src/main/webapp/apps_extend/images/remove.gif | Bin 0 -> 949 bytes src/main/webapp/apps_extend/images/remove.png | Bin 0 -> 715 bytes src/main/webapp/apps_extend/images/rss.gif | Bin 0 -> 579 bytes src/main/webapp/apps_extend/images/rss32.png | Bin 0 -> 2839 bytes .../webapp/apps_extend/images/rss_over.gif | Bin 0 -> 599 bytes src/main/webapp/apps_extend/images/s.gif | Bin 0 -> 43 bytes .../apps_extend/images/tab-close-on.gif | Bin 0 -> 880 bytes .../apps_extend/images/tableau-bord.png | Bin 0 -> 1010 bytes .../apps_extend/images/tableau-bord16.png | Bin 0 -> 3563 bytes .../apps_extend/images/tableau-bord2.png | Bin 0 -> 1087 bytes .../apps_extend/images/tableau-bord232.png | Bin 0 -> 1771 bytes .../apps_extend/images/tableau-bord32.png | Bin 0 -> 4904 bytes .../webapp/apps_extend/images/tarte16.png | Bin 0 -> 1034 bytes .../webapp/apps_extend/images/unchecked.gif | Bin 0 -> 941 bytes src/main/webapp/apps_extend/images/volet.png | Bin 0 -> 229 bytes .../apps_extend/images/volets/volet_bleu.png | Bin 0 -> 1105 bytes .../apps_extend/images/volets/volet_gris.png | Bin 0 -> 1081 bytes .../images/volets/volet_marron.png | Bin 0 -> 1011 bytes .../images/volets/volet_orange.png | Bin 0 -> 1089 bytes .../apps_extend/images/volets/volet_rouge.png | Bin 0 -> 1075 bytes .../apps_extend/images/volets/volet_vert.png | Bin 0 -> 1104 bytes .../images/volets/volet_violet.png | Bin 0 -> 1106 bytes .../webapp/apps_extend/images/waiting.gif | Bin 0 -> 25224 bytes .../webapp/apps_extend/locales/fr-extend.json | 3 + src/main/webapp/apps_extend/panier.js | 683 +++ .../apps_extend/search/css/App-extend.css | 49 + .../webapp/apps_extend/search/home_en.html | 9 + .../webapp/apps_extend/search/home_fr.html | 9 + .../webapp/apps_extend/search/home_fre.html | 9 + .../apps_extend/templates/contact-admin.html | 120 + .../webapp/apps_extend/templates/editor.html | 82 + .../apps_extend/templates/ext-messages.html | 22 + .../templates/harvested-synchronization.html | 42 + .../apps_extend/templates/help-modal.html | 27 + .../templates/metadata-actions.html | 27 + .../apps_extend/templates/metadata-cart.html | 36 + .../apps_extend/templates/top-toolbar.html | 53 + src/main/webapp/apps_extend/util.js | 152 + .../cookieWarning/partials/cookieWarning.html | 16 + src/main/webapp/catalog/js/jscompatibility.js | 14 + .../catalog/lib/jquery.ext/jquery.cookie.js | 117 + .../webapp/catalog/locales/fr-alk-extend.json | 5 + src/main/webapp/catalog/style/gn_viewer.less | 694 ++++ src/main/webapp/catalog/style/inspire/iti.css | 776 ++++ .../webapp/catalog/templates/admin/admin.html | 38 + .../webapp/catalog/templates/top-toolbar.html | 156 + .../directives/partials/mdactionmenu.html | 121 + .../views/default/templates/results.html | 117 + src/main/webapp/images/logos/favicon.ico | Bin 0 -> 14942 bytes src/main/webapp/xslt/base-layout.xsl | 131 + .../xslt/extend/base-layout-cssjs-loader.xsl | 36 + .../webapp/xslt/extend/base-variables.xsl | 100 + 207 files changed, 28429 insertions(+) create mode 100644 README.txt create mode 100644 config-overrides.properties.dev create mode 100644 config-overrides.properties.prod create mode 100644 generate_overlay.sh create mode 100644 initialize.sql create mode 100644 maven/maven-wrapper.jar create mode 100644 maven/maven-wrapper.properties create mode 100755 mvnw create mode 100755 mvnw.bat create mode 100755 pom.xml create mode 100644 src/main/webapp/WEB-INF/classes/setup/sql/migrate/v304/migrate-default.sql create mode 100644 src/main/webapp/WEB-INF/classes/setup/sql/migrate/v330/migrate-default.sql create mode 100644 src/main/webapp/WEB-INF/classes/setup/sql/migrate/v340/migrate-default.sql create mode 100644 src/main/webapp/WEB-INF/config-db/jdbc.properties create mode 100644 src/main/webapp/WEB-INF/config-gui.xml create mode 100644 src/main/webapp/WEB-INF/config-lucene.xml create mode 100644 src/main/webapp/WEB-INF/config-node/srv.xml create mode 100644 src/main/webapp/WEB-INF/config-overrides-prod.xml create mode 100644 src/main/webapp/WEB-INF/config-overrides.properties create mode 100644 src/main/webapp/WEB-INF/config-security/config-security-cas-database.xml create mode 100644 src/main/webapp/WEB-INF/config-security/config-security-cas-ldap.xml create mode 100644 src/main/webapp/WEB-INF/config-security/config-security-cas.xml create mode 100644 src/main/webapp/WEB-INF/config-security/config-security-core.xml create mode 100644 src/main/webapp/WEB-INF/config-security/config-security-ldap.xml create mode 100644 src/main/webapp/WEB-INF/config-security/config-security-overrides.properties create mode 100644 src/main/webapp/WEB-INF/config-security/config-security.properties create mode 100644 src/main/webapp/WEB-INF/config-security/config-security.xml create mode 100644 src/main/webapp/WEB-INF/config-spring-geonetwork.xml create mode 100644 src/main/webapp/WEB-INF/config-summary.xml create mode 100644 src/main/webapp/WEB-INF/config.xml create mode 100644 src/main/webapp/WEB-INF/data/config/codelist/external/thesauri/theme/inspire-service-taxonomy.rdf create mode 100644 src/main/webapp/WEB-INF/data/config/codelist/external/thesauri/theme/inspire-theme.rdf create mode 100644 src/main/webapp/WEB-INF/data/config/schema_plugins/iso19139/convert/thesaurus-transformation.xsl create mode 100644 src/main/webapp/WEB-INF/data/config/schema_plugins/iso19139/index-fields/default.xsl create mode 100644 src/main/webapp/WEB-INF/data/config/schema_plugins/iso19139/layout/layout-custom-fields-keywords.xsl create mode 100644 src/main/webapp/WEB-INF/data/config/schema_plugins/iso19139/loc/fre/codelists.xml create mode 100644 src/main/webapp/WEB-INF/data/config/schema_plugins/iso19139/schematron/schematron-rules-geonetwork.sch create mode 100644 src/main/webapp/WEB-INF/data/config/schema_plugins/iso19139/schematron/schematron-rules-geonetwork.xsl create mode 100644 src/main/webapp/WEB-INF/data/config/schema_plugins/iso19139/schematron/schematron-rules-inspire.sch create mode 100644 src/main/webapp/WEB-INF/data/config/schema_plugins/iso19139/schematron/schematron-rules-inspire.xsl create mode 100644 src/main/webapp/WEB-INF/data/config/schema_plugins/iso19139/schematron/schematron-rules-iso.sch create mode 100644 src/main/webapp/WEB-INF/data/config/schema_plugins/iso19139/schematron/schematron-rules-iso.xsl create mode 100644 src/main/webapp/WEB-INF/data/data/formatter/groovy/common/Functions.groovy create mode 100644 src/main/webapp/WEB-INF/data/data/formatter/groovy/common/Handlers.groovy create mode 100644 src/main/webapp/WEB-INF/data/data/formatter/groovy/common/Matchers.groovy create mode 100644 src/main/webapp/WEB-INF/data/data/formatter/hierarchy_view/config.properties create mode 100644 src/main/webapp/WEB-INF/data/data/formatter/hierarchy_view/view.groovy create mode 100644 src/main/webapp/WEB-INF/data/data/formatter/html/2-level-entry.html create mode 100644 src/main/webapp/WEB-INF/data/data/formatter/html/associated.html create mode 100644 src/main/webapp/WEB-INF/data/data/formatter/html/bbox.html create mode 100644 src/main/webapp/WEB-INF/data/data/formatter/html/links.html create mode 100644 src/main/webapp/WEB-INF/data/data/formatter/html/list-entry.html create mode 100644 src/main/webapp/WEB-INF/data/data/formatter/html/single-link.html create mode 100644 src/main/webapp/WEB-INF/data/data/formatter/html/text-el.html create mode 100644 src/main/webapp/WEB-INF/data/data/formatter/html/url-el.html create mode 100644 src/main/webapp/WEB-INF/data/data/formatter/html/view-header.html create mode 100644 src/main/webapp/WEB-INF/data/data/formatter/html/wikitext-el.html create mode 100644 src/main/webapp/WEB-INF/data/data/formatter/xml_view/highlight-json-xml.js create mode 100644 src/main/webapp/WEB-INF/data/data/formatter/xml_view/highlightjs.css create mode 100644 src/main/webapp/WEB-INF/data/data/formatter/xml_view/view.groovy create mode 100644 src/main/webapp/WEB-INF/data/data/formatter/xslt/render-functions.xsl create mode 100644 src/main/webapp/WEB-INF/data/data/formatter/xslt/render-layout-fields.xsl create mode 100644 src/main/webapp/WEB-INF/data/data/formatter/xslt/render-layout.xsl create mode 100644 src/main/webapp/WEB-INF/data/data/formatter/xslt/render-variables.xsl create mode 100644 src/main/webapp/apps_extend/actions.js create mode 100644 src/main/webapp/apps_extend/admin.js create mode 100644 src/main/webapp/apps_extend/administration_carto.js create mode 100644 src/main/webapp/apps_extend/bootstrap-submenu-2.0.4/css/bootstrap-submenu.css create mode 100644 src/main/webapp/apps_extend/bootstrap-submenu-2.0.4/css/bootstrap-submenu.css.map create mode 100644 src/main/webapp/apps_extend/bootstrap-submenu-2.0.4/css/bootstrap-submenu.min.css create mode 100644 src/main/webapp/apps_extend/bootstrap-submenu-2.0.4/js/bootstrap-submenu.js create mode 100644 src/main/webapp/apps_extend/bootstrap-submenu-2.0.4/js/bootstrap-submenu.min.js create mode 100644 src/main/webapp/apps_extend/css/apps_extend.css create mode 100644 src/main/webapp/apps_extend/images/FitAll_OFF.gif create mode 100644 src/main/webapp/apps_extend/images/FitAll_ON.gif create mode 100644 src/main/webapp/apps_extend/images/Infos_OFF.gif create mode 100644 src/main/webapp/apps_extend/images/Infos_ON.gif create mode 100644 src/main/webapp/apps_extend/images/Marianne.jpg create mode 100644 src/main/webapp/apps_extend/images/Mesure_OFF.gif create mode 100644 src/main/webapp/apps_extend/images/Mesure_ON.gif create mode 100644 src/main/webapp/apps_extend/images/Minimiser.gif create mode 100644 src/main/webapp/apps_extend/images/Oeil.gif create mode 100644 src/main/webapp/apps_extend/images/PRRA.gif create mode 100644 src/main/webapp/apps_extend/images/Pan_Est_OFF.gif create mode 100644 src/main/webapp/apps_extend/images/Pan_Est_ON.gif create mode 100644 src/main/webapp/apps_extend/images/Pan_NordEst_OFF.gif create mode 100644 src/main/webapp/apps_extend/images/Pan_NordEst_ON.gif create mode 100644 src/main/webapp/apps_extend/images/Pan_NordOuest_OFF.gif create mode 100644 src/main/webapp/apps_extend/images/Pan_NordOuest_ON.gif create mode 100644 src/main/webapp/apps_extend/images/Pan_Nord_OFF.gif create mode 100644 src/main/webapp/apps_extend/images/Pan_Nord_ON.gif create mode 100644 src/main/webapp/apps_extend/images/Pan_OFF.gif create mode 100644 src/main/webapp/apps_extend/images/Pan_ON.gif create mode 100644 src/main/webapp/apps_extend/images/Pan_Ouest_OFF.gif create mode 100644 src/main/webapp/apps_extend/images/Pan_Ouest_ON.gif create mode 100644 src/main/webapp/apps_extend/images/Pan_SudEst_OFF.gif create mode 100644 src/main/webapp/apps_extend/images/Pan_SudEst_ON.gif create mode 100644 src/main/webapp/apps_extend/images/Pan_SudOuest_OFF.gif create mode 100644 src/main/webapp/apps_extend/images/Pan_SudOuest_ON.gif create mode 100644 src/main/webapp/apps_extend/images/Pan_Sud_OFF.gif create mode 100644 src/main/webapp/apps_extend/images/Pan_Sud_ON.gif create mode 100644 src/main/webapp/apps_extend/images/ZoomIn_OFF.gif create mode 100644 src/main/webapp/apps_extend/images/ZoomIn_ON.gif create mode 100644 src/main/webapp/apps_extend/images/ZoomOut_OFF.gif create mode 100644 src/main/webapp/apps_extend/images/ZoomOut_ON.gif create mode 100644 src/main/webapp/apps_extend/images/add.png create mode 100644 src/main/webapp/apps_extend/images/ancre_bas.gif create mode 100644 src/main/webapp/apps_extend/images/ancre_droit.gif create mode 100644 src/main/webapp/apps_extend/images/bandeau.png create mode 100644 src/main/webapp/apps_extend/images/bandeaux/bandeau_bleu.png create mode 100644 src/main/webapp/apps_extend/images/bandeaux/bandeau_gris.png create mode 100644 src/main/webapp/apps_extend/images/bandeaux/bandeau_marron.png create mode 100644 src/main/webapp/apps_extend/images/bandeaux/bandeau_orange.png create mode 100644 src/main/webapp/apps_extend/images/bandeaux/bandeau_rouge.png create mode 100644 src/main/webapp/apps_extend/images/bandeaux/bandeau_vert.png create mode 100644 src/main/webapp/apps_extend/images/bandeaux/bandeau_violet.png create mode 100644 src/main/webapp/apps_extend/images/barre.gif create mode 100644 src/main/webapp/apps_extend/images/basket.gif create mode 100644 src/main/webapp/apps_extend/images/boulerouge.gif create mode 100644 src/main/webapp/apps_extend/images/carte16.png create mode 100644 src/main/webapp/apps_extend/images/carte32.png create mode 100644 src/main/webapp/apps_extend/images/checked.gif create mode 100644 src/main/webapp/apps_extend/images/contact.png create mode 100644 src/main/webapp/apps_extend/images/corbeille 16.gif create mode 100644 src/main/webapp/apps_extend/images/croix rouge 12.gif create mode 100644 src/main/webapp/apps_extend/images/croix rouge.gif create mode 100644 src/main/webapp/apps_extend/images/data_hide.gif create mode 100644 src/main/webapp/apps_extend/images/data_show.gif create mode 100644 src/main/webapp/apps_extend/images/domaines.gif create mode 100644 src/main/webapp/apps_extend/images/download.gif create mode 100644 src/main/webapp/apps_extend/images/fleche_jaune.gif create mode 100644 src/main/webapp/apps_extend/images/fondPRRA.jpg create mode 100644 src/main/webapp/apps_extend/images/fondPRRA2.jpg create mode 100644 src/main/webapp/apps_extend/images/graphique16.png create mode 100644 src/main/webapp/apps_extend/images/iconevideo.jpeg create mode 100644 src/main/webapp/apps_extend/images/imagesPDF.jpeg create mode 100644 src/main/webapp/apps_extend/images/lbleu.gif create mode 100644 src/main/webapp/apps_extend/images/legende.png create mode 100644 src/main/webapp/apps_extend/images/legende_carte.gif create mode 100644 src/main/webapp/apps_extend/images/legende_dataset.gif create mode 100644 src/main/webapp/apps_extend/images/legende_donnee.gif create mode 100644 src/main/webapp/apps_extend/images/legende_service.gif create mode 100644 src/main/webapp/apps_extend/images/lgris.png create mode 100644 src/main/webapp/apps_extend/images/loading.gif create mode 100644 src/main/webapp/apps_extend/images/logos/Logo_Prodige_V0.jpg create mode 100644 src/main/webapp/apps_extend/images/logos/Marianne.jpg create mode 100644 src/main/webapp/apps_extend/images/lrouge.gif create mode 100644 src/main/webapp/apps_extend/images/lrouge.png create mode 100644 src/main/webapp/apps_extend/images/moins.GIF create mode 100644 src/main/webapp/apps_extend/images/ombre.gif create mode 100644 src/main/webapp/apps_extend/images/ombre_h.gif create mode 100644 src/main/webapp/apps_extend/images/outils16.png create mode 100644 src/main/webapp/apps_extend/images/plus.gif create mode 100644 src/main/webapp/apps_extend/images/puce_h2-trans.png create mode 100644 src/main/webapp/apps_extend/images/puce_h3.gif create mode 100644 src/main/webapp/apps_extend/images/remove.gif create mode 100644 src/main/webapp/apps_extend/images/remove.png create mode 100644 src/main/webapp/apps_extend/images/rss.gif create mode 100644 src/main/webapp/apps_extend/images/rss32.png create mode 100644 src/main/webapp/apps_extend/images/rss_over.gif create mode 100644 src/main/webapp/apps_extend/images/s.gif create mode 100644 src/main/webapp/apps_extend/images/tab-close-on.gif create mode 100644 src/main/webapp/apps_extend/images/tableau-bord.png create mode 100644 src/main/webapp/apps_extend/images/tableau-bord16.png create mode 100644 src/main/webapp/apps_extend/images/tableau-bord2.png create mode 100644 src/main/webapp/apps_extend/images/tableau-bord232.png create mode 100644 src/main/webapp/apps_extend/images/tableau-bord32.png create mode 100644 src/main/webapp/apps_extend/images/tarte16.png create mode 100644 src/main/webapp/apps_extend/images/unchecked.gif create mode 100644 src/main/webapp/apps_extend/images/volet.png create mode 100644 src/main/webapp/apps_extend/images/volets/volet_bleu.png create mode 100644 src/main/webapp/apps_extend/images/volets/volet_gris.png create mode 100644 src/main/webapp/apps_extend/images/volets/volet_marron.png create mode 100644 src/main/webapp/apps_extend/images/volets/volet_orange.png create mode 100644 src/main/webapp/apps_extend/images/volets/volet_rouge.png create mode 100644 src/main/webapp/apps_extend/images/volets/volet_vert.png create mode 100644 src/main/webapp/apps_extend/images/volets/volet_violet.png create mode 100644 src/main/webapp/apps_extend/images/waiting.gif create mode 100644 src/main/webapp/apps_extend/locales/fr-extend.json create mode 100644 src/main/webapp/apps_extend/panier.js create mode 100644 src/main/webapp/apps_extend/search/css/App-extend.css create mode 100644 src/main/webapp/apps_extend/search/home_en.html create mode 100644 src/main/webapp/apps_extend/search/home_fr.html create mode 100644 src/main/webapp/apps_extend/search/home_fre.html create mode 100644 src/main/webapp/apps_extend/templates/contact-admin.html create mode 100644 src/main/webapp/apps_extend/templates/editor.html create mode 100644 src/main/webapp/apps_extend/templates/ext-messages.html create mode 100644 src/main/webapp/apps_extend/templates/harvested-synchronization.html create mode 100644 src/main/webapp/apps_extend/templates/help-modal.html create mode 100644 src/main/webapp/apps_extend/templates/metadata-actions.html create mode 100644 src/main/webapp/apps_extend/templates/metadata-cart.html create mode 100644 src/main/webapp/apps_extend/templates/top-toolbar.html create mode 100644 src/main/webapp/apps_extend/util.js create mode 100644 src/main/webapp/catalog/components/cookieWarning/partials/cookieWarning.html create mode 100644 src/main/webapp/catalog/js/jscompatibility.js create mode 100644 src/main/webapp/catalog/lib/jquery.ext/jquery.cookie.js create mode 100644 src/main/webapp/catalog/locales/fr-alk-extend.json create mode 100644 src/main/webapp/catalog/style/gn_viewer.less create mode 100644 src/main/webapp/catalog/style/inspire/iti.css create mode 100644 src/main/webapp/catalog/templates/admin/admin.html create mode 100644 src/main/webapp/catalog/templates/top-toolbar.html create mode 100644 src/main/webapp/catalog/views/default/directives/partials/mdactionmenu.html create mode 100644 src/main/webapp/catalog/views/default/templates/results.html create mode 100644 src/main/webapp/images/logos/favicon.ico create mode 100644 src/main/webapp/xslt/base-layout.xsl create mode 100644 src/main/webapp/xslt/extend/base-layout-cssjs-loader.xsl create mode 100644 src/main/webapp/xslt/extend/base-variables.xsl diff --git a/README.txt b/README.txt new file mode 100644 index 0000000..f2d1c54 --- /dev/null +++ b/README.txt @@ -0,0 +1,6 @@ +# install geosource war in local maven repository +#./mvnw install:install-file -DgroupId=org.geonetwork-opensource -DartifactId=geosource -Dversion=3.0.1-0 -Dpackaging=war -Dfile=./source/geosource-3.0.1-0.war +./mvnw install:install-file -DgroupId=org.geonetwork-opensource -DartifactId=geonetwork -Dversion=3.2.0-0 -Dpackaging=war -Dfile=./source/geonetwork-3.2.0-0.war + +# build war overlay +./mvnw clean package \ No newline at end of file diff --git a/config-overrides.properties.dev b/config-overrides.properties.dev new file mode 100644 index 0000000..bb17732 --- /dev/null +++ b/config-overrides.properties.dev @@ -0,0 +1,23 @@ +INFO : Les termes _prefix et _suffix permettent de configurer les urls PRODIGE pour des environnements + - de développement (ie. avec numéro de port en suffixe) + - de production (ie. avec prefixe de domaine) +Utilisez l'option -e dev ou -e prod au lancement du script pour obtenir la configuration par défaut +correspondant respectivement aux environnements de développement ou de production + +prodige_domain=prodige41.alkante.al +prodige_local_port=:1510 +prodige_catalogue_prefix= +prodige_catalogue_suffix=${prodige_local_port}2/app_dev.php +prodige_admincarto_prefix= +prodige_admincarto_suffix=${prodige_local_port}6/app_dev.php +prodige_frontcarto_prefix= +prodige_frontcarto_suffix=${prodige_local_port}3/app_dev.php +prodige_cas_prefix= +prodige_cas_suffix=:8444 +prodige_geonetwork_prefix= +prodige_geonetwork_suffix=:8443 +overrides_ldap_security_credentials=rz01mq9 +overrides_jdbc_database=CATALOGUE +overrides_jdbc_username=user_prodige +overrides_jdbc_password=pass_prodige + diff --git a/config-overrides.properties.prod b/config-overrides.properties.prod new file mode 100644 index 0000000..14ad90c --- /dev/null +++ b/config-overrides.properties.prod @@ -0,0 +1,23 @@ +INFO : Les termes _prefix et _suffix permettent de configurer les urls PRODIGE pour des environnements + - de développement (ie. avec numéro de port en suffixe) + - de production (ie. avec prefixe de domaine) +Utilisez l'option -e dev ou -e prod au lancement du script pour obtenir la configuration par défaut +correspondant respectivement aux environnements de développement ou de production + +prodige_domain= +prodige_local_port= +prodige_catalogue_prefix=catalogue. +prodige_catalogue_suffix= +prodige_admincarto_prefix=admincarto. +prodige_admincarto_suffix= +prodige_frontcarto_prefix=carto. +prodige_frontcarto_suffix= +prodige_cas_prefix= +prodige_cas_suffix=:8444 +prodige_geonetwork_prefix= +prodige_geonetwork_suffix=:8443 +overrides_ldap_security_credentials=rz01mq9 +overrides_jdbc_database=CATALOGUE +overrides_jdbc_username=user_prodige +overrides_jdbc_password=pass_prodige + diff --git a/generate_overlay.sh b/generate_overlay.sh new file mode 100644 index 0000000..6ab76c5 --- /dev/null +++ b/generate_overlay.sh @@ -0,0 +1,155 @@ + +function usage(){ + printf "Utilisation du script :\n" + printf " -c, --config Configuration interactive de l'installation (urls, connexion DB, mot de passe LDAP)\n" + printf " -p, --package Exécution du 'maven clean package' \n" + printf " -e, --env=INSTALL_TYPE Type d'installation : dev|prod (par défaut=prod)\n" + printf " -H, --host=PRODIGE_DOMAIN Domaine principal de l'installation\n" + printf " -D, --dbname=DB_NAME Nom de la base de données à connecter\n" + printf " -U, --dbuser=DB_USER_NAME Utilisateur de connexion à la base de données\n" + printf " -P, --dbpwd=DB_USER_PWD Mot de passe de connexion à la base de données\n" + printf " -h Affiche ce message.\n" +} + + +PACKAGE=0 +WITH_CONFIG=0 +CONFIG_ENV=prod + +# Propriétés de configuration obligatoires et définissables par les options du script +# { +PRODIGE_DOMAIN= +OVERRIDES_JDBC_DATABASE= +OVERRIDES_JDBC_USERNAME= +OVERRIDES_JDBC_PASSWORD= +# } + +options=$(getopt -o:cphe:H:D:U:P: -l help,config,package,env:,host:,dbname:,dbuser:,dbpwd: -- "$@") +if [[ ! $options ]] +then + # something went wrong, getopt will put out an error message for us + exit 1 +fi + +eval set -- $options +while [ $# -gt 0 ] +do + case "$1" in + (-h|--help) usage; exit 0;; + (-c|--config) WITH_CONFIG=1;; + (-p|--package) PACKAGE=1;; + (-e|--env) CONFIG_ENV=$2; shift;; + (-H|--host) PRODIGE_DOMAIN=$2; shift;; + (-D|--dbname) OVERRIDES_JDBC_DATABASE=$2; shift;; + (-U|--dbuser) OVERRIDES_JDBC_USERNAME=$2; shift;; + (-P|--dbpwd) OVERRIDES_JDBC_PASSWORD=$2; shift;; + (*) break;; + esac + shift +done + +CURDIR=`pwd` + +DEFAULT_CONFIG=${CURDIR}/config-overrides.properties.${CONFIG_ENV} + +GENERATED_CONFIG=${CURDIR}/config-overrides.properties +GENERATED_OVERRIDES=${CURDIR}/config-overrides-prod.xml + +INITIAL_CONFIG=${CURDIR}/src/main/webapp/WEB-INF/config-overrides.properties +INITIAL_OVERRIDES=${CURDIR}/src/main/webapp/WEB-INF/config-overrides-prod.xml + +cp ${INITIAL_OVERRIDES} ${GENERATED_OVERRIDES} +cp ${INITIAL_CONFIG} ${GENERATED_CONFIG} +cp ${INITIAL_OVERRIDES} ${GENERATED_OVERRIDES}.initial +cp ${INITIAL_CONFIG} ${GENERATED_CONFIG}.initial +cp ${DEFAULT_CONFIG} ${DEFAULT_CONFIG}.last + + +if [[ -f ${DEFAULT_CONFIG} ]] +then + source <(grep = ${DEFAULT_CONFIG}) +fi; +if [[ "${WITH_CONFIG}" -eq "1" ]] +then + echo "Configuration de l'installation : " +fi; + + +old_IFS=$IFS # sauvegarde du séparateur de champ +IFS=$'\n' # nouveau séparateur de champ, le caractère fin de ligne +for line in `cat ${DEFAULT_CONFIG}` +do + + if [[ $line =~ ^([a-z_A-Z]+)=(.*)$ ]] + then + # nom de la variable de config + varname=${BASH_REMATCH[1]} + # valeur extraite de la lecture du fichier de config par défaut (donc déjà calculée, en cas de variables imbriquées) + initial_value=${!varname} + + # evaluation dynamique de la valeur par défaut de config (pour prendre en compte les nouvelles valeurs affectées aux variables imbriquées) + default_value=`eval "echo ${BASH_REMATCH[2]}"` + + VARNAME=`echo ${varname^^}` + if [ -v "${VARNAME}" -a -n "${!VARNAME}" ]; then + echo "Set ${varname} to ${!VARNAME}" + default_value="${!VARNAME}" + fi; + + # configuration nécessaire si aucun valeur n'est définit sur les paramètres obligatoires + if [ -v "${VARNAME}" -a -z "${default_value}" ]; then + WITH_CONFIG=1 + fi; + + if [[ "${WITH_CONFIG}" -eq "1" ]] + then + echo "${varname} [ ${default_value} ] ?" + read value + value=${value:-${default_value}} + else + value=${default_value} + fi + + # génération de la config d'installation à intégrer à l'overlay + sed -i 's/[$][{]'"${varname}"'[}]/'"${value/\//\\\/}"'/g' ${GENERATED_OVERRIDES} + sed -i 's/[$][{]'"${varname}"'[}]/'"${value/\//\\\/}"'/g' ${GENERATED_CONFIG} + + # mémorisation de la dernière config d'installation (NB : conserve les variables imbriquées si les nouvelles valeurs correspondent à la formule) + if [ "${value}" = "${default_value}" ]; then pattern="${initial_value}"; else pattern="${BASH_REMATCH[2]}"; fi + pattern=`echo "${pattern/\//\\\/}"` && pattern=`echo "${pattern/[$]/[$]}"` && pattern=`echo "${pattern/[{]/[{]}"` && pattern=`echo "${pattern/[\}]/[\}]}"` + sed -i 's/'"${varname}"'='"${pattern}"'/'"${varname}"'='"${value/\//\\\/}"'/g' ${DEFAULT_CONFIG}.last + + # change la valeur de la variable dans l'environnement bash + eval ${varname}=${value} + elif [[ "${WITH_CONFIG}" -eq "1" ]] + then + echo $line + fi; +done +IFS=${old_IFS} + +echo "" +echo "Le fichier ${DEFAULT_CONFIG}.last a été généré avec les dernières valeurs de remplacement de l'installation." +echo "ASTUCE : Si c'est souhaité, le renommer en ${DEFAULT_CONFIG} pour qu'il devienne la config par défaut de l'installation " +echo "" + +if [[ "${PACKAGE}" -eq "1" ]] +then + sudo systemctl stop tomcat8 + cd /home/devperso/tomcat/prodige41 + rm geosource + cd ${CURDIR} + cp ${GENERATED_CONFIG} ${INITIAL_CONFIG} && cp ${GENERATED_OVERRIDES} ${INITIAL_OVERRIDES} && ./mvnw clean package && mv ${GENERATED_CONFIG}.initial ${INITIAL_CONFIG} && mv ${GENERATED_OVERRIDES}.initial ${INITIAL_OVERRIDES} + + cd /home/devperso/tomcat/prodige41 + ln -s ${CURDIR}/target/geosource-overlay-3.4.1-0 geosource +else + sudo systemctl stop tomcat8 + cp -R ${CURDIR}/src/main/webapp/* ${CURDIR}/target/geosource-overlay-3.4.1-0/. + cp ${GENERATED_CONFIG} ${CURDIR}/target/geosource-overlay-3.4.1-0/WEB-INF/`basename ${INITIAL_CONFIG}` + cp ${GENERATED_OVERRIDES} ${CURDIR}/target/geosource-overlay-3.4.1-0/WEB-INF/`basename ${INITIAL_OVERRIDES}` +fi; +cd ${CURDIR} +rm ${GENERATED_CONFIG}.initial +rm ${GENERATED_OVERRIDES}.initial +sudo systemctl restart tomcat8 && tail -f /var/log/tomcat8/catalina.out diff --git a/initialize.sql b/initialize.sql new file mode 100644 index 0000000..067a5dd --- /dev/null +++ b/initialize.sql @@ -0,0 +1,3 @@ +ALTER TABLE Settings ALTER COLUMN value TYPE text; + +DELETE FROM Settings where name='ui/config'; diff --git a/maven/maven-wrapper.jar b/maven/maven-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..18ba302c65c4f71f57e0daa0ea1b59cb85759b5c GIT binary patch literal 71910 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%0DcoUjNlo--yK~^)z{4lNKY#WT7n%h<Dk`c? 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 literal 0 HcmV?d00001 diff --git a/maven/maven-wrapper.properties b/maven/maven-wrapper.properties new file mode 100644 index 0000000..8c733ad --- /dev/null +++ b/maven/maven-wrapper.properties @@ -0,0 +1,3 @@ +#Maven download properties +#Tue Nov 17 21:07:15 MST 2015 +distributionUrl=https\://repository.apache.org/content/repositories/releases/org/apache/maven/apache-maven/3.3.3/apache-maven-3.3.3-bin.zip diff --git a/mvnw b/mvnw new file mode 100755 index 0000000..2275ac7 --- /dev/null +++ b/mvnw @@ -0,0 +1,234 @@ +#!/bin/sh +# ---------------------------------------------------------------------------- +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# ---------------------------------------------------------------------------- + +# ---------------------------------------------------------------------------- +# Maven2 Start Up Batch script +# +# Required ENV vars: +# ------------------ +# JAVA_HOME - location of a JDK home dir +# +# Optional ENV vars +# ----------------- +# M2_HOME - location of maven2's installed home dir +# MAVEN_OPTS - parameters passed to the Java VM when running Maven +# e.g. to debug Maven itself, use +# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +# MAVEN_SKIP_RC - flag to disable loading of mavenrc files +# ---------------------------------------------------------------------------- + +if [ -z "$MAVEN_SKIP_RC" ] ; then + + if [ -f /etc/mavenrc ] ; then + . /etc/mavenrc + fi + + if [ -f "$HOME/.mavenrc" ] ; then + . "$HOME/.mavenrc" + fi + +fi + +# OS specific support. $var _must_ be set to either true or false. +cygwin=false; +darwin=false; +mingw=false +case "`uname`" in + CYGWIN*) cygwin=true ;; + MINGW*) mingw=true;; + Darwin*) darwin=true + # + # Look for the Apple JDKs first to preserve the existing behaviour, and then look + # for the new JDKs provided by Oracle. + # + if [ -z "$JAVA_HOME" ] && [ -L /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK ] ; then + # + # Apple JDKs + # + export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home + fi + + if [ -z "$JAVA_HOME" ] && [ -L /System/Library/Java/JavaVirtualMachines/CurrentJDK ] ; then + # + # Apple JDKs + # + export JAVA_HOME=/System/Library/Java/JavaVirtualMachines/CurrentJDK/Contents/Home + fi + + if [ -z "$JAVA_HOME" ] && [ -L "/Library/Java/JavaVirtualMachines/CurrentJDK" ] ; then + # + # Oracle JDKs + # + export JAVA_HOME=/Library/Java/JavaVirtualMachines/CurrentJDK/Contents/Home + fi + + if [ -z "$JAVA_HOME" ] && [ -x "/usr/libexec/java_home" ]; then + # + # Apple JDKs + # + export JAVA_HOME=`/usr/libexec/java_home` + fi + ;; +esac + +if [ -z "$JAVA_HOME" ] ; then + if [ -r /etc/gentoo-release ] ; then + JAVA_HOME=`java-config --jre-home` + fi +fi + +if [ -z "$M2_HOME" ] ; then + ## resolve links - $0 may be a link to maven's home + PRG="$0" + + # need this for relative symlinks + while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG="`dirname "$PRG"`/$link" + fi + done + + saveddir=`pwd` + + M2_HOME=`dirname "$PRG"`/.. + + # make it fully qualified + M2_HOME=`cd "$M2_HOME" && pwd` + + cd "$saveddir" + # echo Using m2 at $M2_HOME +fi + +# For Cygwin, ensure paths are in UNIX format before anything is touched +if $cygwin ; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --unix "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --unix "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --unix "$CLASSPATH"` +fi + +# For Migwn, ensure paths are in UNIX format before anything is touched +if $mingw ; then + [ -n "$M2_HOME" ] && + M2_HOME="`(cd "$M2_HOME"; pwd)`" + [ -n "$JAVA_HOME" ] && + JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`" + # TODO classpath? +fi + +if [ -z "$JAVA_HOME" ]; then + javaExecutable="`which javac`" + if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then + # readlink(1) is not available as standard on Solaris 10. + readLink=`which readlink` + if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then + if $darwin ; then + javaHome="`dirname \"$javaExecutable\"`" + javaExecutable="`cd \"$javaHome\" && pwd -P`/javac" + else + javaExecutable="`readlink -f \"$javaExecutable\"`" + fi + javaHome="`dirname \"$javaExecutable\"`" + javaHome=`expr "$javaHome" : '\(.*\)/bin'` + JAVA_HOME="$javaHome" + export JAVA_HOME + fi + fi +fi + +if [ -z "$JAVACMD" ] ; then + if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + else + JAVACMD="`which java`" + fi +fi + +if [ ! -x "$JAVACMD" ] ; then + echo "Error: JAVA_HOME is not defined correctly." >&2 + echo " We cannot execute $JAVACMD" >&2 + exit 1 +fi + +if [ -z "$JAVA_HOME" ] ; then + echo "Warning: JAVA_HOME environment variable is not set." +fi + +CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher + +# For Cygwin, switch paths to Windows format before running java +if $cygwin; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --path --windows "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --windows "$CLASSPATH"` +fi + +# traverses directory structure from process work directory to filesystem root +# first directory with .mvn subdirectory is considered project base directory +find_maven_basedir() { + local basedir=$(pwd) + local wdir=$(pwd) + while [ "$wdir" != '/' ] ; do + wdir=$(cd "$wdir/.."; pwd) + if [ -d "$wdir"/.mvn ] ; then + basedir=$wdir + break + fi + done + echo "${basedir}" +} + +# concatenates all lines of a file +concat_lines() { + if [ -f "$1" ]; then + echo "$(tr -s '\n' ' ' < "$1")" + fi +} + +export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-$(find_maven_basedir)} +MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS" + +# Provide a "standardized" way to retrieve the CLI args that will +# work with both Windows and non-Windows executions. +MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@" +export MAVEN_CMD_LINE_ARGS + +WRAPPER_LAUNCHER="org.apache.maven.wrapper.MavenWrapperMain" + +exec "$JAVACMD" \ + $MAVEN_OPTS \ + "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ + -classpath \ +"$MAVEN_PROJECTBASEDIR/maven/maven-wrapper.jar" \ + ${WRAPPER_LAUNCHER} "$@" diff --git a/mvnw.bat b/mvnw.bat new file mode 100755 index 0000000..f8ede7f --- /dev/null +++ b/mvnw.bat @@ -0,0 +1,174 @@ +@REM ---------------------------------------------------------------------------- +@REM Licensed to the Apache Software Foundation (ASF) under one +@REM or more contributor license agreements. See the NOTICE file +@REM distributed with this work for additional information +@REM regarding copyright ownership. The ASF licenses this file +@REM to you under the Apache License, Version 2.0 (the +@REM "License"); you may not use this file except in compliance +@REM with the License. You may obtain a copy of the License at +@REM +@REM http://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, +@REM software distributed under the License is distributed on an +@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +@REM KIND, either express or implied. See the License for the +@REM specific language governing permissions and limitations +@REM under the License. +@REM ---------------------------------------------------------------------------- + +@REM ---------------------------------------------------------------------------- +@REM Maven2 Start Up Batch script +@REM +@REM Required ENV vars: +@REM JAVA_HOME - location of a JDK home dir +@REM +@REM Optional ENV vars +@REM M2_HOME - location of maven2's installed home dir +@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands +@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a key stroke before ending +@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven +@REM e.g. to debug Maven itself, use +@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files +@REM ---------------------------------------------------------------------------- + +@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' +@echo off +@REM enable echoing my setting MAVEN_BATCH_ECHO to 'on' +@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% + +@REM set %HOME% to equivalent of $HOME +if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") + +@REM Execute a user defined script before this one +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre +@REM check for pre script, once with legacy .bat ending and once with .cmd ending +if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat" +if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd" +:skipRcPre + +@setlocal + +set ERROR_CODE=0 + +@REM To isolate internal variables from possible post scripts, we use another setlocal +@setlocal + +@REM ==== START VALIDATION ==== +if not "%JAVA_HOME%" == "" goto OkJHome + +echo. +echo Error: JAVA_HOME not found in your environment. >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +:OkJHome +if exist "%JAVA_HOME%\bin\java.exe" goto chkMHome + +echo. +echo Error: JAVA_HOME is set to an invalid directory. >&2 +echo JAVA_HOME = "%JAVA_HOME%" >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +:chkMHome +if not "%M2_HOME%"=="" goto valMHome + +SET "M2_HOME=%~dp0.." +if not "%M2_HOME%"=="" goto valMHome + +echo. +echo Error: M2_HOME not found in your environment. >&2 +echo Please set the M2_HOME variable in your environment to match the >&2 +echo location of the Maven installation. >&2 +echo. +goto error + +:valMHome + +:stripMHome +if not "_%M2_HOME:~-1%"=="_\" goto checkMCmd +set "M2_HOME=%M2_HOME:~0,-1%" +goto stripMHome + +:checkMCmd +if exist "%M2_HOME%\bin\mvn.cmd" goto init + +echo. +echo Error: M2_HOME is set to an invalid directory. >&2 +echo M2_HOME = "%M2_HOME%" >&2 +echo Please set the M2_HOME variable in your environment to match the >&2 +echo location of the Maven installation >&2 +echo. +goto error +@REM ==== END VALIDATION ==== + +:init + +set MAVEN_CMD_LINE_ARGS=%* + +@REM Find the project base dir, i.e. the directory that contains the folder ".mvn". +@REM Fallback to current working directory if not found. + +set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% +IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir + +set EXEC_DIR=%CD% +set WDIR=%EXEC_DIR% +:findBaseDir +IF EXIST "%WDIR%"\.mvn goto baseDirFound +cd .. +IF "%WDIR%"=="%CD%" goto baseDirNotFound +set WDIR=%CD% +goto findBaseDir + +:baseDirFound +set MAVEN_PROJECTBASEDIR=%WDIR% +cd "%EXEC_DIR%" +goto endDetectBaseDir + +:baseDirNotFound +set MAVEN_PROJECTBASEDIR=%EXEC_DIR% +cd "%EXEC_DIR%" + +:endDetectBaseDir + +IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig + +@setlocal EnableExtensions EnableDelayedExpansion +for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a +@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% + +:endReadAdditionalConfig + +SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" +set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\maven\maven-wrapper.jar" +set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain +%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% %WRAPPER_LAUNCHER% %MAVEN_CMD_LINE_ARGS% + +if ERRORLEVEL 1 goto error +goto end + +:error +set ERROR_CODE=1 + +:end +@endlocal & set ERROR_CODE=%ERROR_CODE% + +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost +@REM check for post script, once with legacy .bat ending and once with .cmd ending +if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat" +if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd" +:skipRcPost + +@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' +if "%MAVEN_BATCH_PAUSE%" == "on" pause + +if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE% + +exit /B %ERROR_CODE% diff --git a/pom.xml b/pom.xml new file mode 100755 index 0000000..b25b70d --- /dev/null +++ b/pom.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd "> + <modelVersion>4.0.0</modelVersion> + <groupId>prodige41.alkante.al</groupId> + <artifactId>geosource-overlay</artifactId> + <packaging>war</packaging> + <version>3.4.1-0</version> + + <dependencies> + <dependency> + <groupId>org.geonetwork-opensource</groupId> + <artifactId>geonetwork</artifactId> + <version>3.4.1-0</version> + <type>war</type> + <scope>runtime</scope> + </dependency> + </dependencies> + +</project> diff --git a/src/main/webapp/WEB-INF/classes/setup/sql/migrate/v304/migrate-default.sql b/src/main/webapp/WEB-INF/classes/setup/sql/migrate/v304/migrate-default.sql new file mode 100644 index 0000000..babedaf --- /dev/null +++ b/src/main/webapp/WEB-INF/classes/setup/sql/migrate/v304/migrate-default.sql @@ -0,0 +1,3 @@ +UPDATE Settings SET value='3.0.4' WHERE name='system/platform/version'; +UPDATE Settings SET value='0' WHERE name='system/platform/subVersion'; +--ALTER TABLE HarvesterData RENAME COLUMN "key" TO keyvalue; \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/classes/setup/sql/migrate/v330/migrate-default.sql b/src/main/webapp/WEB-INF/classes/setup/sql/migrate/v330/migrate-default.sql new file mode 100644 index 0000000..e67503b --- /dev/null +++ b/src/main/webapp/WEB-INF/classes/setup/sql/migrate/v330/migrate-default.sql @@ -0,0 +1,64 @@ +ALTER TABLE Settings alter column "value" type text; +INSERT INTO Settings (name, value, datatype, position, internal) VALUES + ('ui/config', '{"langDetector":{"fromHtmlTag":false,"regexp":"^/[a-zA-Z0-9_-]+/[a-zA-Z0-9_-]+/([a-z]{3})/","default":"eng"},"nodeDetector":{"regexp":"^/[a-zA-Z0-9_-]+/([a-zA-Z0-9_-]+)/[a-z]{3}/","default":"srv"},"mods":{"header":{"enabled":true,"languages":{"eng":"en","dut":"du","fre":"fr","ger":"ge","kor":"ko","spa":"es","cze":"cz","cat":"ca","fin":"fi","ice":"is"}},"home":{"enabled":true,"appUrl":"../../srv/{{lang}}/catalog.search#/home"},"search":{"enabled":true,"appUrl":"../../srv/{{lang}}/catalog.search#/search","hitsperpageValues":[10,50,100],"paginationInfo":{"hitsPerPage":20},"facetsSummaryType":"details","facetConfig":[],"facetTabField": "","filters":{},"sortbyValues":[{"sortBy":"relevance","sortOrder":""},{"sortBy":"changeDate","sortOrder":""},{"sortBy":"title","sortOrder":"reverse"},{"sortBy":"rating","sortOrder":""},{"sortBy":"popularity","sortOrder":""},{"sortBy":"denominatorDesc","sortOrder":""},{"sortBy":"denominatorAsc","sortOrder":"reverse"}],"sortBy":"relevance","resultViewTpls":[{"tplUrl":"../../catalog/components/search/resultsview/partials/viewtemplates/grid.html","tooltip":"Grid","icon":"fa-th"}],"resultTemplate":"../../catalog/components/search/resultsview/partials/viewtemplates/grid.html","formatter":{"list":[{"label":"full","url":"../api/records/{{md.getUuid()}}/formatters/xsl-view?root=div&view=advanced"}]},"linkTypes":{"links":["LINK","kml"],"downloads":["DOWNLOAD"],"layers":["OGC"],"maps":["ows"]},"isFilterTagsDisplayedInSearch":false},"map":{"enabled":true,"appUrl":"../../srv/{{lang}}/catalog.search#/map","is3DModeAllowed":true,"isSaveMapInCatalogAllowed":true,"bingKey":"AnElW2Zqi4fI-9cYx1LHiQfokQ9GrNzcjOh_p_0hkO1yo78ba8zTLARcLBIf8H6D","storage":"sessionStorage","map":"../../map/config-viewer.xml","listOfServices":{"wms":[],"wmts":[]},"useOSM":true,"context":"","projection":"EPSG:3857","projectionList":[{"code":"EPSG:4326","label":"WGS84(EPSG:4326)"},{"code":"EPSG:3857","label":"Googlemercator(EPSG:3857)"}],"disabledTools":{"processes":true}},"editor":{"enabled":true,"appUrl":"../../srv/{{lang}}/catalog.edit,"isUserRecordsOnly": false","isFilterTagsDisplayed":false},"admin":{"enabled":true,"appUrl":"../../srv/{{lang}}/admin.console"},"signin":{"enabled":true,"appUrl":"../../srv/{{lang}}/catalog.signin"},"signout":{"appUrl":"../../signout"}}}', 3, 10000, 'n'); + +INSERT INTO Settings (name, value, datatype, position, internal) VALUES + ('system/csw/enabledWhenIndexing', 'true', 2, 1211, 'y'); + +DELETE FROM Settings WHERE name = 'map/is3DModeAllowed'; +DELETE FROM Settings WHERE name = 'map/isMapViewerEnabled'; +DELETE FROM Settings WHERE name = 'map/config'; +DELETE FROM Settings WHERE name = 'map/proj4js'; +DELETE FROM Settings WHERE name = 'map/isSaveMapInCatalogAllowed'; +DELETE FROM Settings WHERE name = 'map/bingKey'; + +DELETE FROM Settings WHERE name like 'system/shib%'; + + +INSERT INTO Selections (id, name, isWatchable) VALUES (0, 'PreferredList', 'n'); +INSERT INTO Selections (id, name, isWatchable) VALUES (1, 'WatchList', 'y'); +INSERT INTO SelectionsDes (iddes, langid, label) VALUES (0,'ara','Preferred records'); +INSERT INTO SelectionsDes (iddes, langid, label) VALUES (1,'ara','Watch list'); +INSERT INTO SelectionsDes (iddes, langid, label) VALUES (0,'cat','Preferred records'); +INSERT INTO SelectionsDes (iddes, langid, label) VALUES (1,'cat','Watch list'); +INSERT INTO SelectionsDes (iddes, langid, label) VALUES (0,'chi','Preferred records'); +INSERT INTO SelectionsDes (iddes, langid, label) VALUES (1,'chi','Watch list'); +INSERT INTO SelectionsDes (iddes, langid, label) VALUES (0,'dut','Preferred records'); +INSERT INTO SelectionsDes (iddes, langid, label) VALUES (1,'dut','Watch list'); +INSERT INTO SelectionsDes (iddes, langid, label) VALUES (0,'eng','Preferred records'); +INSERT INTO SelectionsDes (iddes, langid, label) VALUES (1,'eng','Watch list'); +INSERT INTO SelectionsDes (iddes, langid, label) VALUES (0,'fin','Preferred records'); +INSERT INTO SelectionsDes (iddes, langid, label) VALUES (1,'fin','Watch list'); +INSERT INTO SelectionsDes (iddes, langid, label) VALUES (0,'fre','Fiches préférées'); +INSERT INTO SelectionsDes (iddes, langid, label) VALUES (1,'fre','Fiches observées'); +INSERT INTO SelectionsDes (iddes, langid, label) VALUES (0,'ger','Preferred records'); +INSERT INTO SelectionsDes (iddes, langid, label) VALUES (1,'ger','Watch list'); +INSERT INTO SelectionsDes (iddes, langid, label) VALUES (0,'ita','Preferred records'); +INSERT INTO SelectionsDes (iddes, langid, label) VALUES (1,'ita','Watch list'); +INSERT INTO SelectionsDes (iddes, langid, label) VALUES (0,'nor','Preferred records'); +INSERT INTO SelectionsDes (iddes, langid, label) VALUES (1,'nor','Watch list'); +INSERT INTO SelectionsDes (iddes, langid, label) VALUES (0,'pol','Preferred records'); +INSERT INTO SelectionsDes (iddes, langid, label) VALUES (1,'pol','Watch list'); +INSERT INTO SelectionsDes (iddes, langid, label) VALUES (0,'por','Preferred records'); +INSERT INTO SelectionsDes (iddes, langid, label) VALUES (1,'por','Watch list'); +INSERT INTO SelectionsDes (iddes, langid, label) VALUES (0,'rus','Preferred records'); +INSERT INTO SelectionsDes (iddes, langid, label) VALUES (1,'rus','Watch list'); +INSERT INTO SelectionsDes (iddes, langid, label) VALUES (0,'spa','Preferred records'); +INSERT INTO SelectionsDes (iddes, langid, label) VALUES (1,'spa','Watch list'); +INSERT INTO SelectionsDes (iddes, langid, label) VALUES (0,'tur','Preferred records'); +INSERT INTO SelectionsDes (iddes, langid, label) VALUES (1,'tur','Watch list'); +INSERT INTO SelectionsDes (iddes, langid, label) VALUES (0,'vie','Preferred records'); +INSERT INTO SelectionsDes (iddes, langid, label) VALUES (1,'vie','Watch list'); + +INSERT INTO Settings (name, value, datatype, position, internal) VALUES ('system/userFeedback/lastNotificationDate', '', 0, 1912, 'y'); +INSERT INTO Settings (name, value, datatype, position, internal) VALUES ('metadata/import/restrict', '', 0, 11000, 'y'); +INSERT INTO Settings (name, value, datatype, position, internal) VALUES ('system/xlinkResolver/referencedDeletionAllowed', 'true', 2, 2313, 'n'); +INSERT INTO Settings (name, value, datatype, position, internal) VALUES ('metadata/backuparchive/enable', 'false', 2, 12000, 'n'); + +INSERT INTO Settings (name, value, datatype, position, internal) VALUES ('system/userSelfRegistration/recaptcha/enable', 'false', 2, 1910, 'n'); +INSERT INTO Settings (name, value, datatype, position, internal) VALUES ('system/userSelfRegistration/recaptcha/publickey', '', 0, 1910, 'n'); +INSERT INTO Settings (name, value, datatype, position, internal) VALUES ('system/userSelfRegistration/recaptcha/secretkey', '', 0, 1910, 'y'); + + +UPDATE Settings SET value='3.3.0' WHERE name='system/platform/version'; +UPDATE Settings SET value='SNAPSHOT' WHERE name='system/platform/subVersion'; diff --git a/src/main/webapp/WEB-INF/classes/setup/sql/migrate/v340/migrate-default.sql b/src/main/webapp/WEB-INF/classes/setup/sql/migrate/v340/migrate-default.sql new file mode 100644 index 0000000..0cdc729 --- /dev/null +++ b/src/main/webapp/WEB-INF/classes/setup/sql/migrate/v340/migrate-default.sql @@ -0,0 +1,10 @@ +DELETE FROM Settings WHERE name = 'metadata/editor/schemaConfig'; + +--INSERT INTO Settings (name, value, datatype, position, internal) VALUES +-- ('ui/config', '{"langDetector":{"fromHtmlTag":false,"regexp":"^/[a-zA-Z0-9_-]+/[a-zA-Z0-9_-]+/([a-z]{3})/","default":"eng"},"nodeDetector":{"regexp":"^/[a-zA-Z0-9_-]+/([a-zA-Z0-9_-]+)/[a-z]{3}/","default":"srv"},"mods":{"header":{"enabled":true,"languages":{"eng":"en","dut":"nl","fre":"fr","ger":"ge","kor":"ko","spa":"es","cze":"cz","cat":"ca","fin":"fi","ice":"is", "rus": "ru", "chi": "zh"}},"home":{"enabled":true,"appUrl":"../../srv/{{lang}}/catalog.search#/home"},"search":{"enabled":true,"appUrl":"../../srv/{{lang}}/catalog.search#/search","hitsperpageValues":[10,50,100],"paginationInfo":{"hitsPerPage":20},"facetsSummaryType":"details","facetConfig":[],"facetTabField":"","filters":{},"sortbyValues":[{"sortBy":"relevance","sortOrder":""},{"sortBy":"changeDate","sortOrder":""},{"sortBy":"title","sortOrder":"reverse"},{"sortBy":"rating","sortOrder":""},{"sortBy":"popularity","sortOrder":""},{"sortBy":"denominatorDesc","sortOrder":""},{"sortBy":"denominatorAsc","sortOrder":"reverse"}],"sortBy":"relevance","resultViewTpls":[{"tplUrl":"../../catalog/components/search/resultsview/partials/viewtemplates/grid.html","tooltip":"Grid","icon":"fa-th"}],"resultTemplate":"../../catalog/components/search/resultsview/partials/viewtemplates/grid.html","formatter":{"list":[{"label":"full","url":"../api/records/{{uuid}}/formatters/xsl-view?root=div&view=advanced"}]},"grid":{"related":["parent","children","services","datasets"]},"linkTypes":{"links":["LINK","kml"],"downloads":["DOWNLOAD"],"layers":["OGC"],"maps":["ows"]},"isFilterTagsDisplayedInSearch":false},"map":{"enabled":true,"appUrl":"../../srv/{{lang}}/catalog.search#/map","is3DModeAllowed":true,"isSaveMapInCatalogAllowed":true,"isExportMapAsImageEnabled":true,"bingKey":"AnElW2Zqi4fI-9cYx1LHiQfokQ9GrNzcjOh_p_0hkO1yo78ba8zTLARcLBIf8H6D","storage":"sessionStorage","map":"../../map/config-viewer.xml","listOfServices":{"wms":[],"wmts":[]},"useOSM":true,"context":"","layer":{"url":"http://www2.demis.nl/mapserver/wms.asp?","layers":"Countries","version":"1.1.1"},"projection":"EPSG:3857","projectionList":[{"code":"EPSG:4326","label":"WGS84(EPSG:4326)"},{"code":"EPSG:3857","label":"Googlemercator(EPSG:3857)"}],"disabledTools":{"processes":false,"addLayers":false,"layers":false,"filter":false,"contexts":false,"print":false,"mInteraction":false,"graticule":false,"syncAllLayers":false,"drawVector":false},"searchMapLayers":[],"viewerMapLayers":[]},"editor":{"enabled":true,"appUrl":"../../srv/{{lang}}/catalog.edit","isUserRecordsOnly":false,"isFilterTagsDisplayed":false,"createPageTpl": "../../catalog/templates/editor/new-metadata-horizontal.html"},"admin":{"enabled":true,"appUrl":"../../srv/{{lang}}/admin.console"},"signin":{"enabled":true,"appUrl":"../../srv/{{lang}}/catalog.signin"},"signout":{"appUrl":"../../signout"}}}', 3, 10000, 'n'); +update settings set value = '{"langDetector":{"fromHtmlTag":false,"regexp":"^/[a-zA-Z0-9_-]+/[a-zA-Z0-9_-]+/([a-z]{3})/","default":"eng"},"nodeDetector":{"regexp":"^/[a-zA-Z0-9_-]+/([a-zA-Z0-9_-]+)/[a-z]{3}/","default":"srv"},"mods":{"header":{"enabled":true,"languages":{"eng":"en","dut":"nl","fre":"fr","ger":"ge","kor":"ko","spa":"es","cze":"cz","cat":"ca","fin":"fi","ice":"is", "rus": "ru", "chi": "zh"}},"home":{"enabled":true,"appUrl":"../../srv/{{lang}}/catalog.search#/home"},"search":{"enabled":true,"appUrl":"../../srv/{{lang}}/catalog.search#/search","hitsperpageValues":[10,50,100],"paginationInfo":{"hitsPerPage":20},"facetsSummaryType":"details","facetConfig":[],"facetTabField":"","filters":{},"sortbyValues":[{"sortBy":"relevance","sortOrder":""},{"sortBy":"changeDate","sortOrder":""},{"sortBy":"title","sortOrder":"reverse"},{"sortBy":"rating","sortOrder":""},{"sortBy":"popularity","sortOrder":""},{"sortBy":"denominatorDesc","sortOrder":""},{"sortBy":"denominatorAsc","sortOrder":"reverse"}],"sortBy":"relevance","resultViewTpls":[{"tplUrl":"../../catalog/components/search/resultsview/partials/viewtemplates/grid.html","tooltip":"Grid","icon":"fa-th"}],"resultTemplate":"../../catalog/components/search/resultsview/partials/viewtemplates/grid.html","formatter":{"list":[{"label":"full","url":"../api/records/{{uuid}}/formatters/xsl-view?root=div&view=advanced"}]},"grid":{"related":["parent","children","services","datasets"]},"linkTypes":{"links":["LINK","kml"],"downloads":["DOWNLOAD"],"layers":["OGC"],"maps":["ows"]},"isFilterTagsDisplayedInSearch":false},"map":{"enabled":true,"appUrl":"../../srv/{{lang}}/catalog.search#/map","is3DModeAllowed":true,"isSaveMapInCatalogAllowed":true,"isExportMapAsImageEnabled":true,"bingKey":"AnElW2Zqi4fI-9cYx1LHiQfokQ9GrNzcjOh_p_0hkO1yo78ba8zTLARcLBIf8H6D","storage":"sessionStorage","map":"../../map/config-viewer.xml","listOfServices":{"wms":[],"wmts":[]},"useOSM":true,"context":"","layer":{"url":"http://www2.demis.nl/mapserver/wms.asp?","layers":"Countries","version":"1.1.1"},"projection":"EPSG:3857","projectionList":[{"code":"EPSG:4326","label":"WGS84(EPSG:4326)"},{"code":"EPSG:3857","label":"Googlemercator(EPSG:3857)"}],"disabledTools":{"processes":false,"addLayers":false,"layers":false,"filter":false,"contexts":false,"print":false,"mInteraction":false,"graticule":false,"syncAllLayers":false,"drawVector":false},"searchMapLayers":[],"viewerMapLayers":[]},"editor":{"enabled":true,"appUrl":"../../srv/{{lang}}/catalog.edit","isUserRecordsOnly":false,"isFilterTagsDisplayed":false,"createPageTpl": "../../catalog/templates/editor/new-metadata-horizontal.html"},"admin":{"enabled":true,"appUrl":"../../srv/{{lang}}/admin.console"},"signin":{"enabled":true,"appUrl":"../../srv/{{lang}}/catalog.signin"},"signout":{"appUrl":"../../signout"}}}', datatype=3, position=10000, internal= 'n' where name='ui/config'; + +INSERT INTO Settings (name, value, datatype, position, internal) VALUES ('system/metadata/validation/removeSchemaLocation', 'false', 2, 9170, 'n'); + +UPDATE Settings SET value='3.4.0' WHERE name='system/platform/version'; +UPDATE Settings SET value='SNAPSHOT' WHERE name='system/platform/subVersion'; diff --git a/src/main/webapp/WEB-INF/config-db/jdbc.properties b/src/main/webapp/WEB-INF/config-db/jdbc.properties new file mode 100644 index 0000000..913853e --- /dev/null +++ b/src/main/webapp/WEB-INF/config-db/jdbc.properties @@ -0,0 +1,45 @@ +# +# Copyright (C) 2001-2016 Food and Agriculture Organization of the +# United Nations (FAO-UN), United Nations World Food Programme (WFP) +# and United Nations Environment Programme (UNEP) +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or (at +# your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA +# +# Contact: Jeroen Ticheler - FAO - Viale delle Terme di Caracalla 2, +# Rome - Italy. email: geonetwork@osgeo.org +# + +jdbc.username=${overrides.jdbc.username} +jdbc.password=${overrides.jdbc.password} +jdbc.database=${overrides.jdbc.database} +jdbc.host=localhost +jdbc.port=5432 +jdbc.basic.removeAbandoned=true +jdbc.basic.removeAbandonedTimeout=120 +jdbc.basic.logAbandoned=true +jdbc.basic.maxActive=33 +jdbc.basic.maxIdle=${jdbc.basic.maxActive} +jdbc.basic.initialSize=${jdbc.basic.maxActive} +jdbc.basic.maxWait=200 +jdbc.basic.testOnBorrow=true +jdbc.basic.timeBetweenEvictionRunsMillis=10000 +jdbc.basic.minEvictableIdleTimeMillis=1800000 +jdbc.basic.testWhileIdle=true +jdbc.basic.numTestsPerEvictionRun=3 +jdbc.basic.poolPreparedStatements=true +jdbc.basic.maxOpenPreparedStatements=1200 +jdbc.basic.validationQuery=SELECT 1 +jdbc.basic.defaultReadOnly=false +jdbc.basic.defaultAutoCommit=false diff --git a/src/main/webapp/WEB-INF/config-gui.xml b/src/main/webapp/WEB-INF/config-gui.xml new file mode 100644 index 0000000..fecefbb --- /dev/null +++ b/src/main/webapp/WEB-INF/config-gui.xml @@ -0,0 +1,315 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + Define here all GUI specific parameters to be used in XSL stylesheet. + Each parameter could be retrieved using /root/gui/config/your-parameter-key xpath. + Updating a parameter don't need a restart (but need an XSL cache refresh if XSL caching is on). +--> +<config> + + <!-- Client configuration in order to redirect to default UI + (ie. main.home service) or to another custom client. + + For widget mode: + * parameters attribute is appended to URL. Use it to define a default map extent for example or change default language. + * createParameter attribute is appended to URL when the application is called from the administration > New metadata menu. + * stateId attribute is the identifier of the search form (if stateful) in the application. It is used to build quick links section in the administration. + --> + + + <client type="redirect" widget="true" url="catalog.search" createParameter="#create" stateId="s"/> + + <!-- Classic interface using the xslt layout-templates --> + <!-- <client type="redirect" widget="false" url="main.home" parameters="" stateId="" createParameter=""/> --> + <!-- Widget client with tabbed interface (metadata documents open in tab) --> + <!--<client type="redirect" widget="true" url="tabsearch" createParameter="#create" stateId="s"/>--> + <!-- Widget client with sliding panel interface (metadata records open in a window) --> + <!--<client type="redirect" widget="true" url="find" parameters="" createParameter="#create" stateId="s"/>--> + <!-- As above but with extra parameters set: custom extent in debug mode in french --> + + <!-- Comment out languages to hide them + from language selector. --> + <languages> + <ara/> + <cat/> + <chi/> + <dut/> + <eng/> + <fin/> + <fre/> + <ger/> + <ita/> + <nor/> + <pol/> + <por/> + <rus/> + <spa/> + <tur/> + </languages> + + + <map> + <!-- Configuration for map displayed in metadata sheet + (view or edit mode). --> + <metadata> + <width>100%</width> + <height>300px</height> + </metadata> + <proj> + <!-- List all needed projections for view and editing maps. + If more than one projection is available, bounding box + coordinates will be displayed in the list of available projection. + + Default attribute define the default projection to use. Do + not define more than one default projection. + + --> + <crs code="EPSG:4326" default="1" edit="1"/><!-- WGS84 is mandatory because ISO store it by default in LatLong--> + <crs code="EPSG:900913" def="+proj=merc +lon_0=0 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs "/> + <!-- + <crs code="EPSG:4258" def="+proj=longlat +ellps=GRS80 +no_defs"/> + <crs code="EPSG:3786" edit="1" def="+proj=eqc +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +a=6371007 +b=6371007 +units=m +no_defs "></crs> + <crs code="EPSG:27572" edit="1" def="+proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=0 +k_0=0.99987742 +x_0=600000 +y_0=2200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs"/> + --> + </proj> + + <!-- Setting used in the new UI (html5ui) to configure the layers in the maps. TODO: Use also in classic UI + + - If this setting is true OSM is used in the map viewers. + - If this setting is false, html5ui uses the layers configured in /geonetwork/maps/mapviewer.wmc + You can configure your custom WMS layers in that file. + --> + <osm_map>true</osm_map> + </map> + + + <!-- Configuration for small map search + mapSearch/@options: OpenLayers options hash as expected in new OpenLayers.Map(div, options) + + layers/layer: + server url of the server + tocName layer name in map + params OpenLayers params hash as expected in new OpenLayers.Layer.WMS(name, url, params, options) + options OpenLayers options hash as expected in new OpenLayers.Layer.WMS(name, url, params, options) + --> + <mapSearch options="{projection: 'EPSG:4326', maxExtent: new OpenLayers.Bounds(-180,-90,180,90), units: 'degrees', restrictedExtent: new OpenLayers.Bounds(-180,-90,180,90)}"> + <layers> + <layer server="http://localhost:8080/geoserver/wms" tocName="Borders" params="{layers: 'gn:ne_50m_boundary_da,gn:ne_50m_boundary_lines_land,gn:ne_50m_coastline', transparent: 'true', format: 'image/png'}" options="{}" /> + <layer server="http://localhost:8080/geoserver/wms" tocName="Ortophoto" params="{layers: 'gn:world', format: 'image/jpeg'}" options="{isBaseLayer: true}" /> + </layers> + </mapSearch> + + <!-- Configuration for map viewer + mapViewer/@options: OpenLayers options hash as expected in new OpenLayers.Map(div, options) + + proj/crs: Projections used in mapViewer + code CSR code + default Indicates the default CRS (values: 0, 1) + + layers/layer: + server url of the server + tocName layer name in map + params OpenLayers params hash as expected in new OpenLayers.Layer.WMS(name, url, params, options) + options OpenLayers options hash as expected in new OpenLayers.Layer.WMS(name, url, params, options) + --> + <mapViewer options="{projection: 'EPSG:4326', maxExtent: new OpenLayers.Bounds(-180,-90,180,90), units: 'degrees', restrictedExtent: new OpenLayers.Bounds(-180,-90,180,90)}"> + <layers> + <layer server="http://localhost:8080/geoserver/wms" tocName="Borders" params="{layers: 'gn:ne_50m_boundary_da,gn:ne_50m_boundary_lines_land,gn:ne_50m_coastline', transparent: 'true', format: 'image/png'}" options="{}" /> + <layer server="http://localhost:8080/geoserver/wms" tocName="Ortophoto" params="{layers: 'gn:world', format: 'image/jpeg'}" options="{isBaseLayer: true}" /> + </layers> + <scales values="[7500000, 5000000, 2500000, 1000000, 750000, 500000, 250000, 100000, 75000, 50000, 25000, 10000, 7500, 5000, 2500, 1000]" /> + <!--scales values="[]" /--> + <proj> + <crs code="EPSG:4326" default="1" name="WGS84 (lat/lon)" /> + </proj> + <servers> + <server name="NASA JPL OneEarth Web Mapping Server (WMS)" url="http://wms.jpl.nasa.gov/wms.cgi?" /> + <server name="NASA Earth Observations (NEO) WMS" url="http://neowms.sci.gsfc.nasa.gov/wms/wms?" /> + <server name="DEMIS World Map Server" url="http://www2.demis.nl/mapserver/wms.asp?" /> + <server name="Geoserver" url="http://localhost:8080/geoserver/wms?" /> + </servers> + </mapViewer> + + <!-- + Google translation service (http://code.google.com/apis/language/translate/overview.html): + Set this parameter to "1" to activate google translation service. + Google AJAX API Terms of Use http://code.google.com/apis/ajaxlanguage/terms.html + + WARNING: "The Google Translate API has been officially deprecated as of May 26, 2011... + the number of requests you may make per day will be limited and + the API will be shut off completely on December 1, 2011". + --> + <editor-google-translate>0</editor-google-translate> + + + <!-- Metadata relation information + Comment out this element to turn off metadata relation display in metadata + edit and view mode. + --> + <editor-metadata-relation/> + <!-- Display error only when loading validation report + <editor-validation-errors-only-on-load/>--> + + <!-- Display the geopublisher option for all updloaded files--> + <editor-geopublisher/> + + + <!-- Display metadata tabs in edit and view mode. + ISO and INSPIRE view only available for ISO19139 records. + Default view is always visible. + + Use the flat attribute in order to display elements in simple mode + (ie. could not access to all elements defined in the schema) + + Use the default attribute in order to use this view in search result panel. + It is recommended to use the simple or inspire view because user will not + have access to section tab switcher. + + Important: + * Visibility of views is now configured in GUI, inside System configuration > Metadata views + * Extra/advanced attributes of views like flat or other specific attributes (see INSPIRE panel) are configured in this file + + --> + <metadata-tab> + <!-- In flat mode, define custom configuration for a view: + * ancestorException: define which non existing children of the exception must be displayed (eg. use spatialResolution + in order to be able to add spatialResolution in this view mode. spatialResolution is a complex element which provide a + selection) + * exception: define which non existing element must be displayed (eg. pointOfContact) + * flatException: define which element to not display using flat mode (eg. topicCategory will allow to remove + or add element of that type even in flat mode but the element will be boxed). + --> + <simple flat="true"> + <exception schema="sensorML" for="component,input,onlineResource,electronicMailAddress,voice,facsimile,deliveryPoint,coordinate,input,date"/> + </simple> + <advanced/><!-- This view should not be removed as this is the only view to be able + to edit all elements defined in a schema. --> + <iso/> + <!-- This view display all INSPIRE recommended elements + in a view. --> + <inspire flat="true"> + <ancestorException schema="iso19139" for="EX_TemporalExtent,CI_Date,spatialResolution"/> + <exception schema="iso19139" for="result,resourceConstraints,pointOfContact,hierarchyLevel,couplingType,operatesOn,distributionInfo,distributionFormat,onLine,identifier,language,characterSet,topicCategory,serviceType,descriptiveKeywords,extent,temporalElement,geographicElement,lineage"/> + </inspire> + <xml/> + </metadata-tab> + +<!-- Define the default selection for metadata element substitutions in the editor --> + <editor-default-substitutions> + <!-- Default for gmd:language from 2 alternatives: gco:CharacterString, gmd:LanguageCode --> + <element name="gmd:language" default="gmd:LanguageCode" /> + </editor-default-substitutions> + + <!-- Add an option to be able to toggle all fieldsets + in view and edit mode. --> + <metadata-view-toggleTab/> + <metadata-show showMapPanel="true"/> + + <!-- Actions configuration + --> + <editor-actions> + <!-- Action to allow editors to compute bounding box from keyword analysis. --> + <compute-extent-from-keyword/> + </editor-actions> + + + + + <!-- Subtemplate configuration. + + Subtemplate only works with the GUI widget client interface. + The configuration allows to define the types of supported subtemplate + and their parent (where they can be inserted). + Subtemplate are only supported for iso19139 or profile records. + --> + + <editor-subtemplate> + <mapping> + <subtemplate type="gmd:CI_ResponsibleParty"> + <parent id="gmd:pointOfContact"/> + <parent id="gmd:userContactInfo"/> + <parent id="gmd:distributorContact"/> + <parent id="gmd:citedResponsibleParty"/> + <parent id="gmd:contact"/> + <!-- + TODO : gmd:source could be find in + LI_Lineage an in MD_ExtendedElementInformation_Type + <parent id="gmd:source"/> + It's not a CI_ResponsibleParty in LI_Lineage + --> + <parent id="gmd:processor"/> + <parent id="gmd:responsibleParty"/> + </subtemplate> + <subtemplate type="gmd:EX_Extent"> + <parent id="gmd:extent"/> + </subtemplate> + <subtemplate type="gmd:MD_Keywords"> + <parent id="gmd:descriptiveKeywords"/> + </subtemplate> + <subtemplate type="gmd:DQ_FormatConsistency"> + <parent id="gmd:report"/> + </subtemplate> + </mapping> + </editor-subtemplate> + + <!-- Proxy URL to use for XHR. + Check that the proxy could query allowed hosts. + <proxy-url>/cgi-bin/proxy.cgi</proxy-url> + --> + <proxy-url>../../proxy?</proxy-url> + + <!-- Display or not category information : Categories are stored in the database and a metadata + record could be linked to one or more categories. --> + <category> + <!-- + To disable that feature + comment this out. This will hide categories in search criteria, search results, + metadata editing and administration interface. + --> + <admin/> + + <!-- Display category as icon in search results. Categories could be : + * define from category table or + * define based on schema : iso19139 could be service or dataset and iso19110 is feature catalogue (internal category) + + mode attribute could be: + * all : all categories + * db : only from category table + * internal : only internal category + <display-in-search mode="db"/> + --> + + </category> + + <!-- Display rating feature in search results panel. --> + <rating/> + + <search> + <!-- Display or not keyword selection panel in advanced search panel + <keyword-selection-panel/> + --> + <!-- Optional user interface mechanism for editor - not ready yet + <use-separate-window-for-editor-viewer/> + --> + <!-- Optional user interface mechanism - displays banner functions using + drop down modal box which overlays the current web page instead of + replacing it. + Banner functions are 'Administration', 'Feedback', 'Links' etc + The idea here is that displaying these light-weight functions in a + modal box means that the main page is not disturbed + <use-modal-box-for-banner-functions/> + --> + <!-- Show Remote/Distributed search tab - enables distributed/remote search + using Z3950 - note that if you query the Australian Z3950 sites, you + will need to add the anzmeta plugin schema to GeoNetwork using the + add schema/profile function on the administration page. If you want to + do this, you should add the schema from a URL as follows: + http://geonetwork.globaldial.com/testdownloads/anzmeta.zip + <show-remote-search/> + --> + </search> + + + <repository> + <thesaurus>http://raw.github.com/geonetwork/util-repository/master/thesaurus.xml</thesaurus> + </repository> +</config> diff --git a/src/main/webapp/WEB-INF/config-lucene.xml b/src/main/webapp/WEB-INF/config-lucene.xml new file mode 100644 index 0000000..5eb1069 --- /dev/null +++ b/src/main/webapp/WEB-INF/config-lucene.xml @@ -0,0 +1,373 @@ +<?xml version="1.0"?> +<!-- + ~ Copyright (C) 2001-2016 Food and Agriculture Organization of the + ~ United Nations (FAO-UN), United Nations World Food Programme (WFP) + ~ and United Nations Environment Programme (UNEP) + ~ + ~ This program is free software; you can redistribute it and/or modify + ~ it under the terms of the GNU General Public License as published by + ~ the Free Software Foundation; either version 2 of the License, or (at + ~ your option) any later version. + ~ + ~ This program is distributed in the hope that it will be useful, but + ~ WITHOUT ANY WARRANTY; without even the implied warranty of + ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + ~ General Public License for more details. + ~ + ~ You should have received a copy of the GNU General Public License + ~ along with this program; if not, write to the Free Software + ~ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + ~ + ~ Contact: Jeroen Ticheler - FAO - Viale delle Terme di Caracalla 2, + ~ Rome - Italy. email: geonetwork@osgeo.org + --> + +<config> + <index> + <!-- + The amount of memory to be used for buffering documents in memory. + 48MB seems to be plenty for running at least two long + indexing jobs (eg. importing 20,000 records) and keeping disk + activity for lucene index writing to a minimum. + --> + <RAMBufferSizeMB>48.0d</RAMBufferSizeMB> + + <!-- Determines how often segment indices are merged by addDocument(). --> + <MergeFactor>10</MergeFactor> + + <!-- Default Lucene version to use (mainly for Analyzer creation). --> + <luceneVersion>4_9</luceneVersion> + <!-- How often to check if a commit is required --> + <commitInterval>1000</commitInterval> + <!-- If true then NRTManagerReopenThread will control how often the reader are reopened. + If false then the reader will be opened everytime they are obtained. --> + <useNRTManagerReopenThread>true</useNRTManagerReopenThread> + <!-- + Only applies if useNRTManagerReopenThread is true + Maximum time until a new reader must be opened; this sets the upper bound + on how slowly reopens may occur + See NRTManagerReopenThread --> + <nrtManagerReopenThreadMaxStaleSec>5</nrtManagerReopenThreadMaxStaleSec> + <!-- + Only applies if useNRTManagerReopenThread is true + Minimum time until a new reader can be opened; this sets the lower bound + on how quickly reopens may occur, when a caller + is waiting for a specific indexing change to become visible + See NRTManagerReopenThread--> + <nrtManagerReopenThreadMinStaleSec>0.1</nrtManagerReopenThreadMinStaleSec> + </index> + + + <!-- Search parameters are applied at search time and does not need + an index rebuild in order to be take into account. --> + <search> + <!-- Score parameters. Turning these parameters to true, affects performance. --> + <!-- Set track doc score to true if score needs to be displayed in results using + geonet:info/score element --> + <trackDocScores>false</trackDocScores> + <trackMaxScore>false</trackMaxScore> + + <!-- Not used because no Scorer defined --> + <docsScoredInOrder>false</docsScoredInOrder> + + <!-- + By default Lucene compute score according to search criteria + and the corresponding result set and their index content. + In case of search with no criteria, Lucene will return top docs + in index order (because none are more relevant than others). + + In order to change the score computation, a boost function could + be define. Boosting query needs to be loaded in classpath. + * RecencyBoostingQuery will promote recently modified documents + --> + + <!-- + <boostQuery name="org.fao.geonet.kernel.search.function.RecencyBoostingQuery"> + <Param name="multiplier" type="double" value="2.0"/> + <Param name="maxDaysAgo" type="int" value="365"/> + <Param name="dayField" type="java.lang.String" value="_changeDate"/> + </boostQuery> + --> + + + <!-- + List of fields to dump when using q service. Fields must be stored in the index. + + The attribute 'multilingualSortField' flag fields that are used for sorting also may have translations. + This is the solution for http://trac.osgeo.org/geonetwork/ticket/1112 + This is an issue where searching by one field and sorting by another will result + in an incorrect sorting. The reason is that sorted field may have multiple translations. + If the document found is one language (say french) and the UI language is english then + then the french translation will be used for sorting even though when the metadata + is viewed by user the metadata will be in english. + + The following fields are the sort field that can have translations and therefore + need special care when indexing and sorting. + --> + <dumpFields> + <field name="_isTemplate" tagName="isTemplate"/> + <field name="_isHarvested" tagName="isHarvested"/> + <field name="_popularity" tagName="popularity"/> + <field name="_rating" tagName="rating"/> + <field name="_displayOrder" tagName="displayOrder"/> + <field name="_view" tagName="view"/> + <field name="_notify" tagName="notify"/> + <field name="_download" tagName="download"/> + <field name="_dynamic" tagName="dynamic"/> + <field name="_featured" tagName="featured"/> + <field name="_owner" tagName="owner"/> + <field name="_userinfo" tagName="userinfo"/> + <field name="_ownername" tagName="ownername"/> + <field name="_cat" tagName="category"/> + <field name="topicCat" tagName="topicCat"/> + <field name="inspirethemewithac" tagName="inspirethemewithac"/> + <field name="_valid" tagName="valid"/> + <field name="_valid_schematron-rules-geonetwork" tagName="valid_schematron-rules-geonetwork"/> + <field name="_valid_schematron-rules-iso" tagName="valid_schematron-rules-iso"/> + <field name="_valid_schematron-rules-inspire" tagName="valid_schematron-rules-inspire"/> + <field name="_valid_xsd" tagName="valid_xsd"/> + <field name="_selected" tagName="selected"/> + <field name="_source" tagName="source"/> + <field name="_status" tagName="mdStatus"/> + <field name="_edit" tagName="edit"/> + <field name="_root" tagName="root"/> + <field name="_title" tagName="title" multilingualSortField="true"/> + <field name="_docLocale" tagName="docLocale"/> + <field name="_locale" tagName="_locale"/> + <field name="_defaultTitle" tagName="defaultTitle"/> + <field name="createDate" tagName="creationDate"/> + <field name="revisionDate" tagName="revisionDate"/> + <field name="publicationDate" tagName="publicationDate"/> + <field name="abstract" tagName="abstract" multilingualSortField="true"/> + <field name="_defaultAbstract" tagName="defaultAbstract"/> + <field name="keyword" tagName="keyword"/> + <field name="keywordGroup" tagName="keywordGroup"/> + <field name="parentUuid" tagName="parentId"/> + <field name="type" tagName="type"/> + <field name="identifier" tagName="identifier"/> + <field name="image" tagName="image"/> + <field name="link" tagName="link"/> + <field name="format" tagName="format"/> + <field name="denominator" tagName="denominator"/> + <field name="resolution" tagName="resolution"/> + <field name="crs" tagName="crs"/> + <field name="crsDetails" tagName="crsDetails"/> + <field name="credit" tagName="credit"/> + <field name="cl_status" tagName="status"/> + <field name="cl_status_text" tagName="status_text"/> + <field name="updateFrequency" tagName="updateFrequency"/> + <field name="lineage" tagName="lineage"/> + <field name="responsibleParty" tagName="responsibleParty"/> + <field name="MD_LegalConstraintsOtherConstraints" tagName="legalConstraints"/> + <field name="MD_LegalConstraintsUseLimitation" tagName="legalConstraints"/> + <field name="MD_SecurityConstraintsUseLimitation" tagName="securityConstraints"/> + <field name="MD_ConstraintsUseLimitation" tagName="resourceConstraints"/> + <field name="cl_classification_text" tagName="classification_text"/> + <field name="cl_maintenanceAndUpdateFrequency_text" + tagName="maintenanceAndUpdateFrequency_text"/> + <field name="cl_spatialRepresentationType_text" tagName="spatialRepresentationType_text"/> + <field name="datasetLang" tagName="datasetLang"/> + <field name="mdLanguage" tagName="mdLanguage"/> + <field name="serviceType" tagName="serviceType"/> + <field name="tempExtentBegin" tagName="tempExtentBegin"/> + <field name="tempExtentEnd" tagName="tempExtentEnd"/> + <field name="geoBox" tagName="geoBox"/> + <field name="extentDesc" tagName="geoDesc"/> + <field name="geoDescCode" tagName="geoDescCode"/> + <field name="_indexingError" tagName="idxError"/> + <field name="_indexingErrorMsg" tagName="idxMsg"/> + <field name="_op0" tagName="publishedForGroup"/> + <field name="_groupOwner" tagName="groupOwner"/> + <field name="_logo" tagName="logo"/> + <field name="standardName" tagName="standardName"/> + <field name="_groupWebsite" tagName="groupWebsite"/> + <field name="attributeTable" tagName="attributeTable"/> + </dumpFields> + </search> + + + <!-- Default analyzer to use for all fields not defined in the fieldSpecificAnalyzer section. + If not set, GeoNetwork use a default per field analyzer (ie. fieldSpecificAnalyzer is not + take into account). The default analyzer is defined in SearchManager. + + Example: + org.apache.lucene.analysis.fr.FrenchAnalyzer + + <defaultAnalyzer name="org.apache.lucene.analysis.standard.StandardAnalyzer"> + <Param name="version" type="org.apache.lucene.util.Version"/> + </defaultAnalyzer> + --> + <defaultAnalyzer name="org.fao.geonet.kernel.search.GeoNetworkAnalyzer"/> + <!-- TODO: Add a language specific analyzer according to: + * metadata language + * metadata elements language (ie. PT_FreeText elements) + --> + + + <!-- Field analyzer + Define here specific analyzer for each fields stored in the index + + For example adding a different analyzer for any (ie. full text search) + could be better than a standard analyzer which has a particular way of + creating tokens. + + In that situation, when field is "mission AD-T" is tokenized to "mission" "ad" & "t" + using StandardAnalyzer. A WhiteSpaceTokenizer tokenized to "mission" "AD-T" + which could be better in some situation. But when field is "mission AD-34T" is tokenized + to "mission" "ad-34t" using StandardAnalyzer due to number. + + doeleman: UUID must be case insensitive, as its parts are hexadecimal numbers which + are not case sensitive. StandardAnalyzer is recommended for UUIDS. + + A list of analyzer is available http://lucene.apache.org/java/2_4_0/api/org/apache/lucene/analysis/Analyzer.html + Commons analyzer: + * org.apache.lucene.analysis.standard.StandardAnalyzer + * org.apache.lucene.analysis.WhitespaceAnalyzer + * org.apache.lucene.analysis.SimpleAnalyzer + * org.fao.geonet.kernel.search.GeoNetworkAnalyzer (recommended for wildcard query support) + + The analyzer must be in the classpath. + + --> + <fieldSpecificAnalyzer> + <Field name="_uuid" analyzer="org.fao.geonet.kernel.search.GeoNetworkAnalyzer"/> + <Field name="standardName" analyzer="org.apache.lucene.analysis.core.KeywordAnalyzer"/> + <Field name="parentUuid" analyzer="org.fao.geonet.kernel.search.GeoNetworkAnalyzer"/> + <Field name="operatesOn" analyzer="org.fao.geonet.kernel.search.GeoNetworkAnalyzer"/> + <Field name="operatesOnIdentifier" analyzer="org.fao.geonet.kernel.search.GeoNetworkAnalyzer"/> + <Field name="hassource" analyzer="org.fao.geonet.kernel.search.GeoNetworkAnalyzer"/> + <Field name="hasfeaturecat" analyzer="org.fao.geonet.kernel.search.GeoNetworkAnalyzer"/> + <Field name="any" analyzer="org.apache.lucene.analysis.fr.FrenchAnalyzer"> + <Param name="version" type="org.apache.lucene.util.Version"/> + </Field> + + <!-- + <Field name="any" analyzer="org.fao.geonet.kernel.search.GeoNetworkAnalyzer"/> + + <Field name="any" analyzer="org.apache.lucene.analysis.standard.StandardAnalyzer"> + <Param name="version" type="org.apache.lucene.util.Version"/> + <Param name="stopWords" type="java.io.File" value="/path/to/resources/stopwords/en.txt"/> + </Field> + --> + <Field name="subject" analyzer="org.apache.lucene.analysis.core.KeywordAnalyzer"/> + <Field name="_cat" analyzer="org.apache.lucene.analysis.core.KeywordAnalyzer"/> + + + <Field name="keyword" analyzer="org.apache.lucene.analysis.core.KeywordAnalyzer"/> + <Field name="inspirerelated" analyzer="org.apache.lucene.analysis.core.KeywordAnalyzer"/> + <Field name="_groupPublished" analyzer="org.apache.lucene.analysis.core.KeywordAnalyzer"/> + <Field name="_source" analyzer="org.apache.lucene.analysis.core.KeywordAnalyzer"/> + + </fieldSpecificAnalyzer> + + <fieldSpecificSearchAnalyzer> + <!-- Define here analyzers to be overriden from fieldSpecificAnalyzer. + By default, indexing and searching per field analyzers are the same. + + In some case, an analyzer could be applied at indexing and another + at searching time. For example when using a SynonymAnalyzer. When adding + Londres, Londinium, Londona for London at indexing time, then there is no + need to add those synonyms for search if users search for Londres, it will match. + We only need synonym expansion during indexing or during searching, not both. + --> + </fieldSpecificSearchAnalyzer> + + <!-- Document boosting configuration. + + Document boosting allows to define custom boost factor for a document + or for document fields at index time which + will be use for score computation at search time. + + Note: Do not abuse of document boost + because it may lead to promote too much some kind of documents + or the contrary and make end-user not so confident of your search engine! + + --> + <!-- Boosting factor for fields. This parameter will impact queries using OR operator. + <fieldBoosting> + <Field name="title" boost="1.5F"/> + </fieldBoosting> + + It could be relevant to also remove some field from scoring using this: + * If not, user privileges will be take into account to compute the score. + --> + <fieldBoosting> + <Field name="_op0" boost="0.0F"/> + <Field name="_op1" boost="0.0F"/> + <Field name="_op2" boost="0.0F"/> + <Field name="_dummy" boost="0.0F"/> + <Field name="_isTemplate" boost="0.0F"/> + <Field name="_owner" boost="0.0F"/> + </fieldBoosting> + + + <!-- Boosting factor for document based on document values. + Parameters: + * fields: A comma separated value of fields. + * values: A comma separated value of value for each field. Use NOTNULL to check any field values. + * boost: A comma separated value of boost factor for each field (Float). + + "The boost factor values you should use depend on what you’re trying to achieve; + you’ll need to do some experimentation and + tuning to achieve the desired effect." source: Lucene In Action + + <boostDocument name="org.fao.geonet.kernel.search.function.ImportantDocument"> + <!- - Example to promote series and not promote records part of a series - -> + <Param name="fields" type="java.lang.String" value="type,parentUuid"/> + <Param name="values" type="java.lang.String" value="series,NOTNULL"/> + <Param name="boosts" type="java.lang.String" value=".1F,-.3F"/> + <!- - Example to promote series and service and records with keyword containing elevation + <Param name="fields" type="java.lang.String" value="type,type,keyword"/> + <Param name="values" type="java.lang.String" value="series,service,Elevation"/> + <Param name="boosts" type="java.lang.String" value=".1F,-.3F,.4F"/>- -> + </boostDocument> + --> + + <!-- All Lucene fields that are tokenized must be kept here because it + is impossible unfortunately from Lucene API to work out which fields are + tokenized and which aren't unless we read documents and we may not have + an index to do this on so since most fields are not tokenized we + keep a list of tokenized fields here + --> + <tokenized> + <Field name="any"/> + <Field name="anylight"/> + <Field name="abstract"/> + <Field name="title"/> + <Field name="altTitle"/> + <Field name="keywordType"/> + <!--<Field name="orgName"/>--> + <Field name="specificationTitle"/> + <Field name="levelName"/> + <Field name="subject"/> + </tokenized> + + <!-- All Lucene numeric fields. + Use of numeric field will increase index size. + It could give better search results for numeric values. + + Type attribute : int (default), double, long, float + Precision attribute : see NumericUtils.PRECISION_STEP_DEFAULT + --> + <numeric> + <Field name="denominator"/> + <Field name="northBL" type="double"/> + <Field name="eastBL" type="double"/> + <Field name="southBL" type="double"/> + <Field name="westBL" type="double"/> + </numeric> + + <!-- List all of the lucene field names which will have similarity applied to them + To disable set enabled to false. + + If enabled is false or not present then similarity will be applied to all fields (except some special case instances) + --> + <fuzzyMatching enabled="true"> + <Field name="any"/> + <Field name="anylight"/> + <Field name="title"/> + <Field name="altTitle"/> + <Field name="abstract"/> + <Field name="specificationTitle"/> + </fuzzyMatching> +</config> diff --git a/src/main/webapp/WEB-INF/config-node/srv.xml b/src/main/webapp/WEB-INF/config-node/srv.xml new file mode 100644 index 0000000..9b7b82e --- /dev/null +++ b/src/main/webapp/WEB-INF/config-node/srv.xml @@ -0,0 +1,48 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + ~ Copyright (C) 2001-2016 Food and Agriculture Organization of the + ~ United Nations (FAO-UN), United Nations World Food Programme (WFP) + ~ and United Nations Environment Programme (UNEP) + ~ + ~ This program is free software; you can redistribute it and/or modify + ~ it under the terms of the GNU General Public License as published by + ~ the Free Software Foundation; either version 2 of the License, or (at + ~ your option) any later version. + ~ + ~ This program is distributed in the hope that it will be useful, but + ~ WITHOUT ANY WARRANTY; without even the implied warranty of + ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + ~ General Public License for more details. + ~ + ~ You should have received a copy of the GNU General Public License + ~ along with this program; if not, write to the Free Software + ~ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + ~ + ~ Contact: Jeroen Ticheler - FAO - Viale delle Terme di Caracalla 2, + ~ Rome - Italy. email: geonetwork@osgeo.org + --> + +<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + default-lazy-init="true" + xmlns="http://www.springframework.org/schema/beans" + xsi:schemaLocation=" + http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> + + <import resource="classpath*:/config-spring-geonetwork.xml"/> + <import resource="../config-db/database_migration.xml"/> + + <bean id="nodeInfo" class="org.fao.geonet.NodeInfo"> + <property name="id" value="srv"/> + <property name="defaultNode" value="true"/> + </bean> + + <!-- Uncomment the database configuration you need to use --> + <!-- <import resource="../config-db/h2.xml"/>--> + <!--<import resource="../config-db/jndi-postgres-postgis.xml"/> --> + <!--<import resource="../config-db/oracle.xml"/>--> + <!--<import resource="../config-db/mysql.xml"/> --> + <!--<import resource="../config-db/db2.xml"/> --> + <import resource="../config-db/postgres.xml"/> + <!--<import resource="../config-db/sqlserver.xml"/> --> + <!--<import resource="../config-db/postgres-postgis.xml"/> --> +</beans> diff --git a/src/main/webapp/WEB-INF/config-overrides-prod.xml b/src/main/webapp/WEB-INF/config-overrides-prod.xml new file mode 100644 index 0000000..31aaf72 --- /dev/null +++ b/src/main/webapp/WEB-INF/config-overrides-prod.xml @@ -0,0 +1,43 @@ +<!-- + ~ Copyright (C) 2001-2016 Food and Agriculture Organization of the + ~ United Nations (FAO-UN), United Nations World Food Programme (WFP) + ~ and United Nations Environment Programme (UNEP) + ~ + ~ This program is free software; you can redistribute it and/or modify + ~ it under the terms of the GNU General Public License as published by + ~ the Free Software Foundation; either version 2 of the License, or (at + ~ your option) any later version. + ~ + ~ This program is distributed in the hope that it will be useful, but + ~ WITHOUT ANY WARRANTY; without even the implied warranty of + ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + ~ General Public License for more details. + ~ + ~ You should have received a copy of the GNU General Public License + ~ along with this program; if not, write to the Free Software + ~ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + ~ + ~ Contact: Jeroen Ticheler - FAO - Viale delle Terme di Caracalla 2, + ~ Rome - Italy. email: geonetwork@osgeo.org + --> + +<overrides> + <spring> + <setInterceptUrl pattern="/[a-zA-Z0-9_\-]+/[a-z]{2,3}/catalog.signin!?.*" access="hasRole('RegisteredUser')"/> + </spring> + <file name=".*/WEB-INF/config-gui.xml"> + <addXML xpath=""> + <prodige> + <catalogue> + <url>https://${prodige_catalogue_prefix}${prodige_domain}${prodige_catalogue_suffix}</url> + </catalogue> + <broadcast-connect> + <url>https://${prodige_admincarto_prefix}${prodige_domain}${prodige_admincarto_suffix}</url> + <url>https://${prodige_frontcarto_prefix}${prodige_domain}${prodige_frontcarto_suffix}</url> + <url>https://${prodige_telecarto_prefix}${prodige_domain}${prodige_telecarto_suffix}</url> + </broadcast-connect> + </prodige> + </addXML> + </file> + +</overrides> diff --git a/src/main/webapp/WEB-INF/config-overrides.properties b/src/main/webapp/WEB-INF/config-overrides.properties new file mode 100644 index 0000000..4ff0aec --- /dev/null +++ b/src/main/webapp/WEB-INF/config-overrides.properties @@ -0,0 +1,15 @@ +# @usage NOTE : The last value of a key is the final value + +# @destination WEB-INF/config-security/config-security.properties +overrides.ldap.security.credentials=${overrides_ldap_security_credentials} +overrides.cas.baseURL=https://${prodige_cas_prefix}${prodige_domain}${prodige_cas_suffix}/cas +overrides.geonetwork.https.url=https://${prodige_geonetwork_prefix}${prodige_domain}${prodige_geonetwork_suffix}/geonetwork + +# @destination WEB-INF/config-db/jdbc.properties +overrides.jdbc.database=${overrides_jdbc_database} +overrides.jdbc.username=${overrides_jdbc_username} +overrides.jdbc.password=${overrides_jdbc_password} + +# @override WEB-INF/config.properties +language.default=fre +language.forceDefault=true \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/config-security/config-security-cas-database.xml b/src/main/webapp/WEB-INF/config-security/config-security-cas-database.xml new file mode 100644 index 0000000..43b3335 --- /dev/null +++ b/src/main/webapp/WEB-INF/config-security/config-security-cas-database.xml @@ -0,0 +1,31 @@ +<!-- + ~ Copyright (C) 2001-2016 Food and Agriculture Organization of the + ~ United Nations (FAO-UN), United Nations World Food Programme (WFP) + ~ and United Nations Environment Programme (UNEP) + ~ + ~ This program is free software; you can redistribute it and/or modify + ~ it under the terms of the GNU General Public License as published by + ~ the Free Software Foundation; either version 2 of the License, or (at + ~ your option) any later version. + ~ + ~ This program is distributed in the hope that it will be useful, but + ~ WITHOUT ANY WARRANTY; without even the implied warranty of + ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + ~ General Public License for more details. + ~ + ~ You should have received a copy of the GNU General Public License + ~ along with this program; if not, write to the Free Software + ~ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + ~ + ~ Contact: Jeroen Ticheler - FAO - Viale delle Terme di Caracalla 2, + ~ Rome - Italy. email: geonetwork@osgeo.org + --> + +<beans + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://www.springframework.org/schema/beans + http://www.springframework.org/schema/beans/spring-beans-3.0.xsd" + xmlns="http://www.springframework.org/schema/beans"> + + <alias name="geonetworkAuthenticationProvider" alias="casUserService"/> +</beans> diff --git a/src/main/webapp/WEB-INF/config-security/config-security-cas-ldap.xml b/src/main/webapp/WEB-INF/config-security/config-security-cas-ldap.xml new file mode 100644 index 0000000..758e335 --- /dev/null +++ b/src/main/webapp/WEB-INF/config-security/config-security-cas-ldap.xml @@ -0,0 +1,45 @@ +<!-- + ~ Copyright (C) 2001-2016 Food and Agriculture Organization of the + ~ United Nations (FAO-UN), United Nations World Food Programme (WFP) + ~ and United Nations Environment Programme (UNEP) + ~ + ~ This program is free software; you can redistribute it and/or modify + ~ it under the terms of the GNU General Public License as published by + ~ the Free Software Foundation; either version 2 of the License, or (at + ~ your option) any later version. + ~ + ~ This program is distributed in the hope that it will be useful, but + ~ WITHOUT ANY WARRANTY; without even the implied warranty of + ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + ~ General Public License for more details. + ~ + ~ You should have received a copy of the GNU General Public License + ~ along with this program; if not, write to the Free Software + ~ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + ~ + ~ Contact: Jeroen Ticheler - FAO - Viale delle Terme di Caracalla 2, + ~ Rome - Italy. email: geonetwork@osgeo.org + --> + +<beans + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://www.springframework.org/schema/beans + http://www.springframework.org/schema/beans/spring-beans-3.0.xsd" + xmlns="http://www.springframework.org/schema/beans"> + + <!-- Depends on config-security-ldap.xml also being imported --> + + <bean id="casUserService" + class="org.springframework.security.ldap.userdetails.LdapUserDetailsService"> + <constructor-arg index="0" ref="ldapUserSearch"/> + <property name="userDetailsMapper" ref="ldapUserContextMapper"/> + </bean> + + <bean id="ldapUserSearch" + class="org.springframework.security.ldap.search.FilterBasedLdapUserSearch"> + <constructor-arg index="0" value="${ldap.sync.user.search.base}"/> + <constructor-arg index="1" value="${ldap.sync.user.search.filter}"/> + <constructor-arg index="2" ref="contextSource"/> + </bean> + +</beans> diff --git a/src/main/webapp/WEB-INF/config-security/config-security-cas.xml b/src/main/webapp/WEB-INF/config-security/config-security-cas.xml new file mode 100644 index 0000000..da799b8 --- /dev/null +++ b/src/main/webapp/WEB-INF/config-security/config-security-cas.xml @@ -0,0 +1,165 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + ~ Copyright (C) 2001-2016 Food and Agriculture Organization of the + ~ United Nations (FAO-UN), United Nations World Food Programme (WFP) + ~ and United Nations Environment Programme (UNEP) + ~ + ~ This program is free software; you can redistribute it and/or modify + ~ it under the terms of the GNU General Public License as published by + ~ the Free Software Foundation; either version 2 of the License, or (at + ~ your option) any later version. + ~ + ~ This program is distributed in the hope that it will be useful, but + ~ WITHOUT ANY WARRANTY; without even the implied warranty of + ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + ~ General Public License for more details. + ~ + ~ You should have received a copy of the GNU General Public License + ~ along with this program; if not, write to the Free Software + ~ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + ~ + ~ Contact: Jeroen Ticheler - FAO - Viale delle Terme di Caracalla 2, + ~ Rome - Italy. email: geonetwork@osgeo.org + --> + +<beans + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://www.springframework.org/schema/beans + http://www.springframework.org/schema/beans/spring-beans-3.0.xsd" + xmlns="http://www.springframework.org/schema/beans"> + + <!-- requires that config-security imports a config file that has the casUserService + bean --> + <!-- override beans in config-security-core with the changes required for + cas --> + <alias name="casEntryPoint" alias="authenticationEntryPoint"/> + <bean id="filterChainFilters" class="java.util.ArrayList"> + <constructor-arg> + <list> + <ref bean="securityContextPersistenceFilter"/> + <ref bean="requestSingleLogoutFilter"/> + <ref bean="logoutFilter"/> + <ref bean="singleLogoutFilter"/> + <ref bean="casFilter"/> + <ref bean="basicAuthenticationFilter"/> + <ref bean="requestCacheFilter"/> + <ref bean="anonymousFilter"/> + <ref bean="sessionMgmtFilter"/> + <ref bean="exceptionTranslationFilter"/> + <ref bean="filterSecurityInterceptor"/> + </list> + </constructor-arg> + </bean> + <!-- Adds the CasAuthenticationProvider to the AuthenticationManager --> + <bean id="casAuthenticationProviderPostProcessor" + class="jeeves.config.springutil.AddAuthenticationProviderPostProcessor"> + <constructor-arg value="0"/> + <constructor-arg ref="casAuthenticationProvider"></constructor-arg> + </bean> + <!-- End overrides --> + + <bean id="casServerPropertyUpdater" class="jeeves.config.springutil.ServerBeanPropertyUpdater"> + <constructor-arg value="${geonetwork.https.url}"/> + <constructor-arg> + <map> + <entry key-ref="serviceProperties" value="service"/> + <entry key-ref="casTicketValidator" value="proxyCallbackUrl"/> + <entry key-ref="casFilter" value="proxyReceptorUrl"/> + <entry key-ref="logoutSuccessHandler" value="defaultTargetUrl"/> + </map> + </constructor-arg> + </bean> + <bean id="serviceProperties" class="org.springframework.security.cas.ServiceProperties"> + <property name="service" value="${geonetwork.https.url}/j_spring_cas_security_check"/> + <property name="sendRenew" value="false"/> + <property name="artifactParameter" value="ticket"/> + <property name="authenticateAllArtifacts" value="true"/> + </bean> + + <bean id="casFilter" + class="org.springframework.security.cas.web.CasAuthenticationFilter"> + <property name="authenticationManager" ref="authenticationManager"/> + <property name="proxyGrantingTicketStorage" ref="pgtStorage"/> + <property name="proxyReceptorUrl" + value="/j_spring_cas_security_proxyreceptor"/> + <property name="serviceProperties" ref="serviceProperties"/> + <property name="authenticationDetailsSource"> + <bean + class="org.springframework.security.cas.web.authentication.ServiceAuthenticationDetailsSource"/> + </property> + <!-- @vlc start redirect to home page after login --> + <property name="authenticationSuccessHandler"> + <bean class="org.springframework.security.web.authentication.SimpleUrlAuthenticationSuccessHandler"> + <property name="defaultTargetUrl" value="/"/> + <property name="alwaysUseDefaultTargetUrl" value="true"/> + </bean> + </property> + <!-- @vlc end --> + </bean> + + <bean id="casEntryPoint" + class="org.springframework.security.cas.web.CasAuthenticationEntryPoint"> + <property name="loginUrl" value="${cas.login.url}"/> + <property name="serviceProperties" ref="serviceProperties"/> + </bean> + + <bean id="casAuthenticationProvider" + class="org.springframework.security.cas.authentication.CasAuthenticationProvider"> + <property name="authenticationUserDetailsService"> + <bean + class="org.springframework.security.core.userdetails.UserDetailsByNameServiceWrapper"> + <constructor-arg ref="casUserService"/> + </bean> + </property> + <property name="serviceProperties" ref="serviceProperties"/> + <property name="ticketValidator" ref="casTicketValidator"/> + <property name="key" value="GeonetworkCasAuthenticatorProviderKey"/> + <property name="statelessTicketCache" ref="casStatelessTicketCache"/> + </bean> + + <bean id="casTicketValidator" class="org.jasig.cas.client.validation.Cas20ProxyTicketValidator"> + <!-- Geonetwork class in start method will update the baseurl with the one in the settings table --> + <!-- If baseurlTag is not set then the proxyCallbackURL will not be updated --> + <constructor-arg index="0" value="${cas.ticket.validator.url}"/> + <property name="proxyCallbackUrl" value="${geonetwork.https.url}/j_spring_cas_security_proxyreceptor"/> + <property name="proxyGrantingTicketStorage" ref="pgtStorage"/> + <property name="acceptAnyProxy" value="true"/> + </bean> + <!-- TODO implement custom storage, maybe that stores in database --> + <bean id="pgtStorage" class="org.jasig.cas.client.proxy.ProxyGrantingTicketStorageImpl"/> + + <!-- This filter handles a Single Logout Request from the CAS Server --> + <bean id="singleLogoutFilter" class="org.jasig.cas.client.session.SingleSignOutFilter"/> + <!-- This filter redirects to the CAS Server to signal Single Logout should be performed --> + <bean id="requestSingleLogoutFilter" + class="org.springframework.security.web.authentication.logout.LogoutFilter"> + <constructor-arg ref="logoutSuccessHandler"/> + <constructor-arg> + <array> + <bean class="jeeves.config.springutil.LogoutUserSessionHandler"/> + <bean + class="org.springframework.security.web.authentication.logout.SecurityContextLogoutHandler"/> + </array> + </constructor-arg> + <property name="filterProcessesUrl" value="/signout"/> + </bean> + <bean id="logoutSuccessHandler" + class="org.springframework.security.web.authentication.logout.SimpleUrlLogoutSuccessHandler"> + <property name="defaultTargetUrl" value="${cas.logout.url}"></property> + </bean> + <bean id="casStatelessTicketCache" + class="org.springframework.security.cas.authentication.EhCacheBasedTicketCache"> + <property name="cache"> + <bean class="net.sf.ehcache.Cache" init-method="initialise" + destroy-method="dispose"> + <constructor-arg value="casTickets"/> + <constructor-arg value="50"/> + <constructor-arg value="true"/> + <constructor-arg value="false"/> + <constructor-arg value="3600"/> + <constructor-arg value="900"/> + <property name="diskStorePath" value="${java.io.tmpdir}"></property> + </bean> + </property> + </bean> +</beans> diff --git a/src/main/webapp/WEB-INF/config-security/config-security-core.xml b/src/main/webapp/WEB-INF/config-security/config-security-core.xml new file mode 100644 index 0000000..e862d59 --- /dev/null +++ b/src/main/webapp/WEB-INF/config-security/config-security-core.xml @@ -0,0 +1,382 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + ~ Copyright (C) 2001-2016 Food and Agriculture Organization of the + ~ United Nations (FAO-UN), United Nations World Food Programme (WFP) + ~ and United Nations Environment Programme (UNEP) + ~ + ~ This program is free software; you can redistribute it and/or modify + ~ it under the terms of the GNU General Public License as published by + ~ the Free Software Foundation; either version 2 of the License, or (at + ~ your option) any later version. + ~ + ~ This program is distributed in the hope that it will be useful, but + ~ WITHOUT ANY WARRANTY; without even the implied warranty of + ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + ~ General Public License for more details. + ~ + ~ You should have received a copy of the GNU General Public License + ~ along with this program; if not, write to the Free Software + ~ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + ~ + ~ Contact: Jeroen Ticheler - FAO - Viale delle Terme di Caracalla 2, + ~ Rome - Italy. email: geonetwork@osgeo.org + --> + +<beans + xmlns:sec="http://www.springframework.org/schema/security" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://www.springframework.org/schema/beans + http://www.springframework.org/schema/beans/spring-beans-3.0.xsd + + + http://www.springframework.org/schema/security + http://www.springframework.org/schema/security/spring-security-3.2.xsd" + xmlns="http://www.springframework.org/schema/beans"> + + <alias name="filterChainProxy" alias="springSecurityFilterChain"/> + + <bean id="filterChainProxy" class="org.springframework.security.web.FilterChainProxy"> + <constructor-arg> + <list> + <!-- @vlc start pas present dans geonetwork, utile ? --> + <sec:filter-chain pattern="/apps/**" filters="" /> + <sec:filter-chain pattern="/apps_extend/**" filters="" /> + <sec:filter-chain pattern="/maps/**" filters="" /> + <sec:filter-chain pattern="/scripts/**" filters="" /> + <!-- @vlc end --> + <sec:filter-chain pattern="/srv/swagger-resources/**" filters=""/> + <sec:filter-chain pattern="/srv/v2/**" filters=""/> + + <!-- TODO: This needs to be secured to not access private info --> + <sec:filter-chain pattern="/index/**" filters=""/> + + <sec:filter-chain pattern="/dashboards/**" filters=""/> + + <sec:filter-chain pattern="/doc/**" filters=""/> + <!-- wroAPI is protected for admin only + This is causing issue on node-change-warning page. + <sec:filter-chain pattern="/static/wroAPI" filters=""/>--> + <sec:filter-chain pattern="/static/**" filters=""/> + <sec:filter-chain pattern="/catalog/**" filters=""/> + <sec:filter-chain pattern="/test/**" filters=""/> + <sec:filter-chain pattern="/" filters=""/> + <sec:filter-chain pattern="/*.html" filters=""/> + <sec:filter-chain pattern="/*.jsp" filters=""/> + <sec:filter-chain pattern="/*.css" filters=""/> + <sec:filter-chain pattern="/images/**" filters=""/> + <sec:filter-chain pattern="/map/**" filters=""/> + <sec:filter-chain pattern="/htmlcache/**" filters=""/> + <sec:filter-chain pattern="/pdf/**" filters=""/> + <sec:filter-chain pattern="/loc/**" filters=""/> + <sec:filter-chain pattern="/xml/csw/test/*" filters=""/> + <sec:filter-chain pattern="/xml/schemas/**" filters=""/> + <sec:filter-chain pattern="/xsl/harvesting/**" filters=""/> + <sec:filter-chain pattern="/xsl/ownership/**" filters=""/> + <ref bean="coreFilterChain"/> + <!-- <sec:filter-chain pattern="/**" filters="securityContextPersistenceFilter, + logoutFilter, + formLoginFilter, + basicAuthenticationFilter, + requestCacheFilter, + anonymousFilter, + sessionMgmtFilter, + exceptionTranslationFilter, + filterSecurityInterceptor" /> --> + </list> + </constructor-arg> + </bean> + + + <bean id="coreFilterChain" class="org.springframework.security.web.DefaultSecurityFilterChain"> + <constructor-arg> + <bean class="org.springframework.security.web.util.AntPathRequestMatcher"> + <constructor-arg value="/**"/> + </bean> + </constructor-arg> + <constructor-arg> + <ref bean="filterChainFilters"/> + </constructor-arg> + </bean> + <bean id="filterChainFilters" class="java.util.ArrayList"> + <constructor-arg> + <list> + <ref bean="securityContextPersistenceFilter"/> + <!-- To disable csrf security (not recommended) comment the following line --> + <ref bean="csrfFilter" /> + <!-- To disable csrf security (not recommended) comment the upper line --> + <ref bean="logoutFilter"/> + <!-- A filter that check if an external service already authenticated user + (default implementation does nothing but can be overridden) --> + <ref bean="multiNodeAuthenticationFilter"/> + <ref bean="preAuthenticationFilter"/> + <ref bean="basicAuthenticationFilter"/> + <ref bean="formLoginFilter"/> + <ref bean="requestCacheFilter"/> + <ref bean="anonymousFilter"/> + <ref bean="sessionMgmtFilter"/> + <ref bean="exceptionTranslationFilter"/> + <ref bean="filterSecurityInterceptor"/> + </list> + </constructor-arg> + </bean> + <!-- A filter that check if an external service already authenticated user + (default implementation does nothing but can be overridden) --> + <bean id="multiNodeAuthenticationFilter" + class="jeeves.config.springutil.MultiNodeAuthenticationFilter"> + <property name="location" value="${wrongNodeRedirectURL}"/> + </bean> + <bean id="preAuthenticationFilter" class="jeeves.config.springutil.PassthroughFilter"/> + <bean id="securityContextPersistenceFilter" + class="org.springframework.security.web.context.SecurityContextPersistenceFilter"> + <property name="securityContextRepository" ref="securityContextRepository"/> + </bean> + + <bean id="authenticationManager" + class="org.springframework.security.authentication.ProviderManager"> + <property name="providers"> + <list> + <!-- Check if the preAuthenticationFilter has already authenticated user --> + <ref bean="preFilterAuthenticationProvider"/> + <ref bean="geonetworkAuthenticationProvider"/> + </list> + </property> + </bean> + + <bean id="securityContextRepository" + class='org.springframework.security.web.context.HttpSessionSecurityContextRepository'> + <property name="allowSessionCreation" value="true"/> + </bean> + + <bean id="formLoginFilter" + class="org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter"> + <property name="postOnly" value="true"/> + <property name="usernameParameter" value="username"/> + <property name="passwordParameter" value="password"/> + <property name="authenticationManager" ref="authenticationManager"/> + <!--<property name="filterProcessesUrl" value="/signin"/>--> + <property name="requiresAuthenticationRequestMatcher"> + <bean class="org.springframework.security.web.util.matcher.AntPathRequestMatcher"> + <constructor-arg name="pattern" value="/signin"/> + </bean> + </property> + <property name="authenticationDetailsSource" ref="authenticationDetailsSource"/> + <property name="authenticationFailureHandler"> + <bean + class="org.springframework.security.web.authentication.SimpleUrlAuthenticationFailureHandler"> + <constructor-arg value="${loginErrorForm}"></constructor-arg> + <property name="redirectStrategy"> + <bean class="jeeves.config.springutil.JeevesNodeAwareRedirectStrategy"/> + </property> + </bean> + </property> + <property name="authenticationSuccessHandler"> + <bean + class="org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler"> + <property name="defaultTargetUrl" value="/"/> + <property name="targetUrlParameter" value="redirectUrl"/> + </bean> + </property> + <property name="sessionAuthenticationStrategy"> + <bean + class="org.springframework.security.web.authentication.session.SessionFixationProtectionStrategy"/> + </property> + </bean> + + <bean id="basicAuthenticationFilter" + class="org.springframework.security.web.authentication.www.BasicAuthenticationFilter"> + <constructor-arg index="0" ref="authenticationManager"/> + <constructor-arg index="1" ref="basicAuthenticationEntryPoint"/> + <property name="authenticationDetailsSource" ref="authenticationDetailsSource"/> + </bean> + + <bean id="authenticationDetailsSource" + class="jeeves.config.springutil.JeevesAuthenticationDetailSource"/> + + <bean id="basicAuthenticationEntryPoint" + class="org.springframework.security.web.authentication.www.BasicAuthenticationEntryPoint"> + <property name="realmName" value="Geonetwork"/> + </bean> + + <bean id="logoutFilter" + class="org.springframework.security.web.authentication.logout.LogoutFilter"> + <constructor-arg ref="logoutSuccessHandler"/> + <constructor-arg> + <list> + <bean + class="org.springframework.security.web.authentication.logout.SecurityContextLogoutHandler"/> + <bean + class="org.springframework.security.web.authentication.logout.CookieClearingLogoutHandler"> + <constructor-arg> + <array> + <value>JSESSIONID</value> + </array> + </constructor-arg> + </bean> + </list> + </constructor-arg> + <property name="filterProcessesUrl" value="/signout"/> + </bean> + + <bean id="logoutSuccessHandler" + class="jeeves.config.springutil.JeevesNodeAwareLogoutSuccessHandler"> + <property name="defaultTargetUrl" value="${logout.success.url}"></property> + </bean> + <bean id="requestCacheFilter" + class="org.springframework.security.web.savedrequest.RequestCacheAwareFilter"/> + + <bean id="exceptionTranslationFilter" + class="org.springframework.security.web.access.ExceptionTranslationFilter"> + <constructor-arg index="0" ref="authenticationEntryPoint"/> + <property name="accessDeniedHandler" ref="accessDeniedHandler"/> + </bean> + + <bean id="defaultAuthenticationEntryPoint" + class="jeeves.config.springutil.JeevesNodeAwareLoginUrlEntryPoint"> + <constructor-arg name="loginFormUrl" value="${loginForm}"/> + </bean> + + <bean id="ajaxEntryPoint" class="org.springframework.security.web.authentication.Http403ForbiddenEntryPoint" /> + + <bean id="authenticationEntryPoint" + class="org.springframework.security.web.authentication.DelegatingAuthenticationEntryPoint"> + <constructor-arg> + <map> + <entry key-ref="apiRequestMatcher" value-ref="ajaxEntryPoint"/> + </map> + </constructor-arg> + <property name="defaultEntryPoint" ref="defaultAuthenticationEntryPoint" /> + </bean> + <bean class="org.springframework.security.web.util.matcher.AntPathRequestMatcher" id="apiRequestMatcher"> + <constructor-arg name="pattern" value="/*/api/**" /> + </bean> + + <bean id="accessDeniedHandler" + class="jeeves.config.springutil.JeevesAccessDeniedHandler"> + <property name="errorPage" value="/accessDenied.jsp"/> + <property name="onlyStatusResponsePages" value="/*/api/**" /> + </bean> + + <!-- TODO remember me. + <bean id="rememberMeFilter" + class="org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter"> + <property name="rememberMeServices" ref="rememberMeServices" /> + <property name="authenticationManager" ref="authenticationManager" /> + </bean> + + <bean id="rememberMeServices" class="org.springframework.security.web.authentication.rememberme.TokenBasedRememberMeServices"> + <property name="userDetailsService" ref="myUserDetailsService" /> + <property name="key" value="rememberGeonetwork" /> + </bean> + + <bean id="rememberMeAuthenticationProvider" class="org.springframework.security.authentication.rememberme.RememberMeAuthenticationProvider"> + <property name="key" value="rememberGeonetwork" /> + </bean> + --> + <!-- TODO session management --> + + <!-- Note: the id is critical since other components of the system will look up the encoder by its id --> + <bean class="org.springframework.security.crypto.password.StandardPasswordEncoder" + id="geonetworkEncoder"> + <constructor-arg value="${passwordSalt}"/> + </bean> + + <bean class="org.fao.geonet.kernel.security.GeonetworkAuthenticationProvider" + id="geonetworkAuthenticationProvider"> + <property name="checkUserNameOrEmail" value="true"/> + </bean> + + <!-- Check if the preAuthenticationFilter has already authenticated user --> + <bean + class="org.springframework.security.web.authentication.preauth.PreAuthenticatedAuthenticationProvider" + id="preFilterAuthenticationProvider"> + <property name="preAuthenticatedUserDetailsService"> + <bean id="preAuthenticatedUserDetailsService" + class="org.springframework.security.core.userdetails.UserDetailsByNameServiceWrapper"> + <property name="userDetailsService" ref="geonetworkAuthenticationProvider"/> + </bean> + </property> + </bean> + + + <bean id="roleHierarchy" + class="org.springframework.security.access.hierarchicalroles.RoleHierarchyImpl"> + <property name="hierarchy"> + <value> + Administrator > UserAdmin + UserAdmin > Reviewer + Reviewer > Editor + Editor > RegisteredUser + RegisteredUser > Guest + </value> + </property> + </bean> + + <bean id="accessDecisionManager" + class="org.springframework.security.access.vote.AffirmativeBased"> + <property name="decisionVoters"> + <list> + <bean class="org.springframework.security.access.vote.RoleHierarchyVoter"> + <constructor-arg ref="roleHierarchy"/> + </bean> + <bean class="org.springframework.security.access.vote.RoleVoter"/> + <bean class="org.springframework.security.web.access.expression.WebExpressionVoter"/> + <bean class="org.springframework.security.access.vote.AuthenticatedVoter"/> + </list> + </property> + </bean> + + <bean id="anonymousFilter" + class="org.springframework.security.web.authentication.AnonymousAuthenticationFilter"> + <property name="key" value="GeonetworkAnonymousUser"/> + <property name="userAttribute" value="anonymousUser,ROLE_ANONYMOUS"/> + </bean> + + <bean id="anonymousProvider" + class="org.springframework.security.authentication.AnonymousAuthenticationProvider"> + <property name="key" value="GeonetworkAnonymousUser"/> + </bean> + + <bean id="sessionMgmtFilter" + class="org.springframework.security.web.session.SessionManagementFilter"> + <constructor-arg ref="securityContextRepository"/> + </bean> + + <!-- This bean is here to allow evaluation permissions of the current user by Geonetwork --> + <bean id="webPrivilegeEvaluatorCore" + class="org.springframework.security.web.access.DefaultWebInvocationPrivilegeEvaluator"> + <constructor-arg ref="filterSecurityInterceptor"/> + </bean> + + <!-- Listener to log the last login date in the database --> + <bean class="org.fao.geonet.kernel.security.listener.UpdateTimestampListener" + id="updateTimestampListener"> + </bean> + + + <bean id="csrfFilter" class="org.springframework.security.web.csrf.CsrfFilter"> + <constructor-arg> + <ref bean="csrfTokenRepository"/> + </constructor-arg> + + <property name="requireCsrfProtectionMatcher" ref="geonetworkCsrfSecurityRequestMatcher" /> + </bean> + + <bean class="org.fao.geonet.security.web.csrf.CookieCsrfTokenRepository" + id="csrfTokenRepository"> + <property name="cookieHttpOnly" value="false"/> + </bean> + + <!-- RequestMatcher to exclude CSRF token from CSW requests --> + <bean id="geonetworkCsrfSecurityRequestMatcher" + class="org.fao.geonet.security.web.csrf.GeonetworkCsrfSecurityRequestMatcher"> + <constructor-arg> + <set> + <!-- CSW requests --> + <value>/[a-zA-Z0-9_\-]+/[a-z]{2,3}/csw-publication!?.*</value> + <value>/[a-zA-Z0-9_\-]+/[a-z]{2,3}/csw-.*</value> + <value>/[a-zA-Z0-9_\-]+/[a-z]{2,3}/csw!?.*</value> + <value>/[a-zA-Z0-9_\-]+/[a-z]{2,3}/xml.search!?</value> + </set> + </constructor-arg> + </bean> +</beans> diff --git a/src/main/webapp/WEB-INF/config-security/config-security-ldap.xml b/src/main/webapp/WEB-INF/config-security/config-security-ldap.xml new file mode 100644 index 0000000..5009cfc --- /dev/null +++ b/src/main/webapp/WEB-INF/config-security/config-security-ldap.xml @@ -0,0 +1,271 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + ~ Copyright (C) 2001-2016 Food and Agriculture Organization of the + ~ United Nations (FAO-UN), United Nations World Food Programme (WFP) + ~ and United Nations Environment Programme (UNEP) + ~ + ~ This program is free software; you can redistribute it and/or modify + ~ it under the terms of the GNU General Public License as published by + ~ the Free Software Foundation; either version 2 of the License, or (at + ~ your option) any later version. + ~ + ~ This program is distributed in the hope that it will be useful, but + ~ WITHOUT ANY WARRANTY; without even the implied warranty of + ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + ~ General Public License for more details. + ~ + ~ You should have received a copy of the GNU General Public License + ~ along with this program; if not, write to the Free Software + ~ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + ~ + ~ Contact: Jeroen Ticheler - FAO - Viale delle Terme di Caracalla 2, + ~ Rome - Italy. email: geonetwork@osgeo.org + --> + +<beans + xmlns:ctx="http://www.springframework.org/schema/context" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://www.springframework.org/schema/beans + http://www.springframework.org/schema/beans/spring-beans-3.0.xsd + http://www.springframework.org/schema/context + http://www.springframework.org/schema/context/spring-context-3.0.xsd" + xmlns="http://www.springframework.org/schema/beans"> + + <ctx:property-override location="WEB-INF/config-security/config-security-overrides.properties"/> + + <!-- Add ldap authentication to authentication manager --> + <bean id="ldapAuthenticationProviderPostProcessor" + class="jeeves.config.springutil.AddAuthenticationProviderPostProcessor"> + <constructor-arg ref="ldapAuthProvider"/> + </bean> + + <bean id="ldapUtils" class="org.fao.geonet.kernel.security.ldap.LDAPUtils"/> + + <!-- LDAP configuration--> + <bean id="contextSource" + class="org.springframework.security.ldap.DefaultSpringSecurityContextSource"> + <constructor-arg value="${ldap.base.provider.url}/${ldap.base.dn}"/> + <!-- For non anonymous binding --> + <property name="userDn" value="${ldap.security.principal}"/> + <property name="password" value="${ldap.security.credentials}"/> + </bean> + + <bean id="ldapAuthProvider" + class="org.springframework.security.ldap.authentication.LdapAuthenticationProvider"> + <constructor-arg> + <!-- + A PasswordComparisonAuthenticator + <bean class="org.springframework.security.ldap.authentication.PasswordComparisonAuthenticator"> + <constructor-arg ref="contextSource"/> + <property name="userDnPatterns"> + <list><value>${ldap.base.dn.pattern}</value></list> + </property> + <property name="passwordAttributeName" value="userPassword"/> + <property name="passwordEncoder"> + <!- - <bean class="org.springframework.security.authentication.encoding.PlaintextPasswordEncoder"/>- -> + <bean class="org.springframework.security.authentication.encoding.LdapShaPasswordEncoder"/> + </property> + </bean> + --> + <bean class="org.springframework.security.ldap.authentication.BindAuthenticator"> + <constructor-arg ref="contextSource"/> + <property name="userDnPatterns"> + <list> + <value>${ldap.base.dn.pattern}</value> + </list> + </property> + </bean> + </constructor-arg> + <property name="userDetailsContextMapper" ref="ldapUserContextMapper"/> + </bean> + + + <!-- User information retrieval could be defined in 3 ways by configuration. Only one could be defined + for an LDAP provider. --> + + <!-- Get all user information from the LDAP user's attributes (including profile and groups) --> + <!-- @vlc start --> + <!-- <bean id="ldapUserContextMapper" + class="org.fao.geonet.kernel.security.ldap.LDAPUserDetailsContextMapper"> + <property name="mapping"> + <map/> + </property> + <property name="profileMapping"> + <map/> + </property> + <property name="ldapBaseDn" value="${ldap.base.dn}"/> + <property name="importPrivilegesFromLdap" value="${ldap.privilege.import}"/> + <property name="createNonExistingLdapGroup" + value="${ldap.privilege.create.nonexisting.groups}"/> + <property name="createNonExistingLdapUser" value="${ldap.privilege.create.nonexisting.users}"/> + <property name="ldapManager" ref="ldapUserDetailsService"/> + <property name="contextSource" ref="contextSource"/> + </bean> --> + <!-- @vlc end --> + + <!-- Get all user information from the LDAP user's attributes (including profile and groups) + where profile and groups are stored in one attribute. A custom pattern is defined to extract + those information. --> + <!--<bean id="ldapUserContextMapper" class="org.fao.geonet.kernel.security.ldap.LDAPUserDetailsContextMapperWithPattern"> + <property name="mapping"> + <map/> + </property> + <property name="profileMapping"> + <map/> + </property> + <property name="importPrivilegesFromLdap" value="${ldap.privilege.import}"/> + <property name="createNonExistingLdapGroup" value="${ldap.privilege.create.nonexisting.groups}" /> + <property name="createNonExistingLdapUser" value="${ldap.privilege.create.nonexisting.users}" /> + + <property name="ldapManager" ref="ldapUserDetailsService" /> + + <property name="privilegePattern" value="${ldap.privilege.pattern}" /> + <property name="groupIndexInPattern" value="${ldap.privilege.pattern.idx.group}"/> + <property name="profilIndexInPattern" value="${ldap.privilege.pattern.idx.profil}"/> + + <property name="contextSource" ref="contextSource" /> + </bean>--> + + <!-- Get all user information from the LDAP user's attributes excluding profiles and groups + which are searched in another LDAP location. For profiles and groups, define the search + location and the extraction pattern. --> + <!-- @vlc start --> + <bean id="ldapUserContextMapper" class="org.fao.geonet.kernel.security.ldap.LDAPUserDetailsContextMapperWithProfileSearch"> + <property name="mapping"> + <map/> + </property> + <property name="profileMapping"> + <map/> + </property> + <property name="importPrivilegesFromLdap" value="${ldap.privilege.import}"/> + <property name="createNonExistingLdapGroup" value="${ldap.privilege.create.nonexisting.groups}" /> + <property name="createNonExistingLdapUser" value="${ldap.privilege.create.nonexisting.users}" /> + + <property name="ldapManager" ref="ldapUserDetailsService" /> + + <property name="groupAttribute" value="${ldap.privilege.search.group.attribute}"/> + <property name="groupObject" value="${ldap.privilege.search.group.object}"/> + <property name="groupQuery" value="${ldap.privilege.search.group.query}"/> + <property name="groupQueryPattern" value="${ldap.privilege.search.group.pattern}"/> + + <property name="privilegeAttribute" value="${ldap.privilege.search.privilege.attribute}"/> + <property name="privilegeObject" value="${ldap.privilege.search.privilege.object}"/> + <property name="privilegeQuery" value="${ldap.privilege.search.privilege.query}"/> + <property name="privilegeQueryPattern" value="${ldap.privilege.search.privilege.pattern}"/> + + <property name="contextSource" ref="contextSource" /> + </bean> + <!-- @vlc end --> + + <bean name="ldapSynchronizer" class="org.springframework.scheduling.quartz.JobDetailFactoryBean"> + <property name="jobClass" value="org.fao.geonet.kernel.security.ldap.LDAPSynchronizerJob"/> + <property name="jobDataAsMap"> + <map> + <entry key="contextSource" value-ref="contextSource"/> + <entry key="ldapUserSearchBase" value="${ldap.sync.user.search.base}"/> + <entry key="ldapUserSearchFilter" value="${ldap.sync.user.search.filter}"/> + <entry key="ldapUserSearchAttribute" value="${ldap.sync.user.search.attribute}"/> + + <entry key="createNonExistingLdapGroup" + value="${ldap.privilege.create.nonexisting.groups}"/> + <entry key="ldapGroupSearchBase" value="${ldap.sync.group.search.base}"/> + <entry key="ldapGroupSearchFilter" value="${ldap.sync.group.search.filter}"/> + <entry key="ldapGroupSearchAttribute" value="${ldap.sync.group.search.attribute}"/> + <entry key="ldapGroupSearchPattern" value="${ldap.sync.group.search.pattern}"/> + + </map> + </property> + </bean> + + <bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"> + <property name="jobDetail" ref="ldapSynchronizer"/> + <property name="cronExpression" value="${ldap.sync.cron}"/> + <property name="startDelay" value="${ldap.sync.startDelay}"/> + </bean> + + <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> + <property name="jobFactory"> + <bean class="org.fao.geonet.util.spring.AutowiringSpringBeanJobFactory"/> + </property> + <property name="triggers"> + <list> + <ref bean="cronTrigger"/> + </list> + </property> + </bean> + + <bean id="ldapUserDetailsService" + class="org.fao.geonet.kernel.security.ldap.LdapUserDetailsManager"> + <constructor-arg ref="contextSource"/> + <constructor-arg name="groupMemberAttributeName" + value="${ldap.privilege.search.group.queryprop}"/> + <constructor-arg name="query" + value="${ldap.privilege.search.group.query}"/> + <property name="groupSearchBase" + value="${ldap.privilege.search.group.object}"/> + <property name="usernameMapper" ref="usernameMapper"/> + <property name="userDetailsMapper" ref="ldapUserContextMapper"/> + </bean> + + <bean id="usernameMapper" + class="org.springframework.security.ldap.DefaultLdapUsernameToDnMapper"> + <constructor-arg index="0" type="java.lang.String" + name="userDnBase" value="${ldap.base.search.base}"/> + <constructor-arg index="1" type="java.lang.String" + name="usernameAttribute" value="${ldap.sync.user.search.attribute}"/> + </bean> + + + <!-- Uncomment if you want to automatically create groups in LDAP + when creating groups on geoNetwork. --> + <!-- <bean class="org.fao.geonet.kernel.security.ldap.AutoCreateGroups"> + <property name="contextSource" ref="contextSource"/> + Where should groups be stored. + <property name="baseDn" value="${ldap.privilege.search.group.object}"/> + Identifier property for groups + <property name="groupAttribute" value="${ldap.privilege.search.group.attribute}"/> + Should we create a set of groups to define profiles on LDAP? + <property name="withProfiles" value="true"/> + Used only when withProfiles is true. 0 is the profile, 1 is the group name + <property name="profilePattern" value="{1}_{0}"/> + Map role names with role identifiers + <property name="profileMapping"> + <map/> + </property> + </bean> --> + + <!-- Uncomment if you want to sync additions in user group relations with LDAP --> + <!-- <bean class="org.fao.geonet.kernel.security.ldap.AutoUpdateUserGroups"> + <property name="contextSource" ref="contextSource"/> + Where should groups be stored. + <property name="baseDn" value="${ldap.privilege.search.group.object}"/> + Identifier property for groups + <property name="groupAttribute" value="${ldap.privilege.search.group.attribute}"/> + Should we create a set of groups to define profiles on LDAP? + <property name="withProfiles" value="true"/> + Used only when withProfiles is true. 0 is the profile, 1 is the group name + <property name="profilePattern" value="{1}_{0}"/> + Map role names with role identifiers + <property name="profileMapping"> + <map/> + </property> + </bean> --> + + <!-- Uncomment if you want to sync removal in user group relations with LDAP --> + <!-- <bean class="org.fao.geonet.kernel.security.ldap.AutoUpdateUserGroupsOnRemove"> + <property name="contextSource" ref="contextSource"/> + Where should groups be stored. + <property name="baseDn" value="${ldap.privilege.search.group.object}"/> + Identifier property for groups + <property name="groupAttribute" value="${ldap.privilege.search.group.attribute}"/> + Should we create a set of groups to define profiles on LDAP? + <property name="withProfiles" value="true"/> + Used only when withProfiles is true. 0 is the profile, 1 is the group name + <property name="profilePattern" value="{1}_{0}"/> + Map role names with role identifiers + <property name="profileMapping"> + <map/> + </property> +</bean> --> + +</beans> diff --git a/src/main/webapp/WEB-INF/config-security/config-security-overrides.properties b/src/main/webapp/WEB-INF/config-security/config-security-overrides.properties new file mode 100644 index 0000000..e3396bc --- /dev/null +++ b/src/main/webapp/WEB-INF/config-security/config-security-overrides.properties @@ -0,0 +1,46 @@ +# +# Copyright (C) 2001-2016 Food and Agriculture Organization of the +# United Nations (FAO-UN), United Nations World Food Programme (WFP) +# and United Nations Environment Programme (UNEP) +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or (at +# your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA +# +# Contact: Jeroen Ticheler - FAO - Viale delle Terme di Caracalla 2, +# Rome - Italy. email: geonetwork@osgeo.org +# + +# Map user information to LDAP attributes and default values +# Ex : ldapUserContextMapper.mapping[name]=ldap_attribute,default_value +ldapUserContextMapper.mapping[username]=uid, +ldapUserContextMapper.mapping[name]=sn, +ldapUserContextMapper.mapping[surname]=givenName, +ldapUserContextMapper.mapping[mail]=mail,data@myorganization.org +ldapUserContextMapper.mapping[organisation]=, +ldapUserContextMapper.mapping[kind]=, +ldapUserContextMapper.mapping[address]=, +ldapUserContextMapper.mapping[zip]=, +ldapUserContextMapper.mapping[state]=, +ldapUserContextMapper.mapping[city]=, +ldapUserContextMapper.mapping[country]=, +#ldapUserContextMapper.mapping[privilege]=privileges,sample +# If not set, the default profile is RegisteredUser +# Valid profiles are http://geonetwork-opensource.org/manuals/trunk/eng/developer/apidocs/geonetwork/org/fao/geonet/constants/Geonet.Profile.html +ldapUserContextMapper.mapping[profile]=alkProfileName,Administrator +ldapUserContextMapper.mapping[privilege]=alkMemberOfGroup, + +# Map LDAP custom profiles to catalog profiles. Not used if ldap.privilege.pattern is defined. +#ldapUserContextMapper.profileMapping[Admin]=Administrator +#ldapUserContextMapper.profileMapping[Editeur]=Reviewer +#ldapUserContextMapper.profileMapping[Public]=RegisteredUser diff --git a/src/main/webapp/WEB-INF/config-security/config-security.properties b/src/main/webapp/WEB-INF/config-security/config-security.properties new file mode 100644 index 0000000..411da68 --- /dev/null +++ b/src/main/webapp/WEB-INF/config-security/config-security.properties @@ -0,0 +1,119 @@ +# +# Copyright (C) 2001-2016 Food and Agriculture Organization of the +# United Nations (FAO-UN), United Nations World Food Programme (WFP) +# and United Nations Environment Programme (UNEP) +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or (at +# your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA +# +# Contact: Jeroen Ticheler - FAO - Viale delle Terme di Caracalla 2, +# Rome - Italy. email: geonetwork@osgeo.org +# + +#Core security properties + +logout.success.url=/home?node=@@nodeId@@ +loginForm=/signin?node=@@nodeId@@ +loginErrorForm=/login.jsp?node=@@nodeId@@&failure=true +passwordSalt=secret-hash-salt= + +# LDAP Connection Settings +ldap.base.provider.url=ldap://localhost:389 +ldap.base.dn=dc=alkante,dc=domprodige +ldap.security.principal=cn=admin,dc=alkante,dc=domprodige +#ldap.security.credentials=ldap +ldap.security.credentials=${overrides.ldap.security.credentials} + + +ldap.base.search.base=ou=Users +ldap.base.dn.pattern=uid={0},${ldap.base.search.base} +#ldap.base.dn.pattern=mail={0},${ldap.base.search.base} + + +# Define if groups and profile information are imported from LDAP. If not, local database is used. +# When a new user connect first, the default profile is assigned. A user administrator can update +# privilege information. +ldap.privilege.import=true + +# Define if LDAP groups should be create in catalog +# database if they do not exist. +ldap.privilege.create.nonexisting.groups=true + +# Define if users should be saved in the LDAP +ldap.privilege.create.nonexisting.users=true + + + +# Define the way to extract profiles and privileges from the LDAP +# 1. Define one attribute for the profile and one for groups in config-security-overrides.properties + +# 2. Define one attribute for the privilege and define a custom pattern (use LDAPUserDetailsContextMapperWithPattern in config-security.xml). +#ldap.privilege.pattern= +#ldap.privilege.pattern=CAT_(.*)_(.*) +#ldap.privilege.pattern.idx.group=1 +#ldap.privilege.pattern.idx.profil=2 + + +# 3. Define custom location for extracting group and role (no support for group/role combination) (use LDAPUserDetailsContextMapperWithProfileSearch in config-security.xml). +ldap.privilege.search.group.attribute=ou +ldap.privilege.search.group.object=ou=Groups +ldap.privilege.search.group.queryprop=ou +#ldap.privilege.search.group.query=(&(objectClass=*)(memberUid=uid={0},${ldap.base.search.base},${ldap.base.dn})(cn=EL_*)) +#ldap.privilege.search.group.query=(&(objectClass=*)(memberUid=uid={0},${ldap.base.search.base},${ldap.base.dn})(|(ou=SP_*)(ou=EL_*))) +#ldap.privilege.search.group.query=(&(objectClass=alkPerson)(uid={0},${ldap.base.search.base},${ldap.base.dn})) +ldap.privilege.search.group.query=(&(objectClass=alkOUGroup)(alkMember=${ldap.base.dn.pattern},${ldap.base.dn})) +#ldap.privilege.search.group.pattern=EL_(.*) +ldap.privilege.search.group.pattern=(.*) + + +ldap.privilege.search.privilege.attribute=ou +ldap.privilege.search.privilege.object=ou=Roles +#ldap.privilege.search.privilege.query=(&(objectClass=*)(memberUid=uid={0},${ldap.base.search.base},${ldap.base.dn})(alkProfileName=SV_*)) +ldap.privilege.search.privilege.query=(&(objectClass=alkOUProfile)(alkMember=${ldap.base.dn.pattern},${ldap.base.dn})) +#ldap.privilege.search.privilege.pattern=SV_(.*) +ldap.privilege.search.privilege.pattern=(.*) + + +# Run LDAP sync every day at 23:30 +ldap.sync.cron=0 30 23 * * ? +#ldap.sync.cron=0 * * * * ? +#ldap.sync.cron=0 0/1 * 1/1 * ? * +ldap.sync.startDelay=60000 +ldap.sync.user.search.base=${ldap.base.search.base} +ldap.sync.user.search.filter=(&(objectClass=alkPerson)(uid={0})) +ldap.sync.user.search.attribute=uid + +ldap.sync.group.search.base=ou=Groups +#ldap.sync.group.search.filter=(&(objectClass=posixGroup)(ou=EL_*)) +ldap.sync.group.search.filter=(&(objectClass=alkOUGroup)(ou={0})) +ldap.sync.group.search.attribute=ou +#ldap.sync.group.search.pattern=EL_(.*) +ldap.sync.group.search.pattern=(.*) + + +# CAS properties +cas.baseURL=${overrides.cas.baseURL} +cas.ticket.validator.url=${cas.baseURL} +cas.login.url=${cas.baseURL}/login +#cas.logout.url=${cas.baseURL}/logout?url=${geonetwork.https.url} +cas.logout.url=${cas.baseURL}/logout?service=${geonetwork.https.url} + +# either the hardcoded url to the server +# or if has the form @blah@ it will be replaced with +# the server details from the server configuration +#geonetwork.https.url=@to_be_replaced_at_runtime@ +geonetwork.https.url=${overrides.geonetwork.https.url} + +# The url to redirect to if a user logs in to one node then logs into another. +wrongNodeRedirectURL=/@@nodeId@@/@@lang@@/node-change-warning?oldUserName=@@oldUserName@@&redirectedFrom=@@redirectedFrom@@&oldNodeId=@@oldNodeId@@ diff --git a/src/main/webapp/WEB-INF/config-security/config-security.xml b/src/main/webapp/WEB-INF/config-security/config-security.xml new file mode 100644 index 0000000..84c3bc0 --- /dev/null +++ b/src/main/webapp/WEB-INF/config-security/config-security.xml @@ -0,0 +1,44 @@ +<!-- + ~ Copyright (C) 2001-2016 Food and Agriculture Organization of the + ~ United Nations (FAO-UN), United Nations World Food Programme (WFP) + ~ and United Nations Environment Programme (UNEP) + ~ + ~ This program is free software; you can redistribute it and/or modify + ~ it under the terms of the GNU General Public License as published by + ~ the Free Software Foundation; either version 2 of the License, or (at + ~ your option) any later version. + ~ + ~ This program is distributed in the hope that it will be useful, but + ~ WITHOUT ANY WARRANTY; without even the implied warranty of + ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + ~ General Public License for more details. + ~ + ~ You should have received a copy of the GNU General Public License + ~ along with this program; if not, write to the Free Software + ~ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + ~ + ~ Contact: Jeroen Ticheler - FAO - Viale delle Terme di Caracalla 2, + ~ Rome - Italy. email: geonetwork@osgeo.org + --> + +<beans + xmlns:ctx="http://www.springframework.org/schema/context" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://www.springframework.org/schema/beans + http://www.springframework.org/schema/beans/spring-beans-3.0.xsd + http://www.springframework.org/schema/context + http://www.springframework.org/schema/context/spring-context-3.0.xsd" + xmlns="http://www.springframework.org/schema/beans"> + <!-- <sec:debug/> --> + <import resource="config-security-core.xml"/> + <import resource="config-security-mapping.xml"/> + <import resource="config-security-ldap.xml"/> + <!-- <import resource="config-security-ecas.xml"/> --> + <import resource="config-security-cas.xml"/> + <import resource="config-security-cas-ldap.xml"/> + <!-- <import resource="config-security-cas-database.xml"/> --> + <!-- <import resource="config-security-shibboleth.xml"/> --> + <ctx:property-placeholder location="WEB-INF/config-security/config-security.properties" + file-encoding="UTF-8" ignore-unresolvable="true" order="100"/> + +</beans> diff --git a/src/main/webapp/WEB-INF/config-spring-geonetwork.xml b/src/main/webapp/WEB-INF/config-spring-geonetwork.xml new file mode 100644 index 0000000..992177d --- /dev/null +++ b/src/main/webapp/WEB-INF/config-spring-geonetwork.xml @@ -0,0 +1,197 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + ~ Copyright (C) 2001-2016 Food and Agriculture Organization of the + ~ United Nations (FAO-UN), United Nations World Food Programme (WFP) + ~ and United Nations Environment Programme (UNEP) + ~ + ~ This program is free software; you can redistribute it and/or modify + ~ it under the terms of the GNU General Public License as published by + ~ the Free Software Foundation; either version 2 of the License, or (at + ~ your option) any later version. + ~ + ~ This program is distributed in the hope that it will be useful, but + ~ WITHOUT ANY WARRANTY; without even the implied warranty of + ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + ~ General Public License for more details. + ~ + ~ You should have received a copy of the GNU General Public License + ~ along with this program; if not, write to the Free Software + ~ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + ~ + ~ Contact: Jeroen Ticheler - FAO - Viale delle Terme di Caracalla 2, + ~ Rome - Italy. email: geonetwork@osgeo.org + --> + +<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" + xmlns:util="http://www.springframework.org/schema/util" + default-lazy-init="true" + xmlns="http://www.springframework.org/schema/beans" + xmlns:context="http://www.springframework.org/schema/context" + xsi:schemaLocation=" + http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd + http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd + http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd +"> + <context:annotation-config/> + + <context:property-placeholder location="WEB-INF/config.properties" + file-encoding="UTF-8" + ignore-unresolvable="true" /> + + <context:property-placeholder location="WEB-INF/config-overrides.properties" + file-encoding="UTF-8" + ignore-unresolvable="true" /> + + <import resource="config-spring-env.xml"/> + <import resource="config-security/config-security.xml"/> + <import resource="config-summary.xml"/> + <import resource="classpath:JZkitApplicationContext.xml"/> + + <import resource="config-db/initial_data.xml"/> + <import resource="config-print/config-spring-print.xml"/> + + <!-- For database configuration look in the config-node configuration files (config-node/srv.xml) --> + + <!-- Import the versioning configuration (subversion etc...) --> + <import resource="config-versioning.xml"/> + + <bean name="statusActionFactory" + class="org.fao.geonet.kernel.metadata.StatusActionsFactory"> + <constructor-arg name="className" value="org.fao.geonet.kernel.metadata.DefaultStatusActions"/> + </bean> + + + <bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> + <property name="applicationContextSchedulerContextKey" value="applicationContext"/> + </bean> + + <bean id="luceneDirectoryFactory" class="org.fao.geonet.kernel.search.index.FSDirectoryFactory" + lazy-init="true"/> + + <bean id="httpRequestFactor" class="org.fao.geonet.utils.GeonetHttpRequestFactory"> + <property name="numberOfConcurrentRequests" value="30"/> + </bean> + + <bean id="language" class="org.fao.geonet.web.DefaultLanguage"> + <property name="language" value="${language.default}"/> + <property name="forceDefault" value="${language.forceDefault}"/> + </bean> + + <!-- Define the languages in the UI. Seems like these should come from database + at some point but at the moment they are needed here. --> + <util:set id="languages" value-type="java.lang.String"> + <value>ara</value> + <value>cat</value> + <value>chi</value> + <value>dut</value> + <value>eng</value> + <value>fin</value> + <value>fre</value> + <value>ger</value> + <value>ita</value> + <value>nor</value> + <value>pol</value> + <value>por</value> + <value>rus</value> + <value>spa</value> + <value>tur</value> + </util:set> + + <util:map id="jpaPropertyMap"> + <entry key="shared-cache-mode" value="ENABLE_SELECTIVE"/> + <entry key="javax.persistence.lock.timeout" value="30000"/> + <entry key="org.hibernate.flushMode" value="AUTO"/> + <entry key="access" value="PROPERTY"/> + <entry key="hibernate.id.new_generator_mappings" value="true"/> + <entry key="hibernate.cache.use_second_level_cache" value="true"/> + <!--<entry key="hibernate.cache.region.factory_class" value="org.hibernate.cache.internal.NoCachingRegionFactory"/> --> + <entry key="hibernate.cache.region.factory_class" + value="org.hibernate.cache.ehcache.EhCacheRegionFactory"/> + <entry key="hibernate.jdbc.batch_size" value="3"/> + <entry key="hibernate.jdbc.batch_versioned_data" value="true"/> + <entry key="hibernate.enable_lazy_load_no_trans" value="true"/> + <!-- If a specific schema has to be used + <entry key="hibernate.default_schema" value="catalog"/> + + Note: If using more than one catalog in different schema + hibernate may failed to create sequence + (https://hibernate.atlassian.net/browse/HHH-5538). + In that case you may want to use a custom dialect + <entry key="hibernate.dialect" value="org.fao.geonet.dialect.CustomPostgreSQLDialect" /> + --> + </util:map> + + <util:list id="wro4jUrlsToInitialize" value-type="java.lang.String"> + <value>lib.js</value> + <value>nv.d3.css</value> + <value>gn_search_default.css</value> + <value>gn_search_default.js</value> + <value>gn_editor_default.css</value> + <value>gn_editor.js</value> + <value>gn_admin_default.css</value> + <value>gn_admin.js</value> + <value>gn_login_default.css</value> + <value>srv_custom_style.css</value> + <value>gn_login.js</value> + </util:list> + + <util:list id="formattersToInitialize" value-type="java.lang.String"> + <value>full_view</value> + <value>xsl-view</value> + <value>xml_view</value> + <value>hierarchy_view</value> + </util:list> + + <util:set id="formatterRemoteFormatAllowedHosts" value-type="java.lang.String"></util:set> + <bean id="threadResources" class="org.mapfish.print.ThreadResources"> + <property name="connectionTimeout" value="30000"/> + <property name="socketTimeout" value="30000"/> + <property name="globalParallelFetches" value="50"/> + <property name="perHostParallelFetches" value="10"/> + </bean> + + <util:set id="regionGetMapExpandFactors" set-class="java.util.TreeSet"> + <bean class="org.fao.geonet.services.region.ExpandFactor" + p:proportion=".0005" p:factor="2"/> + <bean class="org.fao.geonet.services.region.ExpandFactor" + p:proportion=".01" p:factor=".5"/> + <bean class="org.fao.geonet.services.region.ExpandFactor" + p:proportion=".015" p:factor=".2"/> + </util:set> + + <util:map id="regionGetMapBackgroundLayers"> + <entry key="osm" + value="http://ows.terrestris.de/osm/service?SERVICE=WMS&REQUEST=GetMap&VERSION=1.1.0&LAYERS=OSM-WMS&STYLES=default&SRS={srs}&BBOX={minx},{miny},{maxx},{maxy}&WIDTH={width}&HEIGHT={height}&FORMAT=image/png"/> + </util:map> + + + <bean id="slashSplitClassifier" + class="org.fao.geonet.kernel.search.classifier.Split" lazy-init="true"> + <constructor-arg name="regex" value="\s*?/\s*?"/> + </bean> + <!-- + Example configuration for hierarchical facet based on + the GeoNetwork region thesaurus or GEMET. + + Do not forget to add facet configuration on config-summary.xml + + <bean id="regionKeywordClassifier" + class="org.fao.geonet.kernel.search.classifier.TermLabel" lazy-init="true"> + <constructor-arg name="finder" ref="ThesaurusManager"/> + <constructor-arg name="conceptScheme" value="http://geonetwork-opensource.org/thesaurus/naturalearth-and-seavox"/> + <constructor-arg name="langCode" value="eng"/> + </bean> + <bean id="gemetKeywordClassifier" + class="org.fao.geonet.kernel.search.classifier.TermLabel" lazy-init="true"> + <constructor-arg name="finder" ref="ThesaurusManager"/> + <constructor-arg name="conceptScheme" value="http://geonetwork-opensource.org/gemet"/> + <constructor-arg name="langCode" value="eng"/> + </bean> + --> + <bean id="domainKeywordClassifier" + class="org.fao.geonet.kernel.search.classifier.TermLabel" lazy-init="true"> + <constructor-arg name="finder" ref="ThesaurusManager"/> + <constructor-arg name="conceptScheme" value="http://geonetwork-opensource.org/domaines"/> + <constructor-arg name="langCode" value="eng"/> + </bean> +</beans> diff --git a/src/main/webapp/WEB-INF/config-summary.xml b/src/main/webapp/WEB-INF/config-summary.xml new file mode 100644 index 0000000..ee9124f --- /dev/null +++ b/src/main/webapp/WEB-INF/config-summary.xml @@ -0,0 +1,270 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + ~ Copyright (C) 2001-2016 Food and Agriculture Organization of the + ~ United Nations (FAO-UN), United Nations World Food Programme (WFP) + ~ and United Nations Environment Programme (UNEP) + ~ + ~ This program is free software; you can redistribute it and/or modify + ~ it under the terms of the GNU General Public License as published by + ~ the Free Software Foundation; either version 2 of the License, or (at + ~ your option) any later version. + ~ + ~ This program is distributed in the hope that it will be useful, but + ~ WITHOUT ANY WARRANTY; without even the implied warranty of + ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + ~ General Public License for more details. + ~ + ~ You should have received a copy of the GNU General Public License + ~ along with this program; if not, write to the Free Software + ~ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + ~ + ~ Contact: Jeroen Ticheler - FAO - Viale delle Terme di Caracalla 2, + ~ Rome - Italy. email: geonetwork@osgeo.org + --> + +<bean:beans xmlns:bean="http://www.springframework.org/schema/beans" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + default-lazy-init="true" + xmlns="http://www.fao.org/geonetwork/spring" + xsi:schemaLocation=" + http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd + http://www.fao.org/geonetwork/spring http://www.fao.org/geonetwork/spring/gn-spring.xsd + " +> + <!-- + Configuration of the taxonomy index used for faceting and + formatting/building facet summaries + + Each facet to be indexed is defined in the facets element. The facets element + lists the facets to index and how they should be indexed using attributes on facet elements as follows: + + * name: the name of the facet + * indexKey: the name of the indexing field to be used for the facet + * label: the label to use for the facet in returned summaries + * classifier: (optional) a reference to a spring bean that should be used to + determine facet values for the indexing field. + The bean must implement the org.fao.kernel.search.classifier.Classifier interface + Defaults to a classifier which uses the value of the field to be indexed + + When a facet definitionis modified or added, the index MUST be rebuilt. + + How facet summaries should be built and formatted for each summary type is defined + in the summaryTypes element. The summaryTypes element contains a number of summary type elements each + of which define a facet summary that can be configured for a service. Each summary type + element contains a number of item elements defining facets to be returned and how they + should be formatted as follows: + + * facet: the name of a facet defined above + * (optional) sortBy: the ordering for the facet. Defaults to by count. + * (optional) sortOrder: asc or desc. Defaults is descendant. + * (optional) max: the number of values to be returned for the facet. Defaults to 10. + * (optional) depth: the depth to which hierarchical facets should be summarised. Defaults to 1. + * (optional) format: the format to be used for generating facet summary elements. Defaults to + 'FACET_NAME'. Can also be 'DIMENSION', which uses a top level + dimension tag and category tags for sub-categories which is more suitable for hierarchical facets. + * (optional) translator: Define a DB translator to retrieve label from description + tables (eg. categoriesdes) or codelist translator to retrieve label from schema + codelists files. + + eg. for category + + <item dimension="category" plural="categories" indexKey="_cat" max="45" + translator="db:org.fao.geonet.repository.MetadataCategoryRepository:findOneByName"/> + + or for group + + <item dimension="groupOwner" plural="groupOwners" indexKey="_groupOwner" + max="99" sortBy="value" translator="db:org.fao.geonet.repository.GroupRepository:findOne:int"/> + + --> + + <facets> + <facet name="keyword" indexKey="keyword" label="keywords" localized="true"/> + <facet name="topicCat" indexKey="topicCat" label="topicCats" localized="true"/> + <facet name="category" indexKey="_cat" label="categories" localized="true"/> + <facet name="inspireTheme" indexKey="inspiretheme" label="inspireThemes"/> + <facet name="inspireThemeWithAc" indexKey="inspirethemewithac" label="inspireThemesWithAc"/> + <facet name="inspireThemeURI" indexKey="inspirethemeuri" label="inspireThemesURI"/> + <facet name="denominator" indexKey="denominator" label="denominators"/> + <facet name="resolution" indexKey="resolution" label="resolutions"/> + <facet name="spatialRepresentationType" indexKey="cl_spatialRepresentationType" + label="spatialRepresentationTypes"/> + <facet name="orgName" indexKey="orgName" label="orgNames" localized="true"/> + <facet name="orgNameTree" indexKey="orgNameTree" label="orgNamesTree" + classifier="slashSplitClassifier"/> + <facet name="metadataPOC" indexKey="metadataPOC" label="metadataPOCs"/> + <facet name="serviceType" indexKey="serviceType" label="serviceTypes"/> + <facet name="type" indexKey="type" label="types"/> + <facet name="createDateYear" indexKey="createDateYear" label="createDateYears"/> + <facet name="format" indexKey="format" label="formats"/> + <facet name="title" indexKey="title" label="titles"/> + <facet name="metadataType" indexKey="_isTemplate" label="metadataTypes"/> + <facet name="isValid" indexKey="_valid" label="isValid" localized="true"/> + <facet name="isHarvested" indexKey="_isHarvested" label="isHarvested"/> + <facet name="mdStatus" indexKey="_status" label="mdStatus"/> + <facet name="status" indexKey="cl_status" label="status"/> + <facet name="sourceCatalog" indexKey="_source" label="sourceCatalog"/> + <facet name="standard" indexKey="_schema" label="standards"/> + <facet name="subTemplateType" indexKey="_root" label="subTemplateTypes"/> + <facet name="groupOwner" indexKey="_groupOwner" label="groupOwners"/> + <facet name="publishedForGroup" indexKey="_groupPublished" label="publishedForGroup"/> + <facet name="isPublishedToAll" indexKey="_isPublishedToAll" label="isPublishedToAll" /> + + <facet name="domainKeyword" + label="Domaines" + indexKey="keyword" + classifier="domainKeywordClassifier"/> + + <!-- + Example configuration for hierarchical facet based on + the GeoNetwork region thesaurus or GEMET. + + Do not forget to add classifier configuration on config-spring-geonetwork.xml + + Then add facet in one summaryType having format="DIMENSION" attribute. + <facet name="region" label="regions" + indexKey="keyword" + classifier="regionKeywordClassifier"/> + <facet name="gemetKeyword" label="gemetKeywords" + indexKey="keyword" + classifier="gemetKeywordClassifier"/> + --> + + <facet name="maintenanceAndUpdateFrequency" indexKey="cl_maintenanceAndUpdateFrequency" + label="maintenanceAndUpdateFrequencies"/> + <facet name="mdActions" indexKey="_mdActions" label="mdActions"/> + </facets> + + <summaryTypes> + <summaryType name="details" format="DIMENSION"> + <item facet="domainKeyword" depth="3" max="1000" + translator="term:http://geonetwork-opensource.org/domaines"/> + + <item facet="isHarvested" max="2" sortBy="value" translator="apploc:"/> + <item facet="sourceCatalog" + translator="db:org.fao.geonet.repository.SourceRepository:findOneByUuid" max="25"/> + + <item facet="type" translator="codelist:gmd:MD_ScopeCode"/> + <item facet="mdActions"/> + <item facet="topicCat" translator="codelist:gmd:MD_TopicCategoryCode" max="20"/> + <item facet="inspireThemeURI" sortBy="value" sortOrder="asc" max="35" + translator="term:http://geonetwork-opensource.org/inspire-theme"/> + <!--<item facet="inspireTheme" sortBy="value" sortOrder="asc" max="35"/>--> + <!--<item facet="inspireThemeWithAc" sortBy="value" sortOrder="asc" max="35"/>--> + <item facet="keyword" max="15"/> + <item facet="orgName" max="25"/> + <item facet="sourceCatalog" + translator="db:org.fao.geonet.repository.SourceRepository:findOneByUuid"/> + <item facet="createDateYear" sortBy="value" sortOrder="desc" max="40"/> + <item facet="format" max="15" sortBy="value" sortOrder="asc"/> + <item facet="spatialRepresentationType" + translator="codelist:gmd:MD_SpatialRepresentationTypeCode"/> + <item facet="maintenanceAndUpdateFrequency" + translator="codelist:gmd:MD_MaintenanceFrequencyCode"/> + <item facet="status" translator="codelist:gmd:MD_ProgressCode"/> + <item facet="serviceType"/> + <item facet="denominator" sortBy="numValue" sortOrder="desc"/> + <item facet="resolution" sortBy="numValue" sortOrder="desc"/> + <!-- + <item facet="region" + translator="term:http://geonetwork-opensource.org/thesaurus/naturalearth-and-seavox"/> + <item facet="gemetKeyword" + translator="term:http://geonetwork-opensource.org/gemet"/> + --> + </summaryType> + + <summaryType name="manager" format="DIMENSION"> + <item facet="domainKeyword" depth="3" max="1000" + translator="term:http://geonetwork-opensource.org/domaines"/> + <item facet="sourceCatalog" + translator="db:org.fao.geonet.repository.SourceRepository:findOneByUuid" max="25"/> + <item facet="type" translator="codelist:gmd:MD_ScopeCode"/> + <!-- ALK DELETE + <item facet="category" max="99" sortBy="value" + translator="db:org.fao.geonet.repository.MetadataCategoryRepository:findOneByName"/> --> + <item facet="mdStatus" max="10" sortBy="value" + translator="db:org.fao.geonet.repository.StatusValueRepository:findOne:int"/> + + <item facet="isValid" max="3" sortBy="value" translator="apploc:validStatus-"/> + <item facet="groupOwner" max="199" sortBy="value" + translator="db:org.fao.geonet.repository.GroupRepository:findOne:int"/> + <item facet="publishedForGroup" max="199" sortBy="value" + translator="db:org.fao.geonet.repository.GroupRepository:findOneByName"/> + <item facet="standard" max="15" sortBy="value"/> + <item facet="isHarvested" max="2" sortBy="value" translator="apploc:"/> + <item facet="metadataType" max="3" sortBy="value" translator="apploc:recordType-"/> + <item facet="spatialRepresentationType" + translator="codelist:gmd:MD_SpatialRepresentationTypeCode"/> + <item facet="isPublishedToAll" max="2" sortBy="value" translator="apploc:"/> + </summaryType> + + <!-- (deprecated) old-style configuration supporting only + flat facet. It's recommended to use format="DIMENSION" for facet. + See above. --> + <summaryType name="hits"> + <item facet="type" translator="codelist:gmd:MD_ScopeCode"/> + <item facet="topicCat" translator="codelist:gmd:MD_TopicCategoryCode" max="20"/> + <item facet="inspireTheme" sortBy="value" sortOrder="asc" max="35"/> + <item facet="inspireThemeWithAc" sortBy="value" sortOrder="asc" max="35"/> + <item facet="inspireThemeURI" sortBy="value" sortOrder="asc" max="35" + translator="term:http://geonetwork-opensource.org/inspire-theme"/> + <item facet="keyword" max="15"/> + <item facet="orgName" max="25"/> + <item facet="createDateYear" sortBy="value" sortOrder="desc" max="40"/> + <item facet="format" max="15" sortBy="value" sortOrder="asc"/> + <item facet="spatialRepresentationType" + translator="codelist:gmd:MD_SpatialRepresentationTypeCode"/> + <item facet="maintenanceAndUpdateFrequency" + translator="codelist:gmd:MD_MaintenanceFrequencyCode"/> + <item facet="status" translator="codelist:gmd:MD_ProgressCode"/> + <item facet="serviceType"/> + <item facet="denominator" sortBy="numValue" sortOrder="desc"/> + <item facet="resolution" sortBy="numValue" sortOrder="desc"/> + <!--<item facet="metadataPOC" max="15"/>--> + </summaryType> + <summaryType name="subtemplates"> + <item facet="subTemplateType"/> + <item facet="groupOwner" max="99" sortBy="value" + translator="db:org.fao.geonet.repository.GroupRepository:findOne:int"/> + <item facet="isValid" max="3" sortBy="value" translator="apploc:validStatus-"/> + </summaryType> + <summaryType name="contact" format="DIMENSION"> + <item facet="orgNameTree" max="99"/> + <item facet="groupOwner" max="99" sortBy="value" + translator="db:org.fao.geonet.repository.GroupRepository:findOne:int"/> + <item facet="isValid" max="3" sortBy="value" translator="apploc:validStatus-"/> + </summaryType> + <summaryType name="titles"> + <item facet="title" sortOrder="desc" max="100"/> + </summaryType> + <summaryType name="results"> + <item facet="keyword" max="100"/> + </summaryType> + <summaryType name="results_with_summary"> + <item facet="keyword" max="15"/> + <item facet="inspireTheme" sortBy="value" sortOrder="asc" max="35"/> + <item facet="denominator" sortBy="value" sortOrder="asc" max="20"/> + <item facet="spatialRepresentationType" + translator="codelist:gmd:MD_SpatialRepresentationTypeCode"/> + <item facet="orgName" max="15"/> + <item facet="metadataPOC" max="15"/> + <item facet="serviceType"/> + <item facet="type" translator="codelist:gmd:MD_ScopeCode"/> + <item facet="createDateYear" sortOrder="asc" max="40"/> + </summaryType> + <summaryType name="suggestions"> + <item facet="keyword"/> + <item facet="title" sortOrder="desc" max="100"/> + <item facet="inspireTheme" sortBy="value" sortOrder="asc"/> + <item facet="denominator" sortBy="value" sortOrder="asc"/> + <item facet="spatialRepresentationType" + translator="codelist:gmd:MD_SpatialRepresentationTypeCode"/> + <item facet="orgName" max="100"/> + <item facet="metadataPOC"/> + <item facet="serviceType"/> + <item facet="type" translator="codelist:gmd:MD_ScopeCode"/> + <item facet="createDateYear" sortOrder="asc"/> + </summaryType> + </summaryTypes> + +</bean:beans> diff --git a/src/main/webapp/WEB-INF/config.xml b/src/main/webapp/WEB-INF/config.xml new file mode 100644 index 0000000..998427c --- /dev/null +++ b/src/main/webapp/WEB-INF/config.xml @@ -0,0 +1,311 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + ~ Copyright (C) 2001-2016 Food and Agriculture Organization of the + ~ United Nations (FAO-UN), United Nations World Food Programme (WFP) + ~ and United Nations Environment Programme (UNEP) + ~ + ~ This program is free software; you can redistribute it and/or modify + ~ it under the terms of the GNU General Public License as published by + ~ the Free Software Foundation; either version 2 of the License, or (at + ~ your option) any later version. + ~ + ~ This program is distributed in the hope that it will be useful, but + ~ WITHOUT ANY WARRANTY; without even the implied warranty of + ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + ~ General Public License for more details. + ~ + ~ You should have received a copy of the GNU General Public License + ~ along with this program; if not, write to the Free Software + ~ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + ~ + ~ Contact: Jeroen Ticheler - FAO - Viale delle Terme di Caracalla 2, + ~ Rome - Italy. email: geonetwork@osgeo.org + --> + +<geonet> + <!-- ====================================================================== --> + + <general> + <!-- Size must be in megabyte (integer), 100MB by default --> + <maxUploadSize>100</maxUploadSize> + <uploadDir>./data/tmp</uploadDir> + <debug>false</debug> + </general> + + <!-- ====================================================================== --> + + <default> + <service>home</service> + <!-- the following service is called if there is an exception raised + during the initialization of resources or + the appHandler org.fao.geonet.Geonetwork + --> + <startupErrorService>error</startupErrorService> + <language>fre</language> + <localized>true</localized> + <contentType>text/html; charset=UTF-8</contentType> + + <gui> + <xml name="strings" file="xml/strings.xml"/> + + <call name="isolanguages" class="org.fao.geonet.guiservices.isolanguages.Get"/> + + <call name="session" class="jeeves.guiservices.session.Get"/> + <call name="env" class="org.fao.geonet.guiservices.util.Env"/> + <call name="systemConfig" class="org.fao.geonet.services.config.Get"/> + <call name="results" class="org.fao.geonet.guiservices.search.GetResultsInfo"/> + <call name="schemalist" class="org.fao.geonet.guiservices.schemas.Get"/> + <call name="svnmanager" class="org.fao.geonet.guiservices.util.GetSvnDetails"/> + + <!-- this service adds labels and codelists from all schemas --> + <call name="schemas" class="org.fao.geonet.guiservices.schemas.GetSchemaInfo"/> + <!-- @vlc start utile ? --> + <xml name="config" file="WEB-INF/config-gui.xml" localized="false" /> + <!-- @vlc end --> + </gui> + + <!-- no privileges to access the service --> + + <error id="service-not-allowed" sheet="../xslt/common/error.xsl" statusCode="403"> + <xml name="error" file="xml/privileges-error.xml"/> + </error> + + <!-- data in upload too big --> + + <error id="file-upload-too-big" sheet="../xslt/common/error.xsl"> + <xml name="error" file="xml/file-too-big-error.xml"/> + </error> + + <!-- general error --> + + <error sheet="../xslt/common/error.xsl"> + <xml name="error" file="xml/error.xml"/> + </error> + + </default> + + <!-- ====================================================================== --> + + <appHandler class="org.fao.geonet.Geonetwork"> + <!-- language profiles for automatic language detection --> + <param name="languageProfilesDir" value="resources/language-profiles"/> + + <param name="licenseDir" value="WEB-INF/licenses"/> + <param name="summaryConfig" value="WEB-INF/config-summary.xml"/> + <!-- @vlc start utile ? --> + <param name="guiConfig" value="WEB-INF/config-gui.xml" /> + <!-- @vlc end --> + <param name="luceneConfig" value="WEB-INF/config-lucene.xml"/> + + <!-- Preferred schema parameter is used on import + when a ZIP or MEF file is imported with more than one + xml files. For example, export produce one file for + iso19139 and on file for the ISO profil (eg. fra, che). + + Recommanded value is iso19139 if user is not + interested for having metadata in a specific + ISO profil. + --> + <param name="preferredSchema" value="iso19139"/> + <param name="jzkitConfig" value="JZkitApplicationContext.xml"/> + <param name="metadataNotifierConfig" value="WEB-INF/config-notifier.xml"/> +<!-- ALK@4.1: comment params --> + <!-- search statistics stuff --> + <!-- true to log into DB WKT of spatial objects involved in a search operation + CAUTION ! this can lead to HUGE database and CSV export if detailed geo objects are used: + several Gb for instance...--> +<!-- <param name="statLogSpatialObjects" value="false"/> --> +<!-- <param name="statLogAsynch" value="true"/> --> + <!-- The list of Lucene term fields to exlucde from log, to avoid storing unecessary information --> +<!-- <param name="statLuceneTermsExclude" + value="_op0,_op1,_op2,_op3,_op4,_op5,_op6,_isTemplate,_locale,_owner,_groupOwner,_dummy,type"/> --> +<!-- /ALK@4.1 --> + + <!-- The maximum number of writes in a transaction on the spatial index + + Set to 1 forces the spatialIndexWriter to commit after each spatial + feature is written. Set to a large number and commits are delayed until + that number of spatial features is written (this should be faster than + committing after each write). Be aware that setting this + number to anything other than 1 can cause problems with indexing + if the connection to the database is closed whilst GeoNetwork is running + (eg. if the db admin shuts the database for maintenance reasons). + --> + <param name="maxWritesInTransaction" value="1"/> + + <param name="DBHeartBeatEnabled" value="false"/> + <param name="DBHeartBeatInitialDelaySeconds" value="20"/> + <param name="DBHeartBeatFixedDelaySeconds" value="20"/> + + <!-- Define if the schema catalog should be updated on startup. + Default is true. --> + <param name="createOrUpdateSchemaCatalog" value="true"/> + </appHandler> + + <!-- ====================================================================== --> + + <services package="org.fao.geonet"> + + <!-- Ext GUIs --> + <service name="feedback.send"> + <class name=".services.feedback.Receptor"/> + <output sheet="extjs-feedback-response.xsl" contentType="application/json; charset=UTF-8"/> + </service> + + <service name="util.ping"> + <class name="jeeves.services.Ping"/> + </service> + + <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + <!-- Resources management services --> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + + <service name="file.disclaimer"> + <class name=".services.feedback.AddLimitations"/> + <output sheet="file-download-disclaimer.xsl"/> + </service> + + + <service name="file.download"> + <class name=".services.feedback.Insert"/> + + <output sheet="file-download.xsl"/> + </service> + + <service name="prepare.file.download"> + <class name=".services.metadata.PrepareFileDownload"/> + <output sheet="file-download-list.xsl"/> + </service> + + <service name="resources.get.archive"> + <class name=".services.resources.DownloadArchive"/> + + <error id="file-not-found" sheet="error-embedded.xsl" statusCode="404"> + <xml name="error" file="xml/file-not-found-error.xml"/> + </error> + + <output file="true"/> + </service> + + + <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + <!-- KML services --> + <!-- Show WMS service in GE --> + <service name="google.kml"> + <class name=".services.metadata.Show"/> + <output sheet="kml.xsl" contentType="application/kml; charset=UTF-8"> + </output> + <error id="operation-not-allowed" sheet="../xslt/common/error.xsl" statusCode="403"> + <xml name="error" file="xml/privileges-error.xml"/> + </error> + </service> + + <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + <!-- MEF services --> + + <service name="mef.import"> + <class name=".services.mef.Import"/> + <error sheet="xml-error.xsl" contentType="application/xml; charset=UTF-8"/> + </service> + + <service name="xml.mef.import.ui"> + <!-- TODO rename Catalogue.js --> + <class name=".services.mef.Import"/> + <output sheet="metadata/md-insert-results.xsl"/> + + <error sheet="error-xml.xsl"/> + </service> + + <service name="map.import"> + <class name=".services.mef.ImportWebMap"/> + <error sheet="xml-error.xsl" contentType="application/xml; charset=UTF-8"/> + </service> + + <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + + <service name="mef.export"> + <class name=".services.mef.Export"/> + <output file="true"/> + <error sheet="xml-error.xsl" contentType="application/xml; charset=UTF-8"/> + </service> + + + <service name="crs.types" deprecated="true"> + <!-- Still used by ExtJS editor --> + <class name=".services.crs.GetCRSTypes"/> + </service> + <service name="crs.get" deprecated="true"> + <!-- Still used by ExtJS editor --> + <class name=".services.crs.GetCRS"/> + <output sheet="crs.xsl" contentType="text/xml; charset=UTF-8"/> + </service> + + + <service name="isolanguages" deprecated="true"> + <!-- Still used by ExtJS search form criteria on language --> + <class name="org.fao.geonet.guiservices.isolanguages.Get"/> + </service> + </services> + + <!-- ====================================================================== --> + + <include>config-metadata.xml</include> + <include>config-metadata-experimental.xml</include> + <include>config-portal.xml</include> + <include>config-export.xml</include> + + <!-- ====================================================================== --> + + <!-- New section of services based on refactoring + guideline https://github.com/geonetwork/core-geonetwork/wiki/RefactoringXSLTAndUserInterface --> + + <include>config/config-service-xml-api.xml</include> + + <include>config/config-service-search.xml</include> + <include>config/config-service-sru.xml</include> + <include>config/config-service-oai.xml</include> + <include>config/config-service-rss.xml</include> + <include>config/config-service-csv.xml</include> + <include>config/config-service-dcat-rdf.xml</include> + <include>config/config-service-pdf.xml</include> + + <include>config/config-service-thesaurus.xml</include> + <include>config/config-service-region.xml</include> + + <include>config/config-service-admin.xml</include> + <include>config/config-service-admin-harvesting.xml</include> + + <include>config/config-service-admin-schema.xml</include> + <include>config/config-service-admin-schematron.xml</include> + <include>config/config-service-batch.xml</include> + + <include>config/config-service-admin-notification.xml</include> + <include>config/config-service-admin-index.xml</include> + <include>config/config-service-admin-io.xml</include> + <include>config/config-service-admin-logo.xml</include> + <include>config/config-service-admin-user-and-group.xml</include> + <include>config/config-service-admin-geoserver-publication.xml</include> + <include>config/config-service-admin-transfert-privileges.xml</include> + <include>config/config-service-admin-formatter.xml</include> + + <!-- ALK@4.1:comment <include>config/config-service-statistics.xml</include> --> + + <include>config/config-service-csw.xml</include> + <include>config/config-service-csw-virtual.xml</include> + + <include>config/config-service-sitemap.xml</include> + + <include>config/config-service-crs.xml</include> + + <include>config/config-service-subtemplate.xml</include> + + <include>config/config-ui-search.xml</include> + <include>config/config-ui-metadata.xml</include> + <include>config/config-ui-admin.xml</include> + + <include>config/config-service-monitoring.xml</include> + + <include>config/config-service-reports.xml</include> + + <include>config/config-service-inspireatom.xml</include> +</geonet> diff --git a/src/main/webapp/WEB-INF/data/config/codelist/external/thesauri/theme/inspire-service-taxonomy.rdf b/src/main/webapp/WEB-INF/data/config/codelist/external/thesauri/theme/inspire-service-taxonomy.rdf new file mode 100644 index 0000000..08edcd2 --- /dev/null +++ b/src/main/webapp/WEB-INF/data/config/codelist/external/thesauri/theme/inspire-service-taxonomy.rdf @@ -0,0 +1,1912 @@ +<?xml version="1.0" encoding="UTF-8"?> +<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:foaf="http://xmlns.com/foaf/0.1/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:skos="http://www.w3.org/2004/02/skos/core#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:exslt="http://exslt.org/common" xmlns:gemet="http://www.eionet.europa.eu/gemet/2004/06/gemet-schema.rdf#"> + <skos:ConceptScheme rdf:about="http://geonetwork-opensource.org/inspire-service-taxonomy"> + <dc:title>INSPIRE Service taxonomy</dc:title> + <dc:description>INSPIRE service taxonomy for GeoNetwork opensource. + Codelist is used for now and should be stored in gmd:keywords elements. + Another option could be to add "Translation (codelistValue)" in gmd:keywords. + INSPIRE schematron rules could then use contains instead of equal operator.</dc:description> + <dc:creator> + <foaf:Organization> + <foaf:name /> + </foaf:Organization> + </dc:creator> + <dcterms:modified>2010-04-22 07:57:15</dcterms:modified> + </skos:ConceptScheme> + <skos:Concept rdf:about="urn:inspire:service:taxonomy:humanInteractionService"> + <skos:prefLabel xml:lang="fr">humanInteractionService</skos:prefLabel> + <skos:prefLabel xml:lang="en">humanInteractionService</skos:prefLabel> + <skos:prefLabel xml:lang="nl">humanInteractionService</skos:prefLabel> + <skos:prefLabel xml:lang="sv">humanInteractionService</skos:prefLabel> + <skos:prefLabel xml:lang="sl">humanInteractionService</skos:prefLabel> + <skos:prefLabel xml:lang="sk">humanInteractionService</skos:prefLabel> + <skos:prefLabel xml:lang="ro">humanInteractionService</skos:prefLabel> + <skos:prefLabel xml:lang="pl">humanInteractionService</skos:prefLabel> + <skos:prefLabel xml:lang="pt">humanInteractionService</skos:prefLabel> + <skos:prefLabel xml:lang="mt">humanInteractionService</skos:prefLabel> + <skos:prefLabel xml:lang="lv">humanInteractionService</skos:prefLabel> + <skos:prefLabel xml:lang="lt">humanInteractionService</skos:prefLabel> + <skos:prefLabel xml:lang="it">humanInteractionService</skos:prefLabel> + <skos:prefLabel xml:lang="hu">humanInteractionService</skos:prefLabel> + <skos:prefLabel xml:lang="fi">humanInteractionService</skos:prefLabel> + <skos:prefLabel xml:lang="es">humanInteractionService</skos:prefLabel> + <skos:prefLabel xml:lang="et">humanInteractionService</skos:prefLabel> + <skos:prefLabel xml:lang="el">humanInteractionService</skos:prefLabel> + <skos:prefLabel xml:lang="de">humanInteractionService</skos:prefLabel> + <skos:prefLabel xml:lang="bg">humanInteractionService</skos:prefLabel> + <skos:prefLabel xml:lang="da">humanInteractionService</skos:prefLabel> + <skos:prefLabel xml:lang="cs">humanInteractionService</skos:prefLabel> + </skos:Concept> + <skos:Concept rdf:about="urn:inspire:service:taxonomy:humanCatalogueViewer"> + <skos:prefLabel xml:lang="fr">humanCatalogueViewer</skos:prefLabel> + <skos:prefLabel xml:lang="en">humanCatalogueViewer</skos:prefLabel> + <skos:prefLabel xml:lang="nl">humanCatalogueViewer</skos:prefLabel> + <skos:prefLabel xml:lang="sv">humanCatalogueViewer</skos:prefLabel> + <skos:prefLabel xml:lang="sl">humanCatalogueViewer</skos:prefLabel> + <skos:prefLabel xml:lang="sk">humanCatalogueViewer</skos:prefLabel> + <skos:prefLabel xml:lang="ro">humanCatalogueViewer</skos:prefLabel> + <skos:prefLabel xml:lang="pl">humanCatalogueViewer</skos:prefLabel> + <skos:prefLabel xml:lang="pt">humanCatalogueViewer</skos:prefLabel> + <skos:prefLabel xml:lang="mt">humanCatalogueViewer</skos:prefLabel> + <skos:prefLabel xml:lang="lv">humanCatalogueViewer</skos:prefLabel> + <skos:prefLabel xml:lang="lt">humanCatalogueViewer</skos:prefLabel> + <skos:prefLabel xml:lang="it">humanCatalogueViewer</skos:prefLabel> + <skos:prefLabel xml:lang="hu">humanCatalogueViewer</skos:prefLabel> + <skos:prefLabel xml:lang="fi">humanCatalogueViewer</skos:prefLabel> + <skos:prefLabel xml:lang="es">humanCatalogueViewer</skos:prefLabel> + <skos:prefLabel xml:lang="et">humanCatalogueViewer</skos:prefLabel> + <skos:prefLabel xml:lang="el">humanCatalogueViewer</skos:prefLabel> + <skos:prefLabel xml:lang="de">humanCatalogueViewer</skos:prefLabel> + <skos:prefLabel xml:lang="bg">humanCatalogueViewer</skos:prefLabel> + <skos:prefLabel xml:lang="da">humanCatalogueViewer</skos:prefLabel> + <skos:prefLabel xml:lang="cs">humanCatalogueViewer</skos:prefLabel> + </skos:Concept> + <skos:Concept rdf:about="urn:inspire:service:taxonomy:humanGeographicViewer"> + <skos:prefLabel xml:lang="fr">humanGeographicViewer</skos:prefLabel> + <skos:prefLabel xml:lang="en">humanGeographicViewer</skos:prefLabel> + <skos:prefLabel xml:lang="nl">humanGeographicViewer</skos:prefLabel> + <skos:prefLabel xml:lang="sv">humanGeographicViewer</skos:prefLabel> + <skos:prefLabel xml:lang="sl">humanGeographicViewer</skos:prefLabel> + <skos:prefLabel xml:lang="sk">humanGeographicViewer</skos:prefLabel> + <skos:prefLabel xml:lang="ro">humanGeographicViewer</skos:prefLabel> + <skos:prefLabel xml:lang="pl">humanGeographicViewer</skos:prefLabel> + <skos:prefLabel xml:lang="pt">humanGeographicViewer</skos:prefLabel> + <skos:prefLabel xml:lang="mt">humanGeographicViewer</skos:prefLabel> + <skos:prefLabel xml:lang="lv">humanGeographicViewer</skos:prefLabel> + <skos:prefLabel xml:lang="lt">humanGeographicViewer</skos:prefLabel> + <skos:prefLabel xml:lang="it">humanGeographicViewer</skos:prefLabel> + <skos:prefLabel xml:lang="hu">humanGeographicViewer</skos:prefLabel> + <skos:prefLabel xml:lang="fi">humanGeographicViewer</skos:prefLabel> + <skos:prefLabel xml:lang="es">humanGeographicViewer</skos:prefLabel> + <skos:prefLabel xml:lang="et">humanGeographicViewer</skos:prefLabel> + <skos:prefLabel xml:lang="el">humanGeographicViewer</skos:prefLabel> + <skos:prefLabel xml:lang="de">humanGeographicViewer</skos:prefLabel> + <skos:prefLabel xml:lang="bg">humanGeographicViewer</skos:prefLabel> + <skos:prefLabel xml:lang="da">humanGeographicViewer</skos:prefLabel> + <skos:prefLabel xml:lang="cs">humanGeographicViewer</skos:prefLabel> + </skos:Concept> + <skos:Concept rdf:about="urn:inspire:service:taxonomy:humanGeographicSpreadsheetViewer"> + <skos:prefLabel xml:lang="fr">humanGeographicSpreadsheetViewer</skos:prefLabel> + <skos:prefLabel xml:lang="en">humanGeographicSpreadsheetViewer</skos:prefLabel> + <skos:prefLabel xml:lang="nl">humanGeographicSpreadsheetViewer</skos:prefLabel> + <skos:prefLabel xml:lang="sv">humanGeographicSpreadsheetViewer</skos:prefLabel> + <skos:prefLabel xml:lang="sl">humanGeographicSpreadsheetViewer</skos:prefLabel> + <skos:prefLabel xml:lang="sk">humanGeographicSpreadsheetViewer</skos:prefLabel> + <skos:prefLabel xml:lang="ro">humanGeographicSpreadsheetViewer</skos:prefLabel> + <skos:prefLabel xml:lang="pl">humanGeographicSpreadsheetViewer</skos:prefLabel> + <skos:prefLabel xml:lang="pt">humanGeographicSpreadsheetViewer</skos:prefLabel> + <skos:prefLabel xml:lang="mt">humanGeographicSpreadsheetViewer</skos:prefLabel> + <skos:prefLabel xml:lang="lv">humanGeographicSpreadsheetViewer</skos:prefLabel> + <skos:prefLabel xml:lang="lt">humanGeographicSpreadsheetViewer</skos:prefLabel> + <skos:prefLabel xml:lang="it">humanGeographicSpreadsheetViewer</skos:prefLabel> + <skos:prefLabel xml:lang="hu">humanGeographicSpreadsheetViewer</skos:prefLabel> + <skos:prefLabel xml:lang="fi">humanGeographicSpreadsheetViewer</skos:prefLabel> + <skos:prefLabel xml:lang="es">humanGeographicSpreadsheetViewer</skos:prefLabel> + <skos:prefLabel xml:lang="et">humanGeographicSpreadsheetViewer</skos:prefLabel> + <skos:prefLabel xml:lang="el">humanGeographicSpreadsheetViewer</skos:prefLabel> + <skos:prefLabel xml:lang="de">humanGeographicSpreadsheetViewer</skos:prefLabel> + <skos:prefLabel xml:lang="bg">humanGeographicSpreadsheetViewer</skos:prefLabel> + <skos:prefLabel xml:lang="da">humanGeographicSpreadsheetViewer</skos:prefLabel> + <skos:prefLabel xml:lang="cs">humanGeographicSpreadsheetViewer</skos:prefLabel> + </skos:Concept> + <skos:Concept rdf:about="urn:inspire:service:taxonomy:humanServiceEditor"> + <skos:prefLabel xml:lang="fr">humanServiceEditor</skos:prefLabel> + <skos:prefLabel xml:lang="en">humanServiceEditor</skos:prefLabel> + <skos:prefLabel xml:lang="nl">humanServiceEditor</skos:prefLabel> + <skos:prefLabel xml:lang="sv">humanServiceEditor</skos:prefLabel> + <skos:prefLabel xml:lang="sl">humanServiceEditor</skos:prefLabel> + <skos:prefLabel xml:lang="sk">humanServiceEditor</skos:prefLabel> + <skos:prefLabel xml:lang="ro">humanServiceEditor</skos:prefLabel> + <skos:prefLabel xml:lang="pl">humanServiceEditor</skos:prefLabel> + <skos:prefLabel xml:lang="pt">humanServiceEditor</skos:prefLabel> + <skos:prefLabel xml:lang="mt">humanServiceEditor</skos:prefLabel> + <skos:prefLabel xml:lang="lv">humanServiceEditor</skos:prefLabel> + <skos:prefLabel xml:lang="lt">humanServiceEditor</skos:prefLabel> + <skos:prefLabel xml:lang="it">humanServiceEditor</skos:prefLabel> + <skos:prefLabel xml:lang="hu">humanServiceEditor</skos:prefLabel> + <skos:prefLabel xml:lang="fi">humanServiceEditor</skos:prefLabel> + <skos:prefLabel xml:lang="es">humanServiceEditor</skos:prefLabel> + <skos:prefLabel xml:lang="et">humanServiceEditor</skos:prefLabel> + <skos:prefLabel xml:lang="el">humanServiceEditor</skos:prefLabel> + <skos:prefLabel xml:lang="de">humanServiceEditor</skos:prefLabel> + <skos:prefLabel xml:lang="bg">humanServiceEditor</skos:prefLabel> + <skos:prefLabel xml:lang="da">humanServiceEditor</skos:prefLabel> + <skos:prefLabel xml:lang="cs">humanServiceEditor</skos:prefLabel> + </skos:Concept> + <skos:Concept rdf:about="urn:inspire:service:taxonomy:humanChainDefinitionEditor"> + <skos:prefLabel xml:lang="fr">humanChainDefinitionEditor</skos:prefLabel> + <skos:prefLabel xml:lang="en">humanChainDefinitionEditor</skos:prefLabel> + <skos:prefLabel xml:lang="nl">humanChainDefinitionEditor</skos:prefLabel> + <skos:prefLabel xml:lang="sv">humanChainDefinitionEditor</skos:prefLabel> + <skos:prefLabel xml:lang="sl">humanChainDefinitionEditor</skos:prefLabel> + <skos:prefLabel xml:lang="sk">humanChainDefinitionEditor</skos:prefLabel> + <skos:prefLabel xml:lang="ro">humanChainDefinitionEditor</skos:prefLabel> + <skos:prefLabel xml:lang="pl">humanChainDefinitionEditor</skos:prefLabel> + <skos:prefLabel xml:lang="pt">humanChainDefinitionEditor</skos:prefLabel> + <skos:prefLabel xml:lang="mt">humanChainDefinitionEditor</skos:prefLabel> + <skos:prefLabel xml:lang="lv">humanChainDefinitionEditor</skos:prefLabel> + <skos:prefLabel xml:lang="lt">humanChainDefinitionEditor</skos:prefLabel> + <skos:prefLabel xml:lang="it">humanChainDefinitionEditor</skos:prefLabel> + <skos:prefLabel xml:lang="hu">humanChainDefinitionEditor</skos:prefLabel> + <skos:prefLabel xml:lang="fi">humanChainDefinitionEditor</skos:prefLabel> + <skos:prefLabel xml:lang="es">humanChainDefinitionEditor</skos:prefLabel> + <skos:prefLabel xml:lang="et">humanChainDefinitionEditor</skos:prefLabel> + <skos:prefLabel xml:lang="el">humanChainDefinitionEditor</skos:prefLabel> + <skos:prefLabel xml:lang="de">humanChainDefinitionEditor</skos:prefLabel> + <skos:prefLabel xml:lang="bg">humanChainDefinitionEditor</skos:prefLabel> + <skos:prefLabel xml:lang="da">humanChainDefinitionEditor</skos:prefLabel> + <skos:prefLabel xml:lang="cs">humanChainDefinitionEditor</skos:prefLabel> + </skos:Concept> + <skos:Concept rdf:about="urn:inspire:service:taxonomy:humanWorkflowEnactmentManager"> + <skos:prefLabel xml:lang="fr">humanWorkflowEnactmentManager</skos:prefLabel> + <skos:prefLabel xml:lang="en">humanWorkflowEnactmentManager</skos:prefLabel> + <skos:prefLabel xml:lang="nl">humanWorkflowEnactmentManager</skos:prefLabel> + <skos:prefLabel xml:lang="sv">humanWorkflowEnactmentManager</skos:prefLabel> + <skos:prefLabel xml:lang="sl">humanWorkflowEnactmentManager</skos:prefLabel> + <skos:prefLabel xml:lang="sk">humanWorkflowEnactmentManager</skos:prefLabel> + <skos:prefLabel xml:lang="ro">humanWorkflowEnactmentManager</skos:prefLabel> + <skos:prefLabel xml:lang="pl">humanWorkflowEnactmentManager</skos:prefLabel> + <skos:prefLabel xml:lang="pt">humanWorkflowEnactmentManager</skos:prefLabel> + <skos:prefLabel xml:lang="mt">humanWorkflowEnactmentManager</skos:prefLabel> + <skos:prefLabel xml:lang="lv">humanWorkflowEnactmentManager</skos:prefLabel> + <skos:prefLabel xml:lang="lt">humanWorkflowEnactmentManager</skos:prefLabel> + <skos:prefLabel xml:lang="it">humanWorkflowEnactmentManager</skos:prefLabel> + <skos:prefLabel xml:lang="hu">humanWorkflowEnactmentManager</skos:prefLabel> + <skos:prefLabel xml:lang="fi">humanWorkflowEnactmentManager</skos:prefLabel> + <skos:prefLabel xml:lang="es">humanWorkflowEnactmentManager</skos:prefLabel> + <skos:prefLabel xml:lang="et">humanWorkflowEnactmentManager</skos:prefLabel> + <skos:prefLabel xml:lang="el">humanWorkflowEnactmentManager</skos:prefLabel> + <skos:prefLabel xml:lang="de">humanWorkflowEnactmentManager</skos:prefLabel> + <skos:prefLabel xml:lang="bg">humanWorkflowEnactmentManager</skos:prefLabel> + <skos:prefLabel xml:lang="da">humanWorkflowEnactmentManager</skos:prefLabel> + <skos:prefLabel xml:lang="cs">humanWorkflowEnactmentManager</skos:prefLabel> + </skos:Concept> + <skos:Concept rdf:about="urn:inspire:service:taxonomy:humanGeographicFeatureEditor"> + <skos:prefLabel xml:lang="fr">humanGeographicFeatureEditor</skos:prefLabel> + <skos:prefLabel xml:lang="en">humanGeographicFeatureEditor</skos:prefLabel> + <skos:prefLabel xml:lang="nl">humanGeographicFeatureEditor</skos:prefLabel> + <skos:prefLabel xml:lang="sv">humanGeographicFeatureEditor</skos:prefLabel> + <skos:prefLabel xml:lang="sl">humanGeographicFeatureEditor</skos:prefLabel> + <skos:prefLabel xml:lang="sk">humanGeographicFeatureEditor</skos:prefLabel> + <skos:prefLabel xml:lang="ro">humanGeographicFeatureEditor</skos:prefLabel> + <skos:prefLabel xml:lang="pl">humanGeographicFeatureEditor</skos:prefLabel> + <skos:prefLabel xml:lang="pt">humanGeographicFeatureEditor</skos:prefLabel> + <skos:prefLabel xml:lang="mt">humanGeographicFeatureEditor</skos:prefLabel> + <skos:prefLabel xml:lang="lv">humanGeographicFeatureEditor</skos:prefLabel> + <skos:prefLabel xml:lang="lt">humanGeographicFeatureEditor</skos:prefLabel> + <skos:prefLabel xml:lang="it">humanGeographicFeatureEditor</skos:prefLabel> + <skos:prefLabel xml:lang="hu">humanGeographicFeatureEditor</skos:prefLabel> + <skos:prefLabel xml:lang="fi">humanGeographicFeatureEditor</skos:prefLabel> + <skos:prefLabel xml:lang="es">humanGeographicFeatureEditor</skos:prefLabel> + <skos:prefLabel xml:lang="et">humanGeographicFeatureEditor</skos:prefLabel> + <skos:prefLabel xml:lang="el">humanGeographicFeatureEditor</skos:prefLabel> + <skos:prefLabel xml:lang="de">humanGeographicFeatureEditor</skos:prefLabel> + <skos:prefLabel xml:lang="bg">humanGeographicFeatureEditor</skos:prefLabel> + <skos:prefLabel xml:lang="da">humanGeographicFeatureEditor</skos:prefLabel> + <skos:prefLabel xml:lang="cs">humanGeographicFeatureEditor</skos:prefLabel> + </skos:Concept> + <skos:Concept rdf:about="urn:inspire:service:taxonomy:humanGeographicSymbolEditor"> + <skos:prefLabel xml:lang="fr">humanGeographicSymbolEditor</skos:prefLabel> + <skos:prefLabel xml:lang="en">humanGeographicSymbolEditor</skos:prefLabel> + <skos:prefLabel xml:lang="nl">humanGeographicSymbolEditor</skos:prefLabel> + <skos:prefLabel xml:lang="sv">humanGeographicSymbolEditor</skos:prefLabel> + <skos:prefLabel xml:lang="sl">humanGeographicSymbolEditor</skos:prefLabel> + <skos:prefLabel xml:lang="sk">humanGeographicSymbolEditor</skos:prefLabel> + <skos:prefLabel xml:lang="ro">humanGeographicSymbolEditor</skos:prefLabel> + <skos:prefLabel xml:lang="pl">humanGeographicSymbolEditor</skos:prefLabel> + <skos:prefLabel xml:lang="pt">humanGeographicSymbolEditor</skos:prefLabel> + <skos:prefLabel xml:lang="mt">humanGeographicSymbolEditor</skos:prefLabel> + <skos:prefLabel xml:lang="lv">humanGeographicSymbolEditor</skos:prefLabel> + <skos:prefLabel xml:lang="lt">humanGeographicSymbolEditor</skos:prefLabel> + <skos:prefLabel xml:lang="it">humanGeographicSymbolEditor</skos:prefLabel> + <skos:prefLabel xml:lang="hu">humanGeographicSymbolEditor</skos:prefLabel> + <skos:prefLabel xml:lang="fi">humanGeographicSymbolEditor</skos:prefLabel> + <skos:prefLabel xml:lang="es">humanGeographicSymbolEditor</skos:prefLabel> + <skos:prefLabel xml:lang="et">humanGeographicSymbolEditor</skos:prefLabel> + <skos:prefLabel xml:lang="el">humanGeographicSymbolEditor</skos:prefLabel> + <skos:prefLabel xml:lang="de">humanGeographicSymbolEditor</skos:prefLabel> + <skos:prefLabel xml:lang="bg">humanGeographicSymbolEditor</skos:prefLabel> + <skos:prefLabel xml:lang="da">humanGeographicSymbolEditor</skos:prefLabel> + <skos:prefLabel xml:lang="cs">humanGeographicSymbolEditor</skos:prefLabel> + </skos:Concept> + <skos:Concept rdf:about="urn:inspire:service:taxonomy:humanFeatureGeneralizationEditor"> + <skos:prefLabel xml:lang="fr">humanFeatureGeneralizationEditor</skos:prefLabel> + <skos:prefLabel xml:lang="en">humanFeatureGeneralizationEditor</skos:prefLabel> + <skos:prefLabel xml:lang="nl">humanFeatureGeneralizationEditor</skos:prefLabel> + <skos:prefLabel xml:lang="sv">humanFeatureGeneralizationEditor</skos:prefLabel> + <skos:prefLabel xml:lang="sl">humanFeatureGeneralizationEditor</skos:prefLabel> + <skos:prefLabel xml:lang="sk">humanFeatureGeneralizationEditor</skos:prefLabel> + <skos:prefLabel xml:lang="ro">humanFeatureGeneralizationEditor</skos:prefLabel> + <skos:prefLabel xml:lang="pl">humanFeatureGeneralizationEditor</skos:prefLabel> + <skos:prefLabel xml:lang="pt">humanFeatureGeneralizationEditor</skos:prefLabel> + <skos:prefLabel xml:lang="mt">humanFeatureGeneralizationEditor</skos:prefLabel> + <skos:prefLabel xml:lang="lv">humanFeatureGeneralizationEditor</skos:prefLabel> + <skos:prefLabel xml:lang="lt">humanFeatureGeneralizationEditor</skos:prefLabel> + <skos:prefLabel xml:lang="it">humanFeatureGeneralizationEditor</skos:prefLabel> + <skos:prefLabel xml:lang="hu">humanFeatureGeneralizationEditor</skos:prefLabel> + <skos:prefLabel xml:lang="fi">humanFeatureGeneralizationEditor</skos:prefLabel> + <skos:prefLabel xml:lang="es">humanFeatureGeneralizationEditor</skos:prefLabel> + <skos:prefLabel xml:lang="et">humanFeatureGeneralizationEditor</skos:prefLabel> + <skos:prefLabel xml:lang="el">humanFeatureGeneralizationEditor</skos:prefLabel> + <skos:prefLabel xml:lang="de">humanFeatureGeneralizationEditor</skos:prefLabel> + <skos:prefLabel xml:lang="bg">humanFeatureGeneralizationEditor</skos:prefLabel> + <skos:prefLabel xml:lang="da">humanFeatureGeneralizationEditor</skos:prefLabel> + <skos:prefLabel xml:lang="cs">humanFeatureGeneralizationEditor</skos:prefLabel> + </skos:Concept> + <skos:Concept rdf:about="urn:inspire:service:taxonomy:humanGeographicDataStructureViewer"> + <skos:prefLabel xml:lang="fr">humanGeographicDataStructureViewer</skos:prefLabel> + <skos:prefLabel xml:lang="en">humanGeographicDataStructureViewer</skos:prefLabel> + <skos:prefLabel xml:lang="nl">humanGeographicDataStructureViewer</skos:prefLabel> + <skos:prefLabel xml:lang="sv">humanGeographicDataStructureViewer</skos:prefLabel> + <skos:prefLabel xml:lang="sl">humanGeographicDataStructureViewer</skos:prefLabel> + <skos:prefLabel xml:lang="sk">humanGeographicDataStructureViewer</skos:prefLabel> + <skos:prefLabel xml:lang="ro">humanGeographicDataStructureViewer</skos:prefLabel> + <skos:prefLabel xml:lang="pl">humanGeographicDataStructureViewer</skos:prefLabel> + <skos:prefLabel xml:lang="pt">humanGeographicDataStructureViewer</skos:prefLabel> + <skos:prefLabel xml:lang="mt">humanGeographicDataStructureViewer</skos:prefLabel> + <skos:prefLabel xml:lang="lv">humanGeographicDataStructureViewer</skos:prefLabel> + <skos:prefLabel xml:lang="lt">humanGeographicDataStructureViewer</skos:prefLabel> + <skos:prefLabel xml:lang="it">humanGeographicDataStructureViewer</skos:prefLabel> + <skos:prefLabel xml:lang="hu">humanGeographicDataStructureViewer</skos:prefLabel> + <skos:prefLabel xml:lang="fi">humanGeographicDataStructureViewer</skos:prefLabel> + <skos:prefLabel xml:lang="es">humanGeographicDataStructureViewer</skos:prefLabel> + <skos:prefLabel xml:lang="et">humanGeographicDataStructureViewer</skos:prefLabel> + <skos:prefLabel xml:lang="el">humanGeographicDataStructureViewer</skos:prefLabel> + <skos:prefLabel xml:lang="de">humanGeographicDataStructureViewer</skos:prefLabel> + <skos:prefLabel xml:lang="bg">humanGeographicDataStructureViewer</skos:prefLabel> + <skos:prefLabel xml:lang="da">humanGeographicDataStructureViewer</skos:prefLabel> + <skos:prefLabel xml:lang="cs">humanGeographicDataStructureViewer</skos:prefLabel> + </skos:Concept> + <skos:Concept rdf:about="urn:inspire:service:taxonomy:infoManagementService"> + <skos:prefLabel xml:lang="fr">infoManagementService</skos:prefLabel> + <skos:prefLabel xml:lang="en">infoManagementService</skos:prefLabel> + <skos:prefLabel xml:lang="nl">infoManagementService</skos:prefLabel> + <skos:prefLabel xml:lang="sv">infoManagementService</skos:prefLabel> + <skos:prefLabel xml:lang="sl">infoManagementService</skos:prefLabel> + <skos:prefLabel xml:lang="sk">infoManagementService</skos:prefLabel> + <skos:prefLabel xml:lang="ro">infoManagementService</skos:prefLabel> + <skos:prefLabel xml:lang="pl">infoManagementService</skos:prefLabel> + <skos:prefLabel xml:lang="pt">infoManagementService</skos:prefLabel> + <skos:prefLabel xml:lang="mt">infoManagementService</skos:prefLabel> + <skos:prefLabel xml:lang="lv">infoManagementService</skos:prefLabel> + <skos:prefLabel xml:lang="lt">infoManagementService</skos:prefLabel> + <skos:prefLabel xml:lang="it">infoManagementService</skos:prefLabel> + <skos:prefLabel xml:lang="hu">infoManagementService</skos:prefLabel> + <skos:prefLabel xml:lang="fi">infoManagementService</skos:prefLabel> + <skos:prefLabel xml:lang="es">infoManagementService</skos:prefLabel> + <skos:prefLabel xml:lang="et">infoManagementService</skos:prefLabel> + <skos:prefLabel xml:lang="el">infoManagementService</skos:prefLabel> + <skos:prefLabel xml:lang="de">infoManagementService</skos:prefLabel> + <skos:prefLabel xml:lang="bg">infoManagementService</skos:prefLabel> + <skos:prefLabel xml:lang="da">infoManagementService</skos:prefLabel> + <skos:prefLabel xml:lang="cs">infoManagementService</skos:prefLabel> + </skos:Concept> + <skos:Concept rdf:about="urn:inspire:service:taxonomy:infoFeatureAccessService"> + <skos:prefLabel xml:lang="fr">infoFeatureAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="en">infoFeatureAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="nl">infoFeatureAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="sv">infoFeatureAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="sl">infoFeatureAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="sk">infoFeatureAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="ro">infoFeatureAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="pl">infoFeatureAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="pt">infoFeatureAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="mt">infoFeatureAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="lv">infoFeatureAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="lt">infoFeatureAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="it">infoFeatureAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="hu">infoFeatureAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="fi">infoFeatureAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="es">infoFeatureAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="et">infoFeatureAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="el">infoFeatureAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="de">infoFeatureAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="bg">infoFeatureAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="da">infoFeatureAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="cs">infoFeatureAccessService</skos:prefLabel> + </skos:Concept> + <skos:Concept rdf:about="urn:inspire:service:taxonomy:infoMapAccessService"> + <skos:prefLabel xml:lang="fr">infoMapAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="en">infoMapAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="nl">infoMapAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="sv">infoMapAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="sl">infoMapAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="sk">infoMapAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="ro">infoMapAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="pl">infoMapAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="pt">infoMapAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="mt">infoMapAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="lv">infoMapAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="lt">infoMapAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="it">infoMapAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="hu">infoMapAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="fi">infoMapAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="es">infoMapAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="et">infoMapAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="el">infoMapAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="de">infoMapAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="bg">infoMapAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="da">infoMapAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="cs">infoMapAccessService</skos:prefLabel> + </skos:Concept> + <skos:Concept rdf:about="urn:inspire:service:taxonomy:infoMapAccessService"> + <skos:prefLabel xml:lang="fr">infoMapAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="en">infoMapAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="nl">infoMapAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="sv">infoMapAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="sl">infoMapAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="sk">infoMapAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="ro">infoMapAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="pl">infoMapAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="pt">infoMapAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="mt">infoMapAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="lv">infoMapAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="lt">infoMapAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="it">infoMapAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="hu">infoMapAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="fi">infoMapAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="es">infoMapAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="et">infoMapAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="el">infoMapAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="de">infoMapAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="bg">infoMapAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="da">infoMapAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="cs">infoMapAccessService</skos:prefLabel> + </skos:Concept> + <skos:Concept rdf:about="urn:inspire:service:taxonomy:infoChartAccessService"> + <skos:prefLabel xml:lang="fr">infoChartAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="en">infoChartAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="nl">infoChartAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="sv">infoChartAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="sl">infoChartAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="sk">infoChartAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="ro">infoChartAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="pl">infoChartAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="pt">infoChartAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="mt">infoChartAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="lv">infoChartAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="lt">infoChartAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="it">infoChartAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="hu">infoChartAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="fi">infoChartAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="es">infoChartAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="et">infoChartAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="el">infoChartAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="de">infoChartAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="bg">infoChartAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="da">infoChartAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="cs">infoChartAccessService</skos:prefLabel> + </skos:Concept> + <skos:Concept rdf:about="urn:inspire:service:taxonomy:infoSensorDescriptionService"> + <skos:prefLabel xml:lang="fr">infoSensorDescriptionService</skos:prefLabel> + <skos:prefLabel xml:lang="en">infoSensorDescriptionService</skos:prefLabel> + <skos:prefLabel xml:lang="nl">infoSensorDescriptionService</skos:prefLabel> + <skos:prefLabel xml:lang="sv">infoSensorDescriptionService</skos:prefLabel> + <skos:prefLabel xml:lang="sl">infoSensorDescriptionService</skos:prefLabel> + <skos:prefLabel xml:lang="sk">infoSensorDescriptionService</skos:prefLabel> + <skos:prefLabel xml:lang="ro">infoSensorDescriptionService</skos:prefLabel> + <skos:prefLabel xml:lang="pl">infoSensorDescriptionService</skos:prefLabel> + <skos:prefLabel xml:lang="pt">infoSensorDescriptionService</skos:prefLabel> + <skos:prefLabel xml:lang="mt">infoSensorDescriptionService</skos:prefLabel> + <skos:prefLabel xml:lang="lv">infoSensorDescriptionService</skos:prefLabel> + <skos:prefLabel xml:lang="lt">infoSensorDescriptionService</skos:prefLabel> + <skos:prefLabel xml:lang="it">infoSensorDescriptionService</skos:prefLabel> + <skos:prefLabel xml:lang="hu">infoSensorDescriptionService</skos:prefLabel> + <skos:prefLabel xml:lang="fi">infoSensorDescriptionService</skos:prefLabel> + <skos:prefLabel xml:lang="es">infoSensorDescriptionService</skos:prefLabel> + <skos:prefLabel xml:lang="et">infoSensorDescriptionService</skos:prefLabel> + <skos:prefLabel xml:lang="el">infoSensorDescriptionService</skos:prefLabel> + <skos:prefLabel xml:lang="de">infoSensorDescriptionService</skos:prefLabel> + <skos:prefLabel xml:lang="bg">infoSensorDescriptionService</skos:prefLabel> + <skos:prefLabel xml:lang="da">infoSensorDescriptionService</skos:prefLabel> + <skos:prefLabel xml:lang="cs">infoSensorDescriptionService</skos:prefLabel> + </skos:Concept> + <skos:Concept rdf:about="urn:inspire:service:taxonomy:infoProductAccessService"> + <skos:prefLabel xml:lang="fr">infoProductAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="en">infoProductAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="nl">infoProductAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="sv">infoProductAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="sl">infoProductAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="sk">infoProductAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="ro">infoProductAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="pl">infoProductAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="pt">infoProductAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="mt">infoProductAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="lv">infoProductAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="lt">infoProductAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="it">infoProductAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="hu">infoProductAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="fi">infoProductAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="es">infoProductAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="et">infoProductAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="el">infoProductAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="de">infoProductAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="bg">infoProductAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="da">infoProductAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="cs">infoProductAccessService</skos:prefLabel> + </skos:Concept> + <skos:Concept rdf:about="urn:inspire:service:taxonomy:infoFeatureTypeService"> + <skos:prefLabel xml:lang="fr">infoFeatureTypeService</skos:prefLabel> + <skos:prefLabel xml:lang="en">infoFeatureTypeService</skos:prefLabel> + <skos:prefLabel xml:lang="nl">infoFeatureTypeService</skos:prefLabel> + <skos:prefLabel xml:lang="sv">infoFeatureTypeService</skos:prefLabel> + <skos:prefLabel xml:lang="sl">infoFeatureTypeService</skos:prefLabel> + <skos:prefLabel xml:lang="sk">infoFeatureTypeService</skos:prefLabel> + <skos:prefLabel xml:lang="ro">infoFeatureTypeService</skos:prefLabel> + <skos:prefLabel xml:lang="pl">infoFeatureTypeService</skos:prefLabel> + <skos:prefLabel xml:lang="pt">infoFeatureTypeService</skos:prefLabel> + <skos:prefLabel xml:lang="mt">infoFeatureTypeService</skos:prefLabel> + <skos:prefLabel xml:lang="lv">infoFeatureTypeService</skos:prefLabel> + <skos:prefLabel xml:lang="lt">infoFeatureTypeService</skos:prefLabel> + <skos:prefLabel xml:lang="it">infoFeatureTypeService</skos:prefLabel> + <skos:prefLabel xml:lang="hu">infoFeatureTypeService</skos:prefLabel> + <skos:prefLabel xml:lang="fi">infoFeatureTypeService</skos:prefLabel> + <skos:prefLabel xml:lang="es">infoFeatureTypeService</skos:prefLabel> + <skos:prefLabel xml:lang="et">infoFeatureTypeService</skos:prefLabel> + <skos:prefLabel xml:lang="el">infoFeatureTypeService</skos:prefLabel> + <skos:prefLabel xml:lang="de">infoFeatureTypeService</skos:prefLabel> + <skos:prefLabel xml:lang="bg">infoFeatureTypeService</skos:prefLabel> + <skos:prefLabel xml:lang="da">infoFeatureTypeService</skos:prefLabel> + <skos:prefLabel xml:lang="cs">infoFeatureTypeService</skos:prefLabel> + </skos:Concept> + <skos:Concept rdf:about="urn:inspire:service:taxonomy:infoCatalogueService"> + <skos:prefLabel xml:lang="fr">infoCatalogueService</skos:prefLabel> + <skos:prefLabel xml:lang="en">infoCatalogueService</skos:prefLabel> + <skos:prefLabel xml:lang="nl">infoCatalogueService</skos:prefLabel> + <skos:prefLabel xml:lang="sv">infoCatalogueService</skos:prefLabel> + <skos:prefLabel xml:lang="sl">infoCatalogueService</skos:prefLabel> + <skos:prefLabel xml:lang="sk">infoCatalogueService</skos:prefLabel> + <skos:prefLabel xml:lang="ro">infoCatalogueService</skos:prefLabel> + <skos:prefLabel xml:lang="pl">infoCatalogueService</skos:prefLabel> + <skos:prefLabel xml:lang="pt">infoCatalogueService</skos:prefLabel> + <skos:prefLabel xml:lang="mt">infoCatalogueService</skos:prefLabel> + <skos:prefLabel xml:lang="lv">infoCatalogueService</skos:prefLabel> + <skos:prefLabel xml:lang="lt">infoCatalogueService</skos:prefLabel> + <skos:prefLabel xml:lang="it">infoCatalogueService</skos:prefLabel> + <skos:prefLabel xml:lang="hu">infoCatalogueService</skos:prefLabel> + <skos:prefLabel xml:lang="fi">infoCatalogueService</skos:prefLabel> + <skos:prefLabel xml:lang="es">infoCatalogueService</skos:prefLabel> + <skos:prefLabel xml:lang="et">infoCatalogueService</skos:prefLabel> + <skos:prefLabel xml:lang="el">infoCatalogueService</skos:prefLabel> + <skos:prefLabel xml:lang="de">infoCatalogueService</skos:prefLabel> + <skos:prefLabel xml:lang="bg">infoCatalogueService</skos:prefLabel> + <skos:prefLabel xml:lang="da">infoCatalogueService</skos:prefLabel> + <skos:prefLabel xml:lang="cs">infoCatalogueService</skos:prefLabel> + </skos:Concept> + <skos:Concept rdf:about="urn:inspire:service:taxonomy:infoRegistryService"> + <skos:prefLabel xml:lang="fr">infoRegistryService</skos:prefLabel> + <skos:prefLabel xml:lang="en">infoRegistryService</skos:prefLabel> + <skos:prefLabel xml:lang="nl">infoRegistryService</skos:prefLabel> + <skos:prefLabel xml:lang="sv">infoRegistryService</skos:prefLabel> + <skos:prefLabel xml:lang="sl">infoRegistryService</skos:prefLabel> + <skos:prefLabel xml:lang="sk">infoRegistryService</skos:prefLabel> + <skos:prefLabel xml:lang="ro">infoRegistryService</skos:prefLabel> + <skos:prefLabel xml:lang="pl">infoRegistryService</skos:prefLabel> + <skos:prefLabel xml:lang="pt">infoRegistryService</skos:prefLabel> + <skos:prefLabel xml:lang="mt">infoRegistryService</skos:prefLabel> + <skos:prefLabel xml:lang="lv">infoRegistryService</skos:prefLabel> + <skos:prefLabel xml:lang="lt">infoRegistryService</skos:prefLabel> + <skos:prefLabel xml:lang="it">infoRegistryService</skos:prefLabel> + <skos:prefLabel xml:lang="hu">infoRegistryService</skos:prefLabel> + <skos:prefLabel xml:lang="fi">infoRegistryService</skos:prefLabel> + <skos:prefLabel xml:lang="es">infoRegistryService</skos:prefLabel> + <skos:prefLabel xml:lang="et">infoRegistryService</skos:prefLabel> + <skos:prefLabel xml:lang="el">infoRegistryService</skos:prefLabel> + <skos:prefLabel xml:lang="de">infoRegistryService</skos:prefLabel> + <skos:prefLabel xml:lang="bg">infoRegistryService</skos:prefLabel> + <skos:prefLabel xml:lang="da">infoRegistryService</skos:prefLabel> + <skos:prefLabel xml:lang="cs">infoRegistryService</skos:prefLabel> + </skos:Concept> + <skos:Concept rdf:about="urn:inspire:service:taxonomy:infoGazetteerService"> + <skos:prefLabel xml:lang="fr">infoGazetteerService</skos:prefLabel> + <skos:prefLabel xml:lang="en">infoGazetteerService</skos:prefLabel> + <skos:prefLabel xml:lang="nl">infoGazetteerService</skos:prefLabel> + <skos:prefLabel xml:lang="sv">infoGazetteerService</skos:prefLabel> + <skos:prefLabel xml:lang="sl">infoGazetteerService</skos:prefLabel> + <skos:prefLabel xml:lang="sk">infoGazetteerService</skos:prefLabel> + <skos:prefLabel xml:lang="ro">infoGazetteerService</skos:prefLabel> + <skos:prefLabel xml:lang="pl">infoGazetteerService</skos:prefLabel> + <skos:prefLabel xml:lang="pt">infoGazetteerService</skos:prefLabel> + <skos:prefLabel xml:lang="mt">infoGazetteerService</skos:prefLabel> + <skos:prefLabel xml:lang="lv">infoGazetteerService</skos:prefLabel> + <skos:prefLabel xml:lang="lt">infoGazetteerService</skos:prefLabel> + <skos:prefLabel xml:lang="it">infoGazetteerService</skos:prefLabel> + <skos:prefLabel xml:lang="hu">infoGazetteerService</skos:prefLabel> + <skos:prefLabel xml:lang="fi">infoGazetteerService</skos:prefLabel> + <skos:prefLabel xml:lang="es">infoGazetteerService</skos:prefLabel> + <skos:prefLabel xml:lang="et">infoGazetteerService</skos:prefLabel> + <skos:prefLabel xml:lang="el">infoGazetteerService</skos:prefLabel> + <skos:prefLabel xml:lang="de">infoGazetteerService</skos:prefLabel> + <skos:prefLabel xml:lang="bg">infoGazetteerService</skos:prefLabel> + <skos:prefLabel xml:lang="da">infoGazetteerService</skos:prefLabel> + <skos:prefLabel xml:lang="cs">infoGazetteerService</skos:prefLabel> + </skos:Concept> + <skos:Concept rdf:about="urn:inspire:service:taxonomy:infoOrderHandlingService"> + <skos:prefLabel xml:lang="fr">infoOrderHandlingService</skos:prefLabel> + <skos:prefLabel xml:lang="en">infoOrderHandlingService</skos:prefLabel> + <skos:prefLabel xml:lang="nl">infoOrderHandlingService</skos:prefLabel> + <skos:prefLabel xml:lang="sv">infoOrderHandlingService</skos:prefLabel> + <skos:prefLabel xml:lang="sl">infoOrderHandlingService</skos:prefLabel> + <skos:prefLabel xml:lang="sk">infoOrderHandlingService</skos:prefLabel> + <skos:prefLabel xml:lang="ro">infoOrderHandlingService</skos:prefLabel> + <skos:prefLabel xml:lang="pl">infoOrderHandlingService</skos:prefLabel> + <skos:prefLabel xml:lang="pt">infoOrderHandlingService</skos:prefLabel> + <skos:prefLabel xml:lang="mt">infoOrderHandlingService</skos:prefLabel> + <skos:prefLabel xml:lang="lv">infoOrderHandlingService</skos:prefLabel> + <skos:prefLabel xml:lang="lt">infoOrderHandlingService</skos:prefLabel> + <skos:prefLabel xml:lang="it">infoOrderHandlingService</skos:prefLabel> + <skos:prefLabel xml:lang="hu">infoOrderHandlingService</skos:prefLabel> + <skos:prefLabel xml:lang="fi">infoOrderHandlingService</skos:prefLabel> + <skos:prefLabel xml:lang="es">infoOrderHandlingService</skos:prefLabel> + <skos:prefLabel xml:lang="et">infoOrderHandlingService</skos:prefLabel> + <skos:prefLabel xml:lang="el">infoOrderHandlingService</skos:prefLabel> + <skos:prefLabel xml:lang="de">infoOrderHandlingService</skos:prefLabel> + <skos:prefLabel xml:lang="bg">infoOrderHandlingService</skos:prefLabel> + <skos:prefLabel xml:lang="da">infoOrderHandlingService</skos:prefLabel> + <skos:prefLabel xml:lang="cs">infoOrderHandlingService</skos:prefLabel> + </skos:Concept> + <skos:Concept rdf:about="urn:inspire:service:taxonomy:infoStandingOrderService"> + <skos:prefLabel xml:lang="fr">infoStandingOrderService</skos:prefLabel> + <skos:prefLabel xml:lang="en">infoStandingOrderService</skos:prefLabel> + <skos:prefLabel xml:lang="nl">infoStandingOrderService</skos:prefLabel> + <skos:prefLabel xml:lang="sv">infoStandingOrderService</skos:prefLabel> + <skos:prefLabel xml:lang="sl">infoStandingOrderService</skos:prefLabel> + <skos:prefLabel xml:lang="sk">infoStandingOrderService</skos:prefLabel> + <skos:prefLabel xml:lang="ro">infoStandingOrderService</skos:prefLabel> + <skos:prefLabel xml:lang="pl">infoStandingOrderService</skos:prefLabel> + <skos:prefLabel xml:lang="pt">infoStandingOrderService</skos:prefLabel> + <skos:prefLabel xml:lang="mt">infoStandingOrderService</skos:prefLabel> + <skos:prefLabel xml:lang="lv">infoStandingOrderService</skos:prefLabel> + <skos:prefLabel xml:lang="lt">infoStandingOrderService</skos:prefLabel> + <skos:prefLabel xml:lang="it">infoStandingOrderService</skos:prefLabel> + <skos:prefLabel xml:lang="hu">infoStandingOrderService</skos:prefLabel> + <skos:prefLabel xml:lang="fi">infoStandingOrderService</skos:prefLabel> + <skos:prefLabel xml:lang="es">infoStandingOrderService</skos:prefLabel> + <skos:prefLabel xml:lang="et">infoStandingOrderService</skos:prefLabel> + <skos:prefLabel xml:lang="el">infoStandingOrderService</skos:prefLabel> + <skos:prefLabel xml:lang="de">infoStandingOrderService</skos:prefLabel> + <skos:prefLabel xml:lang="bg">infoStandingOrderService</skos:prefLabel> + <skos:prefLabel xml:lang="da">infoStandingOrderService</skos:prefLabel> + <skos:prefLabel xml:lang="cs">infoStandingOrderService</skos:prefLabel> + </skos:Concept> + <skos:Concept rdf:about="urn:inspire:service:taxonomy:taskManagementService"> + <skos:prefLabel xml:lang="fr">taskManagementService</skos:prefLabel> + <skos:prefLabel xml:lang="en">taskManagementService</skos:prefLabel> + <skos:prefLabel xml:lang="nl">infoCoverageAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="sv">infoCoverageAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="sl">infoCoverageAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="sk">infoCoverageAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="ro">infoCoverageAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="pl">infoCoverageAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="pt">infoCoverageAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="mt">infoCoverageAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="lv">infoCoverageAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="lt">infoCoverageAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="it">infoCoverageAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="hu">infoCoverageAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="fi">infoCoverageAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="es">infoCoverageAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="et">infoCoverageAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="el">infoCoverageAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="de">infoCoverageAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="bg">infoCoverageAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="da">infoCoverageAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="cs">infoCoverageAccessService</skos:prefLabel> + </skos:Concept> + <skos:Concept rdf:about="urn:inspire:service:taxonomy:chainDefinitionService"> + <skos:prefLabel xml:lang="fr">chainDefinitionService</skos:prefLabel> + <skos:prefLabel xml:lang="en">chainDefinitionService</skos:prefLabel> + <skos:prefLabel xml:lang="nl">infoCoverageAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="sv">infoCoverageAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="sl">infoCoverageAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="sk">infoCoverageAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="ro">infoCoverageAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="pl">infoCoverageAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="pt">infoCoverageAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="mt">infoCoverageAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="lv">infoCoverageAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="lt">infoCoverageAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="it">infoCoverageAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="hu">infoCoverageAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="fi">infoCoverageAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="es">infoCoverageAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="et">infoCoverageAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="el">infoCoverageAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="de">infoCoverageAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="bg">infoCoverageAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="da">infoCoverageAccessService</skos:prefLabel> + <skos:prefLabel xml:lang="cs">infoCoverageAccessService</skos:prefLabel> + </skos:Concept> + <skos:Concept rdf:about="urn:inspire:service:taxonomy:workflowEnactmentService"> + <skos:prefLabel xml:lang="fr">workflowEnactmentService</skos:prefLabel> + <skos:prefLabel xml:lang="en">workflowEnactmentService</skos:prefLabel> + <skos:prefLabel xml:lang="nl">workflowEnactmentService</skos:prefLabel> + <skos:prefLabel xml:lang="sv">workflowEnactmentService</skos:prefLabel> + <skos:prefLabel xml:lang="sl">workflowEnactmentService</skos:prefLabel> + <skos:prefLabel xml:lang="sk">workflowEnactmentService</skos:prefLabel> + <skos:prefLabel xml:lang="ro">workflowEnactmentService</skos:prefLabel> + <skos:prefLabel xml:lang="pl">workflowEnactmentService</skos:prefLabel> + <skos:prefLabel xml:lang="pt">workflowEnactmentService</skos:prefLabel> + <skos:prefLabel xml:lang="mt">workflowEnactmentService</skos:prefLabel> + <skos:prefLabel xml:lang="lv">workflowEnactmentService</skos:prefLabel> + <skos:prefLabel xml:lang="lt">workflowEnactmentService</skos:prefLabel> + <skos:prefLabel xml:lang="it">workflowEnactmentService</skos:prefLabel> + <skos:prefLabel xml:lang="hu">workflowEnactmentService</skos:prefLabel> + <skos:prefLabel xml:lang="fi">workflowEnactmentService</skos:prefLabel> + <skos:prefLabel xml:lang="es">workflowEnactmentService</skos:prefLabel> + <skos:prefLabel xml:lang="et">workflowEnactmentService</skos:prefLabel> + <skos:prefLabel xml:lang="el">workflowEnactmentService</skos:prefLabel> + <skos:prefLabel xml:lang="de">workflowEnactmentService</skos:prefLabel> + <skos:prefLabel xml:lang="bg">workflowEnactmentService</skos:prefLabel> + <skos:prefLabel xml:lang="da">workflowEnactmentService</skos:prefLabel> + <skos:prefLabel xml:lang="cs">workflowEnactmentService</skos:prefLabel> + </skos:Concept> + <skos:Concept rdf:about="urn:inspire:service:taxonomy:subscriptionService"> + <skos:prefLabel xml:lang="fr">subscriptionService</skos:prefLabel> + <skos:prefLabel xml:lang="en">subscriptionService</skos:prefLabel> + <skos:prefLabel xml:lang="nl">subscriptionService</skos:prefLabel> + <skos:prefLabel xml:lang="sv">subscriptionService</skos:prefLabel> + <skos:prefLabel xml:lang="sl">subscriptionService</skos:prefLabel> + <skos:prefLabel xml:lang="sk">subscriptionService</skos:prefLabel> + <skos:prefLabel xml:lang="ro">subscriptionService</skos:prefLabel> + <skos:prefLabel xml:lang="pl">subscriptionService</skos:prefLabel> + <skos:prefLabel xml:lang="pt">subscriptionService</skos:prefLabel> + <skos:prefLabel xml:lang="mt">subscriptionService</skos:prefLabel> + <skos:prefLabel xml:lang="lv">subscriptionService</skos:prefLabel> + <skos:prefLabel xml:lang="lt">subscriptionService</skos:prefLabel> + <skos:prefLabel xml:lang="it">subscriptionService</skos:prefLabel> + <skos:prefLabel xml:lang="hu">subscriptionService</skos:prefLabel> + <skos:prefLabel xml:lang="fi">subscriptionService</skos:prefLabel> + <skos:prefLabel xml:lang="es">subscriptionService</skos:prefLabel> + <skos:prefLabel xml:lang="et">subscriptionService</skos:prefLabel> + <skos:prefLabel xml:lang="el">subscriptionService</skos:prefLabel> + <skos:prefLabel xml:lang="de">subscriptionService</skos:prefLabel> + <skos:prefLabel xml:lang="bg">subscriptionService</skos:prefLabel> + <skos:prefLabel xml:lang="da">subscriptionService</skos:prefLabel> + <skos:prefLabel xml:lang="cs">subscriptionService</skos:prefLabel> + </skos:Concept> + <skos:Concept rdf:about="urn:inspire:service:taxonomy:spatialProcessingService"> + <skos:prefLabel xml:lang="fr">spatialProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="en">spatialProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="nl">spatialProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="sv">spatialProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="sl">spatialProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="sk">spatialProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="ro">spatialProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="pl">spatialProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="pt">spatialProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="mt">spatialProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="lv">spatialProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="lt">spatialProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="it">spatialProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="hu">spatialProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="fi">spatialProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="es">spatialProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="et">spatialProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="el">spatialProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="de">spatialProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="bg">spatialProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="da">spatialProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="cs">spatialProcessingService</skos:prefLabel> + </skos:Concept> + <skos:Concept rdf:about="urn:inspire:service:taxonomy:spatialCoordinateConversionService"> + <skos:prefLabel xml:lang="fr">spatialCoordinateConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="en">spatialCoordinateConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="nl">spatialCoordinateConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="sv">spatialCoordinateConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="sl">spatialCoordinateConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="sk">spatialCoordinateConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="ro">spatialCoordinateConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="pl">spatialCoordinateConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="pt">spatialCoordinateConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="mt">spatialCoordinateConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="lv">spatialCoordinateConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="lt">spatialCoordinateConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="it">spatialCoordinateConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="hu">spatialCoordinateConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="fi">spatialCoordinateConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="es">spatialCoordinateConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="et">spatialCoordinateConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="el">spatialCoordinateConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="de">spatialCoordinateConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="bg">spatialCoordinateConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="da">spatialCoordinateConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="cs">spatialCoordinateConversionService</skos:prefLabel> + </skos:Concept> + <skos:Concept rdf:about="urn:inspire:service:taxonomy:spatialCoordinateTransformationService"> + <skos:prefLabel xml:lang="fr">spatialCoordinateTransformationService</skos:prefLabel> + <skos:prefLabel xml:lang="en">spatialCoordinateTransformationService</skos:prefLabel> + <skos:prefLabel xml:lang="nl">spatialCoordinateTransformationService</skos:prefLabel> + <skos:prefLabel xml:lang="sv">spatialCoordinateTransformationService</skos:prefLabel> + <skos:prefLabel xml:lang="sl">spatialCoordinateTransformationService</skos:prefLabel> + <skos:prefLabel xml:lang="sk">spatialCoordinateTransformationService</skos:prefLabel> + <skos:prefLabel xml:lang="ro">spatialCoordinateTransformationService</skos:prefLabel> + <skos:prefLabel xml:lang="pl">spatialCoordinateTransformationService</skos:prefLabel> + <skos:prefLabel xml:lang="pt">spatialCoordinateTransformationService</skos:prefLabel> + <skos:prefLabel xml:lang="mt">spatialCoordinateTransformationService</skos:prefLabel> + <skos:prefLabel xml:lang="lv">spatialCoordinateTransformationService</skos:prefLabel> + <skos:prefLabel xml:lang="lt">spatialCoordinateTransformationService</skos:prefLabel> + <skos:prefLabel xml:lang="it">spatialCoordinateTransformationService</skos:prefLabel> + <skos:prefLabel xml:lang="hu">spatialCoordinateTransformationService</skos:prefLabel> + <skos:prefLabel xml:lang="fi">spatialCoordinateTransformationService</skos:prefLabel> + <skos:prefLabel xml:lang="es">spatialCoordinateTransformationService</skos:prefLabel> + <skos:prefLabel xml:lang="et">spatialCoordinateTransformationService</skos:prefLabel> + <skos:prefLabel xml:lang="el">spatialCoordinateTransformationService</skos:prefLabel> + <skos:prefLabel xml:lang="de">spatialCoordinateTransformationService</skos:prefLabel> + <skos:prefLabel xml:lang="bg">spatialCoordinateTransformationService</skos:prefLabel> + <skos:prefLabel xml:lang="da">spatialCoordinateTransformationService</skos:prefLabel> + <skos:prefLabel xml:lang="cs">spatialCoordinateTransformationService</skos:prefLabel> + </skos:Concept> + <skos:Concept rdf:about="urn:inspire:service:taxonomy:spatialCoverageVectorConversionService"> + <skos:prefLabel xml:lang="fr">spatialCoverageVectorConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="en">spatialCoverageVectorConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="nl">spatialCoverageVectorConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="sv">spatialCoverageVectorConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="sl">spatialCoverageVectorConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="sk">spatialCoverageVectorConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="ro">spatialCoverageVectorConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="pl">spatialCoverageVectorConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="pt">spatialCoverageVectorConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="mt">spatialCoverageVectorConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="lv">spatialCoverageVectorConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="lt">spatialCoverageVectorConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="it">spatialCoverageVectorConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="hu">spatialCoverageVectorConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="fi">spatialCoverageVectorConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="es">spatialCoverageVectorConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="et">spatialCoverageVectorConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="el">spatialCoverageVectorConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="de">spatialCoverageVectorConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="bg">spatialCoverageVectorConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="da">spatialCoverageVectorConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="cs">spatialCoverageVectorConversionService</skos:prefLabel> + </skos:Concept> + <skos:Concept rdf:about="urn:inspire:service:taxonomy:spatialImageCoordinateConversionService"> + <skos:prefLabel xml:lang="fr">spatialImageCoordinateConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="en">spatialImageCoordinateConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="nl">spatialImageCoordinateConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="sv">spatialImageCoordinateConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="sl">spatialImageCoordinateConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="sk">spatialImageCoordinateConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="ro">spatialImageCoordinateConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="pl">spatialImageCoordinateConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="pt">spatialImageCoordinateConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="mt">spatialImageCoordinateConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="lv">spatialImageCoordinateConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="lt">spatialImageCoordinateConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="it">spatialImageCoordinateConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="hu">spatialImageCoordinateConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="fi">spatialImageCoordinateConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="es">spatialImageCoordinateConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="et">spatialImageCoordinateConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="el">spatialImageCoordinateConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="de">spatialImageCoordinateConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="bg">spatialImageCoordinateConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="da">spatialImageCoordinateConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="cs">spatialImageCoordinateConversionService</skos:prefLabel> + </skos:Concept> + <skos:Concept rdf:about="urn:inspire:service:taxonomy:spatialRectificationService"> + <skos:prefLabel xml:lang="fr">spatialRectificationService</skos:prefLabel> + <skos:prefLabel xml:lang="en">spatialRectificationService</skos:prefLabel> + <skos:prefLabel xml:lang="nl">spatialRectificationService</skos:prefLabel> + <skos:prefLabel xml:lang="sv">spatialRectificationService</skos:prefLabel> + <skos:prefLabel xml:lang="sl">spatialRectificationService</skos:prefLabel> + <skos:prefLabel xml:lang="sk">spatialRectificationService</skos:prefLabel> + <skos:prefLabel xml:lang="ro">spatialRectificationService</skos:prefLabel> + <skos:prefLabel xml:lang="pl">spatialRectificationService</skos:prefLabel> + <skos:prefLabel xml:lang="pt">spatialRectificationService</skos:prefLabel> + <skos:prefLabel xml:lang="mt">spatialRectificationService</skos:prefLabel> + <skos:prefLabel xml:lang="lv">spatialRectificationService</skos:prefLabel> + <skos:prefLabel xml:lang="lt">spatialRectificationService</skos:prefLabel> + <skos:prefLabel xml:lang="it">spatialRectificationService</skos:prefLabel> + <skos:prefLabel xml:lang="hu">spatialRectificationService</skos:prefLabel> + <skos:prefLabel xml:lang="fi">spatialRectificationService</skos:prefLabel> + <skos:prefLabel xml:lang="es">spatialRectificationService</skos:prefLabel> + <skos:prefLabel xml:lang="et">spatialRectificationService</skos:prefLabel> + <skos:prefLabel xml:lang="el">spatialRectificationService</skos:prefLabel> + <skos:prefLabel xml:lang="de">spatialRectificationService</skos:prefLabel> + <skos:prefLabel xml:lang="bg">spatialRectificationService</skos:prefLabel> + <skos:prefLabel xml:lang="da">spatialRectificationService</skos:prefLabel> + <skos:prefLabel xml:lang="cs">spatialRectificationService</skos:prefLabel> + </skos:Concept> + <skos:Concept rdf:about="urn:inspire:service:taxonomy:spatialOrthorectificationService"> + <skos:prefLabel xml:lang="fr">spatialOrthorectificationService</skos:prefLabel> + <skos:prefLabel xml:lang="en">spatialOrthorectificationService</skos:prefLabel> + <skos:prefLabel xml:lang="nl">spatialOrthorectificationService</skos:prefLabel> + <skos:prefLabel xml:lang="sv">spatialOrthorectificationService</skos:prefLabel> + <skos:prefLabel xml:lang="sl">spatialOrthorectificationService</skos:prefLabel> + <skos:prefLabel xml:lang="sk">spatialOrthorectificationService</skos:prefLabel> + <skos:prefLabel xml:lang="ro">spatialOrthorectificationService</skos:prefLabel> + <skos:prefLabel xml:lang="pl">spatialOrthorectificationService</skos:prefLabel> + <skos:prefLabel xml:lang="pt">spatialOrthorectificationService</skos:prefLabel> + <skos:prefLabel xml:lang="mt">spatialOrthorectificationService</skos:prefLabel> + <skos:prefLabel xml:lang="lv">spatialOrthorectificationService</skos:prefLabel> + <skos:prefLabel xml:lang="lt">spatialOrthorectificationService</skos:prefLabel> + <skos:prefLabel xml:lang="it">spatialOrthorectificationService</skos:prefLabel> + <skos:prefLabel xml:lang="hu">spatialOrthorectificationService</skos:prefLabel> + <skos:prefLabel xml:lang="fi">spatialOrthorectificationService</skos:prefLabel> + <skos:prefLabel xml:lang="es">spatialOrthorectificationService</skos:prefLabel> + <skos:prefLabel xml:lang="et">spatialOrthorectificationService</skos:prefLabel> + <skos:prefLabel xml:lang="el">spatialOrthorectificationService</skos:prefLabel> + <skos:prefLabel xml:lang="de">spatialOrthorectificationService</skos:prefLabel> + <skos:prefLabel xml:lang="bg">spatialOrthorectificationService</skos:prefLabel> + <skos:prefLabel xml:lang="da">spatialOrthorectificationService</skos:prefLabel> + <skos:prefLabel xml:lang="cs">spatialOrthorectificationService</skos:prefLabel> + </skos:Concept> + <skos:Concept rdf:about="urn:inspire:service:taxonomy:spatialSensorGeometryModelAdjustmentService"> + <skos:prefLabel xml:lang="fr">spatialSensorGeometryModelAdjustmentService</skos:prefLabel> + <skos:prefLabel xml:lang="en">spatialSensorGeometryModelAdjustmentService</skos:prefLabel> + <skos:prefLabel xml:lang="nl">spatialSensorGeometryModelAdjustmentService</skos:prefLabel> + <skos:prefLabel xml:lang="sv">spatialSensorGeometryModelAdjustmentService</skos:prefLabel> + <skos:prefLabel xml:lang="sl">spatialSensorGeometryModelAdjustmentService</skos:prefLabel> + <skos:prefLabel xml:lang="sk">spatialSensorGeometryModelAdjustmentService</skos:prefLabel> + <skos:prefLabel xml:lang="ro">spatialSensorGeometryModelAdjustmentService</skos:prefLabel> + <skos:prefLabel xml:lang="pl">spatialSensorGeometryModelAdjustmentService</skos:prefLabel> + <skos:prefLabel xml:lang="pt">spatialSensorGeometryModelAdjustmentService</skos:prefLabel> + <skos:prefLabel xml:lang="mt">spatialSensorGeometryModelAdjustmentService</skos:prefLabel> + <skos:prefLabel xml:lang="lv">spatialSensorGeometryModelAdjustmentService</skos:prefLabel> + <skos:prefLabel xml:lang="lt">spatialSensorGeometryModelAdjustmentService</skos:prefLabel> + <skos:prefLabel xml:lang="it">spatialSensorGeometryModelAdjustmentService</skos:prefLabel> + <skos:prefLabel xml:lang="hu">spatialSensorGeometryModelAdjustmentService</skos:prefLabel> + <skos:prefLabel xml:lang="fi">spatialSensorGeometryModelAdjustmentService</skos:prefLabel> + <skos:prefLabel xml:lang="es">spatialSensorGeometryModelAdjustmentService</skos:prefLabel> + <skos:prefLabel xml:lang="et">spatialSensorGeometryModelAdjustmentService</skos:prefLabel> + <skos:prefLabel xml:lang="el">spatialSensorGeometryModelAdjustmentService</skos:prefLabel> + <skos:prefLabel xml:lang="de">spatialSensorGeometryModelAdjustmentService</skos:prefLabel> + <skos:prefLabel xml:lang="bg">spatialSensorGeometryModelAdjustmentService</skos:prefLabel> + <skos:prefLabel xml:lang="da">spatialSensorGeometryModelAdjustmentService</skos:prefLabel> + <skos:prefLabel xml:lang="cs">spatialSensorGeometryModelAdjustmentService</skos:prefLabel> + </skos:Concept> + <skos:Concept rdf:about="urn:inspire:service:taxonomy:spatialImageGeometryModelConversionService"> + <skos:prefLabel xml:lang="fr">spatialImageGeometryModelConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="en">spatialImageGeometryModelConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="nl">spatialImageGeometryModelConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="sv">spatialImageGeometryModelConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="sl">spatialImageGeometryModelConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="sk">spatialImageGeometryModelConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="ro">spatialImageGeometryModelConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="pl">spatialImageGeometryModelConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="pt">spatialImageGeometryModelConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="mt">spatialImageGeometryModelConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="lv">spatialImageGeometryModelConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="lt">spatialImageGeometryModelConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="it">spatialImageGeometryModelConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="hu">spatialImageGeometryModelConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="fi">spatialImageGeometryModelConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="es">spatialImageGeometryModelConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="et">spatialImageGeometryModelConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="el">spatialImageGeometryModelConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="de">spatialImageGeometryModelConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="bg">spatialImageGeometryModelConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="da">spatialImageGeometryModelConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="cs">spatialImageGeometryModelConversionService</skos:prefLabel> + </skos:Concept> + <skos:Concept rdf:about="urn:inspire:service:taxonomy:spatialSubsettingService"> + <skos:prefLabel xml:lang="fr">spatialSubsettingService</skos:prefLabel> + <skos:prefLabel xml:lang="en">spatialSubsettingService</skos:prefLabel> + <skos:prefLabel xml:lang="nl">spatialSubsettingService</skos:prefLabel> + <skos:prefLabel xml:lang="sv">spatialSubsettingService</skos:prefLabel> + <skos:prefLabel xml:lang="sl">spatialSubsettingService</skos:prefLabel> + <skos:prefLabel xml:lang="sk">spatialSubsettingService</skos:prefLabel> + <skos:prefLabel xml:lang="ro">spatialSubsettingService</skos:prefLabel> + <skos:prefLabel xml:lang="pl">spatialSubsettingService</skos:prefLabel> + <skos:prefLabel xml:lang="pt">spatialSubsettingService</skos:prefLabel> + <skos:prefLabel xml:lang="mt">spatialSubsettingService</skos:prefLabel> + <skos:prefLabel xml:lang="lv">spatialSubsettingService</skos:prefLabel> + <skos:prefLabel xml:lang="lt">spatialSubsettingService</skos:prefLabel> + <skos:prefLabel xml:lang="it">spatialSubsettingService</skos:prefLabel> + <skos:prefLabel xml:lang="hu">spatialSubsettingService</skos:prefLabel> + <skos:prefLabel xml:lang="fi">spatialSubsettingService</skos:prefLabel> + <skos:prefLabel xml:lang="es">spatialSubsettingService</skos:prefLabel> + <skos:prefLabel xml:lang="et">spatialSubsettingService</skos:prefLabel> + <skos:prefLabel xml:lang="el">spatialSubsettingService</skos:prefLabel> + <skos:prefLabel xml:lang="de">spatialSubsettingService</skos:prefLabel> + <skos:prefLabel xml:lang="bg">spatialSubsettingService</skos:prefLabel> + <skos:prefLabel xml:lang="da">spatialSubsettingService</skos:prefLabel> + <skos:prefLabel xml:lang="cs">spatialSubsettingService</skos:prefLabel> + </skos:Concept> + <skos:Concept rdf:about="urn:inspire:service:taxonomy:spatialSamplingService"> + <skos:prefLabel xml:lang="fr">spatialSamplingService</skos:prefLabel> + <skos:prefLabel xml:lang="en">spatialSamplingService</skos:prefLabel> + <skos:prefLabel xml:lang="nl">spatialSamplingService</skos:prefLabel> + <skos:prefLabel xml:lang="sv">spatialSamplingService</skos:prefLabel> + <skos:prefLabel xml:lang="sl">spatialSamplingService</skos:prefLabel> + <skos:prefLabel xml:lang="sk">spatialSamplingService</skos:prefLabel> + <skos:prefLabel xml:lang="ro">spatialSamplingService</skos:prefLabel> + <skos:prefLabel xml:lang="pl">spatialSamplingService</skos:prefLabel> + <skos:prefLabel xml:lang="pt">spatialSamplingService</skos:prefLabel> + <skos:prefLabel xml:lang="mt">spatialSamplingService</skos:prefLabel> + <skos:prefLabel xml:lang="lv">spatialSamplingService</skos:prefLabel> + <skos:prefLabel xml:lang="lt">spatialSamplingService</skos:prefLabel> + <skos:prefLabel xml:lang="it">spatialSamplingService</skos:prefLabel> + <skos:prefLabel xml:lang="hu">spatialSamplingService</skos:prefLabel> + <skos:prefLabel xml:lang="fi">spatialSamplingService</skos:prefLabel> + <skos:prefLabel xml:lang="es">spatialSamplingService</skos:prefLabel> + <skos:prefLabel xml:lang="et">spatialSamplingService</skos:prefLabel> + <skos:prefLabel xml:lang="el">spatialSamplingService</skos:prefLabel> + <skos:prefLabel xml:lang="de">spatialSamplingService</skos:prefLabel> + <skos:prefLabel xml:lang="bg">spatialSamplingService</skos:prefLabel> + <skos:prefLabel xml:lang="da">spatialSamplingService</skos:prefLabel> + <skos:prefLabel xml:lang="cs">spatialSamplingService</skos:prefLabel> + </skos:Concept> + <skos:Concept rdf:about="urn:inspire:service:taxonomy:spatialTilingChangeService"> + <skos:prefLabel xml:lang="fr">spatialTilingChangeService</skos:prefLabel> + <skos:prefLabel xml:lang="en">spatialTilingChangeService</skos:prefLabel> + <skos:prefLabel xml:lang="nl">spatialTilingChangeService</skos:prefLabel> + <skos:prefLabel xml:lang="sv">spatialTilingChangeService</skos:prefLabel> + <skos:prefLabel xml:lang="sl">spatialTilingChangeService</skos:prefLabel> + <skos:prefLabel xml:lang="sk">spatialTilingChangeService</skos:prefLabel> + <skos:prefLabel xml:lang="ro">spatialTilingChangeService</skos:prefLabel> + <skos:prefLabel xml:lang="pl">spatialTilingChangeService</skos:prefLabel> + <skos:prefLabel xml:lang="pt">spatialTilingChangeService</skos:prefLabel> + <skos:prefLabel xml:lang="mt">spatialTilingChangeService</skos:prefLabel> + <skos:prefLabel xml:lang="lv">spatialTilingChangeService</skos:prefLabel> + <skos:prefLabel xml:lang="lt">spatialTilingChangeService</skos:prefLabel> + <skos:prefLabel xml:lang="it">spatialTilingChangeService</skos:prefLabel> + <skos:prefLabel xml:lang="hu">spatialTilingChangeService</skos:prefLabel> + <skos:prefLabel xml:lang="fi">spatialTilingChangeService</skos:prefLabel> + <skos:prefLabel xml:lang="es">spatialTilingChangeService</skos:prefLabel> + <skos:prefLabel xml:lang="et">spatialTilingChangeService</skos:prefLabel> + <skos:prefLabel xml:lang="el">spatialTilingChangeService</skos:prefLabel> + <skos:prefLabel xml:lang="de">spatialTilingChangeService</skos:prefLabel> + <skos:prefLabel xml:lang="bg">spatialTilingChangeService</skos:prefLabel> + <skos:prefLabel xml:lang="da">spatialTilingChangeService</skos:prefLabel> + <skos:prefLabel xml:lang="cs">spatialTilingChangeService</skos:prefLabel> + </skos:Concept> + <skos:Concept rdf:about="urn:inspire:service:taxonomy:spatialDimensionMeasurementService"> + <skos:prefLabel xml:lang="fr">spatialDimensionMeasurementService</skos:prefLabel> + <skos:prefLabel xml:lang="en">spatialDimensionMeasurementService</skos:prefLabel> + <skos:prefLabel xml:lang="nl">spatialDimensionMeasurementService</skos:prefLabel> + <skos:prefLabel xml:lang="sv">spatialDimensionMeasurementService</skos:prefLabel> + <skos:prefLabel xml:lang="sl">spatialDimensionMeasurementService</skos:prefLabel> + <skos:prefLabel xml:lang="sk">spatialDimensionMeasurementService</skos:prefLabel> + <skos:prefLabel xml:lang="ro">spatialDimensionMeasurementService</skos:prefLabel> + <skos:prefLabel xml:lang="pl">spatialDimensionMeasurementService</skos:prefLabel> + <skos:prefLabel xml:lang="pt">spatialDimensionMeasurementService</skos:prefLabel> + <skos:prefLabel xml:lang="mt">spatialDimensionMeasurementService</skos:prefLabel> + <skos:prefLabel xml:lang="lv">spatialDimensionMeasurementService</skos:prefLabel> + <skos:prefLabel xml:lang="lt">spatialDimensionMeasurementService</skos:prefLabel> + <skos:prefLabel xml:lang="it">spatialDimensionMeasurementService</skos:prefLabel> + <skos:prefLabel xml:lang="hu">spatialDimensionMeasurementService</skos:prefLabel> + <skos:prefLabel xml:lang="fi">spatialDimensionMeasurementService</skos:prefLabel> + <skos:prefLabel xml:lang="es">spatialDimensionMeasurementService</skos:prefLabel> + <skos:prefLabel xml:lang="et">spatialDimensionMeasurementService</skos:prefLabel> + <skos:prefLabel xml:lang="el">spatialDimensionMeasurementService</skos:prefLabel> + <skos:prefLabel xml:lang="de">spatialDimensionMeasurementService</skos:prefLabel> + <skos:prefLabel xml:lang="bg">spatialDimensionMeasurementService</skos:prefLabel> + <skos:prefLabel xml:lang="da">spatialDimensionMeasurementService</skos:prefLabel> + <skos:prefLabel xml:lang="cs">spatialDimensionMeasurementService</skos:prefLabel> + </skos:Concept> + <skos:Concept rdf:about="urn:inspire:service:taxonomy:spatialFeatureManipulationService"> + <skos:prefLabel xml:lang="fr">spatialFeatureManipulationService</skos:prefLabel> + <skos:prefLabel xml:lang="en">spatialFeatureManipulationService</skos:prefLabel> + <skos:prefLabel xml:lang="nl">spatialFeatureManipulationService</skos:prefLabel> + <skos:prefLabel xml:lang="sv">spatialFeatureManipulationService</skos:prefLabel> + <skos:prefLabel xml:lang="sl">spatialFeatureManipulationService</skos:prefLabel> + <skos:prefLabel xml:lang="sk">spatialFeatureManipulationService</skos:prefLabel> + <skos:prefLabel xml:lang="ro">spatialFeatureManipulationService</skos:prefLabel> + <skos:prefLabel xml:lang="pl">spatialFeatureManipulationService</skos:prefLabel> + <skos:prefLabel xml:lang="pt">spatialFeatureManipulationService</skos:prefLabel> + <skos:prefLabel xml:lang="mt">spatialFeatureManipulationService</skos:prefLabel> + <skos:prefLabel xml:lang="lv">spatialFeatureManipulationService</skos:prefLabel> + <skos:prefLabel xml:lang="lt">spatialFeatureManipulationService</skos:prefLabel> + <skos:prefLabel xml:lang="it">spatialFeatureManipulationService</skos:prefLabel> + <skos:prefLabel xml:lang="hu">spatialFeatureManipulationService</skos:prefLabel> + <skos:prefLabel xml:lang="fi">spatialFeatureManipulationService</skos:prefLabel> + <skos:prefLabel xml:lang="es">spatialFeatureManipulationService</skos:prefLabel> + <skos:prefLabel xml:lang="et">spatialFeatureManipulationService</skos:prefLabel> + <skos:prefLabel xml:lang="el">spatialFeatureManipulationService</skos:prefLabel> + <skos:prefLabel xml:lang="de">spatialFeatureManipulationService</skos:prefLabel> + <skos:prefLabel xml:lang="bg">spatialFeatureManipulationService</skos:prefLabel> + <skos:prefLabel xml:lang="da">spatialFeatureManipulationService</skos:prefLabel> + <skos:prefLabel xml:lang="cs">spatialFeatureManipulationService</skos:prefLabel> + </skos:Concept> + <skos:Concept rdf:about="urn:inspire:service:taxonomy:spatialFeatureMatchingService"> + <skos:prefLabel xml:lang="fr">spatialFeatureMatchingService</skos:prefLabel> + <skos:prefLabel xml:lang="en">spatialFeatureMatchingService</skos:prefLabel> + <skos:prefLabel xml:lang="nl">spatialFeatureMatchingService</skos:prefLabel> + <skos:prefLabel xml:lang="sv">spatialFeatureMatchingService</skos:prefLabel> + <skos:prefLabel xml:lang="sl">spatialFeatureMatchingService</skos:prefLabel> + <skos:prefLabel xml:lang="sk">spatialFeatureMatchingService</skos:prefLabel> + <skos:prefLabel xml:lang="ro">spatialFeatureMatchingService</skos:prefLabel> + <skos:prefLabel xml:lang="pl">spatialFeatureMatchingService</skos:prefLabel> + <skos:prefLabel xml:lang="pt">spatialFeatureMatchingService</skos:prefLabel> + <skos:prefLabel xml:lang="mt">spatialFeatureMatchingService</skos:prefLabel> + <skos:prefLabel xml:lang="lv">spatialFeatureMatchingService</skos:prefLabel> + <skos:prefLabel xml:lang="lt">spatialFeatureMatchingService</skos:prefLabel> + <skos:prefLabel xml:lang="it">spatialFeatureMatchingService</skos:prefLabel> + <skos:prefLabel xml:lang="hu">spatialFeatureMatchingService</skos:prefLabel> + <skos:prefLabel xml:lang="fi">spatialFeatureMatchingService</skos:prefLabel> + <skos:prefLabel xml:lang="es">spatialFeatureMatchingService</skos:prefLabel> + <skos:prefLabel xml:lang="et">spatialFeatureMatchingService</skos:prefLabel> + <skos:prefLabel xml:lang="el">spatialFeatureMatchingService</skos:prefLabel> + <skos:prefLabel xml:lang="de">spatialFeatureMatchingService</skos:prefLabel> + <skos:prefLabel xml:lang="bg">spatialFeatureMatchingService</skos:prefLabel> + <skos:prefLabel xml:lang="da">spatialFeatureMatchingService</skos:prefLabel> + <skos:prefLabel xml:lang="cs">spatialFeatureMatchingService</skos:prefLabel> + </skos:Concept> + <skos:Concept rdf:about="urn:inspire:service:taxonomy:spatialFeatureGeneralizationService"> + <skos:prefLabel xml:lang="fr">spatialFeatureGeneralizationService</skos:prefLabel> + <skos:prefLabel xml:lang="en">spatialFeatureGeneralizationService</skos:prefLabel> + <skos:prefLabel xml:lang="nl">spatialFeatureGeneralizationService</skos:prefLabel> + <skos:prefLabel xml:lang="sv">spatialFeatureGeneralizationService</skos:prefLabel> + <skos:prefLabel xml:lang="sl">spatialFeatureGeneralizationService</skos:prefLabel> + <skos:prefLabel xml:lang="sk">spatialFeatureGeneralizationService</skos:prefLabel> + <skos:prefLabel xml:lang="ro">spatialFeatureGeneralizationService</skos:prefLabel> + <skos:prefLabel xml:lang="pl">spatialFeatureGeneralizationService</skos:prefLabel> + <skos:prefLabel xml:lang="pt">spatialFeatureGeneralizationService</skos:prefLabel> + <skos:prefLabel xml:lang="mt">spatialFeatureGeneralizationService</skos:prefLabel> + <skos:prefLabel xml:lang="lv">spatialFeatureGeneralizationService</skos:prefLabel> + <skos:prefLabel xml:lang="lt">spatialFeatureGeneralizationService</skos:prefLabel> + <skos:prefLabel xml:lang="it">spatialFeatureGeneralizationService</skos:prefLabel> + <skos:prefLabel xml:lang="hu">spatialFeatureGeneralizationService</skos:prefLabel> + <skos:prefLabel xml:lang="fi">spatialFeatureGeneralizationService</skos:prefLabel> + <skos:prefLabel xml:lang="es">spatialFeatureGeneralizationService</skos:prefLabel> + <skos:prefLabel xml:lang="et">spatialFeatureGeneralizationService</skos:prefLabel> + <skos:prefLabel xml:lang="el">spatialFeatureGeneralizationService</skos:prefLabel> + <skos:prefLabel xml:lang="de">spatialFeatureGeneralizationService</skos:prefLabel> + <skos:prefLabel xml:lang="bg">spatialFeatureGeneralizationService</skos:prefLabel> + <skos:prefLabel xml:lang="da">spatialFeatureGeneralizationService</skos:prefLabel> + <skos:prefLabel xml:lang="cs">spatialFeatureGeneralizationService</skos:prefLabel> + </skos:Concept> + <skos:Concept rdf:about="urn:inspire:service:taxonomy:spatialRouteDeterminationService"> + <skos:prefLabel xml:lang="fr">spatialRouteDeterminationService</skos:prefLabel> + <skos:prefLabel xml:lang="en">spatialRouteDeterminationService</skos:prefLabel> + <skos:prefLabel xml:lang="nl">spatialRouteDeterminationService</skos:prefLabel> + <skos:prefLabel xml:lang="sv">spatialRouteDeterminationService</skos:prefLabel> + <skos:prefLabel xml:lang="sl">spatialRouteDeterminationService</skos:prefLabel> + <skos:prefLabel xml:lang="sk">spatialRouteDeterminationService</skos:prefLabel> + <skos:prefLabel xml:lang="ro">spatialRouteDeterminationService</skos:prefLabel> + <skos:prefLabel xml:lang="pl">spatialRouteDeterminationService</skos:prefLabel> + <skos:prefLabel xml:lang="pt">spatialRouteDeterminationService</skos:prefLabel> + <skos:prefLabel xml:lang="mt">spatialRouteDeterminationService</skos:prefLabel> + <skos:prefLabel xml:lang="lv">spatialRouteDeterminationService</skos:prefLabel> + <skos:prefLabel xml:lang="lt">spatialRouteDeterminationService</skos:prefLabel> + <skos:prefLabel xml:lang="it">spatialRouteDeterminationService</skos:prefLabel> + <skos:prefLabel xml:lang="hu">spatialRouteDeterminationService</skos:prefLabel> + <skos:prefLabel xml:lang="fi">spatialRouteDeterminationService</skos:prefLabel> + <skos:prefLabel xml:lang="es">spatialRouteDeterminationService</skos:prefLabel> + <skos:prefLabel xml:lang="et">spatialRouteDeterminationService</skos:prefLabel> + <skos:prefLabel xml:lang="el">spatialRouteDeterminationService</skos:prefLabel> + <skos:prefLabel xml:lang="de">spatialRouteDeterminationService</skos:prefLabel> + <skos:prefLabel xml:lang="bg">spatialRouteDeterminationService</skos:prefLabel> + <skos:prefLabel xml:lang="da">spatialRouteDeterminationService</skos:prefLabel> + <skos:prefLabel xml:lang="cs">spatialRouteDeterminationService</skos:prefLabel> + </skos:Concept> + <skos:Concept rdf:about="urn:inspire:service:taxonomy:spatialPositioningService"> + <skos:prefLabel xml:lang="fr">spatialPositioningService</skos:prefLabel> + <skos:prefLabel xml:lang="en">spatialPositioningService</skos:prefLabel> + <skos:prefLabel xml:lang="nl">spatialPositioningService</skos:prefLabel> + <skos:prefLabel xml:lang="sv">spatialPositioningService</skos:prefLabel> + <skos:prefLabel xml:lang="sl">spatialPositioningService</skos:prefLabel> + <skos:prefLabel xml:lang="sk">spatialPositioningService</skos:prefLabel> + <skos:prefLabel xml:lang="ro">spatialPositioningService</skos:prefLabel> + <skos:prefLabel xml:lang="pl">spatialPositioningService</skos:prefLabel> + <skos:prefLabel xml:lang="pt">spatialPositioningService</skos:prefLabel> + <skos:prefLabel xml:lang="mt">spatialPositioningService</skos:prefLabel> + <skos:prefLabel xml:lang="lv">spatialPositioningService</skos:prefLabel> + <skos:prefLabel xml:lang="lt">spatialPositioningService</skos:prefLabel> + <skos:prefLabel xml:lang="it">spatialPositioningService</skos:prefLabel> + <skos:prefLabel xml:lang="hu">spatialPositioningService</skos:prefLabel> + <skos:prefLabel xml:lang="fi">spatialPositioningService</skos:prefLabel> + <skos:prefLabel xml:lang="es">spatialPositioningService</skos:prefLabel> + <skos:prefLabel xml:lang="et">spatialPositioningService</skos:prefLabel> + <skos:prefLabel xml:lang="el">spatialPositioningService</skos:prefLabel> + <skos:prefLabel xml:lang="de">spatialPositioningService</skos:prefLabel> + <skos:prefLabel xml:lang="bg">spatialPositioningService</skos:prefLabel> + <skos:prefLabel xml:lang="da">spatialPositioningService</skos:prefLabel> + <skos:prefLabel xml:lang="cs">spatialPositioningService</skos:prefLabel> + </skos:Concept> + <skos:Concept rdf:about="urn:inspire:service:taxonomy:spatialProximityAnalysisService"> + <skos:prefLabel xml:lang="fr">spatialProximityAnalysisService</skos:prefLabel> + <skos:prefLabel xml:lang="en">spatialProximityAnalysisService</skos:prefLabel> + <skos:prefLabel xml:lang="nl">spatialProximityAnalysisService</skos:prefLabel> + <skos:prefLabel xml:lang="sv">spatialProximityAnalysisService</skos:prefLabel> + <skos:prefLabel xml:lang="sl">spatialProximityAnalysisService</skos:prefLabel> + <skos:prefLabel xml:lang="sk">spatialProximityAnalysisService</skos:prefLabel> + <skos:prefLabel xml:lang="ro">spatialProximityAnalysisService</skos:prefLabel> + <skos:prefLabel xml:lang="pl">spatialProximityAnalysisService</skos:prefLabel> + <skos:prefLabel xml:lang="pt">spatialProximityAnalysisService</skos:prefLabel> + <skos:prefLabel xml:lang="mt">spatialProximityAnalysisService</skos:prefLabel> + <skos:prefLabel xml:lang="lv">spatialProximityAnalysisService</skos:prefLabel> + <skos:prefLabel xml:lang="lt">spatialProximityAnalysisService</skos:prefLabel> + <skos:prefLabel xml:lang="it">spatialProximityAnalysisService</skos:prefLabel> + <skos:prefLabel xml:lang="hu">spatialProximityAnalysisService</skos:prefLabel> + <skos:prefLabel xml:lang="fi">spatialProximityAnalysisService</skos:prefLabel> + <skos:prefLabel xml:lang="es">spatialProximityAnalysisService</skos:prefLabel> + <skos:prefLabel xml:lang="et">spatialProximityAnalysisService</skos:prefLabel> + <skos:prefLabel xml:lang="el">spatialProximityAnalysisService</skos:prefLabel> + <skos:prefLabel xml:lang="de">spatialProximityAnalysisService</skos:prefLabel> + <skos:prefLabel xml:lang="bg">spatialProximityAnalysisService</skos:prefLabel> + <skos:prefLabel xml:lang="da">spatialProximityAnalysisService</skos:prefLabel> + <skos:prefLabel xml:lang="cs">spatialProximityAnalysisService</skos:prefLabel> + </skos:Concept> + <skos:Concept rdf:about="urn:inspire:service:taxonomy:thematicProcessingService"> + <skos:prefLabel xml:lang="fr">thematicProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="en">thematicProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="nl">thematicProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="sv">thematicProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="sl">thematicProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="sk">thematicProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="ro">thematicProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="pl">thematicProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="pt">thematicProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="mt">thematicProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="lv">thematicProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="lt">thematicProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="it">thematicProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="hu">thematicProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="fi">thematicProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="es">thematicProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="et">thematicProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="el">thematicProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="de">thematicProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="bg">thematicProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="da">thematicProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="cs">thematicProcessingService</skos:prefLabel> + </skos:Concept> + <skos:Concept rdf:about="urn:inspire:service:taxonomy:thematicGoparameterCalculationService"> + <skos:prefLabel xml:lang="fr">thematicGoparameterCalculationService</skos:prefLabel> + <skos:prefLabel xml:lang="en">thematicGoparameterCalculationService</skos:prefLabel> + <skos:prefLabel xml:lang="nl">thematicGoparameterCalculationService</skos:prefLabel> + <skos:prefLabel xml:lang="sv">thematicGoparameterCalculationService</skos:prefLabel> + <skos:prefLabel xml:lang="sl">thematicGoparameterCalculationService</skos:prefLabel> + <skos:prefLabel xml:lang="sk">thematicGoparameterCalculationService</skos:prefLabel> + <skos:prefLabel xml:lang="ro">thematicGoparameterCalculationService</skos:prefLabel> + <skos:prefLabel xml:lang="pl">thematicGoparameterCalculationService</skos:prefLabel> + <skos:prefLabel xml:lang="pt">thematicGoparameterCalculationService</skos:prefLabel> + <skos:prefLabel xml:lang="mt">thematicGoparameterCalculationService</skos:prefLabel> + <skos:prefLabel xml:lang="lv">thematicGoparameterCalculationService</skos:prefLabel> + <skos:prefLabel xml:lang="lt">thematicGoparameterCalculationService</skos:prefLabel> + <skos:prefLabel xml:lang="it">thematicGoparameterCalculationService</skos:prefLabel> + <skos:prefLabel xml:lang="hu">thematicGoparameterCalculationService</skos:prefLabel> + <skos:prefLabel xml:lang="fi">thematicGoparameterCalculationService</skos:prefLabel> + <skos:prefLabel xml:lang="es">thematicGoparameterCalculationService</skos:prefLabel> + <skos:prefLabel xml:lang="et">thematicGoparameterCalculationService</skos:prefLabel> + <skos:prefLabel xml:lang="el">thematicGoparameterCalculationService</skos:prefLabel> + <skos:prefLabel xml:lang="de">thematicGoparameterCalculationService</skos:prefLabel> + <skos:prefLabel xml:lang="bg">thematicGoparameterCalculationService</skos:prefLabel> + <skos:prefLabel xml:lang="da">thematicGoparameterCalculationService</skos:prefLabel> + <skos:prefLabel xml:lang="cs">thematicGoparameterCalculationService</skos:prefLabel> + </skos:Concept> + <skos:Concept rdf:about="urn:inspire:service:taxonomy:thematicClassificationService"> + <skos:prefLabel xml:lang="fr">thematicClassificationService</skos:prefLabel> + <skos:prefLabel xml:lang="en">thematicClassificationService</skos:prefLabel> + <skos:prefLabel xml:lang="nl">thematicClassificationService</skos:prefLabel> + <skos:prefLabel xml:lang="sv">thematicClassificationService</skos:prefLabel> + <skos:prefLabel xml:lang="sl">thematicClassificationService</skos:prefLabel> + <skos:prefLabel xml:lang="sk">thematicClassificationService</skos:prefLabel> + <skos:prefLabel xml:lang="ro">thematicClassificationService</skos:prefLabel> + <skos:prefLabel xml:lang="pl">thematicClassificationService</skos:prefLabel> + <skos:prefLabel xml:lang="pt">thematicClassificationService</skos:prefLabel> + <skos:prefLabel xml:lang="mt">thematicClassificationService</skos:prefLabel> + <skos:prefLabel xml:lang="lv">thematicClassificationService</skos:prefLabel> + <skos:prefLabel xml:lang="lt">thematicClassificationService</skos:prefLabel> + <skos:prefLabel xml:lang="it">thematicClassificationService</skos:prefLabel> + <skos:prefLabel xml:lang="hu">thematicClassificationService</skos:prefLabel> + <skos:prefLabel xml:lang="fi">thematicClassificationService</skos:prefLabel> + <skos:prefLabel xml:lang="es">thematicClassificationService</skos:prefLabel> + <skos:prefLabel xml:lang="et">thematicClassificationService</skos:prefLabel> + <skos:prefLabel xml:lang="el">thematicClassificationService</skos:prefLabel> + <skos:prefLabel xml:lang="de">thematicClassificationService</skos:prefLabel> + <skos:prefLabel xml:lang="bg">thematicClassificationService</skos:prefLabel> + <skos:prefLabel xml:lang="da">thematicClassificationService</skos:prefLabel> + <skos:prefLabel xml:lang="cs">thematicClassificationService</skos:prefLabel> + </skos:Concept> + <skos:Concept rdf:about="urn:inspire:service:taxonomy:thematicFeatureGeneralizationService"> + <skos:prefLabel xml:lang="fr">thematicFeatureGeneralizationService</skos:prefLabel> + <skos:prefLabel xml:lang="en">thematicFeatureGeneralizationService</skos:prefLabel> + <skos:prefLabel xml:lang="nl">thematicFeatureGeneralizationService</skos:prefLabel> + <skos:prefLabel xml:lang="sv">thematicFeatureGeneralizationService</skos:prefLabel> + <skos:prefLabel xml:lang="sl">thematicFeatureGeneralizationService</skos:prefLabel> + <skos:prefLabel xml:lang="sk">thematicFeatureGeneralizationService</skos:prefLabel> + <skos:prefLabel xml:lang="ro">thematicFeatureGeneralizationService</skos:prefLabel> + <skos:prefLabel xml:lang="pl">thematicFeatureGeneralizationService</skos:prefLabel> + <skos:prefLabel xml:lang="pt">thematicFeatureGeneralizationService</skos:prefLabel> + <skos:prefLabel xml:lang="mt">thematicFeatureGeneralizationService</skos:prefLabel> + <skos:prefLabel xml:lang="lv">thematicFeatureGeneralizationService</skos:prefLabel> + <skos:prefLabel xml:lang="lt">thematicFeatureGeneralizationService</skos:prefLabel> + <skos:prefLabel xml:lang="it">thematicFeatureGeneralizationService</skos:prefLabel> + <skos:prefLabel xml:lang="hu">thematicFeatureGeneralizationService</skos:prefLabel> + <skos:prefLabel xml:lang="fi">thematicFeatureGeneralizationService</skos:prefLabel> + <skos:prefLabel xml:lang="es">thematicFeatureGeneralizationService</skos:prefLabel> + <skos:prefLabel xml:lang="et">thematicFeatureGeneralizationService</skos:prefLabel> + <skos:prefLabel xml:lang="el">thematicFeatureGeneralizationService</skos:prefLabel> + <skos:prefLabel xml:lang="de">thematicFeatureGeneralizationService</skos:prefLabel> + <skos:prefLabel xml:lang="bg">thematicFeatureGeneralizationService</skos:prefLabel> + <skos:prefLabel xml:lang="da">thematicFeatureGeneralizationService</skos:prefLabel> + <skos:prefLabel xml:lang="cs">thematicFeatureGeneralizationService</skos:prefLabel> + </skos:Concept> + <skos:Concept rdf:about="urn:inspire:service:taxonomy:thematicSubsettingService"> + <skos:prefLabel xml:lang="fr">thematicSubsettingService</skos:prefLabel> + <skos:prefLabel xml:lang="en">thematicSubsettingService</skos:prefLabel> + <skos:prefLabel xml:lang="nl">thematicSubsettingService</skos:prefLabel> + <skos:prefLabel xml:lang="sv">thematicSubsettingService</skos:prefLabel> + <skos:prefLabel xml:lang="sl">thematicSubsettingService</skos:prefLabel> + <skos:prefLabel xml:lang="sk">thematicSubsettingService</skos:prefLabel> + <skos:prefLabel xml:lang="ro">thematicSubsettingService</skos:prefLabel> + <skos:prefLabel xml:lang="pl">thematicSubsettingService</skos:prefLabel> + <skos:prefLabel xml:lang="pt">thematicSubsettingService</skos:prefLabel> + <skos:prefLabel xml:lang="mt">thematicSubsettingService</skos:prefLabel> + <skos:prefLabel xml:lang="lv">thematicSubsettingService</skos:prefLabel> + <skos:prefLabel xml:lang="lt">thematicSubsettingService</skos:prefLabel> + <skos:prefLabel xml:lang="it">thematicSubsettingService</skos:prefLabel> + <skos:prefLabel xml:lang="hu">thematicSubsettingService</skos:prefLabel> + <skos:prefLabel xml:lang="fi">thematicSubsettingService</skos:prefLabel> + <skos:prefLabel xml:lang="es">thematicSubsettingService</skos:prefLabel> + <skos:prefLabel xml:lang="et">thematicSubsettingService</skos:prefLabel> + <skos:prefLabel xml:lang="el">thematicSubsettingService</skos:prefLabel> + <skos:prefLabel xml:lang="de">thematicSubsettingService</skos:prefLabel> + <skos:prefLabel xml:lang="bg">thematicSubsettingService</skos:prefLabel> + <skos:prefLabel xml:lang="da">thematicSubsettingService</skos:prefLabel> + <skos:prefLabel xml:lang="cs">thematicSubsettingService</skos:prefLabel> + </skos:Concept> + <skos:Concept rdf:about="urn:inspire:service:taxonomy:thematicSpatialCountingService"> + <skos:prefLabel xml:lang="fr">thematicSpatialCountingService</skos:prefLabel> + <skos:prefLabel xml:lang="en">thematicSpatialCountingService</skos:prefLabel> + <skos:prefLabel xml:lang="nl">thematicSpatialCountingService</skos:prefLabel> + <skos:prefLabel xml:lang="sv">thematicSpatialCountingService</skos:prefLabel> + <skos:prefLabel xml:lang="sl">thematicSpatialCountingService</skos:prefLabel> + <skos:prefLabel xml:lang="sk">thematicSpatialCountingService</skos:prefLabel> + <skos:prefLabel xml:lang="ro">thematicSpatialCountingService</skos:prefLabel> + <skos:prefLabel xml:lang="pl">thematicSpatialCountingService</skos:prefLabel> + <skos:prefLabel xml:lang="pt">thematicSpatialCountingService</skos:prefLabel> + <skos:prefLabel xml:lang="mt">thematicSpatialCountingService</skos:prefLabel> + <skos:prefLabel xml:lang="lv">thematicSpatialCountingService</skos:prefLabel> + <skos:prefLabel xml:lang="lt">thematicSpatialCountingService</skos:prefLabel> + <skos:prefLabel xml:lang="it">thematicSpatialCountingService</skos:prefLabel> + <skos:prefLabel xml:lang="hu">thematicSpatialCountingService</skos:prefLabel> + <skos:prefLabel xml:lang="fi">thematicSpatialCountingService</skos:prefLabel> + <skos:prefLabel xml:lang="es">thematicSpatialCountingService</skos:prefLabel> + <skos:prefLabel xml:lang="et">thematicSpatialCountingService</skos:prefLabel> + <skos:prefLabel xml:lang="el">thematicSpatialCountingService</skos:prefLabel> + <skos:prefLabel xml:lang="de">thematicSpatialCountingService</skos:prefLabel> + <skos:prefLabel xml:lang="bg">thematicSpatialCountingService</skos:prefLabel> + <skos:prefLabel xml:lang="da">thematicSpatialCountingService</skos:prefLabel> + <skos:prefLabel xml:lang="cs">thematicSpatialCountingService</skos:prefLabel> + </skos:Concept> + <skos:Concept rdf:about="urn:inspire:service:taxonomy:thematicChangeDetectionService"> + <skos:prefLabel xml:lang="fr">thematicChangeDetectionService</skos:prefLabel> + <skos:prefLabel xml:lang="en">thematicChangeDetectionService</skos:prefLabel> + <skos:prefLabel xml:lang="nl">thematicChangeDetectionService</skos:prefLabel> + <skos:prefLabel xml:lang="sv">thematicChangeDetectionService</skos:prefLabel> + <skos:prefLabel xml:lang="sl">thematicChangeDetectionService</skos:prefLabel> + <skos:prefLabel xml:lang="sk">thematicChangeDetectionService</skos:prefLabel> + <skos:prefLabel xml:lang="ro">thematicChangeDetectionService</skos:prefLabel> + <skos:prefLabel xml:lang="pl">thematicChangeDetectionService</skos:prefLabel> + <skos:prefLabel xml:lang="pt">thematicChangeDetectionService</skos:prefLabel> + <skos:prefLabel xml:lang="mt">thematicChangeDetectionService</skos:prefLabel> + <skos:prefLabel xml:lang="lv">thematicChangeDetectionService</skos:prefLabel> + <skos:prefLabel xml:lang="lt">thematicChangeDetectionService</skos:prefLabel> + <skos:prefLabel xml:lang="it">thematicChangeDetectionService</skos:prefLabel> + <skos:prefLabel xml:lang="hu">thematicChangeDetectionService</skos:prefLabel> + <skos:prefLabel xml:lang="fi">thematicChangeDetectionService</skos:prefLabel> + <skos:prefLabel xml:lang="es">thematicChangeDetectionService</skos:prefLabel> + <skos:prefLabel xml:lang="et">thematicChangeDetectionService</skos:prefLabel> + <skos:prefLabel xml:lang="el">thematicChangeDetectionService</skos:prefLabel> + <skos:prefLabel xml:lang="de">thematicChangeDetectionService</skos:prefLabel> + <skos:prefLabel xml:lang="bg">thematicChangeDetectionService</skos:prefLabel> + <skos:prefLabel xml:lang="da">thematicChangeDetectionService</skos:prefLabel> + <skos:prefLabel xml:lang="cs">thematicChangeDetectionService</skos:prefLabel> + </skos:Concept> + <skos:Concept rdf:about="urn:inspire:service:taxonomy:thematicGeographicInformationExtractionService"> + <skos:prefLabel xml:lang="fr">thematicGeographicInformationExtractionService</skos:prefLabel> + <skos:prefLabel xml:lang="en">thematicGeographicInformationExtractionService</skos:prefLabel> + <skos:prefLabel xml:lang="nl">thematicGeographicInformationExtractionService</skos:prefLabel> + <skos:prefLabel xml:lang="sv">thematicGeographicInformationExtractionService</skos:prefLabel> + <skos:prefLabel xml:lang="sl">thematicGeographicInformationExtractionService</skos:prefLabel> + <skos:prefLabel xml:lang="sk">thematicGeographicInformationExtractionService</skos:prefLabel> + <skos:prefLabel xml:lang="ro">thematicGeographicInformationExtractionService</skos:prefLabel> + <skos:prefLabel xml:lang="pl">thematicGeographicInformationExtractionService</skos:prefLabel> + <skos:prefLabel xml:lang="pt">thematicGeographicInformationExtractionService</skos:prefLabel> + <skos:prefLabel xml:lang="mt">thematicGeographicInformationExtractionService</skos:prefLabel> + <skos:prefLabel xml:lang="lv">thematicGeographicInformationExtractionService</skos:prefLabel> + <skos:prefLabel xml:lang="lt">thematicGeographicInformationExtractionService</skos:prefLabel> + <skos:prefLabel xml:lang="it">thematicGeographicInformationExtractionService</skos:prefLabel> + <skos:prefLabel xml:lang="hu">thematicGeographicInformationExtractionService</skos:prefLabel> + <skos:prefLabel xml:lang="fi">thematicGeographicInformationExtractionService</skos:prefLabel> + <skos:prefLabel xml:lang="es">thematicGeographicInformationExtractionService</skos:prefLabel> + <skos:prefLabel xml:lang="et">thematicGeographicInformationExtractionService</skos:prefLabel> + <skos:prefLabel xml:lang="el">thematicGeographicInformationExtractionService</skos:prefLabel> + <skos:prefLabel xml:lang="de">thematicGeographicInformationExtractionService</skos:prefLabel> + <skos:prefLabel xml:lang="bg">thematicGeographicInformationExtractionService</skos:prefLabel> + <skos:prefLabel xml:lang="da">thematicGeographicInformationExtractionService</skos:prefLabel> + <skos:prefLabel xml:lang="cs">thematicGeographicInformationExtractionService</skos:prefLabel> + </skos:Concept> + <skos:Concept rdf:about="urn:inspire:service:taxonomy:thematicImageProcessingService"> + <skos:prefLabel xml:lang="fr">thematicImageProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="en">thematicImageProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="nl">thematicImageProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="sv">thematicImageProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="sl">thematicImageProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="sk">thematicImageProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="ro">thematicImageProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="pl">thematicImageProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="pt">thematicImageProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="mt">thematicImageProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="lv">thematicImageProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="lt">thematicImageProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="it">thematicImageProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="hu">thematicImageProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="fi">thematicImageProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="es">thematicImageProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="et">thematicImageProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="el">thematicImageProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="de">thematicImageProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="bg">thematicImageProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="da">thematicImageProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="cs">thematicImageProcessingService</skos:prefLabel> + </skos:Concept> + <skos:Concept rdf:about="urn:inspire:service:taxonomy:thematicReducedResolutionGenerationService"> + <skos:prefLabel xml:lang="fr">thematicReducedResolutionGenerationService</skos:prefLabel> + <skos:prefLabel xml:lang="en">thematicReducedResolutionGenerationService</skos:prefLabel> + <skos:prefLabel xml:lang="nl">thematicReducedResolutionGenerationService</skos:prefLabel> + <skos:prefLabel xml:lang="sv">thematicReducedResolutionGenerationService</skos:prefLabel> + <skos:prefLabel xml:lang="sl">thematicReducedResolutionGenerationService</skos:prefLabel> + <skos:prefLabel xml:lang="sk">thematicReducedResolutionGenerationService</skos:prefLabel> + <skos:prefLabel xml:lang="ro">thematicReducedResolutionGenerationService</skos:prefLabel> + <skos:prefLabel xml:lang="pl">thematicReducedResolutionGenerationService</skos:prefLabel> + <skos:prefLabel xml:lang="pt">thematicReducedResolutionGenerationService</skos:prefLabel> + <skos:prefLabel xml:lang="mt">thematicReducedResolutionGenerationService</skos:prefLabel> + <skos:prefLabel xml:lang="lv">thematicReducedResolutionGenerationService</skos:prefLabel> + <skos:prefLabel xml:lang="lt">thematicReducedResolutionGenerationService</skos:prefLabel> + <skos:prefLabel xml:lang="it">thematicReducedResolutionGenerationService</skos:prefLabel> + <skos:prefLabel xml:lang="hu">thematicReducedResolutionGenerationService</skos:prefLabel> + <skos:prefLabel xml:lang="fi">thematicReducedResolutionGenerationService</skos:prefLabel> + <skos:prefLabel xml:lang="es">thematicReducedResolutionGenerationService</skos:prefLabel> + <skos:prefLabel xml:lang="et">thematicReducedResolutionGenerationService</skos:prefLabel> + <skos:prefLabel xml:lang="el">thematicReducedResolutionGenerationService</skos:prefLabel> + <skos:prefLabel xml:lang="de">thematicReducedResolutionGenerationService</skos:prefLabel> + <skos:prefLabel xml:lang="bg">thematicReducedResolutionGenerationService</skos:prefLabel> + <skos:prefLabel xml:lang="da">thematicReducedResolutionGenerationService</skos:prefLabel> + <skos:prefLabel xml:lang="cs">thematicReducedResolutionGenerationService</skos:prefLabel> + </skos:Concept> + <skos:Concept rdf:about="urn:inspire:service:taxonomy:thematicImageManipulationService"> + <skos:prefLabel xml:lang="fr">thematicImageManipulationService</skos:prefLabel> + <skos:prefLabel xml:lang="en">thematicImageManipulationService</skos:prefLabel> + <skos:prefLabel xml:lang="nl">thematicImageManipulationService</skos:prefLabel> + <skos:prefLabel xml:lang="sv">thematicImageManipulationService</skos:prefLabel> + <skos:prefLabel xml:lang="sl">thematicImageManipulationService</skos:prefLabel> + <skos:prefLabel xml:lang="sk">thematicImageManipulationService</skos:prefLabel> + <skos:prefLabel xml:lang="ro">thematicImageManipulationService</skos:prefLabel> + <skos:prefLabel xml:lang="pl">thematicImageManipulationService</skos:prefLabel> + <skos:prefLabel xml:lang="pt">thematicImageManipulationService</skos:prefLabel> + <skos:prefLabel xml:lang="mt">thematicImageManipulationService</skos:prefLabel> + <skos:prefLabel xml:lang="lv">thematicImageManipulationService</skos:prefLabel> + <skos:prefLabel xml:lang="lt">thematicImageManipulationService</skos:prefLabel> + <skos:prefLabel xml:lang="it">thematicImageManipulationService</skos:prefLabel> + <skos:prefLabel xml:lang="hu">thematicImageManipulationService</skos:prefLabel> + <skos:prefLabel xml:lang="fi">thematicImageManipulationService</skos:prefLabel> + <skos:prefLabel xml:lang="es">thematicImageManipulationService</skos:prefLabel> + <skos:prefLabel xml:lang="et">thematicImageManipulationService</skos:prefLabel> + <skos:prefLabel xml:lang="el">thematicImageManipulationService</skos:prefLabel> + <skos:prefLabel xml:lang="de">thematicImageManipulationService</skos:prefLabel> + <skos:prefLabel xml:lang="bg">thematicImageManipulationService</skos:prefLabel> + <skos:prefLabel xml:lang="da">thematicImageManipulationService</skos:prefLabel> + <skos:prefLabel xml:lang="cs">thematicImageManipulationService</skos:prefLabel> + </skos:Concept> + <skos:Concept rdf:about="urn:inspire:service:taxonomy:thematicImageUnderstandingService"> + <skos:prefLabel xml:lang="fr">thematicImageUnderstandingService</skos:prefLabel> + <skos:prefLabel xml:lang="en">thematicImageUnderstandingService</skos:prefLabel> + <skos:prefLabel xml:lang="nl">thematicImageUnderstandingService</skos:prefLabel> + <skos:prefLabel xml:lang="sv">thematicImageUnderstandingService</skos:prefLabel> + <skos:prefLabel xml:lang="sl">thematicImageUnderstandingService</skos:prefLabel> + <skos:prefLabel xml:lang="sk">thematicImageUnderstandingService</skos:prefLabel> + <skos:prefLabel xml:lang="ro">thematicImageUnderstandingService</skos:prefLabel> + <skos:prefLabel xml:lang="pl">thematicImageUnderstandingService</skos:prefLabel> + <skos:prefLabel xml:lang="pt">thematicImageUnderstandingService</skos:prefLabel> + <skos:prefLabel xml:lang="mt">thematicImageUnderstandingService</skos:prefLabel> + <skos:prefLabel xml:lang="lv">thematicImageUnderstandingService</skos:prefLabel> + <skos:prefLabel xml:lang="lt">thematicImageUnderstandingService</skos:prefLabel> + <skos:prefLabel xml:lang="it">thematicImageUnderstandingService</skos:prefLabel> + <skos:prefLabel xml:lang="hu">thematicImageUnderstandingService</skos:prefLabel> + <skos:prefLabel xml:lang="fi">thematicImageUnderstandingService</skos:prefLabel> + <skos:prefLabel xml:lang="es">thematicImageUnderstandingService</skos:prefLabel> + <skos:prefLabel xml:lang="et">thematicImageUnderstandingService</skos:prefLabel> + <skos:prefLabel xml:lang="el">thematicImageUnderstandingService</skos:prefLabel> + <skos:prefLabel xml:lang="de">thematicImageUnderstandingService</skos:prefLabel> + <skos:prefLabel xml:lang="bg">thematicImageUnderstandingService</skos:prefLabel> + <skos:prefLabel xml:lang="da">thematicImageUnderstandingService</skos:prefLabel> + <skos:prefLabel xml:lang="cs">thematicImageUnderstandingService</skos:prefLabel> + </skos:Concept> + <skos:Concept rdf:about="urn:inspire:service:taxonomy:thematicImageSynthesisService"> + <skos:prefLabel xml:lang="fr">thematicImageSynthesisService</skos:prefLabel> + <skos:prefLabel xml:lang="en">thematicImageSynthesisService</skos:prefLabel> + <skos:prefLabel xml:lang="nl">thematicImageSynthesisService</skos:prefLabel> + <skos:prefLabel xml:lang="sv">thematicImageSynthesisService</skos:prefLabel> + <skos:prefLabel xml:lang="sl">thematicImageSynthesisService</skos:prefLabel> + <skos:prefLabel xml:lang="sk">thematicImageSynthesisService</skos:prefLabel> + <skos:prefLabel xml:lang="ro">thematicImageSynthesisService</skos:prefLabel> + <skos:prefLabel xml:lang="pl">thematicImageSynthesisService</skos:prefLabel> + <skos:prefLabel xml:lang="pt">thematicImageSynthesisService</skos:prefLabel> + <skos:prefLabel xml:lang="mt">thematicImageSynthesisService</skos:prefLabel> + <skos:prefLabel xml:lang="lv">thematicImageSynthesisService</skos:prefLabel> + <skos:prefLabel xml:lang="lt">thematicImageSynthesisService</skos:prefLabel> + <skos:prefLabel xml:lang="it">thematicImageSynthesisService</skos:prefLabel> + <skos:prefLabel xml:lang="hu">thematicImageSynthesisService</skos:prefLabel> + <skos:prefLabel xml:lang="fi">thematicImageSynthesisService</skos:prefLabel> + <skos:prefLabel xml:lang="es">thematicImageSynthesisService</skos:prefLabel> + <skos:prefLabel xml:lang="et">thematicImageSynthesisService</skos:prefLabel> + <skos:prefLabel xml:lang="el">thematicImageSynthesisService</skos:prefLabel> + <skos:prefLabel xml:lang="de">thematicImageSynthesisService</skos:prefLabel> + <skos:prefLabel xml:lang="bg">thematicImageSynthesisService</skos:prefLabel> + <skos:prefLabel xml:lang="da">thematicImageSynthesisService</skos:prefLabel> + <skos:prefLabel xml:lang="cs">thematicImageSynthesisService</skos:prefLabel> + </skos:Concept> + <skos:Concept rdf:about="urn:inspire:service:taxonomy:thematicMultibandImageManipulationService"> + <skos:prefLabel xml:lang="fr">thematicMultibandImageManipulationService</skos:prefLabel> + <skos:prefLabel xml:lang="en">thematicMultibandImageManipulationService</skos:prefLabel> + <skos:prefLabel xml:lang="nl">thematicMultibandImageManipulationService</skos:prefLabel> + <skos:prefLabel xml:lang="sv">thematicMultibandImageManipulationService</skos:prefLabel> + <skos:prefLabel xml:lang="sl">thematicMultibandImageManipulationService</skos:prefLabel> + <skos:prefLabel xml:lang="sk">thematicMultibandImageManipulationService</skos:prefLabel> + <skos:prefLabel xml:lang="ro">thematicMultibandImageManipulationService</skos:prefLabel> + <skos:prefLabel xml:lang="pl">thematicMultibandImageManipulationService</skos:prefLabel> + <skos:prefLabel xml:lang="pt">thematicMultibandImageManipulationService</skos:prefLabel> + <skos:prefLabel xml:lang="mt">thematicMultibandImageManipulationService</skos:prefLabel> + <skos:prefLabel xml:lang="lv">thematicMultibandImageManipulationService</skos:prefLabel> + <skos:prefLabel xml:lang="lt">thematicMultibandImageManipulationService</skos:prefLabel> + <skos:prefLabel xml:lang="it">thematicMultibandImageManipulationService</skos:prefLabel> + <skos:prefLabel xml:lang="hu">thematicMultibandImageManipulationService</skos:prefLabel> + <skos:prefLabel xml:lang="fi">thematicMultibandImageManipulationService</skos:prefLabel> + <skos:prefLabel xml:lang="es">thematicMultibandImageManipulationService</skos:prefLabel> + <skos:prefLabel xml:lang="et">thematicMultibandImageManipulationService</skos:prefLabel> + <skos:prefLabel xml:lang="el">thematicMultibandImageManipulationService</skos:prefLabel> + <skos:prefLabel xml:lang="de">thematicMultibandImageManipulationService</skos:prefLabel> + <skos:prefLabel xml:lang="bg">thematicMultibandImageManipulationService</skos:prefLabel> + <skos:prefLabel xml:lang="da">thematicMultibandImageManipulationService</skos:prefLabel> + <skos:prefLabel xml:lang="cs">thematicMultibandImageManipulationService</skos:prefLabel> + </skos:Concept> + <skos:Concept rdf:about="urn:inspire:service:taxonomy:thematicObjectDetectionService"> + <skos:prefLabel xml:lang="fr">thematicObjectDetectionService</skos:prefLabel> + <skos:prefLabel xml:lang="en">thematicObjectDetectionService</skos:prefLabel> + <skos:prefLabel xml:lang="nl">thematicObjectDetectionService</skos:prefLabel> + <skos:prefLabel xml:lang="sv">thematicObjectDetectionService</skos:prefLabel> + <skos:prefLabel xml:lang="sl">thematicObjectDetectionService</skos:prefLabel> + <skos:prefLabel xml:lang="sk">thematicObjectDetectionService</skos:prefLabel> + <skos:prefLabel xml:lang="ro">thematicObjectDetectionService</skos:prefLabel> + <skos:prefLabel xml:lang="pl">thematicObjectDetectionService</skos:prefLabel> + <skos:prefLabel xml:lang="pt">thematicObjectDetectionService</skos:prefLabel> + <skos:prefLabel xml:lang="mt">thematicObjectDetectionService</skos:prefLabel> + <skos:prefLabel xml:lang="lv">thematicObjectDetectionService</skos:prefLabel> + <skos:prefLabel xml:lang="lt">thematicObjectDetectionService</skos:prefLabel> + <skos:prefLabel xml:lang="it">thematicObjectDetectionService</skos:prefLabel> + <skos:prefLabel xml:lang="hu">thematicObjectDetectionService</skos:prefLabel> + <skos:prefLabel xml:lang="fi">thematicObjectDetectionService</skos:prefLabel> + <skos:prefLabel xml:lang="es">thematicObjectDetectionService</skos:prefLabel> + <skos:prefLabel xml:lang="et">thematicObjectDetectionService</skos:prefLabel> + <skos:prefLabel xml:lang="el">thematicObjectDetectionService</skos:prefLabel> + <skos:prefLabel xml:lang="de">thematicObjectDetectionService</skos:prefLabel> + <skos:prefLabel xml:lang="bg">thematicObjectDetectionService</skos:prefLabel> + <skos:prefLabel xml:lang="da">thematicObjectDetectionService</skos:prefLabel> + <skos:prefLabel xml:lang="cs">thematicObjectDetectionService</skos:prefLabel> + </skos:Concept> + <skos:Concept rdf:about="urn:inspire:service:taxonomy:thematicGeoparsingService"> + <skos:prefLabel xml:lang="fr">thematicGeoparsingService</skos:prefLabel> + <skos:prefLabel xml:lang="en">thematicGeoparsingService</skos:prefLabel> + <skos:prefLabel xml:lang="nl">thematicGeoparsingService</skos:prefLabel> + <skos:prefLabel xml:lang="sv">thematicGeoparsingService</skos:prefLabel> + <skos:prefLabel xml:lang="sl">thematicGeoparsingService</skos:prefLabel> + <skos:prefLabel xml:lang="sk">thematicGeoparsingService</skos:prefLabel> + <skos:prefLabel xml:lang="ro">thematicGeoparsingService</skos:prefLabel> + <skos:prefLabel xml:lang="pl">thematicGeoparsingService</skos:prefLabel> + <skos:prefLabel xml:lang="pt">thematicGeoparsingService</skos:prefLabel> + <skos:prefLabel xml:lang="mt">thematicGeoparsingService</skos:prefLabel> + <skos:prefLabel xml:lang="lv">thematicGeoparsingService</skos:prefLabel> + <skos:prefLabel xml:lang="lt">thematicGeoparsingService</skos:prefLabel> + <skos:prefLabel xml:lang="it">thematicGeoparsingService</skos:prefLabel> + <skos:prefLabel xml:lang="hu">thematicGeoparsingService</skos:prefLabel> + <skos:prefLabel xml:lang="fi">thematicGeoparsingService</skos:prefLabel> + <skos:prefLabel xml:lang="es">thematicGeoparsingService</skos:prefLabel> + <skos:prefLabel xml:lang="et">thematicGeoparsingService</skos:prefLabel> + <skos:prefLabel xml:lang="el">thematicGeoparsingService</skos:prefLabel> + <skos:prefLabel xml:lang="de">thematicGeoparsingService</skos:prefLabel> + <skos:prefLabel xml:lang="bg">thematicGeoparsingService</skos:prefLabel> + <skos:prefLabel xml:lang="da">thematicGeoparsingService</skos:prefLabel> + <skos:prefLabel xml:lang="cs">thematicGeoparsingService</skos:prefLabel> + </skos:Concept> + <skos:Concept rdf:about="urn:inspire:service:taxonomy:thematicGeocodingService"> + <skos:prefLabel xml:lang="fr">thematicGeocodingService</skos:prefLabel> + <skos:prefLabel xml:lang="en">thematicGeocodingService</skos:prefLabel> + <skos:prefLabel xml:lang="nl">thematicGeocodingService</skos:prefLabel> + <skos:prefLabel xml:lang="sv">thematicGeocodingService</skos:prefLabel> + <skos:prefLabel xml:lang="sl">thematicGeocodingService</skos:prefLabel> + <skos:prefLabel xml:lang="sk">thematicGeocodingService</skos:prefLabel> + <skos:prefLabel xml:lang="ro">thematicGeocodingService</skos:prefLabel> + <skos:prefLabel xml:lang="pl">thematicGeocodingService</skos:prefLabel> + <skos:prefLabel xml:lang="pt">thematicGeocodingService</skos:prefLabel> + <skos:prefLabel xml:lang="mt">thematicGeocodingService</skos:prefLabel> + <skos:prefLabel xml:lang="lv">thematicGeocodingService</skos:prefLabel> + <skos:prefLabel xml:lang="lt">thematicGeocodingService</skos:prefLabel> + <skos:prefLabel xml:lang="it">thematicGeocodingService</skos:prefLabel> + <skos:prefLabel xml:lang="hu">thematicGeocodingService</skos:prefLabel> + <skos:prefLabel xml:lang="fi">thematicGeocodingService</skos:prefLabel> + <skos:prefLabel xml:lang="es">thematicGeocodingService</skos:prefLabel> + <skos:prefLabel xml:lang="et">thematicGeocodingService</skos:prefLabel> + <skos:prefLabel xml:lang="el">thematicGeocodingService</skos:prefLabel> + <skos:prefLabel xml:lang="de">thematicGeocodingService</skos:prefLabel> + <skos:prefLabel xml:lang="bg">thematicGeocodingService</skos:prefLabel> + <skos:prefLabel xml:lang="da">thematicGeocodingService</skos:prefLabel> + <skos:prefLabel xml:lang="cs">thematicGeocodingService</skos:prefLabel> + </skos:Concept> + <skos:Concept rdf:about="urn:inspire:service:taxonomy:temporalProcessingService"> + <skos:prefLabel xml:lang="fr">temporalProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="en">temporalProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="nl">temporalProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="sv">temporalProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="sl">temporalProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="sk">temporalProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="ro">temporalProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="pl">temporalProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="pt">temporalProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="mt">temporalProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="lv">temporalProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="lt">temporalProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="it">temporalProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="hu">temporalProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="fi">temporalProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="es">temporalProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="et">temporalProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="el">temporalProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="de">temporalProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="bg">temporalProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="da">temporalProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="cs">temporalProcessingService</skos:prefLabel> + </skos:Concept> + <skos:Concept rdf:about="urn:inspire:service:taxonomy:temporalReferenceSystemTransformationService"> + <skos:prefLabel xml:lang="fr">temporalReferenceSystemTransformationService</skos:prefLabel> + <skos:prefLabel xml:lang="en">temporalReferenceSystemTransformationService</skos:prefLabel> + <skos:prefLabel xml:lang="nl">temporalReferenceSystemTransformationService</skos:prefLabel> + <skos:prefLabel xml:lang="sv">temporalReferenceSystemTransformationService</skos:prefLabel> + <skos:prefLabel xml:lang="sl">temporalReferenceSystemTransformationService</skos:prefLabel> + <skos:prefLabel xml:lang="sk">temporalReferenceSystemTransformationService</skos:prefLabel> + <skos:prefLabel xml:lang="ro">temporalReferenceSystemTransformationService</skos:prefLabel> + <skos:prefLabel xml:lang="pl">temporalReferenceSystemTransformationService</skos:prefLabel> + <skos:prefLabel xml:lang="pt">temporalReferenceSystemTransformationService</skos:prefLabel> + <skos:prefLabel xml:lang="mt">temporalReferenceSystemTransformationService</skos:prefLabel> + <skos:prefLabel xml:lang="lv">temporalReferenceSystemTransformationService</skos:prefLabel> + <skos:prefLabel xml:lang="lt">temporalReferenceSystemTransformationService</skos:prefLabel> + <skos:prefLabel xml:lang="it">temporalReferenceSystemTransformationService</skos:prefLabel> + <skos:prefLabel xml:lang="hu">temporalReferenceSystemTransformationService</skos:prefLabel> + <skos:prefLabel xml:lang="fi">temporalReferenceSystemTransformationService</skos:prefLabel> + <skos:prefLabel xml:lang="es">temporalReferenceSystemTransformationService</skos:prefLabel> + <skos:prefLabel xml:lang="et">temporalReferenceSystemTransformationService</skos:prefLabel> + <skos:prefLabel xml:lang="el">temporalReferenceSystemTransformationService</skos:prefLabel> + <skos:prefLabel xml:lang="de">temporalReferenceSystemTransformationService</skos:prefLabel> + <skos:prefLabel xml:lang="bg">temporalReferenceSystemTransformationService</skos:prefLabel> + <skos:prefLabel xml:lang="da">temporalReferenceSystemTransformationService</skos:prefLabel> + <skos:prefLabel xml:lang="cs">temporalReferenceSystemTransformationService</skos:prefLabel> + </skos:Concept> + <skos:Concept rdf:about="urn:inspire:service:taxonomy:temporalSubsettingService"> + <skos:prefLabel xml:lang="fr">temporalSubsettingService</skos:prefLabel> + <skos:prefLabel xml:lang="en">temporalSubsettingService</skos:prefLabel> + <skos:prefLabel xml:lang="nl">temporalSubsettingService</skos:prefLabel> + <skos:prefLabel xml:lang="sv">temporalSubsettingService</skos:prefLabel> + <skos:prefLabel xml:lang="sl">temporalSubsettingService</skos:prefLabel> + <skos:prefLabel xml:lang="sk">temporalSubsettingService</skos:prefLabel> + <skos:prefLabel xml:lang="ro">temporalSubsettingService</skos:prefLabel> + <skos:prefLabel xml:lang="pl">temporalSubsettingService</skos:prefLabel> + <skos:prefLabel xml:lang="pt">temporalSubsettingService</skos:prefLabel> + <skos:prefLabel xml:lang="mt">temporalSubsettingService</skos:prefLabel> + <skos:prefLabel xml:lang="lv">temporalSubsettingService</skos:prefLabel> + <skos:prefLabel xml:lang="lt">temporalSubsettingService</skos:prefLabel> + <skos:prefLabel xml:lang="it">temporalSubsettingService</skos:prefLabel> + <skos:prefLabel xml:lang="hu">temporalSubsettingService</skos:prefLabel> + <skos:prefLabel xml:lang="fi">temporalSubsettingService</skos:prefLabel> + <skos:prefLabel xml:lang="es">temporalSubsettingService</skos:prefLabel> + <skos:prefLabel xml:lang="et">temporalSubsettingService</skos:prefLabel> + <skos:prefLabel xml:lang="el">temporalSubsettingService</skos:prefLabel> + <skos:prefLabel xml:lang="de">temporalSubsettingService</skos:prefLabel> + <skos:prefLabel xml:lang="bg">temporalSubsettingService</skos:prefLabel> + <skos:prefLabel xml:lang="da">temporalSubsettingService</skos:prefLabel> + <skos:prefLabel xml:lang="cs">temporalSubsettingService</skos:prefLabel> + </skos:Concept> + <skos:Concept rdf:about="urn:inspire:service:taxonomy:temporalSamplingService"> + <skos:prefLabel xml:lang="fr">temporalSamplingService</skos:prefLabel> + <skos:prefLabel xml:lang="en">temporalSamplingService</skos:prefLabel> + <skos:prefLabel xml:lang="nl">temporalSamplingService</skos:prefLabel> + <skos:prefLabel xml:lang="sv">temporalSamplingService</skos:prefLabel> + <skos:prefLabel xml:lang="sl">temporalSamplingService</skos:prefLabel> + <skos:prefLabel xml:lang="sk">temporalSamplingService</skos:prefLabel> + <skos:prefLabel xml:lang="ro">temporalSamplingService</skos:prefLabel> + <skos:prefLabel xml:lang="pl">temporalSamplingService</skos:prefLabel> + <skos:prefLabel xml:lang="pt">temporalSamplingService</skos:prefLabel> + <skos:prefLabel xml:lang="mt">temporalSamplingService</skos:prefLabel> + <skos:prefLabel xml:lang="lv">temporalSamplingService</skos:prefLabel> + <skos:prefLabel xml:lang="lt">temporalSamplingService</skos:prefLabel> + <skos:prefLabel xml:lang="it">temporalSamplingService</skos:prefLabel> + <skos:prefLabel xml:lang="hu">temporalSamplingService</skos:prefLabel> + <skos:prefLabel xml:lang="fi">temporalSamplingService</skos:prefLabel> + <skos:prefLabel xml:lang="es">temporalSamplingService</skos:prefLabel> + <skos:prefLabel xml:lang="et">temporalSamplingService</skos:prefLabel> + <skos:prefLabel xml:lang="el">temporalSamplingService</skos:prefLabel> + <skos:prefLabel xml:lang="de">temporalSamplingService</skos:prefLabel> + <skos:prefLabel xml:lang="bg">temporalSamplingService</skos:prefLabel> + <skos:prefLabel xml:lang="da">temporalSamplingService</skos:prefLabel> + <skos:prefLabel xml:lang="cs">temporalSamplingService</skos:prefLabel> + </skos:Concept> + <skos:Concept rdf:about="urn:inspire:service:taxonomy:temporalProximityAnalysisService"> + <skos:prefLabel xml:lang="fr">temporalProximityAnalysisService</skos:prefLabel> + <skos:prefLabel xml:lang="en">temporalProximityAnalysisService</skos:prefLabel> + <skos:prefLabel xml:lang="nl">temporalProximityAnalysisService</skos:prefLabel> + <skos:prefLabel xml:lang="sv">temporalProximityAnalysisService</skos:prefLabel> + <skos:prefLabel xml:lang="sl">temporalProximityAnalysisService</skos:prefLabel> + <skos:prefLabel xml:lang="sk">temporalProximityAnalysisService</skos:prefLabel> + <skos:prefLabel xml:lang="ro">temporalProximityAnalysisService</skos:prefLabel> + <skos:prefLabel xml:lang="pl">temporalProximityAnalysisService</skos:prefLabel> + <skos:prefLabel xml:lang="pt">temporalProximityAnalysisService</skos:prefLabel> + <skos:prefLabel xml:lang="mt">temporalProximityAnalysisService</skos:prefLabel> + <skos:prefLabel xml:lang="lv">temporalProximityAnalysisService</skos:prefLabel> + <skos:prefLabel xml:lang="lt">temporalProximityAnalysisService</skos:prefLabel> + <skos:prefLabel xml:lang="it">temporalProximityAnalysisService</skos:prefLabel> + <skos:prefLabel xml:lang="hu">temporalProximityAnalysisService</skos:prefLabel> + <skos:prefLabel xml:lang="fi">temporalProximityAnalysisService</skos:prefLabel> + <skos:prefLabel xml:lang="es">temporalProximityAnalysisService</skos:prefLabel> + <skos:prefLabel xml:lang="et">temporalProximityAnalysisService</skos:prefLabel> + <skos:prefLabel xml:lang="el">temporalProximityAnalysisService</skos:prefLabel> + <skos:prefLabel xml:lang="de">temporalProximityAnalysisService</skos:prefLabel> + <skos:prefLabel xml:lang="bg">temporalProximityAnalysisService</skos:prefLabel> + <skos:prefLabel xml:lang="da">temporalProximityAnalysisService</skos:prefLabel> + <skos:prefLabel xml:lang="cs">temporalProximityAnalysisService</skos:prefLabel> + </skos:Concept> + <skos:Concept rdf:about="urn:inspire:service:taxonomy:metadataProcessingService"> + <skos:prefLabel xml:lang="fr">metadataProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="en">metadataProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="nl">metadataProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="sv">metadataProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="sl">metadataProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="sk">metadataProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="ro">metadataProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="pl">metadataProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="pt">metadataProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="mt">metadataProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="lv">metadataProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="lt">metadataProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="it">metadataProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="hu">metadataProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="fi">metadataProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="es">metadataProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="et">metadataProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="el">metadataProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="de">metadataProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="bg">metadataProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="da">metadataProcessingService</skos:prefLabel> + <skos:prefLabel xml:lang="cs">metadataProcessingService</skos:prefLabel> + </skos:Concept> + <skos:Concept rdf:about="urn:inspire:service:taxonomy:metadataStatisticalCalculationService"> + <skos:prefLabel xml:lang="fr">metadataStatisticalCalculationService</skos:prefLabel> + <skos:prefLabel xml:lang="en">metadataStatisticalCalculationService</skos:prefLabel> + <skos:prefLabel xml:lang="nl">metadataStatisticalCalculationService</skos:prefLabel> + <skos:prefLabel xml:lang="sv">metadataStatisticalCalculationService</skos:prefLabel> + <skos:prefLabel xml:lang="sl">metadataStatisticalCalculationService</skos:prefLabel> + <skos:prefLabel xml:lang="sk">metadataStatisticalCalculationService</skos:prefLabel> + <skos:prefLabel xml:lang="ro">metadataStatisticalCalculationService</skos:prefLabel> + <skos:prefLabel xml:lang="pl">metadataStatisticalCalculationService</skos:prefLabel> + <skos:prefLabel xml:lang="pt">metadataStatisticalCalculationService</skos:prefLabel> + <skos:prefLabel xml:lang="mt">metadataStatisticalCalculationService</skos:prefLabel> + <skos:prefLabel xml:lang="lv">metadataStatisticalCalculationService</skos:prefLabel> + <skos:prefLabel xml:lang="lt">metadataStatisticalCalculationService</skos:prefLabel> + <skos:prefLabel xml:lang="it">metadataStatisticalCalculationService</skos:prefLabel> + <skos:prefLabel xml:lang="hu">metadataStatisticalCalculationService</skos:prefLabel> + <skos:prefLabel xml:lang="fi">metadataStatisticalCalculationService</skos:prefLabel> + <skos:prefLabel xml:lang="es">metadataStatisticalCalculationService</skos:prefLabel> + <skos:prefLabel xml:lang="et">metadataStatisticalCalculationService</skos:prefLabel> + <skos:prefLabel xml:lang="el">metadataStatisticalCalculationService</skos:prefLabel> + <skos:prefLabel xml:lang="de">metadataStatisticalCalculationService</skos:prefLabel> + <skos:prefLabel xml:lang="bg">metadataStatisticalCalculationService</skos:prefLabel> + <skos:prefLabel xml:lang="da">metadataStatisticalCalculationService</skos:prefLabel> + <skos:prefLabel xml:lang="cs">metadataStatisticalCalculationService</skos:prefLabel> + </skos:Concept> + <skos:Concept rdf:about="urn:inspire:service:taxonomy:metadataGeographicAnnotationService"> + <skos:prefLabel xml:lang="fr">metadataGeographicAnnotationService</skos:prefLabel> + <skos:prefLabel xml:lang="en">metadataGeographicAnnotationService</skos:prefLabel> + <skos:prefLabel xml:lang="nl">metadataGeographicAnnotationService</skos:prefLabel> + <skos:prefLabel xml:lang="sv">metadataGeographicAnnotationService</skos:prefLabel> + <skos:prefLabel xml:lang="sl">metadataGeographicAnnotationService</skos:prefLabel> + <skos:prefLabel xml:lang="sk">metadataGeographicAnnotationService</skos:prefLabel> + <skos:prefLabel xml:lang="ro">metadataGeographicAnnotationService</skos:prefLabel> + <skos:prefLabel xml:lang="pl">metadataGeographicAnnotationService</skos:prefLabel> + <skos:prefLabel xml:lang="pt">metadataGeographicAnnotationService</skos:prefLabel> + <skos:prefLabel xml:lang="mt">metadataGeographicAnnotationService</skos:prefLabel> + <skos:prefLabel xml:lang="lv">metadataGeographicAnnotationService</skos:prefLabel> + <skos:prefLabel xml:lang="lt">metadataGeographicAnnotationService</skos:prefLabel> + <skos:prefLabel xml:lang="it">metadataGeographicAnnotationService</skos:prefLabel> + <skos:prefLabel xml:lang="hu">metadataGeographicAnnotationService</skos:prefLabel> + <skos:prefLabel xml:lang="fi">metadataGeographicAnnotationService</skos:prefLabel> + <skos:prefLabel xml:lang="es">metadataGeographicAnnotationService</skos:prefLabel> + <skos:prefLabel xml:lang="et">metadataGeographicAnnotationService</skos:prefLabel> + <skos:prefLabel xml:lang="el">metadataGeographicAnnotationService</skos:prefLabel> + <skos:prefLabel xml:lang="de">metadataGeographicAnnotationService</skos:prefLabel> + <skos:prefLabel xml:lang="bg">metadataGeographicAnnotationService</skos:prefLabel> + <skos:prefLabel xml:lang="da">metadataGeographicAnnotationService</skos:prefLabel> + <skos:prefLabel xml:lang="cs">metadataGeographicAnnotationService</skos:prefLabel> + </skos:Concept> + <skos:Concept rdf:about="urn:inspire:service:taxonomy:comService"> + <skos:prefLabel xml:lang="fr">comService</skos:prefLabel> + <skos:prefLabel xml:lang="en">comService</skos:prefLabel> + <skos:prefLabel xml:lang="nl">comService</skos:prefLabel> + <skos:prefLabel xml:lang="sv">comService</skos:prefLabel> + <skos:prefLabel xml:lang="sl">comService</skos:prefLabel> + <skos:prefLabel xml:lang="sk">comService</skos:prefLabel> + <skos:prefLabel xml:lang="ro">comService</skos:prefLabel> + <skos:prefLabel xml:lang="pl">comService</skos:prefLabel> + <skos:prefLabel xml:lang="pt">comService</skos:prefLabel> + <skos:prefLabel xml:lang="mt">comService</skos:prefLabel> + <skos:prefLabel xml:lang="lv">comService</skos:prefLabel> + <skos:prefLabel xml:lang="lt">comService</skos:prefLabel> + <skos:prefLabel xml:lang="it">comService</skos:prefLabel> + <skos:prefLabel xml:lang="hu">comService</skos:prefLabel> + <skos:prefLabel xml:lang="fi">comService</skos:prefLabel> + <skos:prefLabel xml:lang="es">comService</skos:prefLabel> + <skos:prefLabel xml:lang="et">comService</skos:prefLabel> + <skos:prefLabel xml:lang="el">comService</skos:prefLabel> + <skos:prefLabel xml:lang="de">comService</skos:prefLabel> + <skos:prefLabel xml:lang="bg">comService</skos:prefLabel> + <skos:prefLabel xml:lang="da">comService</skos:prefLabel> + <skos:prefLabel xml:lang="cs">comService</skos:prefLabel> + </skos:Concept> + <skos:Concept rdf:about="urn:inspire:service:taxonomy:comEncodingService"> + <skos:prefLabel xml:lang="fr">comEncodingService</skos:prefLabel> + <skos:prefLabel xml:lang="en">comEncodingService</skos:prefLabel> + <skos:prefLabel xml:lang="nl">comEncodingService</skos:prefLabel> + <skos:prefLabel xml:lang="sv">comEncodingService</skos:prefLabel> + <skos:prefLabel xml:lang="sl">comEncodingService</skos:prefLabel> + <skos:prefLabel xml:lang="sk">comEncodingService</skos:prefLabel> + <skos:prefLabel xml:lang="ro">comEncodingService</skos:prefLabel> + <skos:prefLabel xml:lang="pl">comEncodingService</skos:prefLabel> + <skos:prefLabel xml:lang="pt">comEncodingService</skos:prefLabel> + <skos:prefLabel xml:lang="mt">comEncodingService</skos:prefLabel> + <skos:prefLabel xml:lang="lv">comEncodingService</skos:prefLabel> + <skos:prefLabel xml:lang="lt">comEncodingService</skos:prefLabel> + <skos:prefLabel xml:lang="it">comEncodingService</skos:prefLabel> + <skos:prefLabel xml:lang="hu">comEncodingService</skos:prefLabel> + <skos:prefLabel xml:lang="fi">comEncodingService</skos:prefLabel> + <skos:prefLabel xml:lang="es">comEncodingService</skos:prefLabel> + <skos:prefLabel xml:lang="et">comEncodingService</skos:prefLabel> + <skos:prefLabel xml:lang="el">comEncodingService</skos:prefLabel> + <skos:prefLabel xml:lang="de">comEncodingService</skos:prefLabel> + <skos:prefLabel xml:lang="bg">comEncodingService</skos:prefLabel> + <skos:prefLabel xml:lang="da">comEncodingService</skos:prefLabel> + <skos:prefLabel xml:lang="cs">comEncodingService</skos:prefLabel> + </skos:Concept> + <skos:Concept rdf:about="urn:inspire:service:taxonomy:comTransferService"> + <skos:prefLabel xml:lang="fr">comTransferService</skos:prefLabel> + <skos:prefLabel xml:lang="en">comTransferService</skos:prefLabel> + <skos:prefLabel xml:lang="nl">comTransferService</skos:prefLabel> + <skos:prefLabel xml:lang="sv">comTransferService</skos:prefLabel> + <skos:prefLabel xml:lang="sl">comTransferService</skos:prefLabel> + <skos:prefLabel xml:lang="sk">comTransferService</skos:prefLabel> + <skos:prefLabel xml:lang="ro">comTransferService</skos:prefLabel> + <skos:prefLabel xml:lang="pl">comTransferService</skos:prefLabel> + <skos:prefLabel xml:lang="pt">comTransferService</skos:prefLabel> + <skos:prefLabel xml:lang="mt">comTransferService</skos:prefLabel> + <skos:prefLabel xml:lang="lv">comTransferService</skos:prefLabel> + <skos:prefLabel xml:lang="lt">comTransferService</skos:prefLabel> + <skos:prefLabel xml:lang="it">comTransferService</skos:prefLabel> + <skos:prefLabel xml:lang="hu">comTransferService</skos:prefLabel> + <skos:prefLabel xml:lang="fi">comTransferService</skos:prefLabel> + <skos:prefLabel xml:lang="es">comTransferService</skos:prefLabel> + <skos:prefLabel xml:lang="et">comTransferService</skos:prefLabel> + <skos:prefLabel xml:lang="el">comTransferService</skos:prefLabel> + <skos:prefLabel xml:lang="de">comTransferService</skos:prefLabel> + <skos:prefLabel xml:lang="bg">comTransferService</skos:prefLabel> + <skos:prefLabel xml:lang="da">comTransferService</skos:prefLabel> + <skos:prefLabel xml:lang="cs">comTransferService</skos:prefLabel> + </skos:Concept> + <skos:Concept rdf:about="urn:inspire:service:taxonomy:comGeographicCompressionService"> + <skos:prefLabel xml:lang="fr">comGeographicCompressionService</skos:prefLabel> + <skos:prefLabel xml:lang="en">comGeographicCompressionService</skos:prefLabel> + <skos:prefLabel xml:lang="nl">comGeographicCompressionService</skos:prefLabel> + <skos:prefLabel xml:lang="sv">comGeographicCompressionService</skos:prefLabel> + <skos:prefLabel xml:lang="sl">comGeographicCompressionService</skos:prefLabel> + <skos:prefLabel xml:lang="sk">comGeographicCompressionService</skos:prefLabel> + <skos:prefLabel xml:lang="ro">comGeographicCompressionService</skos:prefLabel> + <skos:prefLabel xml:lang="pl">comGeographicCompressionService</skos:prefLabel> + <skos:prefLabel xml:lang="pt">comGeographicCompressionService</skos:prefLabel> + <skos:prefLabel xml:lang="mt">comGeographicCompressionService</skos:prefLabel> + <skos:prefLabel xml:lang="lv">comGeographicCompressionService</skos:prefLabel> + <skos:prefLabel xml:lang="lt">comGeographicCompressionService</skos:prefLabel> + <skos:prefLabel xml:lang="it">comGeographicCompressionService</skos:prefLabel> + <skos:prefLabel xml:lang="hu">comGeographicCompressionService</skos:prefLabel> + <skos:prefLabel xml:lang="fi">comGeographicCompressionService</skos:prefLabel> + <skos:prefLabel xml:lang="es">comGeographicCompressionService</skos:prefLabel> + <skos:prefLabel xml:lang="et">comGeographicCompressionService</skos:prefLabel> + <skos:prefLabel xml:lang="el">comGeographicCompressionService</skos:prefLabel> + <skos:prefLabel xml:lang="de">comGeographicCompressionService</skos:prefLabel> + <skos:prefLabel xml:lang="bg">comGeographicCompressionService</skos:prefLabel> + <skos:prefLabel xml:lang="da">comGeographicCompressionService</skos:prefLabel> + <skos:prefLabel xml:lang="cs">comGeographicCompressionService</skos:prefLabel> + </skos:Concept> + <skos:Concept rdf:about="urn:inspire:service:taxonomy:comGeographicFormatConversionService"> + <skos:prefLabel xml:lang="fr">comGeographicFormatConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="en">comGeographicFormatConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="nl">comGeographicFormatConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="sv">comGeographicFormatConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="sl">comGeographicFormatConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="sk">comGeographicFormatConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="ro">comGeographicFormatConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="pl">comGeographicFormatConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="pt">comGeographicFormatConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="mt">comGeographicFormatConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="lv">comGeographicFormatConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="lt">comGeographicFormatConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="it">comGeographicFormatConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="hu">comGeographicFormatConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="fi">comGeographicFormatConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="es">comGeographicFormatConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="et">comGeographicFormatConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="el">comGeographicFormatConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="de">comGeographicFormatConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="bg">comGeographicFormatConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="da">comGeographicFormatConversionService</skos:prefLabel> + <skos:prefLabel xml:lang="cs">comGeographicFormatConversionService</skos:prefLabel> + </skos:Concept> + <skos:Concept rdf:about="urn:inspire:service:taxonomy:comMessagingService"> + <skos:prefLabel xml:lang="fr">comMessagingService</skos:prefLabel> + <skos:prefLabel xml:lang="en">comMessagingService</skos:prefLabel> + <skos:prefLabel xml:lang="nl">comMessagingService</skos:prefLabel> + <skos:prefLabel xml:lang="sv">comMessagingService</skos:prefLabel> + <skos:prefLabel xml:lang="sl">comMessagingService</skos:prefLabel> + <skos:prefLabel xml:lang="sk">comMessagingService</skos:prefLabel> + <skos:prefLabel xml:lang="ro">comMessagingService</skos:prefLabel> + <skos:prefLabel xml:lang="pl">comMessagingService</skos:prefLabel> + <skos:prefLabel xml:lang="pt">comMessagingService</skos:prefLabel> + <skos:prefLabel xml:lang="mt">comMessagingService</skos:prefLabel> + <skos:prefLabel xml:lang="lv">comMessagingService</skos:prefLabel> + <skos:prefLabel xml:lang="lt">comMessagingService</skos:prefLabel> + <skos:prefLabel xml:lang="it">comMessagingService</skos:prefLabel> + <skos:prefLabel xml:lang="hu">comMessagingService</skos:prefLabel> + <skos:prefLabel xml:lang="fi">comMessagingService</skos:prefLabel> + <skos:prefLabel xml:lang="es">comMessagingService</skos:prefLabel> + <skos:prefLabel xml:lang="et">comMessagingService</skos:prefLabel> + <skos:prefLabel xml:lang="el">comMessagingService</skos:prefLabel> + <skos:prefLabel xml:lang="de">comMessagingService</skos:prefLabel> + <skos:prefLabel xml:lang="bg">comMessagingService</skos:prefLabel> + <skos:prefLabel xml:lang="da">comMessagingService</skos:prefLabel> + <skos:prefLabel xml:lang="cs">comMessagingService</skos:prefLabel> + </skos:Concept> + <skos:Concept rdf:about="urn:inspire:service:taxonomy:comRemoteFileAndExecutableManagement"> + <skos:prefLabel xml:lang="fr">comRemoteFileAndExecutableManagement</skos:prefLabel> + <skos:prefLabel xml:lang="en">comRemoteFileAndExecutableManagement</skos:prefLabel> + <skos:prefLabel xml:lang="nl">comRemoteFileAndExecutableManagement</skos:prefLabel> + <skos:prefLabel xml:lang="sv">comRemoteFileAndExecutableManagement</skos:prefLabel> + <skos:prefLabel xml:lang="sl">comRemoteFileAndExecutableManagement</skos:prefLabel> + <skos:prefLabel xml:lang="sk">comRemoteFileAndExecutableManagement</skos:prefLabel> + <skos:prefLabel xml:lang="ro">comRemoteFileAndExecutableManagement</skos:prefLabel> + <skos:prefLabel xml:lang="pl">comRemoteFileAndExecutableManagement</skos:prefLabel> + <skos:prefLabel xml:lang="pt">comRemoteFileAndExecutableManagement</skos:prefLabel> + <skos:prefLabel xml:lang="mt">comRemoteFileAndExecutableManagement</skos:prefLabel> + <skos:prefLabel xml:lang="lv">comRemoteFileAndExecutableManagement</skos:prefLabel> + <skos:prefLabel xml:lang="lt">comRemoteFileAndExecutableManagement</skos:prefLabel> + <skos:prefLabel xml:lang="it">comRemoteFileAndExecutableManagement</skos:prefLabel> + <skos:prefLabel xml:lang="hu">comRemoteFileAndExecutableManagement</skos:prefLabel> + <skos:prefLabel xml:lang="fi">comRemoteFileAndExecutableManagement</skos:prefLabel> + <skos:prefLabel xml:lang="es">comRemoteFileAndExecutableManagement</skos:prefLabel> + <skos:prefLabel xml:lang="et">comRemoteFileAndExecutableManagement</skos:prefLabel> + <skos:prefLabel xml:lang="el">comRemoteFileAndExecutableManagement</skos:prefLabel> + <skos:prefLabel xml:lang="de">comRemoteFileAndExecutableManagement</skos:prefLabel> + <skos:prefLabel xml:lang="bg">comRemoteFileAndExecutableManagement</skos:prefLabel> + <skos:prefLabel xml:lang="da">comRemoteFileAndExecutableManagement</skos:prefLabel> + <skos:prefLabel xml:lang="cs">comRemoteFileAndExecutableManagement</skos:prefLabel> + </skos:Concept> +</rdf:RDF> \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/data/config/codelist/external/thesauri/theme/inspire-theme.rdf b/src/main/webapp/WEB-INF/data/config/codelist/external/thesauri/theme/inspire-theme.rdf new file mode 100644 index 0000000..0188d68 --- /dev/null +++ b/src/main/webapp/WEB-INF/data/config/codelist/external/thesauri/theme/inspire-theme.rdf @@ -0,0 +1,1614 @@ +<?xml version="1.0" encoding="UTF-8"?> +<rdf:RDF xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:foaf="http://xmlns.com/foaf/0.1/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:skos="http://www.w3.org/2004/02/skos/core#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:exslt="http://exslt.org/common" xmlns:gemet="http://www.eionet.europa.eu/gemet/2004/06/gemet-schema.rdf#"> +<skos:ConceptScheme rdf:about="http://geonetwork-opensource.org/inspire-theme"> +<dc:title>GEMET - INSPIRE themes, version 1.0</dc:title> +<dc:description>INSPIRE themes thesaurus for GeoNetwork opensource.</dc:description> +<dc:creator> +<foaf:Organization> +<foaf:name>EEA</foaf:name> +</foaf:Organization> +</dc:creator> +<dc:uri>http://www.eionet.europa.eu/gemet/about?langcode=en</dc:uri> +<dc:rights>http://www.eionet.europa.eu/gemet/about?langcode=en</dc:rights> +<dcterms:issued>2008-06-01</dcterms:issued> +<dcterms:modified>2008-06-01</dcterms:modified> +</skos:ConceptScheme> +<skos:Concept rdf:about="http://rdfdata.eionet.europa.eu/inspirethemes/themes/1"> +<skos:altLabel>rs</skos:altLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sv">Referenskoordinatsystem</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sv">System för att entydigt lägesbestämma rumslig information i rummet som en uppsättning koordinater (x, y, z) och/ eller som latitud, longitud och höjd, pÃ¥ grundval av ett geodetiskt horisontellt och vertikalt datum.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sl">ReferenÄni koordinatni sistemi</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sk">Súradnicové referenÄné systémy</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sl">Sistemi za izkljuÄno navajanje prostorskih informacij v prostoru v obliki niza koordinat (x, y, z) in/ali Å¡irine in dolžine ter viÅ¡ine, ki temeljijo na horizontalnem in vertikalnem geodetskem podatku.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sk">Systémy pre jednotne referenÄné priestorové informácie v priestore v podobe množiny súradnÃc (x, y, z) a/alebo zemepisnej Å¡Ãrky, dĺžky a výšky založených na geodetickom horizontálnom a vertikálnom východzom bode.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ro">Sisteme de coordonate de referinţă</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ro">Sisteme de referinţă unică în spaÅ£iu a informaÅ£iilor spaÅ£iale, alcătuite dintr-un set de coordonate (x, y, z) ÅŸi/sau latitudine ÅŸi longitudine ÅŸi altitudine, bazate pe un datum orizontal ÅŸi pe unul vertical.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pl">Systemy odniesienia za pomocÄ… współrzÄ™dnych</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pt">Sistemas para referenciar de forma única a informação geográfica no espaço sob a forma de um conjunto de coordenadas (x, y, z) e/ou latitude e longitude e altitude, com base num datum geodésico horizontal e vertical.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pt">Sistemas de referencia</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="nl">Systemen voor verwijzing door middel van coördinaten</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pl">Systemy dla jednoznacznego przestrzennego odnoszenia informacji przestrzennej za pomocÄ… współrzÄ™dnych x, y, z lub za pomocÄ… szerokoÅ›ci, dÅ‚ugoÅ›ci lub wysokoÅ›ci na podstawie geodezyjnego poziomego i pionowego ukÅ‚adu odniesienia.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="mt">Sistemi ta' referenza ta' koordinati</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="nl">Systemen om aan ruimtelijke informatie een unieke reeks coördinaten (x, y,z) en/of breedte, lengte en hoogte toe te kennen, gebaseerd op een horizontaal en verticaal geodetische datum.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lv">KoordinÄtu atskaites sistÄ“mas</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="mt">Sistemi biex issir referenza unika ta' informazzjoni Ä¡eografika fl-ispazju bħala sett ta' koordinati (x,y,z) u/jew latitudni u lonÄ¡itudni u altitudni, ibbażati fuq datum Ä¡eodetiku orizzontali u vertikali.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lv">SistÄ“mas viennozÄ«mÄ«gai telpiskÄs informÄcijas atskaiÅ¡u norÄdīšanai telpÄ ar koordinÄtu kopu (x, y, z) un/vai platumu, garumu un augstumu, izmantojot Ä£eodÄ“ziskos horizontÄlos un vertikÄlos datus.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lt">KoordinaÄių atskaitos sistemos</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="it">Sistemi di coordinate</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lt">VienareikÅ¡mio erdvinÄ—s informacijos nurodymo erdvÄ—je naudojant koordinaÄių (x, y, z) derinį ir (arba) platumÄ…, ilgumÄ… bei aukÅ¡tį sistemos, pagrįstos geodezinÄ—s horizontaliosios ir vertikaliosios atskaitos duomenimis.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="hu">Koordinátarendszerek</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="it">Sistemi per referenziare in maniera univoca le informazioni territoriali nello spazio mediante un sistema di coordinate (x, y, z) e/o latitudine e longitudine e quota, sulla base di un dato geodetico orizzontale e verticale.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="hu">Olyan rendszerek, amelyek a térinformáció térbeli helyzetét koordinátákkal (x, y, z) és/vagy vÃzszintes és függÅ‘leges geodéziai adatokon alapuló földrajzi szélességgel, hosszúsággal és magassággal adják meg.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fr">Systèmes de référencement unique des informations géographiques dans l'espace sous forme d'une série de coordonnées (x, y, z) et/ou la latitude et la longitude et l'altitude, en se fondant sur un point géodésique horizontal et vertical.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fr">Référentiels de coordonnées</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fi">Koordinaattijärjestelmät</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="es">Sistemas de coordenadas de referencia</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="et">Süsteemid, milles ruumiandmete asukoht ruumis määratakse üheselt koordinaatide hulgaga (x, y, z) ja/või geodeetilisel referents- ja kõrgussüsteemil põhineva laiuse, pikkuse ja kõrgusega.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="et">Koordinaatsüsteemid</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fi">Järjestelmät, joissa paikkatietoihin liittyvä sijainti esitetään yksikäsitteisesti koordinaattien (x, y, z) ja/tai maantieteellisten pituus- ja leveysasteiden sekä korkeuden avulla ja jotka perustuvat horisontaalisiin ja vertikaalisiin geodeettisiin vertausjärjestelmiin.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="en">Systems for uniquely referencing spatial information in space as a set of coordinates (x, y, z) and/or latitude and longitude and height, based on a geodetic horizontal and vertical datum.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="en">Coordinate reference systems</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="es">Sistemas para referenciar de forma unÃvoca la información espacial en el espacio como una serie de coordenadas (x, y, z) y/o latitud y longitud y altura, basándose en un punto de referencia geodésico horizontal y vertical.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="el">Συστήματα για μονοσήμαντη αναφοÏά χωÏικών πληÏοφοÏιών στον χώÏο, ως σÏνολο συντεταγμÎνων (x,y,z) ή/και γεωγÏαφικό πλάτος και μήκος και Ïψος, με βάση γεωδαιτικό οÏιζόντιο και κατακόÏυφο σÏστημα αναφοÏάς (datum).</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="el">Συστήματα συντεταγμÎνων</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="de">Koordinatenreferenzsysteme</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="bg">Координатни Ñправочни ÑиÑтеми</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="de">Systeme zur eindeutigen räumlichen Referenzierung von Geodaten anhand eines Koordinatensatzes (x, y, z) und/oder Angaben zu Breite, Länge und Höhe auf der Grundlage eines geodätischen horizontalen und vertikalen Datums.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="da">Koordinatsystemer</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="cs">SouÅ™adnicové referenÄnà systémy</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="da">Systemer for entydig rumlig stedfæstelse af geografiske informationer ved hjælp af et sæt koordinater (x, y, z) og/eller længde, bredde og højde, baseret pÃ¥ et horisontalt og vertikalt geodætisk datum.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="cs">Systémy umožňujÃcà jednoznaÄné pÅ™iÅ™azenà polohy prostorovým informacÃm pomocà souboru souÅ™adnic (x, y, z) nebo zemÄ›pisné Å¡ÃÅ™ky, zemÄ›pisné délky a výšky, vycházejÃcà z údajů polohových a výškových geodetických systémů.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="bg">СиÑтеми за проÑтранÑтвена информациÑ, предназначена изключително за Ñправочни цели, предÑтавена в проÑтранÑтвото Ñ ÐºÐ¾Ð¾Ñ€Ð´Ð¸Ð½Ð°Ñ‚Ð¸ (x, y, z) и/или ширина, дължина и виÑочина, на базата на геодезични хоризонтални и вертикални данни.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ca">Sistemes de coordenades de referència</skos:prefLabel><skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ca">Sistemes per referenciar de manera unÃvoca la informació espacial en l’espai com una sèrie de coordenades (x, y, z) i/o latitud i longitud i altura, basant-se en un punt de referència geodèsic horitzontal i vertical.</skos:scopeNote></skos:Concept> +<skos:Concept rdf:about="http://rdfdata.eionet.europa.eu/inspirethemes/themes/10"> +<skos:altLabel>el</skos:altLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sv">Höjd</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pt">Altitude</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ro">Modele digitale de elevaÅ£ii ale suprafeÅ£elor terestre, de gheaţă sau oceanice. Include altimetria, batimetria ÅŸi linia de coastă.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ro">ElevaÅ£ie</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sl">Digitalni model viÅ¡in</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sv">Digitala höjdmodeller för mark-, is- och havsyta. Inbegriper höjdförhÃ¥llanden pÃ¥ land, batymetri samt kustlinje.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sl">Digitalni model viÅ¡in za kopensko, zaledenelo in oceansko povrÅ¡ino. VkljuÄuje nadmorske viÅ¡ine, batimetrijo in obalne mreže.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sk">Výška</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sk">Digitálne výškové modely zemského povrchu, ľadovcov a hladÃn oceánov. Patria sem pevninové vyvýšeniny, batymetria a pobrežná Äiara.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pt">Modelos digitais de terreno aplicáveis à s superfÃcies terrestre, gelada e oceânica. Inclui a elevação terrestre, a batimetria e a linha costeira.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="nl">Digitale hoogtemodellen voor land-, ijs- en oceaanoppervlakken, inclusief landhoogte, bathymetrie en kustlijn.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pl">UksztaÅ‚towanie terenu</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="nl">Hoogte</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pl">Cyfrowe modele wysokoÅ›ciowe powierzchni lÄ…du, lodu i oceanu. Obejmuje również wysokość topograficznÄ… terenu, batymetriÄ™ oraz liniÄ™ brzegowÄ….</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="mt">Mudelli ta' elevazzjoni diÄ¡itali għall-art, is-silÄ¡ u l-wiċċ ta' l-oÄ‹ean. Tinkludi l-elevazzjoni ta' l-art, il-batimetrija u l-linja tal-kosta.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="mt">Elevazzjoni</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lv">DigitÄli augstuma modeļi zemes, ledus un jÅ«ras virsmai. Tie ietver arÄ« sauszemes reljefu, dziļumu un krasta lÄ«niju.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lv">Augstums</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lt">AukÅ¡tis</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="it">Modelli digitali di elevazione per superfici emerse, ghiacci e superfici oceaniche. La voce comprende l’altitudine terrestre, la batimetria e la linea di costa.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="it">Elevazione</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lt">Sausumos, ledo ir vandenyno pavirÅ¡ių skaitmeniniai aukÅ¡Äio modeliai. Tai apima sausumos aukÅ¡tį, batimetrijÄ… ir pakrantÄ—s linijÄ….</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fi">Digitaaliset maan-, jään- ja merenpintaa kuvaavat korkeusmallit. Sisältää maanpinnan korkeussuhteet, syvyystiedot ja rantaviivan.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fi">Korkeus</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fr">Modèles numériques pour l'altitude des surfaces terrestres, glaciaires et océaniques. Comprend l'altitude terrestre, la bathymétrie et la ligne de rivage.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="hu">Domborzat</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fr">Altitude</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="hu">Digitális domborzati modellek a szárazföldi, jéggel borÃtott és óceáni felszÃnre. Ide tartozik a felszÃni és vÃz alatti domborzat és a partvonal.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="el">ΥψομετÏία</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="en">Digital elevation models for land, ice and ocean surface. Includes terrestrial elevation, bathymetry and shoreline.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="en">Elevation</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="es">Modelos digitales de elevaciones para las superficies de tierra, hielo y mar. Se incluirán la altimetrÃa, la batimetrÃa y la lÃnea de costa.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="es">Elevaciones</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="et">Maa- ja jääpinna ning ookeani põhja digitaalsed reljeefimudelid. Hõlmab maapinna ja veekogude põhja reljeefi ning kaldajooni.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="et">Kõrgused</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="de">Höhe</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="el">Ψηφιακά υψομετÏικά μοντÎλα για χεÏσαίες εκτάσεις, εκτάσεις καλυπτόμενες από πάγους και ωκεανοÏÏ‚. ΠεÏιλαμβάνονται, εν Ï€ÏοκειμÎνω, η χεÏσαία υψομετÏία, η βαθυμετÏία και οι ακτογÏαμμÎÏ‚.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="da">Digitale højdemodeller for land, is og havoverflade. Omfatter landhøjder, havdybder og kystlinje.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="da">Højde</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="de">Digitale Höhenmodelle für Land-, Eis- und Meeresflächen. Dazu gehören Geländemodell, Tiefenmessung und Küstenlinie.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="bg">Цифрови релефни модели за земната, ледената и океанÑката повърхноÑÑ‚. Включва земен релеф, Ð±Ð°Ñ‚Ð¸Ð¼ÐµÑ‚Ñ€Ð¸Ñ Ð¸ брегова линиÑ.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="cs">NadmoÅ™ská výška</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="bg">Релеф</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="cs">Digitálnà výškový model pevniny, povrchu ledovců a oceánů. Zahrnuje nadmoÅ™ské výšky pevnin, vodnà hloubky a pobÅ™ežnà Äáru.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ca">Elevacions</skos:prefLabel><skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ca">Models digitals d’elevacions per a les superfÃcies de terra, gel i mar. S’inclourà l’altimetria, la batimetria i la lÃnia de costa.</skos:scopeNote></skos:Concept> +<skos:Concept rdf:about="http://rdfdata.eionet.europa.eu/inspirethemes/themes/11"> +<skos:altLabel>lc</skos:altLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sv">Landtäcke</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sv">Fysiskt och biologiskt landtäcke pÃ¥ jordytan, inbegripet artificiella ytor, jordbruksmark, skogar, (delvis) naturliga omrÃ¥den, vÃ¥tmarker, vattenförekomster.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sl">Pokrovnost tal</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pt">Ocupação do solo</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ro">Acoperirea fizică ÅŸi biologică a suprafeÅ£ei terestre, inclusiv suprafeÅ£ele artificiale, zonele agricole, pădurile, zonele (semi)naturale, zonele umede ÅŸi corpurile de apă.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sk">Krajinná pokrývka (land cover)</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sl">FiziÄni in bioloÅ¡ki pojavi na zemeljski povrÅ¡ini, vkljuÄno z umetnimi povrÅ¡inami, kmetijskimi obmoÄji, gozdovi, (pol-) naravnimi obmoÄji, mokriÅ¡Äi, vodnimi telesi.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sk">Fyzikálna a biologická pokrývka zemského povrchu vrátane umelých povrchov, poľnohospodárskych oblastÃ, lesov, (polo)prÃrodných oblastÃ, mokradÃ, vodných útvarov.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ro">Acoperire terestră</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="nl">Bodemgebruik</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pl">Fizyczne i biologiczne użytkowanie powierzchni Ziemi, włączajÄ…c w to powierzchnie sztuczne, obszary rolnicze, lasy, obszary (pół-)naturalne, tereny podmokÅ‚e, akweny.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pl">Użytkowanie terenu</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pt">Cobertura fÃsica e biológica da superfÃcie terrestre, incluindo superfÃcies artificiais, zonas agrÃcolas, florestas, zonas naturais ou semi-naturais, zonas húmidas, massas de água.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lv">Zemes virsma</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="mt">Kopertura fiżika u bijoloÄ¡ika tal-wiċċ tad-dinja inklużi superfiÄ‹ji artifiÄ‹jali, żoni agrikoli, foresti, żoni (semi-)naturali, artijiet mistagħdra, u korpi ta' ilma.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="mt">Kopertura ta' l-art</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="nl">Fysieke en biologische bedekking van het aardoppervlak, met inbegrip van kunstmatige oppervlakken, landbouwgebieden, bossen, halfnatuurlijke gebieden, moeraslanden en wateroppervlakken.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lt">ŽemÄ—s danga</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lv">Zemes virsmas fiziskais un bioloÄ£iskais segums, tostarp mÄkslÄ«gu virsmu, lauksaimniecÄ«bas teritoriju, mežu, (daļēji) dabisku platÄ«bu, mitrzemju, Å«denstilpņu fiziskais un bioloÄ£iskais segums.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lt">FizinÄ— ir biologinÄ— žemÄ—s pavirÅ¡iaus danga, įskaitant dirbtinius pavirÅ¡ius, žemÄ—s Å«kio plotus, miÅ¡kus, (pusiau) natÅ«ralius plotus, Å¡lapžemes, vandens telkinius.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="hu">A felszÃn borÃtása</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fr">Occupation des terres</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="hu">A Föld felszÃnének fizikai és biológiai borÃtása, beleértve a mesterséges felszÃnt, a mezÅ‘gazdasági területeket, erdÅ‘ket, a (félig) természetes területeket, a vizes élÅ‘helyeket és a vÃztesteket.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="it">Copertura fisica e biologica della superficie terrestre comprese le superfici artificiali, le zone agricole, i boschi e le foreste, le aree (semi)naturali, le zone umide, i corpi idrici.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="it">Copertura del suolo</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="es">Cubierta terrestre</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="et">Maapinna elutust või elusainest kate, sealhulgas tehislikud pinnakatted, põllumajandusalad, metsad, (pool-)looduslikud alad, märgalad ning veekogud.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="et">Maakate</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fi">Maapallon pinnan fysikaalinen ja biologinen peite, mukaan luettuina keinotekoiset peitteet, maatalousalueet, metsät, (osaksi) luonnontilassa olevat alueet, kosteikot ja vesistöt.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fi">Maanpeite</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fr">Couverture physique et biologique de la surface terrestre, y compris les surfaces artificielles, les zones agricoles, les forêts, les zones (semi-)naturelles, les zones humides et les masses d'eau.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="el">Κάλυψη γης</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="en">Physical and biological cover of the earth's surface including artificial surfaces, agricultural areas, forests, (semi-)natural areas, wetlands, water bodies.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="de">Physische und biologische Bedeckung der Erdoberfläche, einschließlich künstlicher Flächen, landwirtschaftlicher Flächen, Wäldern, natürlicher (naturnaher) Gebiete, Feuchtgebieten und Wasserkörpern.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="en">Land cover</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="es">Cubierta fÃsica y biológica de la superficie de la tierra, incluidas las superficies artificiales, las zonas agrarias, los bosques, las zonas naturales o seminaturales, los humedales, las láminas de agua.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="de">Bodenbedeckung</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="el">Φυσική και βιολογική κάλυψη της γήινης επιφάνειας, όπου συμπεÏιλαμβάνονται τεχνητÎÏ‚ εκτάσεις, γεωÏγικÎÏ‚ εκτάσεις, δάση, (ημι-)φυσικÎÏ‚ εκτάσεις, υγÏότοποι, υδατικά συστήματα.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="cs">Krajinný pokryv</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="da">Jordens fysiske og biologiske overflade, herunder kunstige overflader, landbrugsarealer, skove, (halv-)naturlige omrÃ¥der, vÃ¥domrÃ¥der, vandomrÃ¥der.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="da">Arealdække</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="bg">ФизичеÑка или биологична покривка на земната повърхноÑÑ‚, включително изкуÑтвени повърхноÑти, ÑелÑкоÑтопанÑки райони, гори, (полу-) еÑтеÑтвени райони, влажни зони, водни маÑи.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="bg">Земна покривка</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="cs">Fyzický a biologický pokryv zemského povrchu, vÄetnÄ› umÄ›le vytvoÅ™ených ploch, zemÄ›dÄ›lských oblastÃ, lesů, pÅ™irozených a ÄásteÄnÄ› pÅ™irozených oblastÃ, mokÅ™adů, vodnÃch tÄ›les.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ca">Coberta terrestre</skos:prefLabel><skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ca">Coberta fÃsica i biològica de la superfÃcie de la terra, incloses les superfÃcies artificials, les zones agrà ries, els boscos, les zones naturals o seminaturals, les à rees humides i les là mines d’aigua.</skos:scopeNote></skos:Concept> +<skos:Concept rdf:about="http://rdfdata.eionet.europa.eu/inspirethemes/themes/12"> +<skos:altLabel>oi</skos:altLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sl">Geolocirani slikovni podatki zemeljske povrÅ¡ine iz satelita ali senzorjev v zraku.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sl">Ortofoto</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ro">Imagini georeferenÅ£iate ale suprafeÅ£ei terestre, înregistrate cu senzori plasaÅ£i pe sateliÅ£i sau aeropurtaÅ£i.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ro">Ortoimagini</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sv">Ortofoto</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sv">Georefererade bilddata över jordytan, antingen frÃ¥n satelliter eller frÃ¥n flygburna sensorer.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sk">Georeferencované obrazové údaje o zemskom povrchu buÄ zo satelitu alebo z leteckých snÃmaÄov.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sk">Ortometria</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pl">SporzÄ…dzanie ortoobrazów</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pt">Imagens georeferenciadas da superfÃcie terrestre recolhidas por satélite ou sensores aéreos.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pt">Ortoimagens</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="nl">Orthobeeldvorming</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pl">Dane obrazowe powierzchni Ziemi posiadajÄ…ce odniesienie geograficzne, pochodzÄ…ce z rejestracji z pokÅ‚adu satelity lub samolotu.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="mt">Orthoimagery</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="nl">Geogerefereerde beeldgegevens van het aardoppervlak, afkomstig van sensoren op satellieten of vliegtuigen.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lv">OrtofotogrÄfija</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="mt">Data fil-forma ta' stampa Ä¡eo-referenzjata tal-wiċċ tad-dinja, minn satellita jew minn sensuri fl-ajru.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lt">Ortofotografinis vaizdavimas</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lv">Zemes virsmas attÄ“li ar piekÄrtotu norÄdi par Ä£eogrÄfisko novietojumu telpÄ, kas saņemti no satelÄ«ta vai gaisÄ esoÅ¡iem sensoriem.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="it">Orto immagini</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lt">Georeferencinis žemÄ—s pavirÅ¡iaus atvaizdas, gaunamas iÅ¡ palydove arba orlaivyje esanÄių jutiklių.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="hu">Ortofotók</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="it">Immagini georeferenziate della superficie terrestre prese da satellite o da telesensori.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fr">Images géoréférencées de la surface terrestre, provenant de satellites ou de capteurs aéroportés.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fr">Ortho-imagerie</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="hu">A Föld felszÃnének földrajzi hivatkozással ellátott, műhold vagy légi adatgyűjtÅ‘k által készÃtett képi adatai.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="es">Imágenes georreferenciadas de la superficie de la tierra, obtenidas por satélite o por sensores aerotransportados.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="es">Ortoimágenes</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="et">Maapinna georefereeritud kujutised, mis on talletatud satelliitidel või lennuvahenditel asuvate sensorite abil.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fi">Ortoilmakuvat</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="et">Ortokujutised</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fi">Joko satelliittien tai lentokäyttöisten sensorien toimittamia maantieteelliseen koordinaatistoon sidottuja kuvatietoja maapallon pinnasta.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="el">ΟÏθοφωτογÏαφία</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="en">Geo-referenced image data of the Earth's surface, from either satellite or airborne sensors.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="el">ΓεωαναφεÏόμενα δεδομÎνα από εικόνες της επιφάνειας της γης, από δοÏυφόÏους ή αεÏομεταφεÏόμενους αισθητήÏες.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="en">Orthoimagery</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="da">Ortofoto</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="de">Georeferenzierte Bilddaten der Erdoberfläche von satelliten- oder luftfahrzeuggestützten Sensoren.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="de">Orthofotografie</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="bg">Данни от геоизображение на земната повърхноÑÑ‚, направено от Ñателит или въздушни Ñензори.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="cs">OrtofotosnÃmky</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="da">Georefererede billeddata om Jordens overflade optaget fra enten satellit- eller flybaserede sensorer.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="cs">Obrazová data poÅ™Ãzená satelitnÃmi nebo leteckými Äidly vztažená k zemskému povrchu pomocà zemÄ›pisné soustavy souÅ™adnic.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="bg">Ортоизображение</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ca">Ortoimatges</skos:prefLabel><skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ca">Imatges georeferenciades de la superfÃcie de la terra, obtingudes per satèl·lit o per sensors aerotransportats.</skos:scopeNote></skos:Concept> +<skos:Concept rdf:about="http://rdfdata.eionet.europa.eu/inspirethemes/themes/13"> +<skos:altLabel>ge</skos:altLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pl">Geologia</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pt">Geologia caracterizada de acordo com a composição e a estrutura. Inclui a base rochosa, os aquÃferos e a geomorfologia.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pt">Geologia</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ro">Geologie caracterizată în funcÅ£ie de compoziÅ£ie ÅŸi structură. Include roca de bază, straturile acvifere ÅŸi geomorfologia.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ro">Geologie</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sk">Geológia charakterizovaná na základe zloženia a Å¡truktúry. Zahŕňa skalné podložie, zvodnené vrstvy a geomorfológiu.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sk">Geológia</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sl">Geologija je doloÄena v skladu s sestavo in strukturo. VkljuÄuje živo skalo, vodonosnike in geomorfologijo.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sl">Geologija</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sv">Geologiska förhÃ¥llanden indelade efter sammansättning och struktur. Innefattar berggrund, akviferer och geomorfologi.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sv">Geologi</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="nl">Geologie</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pl">Geologia charakteryzowana na podstawie skÅ‚adu i struktury. Obejmuje podÅ‚oże skalne, warstwy wodonoÅ›ne i geomorfologiÄ™.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="mt">Ä eologija</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="nl">Geologie, gekenmerkt volgens samenstelling en structuur, inclusief vast gesteente, waterhoudende grondlagen en geomorfologie.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lv">Ä¢eoloÄ£ija</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="mt">Ä eoloÄ¡ija kkaratterizzata skond il-kompożizzjoni u l-istruttura. Tinkludi s-sodda tal-blat, l-akwiferi u lÄ¡eomorfoloÄ¡ija.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lv">Ä¢eoloÄ£iskais stÄvoklis, ko raksturo uzbÅ«ve un struktÅ«ra. Tostarp informÄcija par pamatiežiem, Å«dens nesÄ“jslÄņiem un Ä£eomorfoloÄ£iju.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lt">Geologija</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lt">Geologija apibÅ«dinama pagal sudÄ—tį ir struktÅ«rÄ…. Tai apima pamatinÄ™ uolienÄ…, vandeninguosius sluoksnius ir geomorfologijÄ….</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="it">Geologia</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="hu">Földtan</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="it">Classificazione geologica in base alla composizione e alla struttura. Questa voce comprende il basamento roccioso, gli acquiferi e la geomorfologia.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fr">Géologie</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="hu">Az összetétel és szerkezet alapján jellemzett földtan. Ide tartozik az alapkÅ‘zet, a vÃztartó rétegek és a geomorfológia is.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="en">Geology characterised according to composition and structure. Includes bedrock, aquifers and geomorphology.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="en">Geology</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="es">CaracterÃsticas geológicas según la composición y la estructura. Se incluirán la plataforma de roca firme, los acuÃferos y la geomorfologÃa.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="es">GeologÃa</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="et">Maapinna geoloogiline iseloom vastavalt koostisele ja struktuurile. Hõlmab aluskivimeid, põhjaveekihte ja geomorfoloogiat.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="et">Geoloogia</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fi">Geologia kuvattuna koostumuksen ja rakenteen mukaan. Sisältää kallioperän, akviferit ja pinnanmuodot.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fi">Geologia</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fr">Géologie caractérisée en fonction de la composition et de la structure. Englobe le substratum rocheux, les aquifères et la géomorphologie.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="el">Γεωλογία</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="de">Geologie</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="el">Γεωλογικός χαÏακτηÏισμός με βάση τη σÏσταση και τη δομή. ΠεÏιλαμβάνονται το μητÏικό Ï€ÎÏ„Ïωμα, οι υδÏοφόÏοι οÏίζοντες και η γεωμοÏφολογία.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="da">Geologi</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="de">Geologische Beschreibung anhand von Zusammensetzung und Struktur. Dies umfasst auch Grundgestein, Grundwasserleiter und Geomorphologie.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="bg">ГеологиÑ, определена Ñпоред ÑÑŠÑтава и Ñтруктурата. Включва земен Ñлой, воден Ñлой и геоморфологиÑ.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="bg">ГеологиÑ</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="cs">Geologie charakterizovaná podle složenà a struktury. Zahrnuje skalnà podložÃ, zvodnÄ› a geomorfologii.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="cs">Geologie</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="da">Geologi karakteriseret ved sammensætning og struktur. Omfatter grundfjeld, grundvandsmagasiner og geomorfologi.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ca">Geologia</skos:prefLabel><skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ca">CaracterÃstiques geològiques segons la composició i l’estructura. S’inclourà la plataforma de roca ferma, els aqüÃfers i la geomorfologia.</skos:scopeNote></skos:Concept> +<skos:Concept rdf:about="http://rdfdata.eionet.europa.eu/inspirethemes/themes/14"> +<skos:altLabel>su</skos:altLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pt">Unidades estatÃsticas</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ro">Unităţi de difuzare sau de utilizare a informaÅ£iilor statistice.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ro">Unităţi statistice</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sk">Jednotky pre Å¡Ãrenie alebo využÃvanie Å¡tatistických informáciÃ.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sk">Å tatistické jednotky</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sl">Enote za Å¡irjenje ali uporabo statistiÄnih podatkov.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sl">StatistiÄni okoliÅ¡i</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sv">Enheter för spridning och användning av statistisk information.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sv">Statistiska enheter</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="nl">Statistische eenheden</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pl">Jednostki sÅ‚użące do rozpowszechniania lub wykorzystywania informacji statystycznych.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pl">Jednostki statystyczne</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pt">Unidades para fins de divulgação ou utilização da informação estatÃstica.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lt">Vienetai, skirti statistinÄ—s informacijos platinimui ar panaudojimui.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lt">Statistiniai vienetai</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lv">VienÄ«bas, kuras izmanto statistikas informÄcijas izplatīšanÄ vai izmantoÅ¡anÄ.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="mt">Unitajiet statistiÄ‹i</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="nl">Eenheden voor verspreiding en gebruik van statistische informatie.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="mt">Unitajiet biex issir disseminazzjoni jew użu ta' informazzjoni ta' l-istatistika.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lv">Statistikas vienÄ«bas</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="it">Unità statistiche</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fi">Tilastotietojen levittämis- tai käyttöyksiköt.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fi">Tilastoyksiköt</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fr">Unités de diffusion ou d'utilisation d'autres informations statistiques.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fr">Unités statistiques</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="hu">Statisztikai információk terjesztésére vagy felhasználására szolgáló egységek.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="hu">Statisztikai egységek</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="it">Unità per la divulgazione o l'utilizzo di dati statistici.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="es">Unidades estadÃsticas</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="et">Statistilise teabe levitamise või kasutamise üksused.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="et">Statistilised üksused</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="en">Statistical units</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="es">Unidades para la difusión o el uso de información estadÃstica.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="de">Statistische Einheiten</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="el">Μονάδες διάδοσης ή χÏήσης στατιστικών πληÏοφοÏιών.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="el">ΣτατιστικÎÏ‚ μονάδες</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="en">Units for dissemination or use of statistical information.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="cs">Jednotky pro Å¡ÃÅ™enà nebo použÃvánà statistických informacÃ.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="cs">Statistické jednotky</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="da">Enheder for formidling eller anvendelse af statistiske oplysninger.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="da">Statistiske enheder</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="de">Einheiten für die Verbreitung oder Verwendung statistischer Daten.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="bg">Единици, разпроÑтранÑващи или ползващи ÑтатиÑтичеÑка информациÑ.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="bg">СтатиÑтичеÑки единици</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ca">Unitats estadÃstiques</skos:prefLabel><skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ca">Unitats per a la difusió o l’ús d’informació estadÃstica.</skos:scopeNote></skos:Concept> +<skos:Concept rdf:about="http://rdfdata.eionet.europa.eu/inspirethemes/themes/15"> +<skos:altLabel>bu</skos:altLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sl">Prostorska lega stavb.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sl">Stavbe</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sv">Geografiskt läge för byggnader.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sv">Byggnader</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ro">Clădiri</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sk">Zemepisná poloha stavieb.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sk">Stavby</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pt">EdifÃcios</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ro">Localizarea geografică a clădirilor.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pt">Localização geográfica dos edifÃcios.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pl">PoÅ‚ożenie geograficzne budynków.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pl">Budynki</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lv">Ä’kas</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="mt">Posizzjoni Ä¡eografika ta' bini.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="mt">Bini</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="nl">Geografische locatie van gebouwen.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="nl">Gebouwen</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lv">Ä’ku Ä£eogrÄfiskÄ atraÅ¡anÄs vieta.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="el">ΓεωγÏαφική θÎση κτιÏίων.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="el">ΚτίÏια</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="en">Geographical location of buildings.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="en">Buildings</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="es">Localización geográfica de los edificios.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="es">Edificios</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="et">Ehitiste geograafiline asukoht.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="et">Ehitised</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fi">Rakennusten maantieteellinen sijainti.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fi">Rakennukset</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fr">Situation géographique des bâtiments.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lt">Pastatai</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lt">GeografinÄ— pastatų buvimo vieta.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="it">Edifici</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="it">Localizzazione geografica degli edifici.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="hu">Épületek</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="hu">Az épületek földrajzi helye.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fr">Bâtiments</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="bg">ГеографÑко разположение на Ñградите.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="bg">Сгради</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="cs">ZemÄ›pisná poloha budov.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="cs">Budovy</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="da">Geografisk stedfæstelse af bygninger.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="da">Bygninger</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="de">Geografischer Standort von Gebäuden.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="de">Gebäude</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ca">Edificis</skos:prefLabel><skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ca">Localització geogrà fica dels edificis.</skos:scopeNote></skos:Concept> +<skos:Concept rdf:about="http://rdfdata.eionet.europa.eu/inspirethemes/themes/16"> +<skos:altLabel>so</skos:altLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sl">Tla</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sv">JordmÃ¥ner och jordarter klassificerade efter djup, textur, struktur och innehÃ¥ll av partiklar och organiskt material, stenighet, erosion, vid behov genomsnittlig lutning och beräknad vattenhÃ¥llande förmÃ¥ga.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sv">Mark</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sl">Tla in sloji prsti pod povrÅ¡jem, doloÄeni po debelini, teksturi, zgradbi in vsebnosti delcev in organskih snovi, kamnitosti, eroziji, po potrebi povpreÄni nagib in predvidene zmogljivosti vodnih zalog.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ro">Soluri ÅŸi subsoluri, caracterizate în funcÅ£ie de adâncime, textură, structură ÅŸi conÅ£inut al particulelor ÅŸi materialului organic, schelet, eroziune, înclinaÅ£ie medie ÅŸi capacitate anticipată de stocare a apei, după caz.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ro">Soluri</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sk">Pôdy a podložia charakterizované podľa hĺbky, textúry, Å¡truktúry a obsahu ÄastÃc a organického materiálu, kamenitosti, erózie, prÃpadne priemerným sklonom a predpokladanou schopnosÅ¥ou zadržiavaÅ¥ vodu.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pl">Gleby i podglebie charakteryzowane na podstawie głębokoÅ›ci, tekstury, struktury i zawartoÅ›ci czÄ…stek oraz materiaÅ‚u organicznego, kamienistoÅ›ci, erozji, a w odpowiednich przypadkach na podstawie przeciÄ™tnego nachylenia oraz przewidywanej zdolnoÅ›ci zatrzymywania wody.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pl">Gleba</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sk">Pôda</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pt">Solo e subsolo caracterizado de acordo com a profundidade, textura, estrutura e conteúdo das partÃculas e material orgânico, carácter pedregoso, erosão, eventualmente declive médio e capacidade estimada de armazenamento de água.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pt">Solo</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lv">Augsne</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="nl">Bodem</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="nl">Bodem en ondergrond, gekenmerkt volgens diepte, textuur, structuur en inhoud van deeltjes en organisch materiaal, steenachtigheid, erosie en, waar passend, gemiddelde hellingsgraad en verwachte wateropslagcapaciteit.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="mt">Ħamrija</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="mt">Tipi ta' ħamrija u sub-ħamrija kkaratterizzati skond il-fond, it-tessut, l-istruttura u l-kontenut ta' partiÄ‹elli u materjal organiku, il-kontenut ta' Ä¡ebel, it-tgħawwir, fejn xieraq il-medja tax-xaqlib ta' l-art u l-kapaÄ‹ità antiÄ‹ipata għall-ħażna ta' l-ilma.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="it">Suolo</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lt">Dirvožemio ir podirvio charakteristikos: gylis, granuliometrinÄ— sudÄ—tis, dalelių ir organinių medžiagų struktÅ«ra ir sudÄ—tis, akmeningumas, erozija ir tam tikrais atvejais vidutinis nuolydis bei numatomas vandens sulaikymo pajÄ—gumas.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lv">Augsnes un tÄs apakÅ¡kÄrtas stÄvoklis, ko raksturo dziļums, faktÅ«ra, struktÅ«ra un daļiņu un organisko vielu saturs, akmeņainÄ«ba, erozija un, attiecÄ«gÄ gadÄ«jumÄ, vidÄ“jais slÄ«pums un prognozÄ“jamÄ Å«dens uzkrÄÅ¡anas spÄ“ja.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lt">Dirvožemis</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="it">Caratterizzazione del suolo e del sottosuolo in base a profondità , tessitura (texture), struttura e contenuto delle particelle e della materia organica, pietrosità , erosione, eventualmente pendenza media e capacità prevista di ritenzione dell’acqua.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="hu">Talaj</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="hu">A mélység, állag, szerkezet, a részecskék és szerves anyagok jelenléte, a köves jelleg, az erózió, valamint adott esetben az átlagos lejtés és a becsült vÃztartó képesség alapján jellemzett talajok és altalaj.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fr">Sols et sous-sol caractérisés selon leur profondeur, texture, structure et teneur en particules et en matières organiques, pierrosité, érosion, le cas échéant pente moyenne et capacité anticipée de stockage de l'eau.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fr">Sols</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fi">Maannoksen ja muuttumattoman pohjamaalajin kuvaaminen syvyyden, raekoostumuksen, rakenteen sekä hiukkasten ja orgaanisen aineksen sisällön, kivisyyden, eroosion ja tarvittaessa keskimääräisen kaltevuuden ja arvioidun veden varastointikapasiteetin mukaan.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fi">Maaperä</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="et">Pinnas</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="et">Pinnas ja aluspinnas, mida iseloomustatakse sügavuse, tekstuuri, struktuuri, osakeste ja orgaanilise materjali sisalduse, kivimisisalduse, erosiooni, vajadusel keskmise kalde ja eeldatava veemahutavuse järgi.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="es">Suelo</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="es">Suelo y subsuelo, caracterizados según su profundidad, textura, estructura y contenido de partÃculas y material orgánico, pedregosidad, erosión y, cuando proceda, pendiente media y capacidad estimada de almacenamiento de agua.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="el">ΧαÏακτηÏισμός εδάφους και υπεδάφους ανάλογα με το βάθος, την υφή, τη δομή και την πεÏιεκτικότητα σε σωματίδια και οÏγανικά υλικά, το πετÏώδες, τη διάβÏωση και, κατά πεÏίπτωση, τη μÎση κλίση και την Ï€Ïοβλεπόμενη χωÏητικότητα αποθήκευσης νεÏοÏ.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="en">Soil</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="el">Έδαφος</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="en">Soils and subsoil characterised according to depth, texture, structure and content of particles and organic material, stoniness, erosion, where appropriate mean slope and anticipated water storage capacity.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="de">Boden</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="da">Jordbund og underjord karakteriseret efter dybde, tekstur, struktur og indhold af partikler og organisk materiale, stenindhold, erosion, i givet fald gennemsnitlig hældning og forventet vandlagringskapacitet.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="de">Beschreibung von Boden und Unterboden anhand von Tiefe, Textur, Struktur und Gehalt an Teilchen sowie organischem Material, Steinigkeit, Erosion, gegebenenfalls durchschnittliches Gefälle und erwartete Wasserspeicherkapazität.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="da">Jord</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="bg">Почви и подпочви, определени Ñпоред дълбочина, Ñтроеж, Ñтруктура, механичен ÑÑŠÑтав и Ñъдържание на органични материали, каменливоÑÑ‚, ÐµÑ€Ð¾Ð·Ð¸Ñ Ð¸, по целеÑъобразноÑÑ‚, Ñреден наклон и предполагаема водопопиваемоÑÑ‚.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="cs">Půda a jejà podložà popsané podle hloubky, zrnitosti, struktury a obsahu Äástic a organického materiálu, podÃlu skeletu, erozÃ, pÅ™ÃpadnÄ› průmÄ›rného sklonu svahu a oÄekávané kapacity jÃmavosti vody.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="cs">Půda</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="bg">Почва</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ca">Sòl</skos:prefLabel><skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ca">Sòl i subsòl, caracteritzats segons la seva profunditat, textura, estructura i contingut de partÃcules i material orgà nic, pedregositat, erosió i, quan sigui procedent, pendent mitjà i capacitat estimada d’emmagatzematge d’aigua.</skos:scopeNote></skos:Concept> +<skos:Concept rdf:about="http://rdfdata.eionet.europa.eu/inspirethemes/themes/17"> +<skos:altLabel>lu</skos:altLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sv">Markanvändning</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sl">Namenska raba tal</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sv">Territorium indelat efter nuvarande och framtida planerade funktion eller socioekonomisk användning (t.ex. bostadsmark, industrimark, handel, jordbruk, skogsbruk, friluftsliv).</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pl">Zagospodarowanie przestrzenne</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pt">Caracterização do território de acordo com a dimensão funcional ou finalidade socioeconómica planeada, presente e futura (por exemplo, residencial, industrial, comercial, agrÃcola, silvÃcola, recreativa).</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pt">Uso do solo</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ro">Teritoriu caracterizat în funcÅ£ie de dimensiunea funcÅ£ională actuală sau viitoare planificată sau de scopul socioeconomic (de exemplu rezidenÅ£ial, industrial, comercial, agricol, forestier, de recreaÅ£ie).</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ro">Utilizarea terenului</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sk">Územie charakterizované podľa jeho súÄasného a budúceho plánovaného funkÄného rozmeru alebo socioekonomického úÄelu (napr. obytný, priemyselný, obchodný, poľnohospodársky, lesnÃcky, rekreaÄný).</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sk">Využitie územia</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sl">Ozemlje, opredeljeno glede na svojo sedanjo in v prihodnje naÄrtovano funkcionalno razsežnost ali socialnoekonomski namen (npr. stanovanjski, industrijski, trgovinski, kmetijski, gozdni, rekreacijski).</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lv">Zemes izmantoÅ¡ana</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="mt">Territorju kkaratterizzat skond id-dimensjoni funzjonali tiegħu ppjanata attwali u futura jew l-iskop soÄ‹jo-ekonomiku tiegħu (eż. residenzjali, industrijali, kummerÄ‹jali, agrikolu, forestali, rikreazzjonali).</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="mt">Użu ta' l-art</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="nl">Het grondgebied, gekenmerkt volgens zijn huidige en geplande toekomstige functionele dimensie of sociaaleconomische bestemming (bv. wonen, industrieel, commercieel, landbouw, bosbouw, recreatie).</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="nl">Landgebruik</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pl">Terytorium charakteryzowane ze wzglÄ™du na jego obecny lub przyszÅ‚y wymiar funkcjonalny lub przeznaczenie spoÅ‚eczno-gospodarcze (np. mieszkaniowe, przemysÅ‚owe, handlowe, rolnicze, leÅ›ne, wypoczynkowe).</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="hu">Földhasználat</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="it">Classificazione del territorio in base alla dimensione funzionale o alla destinazione socioeconomica presenti e programmate per il futuro (ad esempio ad uso residenziale, industriale, commerciale, agricolo, silvicolo, ricreativo).</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="hu">A jelenlegi és a jövÅ‘beli tervezett funkcionális szempontok vagy a társadalmigazdasági rendeltetés (például lakó-, ipari, kereskedelmi, mezÅ‘gazdasági, erdÅ‘- vagy pihenőövezet) szerint jellemzett területek.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lv">Teritorijas stÄvoklis, ko raksturo tÄs paÅ¡reizÄ“jÄs un nÄkotnÄ“ plÄnotÄs funkcionÄlÄs izmantoÅ¡anas dimensija vai sociÄli ekonomiskais izmantoÅ¡anas nolÅ«ks (piemÄ“ram, zeme dzÄ«vojamiem namiem, rÅ«pnieciskiem, komerciÄliem, lauksaimniecÄ«bas, mežniecÄ«bas, atpÅ«tas mÄ“rÄ·iem).</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lt">ŽemÄ—s naudojimas</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lt">Teritorija apibÅ«dinama pagal jos esamÄ… ir bÅ«simÄ… planuojamÄ… funkcinÄ™ arba socialinÄ™ ir ekonominÄ™ paskirtį (pvz., gyvenamoji, pramoninÄ—, komercinÄ—, žemÄ—s Å«kio, miÅ¡kų, rekreacinÄ—).</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="it">Utilizzo del territorio</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="et">Maakasutus</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fi">Alueen kuvaaminen sen nykyisen ja tulevan suunnitellun käyttötarkoituksen tai sosioekonomisen tarkoituksen (esimerkiksi asuin- tai teollisuusalue, liikekeskus, maa- tai metsätalousalue tai virkistysalue) mukaan.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fi">Maankäyttö</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fr">Territoire caractérisé selon sa dimension fonctionnelle prévue ou son objet socioéconomique actuel et futur (par exemple, résidentiel, industriel, commercial, agricole, forestier, récréatif).</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fr">Usage des sols</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="et">Maa-ala iseloomustus olemasolevate ja tulevaste kavandatud kasutusaspektide või sotsiaalmajandusliku sihtotstarbe järgi (nt elamu- tööstus-, äri-, põllumajandus-, metsa- või puhkemaa).</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="el">ΧÏήσεις γης</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="en">Territory characterised according to its current and future planned functional dimension or socio-economic purpose (e.g. residential, industrial, commercial, agricultural, forestry, recreational).</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="en">Land use</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="es">Caracterización del territorio, de acuerdo con su dimensión funcional o su dedicación socioeconómica actual o futura planificadas (por ejemplo, residencial, industrial, comercial, agrario, forestal, recreativo).</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="es">Uso del suelo</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="bg">ТериториÑ, определена Ñпоред наÑтоÑщите и бъдещите Ñ Ð¿Ð»Ð°Ð½Ð¸Ñ€Ð°Ð½Ð¸ функционални параметри или Ñоциално- икономичеÑко предназначение (например жилищна, промишлена, търговÑка, ÑелÑкоÑтопанÑка, горÑка, почивна).</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="bg">Ползване на земÑта</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="cs">Územà popsané podle své souÄasné a plánované funkce nebo spoleÄensko-hospodářských úÄelů (napÅ™. obytné, průmyslové, obchodnÃ, zemÄ›dÄ›lské, lesnické, rekreaÄnÃ).</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="cs">Využità územÃ</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="da">OmrÃ¥det karakteriseret ved dets nuværende og fremtidige planlagte funktion eller samfundsøkonomiske formÃ¥l (f.eks. beboelse, industri, handel, landbrug, skovbrug, rekreation).</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="da">Arealanvendelse</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="de">Beschreibung von Gebieten anhand ihrer derzeitigen und geplanten künftigen Funktion oder ihres sozioökonomischen Zwecks (z. B. Wohn-, Industrie- oder Gewerbegebiete, land- oder forstwirtschaftliche Flächen, Freizeitgebiete).</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="de">Bodennutzung</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="el">ΧαÏακτηÏισμός πεÏιοχών ανάλογα με τη σημεÏινή και τη μελλοντική σχεδιαζόμενη λειτουÏγία τους ή τον κοινωνικοοικονομικό σκοπό τους (Ï€.χ. αμιγώς οικιστική, βιομηχανική, εμποÏική, γεωÏγική, δασική, αναψυχής).</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ca">Ús del sòl</skos:prefLabel><skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ca">Caracterització del territori, d’acord amb la seva dimensió funcional o la seva dedicació socioeconòmica actual o futura planificades (per exemple, residencial, industrial, comercial, agrari, forestal, recreatiu).</skos:scopeNote></skos:Concept> +<skos:Concept rdf:about="http://rdfdata.eionet.europa.eu/inspirethemes/themes/18"> +<skos:altLabel>hh</skos:altLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sv">Människors hälsa och säkerhet</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sk">Geografická distribúcia najÄastejÅ¡Ãch ochorenà (alergie, nádorové ochorenia, ochorenia dýchacÃch ciest atÄ.), informácie o vplyve na zdravie (biologické ukazovatele, pokles plodnosti, epidémie) alebo telesný Äi duÅ¡evný stav ľudà (únava, stres atÄ.), ktoré priamo (zneÄistenie ovzduÅ¡ia, chemikálie, oslabenie ozónovej vrstvy, hluk atÄ.) alebo nepriamo (strava, geneticky upravené organizmy atÄ.) súvisia s kvalitou životného prostredia.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sl">Zdravje in varnost prebivalstva</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sv">Geografisk fördelning av dominansen av patologier (allergier, cancer, sjukdomar i andningsorganen osv.), all information om de effekter pÃ¥ människors hälsa (biomarkörer, minskad fertilitet, epidemier osv.) eller välbefinnande (trötthet, stress osv.) som har ett direkt (luftföroreningar, kemikalier, uttunning av ozonskiktet, buller osv.) eller ett indirekt (livsmedel, genetiskt modifierade organismer osv.) samband med miljöns kvalitet.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sk">Ľudské zdravie a bezpeÄnosÅ¥</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sl">Geografska razporeditev pogostih patoloÅ¡kih pojavov (alergije, rakasta obolenja, obolenja dihalnih poti itd.), podatki o uÄinkih na zdravje (bioloÅ¡ki oznaÄevalci, zmanjÅ¡ana rodnost, epidemije) ali poÄutje ljudi (utrujenost, stres itd.), povezanih neposredno (onesnaženost zraka, kemikalije, tanjÅ¡anje ozonskega plaÅ¡Äa, hrup itd.) ali posredno (hrana, genetsko spremenjeni organizmi itd.) s kakovostjo okolja.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pl">Rozmieszczenie geograficzne wystÄ™powania patologii chorobowych (alergii, nowotworów, chorób ukÅ‚adu oddechowego itd.), informacje dotyczÄ…ce wpÅ‚ywu na zdrowie (biomarkery, spadek pÅ‚odnoÅ›ci, epidemie) lub dobre samopoczucie ludzi (zmÄ™czenie, stres itd.) zwiÄ…zane bezpoÅ›rednio (zanieczyszczenie powietrza, chemikalia, zubożenie warstwy ozonowej, haÅ‚as itd.) lub poÅ›rednio (pożywienie, organizmy zmodyfikowane genetycznie itd.) z jakoÅ›ciÄ… Å›rodowiska.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pl">Zdrowie i bezpieczeÅ„stwo ludzi</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pt">Distribuição geográfica da dominância de patologias (alergias, cancros, doenças respiratórias, etc.), informações que indiquem o efeito da qualidade do ambiente sobre a saúde (biomarcadores, declÃnio da fertilidade, epidemias) ou sobre o bem-estar dos seres humanos (fadiga, tensão, stress, etc.) de forma directa (poluição do ar, produtos quÃmicos, empobrecimento da camada de ozono, ruÃdo, etc.) ou indirecta (alimentação, organismos geneticamente modificados, etc.).</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ro">Sănătate ÅŸi siguranţă umană</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pt">Saúde humana e segurança</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ro">DistribuÅ£ia geografică a patologiilor dominante (alergii, tipuri de cancer, boli respiratorii etc.), precum ÅŸi informaÅ£iile care indică efectul asupra sănătăţii (indicatorii biologici, scăderea fertilităţii, epidemiile) sau asupra bunăstării oamenilor (oboseala, stresul etc.), legat în mod direct (poluarea aerului, substanÅ£ele chimice, subÅ£ierea stratului de ozon, zgomotul etc.) sau indirect (mâncarea, organismele modificate genetic etc.) de calitatea mediului.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lt">Žmonių sveikata ir sauga</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lv">DominÄ“joÅ¡o patoloÄ£iju (alerÄ£iju, vēža, elpoÅ¡anas ceļu slimÄ«bu, utt.) Ä£eogrÄfiskÄ izplatÄ«ba, informÄcija, kas norÄda uz ietekmi uz veselÄ«bu (biomarkeri, auglÄ«bas mazinÄÅ¡ana, epidÄ“mijas) vai cilvÄ“ku labklÄjÄ«bu (nogurumu, stresu, utt.), kas tieÅ¡i (gaisa piesÄrņojums, Ä·Ä«miskÄs vielas, ozona slÄņa noplicinÄÅ¡anÄs, trokšņi, utt.) vai netieÅ¡i (pÄrtika, Ä£enÄ“tiski modificÄ“ti organismi, utt.) saistÄ«ta ar vides kvalitÄti.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lv">CilvÄ“ku veselÄ«ba un drošība</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="mt">Distribuzzjoni Ä¡eografika tad-dominanza ta' patoloÄ¡iji (allerÄ¡iji, kankri, mard respiratorju, eċċ.), informazzjoni li tindika l-effett fuq is-saħħa (bijomarkaturi, tnaqqis fil-fertilità , epidemiji) jew il-benesseri tal-bnedmin (għejja, stress, eċċ.) b'konnessjoni diretta (tniġġis ta' l-arja, kimiki, tnaqqis tas-saff ta' l-ożonu, storbju, eċċ.) jew indiretta (ikel, organiżmi Ä¡enetikament modifikati, eċċ.) mal-kwalità ta' l-ambjent.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="mt">Is-saħħa u s-siÄ¡urtà tal-bniedem</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="nl">De geografische spreiding van ziekten (allergieën, kankers, ademhalingsziekten, enz.), informatie over de gevolgen voor de gezondheid (biomarkers, vruchtbaarheidsdaling, epidemieën) of het welzijn van de mens (vermoeidheid, stress, enz.) die direct (luchtvervuiling, chemicaliën, aantasting van de ozonlaag, lawaai, enz.) of indirect (voedsel, genetisch gemodificeerde organismen, enz.) samenhangen met de kwaliteit van het milieu.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="nl">Menselijke gezondheid en veiligheid</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="it">Salute umana e sicurezza</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lt">Patologijų dominavimo geografinis pasiskirstymas (alergijos, vėžys, kvÄ—pavimo takų ligos ir t. t.), informacija apie poveikį žmonių sveikatai (biomarkeriai, vaisingumo sumažėjimas, epidemijos) ar gerovei (nuovargis, stresas ir t. t.), tiesiogiai (oro tarÅ¡a, cheminÄ—s medžiagos, ozono sluoksnio retÄ—jimas, triukÅ¡mas ir t. t.) arba netiesiogiai (maistas, genetiÅ¡kai modifikuoti organizmai ir t. t.) susijusi su aplinkos kokybe.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="it">Distribuzione geografica della prevalenza di patologie (allergie, tumori, malattie respiratorie, ecc.), le informazioni contenenti indicazioni sugli effetti relativi alla salute (indicatori biologici, riduzione della fertilità e epidemie) o al benessere degli esseri umani (affaticamento, stress, ecc.) in relazione alla qualità dell’ambiente, sia in via diretta (inquinamento atmosferico, sostanze chimiche, riduzione dello strato di ozono, rumore, ecc.) che indiretta (alimentazione, organismi geneticamente modificati, ecc.).</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="hu">Emberi egészség és biztonság</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="hu">A környezet minÅ‘ségéhez közvetlenül (légszennyezés, vegyszerek, az ózonréteg elvékonyodása, zaj stb.) vagy közvetve (élelmiszer, genetikailag módosÃtott szervezetek stb.) kapcsolódó patológiák (allergiás, daganatos és légúti megbetegedések stb.) dominanciájának földrajzi eloszlása, illetve ezen tényezÅ‘knek az emberi egészségre (biomarkerek, termékenységcsökkenés, járványok) vagy jólétre (fáradtság, stressz stb.) gyakorolt hatását jellemzÅ‘ információ.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fr">Répartition géographique des pathologies dominantes (allergies, cancers, maladies respiratoires, etc.) liées directement (pollution de l'air, produits chimiques, appauvrissement de la couche d'ozone, bruit, etc.) ou indirectement (alimentation, organismes génétiquement modifiés, etc.) à la qualité de l'environnement, et ensemble des informations relatif à l'effet de celle-ci sur la santé des hommes (marqueurs biologiques, déclin de la fertilité, épidémies) ou leur bienêtre (fatigue, stress, etc.).</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fr">Santé et sécurité des personnes</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fi">Väestön terveys ja turvallisuus</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="es">Salud y seguridad humanas</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="et">Haiguste (allergiad, vähk, hingamisteede haigused jne) domineerimise geograafiline jaotumine, keskkonna kvaliteediga otseselt (õhusaaste, kemikaalid, osoonikihi kahanemine, müra jne) või kaudselt (toit, geneetiliselt muundatud organismid jne) seotud mõjusid inimeste tervisele (biomarkerid, viljatushaiguste sagenemine, epideemiad) või heaolule (väsimus, stress jne) puudutav teave.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="et">Inimeste tervis ja ohutus</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fi">Ympäristön laatuun välittömästi (esimerkiksi ilman pilaantuminen, kemikaalit, otsonikerroksen oheneminen, melu) tai välillisesti (esimerkiksi elintarvikkeet, muuntogeeniset organismit) yhteydessä olevien sairauksien (esimerkiksi allergiat, syövät, hengityselinsairaudet) maantieteellinen esiintyminen, tiedot, jotka osoittavat vaikutuksen terveyteen (esimerkiksi biologiset merkkiaineet, hedelmällisyyden väheneminen, epidemiat) tai ihmisten hyvinvointiin (esimerkiksi väsymys, stressi).</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="da">Sikkerhed</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="de">Geografische Verteilung verstärkt auftretender pathologischer Befunde (Allergien, Krebserkrankungen, Erkrankungen der Atemwege usw.), Informationen über Auswirkungen auf die Gesundheit (Biomarker, Rückgang der Fruchtbarkeit, Epidemien) oder auf das Wohlbefinden (Ermüdung, Stress usw.) der Menschen in unmittelbarem Zusammenhang mit der Umweltqualität (Luftverschmutzung, Chemikalien, Abbau der Ozonschicht, Lärm usw.) oder in mittelbarem Zusammenhang mit der Umweltqualität (Nahrung, genetisch veränderte Organismen usw.).</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="de">Gesundheit und Sicherheit</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="el">ΓεωγÏαφική κατανομή της κυÏιαÏχίας παθολογιών (αλλεÏγίες, καÏκίνοι, αναπνευστικÎÏ‚ ασθÎνειες, κ.λπ.), πληÏοφοÏίες που καταδεικνÏουν τις επιπτώσεις στην υγεία (βιοδείκτες, πτώση της γονιμότητας, επιδημίες) ή την ευεξία των ανθÏώπων (κοÏÏαση, υπεÏÎνταση, κ.λπ.) που συνδÎονται άμεσα (ατμοσφαιÏική ÏÏπανση, χημικÎÏ‚ ουσίες, καταστÏοφή της στιβάδας του όζοντος, θόÏυβος, κ.λπ.) ή Îμμεσα (Ï„Ïόφιμα, γενετικώς Ï„ÏοποποιημÎνοι οÏγανισμοί, κ.λπ.) με την ποιότητα του πεÏιβάλλοντος.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="el">ΑνθÏώπινη υγεία και ασφάλεια</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="en">Geographical distribution of dominance of pathologies (allergies, cancers, respiratory diseases, etc.), information indicating the effect on health (biomarkers, decline of fertility, epidemics) or well-being of humans (fatigue, stress, etc.) linked directly (air pollution, chemicals, depletion of the ozone layer, noise, etc.) or indirectly (food, genetically modified organisms, etc.) to the quality of the environment.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="bg">Здраве и безопаÑноÑÑ‚ на човека</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="cs">ZemÄ›pisné rozloženà pÅ™evládajÃcÃho výskytu patologických stavů (alergiÃ, rakovin, nemocà dýchacÃho ústrojà atd.), informace o dopadu na zdravà (biomarkery, pokles plodnosti, epidemie) nebo životnà podmÃnky (únava, stres atd.) souvisejÃcà pÅ™Ãmo (zneÄiÅ¡tÄ›nà ovzduÅ¡Ã, chemikálie, ztenÄovánà ozonové vrstvy, hluk atd.) nebo nepÅ™Ãmo (potraviny, geneticky modifikované organismy atd.) s kvalitou životnÃho prostÅ™edÃ.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="cs">Lidské zdravà a bezpeÄnost</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="da">og sundhed Geografisk fordeling af dominansen af patologier (allergier, kræft, luftvejssygdomme, osv.), oplysninger om indvirkningen pÃ¥ menneskers sundhed (biologiske markører, nedsat frugtbarhed, epidemier) eller trivsel (træthed, stress, osv.), der er direkte (luftforurening, kemikalier, udtynding af ozonlaget, støj, osv.) eller indirekte (fødevarer, genmodificerede organismer, osv.) knyttet til miljøkvaliteten.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="en">Human health and safety</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="es">Distribución geográfica de la dominancia de patologÃas (alergias, cáncer, enfermedades respiratorias, etc.), la información que indique el efecto sobre la salud (marcadores biológicos, declive de la fertilidad, epidemias) o el bienestar humanos (cansancio, estrés, etc.) directamente vinculada con la calidad del medio ambiente (contaminación del aire, productos quÃmicos, enrarecimiento de la capa de ozono, ruido, etc.) o indirectamente vinculada con dicha calidad (alimentos, organismos modificados genéticamente, etc.).</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="bg">ГеографÑко разпределение на преобладаващите патологии (алергии, рак, болеÑти на дихателните пътища и др.), Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° въздейÑтвието върху човешкото здраве (биомаркери, намалÑване на раждаемоÑтта, епидемии) или за физичеÑкото ÑÑŠÑтоÑние на човека (умора, ÑÑ‚Ñ€ÐµÑ Ð¸ други), прÑко Ñвързани (замърÑÑване на въздуха, химикали, изтънÑване на Ð¾Ð·Ð¾Ð½Ð¾Ð²Ð¸Ñ Ñлой, шум и др.) или непрÑко Ñвързани (храна, генетично модифицирани организми и други) Ñ ÐºÐ°Ñ‡ÐµÑтвото на околната Ñреда.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ca">Salut i seguretat humanes</skos:prefLabel><skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ca">Distribució geogrà fica de la dominà ncia de patologies (al·lèrgies, cà ncer, malalties respiratòries, etc.), de la informació que indiqui l’efecte sobre la salut (marcadors biològics, davallada de la fertilitat, epidèmies) o el benestar humans (cansament, estrès, etc.), directament vinculada amb la qualitat del medi ambient (contaminació de l’aire, productes quÃmics, enrariment de la capa d’ozó, soroll, etc.) o indirectament vinculada amb aquesta qualitat (aliments, organismes modificats genèticament, etc.).</skos:scopeNote></skos:Concept> +<skos:Concept rdf:about="http://rdfdata.eionet.europa.eu/inspirethemes/themes/19"> +<skos:altLabel>us</skos:altLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sv">Allmännyttiga och offentliga tjänster</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sl">Komunalne in javne storitve</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sv">Inbegriper anläggningar för allmännyttiga tjänster, exempelvis för hantering av avloppsvatten, avfallshantering, energiförsörjning och vattenförsörjning, administrativa och sociala offentliga tjänster sÃ¥som offentliga förvaltningar, räddningstjänstens anläggningar, skolor och sjukhus.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ro">Includ instalaÅ£iile de utilitate publică, precum sistemele de canalizare, de gestionare a deÅŸeurilor, de aprovizionare cu energie electrică ÅŸi apă, ÅŸi serviciile administrative ÅŸi sociale publice, precum adăposturile de protecÅ£ie civilă, ÅŸcolile ÅŸi spitalele.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ro">Servicii de utilitate publică ÅŸi servicii publice</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sk">Patria sem verejné zariadenia, ako naprÃklad kanalizácia, nakladanie s odpadom, dodávka energie a dodávka vody, administratÃvne a sociálne Å¡tátne služby, ako naprÃklad verejná správa, miesta civilnej ochrany, Å¡koly a nemocnice.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sk">Verejné a Å¡tátne služby</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sl">VkljuÄuje komunalne naprave kot so kanalizacija, ravnanje z odpadki, oskrba z energijo in preskrba z vodo, upravne in socialne vladne službe kot so javne uprave, sedeži civilne zaÅ¡Äite, Å¡ole in bolniÅ¡nice.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pl">UsÅ‚ugi użytecznoÅ›ci publicznej i sÅ‚użby paÅ„stwowe</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pt">Inclui instalações e serviços de utilidade pública, como redes de esgotos, gestão de resÃduos, fornecimento de energia, abastecimento de água, serviços administrativos e sociais do Estado tais como administrações públicas, instalações da protecção civil, escolas e hospitais.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pt">Serviços de utilidade pública e do Estado</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="nl">Nutsdiensten en overheidsdiensten</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pl">Obejmuje instalacje użytecznoÅ›ci publicznej takie jak: kanalizacja, zarzÄ…dzanie odpadami, dostawa energii i dostawa wody, administracyjne i spoÅ‚eczne sÅ‚użby paÅ„stwowe lub samorzÄ…dowe, takie jak: administracja publiczna, obiekty ochrony cywilnej, szkoÅ‚y i szpitale.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lt">KomunalinÄ—s įmonÄ—s ir valstybÄ—s tarnybos</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lv">Tas ietver tÄdu komunÄlo dienestu iekÄrtas kÄ kanalizÄcija, atkritumu apsaimniekoÅ¡ana, energoapgÄde un Å«dens apgÄde, administratÄ«vos un sociÄlos valsts dienestus, piemÄ“ram, valsts administrÄciju, civilÄs aizsardzÄ«bas novietnes, skolas un slimnÄ«cas.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="mt">Servizzi ta' utilità u tal-gvern</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="nl">Nutsvoorzieningen zoals riolering, afvalbeheer, energievoorziening, watervoorziening, bestuurlijke en maatschappelijke instanties van de overheid, zoals bestuurlijke overheden, civiele bescherming, scholen en ziekenhuizen.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="mt">Jinkludu faÄ‹ilitajiet ta' utilità bħad-drenaġġ, l-immaniġġar ta' l-iskart, il-provvista ta' l-enerÄ¡ija, il-provvista ta' l-ilma, isservizzi amministrattivi u soÄ‹jali tal-gvern bħal amministrazzjonijiet pubbliÄ‹i, siti għall-protezzjoni Ä‹ivili, skejjel u sptarijiet.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lv">KomunÄlie un valsts dienesti</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="it">Servizi di pubblica utilità e servizi amministrativi</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lt">Tai apima komunalinių įmonių infrastruktÅ«rÄ…, pavyzdžiui, kanalizacijÄ…, atliekų tvarkymÄ…, elektros energijos tiekimÄ… ir vandens tiekimÄ…, administracines ir socialines valstybÄ—s tarnybas, pavyzdžiui, vieÅ¡ojo administravimo įstaigas, civilinÄ—s saugos tarnybas, mokyklas ir ligonines.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fr">Services d'utilité publique et services publics</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="hu">Magában foglalja az olyan közüzemi létesÃtményeket, mint például a szennyvÃz- és hulladékgazdálkodás, az energiaellátás és a vÃzellátás, valamint az igazgatási és szociális közszolgáltatásokat, például a közigazgatási szerveket, a polgári védelmi létesÃtményeket, iskolákat és kórházakat.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="hu">Közüzemi és közszolgáltatások</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="it">Sono compresi sia impianti quali gli impianti fognari, di gestione dei rifiuti, di fornitura energetica, e di distribuzione idrica, sia servizi pubblici amministrativi e sociali quali le amministrazioni pubbliche, i siti della protezione civile, le scuole e gli ospedali.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fi">Yleishyödylliset ja muut julkiset palvelut</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fr">Comprend les installations d'utilité publique, tels que les égouts ou les réseaux et installations liés à la gestion des déchets, à l'approvisionnement énergétique, à l'approvisionnement en eau, ainsi que les services administratifs et sociaux publics, tels que les administrations publiques, les sites de la protection civile, les écoles et les hôpitaux.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="en">Utility and governmental services</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="es">Incluye instalaciones de utilidad pública de alcantarillado, gestión de residuos, suministro de energÃa y suministro de agua, asà como servicios estatales administrativos y sociales tales como administraciones públicas, sitios de protección civil, escuelas y hospitales.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="es">Servicios de utilidad pública y estatales</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="en">Includes utility facilities such as sewage, waste management, energy supply and water supply, administrative and social governmental services such as public administrations, civil protection sites, schools and hospitals.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="et">Kommunaal- ja riiklikud teenused</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fi">Tämä käsittää yleishyödyllisten palvelujen laitokset, kuten viemäröinnin, jätehuollon, energiahuollon ja vesihuollon, sekä hallinnolliset ja sosiaaliset julkiset palvelut, kuten viranomaiset, väestönsuojat, koulut ja sairaalat.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="et">Hõlmab tehnorajatisi nagu näiteks reovee ja jäätmete käitluse, energia- ja veevarustuse võrgud ja rajatised ning riiklikke haldus- ja sotsiaalteenuseid nagu riiklikud haldusorganid, kodanikukaitse alad, koolid ja haiglad.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="da">Omfatter forsyningsvirksomhed sÃ¥ som kloakering, affaldshÃ¥ndtering, energiforsyning og vandforsyning, administrative og sociale offentlige tjenester som f.eks. offentlige administrationer, civilbeskyttelsesanlæg, skoler og hospitaler.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="da">Offentlig forsyningsvirksomhed og offentlige tjenesteydelser</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="de">Versorgungseinrichtungen wie Abwasser- und Abfallentsorgung, Energieversorgung und Wasserversorgung; staatliche Verwaltungs- und Sozialdienste wie öffentliche Verwaltung, Katastrophenschutz, Schulen und Krankenhäuser.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="de">Versorgungswirtschaft und staatliche Dienste</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="el">ΠεÏιλαμβάνονται εγκαταστάσεις υπηÏεσιών κοινής ωφελείας, όπως η αποχÎτευση, η διαχείÏιση αποβλήτων, ο ενεÏγειακός εφοδιασμός και η υδÏοδότηση, οι διοικητικÎÏ‚ και κοινωνικÎÏ‚ κÏατικÎÏ‚ υπηÏεσίες, όπως οι δημόσιες διοικήσεις, οι χώÏοι πολιτικής Ï€Ïοστασίας, τα σχολεία και τα νοσοκομεία.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="bg">Включват инфраÑтруктура за комунално-битови уÑлуги, например напоителни ÑиÑтеми, управление на отпадъците, електроÑнабдÑване и водоÑнабдÑване, админиÑтративни и Ñоциални общеÑтвени уÑлуги, например публични админиÑтрации, обекти на гражданÑката защита, училища и болници.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="bg">Комунално-битови и общеÑтвени уÑлуги</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="el">ΕπιχειÏήσεις κοινής ωφελείας και κÏατικÎÏ‚ υπηÏεσίες</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="cs">VeÅ™ejné služby a služby veÅ™ejné správy</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="cs">Zahrnujà zaÅ™ÃzenÃ, jako napÅ™Ãklad kanalizace, nakládánà s odpady, zásobovánà energià a zásobovánà vodou, správnà a sociálnà státnà služby, jako napÅ™Ãklad veÅ™ejnou správu, zaÅ™Ãzenà civilnà ochrany, Å¡koly a nemocnice.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ca">Serveis d'utilitat pública i estatals</skos:prefLabel><skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ca">Inclou instal·lacions d’utilitat pública de clavegueram, gestió de residus, subministrament d’energia i subministrament d’aigua, aixà com serveis estatals administratius i socials tals com administracions públiques, llocs de protecció civil, escoles i hospitals.</skos:scopeNote></skos:Concept> +<skos:Concept rdf:about="http://rdfdata.eionet.europa.eu/inspirethemes/themes/2"> +<skos:altLabel>gg</skos:altLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sl">Geografska koordinatna mreža</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sv">Harmoniserade rutnät med flera upplösningar, gemensam utgÃ¥ngspunkt och standardiserad placering och storlek pÃ¥ rutorna.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sv">Geografiska rutnätssystem</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ro">Sisteme de caroiaj geografic</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sk">Harmonizovaná sieÅ¥ s viacúrovňovým rozlÃÅ¡enÃm so spoloÄným poÄiatoÄným bodom a Å¡tandardizovanou polohou a veľkosÅ¥ou buniek siete.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sk">Geografické systémy sietÃ</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sl">Usklajena veÄloÄljivostna mreža s skupno toÄko izvora in standardizirano lokacijo ter velikostjo mrežnih celic.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pl">Systemy siatek geograficznych</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pt">QuadrÃcula harmonizada multi-resolução com um ponto de origem comum e localização e dimensão normalizadas das células.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pt">Sistemas de quadrÃculas geográficas</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ro">Caroiaj multirezoluÅ£ie armonizat, având un punct de origine comun, precum ÅŸi localizare ÅŸi mărime standardizate ale celulelor.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="mt">Sistemi ta' grilji Ä¡eografiÄ‹i</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="nl">Geharmoniseerde multiresolutieraster met een gemeenschappelijk beginpunt en gestandaardiseerde plaats en grootte van de gridcellen.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="nl">Geografisch rastersysteem</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pl">Zharmonizowana wielorozdzielcza siatka o wspólnym punkcie poczÄ…tkowym i znormalizowanym poÅ‚ożeniu oraz wielkoÅ›ci pól siatki.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lv">Ä¢eogrÄfisko koordinÄtu tÄ«klu sistÄ“mas</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="mt">Grilja multi-risoluzzjoni armonizzata b'punt ta' oriÄ¡ini komuni u pożizzjoni u daqs taÄ‹-Ä‹elluli tal-grilja standardizzati.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lt">Geografinio tinklelio sistemos</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lv">Saskaņots daudzpakÄpju izšķirÅ¡anas koordinÄtu tÄ«kls ar kopÄ“ju sÄkumpunktu un standartizÄ“tu tÄ«kla šūnu atraÅ¡anÄs vietu un izmÄ“ru.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lt">Suderintas kintamos skiriamosios gebos tinklelis su bendru atskaitos taÅ¡ku ir standartizuota tinklelio langelių lokacija bei dydžiu.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="it">Griglia multi-risoluzione armonizzata con un punto di origine comune e un posizionamento e una dimensione standard delle celle.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="it">Sistemi di griglie geografiche</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fr">Systèmes de maillage géographique</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="hu">Harmonizált több felbontású rács közös kiindulóponttal és egységesÃtett rácscella-helymeghatározással és -mérettel.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="hu">Földrajzi rácsrendszerek</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fi">Yhdenmukaistettu monitasoinen ruudukko, jossa on yhteinen lähtöpiste ja standardoitu yksittäisen ruudun sijainti ja koko.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fi">Paikannusruudustot</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fr">Grille multi-résolution harmonisée avec un point d'origine commun et une localisation ainsi qu'une taille des cellules harmonisées.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="en">Geographical grid systems</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="es">CuadrÃculas armonizadas multirresolución con un punto de origen común y con ubicación y tamaños de cuadrÃcula normalizados.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="es">Sistema de cuadrÃculas geográficas</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="et">Ühtlustatud, ühise lähtepunktiga ning võrguruutude standardse paigutuse ja suurusega mitmetasandiline ruutvõrk.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="et">Geograafilised ruutvõrgud</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="el">Συστήματα γεωγÏÎ±Ï†Î¹ÎºÎ¿Ï ÎºÎ±Î½Î½Î¬Î²Î¿Ï…</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="en">Harmonised multi-resolution grid with a common point of origin and standardised location and size of grid cells.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="da">Et harmoniseret kvadratnet med flere cellestørrelser samt fælles nulpunkt og standardiseret cellelokalisering og -størrelse.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="da">Geografiske kvadratnetsystemer</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="de">Harmonisiertes Gittersystem mit Mehrfachauflösung, gemeinsamem Ursprungspunkt und standardisierter Lokalisierung und Größe der Gitterzellen.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="de">Geografische Gittersysteme</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="el">ΕναÏμονισμÎνος κάνναβος πολλαπλής ανάλυσης με ενιαίο σημείο αφετηÏίας και τυποποιημÎνη θÎση και μÎγεθος των φατνίων του καννάβου.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="bg">ГеографÑки координатни ÑиÑтеми</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="cs">ZemÄ›pisné soustavy souÅ™adnicových sÃtÃ</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="cs">Harmonizovaná souÅ™adnicová sÃÅ¥ s vÃceúrovňovým rozliÅ¡enÃm, normalizovanou polohou a velikostà bunÄ›k souÅ™adnicové sÃtÄ›, a spoleÄným vztažným bodem.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="bg">Хармонизирана Ñложна координатна ÑиÑтема Ñ Ð¾Ð±Ñ‰Ð° начална точка и Ñтандартизирано разположение и размер на квадрантите на координатната ÑиÑтема.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ca">Sistema de quadrÃcules geogrà fiques</skos:prefLabel><skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ca">QuadrÃcules harmonitzades multiresolució amb un punt d’origen comú i amb ubicació i grandà ria de quadrÃcula normalitzats.</skos:scopeNote></skos:Concept> +<skos:Concept rdf:about="http://rdfdata.eionet.europa.eu/inspirethemes/themes/20"> +<skos:altLabel>ef</skos:altLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sv">Anläggningar för miljöövervakning</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sl">Naprave in objekti za monitoring okolja</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sv">Placering och användning av anläggningar för miljöövervakning inbegriper iakttagelse och mätning av utsläpp, av situationen när det gäller miljömedier och av andra parametrar för ekosystemet (biologisk mÃ¥ngfald, ekologiska villkor för växtligheten etc.) som genomförs av offentliga myndigheter eller för deras räkning.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sl">Nahajanje in delovanje naprav in objektov za spremljanje okolja vkljuÄuje opazovanje in merjenje emisij, stanja okolja in drugih parametrov ekosistema (bioloÅ¡ka raznolikost, ekoloÅ¡ki pogoji vegetacije itd.) s strani javnih organov ali v njihovem imenu.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sk">Poloha a prevádzka zariadenà na monitorovanie životného prostredia zahŕňa pozorovanie a meranie emisiÃ, stavu zložiek životného prostredia a iných parametrov ekosystému (biodiverzity, ekologických podmienok vegetácie, atÄ.) vykonávané orgánmi verejnej moci alebo v ich mene.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sk">Zariadenia na monitorovanie životného prostredia</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pt">Instalações de monitorização do ambiente</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ro">Amplasarea ÅŸi exploatarea instalaÅ£iilor de supraveghere a mediului implică observarea ÅŸi măsurarea emisiilor, a stării mediului înconjurător ÅŸi a altor parametri ai ecosistemului (biodiversitate, condiÅ£ii ecologice ale vegetaÅ£iei etc.) de către sau în numele autorităţilor publice.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="nl">Milieubewakingsvoorzieningen</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pl">Lokalizacja i funkcjonowanie urzÄ…dzeÅ„ do monitorowania Å›rodowiska obejmujÄ… obserwacjÄ™ i pomiary emisji, stanu zasobów Å›rodowiska i innych parametrów ekosystemu (różnorodnoÅ›ci biologicznej, warunków ekologicznych wegetacji itd.) przez organy publiczne lub w ich imieniu.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pl">UrzÄ…dzenia do monitorowania Å›rodowiska</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pt">A localização e funcionamento de instalações de monitorização do ambiente inclui a observação e medição de emissões, do estado das diferentes componentes ambientais e de outros parâmetros dos ecossistemas (biodiversidade, condições ecológicas da vegetação, etc.) pelas autoridades públicas ou por conta destas.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ro">InstalaÅ£ii de supraveghere a mediului</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="mt">FaÄ‹ilitajiet ta' monitoraġġ ambjentali</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="nl">Locatie en werking van milieubewakingsvoorzieningen, met inbegrip van waarneming en meting van emissies, de staat van de milieucompartimenten en van andere ecosysteemparameters (biodiversiteit, ecologische omstandigheden van vegetatie, enz.) door of namens de overheidsinstanties.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="mt">Posizzjoni u operazzjoni ta' faÄ‹ilitajiet ta' monitoraġġ ambjentali jinkludi l-osservazzjoni u l-kejl ta' emissjonijiet, ta' listat tal-medji ambjentali u ta' parametri oħra ta' l-ekosistema (biodiversità , kondizzjonijiet ekoloÄ¡iÄ‹i ta' veÄ¡etazzjoni, eċċ.) permezz jew f'isem l-awtoritajiet pubbliÄ‹i.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lt">Aplinkos stebÄ—senos priemonÄ—s</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lv">Vides monitoringa iekÄrtu atraÅ¡anÄs vietas un pÄrvaldÄ«ba, kas ietver emisiju, apkÄrtÄ“jÄs vides stÄvokļa un citu ekosistÄ“mas parametru (bioloÄ£iskÄs daudzveidÄ«bas, veÄ£etÄcijas ekoloÄ£isko apstÄkļu, utt.) novÄ“roÅ¡anu un mÄ“rīšanu, ko veic publiskÄs iestÄdes vai publisko iestÄžu vÄrdÄ.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lv">Vides monitoringa iekÄrtas</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="hu">Környezetvédelmi monitoringlétesÃtmények</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="it">L'ubicazione e il funzionamento degli impianti di monitoraggio ambientale comprendono l'osservazione e la misurazione delle emissioni, dello stato dei comparti ambientali e di altri parametri dell'ecosistema (biodiversità , condizioni ecologiche della vegetazione, ecc.) da parte o per conto delle autorità pubbliche.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="it">Impianti di monitoraggio ambientale</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lt">Aplinkos stebÄ—senos priemonių vieta ir veikla, įskaitant valdžios institucijų arba jų vardu atliekamÄ… iÅ¡metamų terÅ¡alų, aplinkos terpių bÅ«klÄ—s ir kitų ekosistemos parametrų (biologinÄ—s įvairovÄ—s, ekologinių augalijos sÄ…lygų ir t. t.) stebÄ—jimÄ… ir matavimÄ….</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="hu">A környezetvédelmi monitoringlétesÃtmények elhelyezkedése és működése magában foglalja a kibocsátásnak, a környezeti elemek állapotának, valamint az ökoszisztéma egyéb paramétereinek (biodiverzitás, a növényzet ökológiai állapota stb.) a hatóságok általi vagy a nevükben történÅ‘ megfigyelését és mérését.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fr">Installations de suivi environnemental</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="et">Keskkonnaseirerajatiste asukoht ja kasutamine hõlmab heidete, keskkonnaelementide seisundi ja muude ökosüsteemi parameetrite (bioloogilise mitmekesisuse, taimkatte ökoloogiliste tingimuste jne) vaatlust ja mõõtmist avaliku võimu kandjate poolt või nende nimel.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="et">Keskkonnaseirerajatised</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fi">Ympäristön tilan seurantalaitteiden sijaintiin ja käyttöön kuuluu päästöjen, ilman, maaperän ja veden tilan ja muiden ekosysteemin muuttujien (luonnon monimuotoisuus, kasviston ekologiset olot jne.) seuranta ja mittaukset, joista vastaavat viranomaiset tai muut toimijat viranomaisten puolesta.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fi">Ympäristön tilan seurantalaitteet</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fr">La situation et le fonctionnement des installations de suivi environnemental comprennent l'observation et la mesure des émissions, de l'état du milieu environnemental et d'autres paramètres de l'écosystème (biodiversité, conditions écologiques de la végétation, etc.) par les autorités publiques ou pour leur compte.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="en">Location and operation of environmental monitoring facilities includes observation and measurement of emissions, of the state of environmental media and of other ecosystem parameters (biodiversity, ecological conditions of vegetation, etc.) by or on behalf of public authorities.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="es">Instalaciones de observación del medio ambiente</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="es">La ubicación y funcionamiento de instalaciones de observación del medio ambiente, encargadas de observar y medir emisiones, el estado del medio ambiente y otros parámetros del ecosistema (biodiversidad, condiciones ecológicas de la vegetación, etc.), por parte de las autoridades públicas o en nombre de ellas.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="en">Environmental monitoring facilities</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="el">Εγκαταστάσεις παÏακολοÏθησης του πεÏιβάλλοντος</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="da">MiljøovervÃ¥gningsfaciliteter</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="de">Standort und Betrieb von Umweltüberwachungseinrichtungen einschließlich Beobachtung und Messung von Schadstoffen, des Zustands von Umweltmedien und anderen Parametern des Ökosystems (Artenvielfalt, ökologischer Zustand der Vegetation usw.) durch oder im Auftrag von öffentlichen Behörden.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="de">Umweltüberwachung</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="el">Η τοποθεσία και η λειτουÏγία των εγκαταστάσεων παÏακολοÏθησης του πεÏιβάλλοντος πεÏιλαμβάνει την παÏατήÏηση και τη μÎÏ„Ïηση των εκπομπών, της κατάστασης των στοιχείων του πεÏιβάλλοντος και άλλων παÏαμÎÏ„Ïων του οικοσυστήματος (βιοποικιλότητα, οικολογική κατάσταση της βλάστησης, κ.λπ.) από τις δημόσιες αÏχÎÏ‚ ή για λογαÏιασμό τους.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="da">Lokalisering og drift af miljøovervÃ¥gningsfaciliteter omfatter observation og mÃ¥ling af emissioner, af miljøelementernes tilstand og af andre økosystemparametre (biodiversitet, plantevækstens økologiske betingelser, osv.) foretaget af eller pÃ¥ vegne af offentlige myndigheder.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="cs">ZaÅ™Ãzenà pro sledovánà životnÃho prostÅ™edÃ</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="bg">МеÑтонахождението и дейÑтвието на ÑÑŠÐ¾Ñ€ÑŠÐ¶ÐµÐ½Ð¸Ñ Ð·Ð° мониторинг на околната Ñреда включват наблюдение и измерване на емиÑиите, на ÑÑŠÑтоÑнието на факторите на околната Ñреда и на други параметри на екоÑиÑтемата (биологично разнообразие, екологични уÑÐ»Ð¾Ð²Ð¸Ñ Ð½Ð° флората и други), извършвани от публичните влаÑти или от Ñ‚Ñхно име.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="bg">Ð¡ÑŠÐ¾Ñ€ÑŠÐ¶ÐµÐ½Ð¸Ñ Ð·Ð° управление на околната Ñреда</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="cs">RozmÃstÄ›nà a provoz zaÅ™Ãzenà pro sledovánà životnÃho prostÅ™edà zahrnuje pozorovánà a měřenà emisÃ, stavu složek životnÃho prostÅ™edà a dalÅ¡Ãch ukazatelů ekosystému (druhové rozmanitosti, ekologických podmÃnek rostlinstva atd.) orgány veÅ™ejné správy nebo jejich jménem.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ca">Instal·lacions d'observació del medi ambient</skos:prefLabel><skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ca">Ubicació i funcionament d’instal·lacions d’observació del medi ambient, encarregades d’observar i mesurar emissions, l’estat del medi ambient i altres parà metres de l’ecosistema (biodiversitat, condicions ecològiques de la vegetació, etc.) per part de les autoritats públiques o en nom d’aquestes.</skos:scopeNote></skos:Concept> +<skos:Concept rdf:about="http://rdfdata.eionet.europa.eu/inspirethemes/themes/21"> +<skos:altLabel>pf</skos:altLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sv">Industriella produktionsställen, inbegripet anläggningar som omfattas av rÃ¥dets direktiv 96/61/EG av den 24 september 1996 om samordnande Ã¥tgärder för att förebygga och begränsa föroreningar (1) samt vattenverk, gruvor och upplagsplatser.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sv">Produktions- och industrianläggningar</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ro">InstalaÅ£ii de producÅ£ie ÅŸi industriale</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sk">Priemyselné výrobné podniky vrátane zariadenÃ, na ktoré sa vzÅ¥ahuje smernica Rady 96/61/ES z 24. septembra 1996 o integrovanej prevencii a kontrole zneÄisÅ¥ovania životného prostredia (1), a zariadenia na Äerpanie vody, bane, sklady.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ro">Parcuri de producÅ£ie industrială, inclusiv instalaÅ£iile reglementate de Directiva 96/61/CE a Consiliului din 24 septembrie 1996 privind prevenirea ÅŸi controlul integrat al poluării (1), precum ÅŸi instalaÅ£iile de captare a apei, de extracÅ£ie minieră ÅŸi locurile de depozitare.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sl">Proizvodni in industrijski objekti in naprave</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sl">ObmoÄja za industrijsko proizvodnjo, vkljuÄno z obrati, ki jih zajema Direktiva Sveta 96/61/ES z dne 24. septembra 1996 o celovitem prepreÄevanju in nadzorovanju onesnaževanja (1) ter objekti in napravami za odvzem vode, rudniki, skladiÅ¡Äi.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sk">Výrobné a priemyselné zariadenia</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="nl">Faciliteiten voor productie en industrie</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pl">ZakÅ‚ady przemysÅ‚owe, w tym obiekty objÄ™te dyrektywÄ… 96/61/WE z dnia 24 wrzeÅ›nia 1996 r. dotyczÄ…ca zintegrowanego zapobiegania zanieczyszczeniom i ich kontroli (1) oraz urzÄ…dzenia poboru wody, miejsca wydobycia i skÅ‚adowiska.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pt">Instalações industriais e de produção</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pt">Locais de produção industrial, incluindo instalações abrangidas pela Directiva 96/61/CE do Conselho, de 24 de Setembro de 1996, relativa à prevenção e controlo integrados da poluição (1), e instalações de captação de água, minas, locais de armazenagem.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pl">Obiekty produkcyjne i przemysÅ‚owe</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lv">RažoÅ¡anas un rÅ«pniecÄ«bas iekÄrtas</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="mt">Siti ta' produzzjoni industrijali, inklużi installazzjonijiet koperti mid-Direttiva tal-Kunsill 96/61/KE ta' l- 24 ta' Settembru 1996 dwar il-prevenzjoni u l-kontroll integrat tat-tniġġis (1) u faÄ‹ilitajiet ta' astrazzjoni ta' l-ilma, tħaffir ta' minjieri, siti ta' ħażna.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="mt">FaÄ‹ilitajiet ta' produzzjoni u industrijali</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lv">RÅ«pniecÄ«bas ražoÅ¡anas novietnes, tostarp iekÄrtas, kas iekļautas Padomes DirektÄ«vÄ 96/61/EK (1996. gada 24. septembris) par piesÄrņojuma integrÄ“tu novÄ“rÅ¡anu un kontroli (1), un iekÄrtas, ko izmanto Å«dens ņemÅ¡anai, kalnrÅ«pniecÄ«bÄ vai uzglabÄÅ¡anai.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="nl">Industriële productievestigingen, met inbegrip van installaties die onder Richtlijn 96/61/EG van de Raad van 24 september 1996 inzake geïntegreerde preventie en bestrijding van verontreiniging (1) vallen en waterontrekkingsfaciliteiten, mijnbouw, opslagplaatsen.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="it">Siti di produzione industriale; compresi gli impianti di cui alla direttiva 96/61/CE del Consiglio, del 24 settembre 1996, sulla prevenzione e la riduzione integrate dell'inquinamento (1) e gli impianti di estrazione dell’acqua, le attività estrattive e i siti di stoccaggio.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="it">Produzione e impianti industriali</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lt">PramoninÄ—s gamybos įmonÄ—s, įskaitant įrenginius, kuriems taikoma 1996 m. rugsÄ—jo 24 d. Tarybos direktyva 96/61/EB dÄ—l tarÅ¡os integruotos prevencijos ir kontrolÄ—s (1), ir vandens Ä—mimo įmones, kasybos, sandÄ—liavimo vietas.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lt">Gamybos ir pramonÄ—s įrenginiai</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fi">Tuotanto- ja teollisuuslaitokset</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fr">Sites de production industrielle, y compris les installations couvertes par la directive 96/61/CE du Conseil du 24 septembre 1996 relative à la prévention et à la réduction intégrées de la pollution (1) et les installations de captage d'eau, d'extraction minière et de stockage.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fr">Lieux de production et sites industriels</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="hu">Ipari termelÅ‘helyek, beleértve a környezetszennyezés integrált megelÅ‘zésérÅ‘l és csökkentésérÅ‘l szóló, 1996. szeptember 24-i 96/61/EK tanácsi irányelv (1) által szabályozott berendezéseket, valamint a vÃzkivételt, a bányászati és a tárolólétesÃtményeket.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="hu">TermelÅ‘ és ipari létesÃtmények</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fi">Teollisuusalueet, mukaan luettuina ympäristön pilaantumisen ehkäisemisen ja vähentämisen yhtenäistämiseksi 24 päivänä syyskuuta 1996 annetun neuvoston direktiivin 96/61/EY (1) soveltamisalaan kuuluvat laitokset sekä vedenottamot, kaivokset ja varastoalueet.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="et">Tootmis- ja tööstusrajatised</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="es">Instalaciones de producción e industriales</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="et">Tööstusliku tootmise asukohad, sealhulgas nõukogu 24. septembri 1996. aasta direktiiviga 96/61/EÜ saastuse kompleksse vältimise ja kontrolli kohta (1) hõlmatud rajatised ning veevõtukohad, kaevandused ja ladustamiskohad.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="el">Εγκαταστάσεις παÏαγωγής και βιομηχανικÎÏ‚ εγκαταστάσεις</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="en">Industrial production sites, including installations covered by Council Directive 96/61/EC of 24 September 1996 concerning integrated pollution prevention and control (1) and water abstraction facilities, mining, storage sites.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="en">Production and industrial facilities</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="es">Centros de producción industrial, incluidas las instalaciones contempladas en la Directiva 96/61/CE del Consejo, de 24 de septiembre de 1996, sobre la prevención y el control integrado de la contaminación (1), e instalaciones de extracción de agua, instalaciones mineras, centros de almacenamiento.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="de">Produktions- und Industrieanlagen</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="el">Τοποθεσίες βιομηχανικής παÏαγωγής, συμπεÏιλαμβανομÎνων των εγκαταστάσεων που καλÏπτονται από την οδηγία 96/61/ΕΚ του Συμβουλίου, της 24ης ΣεπτεμβÏίου 1996, σχετικά με την ολοκληÏωμÎνη Ï€Ïόληψη και Îλεγχο της ÏÏπανσης (1), και εγκαταστάσεις υδÏοληψίας, εξόÏυξης, χώÏοι αποθήκευσης.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="cs">MÃsta s průmyslovou výrobou, vÄetnÄ› zaÅ™ÃzenÃ, na která se vztahuje smÄ›rnice Rady 96/61/ES ze dne 24. zářà 1996 o integrované prevenci a omezovánà zneÄiÅ¡tÄ›nà (1), a zaÅ™Ãzenà na jÃmánà vody, těžbu, skladiÅ¡tÄ› a úložiÅ¡tÄ›.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="cs">Výrobnà a průmyslová zaÅ™ÃzenÃ</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="da">Industrielle produktionsanlæg, herunder de anlæg, der er omfattet af RÃ¥dets direktiv 96/61/EF af 24. september 1996 om forebyggelse og bekæmpelse af forurening (1), og vandudvindingsanlæg, miner, oplagspladser.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="da">Produktions- og industrifaciliteter</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="de">Standorte für industrielle Produktion, einschließlich durch die Richtlinie 96/61/EG des Rates vom 24. September 1996 über die integrierte Vermeidung und Verminderung der Umweltverschmutzung (1) erfasste Anlagen und Einrichtungen zur Wasserentnahme sowie Bergbau- und Lagerstandorte.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="bg">ПроизводÑтвени и промишлени ÑъоръжениÑ</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="bg">Промишлени обекти, включително инÑталации, обхванати от Директива 96/61/ЕО на Съвета от 24 Ñептември 1996 г. за комплекÑно предотвратÑване и контрол на замърÑÑването (1), и ÑÑŠÐ¾Ñ€ÑŠÐ¶ÐµÐ½Ð¸Ñ Ð·Ð° водочерпене, минни ÑъоръжениÑ, Ñкладови обекти.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ca">Instal·lacions de producció i industrials</skos:prefLabel><skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ca">Centres de producció industrial, incloses les instal·lacions que preveu la Directiva 96/61/CE del Consell, de 24 de setembre de 1996, sobre la prevenció i el control integrat de la contaminació, i instal·lacions d’extracció d’aigua, instal·lacions mineres i centres d’emmagatzematge.</skos:scopeNote></skos:Concept> +<skos:Concept rdf:about="http://rdfdata.eionet.europa.eu/inspirethemes/themes/22"> +<skos:altLabel>af</skos:altLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sv">Jordbruks- och vattenbruksanläggningar</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sl">Objekti in naprave za kmetijstvo in ribogojstvo</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sv">Jordbruksutrustning och produktionsanläggningar (inbegripet bevattningssystem, växthus och djurstallar).</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sk">Poľnohospodárske zariadenia a zariadenia akvakultúry</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sl">Kmetijska oprema ter proizvodni objekti in naprave (vkljuÄno z namakalnimi sistemi, rastlinjaki in hlevi).</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pt">Instalações agrÃcolas e aquÃcolas</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ro">Echipament ÅŸi instalaÅ£ii de producÅ£ie agricolă (inclusiv sisteme de irigaÅ£ie, sere ÅŸi grajduri).</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ro">InstalaÅ£ii agricole ÅŸi pentru acvacultură</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sk">Poľnohospodárske vybavenie a výrobné zariadenia (vrátane zavlažovacÃch systémov, sklenÃkov a stajnÃ).</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pt">Equipamento e instalações de explorações agrÃcolas e aquÃcolas (incluindo sistemas de irrigação, estufas e viveiros, e estábulos).</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pl">UrzÄ…dzenia rolnicze oraz urzÄ…dzenia produkcyjne (łącznie z systemami nawadniania, szklarniami i stajniami).</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pl">Obiekty rolnicze oraz akwakultury</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="mt">Tagħmir tal-biedja u faÄ‹ilitajiet ta' produzzjoni (inklużi sistemi ta' irrigazzjoni, serer u stalel).</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="mt">FaÄ‹ilitajiet agrikoli u ta' l-akwakultura</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="nl">Landbouwuitrusting en productiefaciliteiten (met inbegrip van irrigatiesystemen, broeikassen en stallen).</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="nl">Faciliteiten voor landbouw en aquacultuur</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lv">LauksaimniecÄ«bas ierÄ«ces un ražoÅ¡anas iekÄrtas (tostarp apÅ«deņoÅ¡anas sistÄ“mas, siltumnÄ«cas un staļļi).</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lv">LauksaimniecÄ«bas un akvakultÅ«ras iekÄrtas</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lt">ŽemÄ—s Å«kio ir akvakultÅ«ros infrastruktÅ«ra</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="it">Apparecchiature e impianti di produzione agricola (compresi i sistemi di irrigazione, le serre e le stalle).</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lt">ŽemÄ—s Å«kio įrenginiai ir gamybos infrastruktÅ«ra (įskaitant drÄ—kinimo sistemas, Å¡iltnamius ir tvartus).</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="it">Impianti agricoli e di acquacoltura</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="el">ΓεωÏγικÎÏ‚ εγκαταστάσεις και εγκαταστάσεις υδατοκαλλιÎÏγειας</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="hu">MezÅ‘gazdasági és akvakultúra-ágazati létesÃtmények</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="hu">MezÅ‘gazdasági eszközök és termelÅ‘létesÃtmények (beleértve az öntözÅ‘rendszereket, üvegházakat és istállókat).</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fr">Installations agricoles et aquacoles</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fr">Équipement et installations de production agricoles (y compris les systèmes d'irrigation, les serres et les étables).</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fi">Maatalouden tuotantolaitteet ja -laitteistot (mukaan luettuina kastelujärjestelmät, kasvihuoneet ja eläinsuojat).</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fi">Maatalous- ja vesiviljelylaitokset</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="et">Põllumajandus- ja vesiviljelusrajatised</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="et">Põllumajandusseadmed ja tootmisrajatised (sealhulgas niisutussüsteemid, kasvuhooned ja laudad).</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="es">Instalaciones agrÃcolas y de acuicultura</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="en">Farming equipment and production facilities (including irrigation systems, greenhouses and stables).</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="en">Agricultural and aquaculture facilities</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="es">Equipamiento e instalaciones de producción agraria (incluidos sistemas de regadÃo, invernaderos y establos).</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="bg">СелÑкоÑтопанÑки и водноÑтопанÑки ÑъоръжениÑ</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="cs">Vybavenà a zaÅ™Ãzenà zemÄ›dÄ›lské výroby (vÄetnÄ› zavlažovacÃch systémů, sklenÃků a stájÃ).</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="cs">ZemÄ›dÄ›lská a akvakulturnà zaÅ™ÃzenÃ</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="bg">Оборудване за ÑелÑки ÑтопанÑтва и производÑтвени мощноÑти (включително поливни ÑиÑтеми, парници и обори).</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="de">Landwirtschaftliche Anlagen und Aquakulturanlagen</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="el">ΓεωÏγικός εξοπλισμός και εγκαταστάσεις παÏαγωγής (συμπεÏιλαμβανομÎνων των συστημάτων άÏδευσης, των θεÏμοκηπίων και των στάβλων).</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="da">Landbrugsudstyr og -produktionsanlæg (herunder vandingssystemer, drivhuse og stalde).</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="da">Landbrugs- og akvakulturanlæg</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="de">Landwirtschaftliche Anlagen und Produktionsstätten (einschließlich Bewässerungssystemen, Gewächshäusern und Ställen).</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ca">Instal·lacions agrÃcoles i d'aqüicultura</skos:prefLabel><skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ca">Equipaments i instal·lacions de producció agrà ria (inclosos sistemes de regadiu, hivernacles i estables).</skos:scopeNote></skos:Concept> +<skos:Concept rdf:about="http://rdfdata.eionet.europa.eu/inspirethemes/themes/23"> +<skos:altLabel>pd</skos:altLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sv">Befolkningsfördelning – demografi</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sl">Geografska porazdelitev ljudi, vkljuÄno z znaÄilnostmi populacije in ravnmi aktivnosti, razvrÅ¡Äenih po koordinatah, regiji, upravni enoti ali drugi analitiÄni enoti.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sl">Porazdelitev prebivalstva – demografski podatki</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sv">Geografisk fördelning av människor, inbegripet befolkningskarakteristiska och sysselsättningsgrader, i rutnät, regioner, administrativa enheter eller andra analysenheter.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ro">Repartizarea populaÅ£iei – demografie</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sk">Geografické rozmiestnenie obyvateľstva vrátane charakteristÃk obyvateľstva a úrovnà Äinnostà zoskupené podľa siete, regiónu, administratÃvnej jednotky alebo inej analytickej jednotky.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ro">Repartizare geografică a populaÅ£iei, inclusiv caracteristicile populaÅ£iei ÅŸi nivelurile de activitate, regrupate pe grilă, regiune, unitate administrativă sau altă unitate analitică.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sk">Rozmiestnenie obyvateľstva – demografia</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pt">Distribuição geográfica da população, incluindo caracterÃsticas demográficas e nÃveis de actividade, agregada por quadrÃcula, região, unidade administrativa ou outra unidade analÃtica.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pt">Distribuição da população — demografia</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="nl">Spreiding van de bevolking — demografie</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pl">Geograficzne rozmieszczenie ludnoÅ›ci, łącznie z poziomami aktywnoÅ›ci i charakterystykÄ… ludnoÅ›ci, pogrupowanej wedÅ‚ug siatki geograficznej, regionu, jednostki administracyjnej lub innej jednostki analitycznej.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pl">Rozmieszczenie ludnoÅ›ci – demografia</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lv">IedzÄ«votÄju Ä£eogrÄfiskais sadalÄ«jums, tostarp iedzÄ«votÄju raksturojumi un darbÄ«bas lÄ«meņi, grupÄ“jot pÄ“c koordinÄtu tÄ«kla, reÄ£iona, administratÄ«vÄm vai citÄm analÄ«tiskÄm vienÄ«bÄm.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lv">IedzÄ«votÄju sadalÄ«jums – demogrÄfija</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="mt">Distribuzzjoni Ä¡eografika ta' nies, inkluż karatteristiÄ‹i ta' popolazzjoni u livelli ta' attivitajiet, miÄ¡bura flimkien skond il-grilja, ir-reÄ¡jun, l-unità amministrattiva jew unità analitika oħra.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="mt">Distribuzzjoni tal-popolazzjoni – demografija</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="nl">Geografische spreiding van de bevolking, met inbegrip van bevolkingskenmerken en activiteitsniveaus, verzameld per raster, regio, administratieve eenheid of andere analytische eenheid.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="it">Distribuzione della popolazione — demografia</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lt">Geografinis žmonių pasiskirstymas, įskaitant gyventojų savybes ir aktyvumo lygius, pagal tinklelį, regionÄ…, administracinį ar kitÄ… analitinį vienetÄ….</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lt">Gyventojų pasiskirstymas – demografija</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fr">Répartition de la population — démographie</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="hu">A népesség földrajzi eloszlása – beleértve a népességi jellemzÅ‘ket és a tevékenységi szinteket is – térképrács, régió, közigazgatási egység vagy más elemzési egység alapján összesÃtve.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="hu">A népesség eloszlása – demográfia</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="it">Distribuzione geografica della popolazione, comprese le relative caratteristiche ed i livelli di attività , aggregata per griglia, regione, unità amministrativa o altra unità analitica.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="et">Elanikkonna jaotumine – demograafia</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fi">Väestön maantieteellinen jakautuminen, mukaan lukien väestöä koskevat tunnusluvut ja taloudellisen toimeliaisuuden tasot, yhdisteltynä ruudukoittain, alueittain, hallintoyksiköittäin tai muiden analyyttisten yksiköitten mukaisesti jaoteltuna.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fi">Väestöjakauma – demografia</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fr">Répartition géographique des personnes, avec les caractéristiques de population et les niveaux d'activité, regroupées par grille, région, unité administrative ou autre unité analytique.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="es">Distribución de la población — demografÃa</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="et">Elanike, sealhulgas rahvastiku näitajate ja tegevuste geograafiline jaotumine ruutvõrgu, piirkondade, haldusüksuste või muude analüütiliste üksuste alusel.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="en">Geographical distribution of people, including population characteristics and activity levels, aggregated by grid, region, administrative unit or other analytical unit.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="el">ΓεωγÏαφική κατανομή του πληθυσμοÏ, συμπεÏιλαμβανομÎνων των χαÏακτηÏιστικών του Ï€Î»Î·Î¸Ï…ÏƒÎ¼Î¿Ï ÎºÎ±Î¹ των επιπÎδων δÏαστηÏιοτήτων, ανά κάνναβο, πεÏιοχή, διοικητική ενότητα ή άλλη ενότητα ανάλυσης.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="en">Population distribution — demography</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="es">Distribución geográfica de la población referidas a una cuadrÃcula, región, unidad administrativa u otro tipo de unidad analÃtica, incluyendo las caracterÃsticas de la población y sus niveles de actividad.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="el">Κατανομή Ï€Î»Î·Î¸Ï…ÏƒÎ¼Î¿Ï â€” δημογÏαφία</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="cs">Rozloženà obyvatelstva – demografie</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="da">Den geografiske fordeling af befolkningen, herunder befolkningskarakteristika og aktivitetsniveauer, i kvadratnetceller, forvaltningsenheder eller andre analytiske enheder.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="bg">ГеографÑко разпределение на наÑелението, включително характериÑтики на наÑелението и нива на дейноÑÑ‚, предÑтавено обобщено по координати, регион, админиÑтративна единица или друга аналитична единица.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="de">Verteilung der Bevölkerung — Demografie</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="da">Befolkningsfordeling — demografi</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="de">Geografische Verteilung der Bevölkerung, einschließlich Bevölkerungsmerkmalen und Tätigkeitsebenen, zusammengefasst nach Gitter, Region, Verwaltungseinheit oder sonstigen analytischen Einheiten.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="bg">Разпределение на наÑелението — демографиÑ</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="cs">ZemÄ›pisné rozloženà osob, vÄetnÄ› charakteristik obyvatelstva a druhů Äinnosti, seskupených podle souÅ™adnicové sÃtÄ›, regionu, správnà jednotky nebo jiné analytické jednotky.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ca">Distribució de la població - demografia</skos:prefLabel><skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ca">Distribució geogrà fica de la població referida a una quadrÃcula, regió, unitat administrativa o un altre tipus d’unitat analÃtica, incloent-hi caracterÃstiques de la població i nivells d’activitat.</skos:scopeNote></skos:Concept> +<skos:Concept rdf:about="http://rdfdata.eionet.europa.eu/inspirethemes/themes/24"> +<skos:altLabel>am</skos:altLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sk">Spravované/obmedzené/regulované zóny a jednotky podávajúce správy</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sl">ObmoÄja, ki se upravljajo, urejajo ali uporabljajo za poroÄanje na mednarodni, evropski, nacionalni, regionalni in lokalni ravni. VkljuÄujejo odlagaliÅ¡Äa odpadkov, zaprta obmoÄja okrog virov pitne vode, cone, obÄutljive na nitrate, urejene plovne poti po morju ali velikih celinskih vodah, obmoÄja za odlaganje odpadkov, cone z omejitvijo hrupa, obmoÄja, kjer je potrebno dovoljenje za iskanje rud in rudarjenje, predele povodij, ustrezne poroÄevalske enote in obmoÄja upravljanja obalnih con.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sv">OmrÃ¥den med särskild förvaltning/begränsningar/reglering samt enheter för rapportering</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sl">ObmoÄja upravljanja/zaprta obmoÄja/regulirana obmoÄja in poroÄevalske enote</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sv">OmrÃ¥den som förvaltas, regleras eller används för rapportering pÃ¥ internationell, europeisk, nationell, regional och lokal nivÃ¥. Innefattar avfallsdeponier, skyddsomrÃ¥den runt dricksvattentäkter, omrÃ¥den som är känsliga för nitratbelastning, reglerade farleder till havs och i större inlandsvatten, omrÃ¥den för dumpning av avfall, omrÃ¥den med bullerrestriktioner, omrÃ¥den med tillstÃ¥nd för prospektering och gruvbrytning, avrinningsdistrikt, relevanta enheter för rapportering och omrÃ¥den med kustförvaltning.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ro">Zone de administrare/restricÅ£ie/reglementare ÅŸi unităţi de raportare</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sk">Oblasti, ktoré sú spravované, regulované alebo využÃvané na podávanie správ na medzinárodnej, európskej, celoÅ¡tátnej, regionálnej a miestnej úrovni. Patria sem skládky, ochranné pásma v okolà zdrojov pitnej vody, oblasti citlivé na dusÃk, regulované plavebné cesty na mori alebo na rozsiahlych vnútrozemských vodných plochách a tokoch, oblasti urÄené na skladovanie odpadu, oblasti s obmedzenÃm hluku, oblasti, v ktorých je povolený prieskum a Å¥ažba, oblasti povodÃ, prÃsluÅ¡né jednotky na podávanie správ a oblasti správy pobrežných zón.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ro">Zone administrate, reglementate sau folosite pentru raportarea la nivel internaÅ£ional, european, naÅ£ional, regional ÅŸi local. Sunt incluse gropile de gunoi, zonele restricÅ£ionate din apropierea surselor de apă potabilă, zonele vulnerabile la nitraÅ£i, ÅŸenalele navigabile reglementate de pe mare sau din apele interne importante, zonele destinate descărcării deÅŸeurilor, zonele în care au fost introduse limite de zgomot, zonele care fac obiectul unui permis de prospectare ÅŸi de exploatare minieră, districtele hidrografice, unităţile de raportare corespunzătoare ÅŸi zonele de administrare a litoralului.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="nl">Gebiedsbeheer, gebieden waar beperkingen gelden, gereguleerde gebieden en rapportage-eenheden</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pl">Obszary zarzÄ…dzane, regulowane lub wykorzystywane do celów sprawozdawczych na poziomie miÄ™dzynarodowym, europejskim, krajowym, regionalnym i lokalnym. ObejmujÄ… również wysypiska Å›mieci, obszary o ograniczonym dostÄ™pie wokół ujęć wody pitnej, strefy zagrożone przez azotany, uregulowane drogi wodne na morzach lub wodach Å›ródlÄ…dowych o dużej powierzchni, obszary przeznaczone pod wysypiska Å›mieci, strefy ograniczeÅ„ haÅ‚asu, obszary wymagajÄ…ce zezwolenia na poszukiwania i wydobycie, obszary dorzeczy, odpowiednie jednostki sprawozdawcze i obszary zarzÄ…dzania strefÄ… brzegowÄ….</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pt">Zonas de gestão/restrição/regulamentação e unidades de referência</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pl">Gospodarowanie obszarem/strefy ograniczone/regulacyjne oraz jednostki sprawozdawcze</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pt">Zonas geridas, regulamentadas ou utilizadas para a comunicação de dados a nÃvel internacional, europeu, nacional, regional e local. Compreende aterros, zonas de acesso restrito em torno de nascentes de água potável, zonas sensÃveis aos nitratos, vias navegáveis regulamentadas no mar ou em águas interiores de grandes dimensões, zonas de descarga de resÃduos, zonas de ruÃdo condicionado, zonas autorizadas para efeitos de prospecção e extracção mineira, bacias hidrográficas, unidades de referência pertinentes e zonas abrangidas pela gestão das zonas costeiras.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lv">Apgabala pÄrvaldÄ«bas/ierobežojumu/reglamentÄ“tas zonas un ziņoÅ¡anas vienÄ«bas</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="mt">Å»oni amministrati, regolati jew użati għar-rappurtar fuq il-livell internazzjonali, Ewropew, nazzjonali, reÄ¡jonali u lokali. Huma inklużi siti użati għar-radam, żoni ristretti madwar għejjun ta' l-ilma għax-xorb, żoni vulnerabbli għannitrati, kanali regolati fil-baħar jew f'ilmijiet interni kbar, żoni għar-radam ta' l-iskart, żoni għar-restrizzjoni ta' listorbju, żoni b'permess għat-tħaffir u għat-tiftix ta' minerali, distretti ta' baÄ‹iri tax-xmajjar, unitajiet ta' rapportar rilevanti u żoni ta' amministrazzjoni ta' l-inħawi tal-kosta.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="it">Zone sottoposte a gestione/limitazioni/regolamentazione e unità con obbligo di comunicare dati</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lt">Tvarkomos/ribojamos/reglamentuojamos zonos ir vienetai, už kuriuos atsiskaitoma tarptautiniu, Europos, nacionaliniu, regioniniu arba vietos lygmeniu tvarkomos ir reglamentuojamos zonos arba zonos, apie kurias rengiamos ataskaitos. Tai apima sÄ…vartynus, ribotos veiklos zonas aplink geriamo vandens Å¡altinius, nitratų pažeidžiamas zonas, reglamentuojamus jÅ«ros arba didelių vidaus vandenų farvaterius, atliekų aikÅ¡teles, zonas, kuriose ribojamas triukÅ¡mas, vietas, kuriose reikalingas leidimas žvalgybai ar kasinÄ—jimui, upių baseinų sritis, atitinkamas vietoves, apie kurias rengiamos ataskaitos, ir pakranÄių zonos tvarkymo vietoves.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="mt">Amministrazzjoni ta' żoni/restrizzjoni/żoni regolati u unitajiet ta' rapportar</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="nl">Gebieden die worden beheerd, gereguleerd of gebruikt voor rapportage op internationaal, Europees, nationaal, regionaal en lokaal niveau, met inbegrip van stortplaatsen, gebieden rond drinkwaterbronnen waar beperkingen gelden, nitraatgevoelige gebieden, gereguleerde vaarwegen op zee of op grote binnenwateren, gebieden voor het storten van afval, gebieden waar geluidsbeperkingen gelden, gebieden met toestemming voor exploratie en mijnbouw, stoomgebieden, relevante rapportage-eenheden en gebieden voor kustbeheer.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lt">Tvarkomos teritorijos, ribojamos ir reglamentuojamos zonos bei vienetai, už kuriuos atsiskaitoma</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lv">Apgabali, ko pÄrvalda, reglamentÄ“ vai lieto, lai sniegtu ziņojumus starptautiskÄ, Eiropas, valsts, reÄ£iona un paÅ¡valdÄ«bas lÄ«menÄ«. Ietver izgÄztuves, liegumus ap dzeramÄ Å«dens avotiem, pret nitrÄtiem jutÄ«gas zonas, reglamentÄ“tus kuÄ£u ceļus jÅ«rÄ vai lielos iekÅ¡zemes Å«deņos, atkritumu izgÄÅ¡anas apgabalus, zonas ar trokšņu ierobežojumiem, zonas, kurÄs atļauta Ä£eoloÄ£isko atradņu izpÄ“te un izrakteņu ieguve, upju baseinu apgabalus, attiecÄ«gas ziņoÅ¡anas vienÄ«bas un krasta zonas apsaimniekoÅ¡anas apgabalus.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="hu">Területgazdálkodási/-korlátozási/-szabályozási övezetek és adatszolgáltató egységek</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="it">Aree gestite, regolamentate o utilizzate per la comunicazione di dati a livello internazionale, europeo, nazionale, regionale e locale. Sono comprese le discariche, le zone vietate attorno alle sorgenti di acqua potabile, le zone sensibili ai nitrati, le vie navigabili regolamentate in mare o in acque interne di grandi dimensioni, le zone per lo smaltimento dei rifiuti, le zone di limitazione del rumore, le zone in cui sono autorizzate attività di prospezione ed estrazione, i distretti idrografici, le pertinenti unità con obbligo di comunicare dati e le aree in cui vigono piani di gestione delle zone costiere.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fr">Zones de gestion, de restriction ou de réglementation et unités de déclaration</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="hu">A nemzetközi, európai, nemzeti, regionális és helyi szintű adatszolgáltatás céljából irányÃtott, szabályozott vagy használt területek. Ide tartoznak a lerakóhelyek, az ivóvÃzforrásokat övezÅ‘ korlátozás alá tartozó területek, a nitrátérzékeny területek, a tengeri hajóutak vagy nagy kiterjedésű belvizek szabályozott hajózóútjai, a hulladéklerakásra kijelölt területek, a zajvédelmi zónák, az elÅ‘készÃtÅ‘ és bányászatiengedély-köteles területek, a folyómedri kerületek, a megfelelÅ‘ adatszolgáltató egységek és a tengerparti igazgatási térségek.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fr">Zones gérées, réglementées ou utilisées pour les rapports aux niveaux international, européen, national, régional et local. Sont inclus les décharges, les zones restreintes aux alentours des sources d'eau potable, les zones vulnérables aux nitrates, les chenaux réglementés en mer ou les eaux intérieures importantes, les zones destinées à la décharge de déchets, les zones soumises à limitation du bruit, les zones faisant l'objet de permis d'exploration et d'extraction minière, les districts hydrographiques, les unités correspondantes utilisées pour les rapports et les zones de gestion du littoral.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fi">Aluesuunnittelun, rajoitusten ja sääntelyn piiriin kuuluvat alueet ja raportointiyksiköt</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="et">Üldplaneering/piirangu-/reguleeritud tsoonid ja aruandlusüksused</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fi">Alueet, joita hoidetaan, säännellään tai käytetään kansainvälisen, Euroopan, kansallisen, alueellisen tai paikallisen tason raportointiin. Sisältää kaatopaikat, juomavedenottopaikkoja ympäröivät suoja-alueet, nitraatin aiheuttamalle pilaantumiselle alttiit alueet, säännellyt laivaväylät merellä tai suurilla sisävesillä, jätteiden upottamiskiellon soveltamisalaan kuuluvat alueet, melurajoitusalueet, luonnonvarojen tai malmin etsintäalueet, ja kaivostoiminnan lupa-alueet, vesipiirit, asiaankuuluvat raportointiyksiköt ja rannikkoalueiden hallinta-alueet.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="et">Alad, mille haldamisest, reguleerimisest või kasutamisest antakse aru rahvusvahelisel, Euroopa, riiklikul, piirkondlikul ja kohalikul tasandil. Hõlmab kaadamiskohti, joogiveeallikate ümber asuvaid piirangutsoone, nitraaditundlikke tsoone, reguleeritavaid laevateid merel või suurtel siseveekogudel, jäätmete kaadamise alasid, mürapiirangutsoone, geoloogiliste uuringute ja kaevanduste alasid, valgalasid, asjakohaseid aruandlusüksusi ning rannikukaitsealasid.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="es">Zonas sujetas a ordenación, a restricciones o reglamentaciones y unidades de notificación</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="es">Zonas gestionadas, reglamentadas o utilizadas para la elaboración de informes para organismos internacionales, europeos, nacionales, regionales y locales. Se incluirán vertederos, zonas restringidas alrededor de lugares de extracción de agua potable, zonas sensibles a los nitratos, rutas marÃtimas o por grandes vÃas navegables reglamentadas, zonas de vertido, zonas de restricción de ruidos, zonas de prospección o extracción minera, demarcaciones hidrográficas, las correspondientes unidades de notificación y planes de ordenación de zonas costeras.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="en">Area management/restriction/regulation zones and reporting units</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="de">Bewirtschaftungsgebiete/Schutzgebiete/geregelte Gebiete und Berichterstattungseinheiten</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="el">Εκτάσεις υπό διαχείÏιση, υπό ÏÏθμιση ή χÏησιμοποιοÏμενες για αναφοÏά σε διεθνÎÏ‚, ευÏωπαϊκό, εθνικό, πεÏιφεÏειακό και τοπικό επίπεδο. ΠεÏιλαμβάνονται χώÏοι απόÏÏιψης, Ï€Ïοστατευόμενες πεÏιοχÎÏ‚ γÏÏω από πηγÎÏ‚ πόσιμου νεÏοÏ, ζώνες ευάλωτες στη νιτÏοÏÏÏπανση, κανονιστικά Ïυθμιζόμενοι δίαυλοι θαλάσσιας ή εσωτεÏικής ναυσιπλοÎας, πεÏιοχÎÏ‚ για τη βÏθιση αποβλήτων, ζώνες Ï€Ïοστασίας από τον θόÏυβο, πεÏιοχÎÏ‚ όπου επιτÏÎπεται η μεταλλευτική ÎÏευνα και εξόÏυξη, διοικητικÎÏ‚ πεÏιοχÎÏ‚ ποτάμιων λεκανών, σχετικÎÏ‚ μονάδες αναφοÏάς και πεÏιοχÎÏ‚ διαχείÏισης παÏάκτιας ζώνης.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="el">Ζώνες διαχείÏισης/πεÏιοÏισμοÏ/ÏÏθμισης εκτάσεων και μονάδες αναφοÏάς</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="en">Areas managed, regulated or used for reporting at international, European, national, regional and local levels. Includes dumping sites, restricted areas around drinking water sources, nitrate-vulnerable zones, regulated fairways at sea or large inland waters, areas for the dumping of waste, noise restriction zones, prospecting and mining permit areas, river basin districts, relevant reporting units and coastal zone management areas.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="da">OmrÃ¥der, der forvaltes, reguleres eller benyttes som indberetningsenheder pÃ¥ internationalt, europæisk, nationalt, regionalt og lokalt plan. Omfatter affaldsdepoter, omrÃ¥der med brugsbegrænsninger af hensyn til drikkevandsindvinding, nitratfølsomme omrÃ¥der, regulerede sejlruter til søs og pÃ¥ større indlandsvandomrÃ¥der, omrÃ¥der for dumpning af affald, omrÃ¥der med støjbegrænsning, omrÃ¥der, hvor der er tilladelse til efterforskning og minedrift, vandomrÃ¥dedistrikter, relevante indberetningsenheder samt omrÃ¥der for kystzoneforvaltning.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="de">Auf internationaler, europäischer, nationaler, regionaler und lokaler Ebene bewirtschaftete, geregelte oder zu Zwecken der Berichterstattung herangezogene Gebiete. Dazu zählen Deponien, Trinkwasserschutzgebiete, nitratempfindliche Gebiete, geregelte Fahrwasser auf See oder auf großen Binnengewässern, Gebiete für die Abfallverklappung, Lärmschutzgebiete, für Exploration und Bergbau ausgewiesene Gebiete, Flussgebietseinheiten, entsprechende Berichterstattungseinheiten und Gebiete des Küstenzonenmanagements.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="da">Forvaltede og regulerede omrÃ¥der samt omrÃ¥der med brugsbegrænsning og indberetningsenheder</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="cs">Správnà oblasti/chránÄ›ná pásma/regulovaná územà a jednotky podávajÃcà hlášenÃ</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="cs">Oblasti spravované, regulované nebo použÃvané pro hlášenà na mezinárodnÃ, evropské, celostátnÃ, regionálnà nebo mÃstnà úrovni. Zahrnuje skládky, pásma hygienické ochrany vodnÃch zdrojů, oblasti zranitelné dusiÄnany, regulované plavebnà dráhy na moÅ™i nebo rozsáhlých vnitrozemských vodnÃch plochách, oblasti pro ukládánà odpadů, pásma s omezenÃm hladiny hluku, povolená průzkumná a těžebnà územÃ, oblasti povodÃ, pÅ™ÃsluÅ¡né jednotky pro podávánà hlášenà a pásma pobÅ™ežnà správy.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="bg">Управление на териториÑта/ограничени/регулирани зони и отчетни единици</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="bg">Зони, управлÑвани, регулирани или използвани за докладване на международно, европейÑко, национално, регионално и меÑтно равнище. Включва Ñкладови обекти, ограничени райони около източници на питейна вода, уÑзвими от замърÑÑване Ñ Ð½Ð¸Ñ‚Ñ€Ð°Ñ‚Ð¸ зони, контролирани морÑки проходи или големи вътрешни водни пътища, райони за Ñкладиране на отпадъци, зони Ñ Ð½Ð°Ð»Ð¾Ð¶ÐµÐ½Ð¸ Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñ Ð²ÑŠÑ€Ñ…Ñƒ шума, проучвателни и минни райони, райони на речни баÑейни, Ñъответни отчетни единици и зони за управление на брегови райони. 25.4.2007 г. BG Официален веÑтник на ЕвропейÑÐºÐ¸Ñ Ñъюз L 108/13</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ca">Zones subjectes a ordenació, a restriccions o reglamentacions i unitats de notificació.</skos:prefLabel><skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ca">Zones gestionades, reglamentades o utilitzades per a l’elaboració d’informes per a organismes internacionals, europeus, nacionals, regionals i locals. S’inclouran abocadors, zones restringides al voltant de llocs d’extracció d’aigua potable, zones sensibles als nitrats, rutes marÃtimes o per grans vies navegables reglamentades, zones d’abocament, zones de restricció de soroll, zones de prospecció o extracció minera, demarcacions hidrogrà fiques, les corresponents unitats de notificació i plans d’ordenació de zones costaneres.</skos:scopeNote></skos:Concept> +<skos:Concept rdf:about="http://rdfdata.eionet.europa.eu/inspirethemes/themes/25"> +<skos:altLabel>nz</skos:altLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sl">ObmoÄja nevarnosti naravnih nesreÄ</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sv">SÃ¥rbara omrÃ¥den klassificerade efter naturliga risker (alla atmosfäriska, hydrologiska, seismiska och vulkaniska fenomen samt bränder som pÃ¥ grund av läge, omfattning och frekvens har potential att allvarligt pÃ¥verka samhället), exempelvis översvämningar, jordskred och sättningar, laviner, skogsbränder, jordbävningar, vulkanutbrott.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sv">Naturliga riskomrÃ¥den</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sl">Ranljiva obmoÄja, opredeljena glede na naravna tveganja (vsi atmosferski, hidroloÅ¡ki, seizmiÄni, vulkanski pojavi in požari, ki zaradi svoje lokacije, resnosti in pogostosti lahko resno ogrozijo družbo), npr. poplave, zemeljski plazovi in pogrezanje tal, snežni plazovi, gozdni požari, potresi, vulkanski izbruhi.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sk">Zóny prÃrodného rizika</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ro">Zone de risc natural</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sk">Citlivé oblasti charakterizované podľa prÃrodných rizÃk (vÅ¡etky atmosférické, hydrologické, seizmické, vulkanické javy a niÄivé požiare, ktoré môžu maÅ¥ s ohľadom na ich polohu, závažnosÅ¥ a poÄetnosÅ¥ vážny vplyv na spoloÄnosÅ¥), napr. záplavy, zosuvy pôdy a pokles terénu, lavÃny, lesné požiare, zemetrasenia, sopeÄné výbuchy.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ro">Zone vulnerabile caracterizate în funcÅ£ie de riscurile naturale (orice fenomen atmosferic, hidrologic, seismic, vulcanic, precum ÅŸi incendiile, care, din cauza locaÅ£iei, a gravităţii ÅŸi a frecvenÅ£ei, pot afecta grav societatea), precum inundaÅ£iile, alunecările ÅŸi surpările de teren, avalanÅŸele, incendiile forestiere, cutremurele de pământ ÅŸi erupÅ£iile vulcanice.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pt">Zonas de risco natural</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pl">Strefy zagrożenia naturalnego</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pt">Zonas sensÃveis, caracterizadas de acordo com os riscos naturais (todos os fenómenos atmosféricos, hidrológicos, sÃsmicos, vulcânicos e os incêndios que, pela sua localização, gravidade e frequência, possam afectar gravemente a sociedade), como sejam inundações, deslizamentos de terras e subsidências, avalanches, incêndios florestais, sismos, erupções vulcânicas.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="mt">Å»oni ta' riskju naturali</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="nl">Kwetsbare gebieden die worden gekenmerkt door natuurrisico's (alle atmosferische, hydrologische, seismische, vulkanische verschijnselen en ongecontroleerde branden die door hun locatie, hevigheid en frequentie, mogelijk ernstige maatschappelijke gevolgen kunnen hebben), zoals overstromingen, aardverschuivingen en -verzakkingen, lawines, bosbranden, aardbevingen en vulkaanuitbarstingen.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="nl">Gebieden met natuurrisico'es</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="mt">Å»oni vulnerabbli kkaratterizzati skond perikli naturali (kull fenomenu atmosferiku, idroloÄ¡iku, sismiku, vulkaniku u tan-nirien mifruxa li, minħabba fejn jinsabu, il-qawwa, u l-frekwenza tagħhom, għandhom il-potenzjal li jaffettwaw b'mod gravi s-soÄ‹jetà ), eż. għargħar, żerżiq ta' l-art u Ä‹ediment ta' l-art, valangi, nirien fil-foresti, terremoti, eruzzjonijiet vulkaniÄ‹i.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pl">Obszary zagrożone charakteryzowane na podstawie zagrożeÅ„ naturalnych (wszystkie zjawiska atmosferyczne, hydrologiczne, sejsmiczne, wulkaniczne oraz pożary, które, ze wzglÄ™du na swojÄ… lokalizacjÄ™, dotkliwość i czÄ™stotliwość mogÄ… wywierać poważny wpÅ‚yw na spoÅ‚eczeÅ„stwo), np. powodzie, osuniÄ™cia ziemi i osiadanie gruntu, lawiny, pożary lasów, trzÄ™sienia ziemi, wybuchy wulkanów.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lv">Dabas apdraudÄ“juma zonas</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lt">Gamtinių pavojų zonos</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lv">Apgabali, kam raksturÄ«gi dabas apdraudÄ“jumi (visas atmosfÄ“riskÄs, hidroloÄ£iskÄs, seismiskÄs, vulkÄniskÄs parÄdÄ«bas un dabiskie ugunsgrÄ“ki, kas sakarÄ ar atraÅ¡anÄs vietu, apjomu vai biežumu var nopietni skart sabiedrÄ«bu), piemÄ“ram, plÅ«di, zemes nogruvumi un iegrimÅ¡ana, lavÄ«nas, mežu ugunsgrÄ“ki, zemestrÄ«ces un vulkÄnu izvirdumi.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="hu">Természeti kockázati zónák</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="it">Zone sensibili caratterizzate in base ai rischi naturali (cioè tutti i fenomeni atmosferici, idrologici, sismici, vulcanici e gli incendi che, per l’ubicazione, la gravità e la frequenza, possono avere un grave impatto sulla società ), ad esempio inondazioni, slavine e subsidenze, valanghe, incendi di boschi/foreste, terremoti, eruzioni vulcaniche.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fr">Zones sensibles caractérisées en fonction des risques naturels (tous les phénomènes atmosphériques, hydrologiques, sismiques, volcaniques, ainsi que les feux de friche qui peuvent, en raison de leur situation, de leur gravité et de leur fréquence, nuire gravement à la société), tels qu'inondations, glissements et affaissements de terrain, avalanches, incendies de forêts, tremblements de terre et éruptions volcaniques.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="it">Zone a rischio naturale</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lt">Pažeidžiamos vietovÄ—s, suskirstytos pagal gamtinio pavojaus pobÅ«dį (visi atmosferiniai, hidrologiniai, seisminiai, vulkaniniai ir savaiminių gaisrų reiÅ¡kiniai, kurie dÄ—l savo vietos, stiprumo ir dažnumo kelia didelÄ™ grÄ—smÄ™ visuomenei), pvz., potvyniai, nuoÅ¡liaužos ir žemÄ—s nusÄ—dimas, griÅ«tys, miÅ¡kų gaisrai, žemÄ—s drebÄ—jimai, ugnikalnių iÅ¡siveržimai.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fr">Zones à risque naturel</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="hu">Természeti veszélyek, Ãgy pl. árvizek, földcsuszamlások, felszÃnsüllyedések, lavinák, erdÅ‘tüzek, földrengések, vulkánkitörések (minden légköri, hidrológiai, szeizmikus, vulkanikus és futótűzjelenség, amely – helye, súlyossága és elÅ‘fordulási gyakorisága alapján – magában hordozza a komoly társadalmi károk okozásának lehetÅ‘ségét) alapján jellemzett veszélyeztetett területek.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fi">Luonnonriskialueet</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="et">Looduslikud ohutsoonid</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fi">Luonnonkatastrofien (kaikki ilmakehästä johtuvat, hydrologiset, seismiset, tuliperäiset ja maastopaloilmiöt, joilla sijaintinsa, vakavuutensa ja yleisyytensä vuoksi voi mahdollisesti olla vakavia vaikutuksia yhteiskuntaan), kuten tulvien, maanvyöryjen ja vajoamisen, lumivyöryjen, metsäpalojen, maanjäristysten ja tulivuortenpurkausten, mukaan luokitellut riskialueet.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="es">Zonas de riesgos naturales</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="et">Tundlikud alad, mida iseloomustavad looduslikud riskitegurid (kõik atmosfäärilised, hüdroloogilised, seismilised, vulkaanilised ja looduspõlengute nähtused, mis oma asukoha, intensiivsuse ja sageduse tõttu võivad ühiskonnale tõsist kahju tuua), nt üleujutused, maalihked ja pinnase vajumine, laviinid, metsatulekahjud, maavärinad, vulkaanipursked.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="en">Natural risk zones</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="es">Zonas vulnerables caracterizadas por la existencia de riesgos de carácter natural (cualquier fenómeno atmosférico, hidrológico, sÃsmico, volcánico o incendio natural que, debido a su localización, gravedad o frecuencia, pueda afectar negativamente a la población), p. ej., inundaciones, corrimientos de tierra y hundimientos, aludes, incendios forestales, terremotos, erupciones volcánicas.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="el">Ζώνες φυσικών κινδÏνων</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="en">Vulnerable areas characterised according to natural hazards (all atmospheric, hydrologic, seismic, volcanic and wildfire phenomena that, because of their location, severity, and frequency, have the potential to seriously affect society), e.g. floods, landslides and subsidence, avalanches, forest fires, earthquakes, volcanic eruptions.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="bg">Природни риÑкови зони</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="cs">Zranitelné oblasti oznaÄené podle pÅ™ÃrodnÃho nebezpeÄà (vÅ¡echny povÄ›trnostnÃ, hydrologické, seismické a sopeÄné úkazy, jakož i niÄivé požáry, které mohou mÃt vzhledem ke svému výskytu, závažnosti a Äetnosti vážný dopad na spoleÄnost), napÅ™. povodnÄ›, sesuvy a sesedánà půdy, laviny, lesnà požáry, zemÄ›tÅ™esenÃ, sopeÄné výbuchy.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="da">OmrÃ¥der med naturlige risici</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="de">Gefährdete Gebiete, eingestuft nach naturbedingten Risiken (sämtliche atmosphärischen, hydrologischen, seismischen, vulkanischen Phänomene sowie Naturfeuer, die aufgrund ihres örtlichen Auftretens sowie ihrer Schwere und Häufigkeit signifikante Auswirkungen auf die Gesellschaft haben können), z. B. Überschwemmungen, Erdrutsche und Bodensenkungen, Lawinen, Waldbrände, Erdbeben oder Vulkanausbrüche.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="de">Gebiete mit naturbedingten Risiken</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="el">ΧαÏακτηÏισμός ευάλωτων πεÏιοχών ανάλογα με τους φυσικοÏÏ‚ κινδÏνους (όλα τα ατμοσφαιÏικά, υδÏολογικά, σεισμικά, ηφαιστειακά φαινόμενα και τα φαινόμενα καταστÏοφικών πυÏκαγιών που, λόγω της θÎσης, της σφοδÏότητας και της συχνότητάς τους, είναι δυνατό να Îχουν σοβαÏÎÏ‚ επιπτώσεις στην κοινωνία), Ï€.χ. πλημμÏÏες, κατολισθήσεις και καθιζήσεις, χιονοστιβάδες, δασικÎÏ‚ πυÏκαγιÎÏ‚, σεισμοί, εκÏήξεις ηφαιστείων.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="cs">Oblasti ohrožené pÅ™ÃrodnÃmi riziky</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="da">SÃ¥rbare omrÃ¥der, karakteriseret efter naturlige risici (alle atmosfæriske, hydrologiske, seismiske og vulkanske fænomener samt brande, som pÃ¥ grund af stedet, hvor de forekommer, deres omfang og hyppighed kan fÃ¥ alvorlige følger for samfundet), f.eks. oversvømmelser, jordskred og sammensynkning, laviner, skovbrande, jordskælv og vulkanudbrud.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="bg">УÑзвими райони, определени в завиÑимоÑÑ‚ от вида природен риÑк (вÑички атмоÑферни, хидрологични, Ñеизмични, вулканични и огнени ÑвлениÑ, които поради меÑтонахождението, Ñилата и чеÑтотата на проÑвление могат да заÑегнат Ñериозно общеÑтвото), например наводнениÑ, Ñвличане и пропадане на земни маÑи, лавини, горÑки пожари, земетреÑениÑ, Ð¸Ð·Ñ€Ð¸Ð³Ð²Ð°Ð½Ð¸Ñ Ð½Ð° вулкани.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ca">Zones de riscos naturals</skos:prefLabel><skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ca">Zones vulnerables caracteritzades per l’existència de riscos de carà cter natural (qualsevol fenomen atmosfèric, hidrològic, sÃsmic, volcà nic o incendi natural que, atesa la seva localització, gravetat o freqüència, pugui afectar negativament la població), per exemple, inundacions, esllavissades de terres i col·lapses, allaus, incendis forestals, terratrèmols o erupcions volcà niques.</skos:scopeNote></skos:Concept> +<skos:Concept rdf:about="http://rdfdata.eionet.europa.eu/inspirethemes/themes/26"> +<skos:altLabel>ac</skos:altLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sl">OzraÄje</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sv">Fysikaliska förhÃ¥llanden i atmosfären. Inbegriper rumsliga data baserade pÃ¥ mätningar, modeller eller en kombination av dessa, samt mätpunkternas läge.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sv">Atmosfäriska förhÃ¥llanden</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ro">CondiÅ£ii atmosferice</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sk">Fyzikálne podmienky v atmosfére. Patria sem priestorové údaje založené na meraniach, modeloch alebo na kombinácii meranà a modelov vrátane miest meranÃ.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sk">Atmosférické podmienky</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sl">Fizikalne razmere v atmosferi. VkljuÄujejo prostorske podatke, ki temeljijo na merjenjih, vzorcih ali na kombinaciji leteh, in merilne lokacije.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pl">Warunki fizyczne w atmosferze. ObejmujÄ… dane przestrzenne oparte na pomiarach, modelach lub na kombinacji tych dwóch elementów, a także lokalizacje pomiarów.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pl">Warunki atmosferyczne</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pt">Condições fÃsicas da atmosfera. Inclui dados geográficos baseados em medições, em modelos ou numa combinação de ambos, bem como os sÃtios de medição.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pt">Condições atmosféricas</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ro">CondiÅ£iile fizice din atmosferă. Sunt incluse datele spaÅ£iale bazate pe măsurători, pe modele sau pe o combinaÅ£ie între acestea, precum ÅŸi locaÅ£iile de efectuare a măsurătorilor.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="nl">Atmosferische omstandigheden</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="nl">Fysische omstandigheden in de atmosfeer, met inbegrip van ruimtelijke gegevens die gebaseerd zijn op metingen, modellen of een combinatie daarvan, en met inbegrip van meetlocaties.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="mt">Kondizzjonijiet atmosferiÄ‹i</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="mt">Kondizzjonijiet fiżiÄ‹i fl-atmosfera. Hija inkluża data Ä¡eografika bbażata fuq kejl, fuq mudelli jew fuq il-kombinazzjoni tagħhom kif ukoll is-siti tal-kejl.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lv">AtmosfÄ“ras apstÄkļi</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="it">Condizioni atmosferiche</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lt">FizinÄ—s atmosferos sÄ…lygos. Tai apima matavimais, modeliais arba abiem bÅ«dais pagrįstus erdvinius duomenis, nurodant matavimo vietas.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lt">Atmosferos sÄ…lygos</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lv">FizikÄlie atmosfÄ“ras apstÄkļi. Tie ietver telpiskos datus, kuru pamatÄ ir mÄ“rÄ«jumi vai modeļi, vai to kombinÄcija, kÄ arÄ« norÄdes par to veikÅ¡anas vietu.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fr">Conditions physiques dans l'atmosphère. Comprend les données géographiques fondées sur des mesures, sur des modèles ou sur une combinaison des deux, ainsi que les lieux de mesure.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fr">Conditions atmosphériques</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="hu">A légkör fizikai jellemzÅ‘i. Ide tartoznak a méréseken, modelleken vagy ezek kombinációján alapuló téradatok, továbbá a mérési helyek.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="hu">Légköri viszonyok</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="it">Condizioni fisiche dell’atmosfera. Questa voce comprende i dati territoriali basati su misurazioni, su modelli o su una combinazione dei due e comprende i punti di misurazione.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="et">Füüsikalised tingimused atmosfääris. Hõlmab mõõtmiste ja modelleerimise tulemusel või nende kahe meetodi kombineerimisel saadud ruumiandmeid ning mõõtmiskohti.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="et">Atmosfääritingimused</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fi">Ilmakehän tila</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fi">Ilmakehän fysikaaliset olosuhteet. Sisältää mittauksiin, malleihin tai näiden yhdistelmiin perustuvia paikkatietoja sekä tiedot mittauspaikoista.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="es">Condiciones fÃsicas de la atmósfera. Se incluirán datos espaciales basados en mediciones, modelos o en una combinación de ambos, asà como los lugares de medición.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="es">Condiciones atmosféricas</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="en">Physical conditions in the atmosphere. Includes spatial data based on measurements, on models or on a combination thereof and includes measurement locations.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="en">Atmospheric conditions</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="de">Atmosphärische Bedingungen</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="el">ΦυσικÎÏ‚ ιδιότητες της ατμόσφαιÏας. ΠεÏιλαμβάνονται χωÏικά δεδομÎνα βασιζόμενα σε μετÏήσεις, σε μοντÎλα ή σε συνδυασμό τους, καθώς και οι τοποθεσίες μετÏήσεων.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="el">ΑτμοσφαιÏικÎÏ‚ συνθήκες</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="cs">Stav ovzduÅ¡Ã</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="da">Fysiske forhold i atmosfæren. Omfatter geodata, der bygger pÃ¥ mÃ¥linger, modeller eller begge dele; omfatter ogsÃ¥ mÃ¥lepunkternes placering.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="da">Atmosfæriske forhold</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="de">Physikalische Bedingungen in der Atmosphäre. Dazu zählen Geodaten auf der Grundlage von Messungen, Modellen oder einer Kombination aus beiden sowie Angabe der Messstandorte.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="bg">ÐтмоÑферни уÑловиÑ</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="cs">Fyzikálnà stav ovzduÅ¡Ã. Zahrnuje prostorová data založená na měřenÃch, modelech nebo jejich kombinaci, jakož i mÃsta měřenÃ.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="bg">ФизичеÑки атмоÑферни уÑловиÑ. Включва проÑтранÑтвени данни, оÑноваващи Ñе на измерваниÑ, на модели или на ÐºÐ¾Ð¼Ð±Ð¸Ð½Ð°Ñ†Ð¸Ñ Ð¾Ñ‚ двете, както и меÑтата, където Ñа направени измерваниÑта.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ca">Condicions atmosfèriques</skos:prefLabel><skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ca">Condicions fÃsiques de l’atmosfera. S’inclouran dades espacials basades en mesures, models o en una combinació d’ambdós, aixà com els llocs de mesura.</skos:scopeNote></skos:Concept> +<skos:Concept rdf:about="http://rdfdata.eionet.europa.eu/inspirethemes/themes/27"> +<skos:altLabel>mf</skos:altLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sl">Vremenske razmere in njihova merjenja; padavine, temperatura, izhlapevanje, hitrost in smer vetra.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sl">MeteoroloÅ¡ke znaÄilnosti</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sv">VäderförhÃ¥llanden och mätningar av dessa; nederbörd, temperatur, evapotranspiration, vindhastighet och vindriktning.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sv">Geografiska meteorologiska förhÃ¥llanden</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sk">Meteorologické geografické prvky</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sk">Poveternostné podmienky a ich merania; zrážky, teplota, evapotranspirácia, rýchlosÅ¥ a smer vetra.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pt">Condições atmosféricas e sua medição; precipitação, temperatura, evapotranspiração, velocidade e direcção do vento.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pt">CaracterÃsticas geometeorológicas</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ro">CondiÅ£iile meteorologice ÅŸi măsurătorile acestora: precipitaÅ£ii, temperatură, evapotranspiraÅ£ie, viteza ÅŸi direcÅ£ia vântului.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ro">Caracteristici geografice meteorologice</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pl">Warunki atmosferyczne i ich pomiary; opad atmosferyczny, temperatura, ewapotranspiracja, prÄ™dkość i kierunek wiatru.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pl">Warunki meteorologiczno-geograficzne</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="nl">Weersomstandigheden en de meting daarvan; neerslag, temperatuur, verdamping, windsnelheid en windrichting.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="nl">Meteorologische geografische kenmerken</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="mt">KaratteristiÄ‹i Ä¡eografiÄ‹i meteoroloÄ¡iÄ‹i</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lv">Laika apstÄkļi un to mÄ“rÄ«jumi; nokrišņi, temperatÅ«ra, iztvaikoÅ¡ana, vÄ“ja Ätrums un virziens.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lv">MeteoroloÄ£iski Ä£eogrÄfiskie raksturlielumi</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="mt">Il-kondizzjonijiet tat-temp u l-kejl tagħhom; il-preÄ‹ipitazzjoni, it-temperatura, l-evapotraspirazzjoni, il-veloÄ‹ità u ddirezzjoni tar-riħ.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lt">Oro sÄ…lygos ir jų matavimai; krituliai, temperatÅ«ra, evapotranspiracija, vÄ—jo greitis ir kryptis.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lt">MeteorologinÄ—s geografinÄ—s sÄ…lygos</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="it">Elementi geografici meteorologici</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="hu">Meteorológiai földrajzi jellemzÅ‘k</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="it">Condizioni meteorologiche e relative misurazioni; precipitazioni, temperatura, evapotraspirazione, velocità e direzione dei venti.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fi">Sääolot ja niihin liittyvät mittaukset; sademäärä, lämpötila, kokonaishaihdunta, tuulen nopeus ja suunta.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fi">Ilmaston maantieteelliset ominaispiirteet</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="hu">IdÅ‘járási viszonyok és mérésük; csapadék, hÅ‘mérséklet, a felszÃn és a növényzet párolgása, a szél sebessége és iránya.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fr">Conditions météorologiques et leur mesure: précipitations, température, évapotranspiration, vitesse et direction du vent.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fr">Caractéristiques géographiques météorologiques</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="et">Meteoroloogilis-geograafilised tunnusjooned</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="et">Ilmastikutingimused ja nende mõõtmine; sademed, temperatuur, aurumine, tuule kiirus ja suund.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="el">ΜετεωÏολογικά γεωγÏαφικά χαÏακτηÏιστικά</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="en">Weather conditions and their measurements; precipitation, temperature, evapotranspiration, wind speed and direction.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="en">Meteorological geographical features</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="es">Condiciones meteorológicas y sus mediciones; precipitaciones, temperaturas, evapotranspiración, velocidad y dirección del viento.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="es">Aspectos geográficos de carácter meteorológico</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="de">Witterungsbedingungen und deren Messung; Niederschlag, Temperatur, Gesamtverdunstung (Evapotranspiration), Windgeschwindigkeit und Windrichtung.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="de">Meteorologisch-geografische Kennwerte</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="el">ΚαιÏικÎÏ‚ συνθήκες και οι μετÏήσεις τους· ατμοσφαιÏικÎÏ‚ κατακÏημνίσεις, θεÏμοκÏασία, εξατμισοδιαπνοή, ταχÏτητα και διεÏθυνση ανÎμου.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="da">Meteorologisk-geografiske forhold</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="bg">ÐтмоÑферни уÑÐ»Ð¾Ð²Ð¸Ñ Ð¸ измерването им; валежи, температура, евапотранÑпирациÑ, ÑкороÑÑ‚ и поÑока на вÑтъра.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="bg">Метеорологични географÑки характериÑтики</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="cs">PovÄ›trnostnà podmÃnky a jejich měřenÃ; srážky, teplota, výpar z půdy a rostlinného pokryvu, rychlost a smÄ›r vÄ›tru.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="cs">ZemÄ›pisné meteorologické prvky</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="da">Vejrforhold og mÃ¥linger heraf; nedbør, temperatur, evapotranspiration, vindhastighed og -retning.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ca">Aspectes geogrà fics de carà cter meteorològic</skos:prefLabel><skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ca">Condicions meteorològiques i les seves mesures: precipitacions, temperatures, evapotranspiració, velocitat i direcció del vent.</skos:scopeNote></skos:Concept> +<skos:Concept rdf:about="http://rdfdata.eionet.europa.eu/inspirethemes/themes/28"> +<skos:altLabel>of</skos:altLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sv">Geografiska oceanografiska förhÃ¥llanden</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sv">Fysikaliska förhÃ¥llanden i oceanerna (strömmar, salthalt, vÃ¥ghöjd osv.).</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sl">Oceanogeografske znaÄilnosti</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pt">CaracterÃsticas oceanográficas</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ro">CondiÅ£ii fizice ale oceanelor (curenÅ£i, salinitate, înălÅ£imea valurilor etc.).</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ro">Caracteristici geografice oceanografice</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sk">Fyzikálne vlastnosti oceánov (prúdy, slanosÅ¥, výška vĺn atÄ.).</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sk">Oceánografické geografické prvky</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sl">Fizikalne razmere oceanov (tokovi, slanost, viÅ¡ina valov itd.).</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pl">Warunki oceanograficzno-geograficzne</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pt">Condições fÃsicas dos oceanos (correntes, salinidade, altura das ondas, etc.).</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="mt">KaratteristiÄ‹i Ä¡eografiÄ‹i oÄ‹eanografiÄ‹i</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="nl">Fysische kenmerken van oceanen (stroming, zoutgehalte, golfhoogte, enz.).</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="nl">Oceanografische geografische kenmerken</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pl">Warunki fizyczne oceanów (prÄ…dy, zasolenie, wysokość fal itd.).</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lv">OkeÄnu fizikÄlie apstÄkļi (straumes, sÄļums, viļņu augstums, utt.).</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lv">OkeanogrÄfiski Ä£eogrÄfiskie raksturlielumi</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="mt">Kondizzjonijiet fiżiÄ‹i ta' l-oÄ‹eani (kurrenti, imluħa, għoli tal-mewÄ¡, eċċ.).</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="it">Elementi geografici oceanografici</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lt">FizinÄ—s vandenynų charakteristikos (srovÄ—s, druskingumas, bangų aukÅ¡tis ir t. t.).</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lt">OkeanografinÄ—s geografinÄ—s sÄ…lygos</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="it">Condizioni fisiche degli oceani (correnti, salinità , altezza delle onde, ecc.).</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="hu">Az óceánok fizikai jellemzÅ‘i (áramlatok, sótartalom, hullámmagasság stb.).</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="hu">Oceanográfiai földrajzi jellemzÅ‘k</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fi">Merialueitten fysikaaliset olosuhteet (esimerkiksi virtaukset, suolapitoisuus ja aaltojen korkeus).</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fr">Conditions physiques des océans (courants, salinité, hauteur des vagues, etc.).</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fr">Caractéristiques géographiques océanographiques</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fi">Merentutkimuksen maantieteelliset ominaispiirteet</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="et">Füüsikalised tingimused ookeanides (hoovused, soolasisaldus, lainekõrgus jne).</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="et">Okeanograafilis-geograafilised tunnusjooned</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="en">Oceanographic geographical features</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="es">Condiciones fÃsicas de los océanos (corrientes, salinidad, altura del oleaje, etc.).</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="es">Rasgos geográficos oceanográficos</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="da">Oceanografiske/geografiske forhold</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="de">Physikalische Bedingungen der Ozeane (Strömungsverhältnisse, Salinität, Wellenhöhe usw.).</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="de">Ozeanografisch-geografische Kennwerte</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="el">ΦυσικÎÏ‚ ιδιότητες των ωκεανών (ÏεÏματα, αλατότητα, Ïψος κυμάτων, κ.λπ.).</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="el">ΩκεανογÏαφικά γεωγÏαφικά χαÏακτηÏιστικά</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="en">Physical conditions of oceans (currents, salinity, wave heights, etc.).</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="cs">ZemÄ›pisné oceánografické prvky</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="da">Fysiske forhold til havs (strømme, saltholdighed, bølgehøjde osv.)</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="bg">ОкеанографÑки географÑки характериÑтики</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="cs">Fyzikálnà stav oceánů (proudy, slanost, výška vln atd.).</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="bg">ФизичеÑко ÑÑŠÑтоÑние на океаните (течениÑ, ÑоленоÑÑ‚, виÑочина на вълните и други).</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ca">Aspectes geogrà fics oceanogrà fics</skos:prefLabel><skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ca">Condicions fÃsiques dels oceans (corrents, salinitat, altura de l'onatge, etc.).</skos:scopeNote></skos:Concept> +<skos:Concept rdf:about="http://rdfdata.eionet.europa.eu/inspirethemes/themes/29"> +<skos:altLabel>sr</skos:altLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sv">Fysikaliska förhÃ¥llanden i hav och saltsjöar indelade i omrÃ¥den och delomrÃ¥den med likartade egenskaper.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sv">HavsomrÃ¥den</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sl">Fizikalne razmere morij in slanih vodnih teles, razdeljenih v regije in podregije s skupnimi znaÄilnostmi.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sl">Morske regije</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sk">Fyzikálne vlastnosti morà a útvarov slanej vody rozdelených na regióny a podregióny so spoloÄnými vlastnosÅ¥ami.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sk">Morské regióny</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ro">CondiÅ£ii fizice ale mărilor ÅŸi corpurilor de apă sărată divizate în regiuni ÅŸi subregiuni cu caracteristici comune.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ro">Regiuni maritime</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="nl">Zeegebieden</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pl">Warunki fizyczne mórz i akwenów sÅ‚onowodnych w podziale na regiony i subregiony o wspólnych cechach.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pl">Regiony morskie</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pt">Condições fÃsicas dos mares e massas de água salinas divididas em regiões e sub-regiões com caracterÃsticas comuns.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pt">Regiões marinhas</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="mt">ReÄ¡juni tal-baħar</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="nl">Fysische kenmerken van zeeën en zoutwateroppervlakken, ingedeeld in regio's en subregio's met gemeenschappelijke kenmerken.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lv">JÅ«ru reÄ£ioni</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="mt">Kondizzjonijiet fiżiÄ‹i ta' l-ibħra u korpi ta' ilma mielaħ imqassma f'reÄ¡juni u sub-reÄ¡juni b'karatteristiÄ‹i komuni.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lt">JÅ«rų regionai</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lv">PÄ“c noteiktÄm kopÄ«gÄm iezÄ«mÄ“m izveidotos apgabalos un apakÅ¡apgabalos sadalÄ«tu jÅ«ru un sÄlsÅ«dens Å«denstilpņu fiziskie stÄvokļi.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="it">Regioni marine</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lt">JÅ«rų ir sÅ«rių vandens telkinių, pagal bendras charakteristikas suskirstytų į regionus ir paregionius, fizinÄ—s charakteristikos.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="hu">A tengerek és sósvizű vÃztestek fizikai jellemzÅ‘i, közös tulajdonságaik alapján régiókra és alrégiókra osztva.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="hu">Tengeri régiók</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="it">Condizioni fisiche dei mari e dei corpi idrici salmastri suddivisi in regioni e sottoregioni con caratteristiche comuni.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fr">Régions maritimes</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fr">Conditions physiques des mers et des masses d'eau salée divisées en régions et en sous-régions à caractéristiques communes.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="et">Merepiirkonnad</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fi">Yhteisten ominaispiirteitten mukaisesti alueisiin ja osa-alueisiin jaoteltujen merien ja suolaisten vesistöjen fyysiset olosuhteet.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fi">Merialueet</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="es">Regiones marinas</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="et">Füüsikalised tingimused meredes ja soolase veega veekogudes, mis on ühiste tunnuste alusel jaotatud piirkondadeks ja alampiirkondadeks.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="en">Sea regions</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="es">Condiciones fÃsicas de los mares y masas de aguas salinas, por regiones y subregiones con caracterÃsticas comunes.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="en">Physical conditions of seas and saline water bodies divided into regions and sub-regions with common characteristics.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="el">Θαλάσσιες πεÏιοχÎÏ‚</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="cs">MoÅ™ské oblasti</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="da">Fysiske forhold i have og saltholdige søer, opdelt pÃ¥ omrÃ¥der og delomrÃ¥der med fælles egenskaber.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="da">HavomrÃ¥der</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="de">Physikalische Bedingungen von Meeren und salzhaltigen Gewässern, aufgeteilt nach Regionen und Teilregionen mit gemeinsamen Merkmalen.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="de">Meeresregionen</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="el">ΦυσικÎÏ‚ ιδιότητες των θαλασσών και των αλατοÏχων υδατικών συστημάτων, με υποδιαίÏεση ανά πεÏιοχÎÏ‚ και υποπεÏιοχÎÏ‚ με κοινά χαÏακτηÏιστικά.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="cs">Fyzikálnà stav mořà a slaných vod rozdÄ›lených do regionů a subregionů se spoleÄnými vlastnostmi.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="bg">ФизичеÑко ÑÑŠÑтоÑние на моретата и Ñолени водни маÑи, разделени на региони и подрегиони Ñ Ð¾Ð±Ñ‰Ð¸ характериÑтики.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="bg">МорÑки региони</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ca">Regions marines</skos:prefLabel><skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ca">Condicions fÃsiques dels mars i masses d'aigua salina dividides en regions i sub-regions amb caracterÃstiques comunes.</skos:scopeNote></skos:Concept> +<skos:Concept rdf:about="http://rdfdata.eionet.europa.eu/inspirethemes/themes/3"> +<skos:altLabel>gn</skos:altLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sl">Zemljepisna imena</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sv">Namn pÃ¥ omrÃ¥den, regioner, platser, städer, förorter, tätorter och annan bebyggelse, samt andra geografiska och topografiska företeelser av allmänt eller historiskt intresse.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sv">Geografiska namn</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sk">Zemepisné názvy</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sl">Imena obmoÄij, regij, krajev, velemest, predmestij, mest ali zaselkov ali kateri koli geografski ali topografski pojav javnega ali zgodovinskega pomena.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sk">Názvy oblastÃ, regiónov, lokalÃt, veľkomiest, predmestÃ, miest alebo osád alebo akéhokoľvek zemepisného Äi topografického prvku verejného alebo historického významu.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ro">Nume de zone, regiuni, localităţi, oraÅŸe mari, suburbii, oraÅŸe mici sau aÅŸezări, sau orice alt element geografic ori topografic de interes public sau istoric.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ro">Denumiri geografice</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pl">Nazwy geograficzne</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pt">Denominações das zonas, regiões, localidades, cidades, subúrbios, pequenas cidades ou povoações, ou de qualquer entidade geográfica ou topográfica de interesse público ou histórico.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pt">ToponÃmia</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lv">ToponÄ«mi</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="mt">Ismijiet ta' żoni, reÄ¡juni, lokalitajiet, bliet, subborgi, jew inħawi abitati oħra, jew kull karatteristika Ä¡eografika jew topografika ta' interess pubbliku jew storiku.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="mt">Ismijiet Ä¡eografiÄ‹i</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="nl">Namen van gebieden, regio's, plaatsen, steden, voorsteden, gemeenten, nederzettingen, of andere geografische of topografische kenmerken van openbaar of historisch belang.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="nl">Geografische namen</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pl">Nazwy obszarów, regionów, miejscowoÅ›ci, miast, przedmieść lub osiedli, albo każdy inny obiekt geograficzny lub topograficzny o znaczeniu publicznym lub historycznym.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fr">Dénominations géographiques</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="hu">Területek, régiók, helységek, nagyvárosok, elÅ‘városok, városok vagy települések, illetve bármely, a nyilvánosság érdeklÅ‘désére számot tartó vagy történeti jelentÅ‘sségre szert tett földrajzi vagy topográfiai jellegzetesség.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="hu">Földrajzi nevek</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="it">Denominazione di aree, regioni, località , città , periferie, paesi o centri abitati, o qualsiasi elemento geografico o topografico di interesse pubblico o storico.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="it">Nomi geografici</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lt">SriÄių, regionų, vietovių, miestų, priemiesÄių, miestelių, gyvenvieÄių ar kitų viešąjÄ… ar istorinÄ™ reikÅ¡mÄ™ turinÄių geografinių ar topografinių elementų pavadinimai.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lt">Geografiniai pavadinimai</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lv">Rajonu, reÄ£ionu, apvidu, lielpilsÄ“tu, priekÅ¡pilsÄ“tu, pilsÄ“tu, apdzÄ«votu vietu vai jebkÄdu valsts mÄ“roga vai vÄ“sturiskas nozÄ«mes Ä£eogrÄfisku vai topogrÄfisku objektu nosaukumi.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fr">Noms de zones, de régions, de localités, de grandes villes, de banlieues, de villes moyennes ou d'implantations, ou tout autre élément géographique ou topographique d'intérêt public ou historique.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fi">Maa-alueiden, alueiden, paikkakuntien, suurkaupunkien, esikaupunkien, kaupunkien tai taajamien nimet tai muut sellaisten maantieteellisten tai topografisten kohteiden nimet, joilla on yleistä tai historiallista merkitystä.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fi">Paikannimet</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="et">Alade, piirkondade, kohtade, linnade, äärelinnade, alevite või asulate nimed või muud üldist või ajaloolist huvi pakkuvad mis tahes geograafilised või topograafilised tunnused.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="et">Geograafilised nimed</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="es">Nombres geográficos</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="el">ΤοπωνÏμια εκτάσεων, πεÏιοχών, τοποθεσιών, πόλεων, Ï€Ïοαστίων, κωμοπόλεων ή οικισμών, ή οποιοδήποτε γεωγÏαφικό ή τοπογÏαφικό χαÏακτηÏιστικό δημόσιου ή ιστοÏÎ¹ÎºÎ¿Ï ÎµÎ½Î´Î¹Î±Ï†ÎÏοντος.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="el">ΤοπωνÏμια</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="en">Names of areas, regions, localities, cities, suburbs, towns or settlements, or any geographical or topographical feature of public or historical interest.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="en">Geographical names</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="es">Nombres de zonas, regiones, localidades, ciudades, periferias, poblaciones o asentamientos, o cualquier rasgo geográfico o topográfico de interés público o histórico.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="de">Geografische Bezeichnungen</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="bg">ГеографÑки наименованиÑ</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="cs">Jména oblastÃ, regionů, mÃst, velkomÄ›st, pÅ™edmÄ›stÃ, mÄ›st nebo sÃdel nebo jakýchkoli zemÄ›pisných nebo topografických útvarů veÅ™ejného zájmu nebo historického významu.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="cs">ZemÄ›pisné názvy</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="da">Navne pÃ¥ omrÃ¥der, regioner, lokaliteter, byer, forstæder, bebyggelser og alle former for geografiske og topografiske objekter af offentlig eller historisk interesse.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="da">Stednavne</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="de">Namen von Gebieten, Regionen, Orten, Großstädten, Vororten, Städten oder Siedlungen sowie jedes geografische oder topografische Merkmal von öffentlichem oder historischem Interesse.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="bg">ÐÐ°Ð¸Ð¼ÐµÐ½Ð¾Ð²Ð°Ð½Ð¸Ñ Ð½Ð° облаÑти, региони, меÑтноÑти, големи градове, предградиÑ, малки градове или наÑелени меÑта, или географÑка или топографÑка характериÑтика от общеÑтвен или иÑторичеÑки интереÑ.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ca">Noms geogrà fics</skos:prefLabel><skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ca">Noms de zones, regions, localitats, ciutats, perifèries, poblacions o assentaments, o qualsevol tret geogrà fic o topogrà fic d’interès públic o històric.</skos:scopeNote></skos:Concept> +<skos:Concept rdf:about="http://rdfdata.eionet.europa.eu/inspirethemes/themes/30"> +<skos:altLabel>br</skos:altLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sv">OmrÃ¥den som har relativt homogena ekologiska förhÃ¥llanden med likartade egenskaper.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sv">Biogeografiska regioner</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sl">Biogeografske regije</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sk">Biogeografické regióny</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sl">ObmoÄja z relativno homogenimi ekoloÅ¡kimi razmerami s skupnimi znaÄilnostmi.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ro">Regiuni biogeografice</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sk">Oblasti s pomerne rovnorodými ekologickými vlastnosÅ¥ami so spoloÄnými vlastnosÅ¥ami.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pl">Obszary o stosunkowo jednorodnych warunkach ekologicznych i o wspólnych cechach.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pl">Regiony biogeograficzne</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pt">Zonas de condições ecológicas relativamente homogéneas com caracterÃsticas comuns.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pt">Regiões biogeográficas</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ro">Zone care prezintă condiÅ£ii ecologice relativ omogene, având caracteristici comune.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="nl">Gebieden met betrekkelijk homogene ecologische omstandigheden die gemeenschappelijke kenmerken vertonen.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="nl">Biogeografische gebieden</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lt">Teritorijos, kurioms bÅ«dingos palyginti homogeniÅ¡kos ekologinÄ—s sÄ…lygos ir panaÅ¡ios charakteristikos.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lt">Biogeografiniai regionai</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lv">Apgabali ar relatÄ«vi viendabÄ«giem ekoloÄ£iskiem apstÄkļiem un noteiktÄm kopÄ«gam iezÄ«mÄ“m.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lv">BioÄ£eogrÄfiskie reÄ£ioni</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="mt">ReÄ¡juni bijo-Ä¡eografiÄ‹i</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="mt">Å»oni ta' kondizzjonijiet ekoloÄ¡iÄ‹i relattivament omoÄ¡enji b'karatteristiÄ‹i komuni.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="it">Aree che presentano condizioni ecologiche relativamente omogenee con caratteristiche comuni.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="it">Regioni biogeografiche</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="hu">Biogeográfiai régiók</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fr">Régions biogéographiques</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="hu">Közös tulajdonságokkal bÃró, viszonylag homogén ökológiai jellemzÅ‘kkel rendelkezÅ‘ térségek.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fi">Biomaantieteelliset alueet</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fr">Zones présentant des conditions écologiques relativement homogènes avec des caractéristiques communes.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="et">Bio-geograafilised piirkonnad</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fi">Alueet, joilla on suhteellisen yhtenäiset ekologiset olosuhteet ja yhteisiä ominaispiirteitä.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="en">Bio-geographical regions</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="es">Zonas dotadas de condiciones ecológicas relativamente homogéneas con unas caracterÃsticas comunes.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="es">Regiones biogeográficas</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="et">Suhteliselt ühetaoliste ökoloogiliste tingimustega ja ühiste tunnustega piirkonnad.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="en">Areas of relatively homogeneous ecological conditions with common characteristics.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="el">ΠεÏιοχÎÏ‚ σχετικώς ομοιογενών οικολογικών συνθηκών με κοινά χαÏακτηÏιστικά.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="el">ΒιογεωγÏαφικÎÏ‚ πεÏιοχÎÏ‚</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="de">Gebiete mit relativ homogenen ökologischen Bedingungen und gemeinsamen Merkmalen.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="de">Biogeografische Regionen</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="da">Biogeografiske regioner</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="da">OmrÃ¥der, der har relativt ensartede økologiske forhold med fælles egenskaber.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="cs">Oblasti s pomÄ›rnÄ› stejnorodými ekologickými podmÃnkami a spoleÄnými vlastnostmi.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="cs">Bioregiony</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="bg">БиогеографÑки региони</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="bg">Райони Ñ Ð¾Ñ‚Ð½Ð¾Ñително еднородни екологични уÑÐ»Ð¾Ð²Ð¸Ñ Ñ Ð¾Ð±Ñ‰Ð¸ характериÑтики.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ca">Regions biogeogrà fiques</skos:prefLabel><skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ca">Zones dotades de condicions ecològiques relativament homogènies amb unes caracterÃstiques comunes.</skos:scopeNote></skos:Concept> +<skos:Concept rdf:about="http://rdfdata.eionet.europa.eu/inspirethemes/themes/31"> +<skos:altLabel>hb</skos:altLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sv">Naturtyper och biotoper</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sl">Habitati in biotopi</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sv">Geografiska omrÃ¥den som kännetecknas av särskilda ekologiska förhÃ¥llanden, processer, strukturer och (livsstödjande) funktioner och som är fysiska livsmiljöer för organismer som lever där. Inbegriper land- och vattenomrÃ¥den med särskilda geografiska, abiotiska och biotiska egenskaper, oavsett om de är naturliga eller delvis naturliga.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sk">Habitaty a biotopy</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sl">Geografska obmoÄja, za katera so znaÄilne posebne ekoloÅ¡ke razmere, procesi, struktura in funkcije, ki fiziÄno omogoÄajo organizmom, da tam živijo. VkljuÄujejo kopenska in vodna obmoÄja, ki se razlikujejo po geografskih, abiotskih in biotskih znaÄilnostih, ne glede na to, ali so popolnoma naravna ali polnaravna.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sk">Geografické oblasti, pre ktoré sú charakteristické Å¡pecifické ekologické vlastnosti, procesy, Å¡truktúra a (pre život dôležité) funkcie, ktoré fyzikálne podporujú organizmy žijúce na ich územÃ. Patria sem suchozemské a vodné oblasti rozlÃÅ¡ené podľa geografických, abiotických a biotických prvkov, buÄ výhradne prÃrodné, alebo poloprÃrodné.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ro">Habitate ÅŸi biotopuri</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pt">Habitats e biótopos</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ro">Zone geografice caracterizate prin condiÅ£ii ecologice specifice, procese, structură ÅŸi funcÅ£ii (de menÅ£inere a vieÅ£ii pe pământ) care sprijină fizic organismele care trăiesc acolo. Sunt incluse zonele terestre ÅŸi acvatice care se disting prin caracteristicile lor geografice, abiotice ÅŸi biotice, indiferent că acestea sunt naturale sau seminaturale.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pl">Siedliska i obszary przyrodniczo jednorodne</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pt">Zonas geográficas caracterizadas por condições ecológicas, processos, estrutura e funções (de apoio à s necessidades básicas) especÃficos que constituem o suporte fÃsico dos organismos que nelas vivem. Inclui zonas terrestres e aquáticas, naturais ou semi-naturais, diferenciadas pelas suas caracterÃsticas geográficas, abióticas e bióticas.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="nl">Habitats en biotopen</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pl">Obszary geograficzne odznaczajÄ…ce siÄ™ szczególnymi warunkami przyrodniczymi, procesami, strukturÄ… i (podtrzymujÄ…cymi życie) funkcjami, które fizycznie umożliwiajÄ… egzystencjÄ™ żyjÄ…cym na nich organizmom. ObejmujÄ… obszary lÄ…dowe i wodne wyróżniajÄ…ce siÄ™ cechami geograficznymi, abiotycznymi i biotycznymi, czy to w caÅ‚oÅ›ci naturalne czy też półnaturalne.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="mt">L-abitati naturali u l-bijotopi</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="nl">Geografische gebieden die worden gekenmerkt door specifieke ecologische omstandigheden, processen, structuur en (leven ondersteunende) functies die fysiek de daar levende organismen ondersteunen, met inbegrip van volledig natuurlijke of semi-natuurlijke land- en wateroppervlakken, onderscheiden naar geografische, abiotische en biotische kenmerken.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lv">DzÄ«votnes un biotopi</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="mt">Å»oni Ä¡eografiÄ‹i kkaratterizzati minn kondizzjonijiet ekoloÄ¡iÄ‹i, proÄ‹essi, struttura, u funzjonijiet (sostenn tal-ħajja) speÄ‹ifiÄ‹i li jsostnu fiżikament l-organiżmi li jgħixu fihom. Huma inklużi żoni ta' l-art jew ta' l-ilma li jingħarfu permezz ta' karatteristiÄ‹i Ä¡eografiÄ‹i, abijotiÄ‹i u bijotiÄ‹i, sew jekk għal kollox naturali kif ukoll jekk semi-naturali.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lt">BuveinÄ—s ir biotopai</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lv">Ä¢eogrÄfiskie apgabali, kuros ir Ä«paÅ¡i ekoloÄ£iskie apstÄkļi, procesi, struktÅ«ra, un (dzÄ«vÄ«bas atbalsta) funkcijas, kas fiziski atbalsta organismus, kuri tajos dzÄ«vo. Tie ietver pilnÄ«gi un daļēji dabÄ«gas sauszemes vai Å«dens platÄ«bas, ko raksturo Ä£eogrÄfiski, abiotiski un biotiski faktori.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="it">Habitat e biotopi</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lt">GeografinÄ—s teritorijos, kurioms bÅ«dingos specifinÄ—s ekologinÄ—s sÄ…lygos, procesai, struktÅ«ra ir (gyvybÄ—s palaikymo) funkcijos, sudaranÄios gyvenimui tinkamas fizines sÄ…lygas ten gyvenantiems organizmams. Tai apima visiÅ¡kai natÅ«ralias ir pusiau natÅ«ralias sausumos ir vandens teritorijas, kurios turi skirtingas geografines, abiotines ir biotines sÄ…lygas.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="it">Aree geografiche caratterizzate da condizioni ecologiche specifiche, processi, strutture e funzioni (di supporto alla vita) che supportano materialmente gli organismi che le abitano. Sono comprese le zone terrestri e acquatiche, interamente naturali o seminaturali, distinte in base agli elementi geografici, abiotici e biotici.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="hu">Olyan földrajzi területek, amelyeket különleges ökológiai feltételek, folyamatok, struktúra és (az élet fenntartásához kapcsolódó) funkciók jellemeznek, amelyek az ott élÅ‘ organizmusok számára kedvezÅ‘ fizikai feltételeket teremtenek. Ide tartoznak azok a szárazföldi és vÃzi térségek, amelyeket – akár teljesen természetesek, akár félig természetesek – földrajzi, abiotikus és biotikus jellemzÅ‘ik alapján különböztetnek meg.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="hu">ÉlÅ‘helyek és biotópok</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fr">Habitats et biotopes</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fr">Zones géographiques ayant des caractéristiques écologiques particulières — conditions, processus, structures et fonctions (de maintien de la vie) — favorables aux organismes qui y vivent. Sont incluses les zones terrestres et aquatiques qui se distinguent par leurs caractéristiques géographiques, abiotiques ou biotiques, qu'elles soient naturelles ou semi-naturelles.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fi">Elinympäristöt ja biotoopit</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fi">Maantieteelliset alueet, joille ovat ominaisia erityiset ekologiset olosuhteet, prosessit, rakenne ja (elämää ylläpitävät) toiminnot, jotka tukevat fysikaalisesti alueella eläviä organismeja. Sisältää maa- ja vesialueet, joilla on omat maantieteelliset, abioottiset ja bioottiset ominaisuutensa ja jotka ovat joko luonnontilassa tai osittain luonnontilassa.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="et">Elupaigad ja biotoobid</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="et">Geograafilised alad, mida iseloomustavad spetsiifilised ökoloogilised tingimused, protsessid, struktuurid ja (elu alalhoiu-) funktsioonid, mis füüsiliselt toetavad seal elavaid organisme. Hõlmab maa- ja veealasid, mida eristatakse geograafiliste, abiootiliste ja biootiliste tunnuste järgi ja mis on täielikult looduslikud või poollooduslikud.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="en">Habitats and biotopes</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="es">Zonas geográficas caracterizadas por unas condiciones ecológicas especÃficas, procesos, estructuras y funciones de apoyo vital que sean soporte fÃsico de los organismos que viven en ellas. Se incluirán zonas terrestres y acuáticas diferenciadas por sus caracterÃsticas geográficas, abióticas y bióticas, tanto si son enteramente naturales como seminaturales.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="es">Hábitats y biotopos</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="en">Geographical areas characterised by specific ecological conditions, processes, structure, and (life support) functions that physically support the organisms that live there. Includes terrestrial and aquatic areas distinguished by geographical, abiotic and biotic features, whether entirely natural or semi-natural.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="el">Ενδιαιτήματα και βιότοποι</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="de">Lebensräume und Biotope</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="el">ΓεωγÏαφικÎÏ‚ πεÏιοχÎÏ‚ που χαÏακτηÏίζονται από ειδικÎÏ‚ οικολογικÎÏ‚ συνθήκες, διαδικασίες, δομή και λειτουÏγίες (υποστήÏιξης της ζωής) οι οποίες στηÏίζουν φυσικά τους οÏγανισμοÏÏ‚ που ενδιαιτοÏν. ΠεÏιλαμβάνονται χεÏσαίες και υδάτινες εκτάσεις, διακÏινόμενες ανάλογα με τα γεωγÏαφικά, αβιοτικά και βιοτικά χαÏακτηÏιστικά τους, ανεξαÏτήτως εάν είναι πλήÏως φυσικÎÏ‚ ή ημιφυσικÎÏ‚.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="de">Geografische Gebiete mit spezifischen ökologischen Bedingungen, Prozessen, Strukturen und (lebensunterstützenden) Funktionen als physische Grundlage für dort lebende Organismen. Dies umfasst auch durch geografische, abiotische und biotische Merkmale gekennzeichnete natürliche oder naturnahe terrestrische und aquatische Gebiete.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="da">Levesteder og biotoper</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="da">Geografiske omrÃ¥der, der er kendetegnet ved særlige økologiske forhold, processer, strukturer og (livsunderstøttende) funktioner, og som er det fysiske grundlag for de organismer, der lever der. Omfatter land- og vandomrÃ¥der, som er kendetegnet ved særlige geografiske, abiotiske eller biotiske forhold, uanset om de er helt eller delvis naturlige.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="bg">МеÑÑ‚Ð¾Ð¾Ð±Ð¸Ñ‚Ð°Ð½Ð¸Ñ Ð¸ биотопи</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="cs">ZemÄ›pisné oblasti vyznaÄujÃcà se zvláštnÃmi ekologickými podmÃnkami, procesy, strukturami a (životnÄ› důležitými) funkcemi, které skýtajà fyzickou podporu organismům, které v nich žijÃ. Zahrnujà pozemské a vodnà oblasti rozliÅ¡ené podle zemÄ›pisných, abiotických a biotických prvků, pÅ™irozené i ÄásteÄnÄ› pÅ™irozené povahy.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="cs">StanoviÅ¡tÄ› a biotopy</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="bg">ГеографÑки райони, характеризиращи Ñе ÑÑŠÑ Ñпецифични екологични уÑловиÑ, процеÑи, Ñтруктура и (животоподпо- магащи) функции, подпомагащи физичеÑки организмите, които ги обитават. Включват земни или водни райони, отличаващи Ñе Ñ Ð½Ð°Ð¿ÑŠÐ»Ð½Ð¾ еÑтеÑтвени или полуеÑтеÑтвени географÑки, абиотични и биотични характериÑтики.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ca">Hà bitats i biòtops</skos:prefLabel><skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ca">Zones geogrà fiques caracteritzades per unes condicions ecològiques especÃfiques, processos, estructures i funcions de recolzament vital que siguin suport fÃsic dels organismes que hi viuen. S’inclouran zones terrestres i aquà tiques diferenciades per les seves caracterÃstiques geogrà fiques, abiòtiques i biòtiques, tant si són enterament naturals com seminaturals.</skos:scopeNote></skos:Concept> +<skos:Concept rdf:about="http://rdfdata.eionet.europa.eu/inspirethemes/themes/32"> +<skos:altLabel>sd</skos:altLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sv">Arters utbredning</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sv">Geografisk fördelning av djur- och växtarters förekomst i rutnät, regioner, administrativa enheter eller andra analytiska enheter.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sl">Geografska porazdelitev pojavljanja živalskih in rastlinskih vrst, razvrÅ¡Äenih po koordinatah, regiji, upravni enoti ali drugi analitiÄni enoti.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sl">Porazdelitev vrst</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sk">Výskyt druhov</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ro">Repartizarea speciilor</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sk">Geografické rozdelenie výskytu živoÄÃÅ¡nych a rastlinných druhov zoskupený podľa siete, regiónu, administratÃvnej jednotky alebo inej analytickej jednotky.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pt">Distribuição das espécies</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ro">Repartizarea geografică a speciilor de animale ÅŸi plante, regrupate pe grilă, regiune, unitate administrativă sau altă unitate analitică.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pt">Distribuição geográfica da ocorrência de espécies animais e vegetais agregadas por quadrÃcula, região, unidade administrativa ou outra unidade analÃtica.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pl">Rozmieszczenie gatunków</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pl">Geograficzne rozmieszczenie wystÄ™powania gatunków zwierzÄ…t i roÅ›lin pogrupowanych wedÅ‚ug siatki geograficznej, regionu, jednostki administracyjnej lub innej jednostki analitycznej.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="nl">Spreiding van soorten</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="mt">Distribuzzjoni ta' l-ispeÄ‹i</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="nl">Geografische spreiding van dier- en plantensoorten per raster, regio, administratieve eenheid of andere analytische eenheid.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lv">Sugu izplatÄ«ba</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="mt">Distribuzzjoni Ä¡eografika ta' l-okkorrenza ta' speÄ‹i ta' annimali u ta' pjanti miÄ¡bura flimkien skond il-grilja, ir-reÄ¡jun, l-unità amministrattiva jew unità analitika oħra.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lv">DzÄ«vnieku un augu sugu Ä£eogrÄfiskais sadalÄ«jums, grupÄ“jot pÄ“c koordinÄtu tÄ«kla, reÄ£iona, administratÄ«vÄm vai citÄm analÄ«tiskÄm vienÄ«bÄm.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lt">Rūšių pasiskirstymas</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="it">Distribuzione delle specie</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lt">Geografinis gyvÅ«nų ir augalų rūšių pasiskirstymas pagal tinklelį, regionÄ…, administracinį ar kitÄ… analitinį vienetÄ….</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="it">Distribuzione geografica delle specie animali e vegetali aggregate per griglia, regione, unità amministrativa o altra unità analitica.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="hu">A fajok megoszlása</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="hu">Az állat- és növényfajok elÅ‘fordulásának földrajzi eloszlása, térképrács, régió, közigazgatási egység vagy más elemzési egység alapján összesÃtve.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fr">Répartition des espèces</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fi">Lajien levinneisyys</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fr">Répartition géographique de l'occurrence des espèces animales et végétales regroupées par grille, région, unité administrative ou autre unité analytique.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="et">Liikide jaotumine</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fi">Eläin- ja kasvilajien esiintymien maantieteellinen levinneisyys ruudukoittain, alueittain, hallintoyksiköittäin tai muiden analyyttisten yksiköitten mukaisesti jaoteltuna.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="et">Taime- ja loomaliikide geograafiline levik ruutvõrgu, piirkondade, haldusüksuste või muude jaotusüksuste kaupa.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="es">Distribución de las especies</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="es">Distribución geográfica de las especies animales y vegetales referidas a una cuadrÃcula, región, unidad administrativa u otro tipo de unidad analÃtica.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="en">Species distribution</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="el">Κατανομή ειδών</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="en">Geographical distribution of occurrence of animal and plant species aggregated by grid, region, administrative unit or other analytical unit.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="de">Verteilung der Arten</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="el">ΓεωγÏαφική κατανομή ειδών πανίδας και χλωÏίδας, ανά κάνναβο, πεÏιοχή, διοικητική ενότητα ή άλλη ενότητα ανάλυσης.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="cs">Rozloženà druhů</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="da">Den geografiske fordeling af forekomsten af dyre- og plantearter i kvadratnetceller, forvaltningsenheder eller andre analytiske enheder.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="da">Artsfordeling</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="de">Geografische Verteilung des Auftretens von Tier- und Pflanzenarten, zusammengefasst in Gittern, Region, Verwaltungseinheit oder sonstigen analytischen Einheiten.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="cs">ZemÄ›pisné rozloženà výskytu živoÄiÅ¡ných a rostlinných druhů seskupených podle souÅ™adnicové sÃtÄ›, regionu, správnà jednotky nebo jiné analytické jednotky.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="bg">Разпределение на видовете</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="bg">ГеографÑко разпределение на животинÑките и раÑтителните видове, предÑтавено обобщено по координати, регион, админиÑтративна единица или друга аналитична единица.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ca">Distribució de les espècies</skos:prefLabel><skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ca">Distribució geogrà fica de les especies animals i vegetals referides a una quadrÃcula, regió, unitat administrativa o un altre tipus d’unitat analÃtica.</skos:scopeNote></skos:Concept> +<skos:Concept rdf:about="http://rdfdata.eionet.europa.eu/inspirethemes/themes/33"> +<skos:altLabel>er</skos:altLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sk">Zdroje energie</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sl">Energetski viri, vkljuÄno z ogljikovodiki, vodno energijo, bioenergijo, soncem, vetrom itd., kjer je to ustrezno vkljuÄno s podatki o globini/viÅ¡ini glede velikosti vira.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sl">Energetski viri</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sv">Energiresurser, inbegripet kolväten, vattenkraft, bioenergi, sol, vind osv., i tillämpliga fall med djup-/höjdinformation om resursens omfattning.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sk">Zdroje energie vrátane uhľovodÃkov, vodnej energie, energie z biomasy, solárnej energie, veternej energie atÄ., ak je to možné vrátane informácie o Å¡Ãrke a dĺžke rozlohy zdroja.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sv">Energiresurser</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pt">Recursos energéticos</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ro">Resurse energetice precum hidrocarburi, energia hidraulică, bioenergia, energia solară, energia eoliană etc., însoÅ£ite de informaÅ£ii privind adâncimea/înălÅ£imea la care se află resursa, după caz.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ro">Resurse energetice</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pl">Zasoby energetyczne</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pt">Recursos energéticos, incluindo os de hidrocarbonetos, hidroeléctricos, de bio-energias, de energia solar, eólica, etc., incluindo, quando pertinente, informação sobre as cotas de profundidade/altura do recurso.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pl">Zasoby energii, w tym wÄ™glowodory, energia wodna, bioenergia, energia sÅ‚oneczna, wiatrowa itd., w odpowiednich przypadkach łącznie z informacjami dotyczÄ…cymi głębokoÅ›ci/wysokoÅ›ci i rozmiarów danych zasobów.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="nl">Energiebronnen met inbegrip van koolwaterstof, waterkracht, bio-energie, zon, wind enz., waar passend met inbegrip van diepte/hoogte-informatie over de omvang van de bron.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="nl">Energiebronnen</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lv">EnerÄ£ijas resursi</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="mt">Riżorsi ta' enerÄ¡ija inklużi idrokarboni, enerÄ¡ija idro-elettrika, bijo-enerÄ¡ija, bix-xemx, bir-riħ, eċċ., fejn ikun rilevanti, inkluża informazzjoni dwar il-fond/l-għoli rigward id-daqs tar-riżors.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="mt">Riżorsi ta' enerÄ¡ija</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lt">Energijos iÅ¡tekliai</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lv">EnerÄ£ijas resursi, tostarp ogļūdeņraži, Å«dens enerÄ£ija, bioenerÄ£ija, saules enerÄ£ija, vÄ“ja enerÄ£ija, utt., attiecÄ«gÄ gadÄ«jumÄ ietverot informÄciju par dziļumu/augstumu attiecÄ«bÄ uz resursu apmÄ“ru.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="it">Risorse energetiche</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lt">Energijos iÅ¡tekliai, įskaitant angliavandenilius, hidroenergijÄ…, bioenergijÄ…, saulÄ—s ir vÄ—jo energijÄ… ir t. t., tam tikrais atvejais įskaitant informacijÄ… apie iÅ¡teklių apimties gylį/aukÅ¡tį.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="it">Risorse energetiche, compresi gli idrocarburi, l'energia idroelettrica, la bioenergia, l'energia solare, eolica, ecc., ove opportuno anche informazioni, in termini di altezza/profondità , sull'entità della risorsa.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="hu">Energiaforrások</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fr">Sources d'énergie</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="hu">Energiaforrások, beleértve a szénhidrogéneket, vÃzenergiát, bioenergiát, nap- és szélenergiát stb., adott esetben beleértve az erÅ‘forrás mértékére vonatkozó mélységi/magassági információt.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fr">Sources d'énergie comprenant les hydrocarbures, l'énergie hydraulique, la bioénergie, l'énergie solaire, l'énergie éolienne, etc., le cas échéant accompagnées d'informations relatives à la profondeur/la hauteur de la source.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fi">Energiavarat</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="et">Energiaressursid</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fi">Energiavarat, mukaan lukien hiilivedyt, vesivoima, bioenergia, aurinko, tuuli jne., mukaan luettuina tarvittaessa syvyys-/korkeustiedot kyseisen luonnonvaran laajuudesta.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="es">Recursos energéticos</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="et">Energiaressursid, sealhulgas süsivesinikud, hüdroenergia, bioenergia, päikese-, tuule- jne energia, sealhulgas koos asjakohase sügavust/kõrgust puudutava teabega ressursi mahu kohta.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="es">Recursos energéticos: hidrocarburos, energÃa hidroeléctrica, bioenergÃa, energÃa solar y eólica, etc., incluyendo, cuando proceda, la información de profundidad y altura del volumen de los recursos.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="en">Energy resources</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="el">ΕνεÏγειακοί πόÏοι</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="en">Energy resources including hydrocarbons, hydropower, bio-energy, solar, wind, etc., where relevant including depth/height information on the extent of the resource.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="de">Energiequellen</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="de">Energiequellen wie Kohlenwasserstoffe, Wasserkraft, Bioenergie, Sonnen- und Windenergie usw., gegebenenfalls mit Tiefen- bzw. Höhenangaben zur Ausdehnung der Energiequelle.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="el">ΕνεÏγειακοί πόÏοι, Î¼ÎµÏ„Î±Î¾Ï Î¬Î»Î»Ï‰Î½ υδÏογονάνθÏακες, υδÏοηλεκτÏική ενÎÏγεια, βιοενÎÏγεια, ηλιακή ενÎÏγεια, αιολική ενÎÏγεια, κ.λπ., συμπεÏιλαμβανομÎνων, κατά πεÏίπτωση, πληÏοφοÏιών πεÏί του βάθους και του Ïψους όσον αφοÏά την Îκταση του εκάστοτε πόÏου.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="da">Energiressourcer</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="da">Energiressourcer, herunder kulbrinter, vandkraft, bioenergi, sol, vind osv. samt, hvis det er relevant, dybde-/ højdeoplysninger om ressourcens omfang.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="cs">Energetické zdroje</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="bg">Енергийни източници</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="cs">Energetické zdroje, vÄetnÄ› uhlovodÃků, vodnà energie, bioenergie, sluneÄnà a vÄ›trné energie atd., pÅ™ÃpadnÄ› vÄetnÄ› informacà o hloubce nebo výšce týkajÃcÃch se rozsahu zdroje.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="bg">Енергийни източници, включително въглеводород, водна енергиÑ, биоенергиÑ, Ñлънчева енергиÑ, ÐµÐ½ÐµÑ€Ð³Ð¸Ñ Ð¾Ñ‚ вÑтър и други; по целеÑъобразноÑÑ‚ Ñе включва Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° дълбочина/виÑочина на района на източника.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ca">Recursos energètics</skos:prefLabel><skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ca">Recursos energètics: hidrocarburs, energia hidroelèctrica, bioenergia, energia solar i eòlica, etc., incloent-hi, quan sigui procedent, la informació de profunditat i altura del volum dels recursos.</skos:scopeNote></skos:Concept> +<skos:Concept rdf:about="http://rdfdata.eionet.europa.eu/inspirethemes/themes/34"> +<skos:altLabel>mr</skos:altLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sl">Mineralni viri</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sv">Mineralfyndigheter, bland annat malm, industrimineraler osv., i tillämpliga fall med djup-/höjdinformation om resursens omfattning.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sv">Mineralfyndigheter</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sk">Zdroje nerastných surovÃn</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sl">Mineralni viri, vkljuÄno s kovinskimi rudami, industrijskimi mineralnimi surovinami itd. kjer je ustrezno, vkljuÄno s podatki o globini/viÅ¡ini glede velikosti vira.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ro">Resurse minerale</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sk">Zdroje nerastných surovÃn vrátane kovových rúd, priemyselných nerastov atÄ., ak je to možné vrátane informácie o Å¡Ãrke a dĺžke rozlohy zdroja.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pt">Recursos minerais</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ro">Resurse minerale precum minereurile metalifere, minereurile industriale etc., însoÅ£ite de informaÅ£ii privind adâncimea/ înălÅ£imea la care se află resursa, după caz.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pl">Zasoby mineralne</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pt">Recursos minerais, incluindo minérios metálicos, minerais industriais, etc., incluindo, quando pertinente, informação sobre as cotas de profundidade/altura do recurso.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pl">Zasoby mineralne, w tym rudy metali, mineraÅ‚y przemysÅ‚owe itd., w odpowiednich przypadkach łącznie z informacjami dotyczÄ…cymi głębokoÅ›ci/wysokoÅ›ci i rozmiarów danych zasobów.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="nl">Minerale bronnen</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="mt">Riżorsi minerali inklużi minerali tal-metall, minerali industrijali, eċċ, fejn rilevanti inkluża informazzjoni dwar il-- fond/l-għoli rigward id-daqs tar-riżors.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="nl">Minerale bronnen met inbegrip van metaalertsen, industriële mineralen enz., waar passend met inbegrip van diepte/ hoogte-informatie over de omvang van de bron.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="mt">Riżorsi minerali</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lv">DerÄ«go izrakteņu resursi, tostarp metÄlu rÅ«das, rÅ«pnieciski iegÅ«stamie izrakteņi, utt., attiecÄ«gÄ gadÄ«jumÄ ietverot informÄciju par dziļumu/augstumu attiecÄ«bÄ uz resursu apmÄ“ru.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lv">DerÄ«go izrakteņu resursi</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lt">Naudingosios iÅ¡kasenos, įskaitant metalų rÅ«das, pramonei naudojamas naudingÄ…sias iÅ¡kasenas ir t. t., tam tikrais atvejais įskaitant informacijÄ… apie iÅ¡teklių apimties gylį/aukÅ¡tį.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lt">Naudingosios iÅ¡kasenos</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="it">Risorse minerarie</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="it">Risorse minerarie, compresi i minerali metallici, i minerali industriali, ecc., ove opportuno anche informazioni, in termini di altezza/profondità , sull'entità della risorsa.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="hu">Ãsványi nyersanyagok, beleértve a fémek érceit, ipari ásványokat stb., adott esetben beleértve a nyersanyag kiterjedésére vonatkozó mélységi/magassági információkat.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="hu">Ãsványi nyersanyagok</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fr">Ressources minérales</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fi">Mineraalivarat</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fr">Ressources minérales comprenant les minerais métalliques, les minéraux industriels, etc., le cas échéant accompagnées d'informations relatives à la profondeur/la hauteur de la ressource.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="et">Maavarad</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fi">Mineraalivarat, mukaan lukien metallimalmit, teollisuusmineraalit jne., mukaan luettuina tarvittaessa syvyys-/ korkeustiedot kyseisen luonnonvaran laajuudesta.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="et">Maavarad, sealhulgas metallimaagid, tööstuslikud mineraalid jne, sealhulgas koos asjakohase sügavust/kõrgust puudutava teabega ressursi mahu kohta.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="es">Recursos minerales</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="en">Mineral resources</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="es">Recursos minerales: minerales metalÃferos, minerales industriales, etc., incluyendo, cuando proceda, la información de profundidad y altura del volumen de los recursos.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="en">Mineral resources including metal ores, industrial minerals, etc., where relevant including depth/height information on the extent of the resource.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="el">ΟÏυκτοί πόÏοι</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="el">ΟÏυκτοί πόÏοι, Î¼ÎµÏ„Î±Î¾Ï Î¬Î»Î»Ï‰Î½ και μεταλλεÏματα, βιομηχανικά μεταλλεÏματα, κ.λπ., συμπεÏιλαμβανομÎνων, κατά πεÏίπτωση, πληÏοφοÏιών πεÏί του βάθους και του Ïψους όσον αφοÏά την Îκταση του εκάστοτε πόÏου.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="de">Mineralische Bodenschätze</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="da">Mineralressourcer</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="de">Mineralische Bodenschätze wie Metallerze, Industrieminerale usw., gegebenenfalls mit Tiefen- bzw. Höhenangaben zur Ausdehnung der Bodenschätze.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="cs">Nerostné suroviny</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="da">Mineralressourcer, herunder metalmalme, industrmineraler osv. samt, hvis det er relevant, dybde-/højdeoplysninger om ressourcens omfang.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="bg">Минерални реÑурÑи</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="cs">Nerostné suroviny, vÄetnÄ› kovových rud, průmyslových surovin atd., pÅ™ÃpadnÄ› vÄetnÄ› informacà o hloubce nebo výšce týkajÃcÃch se rozsahu zdroje.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="bg">Минерални реÑурÑи, включително метални руди, промишлени минерали и други; по целеÑъобразноÑÑ‚ Ñе включва Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° дълбочина/виÑочина на находището на реÑурÑа.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ca">Recursos minerals</skos:prefLabel><skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ca">Recursos minerals: minerals metal·lÃfers, minerals industrials, etc., incloent-hi, quan sigui procedent, la informació de la profunditat i altura del volum dels recursos.</skos:scopeNote></skos:Concept> +<skos:Concept rdf:about="http://rdfdata.eionet.europa.eu/inspirethemes/themes/4"> +<skos:altLabel>au</skos:altLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sl">Upravne enote</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sv">Administrativa enheters, som delar upp omrÃ¥den där medlemsstater har och/eller utövar jurisdiktion, pÃ¥ lokal, regional och nationell nivÃ¥, Ã¥tskilda av administrativa gränser.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sv">Administrativa enheter</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sl">Upravne enote za lokalno, regionalno in nacionalno upravo, ki razdeljujejo obmoÄja, na katerih države Älanice imajo in/ali izvajajo jurisdikcijo, loÄene z upravnimi mejami.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sk">Správne jednotky</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ro">Unităţi administrative</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sk">Správne jednotky rozdeľujúce oblasti, v ktorých Älenské Å¡táty majú právomoc rozhodovaÅ¥ a/alebo vykonávajú túto právomoc na úÄely miestneho, regionálneho a celoÅ¡tátneho riadenia, oddelené správnymi hranicami.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ro">Unităţi de administrare, de delimitare a zonelor în care statele membre deÅ£in ÅŸi/sau îşi exercită competenÅ£a, la nivel local, regional ÅŸi naÅ£ional, separate prin limite administrative.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pl">Jednostki administracyjne</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pt">Unidades administrativas, zonas de divisão sobre as quais os Estados-Membros possuam e/ou exerçam direitos jurisdicionais, para efeitos de governação local, regional e nacional, separadas por fronteiras administrativas.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pt">Unidades administrativas</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="nl">Administratieve eenheden</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pl">Jednostki administracyjne, dzielÄ…ce obszary, na których paÅ„stwa czÅ‚onkowskie majÄ… lub wykonujÄ… uprawnienia jurysdykcyjne, dla celów sprawowania wÅ‚adzy na poziomie lokalnym, regionalnym i krajowym, oddzielone granicami administracyjnymi.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="nl">Door administratieve grenzen gescheiden lokale, regionale en nationale bestuurlijke eenheden die deel uitmaken van gebieden waarover de lidstaten rechtsbevoegdheid hebben en/of uitoefenen.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="mt">Unitajiet ta' amministrazzjoni, li jaqsmu żoni fejn Stati Membri għandhom u/jew jeżerÄ‹itaw drittijiet Ä¡urisdizzjonali, għal governanza reÄ¡jonali, lokali u nazzjonali, separati minn konfini amministrattivi.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="mt">Unitajiet amministrattivi</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lv">AdministratÄ«vas vienÄ«bas</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lv">AdministratÄ«vas vienÄ«bas, kas sadala apgabalus, kuros dalÄ«bvalstÄ«m ir jurisdikcija un/vai kurÄ tÄs to Ä«steno, paÅ¡valdÄ«bu, reÄ£ionu un valsts pÄrvaldes nolÅ«kÄ, kas sadalÄ«tas ar administratÄ«vo robežu palÄ«dzÄ«bu.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="hu">Közigazgatási egységek</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="it">Unità amministrative di suddivisione delle zone su cui gli Stati membri hanno e/o esercitano la loro giurisdizione a livello locale, regionale e nazionale, delimitate da confini amministrativi.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="it">Unità amministrative</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lt">AdministracinÄ—mis ribomis atskirti vietos, regionų ir nacionalinÄ—s valdžios administraciniai vienetai, į kuriuos padalijamos teritorijos, kurios priklauso valstybÄ—s narÄ—s jurisdikcijai ir (arba) kuriose ji vykdo jurisdikcijÄ….</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lt">Administraciniai vienetai</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fr">Unités administratives</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="hu">Az olyan nemzeti területeket, amelyeken a tagállamok joghatósággal rendelkeznek és/vagy joghatóságot gyakorolnak, helyi, regionális és országos egységekre osztó, közigazgatási határvonalakkal elválasztott igazgatási egységek.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fi">Hallinnolliset yksiköt, jotka jakavat alueen, jolla jäsenvaltioilla on tai jolla ne käyttävät lainkäyttöoikeuksia, paikalliseen, alueelliseen ja valtakunnalliseen hallintoon ja jotka erotetaan toisistaan hallinnollisin rajoin.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fi">Hallinnolliset yksiköt</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fr">Unités d'administration séparées par des limites administratives et délimitant les zones dans lesquelles les États membres détiennent et/ou exercent leurs compétences, aux fins de l'administration locale, régionale et nationale.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="en">Administrative units</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="es">Unidades administrativas en que se dividan las áreas en las que los Estados miembros tienen y/o ejercen derechos jurisdiccionales, a efectos de administración local, regional y nacional, separadas por lÃmites administrativos.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="es">Unidades administrativas</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="et">Halduspiiridega eraldatud haldusüksused, mis jagavad liikmesriikide jurisdiktsiooni all olevad alad kohaliku, piirkondliku ja riikliku juhtimise eesmärgil.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="et">Haldusüksused</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="en">Units of administration, dividing areas where Member States have and/or exercise jurisdictional rights, for local, regional and national governance, separated by administrative boundaries.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="el">ΔιοικητικÎÏ‚ ενότητες που χωÏίζουν πεÏιοχÎÏ‚ επί των οποίων κÏάτη μÎλη Îχουν ή/και ασκοÏν δικαιοδοτικά δικαιώματα σε τοπικό, πεÏιφεÏειακό και εθνικό επίπεδο, χωÏίζονται από διοικητικά ÏŒÏια.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="el">ΔιοικητικÎÏ‚ ενότητες</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="de">Verwaltungseinheiten</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="da">Administrative enheder</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="de">Lokale, regionale und nationale Verwaltungseinheiten, die die Gebiete abgrenzen, in denen die Mitgliedstaaten Hoheitsbefugnisse haben und/oder ausüben und die durch Verwaltungsgrenzen voneinander getrennt sind.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="bg">ÐдминиÑтративни единици</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="bg">ÐдминиÑтративни единици, отделени Ñ Ð°Ð´Ð¼Ð¸Ð½Ð¸Ñтративни граници и отграничаващи райони, върху които държавите-членки имат и/или упражнÑват юридичеÑки правомощиÑ, за целите на меÑтното, регионалното и националнотоуправление.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="cs">Správnà jednotky</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="da">Forvaltningsenheder, der inddeler omrÃ¥der, hvor medlemsstaterne har og/eller udøver jurisdiktionelle rettigheder pÃ¥ lokalt, regionalt og nationalt plan, adskilt af administrative grænser.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="cs">Správnà jednotky rozdÄ›lujÃcà územÃ, ve kterém Älenské státy majà nebo vykonávajà svrchovaná práva, pro úÄely mÃstnÃ, regionálnà a státnà správy, oddÄ›lené správnÃmi hranicemi.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ca">Unitats administratives</skos:prefLabel><skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ca">Unitats administratives en què es divideixin les à rees en les quals els estats membres tenen i/o exerceixen drets jurisdiccionals, a efectes d’administració local, regional i nacional, separades per lÃmits administratius.</skos:scopeNote></skos:Concept> +<skos:Concept rdf:about="http://rdfdata.eionet.europa.eu/inspirethemes/themes/5"> +<skos:altLabel>ad</skos:altLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ro">Adrese</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sk">Poloha nehnuteľnostà založená na identifikátoroch obsiahnutých v adrese, obyÄajne podľa názvu ulice, ÄÃsla domu, poÅ¡tového smerovacieho ÄÃsla.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sk">Adresy</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sl">Lokacija nepremiÄnin, ki temelji na identifikatorjih naslova, obiÄajno z imenom ulice, hiÅ¡no Å¡tevilko, poÅ¡tno Å¡tevilko.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sl">Naslovi</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sv">Adresser</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sv">Läge för fastigheter pÃ¥ grundval av adressuppgifter, vanligen i form av gatunamn, gatunummer och postnummer.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pt">Endereços</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ro">Localizare a proprietăţilor, bazată pe identificatori de adresă, de obicei numele străzii, numărul casei ÅŸi codul poÅŸtal.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pl">Adresy</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pt">Localização de propriedades com base em identificadores de endereço, em regra, o nome da rua, o número da porta e o código postal.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="mt">Indirizzi</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="nl">Locatie van onroerende zaken, gebaseerd op adresaanduidingen, gewoonlijk aan de hand van de straatnaam, het huisnummer en de postcode.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="nl">Adressen</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lt">Adresai</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lv">ĪpaÅ¡umu Ä£eogrÄfiskÄ atraÅ¡anÄs vieta, pamatojoties uz adreses identifikatoriem; parasti tie ir ceļu nosaukumi, mÄju numuri, pasta indeksi.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lv">Adreses</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="mt">Pożizzjoni ta' proprjetajiet ibbażata fuq identifikaturi ta' l-indirizzi, normalment bl-isem tat-triq, in-numru tad-dar, ilkodiÄ‹i postali.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pl">Lokalizacja nieruchomoÅ›ci na podstawie danych adresowych, zazwyczaj nazwy ulicy, numeru budynku, kodu pocztowego.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="hu">Az ingatlanok helye cÃmazonosÃtók – rendszerint utcanév, házszám, irányÃtószám – alapján.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="hu">CÃmek</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="it">Localizzazione delle proprietà basata su identificatori di indirizzo, in genere nome della via, numero civico, codice postale.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="it">Indirizzi</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lt">NuosavybÄ—s vieta pagal adreso duomenis, paprastai gatvÄ—s pavadinimÄ…, namo numerį, paÅ¡to kodÄ….</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fr">Adresses</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fr">Localisation des propriétés fondée sur les identifiants des adresses, habituellement le nom de la rue, le numéro de la maison et le code postal.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fi">Osoitteet</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fi">Kiinteistöjen sijainti, joka perustuu osoitetietoon, jossa tavallisesti kadunnimi, talon numero ja postinumero.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="es">Localización de las propiedades, basada en identificadores de direcciones, por ejemplo, el nombre de la vÃa pública, el número de la finca, el código postal.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="es">Direcciones</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="et">Maavalduste asukoht aadressi elementide, tavaliselt tee või tänava nime, majanumbri ja postiindeksi järgi.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="et">Aadressid</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="en">Location of properties based on address identifiers, usually by road name, house number, postal code.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="en">Addresses</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="de">Lokalisierung von Grundstücken anhand von Adressdaten, in der Regel Straßenname, Hausnummer und Postleitzahl.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="de">Adressen</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="el">ΘÎση ακινήτων με βάση τη διεÏθυνση, συνήθως με όνομα οδοÏ, αÏιθμό οικίας και ταχυδÏομικό κώδικα.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="el">ΔιευθÏνσεις</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="da">Adresser</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="cs">Adresy</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="da">Lokalisering af ejendomme pÃ¥ grundlag af adresseidenter, normalt ved hjælp af vejnavn, husnummer og postnummer.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="bg">МеÑтонахождение на имоти, обозначено чрез адреÑни данни, обичайно чрез наименование на улица, номер на Ñграда и пощенÑки код.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="bg">ÐдреÑи</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="cs">Poloha nemovitostà podle adresnÃch identifikátorů, obvykle pomocà názvu ulice, ÄÃsla domu, poÅ¡tovnÃho smÄ›rovacÃho ÄÃsla.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ca">Adreces</skos:prefLabel><skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ca">Localització de les propietats, basada en identificadors d’adreces, per exemple, el nom de la via pública, el número de la finca o el codi postal.</skos:scopeNote></skos:Concept> +<skos:Concept rdf:about="http://rdfdata.eionet.europa.eu/inspirethemes/themes/6"> +<skos:altLabel>cp</skos:altLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sv">OmrÃ¥den definierade av fastighetsregister eller motsvarande.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sv">FastighetsomrÃ¥den</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sl">Katastrske parcele</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sk">Územia vymedzené katastrálnymi registrami alebo rovnocennými registrami.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sk">Katastrálne parcely</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sl">PodroÄja, ki jih opredeljujejo zemljiÅ¡ki kataster ali enakovredni registri.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ro">Zone stabilite de registrele cadastrale sau echivalente.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ro">Parcele cadastrale</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="mt">Å»oni ddefiniti b'reÄ¡istri katastali jew l-ekwivalenti.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="mt">Pakketti katastali</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="nl">Gebieden die worden bepaald door kadastrale registers of een equivalent daarvan.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="nl">Kadastrale percelen</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pl">Obszary okreÅ›lone na podstawie rejestrów katastralnych lub ich odpowiedników.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pl">DziaÅ‚ki katastralne</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pt">Ãreas definidas por registos cadastrais ou equivalentes.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pt">Parcelas cadastrais</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lv">KadastrÄli zemes gabali</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lv">Teritorijas, kas noteiktas kadastra reÄ£istros vai lÄ«dzÄ«gÄs sistÄ“mÄs.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lt">Kadastro sklypai</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="it">Parcelle catastali</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lt">Kadastrų registruose ar panaÅ¡iai apibrėžti plotai.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fr">Zones définies par les registres cadastraux ou équivalents.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fr">Parcelles cadastrales</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="hu">Kataszteri nyilvántartásokkal – vagy ezzel egyenértékű módon – meghatározott területek.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="hu">Kataszteri parcellák</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="it">Aree definite dai registri catastali o equivalenti.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="el">Γεωτεμάχια κτηματολογίου</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="en">Areas defined by cadastral registers or equivalent.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="en">Cadastral parcels</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="es">Ãreas determinadas por registros catastrales o equivalentes.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="es">Parcelas catastrales</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="et">Katastritunnuste või võrdväärsete tunnustega kindlaksmääratud alad.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="et">Katastriüksused</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fi">Alueet, jotka on määritelty kiinteistörekisterissä tai vastaavassa.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fi">Kiinteistöt</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="el">Εκτάσεις που οÏίζονται από κτηματολογικά μητÏώα ή αντίστοιχες.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="bg">КадаÑтрални парцели</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="cs">Územà vymezená v katastru nemovitostà nebo v obdobném rejstÅ™Ãku.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="cs">Katastrálnà parcely</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="da">Arealer, der er defineret i matrikelregistre eller lignende.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="da">Matrikulære parceller</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="de">Gebiete, die anhand des Grundbuchs oder gleichwertiger Verzeichnisse bestimmt werden.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="de">Flurstücke/Grundstücke (Katasterparzellen)</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="bg">Райони, поÑочени в кадаÑтрални региÑтри или други равноÑтойни документи.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ca">Parcel·les cadastrals</skos:prefLabel><skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ca">Àrees determinades per registres cadastrals o equivalents.</skos:scopeNote></skos:Concept> +<skos:Concept rdf:about="http://rdfdata.eionet.europa.eu/inspirethemes/themes/7"> +<skos:altLabel>tn</skos:altLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sv">Transportnät</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ro">ReÅ£ele de transport rutier, feroviar, aerian ÅŸi pe apă ÅŸi infrastructura asociată. Cuprinde, de asemenea, legături între diferite reÅ£ele. Mai cuprinde ÅŸi reÅ£eaua transeuropeană de transport, astfel cum este definită în Decizia nr. 1692/96/CE a Parlamentului European ÅŸi a Consiliului din 23 iulie 1996 privind orientările comunitare pentru dezvoltarea reÅ£elei transeuropene de transport (1) ÅŸi modificările ulterioare.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sv">Väg-, järnvägs-, luft- och sjötransportnät och tillhörande infrastruktur. Innefattar länkar mellan olika nät. Innefattar ocksÃ¥ det transeuropeiska transportnät som definieras i Europaparlamentets och rÃ¥dets beslut nr 1692/96/EG av den 23 juli 1996 om gemenskapens riktlinjer för utbyggnad av det transeuropeiska transportnätet (1) samt framtida ändringar av det beslutet.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sl">Prometna omrežja</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sk">Dopravné siete</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sl">Cestna, železniÅ¡ka, zraÄna in vodna prometna omrežja ter z njimi povezana infrastruktura. VkljuÄuje povezave med razliÄnimi omrežji. VkljuÄuje tudi vseevropsko prometno omrežje, kakor je doloÄeno v OdloÄbi Å¡t. 1692/96/ES Evropskega parlamenta in Sveta z dne 23. julija 1996 o smernicah Skupnosti za razvoj vseevropskega prometnega omrežja (1), in prihodnje preglede te odloÄbe.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ro">ReÅ£ele de transport</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sk">Cestné, železniÄné, letecké a vodné dopravné siete a s nimi súvisiaca infraÅ¡truktúra. Patria sem prepojenia medzi jednotlivými sieÅ¥ami. Zahŕňajú tiež transeurópsku dopravnú sieÅ¥ vymedzenú v rozhodnutà Európskeho parlamentu a Rady Ä. 1692/96/ES z 23. júla 1996 o základných usmerneniach SpoloÄenstva pre rozvoj transeurópskej dopravnej siete (1) a budúcich revÃziách uvedeného rozhodnutia.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pt">Redes de transporte</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pl">Sieci transportowe</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pt">Redes de transporte rodoviário, ferroviário, aéreo e por via navegável, e respectivas infra-estruturas. Inclui as ligações entre as diferentes redes. Inclui também a rede transeuropeia de transportes definida na Decisão n.o 1692/96/CE do Parlamento Europeu e do Conselho, de 23 de Julho de 1996, sobre as orientações comunitárias para o desenvolvimento da rede transeuropeia de transportes (1), e as futuras revisões dessa decisão.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lv">Autoceļi, dzelzceļa, gaisa un Å«dens transporta tÄ«kli un ar tiem saistÄ«tÄ infrastruktÅ«ra. Tie ietver arÄ« dažÄdu tÄ«klu savienojumus. Tie ietver arÄ« Eiropas transporta tÄ«klu, kÄ tas definÄ“ts Eiropas Parlamenta un Padomes LÄ“mumÄ Nr. 1692/96/EK (1996. gada 23. jÅ«lijs) par Kopienas pamatnostÄdnÄ“m Eiropas transporta tÄ«kla attÄ«stÄ«bai (1) un minÄ“tÄ lÄ“muma turpmÄkajos grozÄ«jumos.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lv">Transporta tÄ«kli</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="mt">Networks tat-trasport tat-triq, tal-ferrovija, ta' l-ajru u ta' l-ilma u infrastruttura relatata. Huma inklużi l-kollegamenti bejn networks differenti. Huma inklużi wkoll in-network trans-Ewropew tat-trasport kif definit fid-DeÄ‹iżjoni Nru 1692/96/KE tal-Parlament Ewropew u tal-Kunsill tat-23 ta' Lulju 1996 dwar il-Linji Gwida tal-Komunità għalliżvilupp ta' network trans-Ewropew tat-trasport (1) u r-reviżjonijiet futuri ta' dik id-DeÄ‹iżjoni.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="mt">Networks tat-trasport</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="nl">Netwerken voor vervoer over de weg, per spoor, in de lucht en over het water en de aanverwante infrastructuur met inbegrip van koppelingen tussen verschillende netwerken en het trans-Europees vervoersnetwerk, zoals gedefinieerd in Beschikking nr. 1692/96/EG van het Europees Parlement en de Raad van 23 juli 1996 betreffende communautaire richtsnoeren voor de ontwikkeling van een trans-Europees vervoersnet (1) en de latere herzieningen van deze beschikking.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="nl">Vervoersnetwerken</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pl">Sieci transportu drogowego, kolejowego, lotniczego i wodnego oraz zwiÄ…zana z nimi infrastruktura. ObejmujÄ… połączenia pomiÄ™dzy różnymi sieciami. Zalicza siÄ™ do nich także transeuropejskÄ… sieć transportowÄ… w rozumieniu decyzji nr 1692/96/WE Parlamentu Europejskiego i Rady z dnia 23 czerwca 1996 r. w sprawie wspólnotowych wytycznych dotyczÄ…cych rozwoju transeuropejskiej sieci transportowej (1) wraz z jej przyszÅ‚ymi zmianami.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lt">Transporto tinklai</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="hu">Közlekedési hálózatok</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="it">Reti di trasporto su strada, su rotaia, per via aerea e per vie navigabili e relative infrastrutture. Questa voce comprende i collegamenti tra le varie reti e anche la rete transeuropea di trasporto di cui alla decisione n. 1692/96/CE del Parlamento europeo e del Consiglio, del 23 luglio 1996, sugli orientamenti comunitari per lo sviluppo della rete transeuropee dei trasporti (1) e successive revisioni.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="it">Reti di trasporto</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lt">Keliai, geležinkeliai, oro ir vandens transporto tinklai bei su jais susijusi infrastruktÅ«ra. Ä®traukiamos sÄ…sajos tarp skirtingų tinklų. Taip pat apima 1996 m. liepos 23 d. Europos Parlamente ir Tarybos sprendime Nr. 1692/96/EB, pateikianÄiame Bendrijos gaires dÄ—l transeuropinio transporto tinklo plÄ—tros (1), ir jo vÄ—lesniuose pakeitimuose apibrėžtÄ… transeuropinį transporto tinklÄ….</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fi">Liikenneverkot</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fr">Réseaux routier, ferroviaire, aérien et navigable ainsi que les infrastructures associées. Sont également incluses les correspondances entre les différents réseaux, ainsi que le réseau transeuropéen de transport tel que défini dans la décision no 1692/96/CE du Parlement européen et du Conseil du 23 juillet 1996 sur les orientations communautaires pour le développement du réseau transeuropéen de transport (1) et les révisions futures de cette décision.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fr">Réseaux de transport</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="hu">Közúti, vasúti, légi és vÃzi közlekedési hálózatok és a kapcsolódó infrastruktúra. Ide tartoznak a különféle hálózatok közötti összeköttetések is. Magában foglalja továbbá a transzeurópai közlekedési hálózat fejlesztésére vonatkozó közösségi iránymutatásokról szóló, 1996. július 23-i 1692/96/EK európai parlamenti és tanácsi határozatban (1) meghatározott transzeurópai közlekedési hálózatot és e határozat jövÅ‘beli felülvizsgálatait is.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="et">Transpordivõrgud</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fi">Tie-, raide-, ilma- ja vesiliikenneverkot ja niihin liittyvä infrastruktuuri. Sisältää eri verkkojen väliset yhteydet. Sisältää myös Euroopan laajuisen liikenneverkon sellaisena kuin se on määritelty yhteisön suuntaviivoista Euroopan laajuisen liikenneverkon kehittämiseksi 23 päivänä heinäkuuta 1996 tehdyssä Euroopan parlamentin ja neuvoston päätöksessä N:o 1692/96/EY (1) ja tämän päätöksen tulevissa tarkistuksissa.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="es">Redes de transporte</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="et">Maantee-, raudtee-, õhu- ja veetranspordivõrgud ja nendega seotud infrastruktuurid. Sisaldab eri võrkude vahelisi ühendusi. Hõlmab ka Euroopa Parlamendi ja nõukogu 23. juuli 1996. aasta otsuses 1692/96/EÜ üleeuroopalise transpordivõrgu arendamist käsitlevate ühenduse suuniste kohta, (1) määratletud üleeuroopalist transpordivõrku ja selle otsuse edaspidiseid muudatusi.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="el">Δίκτυα μεταφοÏών</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="en">Road, rail, air and water transport networks and related infrastructure. Includes links between different networks. Also includes the trans-European transport network as defined in Decision No 1692/96/EC of the European Parliament and of the Council of 23 July 1996 on Community Guidelines for the development of the trans-European transport network (1) and future revisions of that Decision.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="en">Transport networks</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="es">Redes de carreteras, ferrocarril, transporte aéreo y vÃas navegables, con sus correspondientes infraestructuras. Se incluirán las conexiones entre redes diferentes. Se incluirá también la red transeuropea de transporte, según la definición de la Decisión no 1692/96/CE del Parlamento Europeo y del Consejo, de 23 de julio de 1996, sobre las orientaciones comunitarias para el desarrollo de la red transeuropea de transporte (1), y de las futuras revisiones de dicha Decisión.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="el">Δίκτυα οδικών, σιδηÏοδÏομικών, αεÏοποÏικών και υδάτινων μεταφοÏών και οι αντίστοιχες υποδομÎÏ‚. ΠεÏιλαμβάνονται οι συνδÎσεις Î¼ÎµÏ„Î±Î¾Ï Ï„Ï‰Î½ διαφόÏων δικτÏων. ΠεÏιλαμβάνεται επίσης το διευÏωπαϊκό δίκτυο μεταφοÏών, όπως οÏίζεται στην απόφαση αÏιθ. 1692/96/EΚ του ΕυÏÏ‰Ï€Î±ÏŠÎºÎ¿Ï ÎšÎ¿Î¹Î½Î¿Î²Î¿Ï…Î»Î¯Î¿Ï… και του Συμβουλίου, της 23ης Ιουλίου 1996, πεÏί των κοινοτικών Ï€Ïοσανατολισμών για την ανάπτυξη του διευÏÏ‰Ï€Î±ÏŠÎºÎ¿Ï Î´Î¹ÎºÏ„Ïου μεταφοÏών (1) και στις μελλοντικÎÏ‚ αναθεωÏήσεις της εν λόγω απόφασης.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="de">Verkehrsnetze</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="da">Transportnet</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="de">Verkehrsnetze und zugehörige Infrastruktureinrichtungen für Straßen-, Schienen- und Luftverkehr sowie Schifffahrt. Umfasst auch die Verbindungen zwischen den verschiedenen Netzen. Umfasst auch das transeuropäische Verkehrsnetz im Sinne der Entscheidung Nr. 1692/96/EG des Europäischen Parlaments und des Rates vom 23. Juli 1996 über gemeinschaftliche Leitlinien für den Aufbau eines transeuropäischen Verkehrsnetzes (1) und künftiger Überarbeitungen dieser Entscheidung.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="da">Transportnet for biler, tog, fly og skibe med tilhørende infrastruktur. Omfatter forbindelser mellem de forskellige net. Omfatter ogsÃ¥ det transeuropæiske transportnet som defineret i Europa-Parlamentets og RÃ¥dets beslutning nr. 1692/96/EF af 23. juli 1996 om Fællesskabets retningslinjer for udvikling af det transeuropæiske transportnet (1) og fremtidige ændringer af denne beslutning.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="bg">ТранÑпортни мрежи</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="cs">SilniÄnÃ, železniÄnÃ, letecké a vodnà dopravnà sÃtÄ› a souvisejÃcà infrastruktura. Zahrnujà spojnice mezi jednotlivými sÃtÄ›mi. Zahrnujà rovněž transevropskou dopravnà sÃÅ¥, jak je vymezena v rozhodnutà Evropského parlamentu a Rady Ä. 1692/96/ES ze dne 23. Äervence 1996 o hlavnÃch smÄ›rech SpoleÄenstvà pro rozvoj transevropské dopravnà sÃtÄ› (1) a v budoucÃch zmÄ›nách uvedeného rozhodnutÃ.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="cs">Dopravnà sÃtÄ›</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="bg">Ðвтомобилни, железопътни, въздушни и водни транÑпортни мрежи и прилежаща инфраÑтруктура. Включват връзки между различните мрежи. Включват Ñъщо така и ТранÑевропейÑката транÑпортна мрежа, определена в Решение â„– 1692/96/ЕО на ЕвропейÑÐºÐ¸Ñ Ð¿Ð°Ñ€Ð»Ð°Ð¼ÐµÐ½Ñ‚ и на Съвета от 23 юли 1996 г. отноÑно общноÑтните наÑоки за развитие на ТранÑевропейÑката транÑпортна мрежа (1) и бъдещо преразглеждане на това решение.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ca">Xarxes de transport</skos:prefLabel><skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ca">Xarxes de carreteres, ferrocarril, transport aeri i vies navegables, amb les seves corresponents infraestructures. S’inclouran les connexions entre xarxes diferents. S’inclourà també la xarxa transeuropea de transport, segons la definició de la Decisió núm. 1692/96/CE del Parlament Europeu i del Consell, de 23 de juliol de 1996, sobre les orientacions comunità ries per al desenvolupament de la xarxa transeuropea de transport i de les futures revisions d’aquesta Decisió.</skos:scopeNote></skos:Concept> +<skos:Concept rdf:about="http://rdfdata.eionet.europa.eu/inspirethemes/themes/8"> +<skos:altLabel>hy</skos:altLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sl">Hidrografija</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sv">Hydrografiska element, inbegripet havsomrÃ¥den och alla andra vattenförekomster och därtill hörande inslag, inbegripet avrinningsomrÃ¥den och delavrinningsomrÃ¥den. I förekommande fall i enlighet med definitionerna i Europaparlamentets och rÃ¥dets direktiv 2000/60/EG av den 23 oktober 2000 om upprättande av en ram för gemenskapens Ã¥tgärder pÃ¥ vattenpolitikens omrÃ¥de (2) och i form av nät.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sv">Hydrografi</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sk">Hydrografia</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sl">Hidrografski elementi, ki vkljuÄujejo morska obmoÄja ter vsa druga vodna telesa in z njimi povezane dele, vkljuÄno s povodji in poreÄji. Po potrebi v skladu z opredelitvami v Direktivi 2000/60/ES Evropskega parlamenta in Sveta z dne 23. oktobra 2000 o doloÄitvi okvira za ukrepe Skupnosti na podroÄju vodne politike (2) in v obliki omrežij.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pt">Hidrografia</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ro">Elementele hidrografice, inclusiv zonele marine, precum ÅŸi toate celelalte corpuri de apă ÅŸi elementele legate de acestea, inclusiv bazinele ÅŸi sub-bazinele hidrografice. După caz, în conformitate cu definiÅ£iile din Directiva 2000/60/CE a Parlamentului European ÅŸi a Consiliului din 23 octombrie 2000 de stabilire a unui cadru de politică comunitară în domeniul apei (2) ÅŸi sub formă de reÅ£ele.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ro">Hidrografie</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sk">Hydrografické prvky vrátane morských oblastà a vÅ¡etkých ostatných vodných útvarov a objektov vzÅ¥ahujúcich sa k nim vrátane povodà riek a Äiastkových povodÃ. Ak je to možné, v súlade s vymedzeniami pojmov ustanovenými v smernici Európskeho parlamentu a Rady 2000/60/ES z 23. októbra 2000, ktorou sa stanovuje rámec pôsobnosti pre opatrenia SpoloÄenstva v oblasti vodného hospodárstva (2), a v podobe sietÃ.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pt">Elementos hidrográficos, incluindo zonas marinhas e todas as outras massas de água e elementos com eles relacionados, incluindo bacias e sub-bacias hidrográficas. Quando adequado, de acordo com as definições da Directiva 2000/60/CE do Parlamento Europeu e do Conselho, de 23 de Outubro de 2000, que estabelece um quadro de acção comunitária no domÃnio da polÃtica da água (2), e sob a forma de redes.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pl">Hydrografia</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="nl">Hydrografie</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pl">Elementy hydrograficzne, w tym obszary morskie lub inne części wód oraz zwiÄ…zane z nimi obiekty, łącznie z dorzeczami i zlewniami. W odpowiednich przypadkach zgodnie z definicjami zawartymi w dyrektywie 2000/60/WE Parlamentu Europejskiego i Rady z dnia 23 października 2000 r. ustanawiajÄ…cej ramy wspólnotowego dziaÅ‚ania w dziedzinie polityki wodnej (2) oraz w formie sieci.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lv">HidrogrÄfijas elementi, tostarp jÅ«ras teritorijas un visas citas Å«denstilpnes un ar tiem saistÄ«tie elementi, tostarp upju baseini un apakÅ¡baseini. AttiecÄ«gÄ gadÄ«jumÄ atbilstÄ«gi definÄ«cijÄm, kas izklÄstÄ«tas Eiropas Parlamenta un Padomes DirektÄ«vÄ 2000/60/EK (2000. gada 23. oktobris), ar ko izveido sistÄ“mu Kopienas rÄ«cÄ«bai Å«dens resursu politikas jomÄ (2), un tÄ«klu veidÄ.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="nl">Hydrografische elementen, waaronder mariene gebieden en alle andere waterlichamen en daarmee verband houdende elementen, met inbegrip van stroomgebieden en deelstroomgebieden, in voorkomend geval volgens de omschrijvingen vermeld in Richtlijn 2000/60/EG van het Europees Parlement en de Raad van 23 oktober 2000 tot vaststelling van een kader voor communautaire maatregelen betreffende het waterbeleid (2) en in de vorm van netwerken.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="mt">Idrografija</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="mt">Elementi idrografiÄ‹i, inklużi żoni marittimi, u kull korp ieħor ta' l-ilma u oġġetti relatati magħhom, inklużi baÄ‹iri taxxmajjar u sub-baÄ‹iri. Fejn xieraq, skond id-definizzjonijiet fid-Direttiva 2000/60/KE tal-Parlament Ewropew u tal- Kunsill tat-23 ta' Ottubru 2000 li tistabbilixxi qafas għall-azzjoni Komunitarja fil-qasam tal-politika ta' l-ilma (2) u filforma ta' networks.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lt">Hidrografija</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lv">HidrogrÄfija</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fr">Hydrographie</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="hu">VÃzrajzi elemek, beleértve a tengeri területeket, minden egyéb vÃztestet és azzal kapcsolatos elemet, többek között a vÃzgyűjtÅ‘ket és részvÃzgyűjtÅ‘ket. Adott esetben a vÃzpolitika terén a közösségi fellépés kereteinek meghatározásáról szóló, 2000. október 23-i 2000/60/EK európai parlamenti és tanácsi irányelv (2) fogalommeghatározásaival összhangban és hálózati formában.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="it">Idrografia</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lt">Hidrografiniai elementai, įskaitant jÅ«ros zonas ir visus kitus vandens telkinius bei su jais susijusius elementus, įskaitant upių baseinus ir pabaseinius. Kur tikslinga, pagal 2000 m. spalio 23 d. Europos Parlamento ir Tarybos direktyvÄ… 2000/60/EB, nustatanÄiÄ… Bendrijos veiksmų vandens politikos srityje pagrindus (2), ir tinklų pavidalu.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="it">Elementi idrografici, comprese le zone marine e tutti gli altri corpi ed elementi idrici ad esse correlati, tra cui i bacini e sub bacini idrografici. Eventualmente in conformità delle definizioni contenute nella direttiva 2000/60/CE del Parlamento europeo e del Consiglio, del 23 ottobre 2000, che istituisce un quadro per l'azione comunitaria in materia di acque (2), e sotto forma di reti.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="hu">VÃzrajz</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fr">Éléments hydrographiques, y compris les zones maritimes ainsi que toutes les autres masses d'eau et les éléments qui y sont liés, y compris les bassins et sous-bassins hydrographiques. Conformes, le cas échéant, aux définitions établies par la directive 2000/60/CE du Parlement européen et du Conseil du 23 octobre 2000 établissant un cadre pour une politique communautaire dans le domaine de l'eau (2) et sous forme de réseaux.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fi">Hydrografia</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="et">Hüdrograafia</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fi">Hydrografiset elementit, mukaan luettuina merialueet ja kaikki muut vesimuodostumat ja niihin liittyvät kohteet, mukaan lukien vesistöalueet ja vesistöalueen osat. Tarvittaessa yhteisön vesipolitiikan puitteista 23 päivänä lokakuuta 2000 annetussa Euroopan parlamentin ja neuvoston direktiivissä 2000/60/EY (2) olevien määritelmien mukaan ja verkostomuodossa.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="es">HidrografÃa</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="et">Hüdrograafilised objektid, sealhulgas merealad ning kõik muud veekogud ja nendega seotud objektid, sealhulgas vesikonnad ja alamvesikonnad. Kui see on asjakohane, vastavalt Euroopa Parlamendi ja nõukogu 23. oktoobri 2000. aasta direktiivis 2000/60/EÜ, millega kehtestatakse ühenduse veepoliitika alane tegevusraamistik (2) määratletule ning võrkude kujul.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="es">Elementos hidrográficos, incluidas las zonas marinas y todas las otras masas de agua y elementos relacionados con ellas, asà como las cuencas y subcuencas hidrográficas. Cuando proceda, según lo definido en la Directiva 2000/60/CE del Parlamento Europeo y del Consejo, de 23 de octubre de 2000, por la que se establece un marco comunitario de actuación en el ámbito de la polÃtica de aguas (2), y en forma de redes.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="el">ΥδÏογÏαφία</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="en">Hydrographic elements, including marine areas and all other water bodies and items related to them, including river basins and sub-basins. Where appropriate, according to the definitions set out in Directive 2000/60/EC of the European Parliament and of the Council of 23 October 2000 establishing a framework for Community action in the field of water policy (2) and in the form of networks.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="en">Hydrography</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="el">ΥδÏογÏαφικά στοιχεία, όπου πεÏιλαμβάνονται οι θαλάσσιες πεÏιοχÎÏ‚ και όλα τα άλλα υδατικά συστήματα και σχετιζόμενα στοιχεία, Î¼ÎµÏ„Î±Î¾Ï Ï„Ï‰Î½ οποίων και οι λεκάνες και υπολεκάνες αποÏÏοής ποταμών. Κατά πεÏίπτωση, σÏμφωνα με τους οÏισμοÏÏ‚ της οδηγίας 2000/60/ΕΚ του ΕυÏÏ‰Ï€Î±ÏŠÎºÎ¿Ï ÎšÎ¿Î¹Î½Î¿Î²Î¿Ï…Î»Î¯Î¿Ï… και του Συμβουλίου, της 23ης ΟκτωβÏίου 2000, για τη θÎσπιση πλαισίου κοινοτικής δÏάσης στον τομÎα της πολιτικής των υδάτων (2) και υπό μοÏφή δικτÏων.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="de">Gewässernetz</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="da">Hydrografiske elementer, herunder havomrÃ¥der og alle andre vandomrÃ¥der og dertil knyttede forekomster, herunder ogsÃ¥ vandløbsoplande og vandløbsdeloplande. I givet fald i henhold til definitionerne i Europa-Parlamentets og RÃ¥dets direktiv 2000/60/EF af 23. oktober 2000 om fastlæggelse af en ramme for Fællesskabets vandpolitiske foranstaltninger (2) og i form af net.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="da">Hydrograf</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="cs">Vodopis</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="bg">ХидрографиÑ</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="cs">PÅ™Ãrodnà prvky, vÄetnÄ› moÅ™ských oblastà a vÅ¡ech ostatnÃch s nimi souvisejÃcÃch vodnÃch tÄ›les a prvků, vÄetnÄ› povodà a dÃlÄÃch povodÃ. PÅ™ÃpadnÄ› v souladu s definicemi uvedenými ve smÄ›rnici Evropského parlamentu a Rady 2000/60/ES ze dne 23. Å™Ãjna 2000, kterou se stanovà rámec pro Äinnost SpoleÄenstvà v oblasti vodnà politiky (2), a v podobÄ› sÃtÃ.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="de">Elemente des Gewässernetzes, einschließlich Meeresgebieten und allen sonstigen Wasserkörpern und hiermit verbundenen Teilsystemen, darunter Einzugsgebiete und Teileinzugsgebiete. Gegebenenfalls gemäß den Definitionen der Richtlinie 2000/60/EG des Europäischen Parlaments und des Rates vom 23. Oktober 2000 zur Schaffung eines Ordnungsrahmens für Maßnahmen der Gemeinschaft im Bereich der Wasserpolitik (2) und in Form von Netzen.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="bg">ХидрографÑки елементи, включително морÑки райони и други водни маÑи и Ñвързани Ñ Ñ‚ÑÑ… елементи, включително речни баÑейни и подбаÑейни. По целеÑъобразноÑÑ‚ ÑъглаÑно определениÑта, поÑочени в Директива 2000/60/ЕО на ЕвропейÑÐºÐ¸Ñ Ð¿Ð°Ñ€Ð»Ð°Ð¼ÐµÐ½Ñ‚ и на Съвета от 23 октомври 2000 г. за уÑтановÑване на рамка за дейÑтвиÑта на ОбщноÑтта в облаÑтта на политиката за водите (2) и под формата на мрежи.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ca">Hidrografia</skos:prefLabel><skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ca">Elements hidrogrà fics, incloses les zones marines i totes les altres masses d’aigua i elements relacionats amb aquestes, aixà com les conques i subconques hidrogrà fiques. Quan sigui procedent, segons el que defineix la Directiva 2000/60/CE del Parlament Europeu i del Consell, de 23 d’octubre de 2000, per la qual s’estableix un marc comunitari d’actuació en l’à mbit de la polÃtica d’aigües i en forma de xarxes.</skos:scopeNote></skos:Concept> +<skos:Concept rdf:about="http://rdfdata.eionet.europa.eu/inspirethemes/themes/9"> +<skos:altLabel>ps</skos:altLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sl">Zavarovana obmoÄja</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sv">OmrÃ¥den som är utsedda eller förvaltas inom ramen för internationell lagstiftning, gemenskapslagstiftning och medlemsstaternas lagstiftning för att uppnÃ¥ specifika miljövÃ¥rdsmÃ¥l.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sv">Skyddade omrÃ¥den</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ro">Zone desemnate sau administrate într-un cadru legislativ internaÅ£ional, comunitar sau intern, în vederea îndeplinirii unor obiective specifice de conservare.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ro">Zone protejate</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sk">Oblasti vymedzené alebo spravované v rámci medzinárodných právnych predpisov, právnych predpisov SpoloÄenstva a právnych predpisov Älenských Å¡tátov na úÄely dosiahnutia osobitných ochranárskych cieľov.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sk">Chránené územia</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="sl">PodroÄje, ki se doloÄi ali upravlja v okviru mednarodnega prava in prava držav Älanic in Skupnosti z namenom, da se dosežejo posebni cilji ohranjanja.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pl">Obszary chronione</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pt">Zonas designadas ou geridas no âmbito de legislação internacional, comunitária ou dos Estados-Membros para a prossecução de objectivos especÃficos de conservação.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pt">SÃtios protegidos</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="nl">Beschermde gebieden</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="pl">Obszar wyznaczony lub zarzÄ…dzany w ramach prawa miÄ™dzynarodowego, wspólnotowego lub paÅ„stw czÅ‚onkowskich, w celu osiÄ…gniÄ™cia szczególnych celów ochrony.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="mt">Å»ona indikata jew amministrata f'qafas ta' leÄ¡iżlazzjoni internazzjonali, Komunitarja u ta' l-Istati Membri sabiex jintlaħqu objettivi speÄ‹ifiÄ‹i ta' konservazzjoni.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="mt">Siti protetti</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="nl">Gebieden die worden aangeduid of beheerd in het kader van internationale en communautaire wetgeving of wetgeving van de lidstaten om specifieke doelstellingen op het vlak van milieubescherming te verwezenlijken.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lt">Saugomos teritorijos</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lv">Teritorijas, kas noteiktas vai pÄrvaldÄ«tas saistÄ«bÄ ar starptautiskiem, Kopienas un dalÄ«bvalstu tiesÄ«bu aktiem, lai nodroÅ¡inÄtu Ä«paÅ¡u dabas aizsardzÄ«bas mÄ“rÄ·u Ä«stenoÅ¡anu.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lv">AizsargÄjamas teritorijas</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="it">Siti protetti</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="lt">Teritorija, nustatyta ar tvarkoma pagal tarptautinius, Bendrijos ir valstybių narių teisÄ—s aktus, siekiant konkreÄių apsaugos tikslų.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fi">Erityisten suojelutavoitteiden saavuttamiseksi kansainvälisen, yhteisön ja jäsenvaltioiden lainsäädännön puitteissa nimetty tai hoidettu alue.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fi">Suojellut alueet</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fr">Zone désignée ou gérée dans un cadre législatif international, communautaire ou national en vue d'atteindre des objectifs spécifiques de conservation.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="fr">Sites protégés</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="hu">Különleges természetvédelmi célok elérése érdekében – nemzetközi, közösségi és tagállami jogszabályok keretében – kijelölt vagy kezelt terület.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="hu">Védett helyek</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="it">Aree designate o gestite in un quadro legislativo internazionale, comunitario o degli Stati membri per conseguire obiettivi di conservazione specifici.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="et">Kaitsealused kohad</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="et">Ala, mis on kindlaksmääratud või mida hallatakse rahvusvaheliste, ühenduse või liikmesriikide õigusaktide raames konkreetsete kaitse-eesmärkide saavutamiseks.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="es">Lugares protegidos</skos:prefLabel> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="en">Protected sites</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="es">Zonas designadas o gestionadas dentro de un marco legislativo internacional, comunitario o propio de los Estados miembros, para la consecución de unos objetivos de conservación especÃficos.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="el">Î Ïοστατευόμενες τοποθεσίες</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="en">Area designated or managed within a framework of international, Community and Member States' legislation to achieve specific conservation objectives.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="da">Beskyttede lokaliteter</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="de">Gebiete, die im Rahmen des internationalen und des gemeinschaftlichen Rechts sowie des Rechts der Mitgliedstaaten ausgewiesen sind oder verwaltet werden, um spezifische Erhaltungsziele zu erreichen.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="de">Schutzgebiete</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="el">Εκτάσεις χαÏακτηÏισμÎνες ή υποκείμενες σε διαχείÏιση σε Îνα πλαίσιο διεθνοÏÏ‚, ÎºÎ¿Î¹Î½Î¿Ï„Î¹ÎºÎ¿Ï ÎºÎ±Î¹ ÎµÎ¸Î½Î¹ÎºÎ¿Ï Î´Î¹ÎºÎ±Î¯Î¿Ï… για την επίτευξη συγκεκÏιμÎνων στόχων διατήÏησης.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="cs">ChránÄ›ná územÃ</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="da">OmrÃ¥der, der er udpeget eller forvaltes inden for en ramme af international, fællesskabs- og medlemsstatslovgivning for at nÃ¥ bestemte bevaringsmÃ¥l.</skos:scopeNote> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="bg">Район, определен или управлÑван ÑъглаÑно международно законодателÑтво, законодателÑтво на ОбщноÑтта или на държавите-членки за поÑтигане на определени цели за опазване на такива обекти.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="bg">Защитени обекти</skos:prefLabel> +<skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="cs">Územà urÄená nebo spravovaná v rámci mezinárodnÃch právnÃch pÅ™edpisů a právnÃch pÅ™edpisů SpoleÄenstvà a Älenských států pro dosaženà konkrétnÃch cÃlů jejich ochrany.</skos:scopeNote> +<skos:prefLabel xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ca">Llocs protegits</skos:prefLabel><skos:scopeNote xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:ns4="http://rdfdata.eionet.europa.eu/inspirethemes/themes/" xml:lang="ca">Zones designades o gestionades dins d’un marc legislatiu internacional, comunitari o propi dels estats membres, per a la consecució d’uns objectius de conservació especÃfics.</skos:scopeNote></skos:Concept> +</rdf:RDF> diff --git a/src/main/webapp/WEB-INF/data/config/schema_plugins/iso19139/convert/thesaurus-transformation.xsl b/src/main/webapp/WEB-INF/data/config/schema_plugins/iso19139/convert/thesaurus-transformation.xsl new file mode 100644 index 0000000..9f053ee --- /dev/null +++ b/src/main/webapp/WEB-INF/data/config/schema_plugins/iso19139/convert/thesaurus-transformation.xsl @@ -0,0 +1,323 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + ~ Copyright (C) 2001-2016 Food and Agriculture Organization of the + ~ United Nations (FAO-UN), United Nations World Food Programme (WFP) + ~ and United Nations Environment Programme (UNEP) + ~ + ~ This program is free software; you can redistribute it and/or modify + ~ it under the terms of the GNU General Public License as published by + ~ the Free Software Foundation; either version 2 of the License, or (at + ~ your option) any later version. + ~ + ~ This program is distributed in the hope that it will be useful, but + ~ WITHOUT ANY WARRANTY; without even the implied warranty of + ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + ~ General Public License for more details. + ~ + ~ You should have received a copy of the GNU General Public License + ~ along with this program; if not, write to the Free Software + ~ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + ~ + ~ Contact: Jeroen Ticheler - FAO - Viale delle Terme di Caracalla 2, + ~ Rome - Italy. email: geonetwork@osgeo.org + --> + +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:gmx="http://www.isotc211.org/2005/gmx" + xmlns:gco="http://www.isotc211.org/2005/gco" + xmlns:gmd="http://www.isotc211.org/2005/gmd" + xmlns:srv="http://www.isotc211.org/2005/srv" + xmlns:geonet="http://www.fao.org/geonetwork" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:util="java:org.fao.geonet.util.XslUtil" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns:xs="http://www.w3.org/2001/XMLSchema" + version="2.0" + exclude-result-prefixes="#all"> + + + <!-- A set of templates use to convert thesaurus concept to ISO19139 fragments. --> + + + <xsl:include href="../process/process-utility.xsl"/> + + + <!-- Convert a concept to an ISO19139 fragment with an Anchor + for each keywords pointing to the concept URI--> + <xsl:template name="to-iso19139-keyword-with-anchor"> + <xsl:call-template name="to-iso19139-keyword"> + <xsl:with-param name="withAnchor" select="true()"/> + </xsl:call-template> + </xsl:template> + + + <!-- Convert a concept to an ISO19139 gmd:MD_Keywords with an XLink which + will be resolved by XLink resolver. --> + <xsl:template name="to-iso19139-keyword-as-xlink"> + <xsl:call-template name="to-iso19139-keyword"> + <xsl:with-param name="withXlink" select="true()"/> + </xsl:call-template> + </xsl:template> + + + <!-- Convert a concept to an ISO19139 keywords. + If no keyword is provided, only thesaurus section is adaded. + --> + <xsl:template name="to-iso19139-keyword"> + <xsl:param name="withAnchor" select="false()"/> + <xsl:param name="withXlink" select="false()"/> + <!-- Add thesaurus identifier using an Anchor which points to the download link. + It's recommended to use it in order to have the thesaurus widget inline editor + which use the thesaurus identifier for initialization. --> + <xsl:param name="withThesaurusAnchor" select="true()"/> + + + <!-- The lang parameter contains a list of languages + with the main one as the first element. If only one element + is provided, then CharacterString or Anchor are created. + If more than one language is provided, then PT_FreeText + with or without CharacterString can be created. --> + <xsl:variable name="listOfLanguage" select="tokenize(/root/request/lang, ',')"/> + <xsl:variable name="textgroupOnly" + as="xs:boolean" + select="if (/root/request/textgroupOnly and normalize-space(/root/request/textgroupOnly) != '') + then /root/request/textgroupOnly + else false()"/> + + + <xsl:apply-templates mode="to-iso19139-keyword" select="."> + <xsl:with-param name="withAnchor" select="$withAnchor"/> + <xsl:with-param name="withXlink" select="$withXlink"/> + <xsl:with-param name="withThesaurusAnchor" select="$withThesaurusAnchor"/> + <xsl:with-param name="listOfLanguage" select="$listOfLanguage"/> + <xsl:with-param name="textgroupOnly" select="$textgroupOnly"/> + <xsl:with-param name="node" select="node()"/> + </xsl:apply-templates> + </xsl:template> + + <xsl:template mode="to-iso19139-keyword" match="*[not(/root/request/skipdescriptivekeywords)]"> + <xsl:param name="textgroupOnly"/> + <xsl:param name="listOfLanguage"/> + <xsl:param name="withAnchor"/> + <xsl:param name="withXlink"/> + <xsl:param name="withThesaurusAnchor"/> + <xsl:param name="node"/> + + <gmd:descriptiveKeywords> + <xsl:choose> + <xsl:when test="$withXlink"> + <xsl:variable name="isLocalXlink" + select="util:getSettingValue('system/xlinkResolver/localXlinkEnable')"/> + <xsl:variable name="prefixUrl" + select="if ($isLocalXlink = 'true') + then concat('local://', $node, '/') + else $serviceUrl"/> + + <xsl:attribute name="xlink:href" + select="concat( + $prefixUrl, + 'api/registries/vocabularies/keyword?skipdescriptivekeywords=true&thesaurus=', + if (thesaurus/key) then thesaurus/key else /root/request/thesaurus, + '&id=', encode-for-uri(/root/request/id), + if (/root/request/lang) then concat('&lang=', /root/request/lang) else '', + if ($textgroupOnly) then '&textgroupOnly' else '')"/> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="to-md-keywords"> + <xsl:with-param name="withAnchor" select="$withAnchor"/> + <xsl:with-param name="withThesaurusAnchor" select="$withThesaurusAnchor"/> + <xsl:with-param name="listOfLanguage" select="$listOfLanguage"/> + <xsl:with-param name="textgroupOnly" select="$textgroupOnly"/> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> + </gmd:descriptiveKeywords> + </xsl:template> + + <xsl:template mode="to-iso19139-keyword" match="*[/root/request/skipdescriptivekeywords]"> + <xsl:param name="textgroupOnly"/> + <xsl:param name="listOfLanguage"/> + <xsl:param name="withAnchor"/> + <xsl:param name="withThesaurusAnchor"/> + + <xsl:call-template name="to-md-keywords"> + <xsl:with-param name="withAnchor" select="$withAnchor"/> + <xsl:with-param name="withThesaurusAnchor" select="$withThesaurusAnchor"/> + <xsl:with-param name="listOfLanguage" select="$listOfLanguage"/> + <xsl:with-param name="textgroupOnly" select="$textgroupOnly"/> + </xsl:call-template> + </xsl:template> + + <xsl:template name="to-md-keywords"> + <xsl:param name="textgroupOnly"/> + <xsl:param name="listOfLanguage"/> + <xsl:param name="withAnchor"/> + <xsl:param name="withThesaurusAnchor"/> + + <gmd:MD_Keywords> + <!-- Get thesaurus ID from keyword or from request parameter if no keyword found. --> + <xsl:variable name="currentThesaurus" + select="if (thesaurus/key) then thesaurus/key else /root/request/thesaurus"/> + <!-- Loop on all keyword from the same thesaurus --> + <xsl:for-each select="//keyword[thesaurus/key = $currentThesaurus]"> + <gmd:keyword> + <xsl:if test="$currentThesaurus = 'external.none.allThesaurus'"> + <!-- + if 'all' thesaurus we need to encode the thesaurus name so that update-fixed-info can re-organize the + keywords into the correct thesaurus sections. + --> + <xsl:variable name="keywordThesaurus" + select="replace(./uri, 'http://org.fao.geonet.thesaurus.all/([^@]+)@@@.+', '$1')"/> + <xsl:attribute name="gco:nilReason" select="concat('thesaurus::', $keywordThesaurus)"/> + </xsl:if> + + <!-- Multilingual output if more than one requested language --> + <xsl:choose> + <xsl:when test="count($listOfLanguage) > 1"> + <xsl:attribute name="xsi:type" select="'gmd:PT_FreeText_PropertyType'"/> + <xsl:variable name="keyword" select="."/> + + <xsl:if test="not($textgroupOnly)"> + <gco:CharacterString> + <xsl:value-of + select="$keyword/values/value[@language = $listOfLanguage[1]]/text()"></xsl:value-of> + </gco:CharacterString> + </xsl:if> + + <gmd:PT_FreeText> + <xsl:for-each select="$listOfLanguage"> + <xsl:variable name="lang" select="."/> + <gmd:textGroup> + <gmd:LocalisedCharacterString + locale="#{upper-case(util:twoCharLangCode($lang))}"> + <xsl:value-of + select="$keyword/values/value[@language = $lang]/text()"></xsl:value-of> + </gmd:LocalisedCharacterString> + </gmd:textGroup> + </xsl:for-each> + </gmd:PT_FreeText> + </xsl:when> + <xsl:otherwise> + <!-- ... default mode --> + <xsl:choose> + <xsl:when test="$withAnchor"> + <!-- TODO multilingual Anchor ? --> + <gmx:Anchor + xlink:href="{$serviceUrl}api/registries/vocabularies/keyword?thesaurus={thesaurus/key}&id={uri}"> + <xsl:value-of select="value"/> + </gmx:Anchor> + </xsl:when> + <xsl:otherwise> + <gco:CharacterString> + <xsl:value-of select="value"/> + </gco:CharacterString> + </xsl:otherwise> + </xsl:choose> + </xsl:otherwise> + </xsl:choose> + </gmd:keyword> + </xsl:for-each> + + <!-- If no keyword, add one to avoid invalid metadata --> + <xsl:if test="count(//keyword[thesaurus/key = $currentThesaurus]) = 0"> + <gmd:keyword gco:nilReason="missing"> + <gco:CharacterString></gco:CharacterString> + </gmd:keyword> + </xsl:if> + + <xsl:copy-of + select="geonet:add-thesaurus-info($currentThesaurus, $withThesaurusAnchor, /root/gui/thesaurus/thesauri, not(/root/request/keywordOnly))"/> + </gmd:MD_Keywords> + </xsl:template> + + <xsl:function name="geonet:add-thesaurus-info"> + <xsl:param name="currentThesaurus" as="xs:string"/> + <xsl:param name="withThesaurusAnchor" as="xs:boolean"/> + <xsl:param name="thesauri" as="node()"/> + <xsl:param name="thesaurusInfo" as="xs:boolean"/> + + <!-- Add thesaurus theme --> + <gmd:type> + <gmd:MD_KeywordTypeCode + codeList="http://www.isotc211.org/2005/resources/codeList.xml#MD_KeywordTypeCode" + codeListValue="{$thesauri/thesaurus[key = $currentThesaurus]/dname}"/> + </gmd:type> + <xsl:if test="$thesaurusInfo"> + <gmd:thesaurusName> + <gmd:CI_Citation> + <gmd:title> + <gco:CharacterString> + <xsl:value-of select="$thesauri/thesaurus[key = $currentThesaurus]/title"/> + </gco:CharacterString> + </gmd:title> + + <xsl:variable name="thesaurusDate" + select="normalize-space($thesauri/thesaurus[key = $currentThesaurus]/date)"/> + + <xsl:if test="$thesaurusDate != ''"> + <gmd:date> + <gmd:CI_Date> + <gmd:date> + <xsl:choose> + <xsl:when test="contains($thesaurusDate, 'T')"> + <gco:DateTime> + <xsl:value-of select="$thesaurusDate"/> + </gco:DateTime> + </xsl:when> + <xsl:otherwise> + <gco:Date> + <xsl:value-of select="$thesaurusDate"/> + </gco:Date> + </xsl:otherwise> + </xsl:choose> + </gmd:date> + <gmd:dateType> + <gmd:CI_DateTypeCode + codeList="http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/codelist/ML_gmxCodelists.xml#CI_DateTypeCode" + codeListValue="publication"/> + </gmd:dateType> + </gmd:CI_Date> + </gmd:date> + </xsl:if> + + <xsl:if test="$withThesaurusAnchor"> + <gmd:identifier> + <gmd:MD_Identifier> + <gmd:code> + <gmx:Anchor xlink:href="{$thesauri/thesaurus[key = $currentThesaurus]/url}"> + geonetwork.thesaurus.<xsl:value-of + select="$currentThesaurus"/> + </gmx:Anchor> + </gmd:code> + </gmd:MD_Identifier> + </gmd:identifier> + </xsl:if> + </gmd:CI_Citation> + </gmd:thesaurusName> + </xsl:if> + </xsl:function> + + <!-- Convert a concept to an ISO19139 extent --> + <xsl:template name="to-iso19139-extent"> + <xsl:param name="isService" select="false()"/> + + <xsl:variable name="currentThesaurus" select="thesaurus/key"/> + <!-- Loop on all keyword from the same thesaurus --> + <xsl:for-each select="//keyword[thesaurus/key = $currentThesaurus]"> + <xsl:choose> + <xsl:when test="$isService"> + <srv:extent> + <xsl:copy-of + select="geonet:make-iso-extent(geo/west, geo/south, geo/east, geo/north, value)"/> + </srv:extent> + </xsl:when> + <xsl:otherwise> + <gmd:extent> + <xsl:copy-of + select="geonet:make-iso-extent(geo/west, geo/south, geo/east, geo/north, value)"/> + </gmd:extent> + </xsl:otherwise> + </xsl:choose> + </xsl:for-each> + </xsl:template> +</xsl:stylesheet> diff --git a/src/main/webapp/WEB-INF/data/config/schema_plugins/iso19139/index-fields/default.xsl b/src/main/webapp/WEB-INF/data/config/schema_plugins/iso19139/index-fields/default.xsl new file mode 100644 index 0000000..3ae51ba --- /dev/null +++ b/src/main/webapp/WEB-INF/data/config/schema_plugins/iso19139/index-fields/default.xsl @@ -0,0 +1,1103 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<!-- + ~ Copyright (C) 2001-2016 Food and Agriculture Organization of the + ~ United Nations (FAO-UN), United Nations World Food Programme (WFP) + ~ and United Nations Environment Programme (UNEP) + ~ + ~ This program is free software; you can redistribute it and/or modify + ~ it under the terms of the GNU General Public License as published by + ~ the Free Software Foundation; either version 2 of the License, or (at + ~ your option) any later version. + ~ + ~ This program is distributed in the hope that it will be useful, but + ~ WITHOUT ANY WARRANTY; without even the implied warranty of + ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + ~ General Public License for more details. + ~ + ~ You should have received a copy of the GNU General Public License + ~ along with this program; if not, write to the Free Software + ~ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + ~ + ~ Contact: Jeroen Ticheler - FAO - Viale delle Terme di Caracalla 2, + ~ Rome - Italy. email: geonetwork@osgeo.org + --> + +<xsl:stylesheet xmlns:gmd="http://www.isotc211.org/2005/gmd" + xmlns:gco="http://www.isotc211.org/2005/gco" + xmlns:gml="http://www.opengis.net/gml" + xmlns:srv="http://www.isotc211.org/2005/srv" + xmlns:geonet="http://www.fao.org/geonetwork" + xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:gmx="http://www.isotc211.org/2005/gmx" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:util="java:org.fao.geonet.util.XslUtil" + xmlns:skos="http://www.w3.org/2004/02/skos/core#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + version="2.0" + exclude-result-prefixes="#all"> + + <xsl:include href="../convert/functions.xsl"/> + <xsl:include href="../../../xsl/utils-fn.xsl"/> + <xsl:include href="index-subtemplate-fields.xsl"/> + + <!-- This file defines what parts of the metadata are indexed by Lucene + Searches can be conducted on indexes defined here. + The Field@name attribute defines the name of the search variable. + If a variable has to be maintained in the user session, it needs to be + added to the GeoNetwork constants in the Java source code. + Please keep indexes consistent among metadata standards if they should + work across different metadata resources --> + <!-- ========================================================================================= --> + + <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="no"/> + + + <!-- ========================================================================================= --> + + <xsl:param name="thesauriDir"/> + <xsl:param name="inspire">false</xsl:param> + + <xsl:variable name="inspire-thesaurus" + select="if ($inspire!='false') then document(concat('file:///', replace($thesauriDir, '\\', '/'), '/external/thesauri/theme/inspire-theme.rdf')) else ''"/> + <xsl:variable name="inspire-theme" + select="if ($inspire!='false') then $inspire-thesaurus//skos:Concept else ''"/> + + <!-- If identification creation, publication and revision date + should be indexed as a temporal extent information (eg. in INSPIRE + metadata implementing rules, those elements are defined as part + of the description of the temporal extent). --> + <xsl:variable name="useDateAsTemporalExtent" select="false()"/> + + <!-- Define the way keyword and thesaurus are indexed. If false + only keyword, thesaurusName and thesaurusType field are created. + If true, advanced field are created to make more details query + on keyword type and search by thesaurus. Index size is bigger + but more detailed facet can be configured based on each thesaurus. + --> + <xsl:variable name="indexAllKeywordDetails" select="true()"/> + + <!-- For record not having status obsolete, flag them as non + obsolete records. Some catalog like to restrict to non obsolete + records only the default search. --> + <xsl:variable name="flagNonObseleteRecords" select="false()"/> + + + <!-- The main metadata language --> + <xsl:variable name="isoLangId"> + <xsl:call-template name="langId19139"/> + </xsl:variable> + + <!-- ========================================================================================= --> + <xsl:template match="/"> + <Document locale="{$isoLangId}"> + <Field name="_locale" string="{$isoLangId}" store="true" index="true"/> + + <Field name="_docLocale" string="{$isoLangId}" store="true" index="true"/> + + <xsl:variable name="_defaultTitle"> + <xsl:call-template name="defaultTitle"> + <xsl:with-param name="isoDocLangId" select="$isoLangId"/> + </xsl:call-template> + </xsl:variable> + + <Field name="_defaultTitle" string="{string($_defaultTitle)}" store="true" index="true"/> + + <!-- not tokenized title for sorting, needed for multilingual sorting --> + <xsl:if test="geonet:info/isTemplate != 's'"> + <Field name="_title" string="{string($_defaultTitle)}" store="true" index="true"/> + </xsl:if> + + <xsl:apply-templates select="*[name(.)='gmd:MD_Metadata' or @gco:isoType='gmd:MD_Metadata']" + mode="metadata"/> + + <xsl:apply-templates mode="index" select="*"/> + + </Document> + </xsl:template> + + + <!-- Add index mode template in order to easily add new field in the index (eg. in profiles). + + For example, index some keywords from a specific thesaurus in a new field: + <xsl:template mode="index" + match="gmd:MD_Keywords[gmd:thesaurusName/gmd:CI_Citation/ + gmd:title/gco:CharacterString='My thesaurus']/ + gmd:keyword[normalize-space(gco:CharacterString) != '']"> + <Field name="myThesaurusKeyword" string="{string(.)}" store="true" index="true"/> + </xsl:template> + + Note: if more than one template match the same element in a mode, only one will be + used (usually the last one). + + If matching a upper level element, apply mode to its child to further index deeper level if required: + <xsl:template mode="index" match="gmd:EX_Extent"> + ... do something + ... and continue indexing + <xsl:apply-templates mode="index" select="*"/> + </xsl:template> + --> + <xsl:template mode="index" match="*|@*"> + <xsl:apply-templates mode="index" select="*|@*"/> + </xsl:template> + + + <xsl:template mode="index" + match="gmd:extent/gmd:EX_Extent/gmd:description/gco:CharacterString[normalize-space(.) != '']"> + <Field name="extentDesc" string="{string(.)}" store="false" index="true"/> + </xsl:template> + + + <!-- ========================================================================================= --> + + <xsl:template match="*" mode="metadata"> + + <!-- === Data or Service Identification === --> + + <!-- the double // here seems needed to index MD_DataIdentification when + it is nested in a SV_ServiceIdentification class --> + + <xsl:for-each select="gmd:identificationInfo//gmd:MD_DataIdentification| + gmd:identificationInfo//*[contains(@gco:isoType, 'MD_DataIdentification')]| + gmd:identificationInfo/srv:SV_ServiceIdentification"> + + <xsl:for-each select="gmd:citation/gmd:CI_Citation"> + <xsl:for-each select="gmd:identifier/gmd:MD_Identifier/gmd:code/gco:CharacterString"> + <Field name="identifier" string="{string(.)}" store="true" index="true"/> + </xsl:for-each> + + <xsl:for-each select="gmd:identifier/gmd:RS_Identifier/gmd:code/gco:CharacterString"> + <Field name="identifier" string="{string(.)}" store="true" index="true"/> + </xsl:for-each> + + + <xsl:for-each select="gmd:title/gco:CharacterString"> + <Field name="title" string="{string(.)}" store="true" index="true"/> + <!-- not tokenized title for sorting --> + <Field name="_title" string="{string(.)}" store="false" index="true"/> + </xsl:for-each> + + <xsl:for-each select="gmd:alternateTitle/gco:CharacterString"> + <Field name="altTitle" string="{string(.)}" store="true" index="true"/> + </xsl:for-each> + + <xsl:for-each + select="gmd:date/gmd:CI_Date[gmd:dateType/gmd:CI_DateTypeCode/@codeListValue='revision']/gmd:date"> + <Field name="revisionDate" string="{string(gco:Date[.!='']|gco:DateTime[.!=''])}" + store="true" index="true"/> + <Field name="createDateMonth" + string="{substring(gco:Date[.!='']|gco:DateTime[.!=''], 0, 8)}" store="true" + index="true"/> + <Field name="createDateYear" + string="{substring(gco:Date[.!='']|gco:DateTime[.!=''], 0, 5)}" store="true" + index="true"/> + <xsl:if test="$useDateAsTemporalExtent"> + <Field name="tempExtentBegin" string="{string(gco:Date[.!='']|gco:DateTime[.!=''])}" + store="true" index="true"/> + </xsl:if> + </xsl:for-each> + + <xsl:for-each + select="gmd:date/gmd:CI_Date[gmd:dateType/gmd:CI_DateTypeCode/@codeListValue='creation']/gmd:date"> + <Field name="createDate" string="{string(gco:Date[.!='']|gco:DateTime[.!=''])}" + store="true" index="true"/> + <Field name="createDateMonth" + string="{substring(gco:Date[.!='']|gco:DateTime[.!=''], 0, 8)}" store="true" + index="true"/> + <Field name="createDateYear" + string="{substring(gco:Date[.!='']|gco:DateTime[.!=''], 0, 5)}" store="true" + index="true"/> + <xsl:if test="$useDateAsTemporalExtent"> + <Field name="tempExtentBegin" string="{string(gco:Date[.!='']|gco:DateTime[.!=''])}" + store="true" index="true"/> + </xsl:if> + </xsl:for-each> + + <xsl:for-each + select="gmd:date/gmd:CI_Date[gmd:dateType/gmd:CI_DateTypeCode/@codeListValue='publication']/gmd:date"> + <Field name="publicationDate" string="{string(gco:Date[.!='']|gco:DateTime[.!=''])}" + store="true" index="true"/> + <xsl:if test="$useDateAsTemporalExtent"> + <Field name="tempExtentBegin" string="{string(gco:Date[.!='']|gco:DateTime[.!=''])}" + store="true" index="true"/> + </xsl:if> + </xsl:for-each> + + <!-- fields used to search for metadata in paper or digital format --> + + <xsl:for-each select="gmd:presentationForm"> + <xsl:if test="contains(gmd:CI_PresentationFormCode/@codeListValue, 'Digital')"> + <Field name="digital" string="true" store="false" index="true"/> + </xsl:if> + + <xsl:if test="contains(gmd:CI_PresentationFormCode/@codeListValue, 'Hardcopy')"> + <Field name="paper" string="true" store="false" index="true"/> + </xsl:if> + </xsl:for-each> + </xsl:for-each> + + <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + + <xsl:for-each select="gmd:pointOfContact[1]/*/gmd:role/*/@codeListValue"> + <Field name="responsiblePartyRole" string="{string(.)}" store="true" index="true"/> + </xsl:for-each> + + <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + + <xsl:for-each select="gmd:abstract/gco:CharacterString"> + <Field name="abstract" string="{string(.)}" store="true" index="true"/> + </xsl:for-each> + + <xsl:for-each select="gmd:credit/gco:CharacterString"> + <Field name="credit" string="{string(.)}" store="true" index="true"/> + </xsl:for-each> + + + <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + + <xsl:for-each select="*/gmd:EX_Extent"> + <xsl:apply-templates select="gmd:geographicElement/gmd:EX_GeographicBoundingBox" + mode="latLon"/> + + <xsl:for-each select="gmd:description/gco:CharacterString[normalize-space(.) != '']"> + <Field name="extentDesc" string="{string(.)}" store="true" index="true"/> + </xsl:for-each> + + <xsl:for-each + select="gmd:geographicElement/gmd:EX_GeographicDescription/gmd:geographicIdentifier/gmd:MD_Identifier/gmd:code/gco:CharacterString"> + <Field name="geoDescCode" string="{string(.)}" store="true" index="true"/> + </xsl:for-each> + + <xsl:for-each select="gmd:temporalElement/ + (gmd:EX_TemporalExtent|gmd:EX_SpatialTemporalExtent)/gmd:extent"> + <xsl:for-each select="gml:TimePeriod"> + + <xsl:variable name="times"> + <xsl:call-template name="newGmlTime"> + <xsl:with-param name="begin" + select="gml:beginPosition|gml:begin/gml:TimeInstant/gml:timePosition"/> + <xsl:with-param name="end" + select="gml:endPosition|gml:end/gml:TimeInstant/gml:timePosition"/> + </xsl:call-template> + </xsl:variable> + + <Field name="tempExtentBegin" string="{lower-case(substring-before($times,'|'))}" + store="true" index="true"/> + <Field name="tempExtentEnd" string="{lower-case(substring-after($times,'|'))}" + store="true" index="true"/> + </xsl:for-each> + + </xsl:for-each> + </xsl:for-each> + + <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + + <xsl:for-each select="//gmd:MD_Keywords"> + <!-- Index all keywords as text or anchor --> + <xsl:variable name="listOfKeywords" + select="gmd:keyword/gco:CharacterString| + gmd:keyword/gmx:Anchor"/> + <xsl:for-each select="$listOfKeywords"> + <xsl:variable name="keyword" select="string(.)"/> + + <Field name="keyword" string="{$keyword}" store="true" index="true"/> + + <!-- If INSPIRE is enabled, check if the keyword is one of the 34 themes + and index annex, theme and theme in english. --> + <xsl:if test="$inspire='true'"> + <xsl:if test="string-length(.) > 0"> + + <xsl:variable name="inspireannex"> + <xsl:call-template name="determineInspireAnnex"> + <xsl:with-param name="keyword" select="$keyword"/> + <xsl:with-param name="inspireThemes" select="$inspire-theme"/> + </xsl:call-template> + </xsl:variable> + + <xsl:variable name="inspireThemeAcronym"> + <xsl:call-template name="getInspireThemeAcronym"> + <xsl:with-param name="keyword" select="$keyword"/> + </xsl:call-template> + </xsl:variable> + + <!-- Add the inspire field if it's one of the 34 themes --> + <xsl:if test="normalize-space($inspireannex)!=''"> + <Field name="inspiretheme" string="{$keyword}" store="true" index="true"/> + <Field name="inspirethemewithac" + string="{concat($inspireThemeAcronym, '|', $keyword)}" + store="true" index="true"/> + + <!--<Field name="inspirethemeacronym" string="{$inspireThemeAcronym}" store="true" index="true"/>--> + <xsl:variable name="inspireThemeURI" + select="$inspire-theme[skos:prefLabel = $keyword]/@rdf:about"/> + <Field name="inspirethemeuri" string="{$inspireThemeURI}" store="true" + index="true"/> + + <xsl:variable name="englishInspireTheme"> + <xsl:call-template name="translateInspireThemeToEnglish"> + <xsl:with-param name="keyword" select="$keyword"/> + <xsl:with-param name="inspireThemes" select="$inspire-theme"/> + </xsl:call-template> + </xsl:variable> + + <Field name="inspiretheme_en" string="{$englishInspireTheme}" store="true" + index="true"/> + <Field name="inspireannex" string="{$inspireannex}" store="true" index="true"/> + <!-- FIXME : inspirecat field will be set multiple time if one record has many themes --> + <Field name="inspirecat" string="true" store="false" index="true"/> + </xsl:if> + </xsl:if> + </xsl:if> + </xsl:for-each> + + <!-- Index thesaurus name to easily search for records + using keyword from a thesaurus. --> + <xsl:for-each select="gmd:thesaurusName/gmd:CI_Citation"> + <xsl:variable name="thesaurusIdentifier" + select="gmd:identifier/gmd:MD_Identifier/gmd:code/gmx:Anchor/text()"/> + + <xsl:if test="$thesaurusIdentifier != ''"> + <Field name="thesaurusIdentifier" + string="{substring-after($thesaurusIdentifier,'geonetwork.thesaurus.')}" + store="true" index="true"/> + </xsl:if> + <xsl:if test="gmd:title/gco:CharacterString/text() != ''"> + <Field name="thesaurusName" + string="{gmd:title/gco:CharacterString/text()}" + store="true" index="true"/> + </xsl:if> + + + <xsl:if test="$indexAllKeywordDetails and $thesaurusIdentifier != ''"> + <!-- field thesaurus-{{thesaurusIdentifier}}={{keyword}} allows + to group all keywords of same thesaurus in a field --> + <xsl:variable name="currentType" select="string(.)"/> + + <xsl:for-each select="$listOfKeywords"> + <Field + name="thesaurus-{substring-after($thesaurusIdentifier,'geonetwork.thesaurus.')}" + string="{string(.)}" + store="true" index="true"/> + + </xsl:for-each> + </xsl:if> + </xsl:for-each> + + <!-- Index thesaurus type --> + <xsl:for-each select="gmd:type/gmd:MD_KeywordTypeCode/@codeListValue"> + <Field name="keywordType" string="{string(.)}" store="true" index="true"/> + <xsl:if test="$indexAllKeywordDetails"> + <!-- field thesaurusType{{type}}={{keyword}} allows + to group all keywords of same type in a field --> + <xsl:variable name="currentType" select="string(.)"/> + <xsl:for-each select="$listOfKeywords"> + <Field name="keywordType-{$currentType}" + string="{string(.)}" + store="true" index="true"/> + </xsl:for-each> + </xsl:if> + </xsl:for-each> + </xsl:for-each> + + <xsl:variable name="listOfKeywords">{ + <xsl:variable name="keywordWithNoThesaurus" + select="//gmd:MD_Keywords[ + not(gmd:thesaurusName) or gmd:thesaurusName/*/gmd:title/*/text() = '']/ + gmd:keyword[*/text() != '']"/> + <xsl:if test="count($keywordWithNoThesaurus) > 0"> + 'keywords': [ + <xsl:for-each select="$keywordWithNoThesaurus/(gco:CharacterString|gmx:Anchor)"> + <xsl:value-of select="concat('''', replace(., '''', '\\'''), '''')"/> + <xsl:if test="position() != last()">,</xsl:if> + </xsl:for-each> + ] + <xsl:if test="//gmd:MD_Keywords[gmd:thesaurusName]">,</xsl:if> + </xsl:if> + <xsl:for-each-group select="//gmd:MD_Keywords[gmd:thesaurusName/*/gmd:title/*/text() != '']" + group-by="gmd:thesaurusName/*/gmd:title/*/text()"> + '<xsl:value-of select="replace(current-grouping-key(), '''', '\\''')"/>' :[ + <xsl:for-each select="gmd:keyword/(gco:CharacterString|gmx:Anchor)"> + <xsl:value-of select="concat('''', replace(., '''', '\\'''), '''')"/> + <xsl:if test="position() != last()">,</xsl:if> + </xsl:for-each> + ] + <xsl:if test="position() != last()">,</xsl:if> + </xsl:for-each-group> + } + </xsl:variable> + + <Field name="keywordGroup" + string="{normalize-space($listOfKeywords)}" + store="true" + index="false"/> + + <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + + <xsl:for-each select="gmd:pointOfContact"> + <xsl:apply-templates mode="index-contact" + select="gmd:CI_ResponsibleParty|*[@gco:isoType = 'gmd:CI_ResponsibleParty']"> + <xsl:with-param name="type" select="'resource'"/> + <xsl:with-param name="fieldPrefix" select="'responsibleParty'"/> + <xsl:with-param name="position" select="position()"/> + </xsl:apply-templates> + </xsl:for-each> + + <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + + <xsl:choose> + <xsl:when test="gmd:resourceConstraints/gmd:MD_SecurityConstraints"> + <Field name="secConstr" string="true" store="true" index="true"/> + </xsl:when> + <xsl:otherwise> + <Field name="secConstr" string="false" store="true" index="true"/> + </xsl:otherwise> + </xsl:choose> + + + <!-- Add an extra value to the status codelist to indicate all + non obsolete records --> + <xsl:if test="$flagNonObseleteRecords"> + <xsl:variable name="isNotObsolete" + select="count(gmd:status[gmd:MD_ProgressCode/@codeListValue = 'obsolete']) = 0"/> + <xsl:if test="$isNotObsolete"> + <Field name="cl_status" string="notobsolete" store="true" index="true"/> + </xsl:if> + </xsl:if> + + <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + + <xsl:for-each select="gmd:topicCategory/gmd:MD_TopicCategoryCode"> + <Field name="topicCat" string="{string(.)}" store="true" index="true"/> + <Field name="keyword" + string="{util:getCodelistTranslation('gmd:MD_TopicCategoryCode', string(.), string($isoLangId))}" + store="true" index="true"/> + </xsl:for-each> + + <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + + <xsl:for-each + select="gmd:language/gco:CharacterString|gmd:language/gmd:LanguageCode/@codeListValue"> + <Field name="datasetLang" string="{string(.)}" store="true" index="true"/> + </xsl:for-each> + + <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + + <xsl:for-each select="gmd:spatialResolution/gmd:MD_Resolution"> + <xsl:for-each + select="gmd:equivalentScale/gmd:MD_RepresentativeFraction/gmd:denominator/gco:Integer"> + <Field name="denominator" string="{string(.)}" store="true" index="true"/> + </xsl:for-each> + + <xsl:for-each select="gmd:distance/gco:Distance"> + <Field name="distanceVal" string="{string(.)}" store="true" index="true"/> + </xsl:for-each> + + <xsl:for-each select="gmd:distance/gco:Distance/@uom"> + <Field name="distanceUom" string="{string(.)}" store="true" index="true"/> + </xsl:for-each> + + <xsl:for-each select="gmd:distance/gco:Distance"> + <!-- Units may be encoded as + http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/uom/ML_gmxUom.xml#m + in such case retrieve the unit acronym only. --> + <xsl:variable name="unit" + select="if (contains(@uom, '#')) then substring-after(@uom, '#') else @uom"/> + <Field name="resolution" string="{concat(string(.), ' ', $unit)}" store="true" + index="true"/> + </xsl:for-each> + </xsl:for-each> + + <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + + <xsl:for-each select="gmd:resourceMaintenance/ + gmd:MD_MaintenanceInformation/gmd:maintenanceAndUpdateFrequency/ + gmd:MD_MaintenanceFrequencyCode/@codeListValue[. != '']"> + <Field name="updateFrequency" string="{string(.)}" store="true" index="true"/> + </xsl:for-each> + + + <xsl:for-each select="gmd:resourceConstraints/*"> + <xsl:variable name="fieldPrefix" select="local-name()"/> + + <xsl:for-each + select="gmd:accessConstraints/gmd:MD_RestrictionCode/@codeListValue[string(.) != 'otherRestrictions']"> + <Field name="{$fieldPrefix}AccessConstraints" + string="{string(.)}" store="true" index="true"/> + </xsl:for-each> + + <xsl:for-each select="gmd:otherConstraints/gco:CharacterString"> + <Field name="{$fieldPrefix}OtherConstraints" + string="{string(.)}" store="true" index="true"/> + </xsl:for-each> + + <xsl:for-each select="gmd:useLimitation/gco:CharacterString"> + <Field name="{$fieldPrefix}UseLimitation" + string="{string(.)}" store="true" index="true"/> + </xsl:for-each> + + <xsl:for-each select="gmd:useLimitation/gmx:Anchor[not(string(@xlink:href))]"> + <Field name="{$fieldPrefix}UseLimitation" + string="{string(.)}" store="true" index="true"/> + </xsl:for-each> + + <xsl:for-each select="gmd:useLimitation/gmx:Anchor[string(@xlink:href)]"> + <Field name="{$fieldPrefix}UseLimitation" + string="{concat('link|',string(@xlink:href), '|', string(.))}" store="true" index="true"/> + </xsl:for-each> + </xsl:for-each> + + <!-- Index aggregation info and provides option to query by type of association + and type of initiative + + Aggregation info is indexed by adding the following fields to the index: + * agg_use: boolean + * agg_with_association: {$associationType} + * agg_{$associationType}: {$code} + * agg_{$associationType}_with_initiative: {$initiativeType} + * agg_{$associationType}_{$initiativeType}: {$code} + + Sample queries: + * Search for records with siblings: http://localhost:8080/geonetwork/srv/fre/q?agg_use=true + * Search for records having a crossReference with another record: + http://localhost:8080/geonetwork/srv/fre/q?agg_crossReference=23f0478a-14ba-4a24-b365-8be88d5e9e8c + * Search for records having a crossReference with another record: + http://localhost:8080/geonetwork/srv/fre/q?agg_crossReference=23f0478a-14ba-4a24-b365-8be88d5e9e8c + * Search for records having a crossReference of type "study" with another record: + http://localhost:8080/geonetwork/srv/fre/q?agg_crossReference_study=23f0478a-14ba-4a24-b365-8be88d5e9e8c + * Search for records having a crossReference of type "study": + http://localhost:8080/geonetwork/srv/fre/q?agg_crossReference_with_initiative=study + * Search for records having a "crossReference" : + http://localhost:8080/geonetwork/srv/fre/q?agg_with_association=crossReference + --> + <xsl:for-each select="gmd:aggregationInfo/gmd:MD_AggregateInformation"> + <xsl:variable name="code" select="gmd:aggregateDataSetIdentifier/gmd:MD_Identifier/gmd:code/gco:CharacterString| + gmd:aggregateDataSetIdentifier/gmd:RS_Identifier/gmd:code/gco:CharacterString"/> + <xsl:if test="$code != ''"> + <xsl:variable name="associationType" + select="gmd:associationType/gmd:DS_AssociationTypeCode/@codeListValue"/> + <xsl:variable name="initiativeType" + select="gmd:initiativeType/gmd:DS_InitiativeTypeCode/@codeListValue"/> + + <Field name="agg_{$associationType}_{$initiativeType}" string="{$code}" store="false" + index="true"/> + <Field name="agg_{$associationType}_with_initiative" string="{$initiativeType}" + store="false" index="true"/> + <Field name="agg_{$associationType}" string="{$code}" store="true" index="true"/> + <Field name="agg_associated" string="{$code}" store="false" index="true"/> + <Field name="agg_with_association" string="{$associationType}" store="false" + index="true"/> + <Field name="agg_use" string="true" store="false" index="true"/> + </xsl:if> + </xsl:for-each> + + <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + <!-- Fields use to search on Service --> + + <xsl:for-each select="srv:serviceType/gco:LocalName"> + <Field name="serviceType" string="{string(.)}" store="true" index="true"/> + <Field name="type" string="service-{string(.)}" store="true" index="true"/> + </xsl:for-each> + + <xsl:for-each select="srv:serviceTypeVersion/gco:CharacterString"> + <Field name="serviceTypeVersion" string="{string(.)}" store="true" index="true"/> + </xsl:for-each> + + <xsl:for-each select="//srv:SV_OperationMetadata/srv:operationName/gco:CharacterString"> + <Field name="operation" string="{string(.)}" store="true" index="true"/> + </xsl:for-each> + + <xsl:for-each select="srv:operatesOn/@uuidref"> + <Field name="operatesOn" string="{string(.)}" store="true" index="true"/> + </xsl:for-each> + + <xsl:for-each select="srv:operatesOn/@xlink:href"> + <Field name="operatesOn" string="{string(.)}" store="true" index="true"/> + </xsl:for-each> + + + <xsl:for-each select="srv:coupledResource"> + <xsl:for-each select="srv:SV_CoupledResource/srv:identifier/gco:CharacterString"> + <Field name="operatesOnIdentifier" string="{string(.)}" store="true" index="true"/> + </xsl:for-each> + + <xsl:for-each select="srv:SV_CoupledResource/srv:operationName/gco:CharacterString"> + <Field name="operatesOnName" string="{string(.)}" store="true" index="true"/> + </xsl:for-each> + </xsl:for-each> + + <xsl:for-each + select="gmd:graphicOverview/gmd:MD_BrowseGraphic[normalize-space(gmd:fileName/gco:CharacterString) != '']"> + <xsl:variable name="fileName" select="gmd:fileName/gco:CharacterString"/> + <xsl:variable name="fileDescr" select="gmd:fileDescription/gco:CharacterString"/> + <xsl:variable name="thumbnailType" + select="if (position() = 1) then 'thumbnail' else 'overview'"/> + <!-- First thumbnail is flagged as thumbnail and could be considered the main one --> + <Field name="image" + string="{concat($thumbnailType, '|', $fileName, '|', $fileDescr)}" + store="true" index="false"/> + </xsl:for-each> + </xsl:for-each> + + <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + <!-- === Distribution === --> + + <xsl:for-each select="gmd:distributionInfo/gmd:MD_Distribution"> + <xsl:for-each select="gmd:distributionFormat/gmd:MD_Format/gmd:name/gco:CharacterString"> + <Field name="format" string="{string(.)}" store="true" index="true"/> + </xsl:for-each> + + <!-- index online protocol --> + <xsl:for-each select="gmd:transferOptions/gmd:MD_DigitalTransferOptions"> + <xsl:variable name="tPosition" select="position()"></xsl:variable> + <xsl:for-each select="gmd:onLine/gmd:CI_OnlineResource[gmd:linkage/gmd:URL!='']"> + <xsl:variable name="download_check"> + <xsl:text>&fname=&access</xsl:text> + </xsl:variable> + <xsl:variable name="linkage" select="gmd:linkage/gmd:URL"/> + <xsl:variable name="title" + select="normalize-space(gmd:name/gco:CharacterString|gmd:name/gmx:MimeFileType)"/> + <xsl:variable name="desc" select="normalize-space(gmd:description/gco:CharacterString)"/> + <xsl:variable name="protocol" select="normalize-space(gmd:protocol/gco:CharacterString)"/> + <xsl:variable name="mimetype" + select="geonet:protocolMimeType($linkage, $protocol, gmd:name/gmx:MimeFileType/@type)"/> + + <!-- If the linkage points to WMS service and no protocol specified, manage as protocol OGC:WMS --> + <xsl:variable name="wmsLinkNoProtocol" + select="contains(lower-case($linkage), 'service=wms') and not(string($protocol))"/> + + <!-- ignore empty downloads --> + <xsl:if test="string($linkage)!='' and not(contains($linkage,$download_check))"> + <Field name="protocol" string="{string($protocol)}" store="true" index="true"/> + </xsl:if> + + <xsl:if + test="string($title)!='' and string($desc)!='' and not(contains($linkage,$download_check))"> + <Field name="linkage_name_des" string="{string(concat($title, ':::', $desc))}" + store="true" index="true"/> + </xsl:if> + + <xsl:if test="normalize-space($mimetype)!=''"> + <Field name="mimetype" string="{$mimetype}" store="true" index="true"/> + </xsl:if> + + <xsl:if test="contains($protocol, 'WWW:DOWNLOAD')"> + <Field name="download" string="true" store="false" index="true"/> + </xsl:if> + + <xsl:if test="contains($protocol, 'OGC:WMS') or $wmsLinkNoProtocol"> + <Field name="dynamic" string="true" store="false" index="true"/> + </xsl:if> + + <!-- ignore WMS links without protocol (are indexed below with mimetype application/vnd.ogc.wms_xml) --> + <xsl:if test="not($wmsLinkNoProtocol)"> + <Field name="link" + string="{concat($title, '|', $desc, '|', $linkage, '|', $protocol, '|', $mimetype, '|', $tPosition)}" + store="true" index="false"/> + </xsl:if> + + <!-- Add KML link if WMS --> + <xsl:if + test="starts-with($protocol,'OGC:WMS') and string($linkage)!='' and string($title)!=''"> + <!-- FIXME : relative path --> + <Field name="link" string="{concat($title, '|', $desc, '|', + '../../srv/en/google.kml?uuid=', /gmd:MD_Metadata/gmd:fileIdentifier/gco:CharacterString, '&layers=', $title, + '|application/vnd.google-earth.kml+xml|application/vnd.google-earth.kml+xml', '|', $tPosition)}" + store="true" index="false"/> + </xsl:if> + + <!-- Try to detect Web Map Context by checking protocol or file extension --> + <xsl:if test="starts-with($protocol,'OGC:WMC') or contains($linkage,'.wmc')"> + <Field name="link" string="{concat($title, '|', $desc, '|', + $linkage, '|application/vnd.ogc.wmc|application/vnd.ogc.wmc', '|', $tPosition)}" + store="true" index="false"/> + </xsl:if> + <!-- Try to detect OWS Context by checking protocol or file extension --> + <xsl:if test="starts-with($protocol,'OGC:OWS-C') or contains($linkage,'.ows')"> + <Field name="link" string="{concat($title, '|', $desc, '|', + $linkage, '|application/vnd.ogc.ows|application/vnd.ogc.ows', '|', $tPosition)}" + store="true" index="false"/> + </xsl:if> + + <xsl:if test="$wmsLinkNoProtocol"> + <Field name="link" string="{concat($title, '|', $desc, '|', + $linkage, '|OGC:WMS|application/vnd.ogc.wms_xml', '|', $tPosition)}" + store="true" index="false"/> + </xsl:if> + </xsl:for-each> + </xsl:for-each> + + </xsl:for-each> + + <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + <!-- === Content info === --> + <xsl:for-each select="gmd:contentInfo/*/gmd:featureCatalogueCitation[@uuidref]"> + <Field name="hasfeaturecat" string="{string(@uuidref)}" store="false" index="true"/> + </xsl:for-each> + + <!-- === Data Quality === --> + <xsl:for-each select="gmd:dataQualityInfo/*/gmd:lineage//gmd:source[@uuidref]"> + <Field name="hassource" string="{string(@uuidref)}" store="false" index="true"/> + </xsl:for-each> + + <xsl:for-each select="gmd:dataQualityInfo/*/gmd:report/*/gmd:result"> + <xsl:if test="$inspire='true'"> + <!-- + INSPIRE related dataset could contains a conformity section with: + * COMMISSION REGULATION (EU) No 1089/2010 of 23 November 2010 implementing Directive 2007/2/EC of the European Parliament and of the Council as regards interoperability of spatial data sets and services + * INSPIRE Data Specification on <Theme Name> - <version> + * INSPIRE Specification on <Theme Name> - <version> for CRS and GRID + + Index those types of citation title to found dataset related to INSPIRE (which may be better than keyword + which are often used for other types of datasets). + + "1089/2010" is maybe too fuzzy but could work for translated citation like "Règlement n°1089/2010, Annexe II-6" TODO improved + --> + <xsl:if test="( + contains(gmd:DQ_ConformanceResult/gmd:specification/gmd:CI_Citation/gmd:title/gco:CharacterString, '1089/2010') or + contains(gmd:DQ_ConformanceResult/gmd:specification/gmd:CI_Citation/gmd:title/gco:CharacterString, 'INSPIRE Data Specification') or + contains(gmd:DQ_ConformanceResult/gmd:specification/gmd:CI_Citation/gmd:title/gco:CharacterString, 'INSPIRE Specification'))"> + <Field name="inspirerelated" string="on" store="false" index="true"/> + </xsl:if> + </xsl:if> + + <xsl:for-each select="//gmd:pass/gco:Boolean"> + <Field name="degree" string="{string(.)}" store="true" index="true"/> + </xsl:for-each> + + <xsl:for-each select="//gmd:specification/*/gmd:title/gco:CharacterString"> + <Field name="specificationTitle" string="{string(.)}" store="true" index="true"/> + </xsl:for-each> + + <xsl:for-each select="//gmd:specification/*/gmd:date/*/gmd:date"> + <Field name="specificationDate" string="{string(gco:Date[.!='']|gco:DateTime[.!=''])}" + store="true" index="true"/> + </xsl:for-each> + + <xsl:for-each + select="//gmd:specification/*/gmd:date/*/gmd:dateType/gmd:CI_DateTypeCode/@codeListValue"> + <Field name="specificationDateType" string="{string(.)}" store="true" index="true"/> + </xsl:for-each> + </xsl:for-each> + + <xsl:for-each select="gmd:dataQualityInfo/*/gmd:lineage/*/gmd:statement/gco:CharacterString"> + <Field name="lineage" string="{string(.)}" store="true" index="true"/> + </xsl:for-each> + + <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + <!-- === General stuff === --> + <!-- Metadata type --> + + <!-- Metadata on maps --> + <xsl:variable name="isDataset" + select=" + count(gmd:hierarchyLevel[gmd:MD_ScopeCode/@codeListValue='dataset']) > 0 or + count(gmd:hierarchyLevel) = 0"/> + + <xsl:variable name="isMapDigital" select="count(gmd:identificationInfo/*/gmd:citation/gmd:CI_Citation/ + gmd:presentationForm[gmd:CI_PresentationFormCode/@codeListValue = 'mapDigital']) > 0"/> + <xsl:variable name="isStatic" select="count(gmd:distributionInfo/gmd:MD_Distribution/ + gmd:distributionFormat/gmd:MD_Format/gmd:name/gco:CharacterString[contains(., 'PDF') or contains(., 'PNG') or contains(., 'JPEG')]) > 0"/> + <xsl:variable name="isInteractive" select="count(gmd:distributionInfo/gmd:MD_Distribution/ + gmd:distributionFormat/gmd:MD_Format/gmd:name/gco:CharacterString[contains(., 'OGC:WMC') or contains(., 'OGC:OWS-C')]) > 0"/> + <xsl:variable name="isPublishedWithWMCProtocol" select="count(gmd:distributionInfo/gmd:MD_Distribution/ + gmd:transferOptions/gmd:MD_DigitalTransferOptions/gmd:onLine/gmd:CI_OnlineResource/gmd:protocol[starts-with(gco:CharacterString, 'OGC:WMC')]) > 0"/> + + <xsl:choose> + <xsl:when test="$isDataset and $isMapDigital and + ($isStatic or $isInteractive or $isPublishedWithWMCProtocol)"> + <Field name="type" string="map" store="true" index="true"/> + <xsl:choose> + <xsl:when test="$isStatic"> + <Field name="type" string="staticMap" store="true" index="true"/> + </xsl:when> + <xsl:when test="$isInteractive or $isPublishedWithWMCProtocol"> + <Field name="type" string="interactiveMap" store="true" index="true"/> + </xsl:when> + </xsl:choose> + </xsl:when> + <xsl:when test="$isDataset"> + <Field name="type" string="dataset" store="true" index="true"/> + </xsl:when> + <xsl:when test="gmd:hierarchyLevel"> + <xsl:for-each select="gmd:hierarchyLevel/gmd:MD_ScopeCode/@codeListValue[.!='']"> + <Field name="type" string="{string(.)}" store="true" index="true"/> + </xsl:for-each> + </xsl:when> + </xsl:choose> + + + <xsl:choose> + <!-- Check if metadata is a service metadata record --> + <xsl:when test="gmd:identificationInfo/srv:SV_ServiceIdentification"> + <Field name="type" string="service" store="false" index="true"/> + </xsl:when> + <!-- <xsl:otherwise> + ... gmd:*_DataIdentification / hierachicalLevel is used and return dataset, serie, ... + </xsl:otherwise>--> + </xsl:choose> + +<!-- ALK : différenciation des services et cartes --> + <xsl:choose> + <xsl:when test="gmd:identificationInfo/srv:SV_ServiceIdentification"> + <xsl:choose> + <xsl:when test="gmd:identificationInfo/srv:SV_ServiceIdentification/srv:serviceType/gco:LocalName='invoke'"> + <xsl:choose> + <xsl:when test="count(gmd:identificationInfo/srv:SV_ServiceIdentification/gmd:descriptiveKeywords/gmd:MD_Keywords/gmd:keyword/gco:CharacterString[contains(., 'infoChartAccessService')]) > 0"> + <Field name="type" string="chart" store="true" index="true"/> + </xsl:when> + <xsl:otherwise> + <Field name="type" string="map" store="true" index="true"/> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + <xsl:otherwise> + <Field name="type" string="service" store="false" index="true"/> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + <!-- <xsl:otherwise> + ... gmd:*_DataIdentification / hierachicalLevel is used and return dataset, serie, ... + </xsl:otherwise>--> + </xsl:choose> + + <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + + <xsl:for-each select="gmd:hierarchyLevelName/gco:CharacterString"> + <Field name="levelName" string="{string(.)}" store="false" index="true"/> + </xsl:for-each> + + <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + + <xsl:for-each select="gmd:language/gco:CharacterString + |gmd:language/gmd:LanguageCode/@codeListValue + |gmd:locale/gmd:PT_Locale/gmd:languageCode/gmd:LanguageCode/@codeListValue"> + <Field name="language" string="{string(.)}" store="true" index="true"/> + <Field name="mdLanguage" string="{string(.)}" store="true" index="true"/> + </xsl:for-each> + + <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + + <xsl:for-each select="gmd:fileIdentifier/gco:CharacterString"> + <Field name="fileId" string="{string(.)}" store="false" index="true"/> + </xsl:for-each> + + <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + + <xsl:for-each select="gmd:parentIdentifier/gco:CharacterString"> + <Field name="parentUuid" string="{string(.)}" store="true" index="true"/> + </xsl:for-each> + <Field name="isChild" string="{exists(gmd:parentIdentifier)}" store="true" index="true"/> + + + <xsl:for-each select="gmd:metadataStandardName/gco:CharacterString"> + <Field name="standardName" string="{string(.)}" store="true" index="true"/> + </xsl:for-each> + + <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + + <xsl:for-each select="gmd:dateStamp/*"> + <Field name="changeDate" string="{string(.)}" store="true" index="true"/> + </xsl:for-each> + + <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + + <xsl:for-each select="gmd:contact"> + <Field name="metadataPOC" + string="{string(*/gmd:organisationName/(gco:CharacterString|gmx:Anchor))}" + store="true" index="true"/> + <xsl:apply-templates mode="index-contact" select="*"> + <xsl:with-param name="type" select="'metadata'"/> + <xsl:with-param name="fieldPrefix" select="'responsibleParty'"/> + <xsl:with-param name="position" select="position()"/> + </xsl:apply-templates> + </xsl:for-each> + + <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + <!-- === Reference system info === --> + + <xsl:for-each select="gmd:referenceSystemInfo/gmd:MD_ReferenceSystem"> + <xsl:for-each select="gmd:referenceSystemIdentifier/gmd:RS_Identifier"> + <xsl:variable name="crs"> + <xsl:for-each select="gmd:codeSpace/gco:CharacterString/text() | gmd:code/gco:CharacterString/text()"> + <xsl:value-of select="."/> + <xsl:if test="not(position() = last())">::</xsl:if> + </xsl:for-each> + </xsl:variable> + + <xsl:if test="$crs != ''"> + <Field name="crs" string="{$crs}" store="true" index="true"/> + </xsl:if> + </xsl:for-each> + </xsl:for-each> + + <xsl:for-each select="gmd:referenceSystemInfo/gmd:MD_ReferenceSystem"> + <xsl:for-each select="gmd:referenceSystemIdentifier/gmd:RS_Identifier"> + <Field name="authority" string="{string(gmd:codeSpace/gco:CharacterString)}" store="false" + index="true"/> + <Field name="crsCode" string="{string(gmd:code/gco:CharacterString)}" store="false" + index="true"/> + <Field name="crsVersion" string="{string(gmd:version/gco:CharacterString)}" store="false" + index="true"/> + </xsl:for-each> + </xsl:for-each> + + <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + <!-- === Free text search === --> + + <Field name="any" store="false" index="true"> + <xsl:attribute name="string"> + <xsl:value-of select="normalize-space(string(.))"/> + <xsl:text> </xsl:text> + <xsl:for-each select="//@codeListValue"> + <xsl:value-of select="concat(., ' ')"/> + </xsl:for-each> + </xsl:attribute> + </Field> + + <xsl:variable name="identification" select="gmd:identificationInfo//gmd:MD_DataIdentification| + gmd:identificationInfo//*[contains(@gco:isoType, 'MD_DataIdentification')]| + gmd:identificationInfo/srv:SV_ServiceIdentification"/> + + + <Field name="anylight" store="false" index="true"> + <xsl:attribute name="string"> + <xsl:for-each + select="$identification/gmd:citation/gmd:CI_Citation/gmd:title/gco:CharacterString| + $identification/gmd:citation/gmd:CI_Citation/gmd:alternateTitle/gco:CharacterString| + $identification/gmd:abstract/gco:CharacterString| + $identification/gmd:credit/gco:CharacterString| + $identification//gmd:organisationName/gco:CharacterString| + $identification/gmd:supplementalInformation/gco:CharacterString| + $identification/gmd:descriptiveKeywords/gmd:MD_Keywords/gmd:keyword/gco:CharacterString| + $identification/gmd:descriptiveKeywords/gmd:MD_Keywords/gmd:keyword/gmx:Anchor"> + <xsl:value-of select="concat(., ' ')"/> + </xsl:for-each> + </xsl:attribute> + </Field> + + + <!-- Index all codelist --> + <xsl:for-each select=".//*[*/@codeListValue != '']"> + <Field name="cl_{local-name()}" + string="{*/@codeListValue}" + store="true" index="true"/> + <Field name="cl_{concat(local-name(), '_text')}" + string="{util:getCodelistTranslation(name(*), string(*/@codeListValue), string($isoLangId))}" + store="true" index="true"/> + </xsl:for-each> + </xsl:template> + + + <xsl:template mode="index-contact" match="gmd:CI_ResponsibleParty|*[@gco:isoType = 'gmd:CI_ResponsibleParty']"> + <xsl:param name="type"/> + <xsl:param name="fieldPrefix"/> + <xsl:param name="position" select="'0'"/> + + <xsl:variable name="orgName" select="gmd:organisationName/(gco:CharacterString|gmx:Anchor)"/> + + <Field name="orgName" string="{string($orgName)}" store="true" index="true"/> + <Field name="orgNameTree" string="{string($orgName)}" store="true" index="true"/> + + <xsl:variable name="uuid" select="@uuid"/> + <xsl:variable name="role" select="gmd:role/*/@codeListValue"/> + <xsl:variable name="roleTranslation" + select="util:getCodelistTranslation('gmd:CI_RoleCode', string($role), string($isoLangId))"/> + <xsl:variable name="logo" select=".//gmx:FileName/@src"/> + <xsl:variable name="email" + select="gmd:contactInfo/*/gmd:address/*/gmd:electronicMailAddress/gco:CharacterString"/> + <xsl:variable name="phone" + select="gmd:contactInfo/*/gmd:phone/*/gmd:voice[normalize-space(.) != '']/*/text()"/> + <xsl:variable name="individualName" + select="gmd:individualName/gco:CharacterString/text()"/> + <xsl:variable name="positionName" + select="gmd:positionName/gco:CharacterString/text()"/> + <xsl:variable name="address" select="string-join(gmd:contactInfo/*/gmd:address/*/( + gmd:deliveryPoint|gmd:postalCode|gmd:city| + gmd:administrativeArea|gmd:country)/gco:CharacterString/text(), ', ')"/> + + <Field name="{$fieldPrefix}" + string="{concat($roleTranslation, '|', $type,'|', + $orgName, '|', + $logo, '|', + string-join($email, ','), '|', + $individualName, '|', + $positionName, '|', + $address, '|', + string-join($phone, ','), '|', + $uuid, '|', + $position)}" + store="true" index="false"/> + + <xsl:for-each select="$email"> + <Field name="{$fieldPrefix}Email" string="{string(.)}" store="true" index="true"/> + <Field name="{$fieldPrefix}RoleAndEmail" string="{$role}|{string(.)}" store="true" index="true"/> + </xsl:for-each> + <xsl:for-each select="@uuid"> + <Field name="{$fieldPrefix}Uuid" string="{string(.)}" store="true" index="true"/> + <Field name="{$fieldPrefix}RoleAndUuid" string="{$role}|{string(.)}" store="true" index="true"/> + </xsl:for-each> + </xsl:template> + + <!-- ========================================================================================= --> + + <!-- inspireThemes is a nodeset consisting of skos:Concept elements --> + <!-- each containing a skos:definition and skos:prefLabel for each language --> + <!-- This template finds the provided keyword in the skos:prefLabel elements and + returns the English one from the same skos:Concept --> + <xsl:template name="translateInspireThemeToEnglish"> + <xsl:param name="keyword"/> + <xsl:param name="inspireThemes"/> + + <xsl:value-of + select="$inspireThemes/skos:prefLabel[@xml:lang='en' and ../skos:prefLabel = $keyword]/text()"/> + </xsl:template> + + <xsl:template name="getInspireThemeAcronym"> + <xsl:param name="keyword"/> + + <xsl:value-of select="$inspire-theme/skos:altLabel[../skos:prefLabel = $keyword]/text()"/> + </xsl:template> + + <xsl:template name="determineInspireAnnex"> + <xsl:param name="keyword"/> + <xsl:param name="inspireThemes"/> + <xsl:variable name="englishKeywordMixedCase"> + <xsl:call-template name="translateInspireThemeToEnglish"> + <xsl:with-param name="keyword" select="$keyword"/> + <xsl:with-param name="inspireThemes" select="$inspireThemes"/> + </xsl:call-template> + </xsl:variable> + <xsl:variable name="englishKeyword" select="lower-case($englishKeywordMixedCase)"/> + <!-- Another option could be to add the annex info in the SKOS thesaurus using something + like a related concept. --> + <xsl:choose> + <!-- annex i --> + <xsl:when test="$englishKeyword='coordinate reference systems' or $englishKeyword='geographical grid systems' + or $englishKeyword='geographical names' or $englishKeyword='administrative units' + or $englishKeyword='addresses' or $englishKeyword='cadastral parcels' + or $englishKeyword='transport networks' or $englishKeyword='hydrography' + or $englishKeyword='protected sites'"> + <xsl:text>i</xsl:text> + </xsl:when> + <!-- annex ii --> + <xsl:when test="$englishKeyword='elevation' or $englishKeyword='land cover' + or $englishKeyword='orthoimagery' or $englishKeyword='geology'"> + <xsl:text>ii</xsl:text> + </xsl:when> + <!-- annex iii --> + <xsl:when test="$englishKeyword='statistical units' or $englishKeyword='buildings' + or $englishKeyword='soil' or $englishKeyword='land use' + or $englishKeyword='human health and safety' or $englishKeyword='utility and governmental services' + or $englishKeyword='environmental monitoring facilities' or $englishKeyword='production and industrial facilities' + or $englishKeyword='agricultural and aquaculture facilities' or $englishKeyword='population distribution — demography' + or $englishKeyword='area management/restriction/regulation zones and reporting units' + or $englishKeyword='natural risk zones' or $englishKeyword='atmospheric conditions' + or $englishKeyword='meteorological geographical features' or $englishKeyword='oceanographic geographical features' + or $englishKeyword='sea regions' or $englishKeyword='bio-geographical regions' + or $englishKeyword='habitats and biotopes' or $englishKeyword='species distribution' + or $englishKeyword='energy resources' or $englishKeyword='mineral resources'"> + <xsl:text>iii</xsl:text> + </xsl:when> + <!-- inspire annex cannot be established: leave empty --> + </xsl:choose> + </xsl:template> +</xsl:stylesheet> diff --git a/src/main/webapp/WEB-INF/data/config/schema_plugins/iso19139/layout/layout-custom-fields-keywords.xsl b/src/main/webapp/WEB-INF/data/config/schema_plugins/iso19139/layout/layout-custom-fields-keywords.xsl new file mode 100644 index 0000000..c2ba2d0 --- /dev/null +++ b/src/main/webapp/WEB-INF/data/config/schema_plugins/iso19139/layout/layout-custom-fields-keywords.xsl @@ -0,0 +1,307 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + ~ Copyright (C) 2001-2016 Food and Agriculture Organization of the + ~ United Nations (FAO-UN), United Nations World Food Programme (WFP) + ~ and United Nations Environment Programme (UNEP) + ~ + ~ This program is free software; you can redistribute it and/or modify + ~ it under the terms of the GNU General Public License as published by + ~ the Free Software Foundation; either version 2 of the License, or (at + ~ your option) any later version. + ~ + ~ This program is distributed in the hope that it will be useful, but + ~ WITHOUT ANY WARRANTY; without even the implied warranty of + ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + ~ General Public License for more details. + ~ + ~ You should have received a copy of the GNU General Public License + ~ along with this program; if not, write to the Free Software + ~ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + ~ + ~ Contact: Jeroen Ticheler - FAO - Viale delle Terme di Caracalla 2, + ~ Rome - Italy. email: geonetwork@osgeo.org + --> + +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:gmd="http://www.isotc211.org/2005/gmd" + xmlns:gco="http://www.isotc211.org/2005/gco" + xmlns:gmx="http://www.isotc211.org/2005/gmx" + xmlns:xs="http://www.w3.org/2001/XMLSchema" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:gn="http://www.fao.org/geonetwork" + xmlns:xslutil="java:org.fao.geonet.util.XslUtil" + xmlns:gn-fn-metadata="http://geonetwork-opensource.org/xsl/functions/metadata" + xmlns:java="java:org.fao.geonet.util.XslUtil" + version="2.0" + exclude-result-prefixes="#all"> + + <!-- Custom rendering of keyword section + * gmd:descriptiveKeywords is boxed element and the title + of the fieldset is the thesaurus title + * if the thesaurus is available in the catalog, display + the advanced editor which provides easy selection of + keywords. + + --> + + + <xsl:template mode="mode-iso19139" priority="2000" + match="gmd:descriptiveKeywords"> + <xsl:param name="schema" select="$schema" required="no"/> + <xsl:param name="labels" select="$labels" required="no"/> + <xsl:param name="overrideLabel" select="''" required="no"/> + + <xsl:variable name="xpath" select="gn-fn-metadata:getXPath(.)"/> + <xsl:variable name="isoType" select="if (../@gco:isoType) then ../@gco:isoType else ''"/> + <xsl:variable name="thesaurusTitleEl" + select="gmd:MD_Keywords/gmd:thesaurusName/gmd:CI_Citation/gmd:title"/> + + <!--Add all Thesaurus as first block of keywords--> + <xsl:if test="name(preceding-sibling::*[1]) != name()"> + <xsl:call-template name="addAllThesaurus"> + <xsl:with-param name="ref" select="../gn:element/@ref"/> + </xsl:call-template> + </xsl:if> + + <xsl:variable name="thesaurusTitle"> + <xsl:choose> + <xsl:when test="normalize-space($thesaurusTitleEl/gco:CharacterString) != ''"> + <xsl:value-of select="if ($overrideLabel != '') + then $overrideLabel + else concat( + $iso19139strings/keywordFrom, + normalize-space($thesaurusTitleEl/gco:CharacterString))"/> + </xsl:when> + <xsl:when test="normalize-space($thesaurusTitleEl/gmd:PT_FreeText/ + gmd:textGroup/gmd:LocalisedCharacterString[ + @locale = concat('#', upper-case(xslutil:twoCharLangCode($lang)))][1]) != ''"> + <xsl:value-of + select="$thesaurusTitleEl/gmd:PT_FreeText/gmd:textGroup/gmd:LocalisedCharacterString[@locale = concat('#', upper-case(xslutil:twoCharLangCode($lang)))][1]"/> + </xsl:when> + <xsl:when test="$thesaurusTitleEl/gmd:PT_FreeText/ + gmd:textGroup/gmd:LocalisedCharacterString[ + normalize-space(text()) != ''][1]"> + <xsl:value-of select="$thesaurusTitleEl/gmd:PT_FreeText/gmd:textGroup/ + gmd:LocalisedCharacterString[normalize-space(text()) != ''][1]"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="gmd:MD_Keywords/gmd:thesaurusName/ + gmd:CI_Citation/gmd:identifier/gmd:MD_Identifier/gmd:code"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:variable name="attributes"> + <xsl:if test="$isEditing"> + <!-- Create form for all existing attribute (not in gn namespace) + and all non existing attributes not already present. --> + <xsl:apply-templates mode="render-for-field-for-attribute" + select=" + @*| + gn:attribute[not(@name = parent::node()/@*/name())]"> + <xsl:with-param name="ref" select="gn:element/@ref"/> + <xsl:with-param name="insertRef" select="gn:element/@ref"/> + </xsl:apply-templates> + </xsl:if> + </xsl:variable> + + + <xsl:variable name="thesaurusIdentifier" + select="normalize-space(*/gmd:thesaurusName/gmd:CI_Citation/gmd:identifier/gmd:MD_Identifier/gmd:code/*/text())"/> + + <xsl:variable name="thesaurusConfig" + as="element()?" + select="if ($thesaurusList/thesaurus[@key=substring-after($thesaurusIdentifier, 'geonetwork.thesaurus.')]) + then $thesaurusList/thesaurus[@key=substring-after($thesaurusIdentifier, 'geonetwork.thesaurus.')] + else $listOfThesaurus/thesaurus[title=$thesaurusTitle]"/> + + <xsl:choose> + <xsl:when test="$thesaurusConfig/@fieldset = 'false'"> + <xsl:apply-templates mode="mode-iso19139" select="*"> + <xsl:with-param name="schema" select="$schema"/> + <xsl:with-param name="labels" select="$labels"/> + </xsl:apply-templates> + </xsl:when> + <xsl:otherwise> + + <xsl:call-template name="render-boxed-element"> + <xsl:with-param name="label" + select="if ($thesaurusTitle !='') + then $thesaurusTitle + else gn-fn-metadata:getLabel($schema, name(), $labels, name(..), $isoType, $xpath)/label"/> + <xsl:with-param name="editInfo" select="gn:element"/> + <xsl:with-param name="cls" select="local-name()"/> + <xsl:with-param name="xpath" select="$xpath"/> + <xsl:with-param name="attributesSnippet" select="$attributes"/> + <xsl:with-param name="subTreeSnippet"> + <xsl:apply-templates mode="mode-iso19139" select="*"> + <xsl:with-param name="schema" select="$schema"/> + <xsl:with-param name="labels" select="$labels"/> + </xsl:apply-templates> + </xsl:with-param> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> + + </xsl:template> + + + <xsl:template mode="mode-iso19139" match="gmd:MD_Keywords" priority="2000"> + + + <xsl:variable name="thesaurusIdentifier" + select="normalize-space(gmd:thesaurusName/gmd:CI_Citation/gmd:identifier/gmd:MD_Identifier/gmd:code/*/text())"/> + + <xsl:variable name="thesaurusTitle" + select="gmd:thesaurusName/gmd:CI_Citation/gmd:title/(gco:CharacterString|gmd:PT_FreeText/gmd:textGroup/gmd:LocalisedCharacterString)"/> + + + <xsl:variable name="thesaurusConfig" + as="element()?" + select="if ($thesaurusList/thesaurus[@key=substring-after($thesaurusIdentifier, 'geonetwork.thesaurus.')]) + then $thesaurusList/thesaurus[@key=substring-after($thesaurusIdentifier, 'geonetwork.thesaurus.')] + else $listOfThesaurus/thesaurus[title=$thesaurusTitle]"/> + + <xsl:choose> + <xsl:when test="$thesaurusConfig"> + + <!-- The thesaurus key may be contained in the MD_Identifier field or + get it from the list of thesaurus based on its title. + --> + <xsl:variable name="thesaurusInternalKey" + select="if ($thesaurusIdentifier) + then $thesaurusIdentifier + else $thesaurusConfig/key"/> + <xsl:variable name="thesaurusKey" + select="if (starts-with($thesaurusInternalKey, 'geonetwork.thesaurus.')) + then substring-after($thesaurusInternalKey, 'geonetwork.thesaurus.') + else $thesaurusInternalKey"/> + + <!-- if gui lang eng > #EN --> + <xsl:variable name="guiLangId" + select=" + if (count($metadata/gmd:locale/gmd:PT_Locale[gmd:languageCode/gmd:LanguageCode/@codeListValue = $lang]) = 1) + then $metadata/gmd:locale/gmd:PT_Locale[gmd:languageCode/gmd:LanguageCode/@codeListValue = $lang]/@id + else $metadata/gmd:locale/gmd:PT_Locale[gmd:languageCode/gmd:LanguageCode/@codeListValue = $metadataLanguage]/@id"/> + + <!-- + get keyword in gui lang + in default language + --> + <xsl:variable name="keywords" select="string-join( + if ($guiLangId and gmd:keyword//*[@locale = concat('#', $guiLangId)]) then + gmd:keyword//*[@locale = concat('#', $guiLangId)]/replace(text(), ',', ',,') + else gmd:keyword/*[1]/replace(text(), ',', ',,'), ',')"/> + + <!-- Define the list of transformation mode available. --> + <xsl:variable name="transformations" + as="xs:string" + select="if ($thesaurusConfig/@transformations != '') + then $thesaurusConfig/@transformations + else 'to-iso19139-keyword,to-iso19139-keyword-with-anchor,to-iso19139-keyword-as-xlink'"/> + + <!-- Get current transformation mode based on XML fragment analysis --> + <xsl:variable name="transformation" + select="if (parent::node()/@xlink:href) then 'to-iso19139-keyword-as-xlink' + else if (count(gmd:keyword/gmx:Anchor) > 0) + then 'to-iso19139-keyword-with-anchor' + else 'to-iso19139-keyword'"/> + + <xsl:variable name="parentName" select="name(..)"/> + + <!-- Create custom widget: + * '' for item selector, + * 'tagsinput' for tags + * 'tagsinput' and maxTags = 1 for only one tag + * 'multiplelist' for multiple selection list + --> + <xsl:variable name="widgetMode" select="'tagsinput'"/> + <xsl:variable name="maxTags" + as="xs:string" + select="if ($thesaurusConfig/@maxtags) + then $thesaurusConfig/@maxtags + else ''"/> + <xsl:variable name="orderById" + as="xs:string" + select="if ($thesaurusConfig/@orderById) + then $thesaurusConfig/@orderById + else 'false'"/> + <!-- + Example: to restrict number of keyword to 1 for INSPIRE + <xsl:variable name="maxTags" + select="if ($thesaurusKey = 'external.theme.inspire-theme') then '1' else ''"/> + --> + <!-- Create a div with the directive configuration + * elementRef: the element ref to edit + * elementName: the element name + * thesaurusName: the thesaurus title to use + * thesaurusKey: the thesaurus identifier + * keywords: list of keywords in the element + * transformations: list of transformations + * transformation: current transformation + --> + + <xsl:variable name="allLanguages" + select="concat($metadataLanguage, ',', $metadataOtherLanguages)"/> + <div data-gn-keyword-selector="{$widgetMode}" + data-metadata-id="{$metadataId}" + data-element-ref="{concat('_X', ../gn:element/@ref, '_replace')}" + data-thesaurus-title="{if ($thesaurusConfig/@fieldset = 'false') then $thesaurusTitle else ''}" + data-thesaurus-key="{$thesaurusKey}" + data-keywords="{$keywords}" + data-transformations="{$transformations}" + data-current-transformation="{$transformation}" + data-max-tags="{$maxTags}" + data-order-by-id="{$orderById}" + data-lang="{$metadataOtherLanguagesAsJson}" + data-textgroup-only="false"> + </div> + + <xsl:variable name="isTypePlace" + select="count(gmd:type/gmd:MD_KeywordTypeCode[@codeListValue='place']) > 0"/> + <xsl:if test="$isTypePlace"> + <xsl:call-template name="render-batch-process-button"> + <xsl:with-param name="process-name" select="'add-extent-from-geokeywords'"/> + <xsl:with-param name="process-params">{"replace": true}</xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates mode="mode-iso19139" select="*"/> + </xsl:otherwise> + </xsl:choose> + + </xsl:template> + + + <xsl:template name="addAllThesaurus"> + <xsl:param name="ref"/> + <xsl:if test="java:getSettingValue('system/metadata/allThesaurus') = 'true'"> + + + <xsl:variable name="thesaurusConfig" + as="element()?" + select="$thesaurusList/thesaurus[@key='external.none.allThesaurus']"/> + + <xsl:variable name="transformations" + as="xs:string" + select="if ($thesaurusConfig/@transformations != '') + then $thesaurusConfig/@transformations + else 'to-iso19139-keyword,to-iso19139-keyword-with-anchor,to-iso19139-keyword-as-xlink'"/> + + <br></br> + <div + data-gn-keyword-selector="tagsinput" + data-metadata-id="" + data-element-ref="_X{$ref}_gmdCOLONdescriptiveKeywords" + data-thesaurus-title="{{{{'selectKeyword' | translate}}}}" + data-thesaurus-key="external.none.allThesaurus" + data-keywords="" + data-transformations="{$transformations}" + data-current-transformation="to-iso19139-keyword" + data-max-tags="" data-lang="{$metadataOtherLanguagesAsJson}" + data-textgroup-only="false" + class=""> + </div> + </xsl:if> + </xsl:template> +</xsl:stylesheet> diff --git a/src/main/webapp/WEB-INF/data/config/schema_plugins/iso19139/loc/fre/codelists.xml b/src/main/webapp/WEB-INF/data/config/schema_plugins/iso19139/loc/fre/codelists.xml new file mode 100644 index 0000000..52c69f6 --- /dev/null +++ b/src/main/webapp/WEB-INF/data/config/schema_plugins/iso19139/loc/fre/codelists.xml @@ -0,0 +1,2127 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<!-- + ~ Copyright (C) 2001-2016 Food and Agriculture Organization of the + ~ United Nations (FAO-UN), United Nations World Food Programme (WFP) + ~ and United Nations Environment Programme (UNEP) + ~ + ~ This program is free software; you can redistribute it and/or modify + ~ it under the terms of the GNU General Public License as published by + ~ the Free Software Foundation; either version 2 of the License, or (at + ~ your option) any later version. + ~ + ~ This program is distributed in the hope that it will be useful, but + ~ WITHOUT ANY WARRANTY; without even the implied warranty of + ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + ~ General Public License for more details. + ~ + ~ You should have received a copy of the GNU General Public License + ~ along with this program; if not, write to the Free Software + ~ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + ~ + ~ Contact: Jeroen Ticheler - FAO - Viale delle Terme di Caracalla 2, + ~ Rome - Italy. email: geonetwork@osgeo.org + --> + +<codelists xmlns:gmd="http://www.isotc211.org/2005/gmd"> + <!-- ==================================================== --> + <codelist name="gmd:CI_DateTypeCode"> + <entry> + <code>creation</code> + <label>Création</label> + <description>Date à laquelle la ressource est créée</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>publication</code> + <label>Publication</label> + <description>Date à laquelle la ressource est publiée</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>revision</code> + <label>Révision</label> + <description>Date à laquelle la ressource est révisée</description> + </entry> + <!-- ISO PROFIL FRA ONLY + <entry> + <code>validity</code> + <label>Validité</label> + <description>Date à laquelle la ressource est validée</description> + </entry> + <entry> + <code>useBy</code> + <label>Péremption</label> + <description>Date de péremption de la ressource</description> + </entry> +--> + </codelist> + <!-- ==================================================== --> + <codelist name="gmd:CI_OnLineFunctionCode" alias="function"> + <entry> + <code>download</code> + <label>Téléchargement</label> + <description>Téléchargement de la ressource</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>information</code> + <label>Information</label> + <description>Online information about the resource</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>offlineAccess</code> + <label>Commande hors ligne</label> + <description>Instruction pour une commande auprès du distributeur</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>order</code> + <label>Commande en ligne</label> + <description>Commande en ligne pour obtenir la ressource</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>search</code> + <label>Interface de recherche</label> + <description>Interface de recherche pour trouver la ressource</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + </codelist> + <!-- ==================================================== --> + <codelist name="gmd:CI_PresentationFormCode"> + <entry> + <code>documentDigital</code> + <label>Document numérique</label> + <description>Document numérique contenant du texte et pouvant contenir des illustrations + </description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>imageDigital</code> + <label>Image numérique</label> + <description>Aspects à travers la télédétection, stocké sous format numérique</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>documentHardcopy</code> + <label>Document papier</label> + <description>Document papier contenant du texte et pouvant contenir des illustrations + </description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>imageHardcopy</code> + <label>Image papier</label> + <description>Aspects à travers la télédétection, reproduit sur un support utilisable par + l’homme + </description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>mapDigital</code> + <label>Carte numérique</label> + <description>Carte numérique au format raster ou vecteur</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>mapHardcopy</code> + <label>Carte papier</label> + <description>Carte imprimée sur papier ou autre support utilisable par l’homme</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>modelDigital</code> + <label>Modèle numérique de terrain</label> + <description>Modèle numérique 3D sous forme digitale</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>modelHardcopy</code> + <label>Modèle numérique physique</label> + <description>Modèle numérique 3D physique</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>profileDigital</code> + <label>Profil numérique</label> + <description>Profil vertical sous forme numérique</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>profileHardcopy</code> + <label>Profil papier</label> + <description>Profil vertical sous forme papier</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>tableDigital</code> + <label>Table numérique</label> + <description>Représentation numérique d’informations sous forme de colonnes</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>tableHardcopy</code> + <label>Table papier</label> + <description>Représentation d’informations sous forme de colonnes sur papier ou autre support + utilisable par l’homme + </description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>videoDigital</code> + <label>Vidéo numérique</label> + <description>Vidéo numérique</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>videoHardcopy</code> + <label>Vidéo magnétique</label> + <description>Vidéo enregistré sur bande</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + </codelist> + <!-- ==================================================== --> + <codelist name="gmd:CI_RoleCode" alias="roleCode"> + <entry> + <code>resourceProvider</code> + <label>Fournisseur</label> + <description>Organisme qui fournit la ressource. Acteur qui délivre physiquement la ressource, + soit de manière directe au destinataire, soit par l’intermédiaire d’un diffuseur + </description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>custodian</code> + <label>Gestionnaire</label> + <description>Acteur responsable de la gestion et de la mise à jour de la ressource + </description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>owner</code> + <label>Propriétaire</label> + <description>Organisme qui est propriétaire de la ressource / Acteur qui détient les droits + patrimoniaux de la ressource + </description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>user</code> + <label>Utilisateur</label> + <description>Organisme qui utilise ou a utilisé la ressource</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>distributor</code> + <label>Distributeur</label> + <description>Organisme qui distribue la ressource. Diffuseur de second niveau de la + ressource + </description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>originator</code> + <label>A l’origine de</label> + <description>Organisme qui a commandé la ressource. Acteur qui a été habilité à créer la + ressource et qui a mis en place les moyens pour la constituer + </description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>pointOfContact</code> + <label>Point de contact</label> + <description>Organisme que l’on peut contacter pour avoir des renseignements détaillés sur la + ressource. Acteur à contacter en premier lieu pour obtenir des informations relatives à la + ressource + </description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>principalInvestigator</code> + <label>Point de recherche</label> + <description>Personne clé pour obtenir des informations sur la ressource et les recherches + conduites autour de la ressource
Acteur qui a assuré la réalisation de la + ressource,éventuellement en faisant appel à des co-traitants ou des sous traitants + </description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>processor</code> + <label>Exécutant</label> + <description>Organisme qui a réalisé des traitements sur la ressource. Acteur qui est + intervenu lors de la réalisation de la ressource + </description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>publisher</code> + <label>Editeur (publication)</label> + <description>Organisme qui assure la publication de la ressource.</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>author</code> + <label>Auteur</label> + <description>Organisme ou personne qui est auteur. Acteur qui dispose des droits moraux + relatifs à la ressource + </description> + </entry> + <!-- ISO PROFIL CHE ONLY + <entry> + <code>editor</code> + <label>Editeur</label> + <description></description> + </entry> + <entry> + <code>partner</code> + <label>Partenaire</label> + <description></description> + </entry>--> + </codelist> + <!-- ==================================================== --> + <codelist name="gmd:DQ_EvaluationMethodTypeCode"> + <entry> + <code>directInternal</code> + <label>Directe interne</label> + <description>Méthode d’évaluation de la qualité d’un jeu de données basée sur l’analyse des + données du jeu où toutes les données requises sont internes au jeu de données + </description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>directExternal</code> + <label>Directe externe</label> + <description>Méthode d’évaluation de la qualité d’un jeu de données basée sur l’analyse des + données du jeu où les références vers des données externes sont requises. + </description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>indirect</code> + <label>Indirecte</label> + <description>Méthode d’évaluation de la qualité basée sur une connaissance externe. + </description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + </codelist> + <!-- ==================================================== --> + <codelist name="gmd:DS_AssociationTypeCode" alias="associationType"> + <entry> + <code>crossReference</code> + <label>Référence croisée</label> + <description>Référence d’un jeu de données à un autre</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>largerWorkCitation</code> + <label>Référence mère</label> + <description>Référence à un jeu de données maître</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>partOfSeamlessDatabase</code> + <label>Partie d'une même base de données</label> + <description>Référence à un jeu de données stocké dans une même base de données</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>source</code> + <label>Source</label> + <description>Références vers la source des données qui a permis de produire les cartes,… + </description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>stereoMate</code> + <label>Stéréo restitution</label> + <description>Partie d’un ensemble d’images qui, utilisé ensemble, fournit une vision 3D de + l’image. + </description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + </codelist> + <!-- ==================================================== --> + <codelist name="gmd:DS_InitiativeTypeCode" alias="initiativeType"> + <entry> + <code>campaign</code> + <label>Campagne</label> + <description>Séries d’actions planifiées</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>collection</code> + <label>Collection</label> + <description>Accumulation de données dans un but précis</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>exercise</code> + <label>Exercice</label> + <description>Action spécifique répondant à une ou des fonctions</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>experiment</code> + <label>Expérimentation</label> + <description>Recherche pour vérifier si une hypothèse est valide</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>investigation</code> + <label>Investigation</label> + <description>Recherche systématique</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>mission</code> + <label>Mission</label> + <description>Spécifique opération d’une collecte de données</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>sensor</code> + <label>Capteur</label> + <description>Part d’un équipement qui détecte une information</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>operation</code> + <label>Opération</label> + <description>Action qui est une partie d’une série d’action</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>platform</code> + <label>Plate-forme</label> + <description>Véhicule ou autre support supportant un capteur</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>process</code> + <label>Processus</label> + <description>Méthode pour faire quelque chose</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>program</code> + <label>Programme</label> + <description>Action spécifiquement planifiée</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>project</code> + <label>Projet</label> + <description>Recherche ou développement organisé</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>study</code> + <label>Etude</label> + <description>Investigation</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>task</code> + <label>Tâche</label> + <description>Partie d'un travail</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>trial</code> + <label>Essai</label> + <description>Processus visant à tester ou démontrer quelque chose</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + </codelist> + <!-- ==================================================== --> + <codelist name="gmd:MD_CellGeometryCode"> + <entry> + <code>point</code> + <label>Point</label> + <description>Chaque cellule représente un point</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>area</code> + <label>Surface</label> + <description>Chaque cellule représente une surface</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + </codelist> + <!-- ==================================================== --> + <codelist name="gmd:MD_CharacterSetCode"> + <entry> + <code>ucs2</code> + <label>Ucs2</label> + <description>16-bit fixed size Universal Character Set, based on ISO 10646</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>ucs4</code> + <label>Ucs4</label> + <description>32-bit fixed size Universal Character Set, based on ISO/IEC + 10646 + </description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>utf7</code> + <label>Utf7</label> + <description>7-bit variable size UCS Transfer Format, based on ISO/IEC 10646</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>utf8</code> + <label>Utf8</label> + <description>8-bit variable size UCS Transfer Format, based on ISO/IEC 10646</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>utf16</code> + <label>Utf16</label> + <description>16-bit variable size UCS Transfer Format, based on ISO/IEC 10646</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>8859part1</code> + <label>8859part1</label> + <description>ISO/IEC 8859-1, Information technology - 8-bit single byte coded graphic + character sets - Part 1 : Latin alphabet No.1 + </description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>8859part2</code> + <label>8859part2</label> + <description>ISO/IEC 8859-2, Information technology - 8-bit single byte coded graphic + character sets - Part 2 : Latin alphabet No.2 + </description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>8859part3</code> + <label>8859part3</label> + <description>ISO/IEC 8859-3, Information technology - 8-bit single byte coded graphic + character sets - Part 3 : Latin alphabet No.3 + </description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>8859part4</code> + <label>8859part4</label> + <description>ISO/IEC 8859-4, Information technology - 8-bit single byte coded graphic + character sets - Part 4 : Latin alphabet No.4 + </description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>8859part5</code> + <label>8859part5</label> + <description>ISO/IEC 8859-5, Information technology - 8-bit single byte coded graphic + character sets - Part 5 : Latin/Cyrillic alphabet + </description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>8859part6</code> + <label>8859part6</label> + <description>ISO/IEC 8859-6, Information technology - 8-bit single byte coded graphic + character sets - Part 6 : Latin/Arabic alphabet + </description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>8859part7</code> + <label>8859part7</label> + <description>ISO/IEC 8859-7, Information technology - 8-bit single byte coded graphic + character sets - Part 7 : Latin/Greek alphabet + </description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>8859part8</code> + <label>8859part8</label> + <description>ISO/IEC 8859-8, Information technology - 8-bit single byte coded graphic + character sets - Part 8 : Latin/Hebrew alphabet + </description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>8859part9</code> + <label>8859part9</label> + <description>ISO/IEC 8859-9, Information technology - 8-bit single byte coded graphic + character sets - Part 9 : Latin alphabet No.5 + </description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>8859part10</code> + <label>8859part10</label> + <description>ISO/IEC 8859-10, Information technology - 8-bit single byte coded graphic + character sets - Part 10 : Latin alphabet No.6 + </description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>8859part11</code> + <label>8859part11</label> + <description>ISO/IEC 8859-11, Information technology - 8-bit single byte coded graphic + character sets - Part 11 : Latin/Thai alphabet + </description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>8859part13</code> + <label>8859part13</label> + <description>ISO/IEC 8859-13, Information technology - 8-bit single byte coded graphic + character sets - Part 13 : Latin alphabet No.7 + </description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>8859part14</code> + <label>8859part14</label> + <description>ISO/IEC 8859-14, Information technology - 8-bit single byte coded graphic + character sets - Part 14 : Latin alphabet No.8 (Celtic) + </description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>8859part15</code> + <label>8859part15</label> + <description>ISO/IEC 8859-15, Information technology - 8-bit single byte coded graphic + character sets - Part 15 : Latin alphabet No.9 + </description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>8859part16</code> + <label>8859part16</label> + <description>ISO/IEC 8859-16, Information technology - 8-bit single byte coded graphic + character sets - Part 16 : Latin alphabet No.10 + </description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>jis</code> + <label>Jis</label> + <description>Japanese code set used for electronic transmission</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>shiftJIS</code> + <label>ShiftJIS</label> + <description>Japanese code set used on MS-DOS machines</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>eucJP</code> + <label>EucJP</label> + <description>Japanese code set used on UNIX based machines</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>usAscii</code> + <label>UsAscii</label> + <description>United States ASCII code set (ISO 646 US)</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>ebcdic</code> + <label>Ebcdic</label> + <description>IBM mainframe code set</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>eucKR</code> + <label>EucKR</label> + <description>Korean code set</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>big5</code> + <label>Big5</label> + <description>Traditional Chinese code set used in Taiwan, Hong Kong of China and other + areas + </description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>GB2312</code> + <label>GB2312</label> + <description>Simplified Chinese code set</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + </codelist> + <!-- ==================================================== --> + <codelist name="gmd:MD_ClassificationCode"> + <entry> + <code>unclassified</code> + <label>Non classifié</label> + <description>La ressource ne revêt pas un caractère sensible</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>restricted</code> + <label>Restreint</label> + <description>Le caractère sensible de la ressource restreint son utilisation ou sa diffusion + </description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>confidential</code> + <label>Confidentiel</label> + <description>La ressource présente un caractère confidentiel.</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>secret</code> + <label>Secret</label> + <description>La confidentialité de la ressource implique des mesures de protection + particulière + </description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>topSecret</code> + <label>Top secret</label> + <description>La confidentialité de la ressource implique des mesures de protection extrêmes + </description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + </codelist> + <!-- ==================================================== --> + <codelist name="gmd:MD_CoverageContentTypeCode"> + <entry> + <code>image</code> + <label>Image</label> + <description>Représentation numérique d’un paramètre physique</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>thematicClassification</code> + <label>Classification thématique</label> + <description>Codification selon une classification</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>physicalMeasurement</code> + <label>Mesure physique</label> + <description>Valeur physique mesurée</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + </codelist> + <!-- ==================================================== --> + <codelist name="gmd:MD_DatatypeCode"> + <entry> + <code>class</code> + <label>Classe</label> + <description>Description d’un ensemble d’objet qui ont les mêmes attributs, méthodes … + </description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>codelist</code> + <label>Liste de codes</label> + <description>Enumération modifiable, utilisée pour exprimée une liste de valeurs extensible + </description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>enumeration</code> + <label>Enumération</label> + <description>Enumération, utilisée pour exprimée une liste de valeurs non extensible + </description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>codelistElement</code> + <label>Elément d'une liste de codes</label> + <description>Valeur possible pour une liste de codes</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>abstractClass</code> + <label>Classe abstraite</label> + <description>Classe qui ne peut être directement instancée</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>aggregateClass</code> + <label>Classe agrégée</label> + <description>Classe qui est composé d’un ensemble de classes connecté par une relation de type + Agrégation. + </description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>specifiedClass</code> + <label>Classe spécifique</label> + <description>Classe qui peut être substituée à une classe de niveau supérieur</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>datatypeClass</code> + <label>Classe de type de donnée</label> + <description>Classe avec peu ou aucune opération dont le rôle est de gérer l’état d’une autre + classe pour les informations relevant de la transmission, le stockage, l’encodage ou la + persistance. + </description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>interfaceClass</code> + <label>Classe d'interface</label> + <description>Noms des opérations qui caractérisent le comportement d’une ressource + </description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>unionClass</code> + <label>Classe d'union</label> + <description>Classe décrivant une sélection d’un type spécifique</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>metaClass</code> + <label>Méta-classe</label> + <description>Classe dont les instances sont des classes</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>typeClass</code> + <label>Type de classe</label> + <description>Classe utilisée pour spécifier un domaine d’instance (objet) en relation avec les + opérations applicables à ces objets. Un type peut avoir des attributs et des associations + </description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>characterString</code> + <label>Chaîne de caractères</label> + <description>Texte libre</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>integer</code> + <label>Entier</label> + <description>Champ numérique</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>association</code> + <label>Association</label> + <description>Relation entre deux classes</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + </codelist> + <!-- ==================================================== --> + <codelist name="gmd:MD_DimensionNameTypeCode"> + <entry> + <code>row</code> + <label>Axe - Y</label> + <description>Axe des ordonnées (axe - Y)</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>column</code> + <label>Axe - X</label> + <description>Axe des abscisses (axe X)</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>vertical</code> + <label>Axe - Z</label> + <description>Axe vertical (axe Z)</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>track</code> + <label>Piste</label> + <description>Dans la direction de la ...</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>crossTrack</code> + <label>Profil de piste</label> + <description>Perpendiculaire ...</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>line</code> + <label>Ligne</label> + <description>Ligne de scannage d'un capteur</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>sample</code> + <label>Echantillon</label> + <description>Elément le long d'une ligne de scannage</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>time</code> + <label>Temps</label> + <description>Durée</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + </codelist> + <!-- ==================================================== --> + <codelist name="gmd:MD_GeometricObjectTypeCode"> + <entry> + <code>complex</code> + <label>Complexe</label> + <description>Ensemble de primitives géométriques représentées comme l'union d'autres + primitives + </description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>composite</code> + <label>Composite</label> + <description>Ensemble de lignes connectées entre elles</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>curve</code> + <label>Ligne</label> + <description>Primitive géométrique à une dimension représentant une image continue d'une + ligne + </description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>point</code> + <label>Point</label> + <description>Primitive géométrique à zéro dimension représentant une position sans étendue + </description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>solid</code> + <label>Volume</label> + <description>Primitive géométrique à trois dimensions représentant un volume (définition à + revoir) + </description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>surface</code> + <label>Polygone</label> + <description>Primitive géométrique à deux dimensions représentant une surface</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + </codelist> + <!-- ==================================================== --> + <codelist name="gmd:MD_ImagingConditionCode"> + <entry> + <code>blurredImage</code> + <label>Flou</label> + <description>Portion de l’image floue</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>cloud</code> + <label>Nuage</label> + <description>Portion de l’image partiellement occultée par des nuages</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>degradingObliquity</code> + <label>Dégradation oblique</label> + <description>Due à l’angle entre le plan de l’écliptique et le plan équatorial</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>fog</code> + <label>Brouillard</label> + <description>Portion de l’image partiellement occultée par du brouillard</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>heavySmokeOrDust</code> + <label>Fumée et poussière</label> + <description>Portion de l’image partiellement occultée des fumées ou des poussières + </description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>night</code> + <label>Nuit</label> + <description>Image prise la nuit</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>rain</code> + <label>Pluie</label> + <description>Image prise durant la pluie</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>semiDarkness</code> + <label>Semi obscurité</label> + <description>Image prise pendant une semi obscurité</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>shadow</code> + <label>Ombre</label> + <description>Image obscurcie par une ombre</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>snow</code> + <label>Neige</label> + <description>Image obscurcie par la neige</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>terrainMasking</code> + <label>Terrain masqué</label> + <description>Absence de données en raison des caractéristiques topographiques qui masquent les + informations recherchées + </description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + </codelist> + <!-- ==================================================== --> + <codelist name="gmd:MD_KeywordTypeCode"> + <entry> + <code>discipline</code> + <label>Discipline</label> + <description>Mot-clé en relation avec une branche de la connaissance</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>place</code> + <label>Localisation</label> + <description>Mot-clé identifiant un lieu</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>stratum</code> + <label>Strate</label> + <description>Couche géologique</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>temporal</code> + <label>Temps</label> + <description>Mot clef identifiant une période de temps</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>theme</code> + <label>Thème</label> + <description>Mot-clé identifiant un sujet particulier</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + </codelist> + <!-- ==================================================== --> + <codelist name="gmd:MD_MaintenanceFrequencyCode" sort="fixed"> + <entry> + <code>continual</code> + <label>Continue</label> + <description>Mise à jour continue</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>daily</code> + <label>Journalière</label> + <description>Mise à jour quotidienne</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>weekly</code> + <label>Hebdomadaire</label> + <description>Mise à jour hebdomadaire</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>fortnightly</code> + <label>Bi-mensuelle</label> + <description>Mise à jour 2 fois par mois</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>monthly</code> + <label>Mensuelle</label> + <description>Mise à jour mensuelle</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>quarterly</code> + <label>Trimestrielle</label> + <description>Mise à jour trimestrielle</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>biannually</code> + <label>Bi-annuelle</label> + <description>Mise à jour bi-annuelle</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>annually</code> + <label>Annuelle</label> + <description>Mise à jour annuelle</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>asNeeded</code> + <label>Lorsque nécessaire</label> + <description>Mise à jour lorsque cela est jugé nécessaire</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>irregular</code> + <label>Irrégulière</label> + <description>Mise à jour irrégulière</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>notPlanned</code> + <label>Non planifiée</label> + <description>Mise à jour non planifiée</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>unknown</code> + <label>Inconnue</label> + <description>Mise à jour inconnue</description> + </entry> + <!-- ISO PROFIL CHE ONLY + <entry> + <code>userDefined</code> + <label>Fréquence personnalisée</label> + <description>Dans ce cas l'attribut définissant une fréquence personnalisée doit être utilisée</description> + </entry>--> + </codelist> + <!-- ==================================================== --> + <codelist name="gmd:MD_MediumFormatCode"> + <entry> + <code>cpio</code> + <label>Cpio</label> + <description>Copie en entrée /sortie (commande et fichier au format UNIX)</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>tar</code> + <label>Tar</label> + <description>Format d’archivage sur bande</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>highSierra</code> + <label>High Sierra</label> + <description>Système de fichiers High Sierra</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>iso9660</code> + <label>Iso9660</label> + <description>Système de fichier CD – ROM</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>iso9660RockRidge</code> + <label>Iso9660RockRidge</label> + <description>Protocole d’échange Rock Ridge (UNIX)</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>iso9660AppleHFS</code> + <label>Iso9660AppleHFS</label> + <description>Système hiérarchique de fichiers (Macintosh)</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + </codelist> + <!-- ==================================================== --> + <codelist name="gmd:MD_MediumNameCode"> + <entry> + <code>cdRom</code> + <label>CD-ROM</label> + <description>Disque optique en lecture seule</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>dvd</code> + <label>DVD</label> + <description>Disque numérique universel</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>dvdRom</code> + <label>DVD-ROM</label> + <description>Disque numérique universel en lecture seule</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>3halfInchFloppy</code> + <label>Disquette 3.5 pouces</label> + <description>Disquette magnétique de 3.5 pouces</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>5quarterInchFloppy</code> + <label>Disquette 5.25 pouces</label> + <description>Disquette magnétique de 5.25 pouces</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>7trackTape</code> + <label>Bande magnétique 7 pistes</label> + <description>Bande magnétique</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>9trackTape</code> + <label>Bande magnétique 9 pistes</label> + <description>Bande magnétique</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>3480Cartridge</code> + <label>Cartouche 3480</label> + <description>Cartouche à bande magnétique 3480</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>3490Cartridge</code> + <label>Cartouche 3490</label> + <description>Cartouche à bande magnétique 3490</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>3580Cartridge</code> + <label>Cartouche 3580</label> + <description>Cartouche à bande magnétique 3580</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>4mmCartridgeTape</code> + <label>Bande magnétique 4 mm</label> + <description>Bande magnétique 4 mm</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>8mmCartridgeTape</code> + <label>Bande magnétique 8 mm</label> + <description>Bande magnétique 8 mm</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>1quarterInchCartridgeTape</code> + <label>Bande magnétique 0.25 pouces</label> + <description>Bande magnétique 0.25 pouces</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>digitalLinearTape</code> + <label>Bande magnétique 0.5 pouces</label> + <description>Bande magnétique 0.5 pouces</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>onLine</code> + <label>En ligne</label> + <description>En ligne</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>satellite</code> + <label>Satellite</label> + <description>Communication par satellite</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>telephoneLink</code> + <label>Communication téléphonique</label> + <description>Liens via un réseau téléphonique</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>hardcopy</code> + <label>Papier</label> + <description>Document papier</description> + </entry> + <!-- ISO PROFIL CHE ONLY + <entry> + <code>zip100</code> + <label>ZIP 100</label> + <description></description> + </entry> + <entry> + <code>zip250</code> + <label>ZIP 250</label> + <description></description> + </entry> <entry> + <code>e-mail</code> + <label>E-mail</label> + <description></description> + </entry> <entry> + <code>zip</code> + <label>ZIP</label> + <description></description> + </entry> <entry> + <code>jaz</code> + <label>JAZ</label> + <description></description> + </entry> <entry> + <code>other</code> + <label>Autre</label> + <description></description> + </entry>--> + </codelist> + <!-- ==================================================== --> + <codelist name="gmd:MD_ObligationCode"> + <entry> + <code>mandatory</code> + <label>Obligatoire</label> + <description>Obligatoire</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>optional</code> + <label>Optionnel</label> + <description>Optionnel</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>conditional</code> + <label>Conditionnel</label> + <description>Conditionnel</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + </codelist> + <!-- ==================================================== --> + <codelist name="gmd:MD_PixelOrientationCode"> + <entry> + <code>center</code> + <label>Centre</label> + <description>Centre</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>lowerLeft</code> + <label>Bas gauche</label> + <description>Bas gauche</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>lowerRight</code> + <label>Bas droit</label> + <description>Bas droit</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>upperRight</code> + <label>Haut droit</label> + <description>Haut droit</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>upperLeft</code> + <label>Haut gauche</label> + <description>Haut gauche</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + </codelist> + <!-- ==================================================== --> + <codelist name="gmd:MD_ProgressCode"> + <entry> + <code>completed</code> + <label>Finalisé</label> + <description>Production de la ressource finalisée</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>historicalArchive</code> + <label>Archivé</label> + <description>Ressource archivée hors ligne</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>obsolete</code> + <label>Obsolète</label> + <description>Ressource obsolète</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>onGoing</code> + <label>Mise à jour continue</label> + <description>Ressource continuellement mise à jour</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>planned</code> + <label>Planifié</label> + <description>Ressource créée ou mise à jour sur base d'une date fixée</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>required</code> + <label>Création ou mise à jour requise</label> + <description>Ressource qui doit être générée ou mise à jour</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>underDevelopment</code> + <label>En cours de création</label> + <description>Ressource en cours de création</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry hideInEditMode="true"> + <code>notobsolete</code> + <label>Non obsolète</label> + <description></description> + </entry> + </codelist> + <!-- ==================================================== --> + <codelist name="gmd:MD_RestrictionCode"> + <entry> + <code>copyright</code> + <label>Droit d’auteur / Droit moral (copyright)</label> + <description>Restriction lié à l’exercice du droit moral</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>patent</code> + <label>Brevet</label> + <description>Restriction induite par l’existence d’un brevet</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>patentPending</code> + <label>Brevet en instance</label> + <description>Restriction induite par le dépôt d’un brevet en cours</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>trademark</code> + <label>Marque de commerce</label> + <description>Restriction lié à l’existence d’un dépôt de marque</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>license</code> + <label>Licence</label> + <description>Restriction induite par l’existence d’une licence</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>intellectualPropertyRights</code> + <label>Droit de propriété intellectuelle / Droit patrimonial</label> + <description>Restriction lié à l’exercice du droit patrimonial</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>restricted</code> + <label>Restreint</label> + <description>Cette valeur n’a pas d’application identifiée en France</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>otherRestrictions</code> + <label>Autres restrictions</label> + <description>Restrictions non prévues</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + </codelist> + <!-- ==================================================== --> + <codelist name="gmd:MD_ScopeCode" editorMode="radio"> + <entry> + <code>attribute</code> + <label>Attribut</label> + <description>Informations appliquées aux caractéristiques de l’attribut</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>attributeType</code> + <label>Type d'attribut</label> + <description>Informations appliquées aux caractéristiques de l’entité</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>collectionHardware</code> + <label>Collection matérielle</label> + <description>Informations appliquées aux caractéristiques d’une collection matérielle + </description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>collectionSession</code> + <label>Collection de session</label> + <description>Informations appliquées aux caractéristiques d’une collection de session + </description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>dataset</code> + <label>Jeu de données</label> + <description>Informations appliquées aux caractéristiques de jeu de données</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>series</code> + <label>Collection de données</label> + <description>Informations appliquées aux caractéristiques de la collection de données + </description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>nonGeographicDataset</code> + <label>Jeux de données non géographiques</label> + <description>Informations appliquées aux caractéristiques de jeux de données non + géographiques + </description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>dimensionGroup</code> + <label>Dimension d'un groupe</label> + <description>Informations appliquées à un groupe</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>feature</code> + <label>Entité</label> + <description>Informations appliquées à une entité</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>featureType</code> + <label>Type d’entité</label> + <description>Informations appliquées à un type d’entité</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>propertyType</code> + <label>Type de propriété</label> + <description>Informations appliquées à un type de propriété</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>fieldSession</code> + <label>Champ de session</label> + <description>Informations appliquées aux caractéristiques d’un champ de session</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>software</code> + <label>Logiciel</label> + <description>Informations appliquées à programme ou à une routine</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>service</code> + <label>Service</label> + <description>Informations appliquées à un service Internet</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>model</code> + <label>Modèle</label> + <description>Informations appliquées à modèle décrivant les objets ou un ensemble d'objets + </description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>tile</code> + <label>Tuile</label> + <description>Tuile</description> + </entry> + <!-- ISO PROFIL CHE ONLY + <entry> + <code>project</code> + <label>Projet</label> + <description>Le projet décrit le cadre organisationnel défini pour l'accomplissement d'une tâche: il intègre la description des tenants et des aboutissants du problème, les objectifs, les activités prévues, les étapes de réalisation, les délais, les ressources...</description> + </entry> + <entry> + <code>stationSite</code> + <label>Station</label> + <description>Cet élément décrit les activités d'acquisition de données des stations de mesure ; il ne décrit pas les données mais la manière dont elles ont été saisies (paramètres de saisie, méthodes, instruments)</description> + </entry> + <entry> + <code>publication</code> + <label>Publication</label> + <description>Ce sont des produits finis tels que les ouvrages, brochures, articles, rapports, matériel audiovisuel...</description> + </entry>--> + + + <!-- Used for facet translation only and not displayed in editor --> + <entry> + <code>map</code> + <label>Carte</label> + <description></description> + </entry> + <entry> + <code>staticMap</code> + <label>Carte statique</label> + <description></description> + </entry> + <entry> + <code>chart</code> + <label>Graphe</label> + <description></description> + </entry> + <entry> + <code>interactiveMap</code> + <label>Carte interactive</label> + <description></description> + </entry> + <entry hideInEditMode="true"> + <code>featureCatalog</code> + <label>Catalogue d'attributs</label> + <description></description> + </entry> + </codelist> + <!-- + Example to customize scope code codelist for a service metadata record. + <codelist name="gmd:MD_ScopeCode" displayIf="/ancestor::node()[name()='gmd:MD_Metadata']/gmd:identificationInfo/srv:SV_ServiceIdentification"> + <entry> + <code>service</code> + <label>Service</label> + <description>Informations appliquées à un service Internet</description> + </entry> + </codelist>--> + <!-- ==================================================== --> + <codelist name="gmd:MD_SpatialRepresentationTypeCode"> + <entry> + <code>vector</code> + <label>Vecteur</label> + <description>Donnée vecteur (point, ligne, polygone)</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>grid</code> + <label>Raster</label> + <description>Donnée raster ou matricielle</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>textTable</code> + <label>Tabulaire</label> + <description>Fichier texte ou table</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>tin</code> + <label>TIN</label> + <description>Réseau de triangle irrégulier (Triangulated Irregular Network)</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>stereoModel</code> + <label>Modèle stéréoscopique</label> + <description>Vue tridimensionnelle formée par l'intersection des rayons homologues d'une paire + d'images se recouvrant + </description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>video</code> + <label>Vidéo</label> + <description>Enregistrement vidéo</description> + </entry> + <!-- ISO PROFIL CHE ONLY + <entry> + <code>paperMap</code> + <label>Carte papier</label> + <description></description> + </entry>--> + </codelist> + <!-- ==================================================== --> + <codelist name="gmd:MD_TopicCategoryCode"> + <entry> + <code>farming</code> + <label>Agriculture</label> + <description>Elevage et/ou cultures. Exemples : agriculture, irrigation, aquaculture, + plantations + </description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>biota</code> + <label>Biote</label> + <description>Flore et faune dans un écosystème naturel. Exemples : habitat, écologie, faune + sauvage, faune aquatique, sciences biologiques, zones humides, végétation, biodiversité + </description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>boundaries</code> + <label>Limites</label> + <description>Exemples : limites de pays, de provinces, de départements, de communes + </description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>climatologyMeteorologyAtmosphere</code> + <label>Climatologie/Météorologie/Atmosphère</label> + <description>Processus et phénomènes atmosphériques. Exemples : climat, météorologie, + conditions atmosphériques, changements climatiques, couverture nuageuse + </description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>economy</code> + <label>Economie</label> + <description>Activités économiques. Exemples : production, travail, revenu, commerce, + industrie, tourisme et éco-tourisme, foresterie, pêche, chasse, exploration et exploitation + des ressources minières, pétrole, gaz naturel + </description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>elevation</code> + <label>Altitude</label> + <description>Hauteurs au dessous et dessus du niveau de la mer. Exemples : altitude, + bathymétrie, MNT, pentes et calculs dérivés de l’altitude + </description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>environment</code> + <label>Environnement</label> + <description>Ressources naturelles, protection, conservation des ressources naturelles. + Exemples : pollution, traitement et stockage des déchets, suivi de l’environnement, gestion + du risque, réserves naturelles, paysage + </description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>geoscientificInformation</code> + <label>Informations géoscientifiques</label> + <description>Informations relatives aux sciences de la terre. Exemples : composants et + processus géophysiques, géologie, minéralogie, tectonique, risque sismique + </description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>health</code> + <label>Santé</label> + <description>Santé, services de santé, épidémiologie. Exemples : maladies et épidémie, + facteurs affectant la santé, santé mentale et physique, services de santé + </description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>imageryBaseMapsEarthCover</code> + <label>Imagerie/Cartes de base/Occupation des terres</label> + <description>Carte de référence. Exemples : occupation des terres, imagerie aérienne et + satellitale, carte thématiques, carte topographiques + </description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>intelligenceMilitary</code> + <label>Renseignement/Secteur militaire</label> + <description>Bases militaires et infrastructures</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>inlandWaters</code> + <label>Eaux intérieures</label> + <description>Exemples : fleuves, rivières, glaciers, lacs salés, systèmes hydrographiques, + barrages, débits, qualité de l’eau + </description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>location</code> + <label>Localisation</label> + <description>Exemples : zones postales, adresses, points de contrôle, réseau géodésique + </description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>oceans</code> + <label>Océans</label> + <description>Composants et caractéristiques du milieu maritime. Exemples : littoral, récifs, + marée, etc. + </description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>planningCadastre</code> + <label>Planification/Cadastre</label> + <description>Exemples : carte d’utilisation des terres, plan d’occupation des sols, + planification pour la prévention des risques + </description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>society</code> + <label>Société</label> + <description>Caractéristiques des sociétés et des cultures. Exemples :lois, anthropologie, + éducation, données démographiques, archéologique, suivi des systèmes sociaux, croyances, us + et coutumes, crimes et justices + </description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>structure</code> + <label>Structure</label> + <description>Aménagements urbains. Exemples : musée, église, usines, maisons, monuments, + boutiques, immeubles + </description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>transportation</code> + <label>Transport</label> + <description>Moyens de transports des personnes et des biens. Exemples : routes, aéroports, + tunnels, viaducs, ponts, chemin de fer + </description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>utilitiesCommunication</code> + <label>Services d'utilité publique/Communication</label> + <description>Systèmes de distribution de gestion ou de stockage de l’énergie, de l’eau, des + déchets. Infrastructures et services de communication. Exemples : source d’énergie solaire, + hydroélectrique, nucléaire, épuration et distribution des eaux, réseau de distribution + électrique, de gaz, réseau de télécommunication, radio. + </description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + </codelist> + <!-- ==================================================== --> + <codelist name="gmd:MD_TopologyLevelCode"> + <entry> + <code>geometryOnly</code> + <label>Géométrie seulement</label> + <description>Objets vecteurs sans aucune structure qui décrit la topologie</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>topology1D</code> + <label>Topologie de réseau</label> + <description>Réseau sans surface (communément dénommée topologie réseau)</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>planarGraph</code> + <label>Graphe planaire</label> + <description>Topologie 1D planaire</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>fullPlanarGraph</code> + <label>Topologie de réseau complète</label> + <description>Topologie 2D planaire</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>surfaceGraph</code> + <label>Topologie de surface</label> + <description>Topologie 1D avec surfaces</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>fullSurfaceGraph</code> + <label>Topologie de surface complète</label> + <description>Topologie 2D avec surfaces</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>topology3D</code> + <label>Topologie 3D</label> + <description>Topologie 3D</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>fullTopology3D</code> + <label>Topologie 3D complète</label> + <description>Couverture complète d’un espace Euclidien 3D</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>abstract</code> + <label>Spaghetti</label> + <description>Objets géométriques sans description de la topologie</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + </codelist> + <!-- ==================================================== --> + <codelist name="gmd:MX_ScopeCode"> + <entry> + <code>attribute</code> + <label>Attribut</label> + <description>Informations appliquées aux caractéristiques de l’attribut</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>attributeType</code> + <label>Type d'attribut</label> + <description>Informations appliquées aux caractéristiques de l’entité</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>collectionHardware</code> + <label>Collection matérielle</label> + <description>Informations appliquées aux caractéristiques d’une collection matérielle + </description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>collectionSession</code> + <label>Collection de session</label> + <description>Informations appliquées aux caractéristiques d’une collection de session + </description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>dataset</code> + <label>Jeu de données</label> + <description>Informations appliquées aux caractéristiques de jeu de données</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>series</code> + <label>Collection de données</label> + <description>Informations appliquées aux caractéristiques de la collection de données + </description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>nonGeographicDataset</code> + <label>Jeux de données non géographiques</label> + <description>Informations appliquées aux caractéristiques de jeux de données non + géographiques + </description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>dimensionGroup</code> + <label>Dimension d'un groupe</label> + <description>Informations appliquées à un groupe</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>feature</code> + <label>Entité</label> + <description>Informations appliquées à une entité</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>featureType</code> + <label>Type d’entité</label> + <description>Informations appliquées à un type d’entité</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>propertyType</code> + <label>Type de propriété</label> + <description>Informations appliquées à un type de propriété</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>fieldSession</code> + <label>Champ de session</label> + <description>Informations appliquées aux caractéristiques d’un champ de session</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>software</code> + <label>Logiciel</label> + <description>Informations appliquées à programme ou à une routine</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>service</code> + <label>Service</label> + <description>Informations appliquées à un service Internet</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>model</code> + <label>Modèle</label> + <description>Informations appliquées à modèle décrivant les objets ou un ensemble d'objets + </description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>tile</code> + <label>Tile</label> + <description>Tile</description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>initiative</code> + <label>Initiative</label> + <description>The referencing entity applies to a transfer aggregate which was originally + identified as an initiative (DS_Initiative) + </description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>stereomate</code> + <label>Stereomate</label> + <description>The referencing entity applies to a transfer aggregate which was originally + identified as a stereo mate (DS_StereoMate) + </description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>sensor</code> + <label>Sensor</label> + <description>The referencing entity applies to a transfer aggregate which was originally + identified as a sensor (DS_Sensor) + </description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>platformSeries</code> + <label>PlatformSeries</label> + <description>The referencing entity applies to a transfer aggregate which was originally + identified as a platform series (DS_PlatformSeries) + </description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>sensorSeries</code> + <label>SensorSeries</label> + <description>The referencing entity applies to a transfer aggregate which was originally + identified as a sensor series (DS_SensorSeries) + </description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>productionSeries</code> + <label>ProductionSeries</label> + <description>The referencing entity applies to a transfer aggregate which was originally + identified as a production series (DS_ProductionSeries) + </description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>transferAggregate</code> + <label>TransferAggregate</label> + <description>The referencing entity applies to a transfer aggregate which has no existence + outside of the transfer context + </description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + <entry> + <code>otherAggregate</code> + <label>OtherAggregate</label> + <description>The referencing entity applies to a transfer aggregate which has an existence + outside of the transfer context, but which does not pertains to a specific aggregate + type. + </description> + </entry> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - --> + </codelist> + <!-- ==================================================== --> + <codelist name="srv:DCPList"> + <entry> + <description>DCP is XML</description> + <code>XML</code> + <label>XML</label> + </entry> + <entry> + <description>DCP is CORBA</description> + <code>CORBA</code> + <label>CORBA</label> + </entry> + <entry> + <description>DCP is JAVA</description> + <code>JAVA</code> + <label>JAVA</label> + </entry> + <entry> + <description>DCP is COM</description> + <code>COM</code> + <label>COM</label> + </entry> + <entry> + <description>DCP is SQL</description> + <code>SQL</code> + <label>SQL</label> + </entry> + <entry> + <description>DCP is WebServices</description> + <code>WebServices</code> + <label>WebServices</label> + </entry> + </codelist> + <!--=== CouplingType from ISO19119 ===--> + <codelist name="srv:SV_CouplingType"> + <entry> + <description>Présence d'une donnée associée</description> + <code>tight</code> + <label>Reserré</label> + </entry> + <entry> + <description>Présence de plusieurs données associées</description> + <code>mixed</code> + <label>Mixte</label> + </entry> + <entry> + <description>Absence de donnée associée</description> + <code>loose</code> + <label>Libre</label> + </entry> + </codelist> + + <codelist name="srv:SV_ParameterDirection"> + <entry> + <code>in</code> + <label>Entrée</label> + </entry> + <entry> + <code>out</code> + <label>Sortie</label> + </entry> + <entry> + <code>in/out</code> + <label>Entrée/Sortie</label> + </entry> + </codelist> + + <codelist name="gco:nilReason"> + <entry> + <code>missing</code> + <label>Manquant</label> + </entry> + <entry> + <code>inapplicable</code> + <label>Non appliquable</label> + </entry> + <entry> + <code>template</code> + <label>Modèle</label> + </entry> + <entry> + <code>unknown</code> + <label>Inconnu</label> + </entry> + <entry> + <code>withheld</code> + <label>Avec autorisation</label> + </entry> + </codelist> + + <codelist name="indeterminatePosition"> + <entry> + <code>after</code> + <label>Après</label> + </entry> + <entry> + <code>before</code> + <label>Avant</label> + </entry> + <entry> + <code>now</code> + <label>Maintenant</label> + </entry> + <entry> + <code>unknown</code> + <label>Inconnu</label> + </entry> + </codelist> +</codelists> diff --git a/src/main/webapp/WEB-INF/data/config/schema_plugins/iso19139/schematron/schematron-rules-geonetwork.sch b/src/main/webapp/WEB-INF/data/config/schema_plugins/iso19139/schematron/schematron-rules-geonetwork.sch new file mode 100644 index 0000000..f319747 --- /dev/null +++ b/src/main/webapp/WEB-INF/data/config/schema_plugins/iso19139/schematron/schematron-rules-geonetwork.sch @@ -0,0 +1,71 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + ~ Copyright (C) 2001-2016 Food and Agriculture Organization of the + ~ United Nations (FAO-UN), United Nations World Food Programme (WFP) + ~ and United Nations Environment Programme (UNEP) + ~ + ~ This program is free software; you can redistribute it and/or modify + ~ it under the terms of the GNU General Public License as published by + ~ the Free Software Foundation; either version 2 of the License, or (at + ~ your option) any later version. + ~ + ~ This program is distributed in the hope that it will be useful, but + ~ WITHOUT ANY WARRANTY; without even the implied warranty of + ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + ~ General Public License for more details. + ~ + ~ You should have received a copy of the GNU General Public License + ~ along with this program; if not, write to the Free Software + ~ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + ~ + ~ Contact: Jeroen Ticheler - FAO - Viale delle Terme di Caracalla 2, + ~ Rome - Italy. email: geonetwork@osgeo.org + --> + +<sch:schema xmlns:sch="http://purl.oclc.org/dsdl/schematron" + xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> + + <sch:title xmlns="http://www.w3.org/2001/XMLSchema">Schematron validation / GeoNetwork recommendations</sch:title> + <sch:ns prefix="gml" uri="http://www.opengis.net/gml"/> + <sch:ns prefix="gmd" uri="http://www.isotc211.org/2005/gmd"/> + <sch:ns prefix="srv" uri="http://www.isotc211.org/2005/srv"/> + <sch:ns prefix="gco" uri="http://www.isotc211.org/2005/gco"/> + <sch:ns prefix="geonet" uri="http://www.fao.org/geonetwork"/> + <sch:ns prefix="xlink" uri="http://www.w3.org/1999/xlink"/> + + <!-- ============================================================= + GeoNetwork schematron rules: + ============================================================= --> + <sch:pattern> + <sch:title>$loc/strings/M500</sch:title> + <sch:rule + context="//gmd:MD_Metadata|//*[@gco:isoType='gmd:MD_Metadata']"> + <sch:let name="language" value="gmd:language/gco:CharacterString|gmd:language/gmd:LanguageCode/@codeListValue"/> + <sch:let name="localeAndNoLanguage" value="not(gmd:locale and gmd:language/@gco:nilReason='missing') + and not(gmd:locale and not(gmd:language))"/> + <sch:let name="duplicateLanguage" value="not(gmd:locale/gmd:PT_Locale/gmd:languageCode/gmd:LanguageCode/@codeListValue=$language)"/> + + + <!-- Check that main language is not defined and gmd:locale element exist. --> + <sch:assert test="$localeAndNoLanguage" + >$loc/strings/alert.M500</sch:assert> + <sch:report test="$localeAndNoLanguage" + ><sch:value-of select="$loc/strings/report.M500"/> "<sch:value-of select="normalize-space($language)"/>"</sch:report> + + + <!-- + * Check that main language is defined and does not exist in gmd:locale. + * Do not declare a language twice in gmd:locale section. + This should not happen due to XSD error + which is usually made before schematron validation: + "The value 'XX' of attribute 'id' on element 'gmd:PT_Locale' is not valid with respect to its type, 'ID'. + (Element: gmd:PT_Locale with parent element: gmd:locale)" + --> + <sch:assert test="$duplicateLanguage" + >$loc/strings/alert.M501</sch:assert> + <sch:report test="$duplicateLanguage" + >$loc/strings/report.M501</sch:report> + + </sch:rule> + </sch:pattern> +</sch:schema> diff --git a/src/main/webapp/WEB-INF/data/config/schema_plugins/iso19139/schematron/schematron-rules-geonetwork.xsl b/src/main/webapp/WEB-INF/data/config/schema_plugins/iso19139/schematron/schematron-rules-geonetwork.xsl new file mode 100644 index 0000000..2963ccf --- /dev/null +++ b/src/main/webapp/WEB-INF/data/config/schema_plugins/iso19139/schematron/schematron-rules-geonetwork.xsl @@ -0,0 +1,303 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<xsl:stylesheet xmlns:xhtml="http://www.w3.org/1999/xhtml" + xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:xs="http://www.w3.org/2001/XMLSchema" + xmlns:schold="http://www.ascc.net/xml/schematron" + xmlns:iso="http://purl.oclc.org/dsdl/schematron" + xmlns:gml="http://www.opengis.net/gml" + xmlns:gmd="http://www.isotc211.org/2005/gmd" + xmlns:srv="http://www.isotc211.org/2005/srv" + xmlns:gco="http://www.isotc211.org/2005/gco" + xmlns:geonet="http://www.fao.org/geonetwork" + xmlns:xlink="http://www.w3.org/1999/xlink" + exclude-result-prefixes="#all" + version="2.0"><!--Implementers: please note that overriding process-prolog or process-root is + the preferred method for meta-stylesheets to use where possible. + --> +<xsl:param name="archiveDirParameter"/> + <xsl:param name="archiveNameParameter"/> + <xsl:param name="fileNameParameter"/> + <xsl:param name="fileDirParameter"/> + <xsl:variable name="document-uri"> + <xsl:value-of select="document-uri(/)"/> + </xsl:variable> + + <!--PHASES--> + + +<!--PROLOG--> +<xsl:output xmlns:svrl="http://purl.oclc.org/dsdl/svrl" method="xml" + omit-xml-declaration="no" + standalone="yes" + indent="yes"/> + <xsl:include xmlns:svrl="http://purl.oclc.org/dsdl/svrl" href="../../../xsl/utils-fn.xsl"/> + <xsl:param xmlns:svrl="http://purl.oclc.org/dsdl/svrl" name="lang"/> + <xsl:param xmlns:svrl="http://purl.oclc.org/dsdl/svrl" name="thesaurusDir"/> + <xsl:param xmlns:svrl="http://purl.oclc.org/dsdl/svrl" name="rule"/> + <xsl:variable xmlns:svrl="http://purl.oclc.org/dsdl/svrl" name="loc" + select="document(concat('../loc/', $lang, '/', $rule, '.xml'))"/> + + <!--XSD TYPES FOR XSLT2--> + + +<!--KEYS AND FUNCTIONS--> + + +<!--DEFAULT RULES--> + + +<!--MODE: SCHEMATRON-SELECT-FULL-PATH--> +<!--This mode can be used to generate an ugly though full XPath for locators + --> +<xsl:template match="*" mode="schematron-select-full-path"> + <xsl:apply-templates select="." mode="schematron-get-full-path"/> + </xsl:template> + + <!--MODE: SCHEMATRON-FULL-PATH--> +<!--This mode can be used to generate an ugly though full XPath for locators + --> +<xsl:template match="*" mode="schematron-get-full-path"> + <xsl:apply-templates select="parent::*" mode="schematron-get-full-path"/> + <xsl:text>/</xsl:text> + <xsl:choose> + <xsl:when test="namespace-uri()=''"> + <xsl:value-of select="name()"/> + <xsl:variable name="p_1" + select="1+ count(preceding-sibling::*[name()=name(current())])"/> + <xsl:if test="$p_1>1 or following-sibling::*[name()=name(current())]">[<xsl:value-of select="$p_1"/>]</xsl:if> + </xsl:when> + <xsl:otherwise> + <xsl:text>*[local-name()='</xsl:text> + <xsl:value-of select="local-name()"/> + <xsl:text>']</xsl:text> + <xsl:variable name="p_2" + select="1+ count(preceding-sibling::*[local-name()=local-name(current())])"/> + <xsl:if test="$p_2>1 or following-sibling::*[local-name()=local-name(current())]">[<xsl:value-of select="$p_2"/>]</xsl:if> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + <xsl:template match="@*" mode="schematron-get-full-path"> + <xsl:text>/</xsl:text> + <xsl:choose> + <xsl:when test="namespace-uri()=''">@ + <xsl:value-of select="name()"/> + </xsl:when> + <xsl:otherwise> + <xsl:text>@*[local-name()='</xsl:text> + <xsl:value-of select="local-name()"/> + <xsl:text>' and namespace-uri()='</xsl:text> + <xsl:value-of select="namespace-uri()"/> + <xsl:text>']</xsl:text> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <!--MODE: SCHEMATRON-FULL-PATH-2--> +<!--This mode can be used to generate prefixed XPath for humans--> +<xsl:template match="node() | @*" mode="schematron-get-full-path-2"> + <xsl:for-each select="ancestor-or-self::*"> + <xsl:text>/</xsl:text> + <xsl:value-of select="name(.)"/> + <xsl:if test="preceding-sibling::*[name(.)=name(current())]"> + <xsl:text>[</xsl:text> + <xsl:value-of select="count(preceding-sibling::*[name(.)=name(current())])+1"/> + <xsl:text>]</xsl:text> + </xsl:if> + </xsl:for-each> + <xsl:if test="not(self::*)"> + <xsl:text/>/@ + <xsl:value-of select="name(.)"/> + </xsl:if> + </xsl:template> + <!--MODE: SCHEMATRON-FULL-PATH-3--> +<!--This mode can be used to generate prefixed XPath for humans + (Top-level element has index) + --> +<xsl:template match="node() | @*" mode="schematron-get-full-path-3"> + <xsl:for-each select="ancestor-or-self::*"> + <xsl:text>/</xsl:text> + <xsl:value-of select="name(.)"/> + <xsl:if test="parent::*"> + <xsl:text>[</xsl:text> + <xsl:value-of select="count(preceding-sibling::*[name(.)=name(current())])+1"/> + <xsl:text>]</xsl:text> + </xsl:if> + </xsl:for-each> + <xsl:if test="not(self::*)"> + <xsl:text/>/@ + <xsl:value-of select="name(.)"/> + </xsl:if> + </xsl:template> + + <!--MODE: GENERATE-ID-FROM-PATH--> +<xsl:template match="/" mode="generate-id-from-path"/> + <xsl:template match="text()" mode="generate-id-from-path"> + <xsl:apply-templates select="parent::*" mode="generate-id-from-path"/> + <xsl:value-of select="concat('.text-', 1+count(preceding-sibling::text()), '-')"/> + </xsl:template> + <xsl:template match="comment()" mode="generate-id-from-path"> + <xsl:apply-templates select="parent::*" mode="generate-id-from-path"/> + <xsl:value-of select="concat('.comment-', 1+count(preceding-sibling::comment()), '-')"/> + </xsl:template> + <xsl:template match="processing-instruction()" mode="generate-id-from-path"> + <xsl:apply-templates select="parent::*" mode="generate-id-from-path"/> + <xsl:value-of select="concat('.processing-instruction-', 1+count(preceding-sibling::processing-instruction()), '-')"/> + </xsl:template> + <xsl:template match="@*" mode="generate-id-from-path"> + <xsl:apply-templates select="parent::*" mode="generate-id-from-path"/> + <xsl:value-of select="concat('.@', name())"/> + </xsl:template> + <xsl:template match="*" mode="generate-id-from-path" priority="-0.5"> + <xsl:apply-templates select="parent::*" mode="generate-id-from-path"/> + <xsl:text>.</xsl:text> + <xsl:value-of select="concat('.',name(),'-',1+count(preceding-sibling::*[name()=name(current())]),'-')"/> + </xsl:template> + + <!--MODE: GENERATE-ID-2--> +<xsl:template match="/" mode="generate-id-2">U</xsl:template> + <xsl:template match="*" mode="generate-id-2" priority="2"> + <xsl:text>U</xsl:text> + <xsl:number level="multiple" count="*"/> + </xsl:template> + <xsl:template match="node()" mode="generate-id-2"> + <xsl:text>U.</xsl:text> + <xsl:number level="multiple" count="*"/> + <xsl:text>n</xsl:text> + <xsl:number count="node()"/> + </xsl:template> + <xsl:template match="@*" mode="generate-id-2"> + <xsl:text>U.</xsl:text> + <xsl:number level="multiple" count="*"/> + <xsl:text>_</xsl:text> + <xsl:value-of select="string-length(local-name(.))"/> + <xsl:text>_</xsl:text> + <xsl:value-of select="translate(name(),':','.')"/> + </xsl:template> + <!--Strip characters--><xsl:template match="text()" priority="-1"/> + + <!--SCHEMA SETUP--> +<xsl:template match="/"> + <svrl:schematron-output xmlns:svrl="http://purl.oclc.org/dsdl/svrl" + title="Schematron validation / GeoNetwork recommendations" + schemaVersion=""> + <xsl:comment> + <xsl:value-of select="$archiveDirParameter"/> +  + <xsl:value-of select="$archiveNameParameter"/> +  + <xsl:value-of select="$fileNameParameter"/> +  + <xsl:value-of select="$fileDirParameter"/> + </xsl:comment> + <svrl:ns-prefix-in-attribute-values uri="http://www.opengis.net/gml" prefix="gml"/> + <svrl:ns-prefix-in-attribute-values uri="http://www.isotc211.org/2005/gmd" prefix="gmd"/> + <svrl:ns-prefix-in-attribute-values uri="http://www.isotc211.org/2005/srv" prefix="srv"/> + <svrl:ns-prefix-in-attribute-values uri="http://www.isotc211.org/2005/gco" prefix="gco"/> + <svrl:ns-prefix-in-attribute-values uri="http://www.fao.org/geonetwork" prefix="geonet"/> + <svrl:ns-prefix-in-attribute-values uri="http://www.w3.org/1999/xlink" prefix="xlink"/> + <svrl:active-pattern> + <xsl:attribute name="document"> + <xsl:value-of select="document-uri(/)"/> + </xsl:attribute> + <xsl:attribute name="name"> + <xsl:value-of select="$loc/strings/M500"/> + </xsl:attribute> + <xsl:apply-templates/> + </svrl:active-pattern> + <xsl:apply-templates select="/" mode="M7"/> + </svrl:schematron-output> + </xsl:template> + + <!--SCHEMATRON PATTERNS--> +<svrl:text xmlns:svrl="http://purl.oclc.org/dsdl/svrl">Schematron validation / GeoNetwork recommendations</svrl:text> + + <!--PATTERN + $loc/strings/M500--> +<svrl:text xmlns:svrl="http://purl.oclc.org/dsdl/svrl"> + <xsl:copy-of select="$loc/strings/M500"/> + </svrl:text> + + <!--RULE + --> +<xsl:template match="//gmd:MD_Metadata|//*[@gco:isoType='gmd:MD_Metadata']" priority="1000" + mode="M7"> + <svrl:fired-rule xmlns:svrl="http://purl.oclc.org/dsdl/svrl" + context="//gmd:MD_Metadata|//*[@gco:isoType='gmd:MD_Metadata']"/> + <xsl:variable name="language" + select="gmd:language/gco:CharacterString|gmd:language/gmd:LanguageCode/@codeListValue"/> + <xsl:variable name="localeAndNoLanguage" + select="not(gmd:locale and gmd:language/@gco:nilReason='missing') and not(gmd:locale and not(gmd:language))"/> + <xsl:variable name="duplicateLanguage" + select="not(gmd:locale/gmd:PT_Locale/gmd:languageCode/gmd:LanguageCode/@codeListValue=$language)"/> + + <!--ASSERT + --> +<xsl:choose> + <xsl:when test="$localeAndNoLanguage"/> + <xsl:otherwise> + <svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="$localeAndNoLanguage"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:copy-of select="$loc/strings/alert.M500"/> + </svrl:text> + </svrl:failed-assert> + </xsl:otherwise> + </xsl:choose> + + <!--REPORT + --> +<xsl:if test="$localeAndNoLanguage"> + <svrl:successful-report xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="$localeAndNoLanguage"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$loc/strings/report.M500"/> + <xsl:text/> "<xsl:text/> + <xsl:copy-of select="normalize-space($language)"/> + <xsl:text/>"</svrl:text> + </svrl:successful-report> + </xsl:if> + + <!--ASSERT + --> +<xsl:choose> + <xsl:when test="$duplicateLanguage"/> + <xsl:otherwise> + <svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="$duplicateLanguage"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:copy-of select="$loc/strings/alert.M501"/> + </svrl:text> + </svrl:failed-assert> + </xsl:otherwise> + </xsl:choose> + + <!--REPORT + --> +<xsl:if test="$duplicateLanguage"> + <svrl:successful-report xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="$duplicateLanguage"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:copy-of select="$loc/strings/report.M501"/> + </svrl:text> + </svrl:successful-report> + </xsl:if> + <xsl:apply-templates select="*|comment()|processing-instruction()" mode="M7"/> + </xsl:template> + <xsl:template match="text()" priority="-1" mode="M7"/> + <xsl:template match="@*|node()" priority="-2" mode="M7"> + <xsl:apply-templates select="*|comment()|processing-instruction()" mode="M7"/> + </xsl:template> +</xsl:stylesheet> \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/data/config/schema_plugins/iso19139/schematron/schematron-rules-inspire.sch b/src/main/webapp/WEB-INF/data/config/schema_plugins/iso19139/schematron/schematron-rules-inspire.sch new file mode 100644 index 0000000..508ad3c --- /dev/null +++ b/src/main/webapp/WEB-INF/data/config/schema_plugins/iso19139/schematron/schematron-rules-inspire.sch @@ -0,0 +1,736 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<!-- + ~ Copyright (C) 2001-2016 Food and Agriculture Organization of the + ~ United Nations (FAO-UN), United Nations World Food Programme (WFP) + ~ and United Nations Environment Programme (UNEP) + ~ + ~ This program is free software; you can redistribute it and/or modify + ~ it under the terms of the GNU General Public License as published by + ~ the Free Software Foundation; either version 2 of the License, or (at + ~ your option) any later version. + ~ + ~ This program is distributed in the hope that it will be useful, but + ~ WITHOUT ANY WARRANTY; without even the implied warranty of + ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + ~ General Public License for more details. + ~ + ~ You should have received a copy of the GNU General Public License + ~ along with this program; if not, write to the Free Software + ~ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + ~ + ~ Contact: Jeroen Ticheler - FAO - Viale delle Terme di Caracalla 2, + ~ Rome - Italy. email: geonetwork@osgeo.org + --> + +<sch:schema xmlns:sch="http://purl.oclc.org/dsdl/schematron" + xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + queryBinding="xslt2"> + <!-- + +This Schematron define INSPIRE IR on metadata for datasets and services. + + @author Francois Prunayre, 2008-2010 + @author Etienne Taffoureau, 2008-2010 + + + * 2008-2010 (geosource and geocat.ch sandbox) + * First release + * 201004 + * Updates based on INSPIRE metadata validator available here + http://www.inspire-geoportal.eu/index.cfm/pageid/48. + * Improve gco:nilReason check + * Add multilingual INSPIRE theme rule + * Add service taxonomy rules + * Don't generate error when conformity is missing. Then confomity is only non-evaluated + +NOTE : + * A record could be "INSPIRE valid" in GeoNetwork +and not in INSPIRE metadata validator if INSPIRE theme +are defined in an other language than english for example (multilingual validation +not available in INSPIRE geoportal for the time being). + * inspired by the schematron_rules.xml released under EUPL by +Kristian Senkler (conterra), Gianluca Luraschi (JRC), Ioannis Kanellopoulos (JRC) + + +TODO : + * Service taxonomy is using a codelist value instead of a label + (which is not user friendly). + * In case of multilingual metadata, some rules may be improved ? + * Do no check if keywords comes from realease X of GEMET as far + as we check we have one INSPIRE theme. + * INSPIRE metadata validation engine is not using same ISO19139 schema + gmd:language is a codelist not a gco:CharacterString. + + + + +This work is licensed under the Creative Commons Attribution 2.5 License. +To view a copy of this license, visit + http://creativecommons.org/licenses/by/2.5/ + +or send a letter to: + +Creative Commons, +543 Howard Street, 5th Floor, +San Francisco, California, 94105, +USA. + +--> + + <sch:title xmlns="http://www.w3.org/2001/XMLSchema">INSPIRE metadata implementing rule validation</sch:title> + <sch:ns prefix="gml" uri="http://www.opengis.net/gml"/> + <sch:ns prefix="gmd" uri="http://www.isotc211.org/2005/gmd"/> + <sch:ns prefix="gmx" uri="http://www.isotc211.org/2005/gmx"/> + <sch:ns prefix="srv" uri="http://www.isotc211.org/2005/srv"/> + <sch:ns prefix="gco" uri="http://www.isotc211.org/2005/gco"/> + <sch:ns prefix="geonet" uri="http://www.fao.org/geonetwork"/> + <sch:ns prefix="skos" uri="http://www.w3.org/2004/02/skos/core#"/> + <sch:ns prefix="xlink" uri="http://www.w3.org/1999/xlink"/> + + + <!-- INSPIRE metadata rules / START --> + <sch:pattern> + <sch:title>$loc/strings/identification</sch:title> + + <sch:rule context="//gmd:identificationInfo/*/gmd:citation/gmd:CI_Citation"> + <!-- Title --> + <sch:let name="noResourceTitle" value="not(gmd:title) or gmd:title/@gco:nilReason='missing'"/> + <sch:let name="resourceTitle" value="gmd:title/*/text()"/> + + <sch:assert test="not($noResourceTitle)"><sch:value-of select="$loc/strings/alert.M35/div"/></sch:assert> + <sch:report test="not($noResourceTitle)"> + <sch:value-of select="$loc/strings/report.M35/div"/><sch:value-of select="$resourceTitle"/> + </sch:report> + + + </sch:rule> + + + <!-- Online resource + Conditional for spatial dataset and spatial dataset + series: Mandatory if a URL is available to obtain + IR more information on the resources and/or access Obligation / condition related services. + • Conditional for services: Mandatory if linkage to the + service is available + --> + <sch:rule context="//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/gmd:CI_OnlineResource"> + <sch:let name="resourceLocator" value="gmd:linkage/*/text()"/> + <sch:let name="noResourceLocator" value="normalize-space(gmd:linkage/gmd:URL)='' + or not(gmd:linkage)"/> + + <sch:assert test="not($noResourceLocator)"> + <sch:value-of select="$loc/strings/alert.M52/div"/> + </sch:assert> + <sch:report test="not($noResourceLocator)"> + <sch:value-of select="$loc/strings/report.M52/div"/> + <sch:value-of select="$resourceLocator"/> + </sch:report> + </sch:rule> + + + + <!-- Resource type --> + <sch:rule context="//gmd:MD_Metadata"> + <sch:let name="resourceType_present" value="gmd:hierarchyLevel/*/@codeListValue='dataset' + or gmd:hierarchyLevel/*/@codeListValue='series' + or gmd:hierarchyLevel/*/@codeListValue='service'"/> + <sch:let name="resourceType" value="string-join(gmd:hierarchyLevel/*/@codeListValue, ',')"/> + + <sch:assert test="$resourceType_present"> + <sch:value-of select="$loc/strings/alert.M37/div"/> + </sch:assert> + <sch:report test="$resourceType_present"> + <sch:value-of select="$loc/strings/report.M37/div"/> + <sch:value-of select="$resourceType"/> + </sch:report> + </sch:rule> + + + + + <sch:rule context="//gmd:MD_DataIdentification| + //*[@gco:isoType='gmd:MD_DataIdentification']| + //srv:SV_ServiceIdentification| + //*[@gco:isoType='srv:SV_ServiceIdentification']"> + <sch:let name="resourceAbstract" value="gmd:abstract/*/text()"/> + <sch:let name="noResourceAbstract" value="not(gmd:abstract) or gmd:abstract/@gco:nilReason='missing'"/> + + <!-- Abstract --> + <sch:assert test="not($noResourceAbstract)"> + <sch:value-of select="$loc/strings/alert.M36/div"/> + </sch:assert> + <sch:report test="not($noResourceAbstract)"> + <sch:value-of select="$loc/strings/report.M36/div"/> + <sch:value-of select="$resourceAbstract"/> + </sch:report> + + + </sch:rule> + </sch:pattern> + + + + <!-- Dataset and series only --> + <sch:pattern> + <sch:title>$loc/strings/dataIdentification</sch:title> + + <sch:rule context="//gmd:MD_DataIdentification[ + normalize-space(../../gmd:hierarchyLevel/gmd:MD_ScopeCode/@codeListValue) = 'series' + or normalize-space(../../gmd:hierarchyLevel/gmd:MD_ScopeCode/@codeListValue) = 'dataset' + or normalize-space(../../gmd:hierarchyLevel/gmd:MD_ScopeCode/@codeListValue) = '']| + //*[@gco:isoType='gmd:MD_DataIdentification' and ( + normalize-space(../../gmd:hierarchyLevel/gmd:MD_ScopeCode/@codeListValue) = 'series' + or normalize-space(../../gmd:hierarchyLevel/gmd:MD_ScopeCode/@codeListValue) = 'dataset' + or normalize-space(../../gmd:hierarchyLevel/gmd:MD_ScopeCode/@codeListValue) = '')]"> + <!-- resource language is only conditional for 'dataset' and 'series'. + --> + <sch:let name="resourceLanguage" value="string-join(gmd:language/gco:CharacterString|gmd:language/gmd:LanguageCode/@codeListValue, ', ')"/> + <sch:let name="euLanguage" value=" + not(gmd:language/@gco:nilReason='missing') and + geonet:contains-any-of($resourceLanguage, + ('eng', 'fre', 'ger', 'spa', 'dut', 'ita', 'cze', 'lav', 'dan', 'lit', 'mlt', + 'pol', 'est', 'por', 'fin', 'rum', 'slo', 'slv', 'gre', 'bul', + 'hun', 'swe', 'gle'))"/> + <sch:assert test="$euLanguage"> + <sch:value-of select="$loc/strings/alert.M55/div"/> + </sch:assert> + <sch:report test="$euLanguage"> + <sch:value-of select="$loc/strings/report.M55/div"/><sch:value-of select="$resourceLanguage"/> + </sch:report> + + + + + <!-- Topic category --> + <sch:let name="topic" value="gmd:topicCategory/gmd:MD_TopicCategoryCode"/> + <sch:let name="noTopic" value="not(gmd:topicCategory) or + gmd:topicCategory/gmd:MD_TopicCategoryCode/text() = ''"/> + <sch:assert test="not($noTopic)"> + <sch:value-of select="$loc/strings/alert.M39/div"/></sch:assert> + <sch:report test="not($noTopic)"> + <sch:value-of select="$loc/strings/report.M39/div"/><sch:value-of select="$topic"/></sch:report> + + + + + <!-- Unique identifier --> + <sch:let name="resourceIdentifier" value="gmd:citation/gmd:CI_Citation/gmd:identifier + and not(gmd:citation/gmd:CI_Citation/gmd:identifier[*/gmd:code/@gco:nilReason='missing'])"/> + <sch:let name="resourceIdentifier_code" value="gmd:citation/gmd:CI_Citation/gmd:identifier/*/gmd:code/*/text()"/> + <sch:let name="resourceIdentifier_codeSpace" value="gmd:citation/gmd:CI_Citation/gmd:identifier/*/gmd:codeSpace/*/text()"/> + + <sch:assert test="$resourceIdentifier"><sch:value-of select="$loc/strings/alert.M38/div"/></sch:assert> + <sch:report test="$resourceIdentifier_code"><sch:value-of select="$loc/strings/report.M38/div"/> + <sch:value-of select="$resourceIdentifier_code"/> + </sch:report> + <sch:report test="$resourceIdentifier_codeSpace"><sch:value-of select="$loc/strings/report.M38.codespace/div"/> + <sch:value-of select="$resourceIdentifier_codeSpace"/> + </sch:report> + </sch:rule> + </sch:pattern> + + + + <!-- Service only --> + <sch:pattern> + <sch:title>$loc/strings/serviceIdentification</sch:title> + + <!-- No operatesOn for services --> + <sch:rule context="//srv:SV_ServiceIdentification| + //*[@gco:isoType='srv:SV_ServiceIdentification']"> + <sch:let name="coupledResourceHref" value="string-join(srv:operatesOn/@xlink:href, ', ')"/> + <sch:let name="coupledResourceUUID" value="string-join(srv:operatesOn/@uuidref, ', ')"/> + <sch:let name="coupledResource" value="../../gmd:hierarchyLevel/gmd:MD_ScopeCode/@codeListValue='service' + and //srv:operatesOn"/> + + <!-- + "Conditional to services: Mandatory if linkage to + datasets on which the service operates are available." + TODO : maybe check if service couplingType=tight or serviceType=view ? + <sch:assert test="$coupledResource"> + <sch:value-of select="$loc/strings/alert.M51/div"/> + </sch:assert>--> + <sch:report test="$coupledResource and $coupledResourceHref!=''"> + <sch:value-of select="$loc/strings/report.M51/div"/><sch:value-of select="$coupledResourceHref"/> + </sch:report> + <sch:report test="$coupledResource and $coupledResourceUUID!=''"> + <sch:value-of select="$loc/strings/report.M51/div"/><sch:value-of select="$coupledResourceUUID"/> + </sch:report> + + <sch:let name="serviceType" value="srv:serviceType/gco:LocalName"/> + <sch:let name="noServiceType" value="geonet:contains-any-of(srv:serviceType/gco:LocalName, + ('view', 'discovery', 'download', 'transformation', 'invoke', 'other'))"/> + <sch:assert test="$noServiceType"> + <sch:value-of select="$loc/strings/alert.M60/div"/></sch:assert> + <sch:report test="$noServiceType"> + <sch:value-of select="$loc/strings/report.M60/div"/><sch:value-of select="$serviceType"/></sch:report> + </sch:rule> + </sch:pattern> + + + + <sch:pattern> + <sch:title>$loc/strings/theme</sch:title> + + <sch:rule context="//gmd:MD_DataIdentification| + //*[@gco:isoType='gmd:MD_DataIdentification']"> + <!-- Check that INSPIRE theme are available. + Use INSPIRE thesaurus available on SVN to check keywords in all EU languages. + --> + <sch:let name="thesaurusURL" value="concat('file:///', $thesaurusDir, '/external/thesauri/theme/inspire-theme.rdf')"/> + <sch:let name="inspire-thesaurus" value="document($thesaurusURL)"/> + <sch:let name="inspire-theme" value="$inspire-thesaurus//skos:Concept"/> + + <!-- Display error if INSPIRE Theme thesaurus is not available. --> + <sch:assert test="count($inspire-theme) > 0"> + INSPIRE Theme thesaurus not found (at <sch:value-of select="$thesaurusURL" />. Check installation in codelist/external/thesauri/theme. + Download thesaurus from https://geonetwork.svn.sourceforge.net/svnroot/geonetwork/utilities/gemet/thesauri/. + </sch:assert> + + + <sch:let name="thesaurus_name" value="gmd:descriptiveKeywords/*/gmd:thesaurusName/*/gmd:title/*/text()"/> + <sch:let name="thesaurus_date" value="gmd:descriptiveKeywords/*/gmd:thesaurusName/*/gmd:date/*/gmd:date/*/text()"/> + <sch:let name="thesaurus_dateType" value="gmd:descriptiveKeywords/*/gmd:thesaurusName/*/gmd:date/*/gmd:dateType/*/@codeListValue/text()"/> + <sch:let name="keyword" + value="gmd:descriptiveKeywords/*/gmd:keyword/gco:CharacterString| + gmd:descriptiveKeywords/*/gmd:keyword/gmx:Anchor"/> + <sch:let name="inspire-theme-found" + value="count($inspire-thesaurus//skos:Concept[skos:prefLabel = $keyword])"/> + <sch:assert test="$inspire-theme-found > 0"> + <sch:value-of select="$loc/strings/alert.M40/div"/> + </sch:assert> + <sch:report test="$inspire-theme-found > 0"> + <sch:value-of select="$inspire-theme-found"/> <sch:value-of select="$loc/strings/report.M40/div"/> + </sch:report> + <sch:report test="$thesaurus_name">Thesaurus: + <sch:value-of select="$thesaurus_name"/>, <sch:value-of select="$thesaurus_date"/> (<sch:value-of select="$thesaurus_dateType"/>) + </sch:report> + <!-- TODO : We should check GEMET Thesaurus reference and date is set. --> + </sch:rule> + + </sch:pattern> + + + <sch:pattern> + <sch:title>$loc/strings/serviceTaxonomy</sch:title> + + <sch:rule context="//srv:SV_ServiceIdentification|//*[@gco:isoType='srv:SV_ServiceIdentification']"> + <!-- Check that INSPIRE service taxonomy is available. + Use INSPIRE thesaurus available on SVN to check keywords in all EU languages. + --> + <sch:let name="inspire-thesaurus" value="document(concat('file:///', $thesaurusDir, '/external/thesauri/theme/inspire-service-taxonomy.rdf'))"/> + <sch:let name="inspire-st" value="$inspire-thesaurus//skos:Concept"/> + + <!-- Display error if INSPIRE thesaurus is not available. --> + <sch:assert test="count($inspire-st) > 0"> + INSPIRE service taxonomy thesaurus not found. Check installation in codelist/external/thesauri/theme. + Download thesaurus from https://geonetwork.svn.sourceforge.net/svnroot/geonetwork/utilities/gemet/thesauri/. + </sch:assert> + + + <sch:let name="keyword" + value="gmd:descriptiveKeywords/*/gmd:keyword/gco:CharacterString | gmd:descriptiveKeywords/*/gmd:keyword//gmd:LocalisedCharacterString | + gmd:descriptiveKeywords/*/gmd:keyword/gmx:Anchor"/> + <sch:let name="inspire-theme-found" + value="count($inspire-thesaurus//skos:Concept[skos:prefLabel = $keyword])"/> + <sch:assert test="$inspire-theme-found > 0"> + <sch:value-of select="$loc/strings/alert.M58/div"/> + </sch:assert> + <sch:report test="$inspire-theme-found > 0"> + <sch:value-of select="$inspire-theme-found"/> <sch:value-of select="$loc/strings/report.M58/div"/> + </sch:report> + + </sch:rule> + + + </sch:pattern> + + + + <sch:pattern> + <sch:title>$loc/strings/geo</sch:title> + + <sch:rule context="//gmd:MD_DataIdentification[ + normalize-space(../../gmd:hierarchyLevel/gmd:MD_ScopeCode/@codeListValue) = 'series' + or normalize-space(../../gmd:hierarchyLevel/gmd:MD_ScopeCode/@codeListValue) = 'dataset' + or normalize-space(../../gmd:hierarchyLevel/gmd:MD_ScopeCode/@codeListValue) = ''] + /gmd:extent/*/gmd:geographicElement/gmd:EX_GeographicBoundingBox + | + //*[@gco:isoType='gmd:MD_DataIdentification' and ( + normalize-space(../../gmd:hierarchyLevel/gmd:MD_ScopeCode/@codeListValue) = 'series' + or normalize-space(../../gmd:hierarchyLevel/gmd:MD_ScopeCode/@codeListValue) = 'dataset' + or normalize-space(../../gmd:hierarchyLevel/gmd:MD_ScopeCode/@codeListValue) = '')] + /gmd:extent/*/gmd:geographicElement/gmd:EX_GeographicBoundingBox + "> + + <sch:let name="west" value="number(gmd:westBoundLongitude/gco:Decimal/text())"/> + <sch:let name="east" value="number(gmd:eastBoundLongitude/gco:Decimal/text())"/> + <sch:let name="north" value="number(gmd:northBoundLatitude/gco:Decimal/text())"/> + <sch:let name="south" value="number(gmd:southBoundLatitude/gco:Decimal/text())"/> + + <!-- assertions and report --> + <sch:assert test="(-180.00 <= $west) and ( $west <= 180.00)"><sch:value-of select="$loc/strings/alert.M41.W/div"/></sch:assert> + <sch:report test="(-180.00 <= $west) and ( $west <= 180.00)"><sch:value-of select="$loc/strings/report.M41.W/div"/> + <sch:value-of select="$west"/> + </sch:report> + <sch:assert test="(-180.00 <= $east) and ($east <= 180.00)"><sch:value-of select="$loc/strings/alert.M41.E/div"/></sch:assert> + <sch:report test="(-180.00 <= $east) and ($east <= 180.00)"><sch:value-of select="$loc/strings/report.M41.E/div"/> + <sch:value-of select="$east"/> + </sch:report> + <sch:assert test="(-90.00 <= $south) and ($south <= $north)"><sch:value-of select="$loc/strings/alert.M41.S/div"/></sch:assert> + <sch:report test="(-90.00 <= $south) and ($south <= $north)"><sch:value-of select="$loc/strings/report.M41.S/div"/> + <sch:value-of select="$south"/> + </sch:report> + <sch:assert test="($south <= $north) and ($north <= 90.00)"><sch:value-of select="$loc/strings/alert.M41.N/div"/></sch:assert> + <sch:report test="($south <= $north) and ($north <= 90.00)"><sch:value-of select="$loc/strings/report.M41.N/div"/> + <sch:value-of select="$north"/> + </sch:report> + </sch:rule> + <sch:rule context="//srv:SV_ServiceIdentification[ + normalize-space(../../gmd:hierarchyLevel/gmd:MD_ScopeCode/@codeListValue) = 'service'] + /srv:extent/*/gmd:geographicElement/gmd:EX_GeographicBoundingBox"> + <sch:let name="west" value="number(gmd:westBoundLongitude/gco:Decimal/text())"/> + <sch:let name="east" value="number(gmd:eastBoundLongitude/gco:Decimal/text())"/> + <sch:let name="north" value="number(gmd:northBoundLatitude/gco:Decimal/text())"/> + <sch:let name="south" value="number(gmd:southBoundLatitude/gco:Decimal/text())"/> + <!-- report only but we should do assert if outOfBounds ? TODO --> + <sch:report test="(-180.00 <= $west) and ( $west <= 180.00)"><sch:value-of select="$loc/strings/report.M41.W/div"/> + <sch:value-of select="$west"/> + </sch:report> + <sch:report test="(-180.00 <= $east) and ($east <= 180.00)"><sch:value-of select="$loc/strings/report.M41.E/div"/> + <sch:value-of select="$east"/> + </sch:report> + <sch:report test="(-90.00 <= $south) and ($south <= $north)"><sch:value-of select="$loc/strings/report.M41.S/div"/> + <sch:value-of select="$south"/> + </sch:report> + <sch:report test="($south <= $north) and ($north <= 90.00)"><sch:value-of select="$loc/strings/report.M41.N/div"/> + <sch:value-of select="$north"/> + </sch:report> + </sch:rule> + </sch:pattern> + + + + <sch:pattern> + <sch:title>$loc/strings/temporal</sch:title> + <sch:rule context="//gmd:MD_DataIdentification| + //*[@gco:isoType='gmd:MD_DataIdentification']| + //srv:SV_ServiceIdentification| + //*[@gco:isoType='srv:SV_ServiceIdentification']"> + <sch:let name="temporalExtentBegin" + value="gmd:extent/*/gmd:temporalElement/*/gmd:extent/*/gml:beginPosition/text()"/> + <sch:let name="temporalExtentEnd" + value="gmd:extent/*/gmd:temporalElement/*/gmd:extent/*/gml:endPosition/text()"/> + <sch:let name="publicationDate" + value="gmd:citation/*/gmd:date[./*/gmd:dateType/*/@codeListValue='publication']/*/gmd:date/*"/> + <sch:let name="creationDate" + value="gmd:citation/*/gmd:date[./*/gmd:dateType/*/@codeListValue='creation']/*/gmd:date/*"/> + <sch:let name="no_creationDate" + value="count(gmd:citation/*/gmd:date[./*/gmd:dateType/*/@codeListValue='creation'])"/> + <sch:let name="revisionDate" + value="gmd:citation/*/gmd:date[./*/gmd:dateType/*/@codeListValue='revision']/*/gmd:date/*"/> + + + <sch:assert test="$no_creationDate <= 1"> + <sch:value-of select="$loc/strings/alert.M42.creation/div"/> + </sch:assert> + + <sch:assert test="$publicationDate or $creationDate or $revisionDate or $temporalExtentBegin or $temporalExtentEnd"> + <sch:value-of select="$loc/strings/alert.M42/div"/></sch:assert> + <sch:report test="$temporalExtentBegin"> + <sch:value-of select="$loc/strings/report.M42.begin/div"/> + <sch:value-of select="$temporalExtentBegin"/> + </sch:report> + <sch:report test="$temporalExtentEnd"> + <sch:value-of select="$loc/strings/report.M42.end/div"/> + <sch:value-of select="$temporalExtentEnd"/> + </sch:report> + <sch:report test="$publicationDate"> + <sch:value-of select="$loc/strings/report.M42.publication/div"/> + <sch:value-of select="$publicationDate"/> + </sch:report> + <sch:report test="$revisionDate"> + <sch:value-of select="$loc/strings/report.M42.revision/div"/> + <sch:value-of select="$revisionDate"/> + </sch:report> + <sch:report test="$creationDate"> + <sch:value-of select="$loc/strings/report.M42.creation/div"/> + <sch:value-of select="$creationDate"/> + </sch:report> + </sch:rule> + </sch:pattern> + + + + <sch:pattern> + <sch:title>$loc/strings/quality</sch:title> + <sch:rule context="//gmd:DQ_DataQuality[../../gmd:identificationInfo/gmd:MD_DataIdentification + or ../../gmd:identificationInfo/*/@gco:isoType = 'gmd:MD_DataIdentification']"> + <sch:let name="lineage" value="not(gmd:lineage/gmd:LI_Lineage/gmd:statement) or (gmd:lineage//gmd:statement/@gco:nilReason)"/> + <sch:assert test="not($lineage)" + >$loc/strings/alert.M43/div</sch:assert> + <sch:report test="not($lineage)" + >$loc/strings/report.M43/div</sch:report> + </sch:rule> + + <sch:rule context="//gmd:MD_DataIdentification/gmd:spatialResolution|//*[@gco:isoType='gmd:MD_DataIdentification']/gmd:spatialResolution"> + <sch:assert + test="*/gmd:equivalentScale or */gmd:distance" + >$loc/strings/alert.M56/div</sch:assert> + <sch:report + test="*/gmd:equivalentScale or */gmd:distance" + >$loc/strings/report.M56/div</sch:report> + </sch:rule> + </sch:pattern> + + + <!-- Make a non blocker conformity check operation - no assertion here --> + <sch:pattern> + <sch:title>$loc/strings/conformity</sch:title> + <!-- Search for on quality report result with status ... We don't really know if it's an INSPIRE conformity report or not. --> + <sch:rule context="/gmd:MD_Metadata"> + <sch:let name="degree" value="count(gmd:dataQualityInfo/*/gmd:report/*/gmd:result/*/gmd:pass)"/> + <sch:assert test="$degree"> + <sch:value-of select="$loc/strings/alert.M44.nonev/div"/><sch:value-of select="$degree>0"/> + </sch:assert> + <sch:report test="$degree"> + <sch:value-of select="$loc/strings/report.M44.nonev/div"/> + </sch:report> + </sch:rule> + + <!-- Check specification names and status --> + <sch:rule context="//gmd:dataQualityInfo/*/gmd:report/*/gmd:result/*"> + <sch:let name="degree" value="gmd:pass/*/text()"/> + <sch:let name="specification_title" value="gmd:specification/*/gmd:title/*/text()"/> + <sch:let name="specification_date" value="gmd:specification/*/gmd:date/*/gmd:date/*/text()"/> + <sch:let name="specification_dateType" value="normalize-space(gmd:specification/*/gmd:date/*/gmd:dateType/*/@codeListValue)"/> + + <sch:report test="$specification_title"><sch:value-of select="$loc/strings/report.M44.spec/div"/> + <sch:value-of select="$specification_title"/>, (<sch:value-of select="$specification_date"/>, <sch:value-of select="$specification_dateType"/>) + </sch:report> + <sch:report test="$degree"> + <sch:value-of select="$loc/strings/report.M44.degree/div"/> + <sch:value-of select="$degree"/> + </sch:report> + </sch:rule> + </sch:pattern> + + + + + <sch:pattern> + <sch:title>$loc/strings/constraints</sch:title> + <sch:rule context="//gmd:MD_DataIdentification| + //*[@gco:isoType='gmd:MD_DataIdentification']| + //srv:SV_ServiceIdentification| + //*[@gco:isoType='srv:SV_ServiceIdentification']"> + <sch:assert test="count(gmd:resourceConstraints/*) > 0"> + <sch:value-of select="$loc/strings/alert.M45.rc/div"/> + </sch:assert> + + <!-- cardinality of accessconstraints is [1..n] --> + <sch:let name="accessConstraints_count" value="count(gmd:resourceConstraints/*/gmd:accessConstraints[*/@codeListValue != ''])"/> + <sch:let name="accessConstraints_found" value="$accessConstraints_count > 0"/> + + <!-- If the value of accessConstraints is otherRestrictions + there shall be instances of otherConstraints expressing + limitations on public access. This is because the + limitations on public access required by the INSPIRE + Directive may need the use of free text, and + otherConstraints is the only element allowing this data + type + --> + <sch:let name="accessConstraints" + value=" + count(gmd:resourceConstraints/*/gmd:accessConstraints/gmd:MD_RestrictionCode[@codeListValue='otherRestrictions'])>0 + and ( + not(gmd:resourceConstraints/*/gmd:otherConstraints) + or gmd:resourceConstraints/*/gmd:otherConstraints[@gco:nilReason='missing'] + )"/> + <sch:let name="otherConstraints" + value=" + gmd:resourceConstraints/*/gmd:otherConstraints and + gmd:resourceConstraints/*/gmd:otherConstraints/gco:CharacterString!='' and + count(gmd:resourceConstraints/*/gmd:accessConstraints/gmd:MD_RestrictionCode[@codeListValue='otherRestrictions'])=0 + "/> + <sch:let name="otherConstraintInfo" + value="gmd:resourceConstraints/*/gmd:otherConstraints/gco:CharacterString"/> + + <sch:assert test="$accessConstraints_found"> + <sch:value-of select="$loc/strings/alert.M45.ca/div"/> + </sch:assert> + <sch:report test="$accessConstraints_found"> + <sch:value-of select="$accessConstraints_count"/> <sch:value-of select="$loc/strings/report.M45.ca/div"/> + </sch:report> + <sch:assert test="not($accessConstraints)"> + <sch:value-of select="$loc/strings/alert.M45.or/div"/> + </sch:assert> + <sch:assert test="not($otherConstraints)"> + <sch:value-of select="$loc/strings/alert.M45.or/div"/> + </sch:assert> + <sch:report test="$otherConstraintInfo!='' and not($accessConstraints) and not($otherConstraints)"> + <sch:value-of select="$loc/strings/report.M45.or/div"/> + <sch:value-of select="$otherConstraintInfo"/> + </sch:report> + + </sch:rule> + + + + <sch:rule context="//gmd:MD_DataIdentification/gmd:resourceConstraints/*| + //*[@gco:isoType='gmd:MD_DataIdentification']/gmd:resourceConstraints/*| + //srv:SV_ServiceIdentification/gmd:resourceConstraints/*| + //*[@gco:isoType='srv:SV_ServiceIdentification']/gmd:resourceConstraints/*"> + <sch:let name="accessConstraints" value="string-join(gmd:accessConstraints/*/@codeListValue, ', ')"/> + <sch:let name="classification" value="string-join(gmd:classification/*/@codeListValue, ', ')"/> + <sch:let name="otherConstraints" value="gmd:otherConstraints/gco:CharacterString/text()"/> + <sch:report test="$accessConstraints!=''"> + <sch:value-of select="$loc/strings/report.M45.ac/div"/> + <sch:value-of select="$accessConstraints"/> + </sch:report> + <sch:report test="$classification!=''"> + <sch:value-of select="$loc/strings/report.M45.class/div"/> + <sch:value-of select="$classification"/> + </sch:report> + </sch:rule> + </sch:pattern> + + <sch:pattern> + <sch:title>$loc/strings/constraints</sch:title> + <sch:rule context="//gmd:MD_DataIdentification| + //*[@gco:isoType='gmd:MD_DataIdentification']| + //srv:SV_ServiceIdentification| + //*[@gco:isoType='srv:SV_ServiceIdentification']"> + <sch:let name="useLimitation" value="gmd:resourceConstraints/*/gmd:useLimitation/*/text()"/> + <sch:let name="useLimitation_count" value="count(gmd:resourceConstraints/*/gmd:useLimitation/*/text())"/> + <sch:assert test="$useLimitation_count"> + <sch:value-of select="$loc/strings/alert.M45.ul/div"/> + </sch:assert> + <sch:report test="$useLimitation_count"> + <sch:value-of select="$loc/strings/report.M45.ul/div"/> + <sch:value-of select="$useLimitation"/> + </sch:report> + </sch:rule> + </sch:pattern> + + <sch:pattern> + <sch:title>$loc/strings/org</sch:title> + + <sch:rule context="//gmd:identificationInfo"> + <sch:let name="missing" value="not(*/gmd:pointOfContact)"/> + <sch:assert + test="not($missing)" + ><sch:value-of select="$loc/strings/alert.M47/div"/></sch:assert> + <sch:report + test="not($missing)" + ><sch:value-of select="$loc/strings/report.M47/div"/> + </sch:report> + </sch:rule> + + <sch:rule context="//gmd:identificationInfo/*/gmd:pointOfContact + |//*[@gco:isoType='gmd:MD_DataIdentification']/gmd:pointOfContact + |//*[@gco:isoType='srv:SV_ServiceIdentification']/gmd:pointOfContact"> + <sch:let name="missing" value="not(*/gmd:organisationName) + or (*/gmd:organisationName/@gco:nilReason) + or not(*/gmd:contactInfo/*/gmd:address/*/gmd:electronicMailAddress) + or (*/gmd:contactInfo/*/gmd:address/*/gmd:electronicMailAddress/@gco:nilReason)"/> + <sch:let name="organisationName" value="*/gmd:organisationName/*/text()"/> + <sch:let name="role" value="normalize-space(*/gmd:role/*/@codeListValue)"/> + <sch:let name="emptyRole" value="$role=''"/> + <sch:let name="emailAddress" value="*/gmd:contactInfo/*/gmd:address/*/gmd:electronicMailAddress/*/text()"/> + + <sch:assert + test="not($missing)" + ><sch:value-of select="$loc/strings/alert.M47.info/div"/></sch:assert> + <sch:assert + test="not($emptyRole)" + ><sch:value-of select="$loc/strings/alert.M48.role/div"/></sch:assert> + <sch:report + test="not($missing)" + ><sch:value-of select="$loc/strings/report.M47.info/div"/> + <sch:value-of select="$organisationName"/> + (<sch:value-of select="$role"/>) + </sch:report> + </sch:rule> + + + </sch:pattern> + + + <sch:pattern> + <sch:title>$loc/strings/metadata</sch:title> + <sch:rule context="//gmd:MD_Metadata"> + <!-- Date stamp --> + <sch:let name="dateStamp" value="gmd:dateStamp/*/text()"/> + <sch:assert test="$dateStamp"> + <sch:value-of select="$loc/strings/alert.M50/div"/> + </sch:assert> + <sch:report test="$dateStamp"> + <sch:value-of select="$loc/strings/report.M50/div"/> + <sch:value-of select="$dateStamp"/> + </sch:report> + + + <!-- Language --> + <sch:let name="language" value="gmd:language/gco:CharacterString|gmd:language/gmd:LanguageCode/@codeListValue"/> + <sch:let name="language_present" value="geonet:contains-any-of($language, + ('eng', 'fre', 'ger', 'spa', 'dut', 'ita', 'cze', 'lav', 'dan', 'lit', 'mlt', + 'pol', 'est', 'por', 'fin', 'rum', 'slo', 'slv', 'gre', 'bul', + 'hun', 'swe', 'gle'))"/> + + <sch:assert test="$language_present"> + <sch:value-of select="$loc/strings/alert.M49/div"/> + </sch:assert> + <sch:report test="$language_present"> + <sch:value-of select="$loc/strings/report.M49/div"/> + <sch:value-of select="normalize-space($language)"/> + </sch:report> + + + <!-- Contact --> + <sch:let name="missing" value="not(gmd:contact)"/> + <sch:assert + test="not($missing)" + ><sch:value-of select="$loc/strings/alert.M48/div"/></sch:assert> + <sch:report + test="not($missing)" + ><sch:value-of select="$loc/strings/report.M48/div"/> + </sch:report> + </sch:rule> + + <sch:rule context="//gmd:MD_Metadata/gmd:contact"> + <sch:let name="missing" value="not(gmd:CI_ResponsibleParty/gmd:organisationName) + or (gmd:CI_ResponsibleParty/gmd:organisationName/@gco:nilReason) + or not(gmd:CI_ResponsibleParty/gmd:contactInfo/*/gmd:address/*/gmd:electronicMailAddress) + or (gmd:CI_ResponsibleParty/gmd:contactInfo/*/gmd:address/*/gmd:electronicMailAddress/@gco:nilReason)"/> + <sch:let name="organisationName" value="gmd:CI_ResponsibleParty/gmd:organisationName/*/text()"/> + <!-- + 2.11.1 "The role of the responsible party serving as a metadata + point of contact is out of scope of the INSPIRE + Implementing Rules, but this property is mandated by ISO + 19115. The default value is pointOfContact." + JRC schematron 1.0 validate only if role=pointOfContact + --> + <sch:let name="role" value="normalize-space(gmd:CI_ResponsibleParty/gmd:role/*/@codeListValue)"/> + <sch:let name="emptyRole" value="$role=''"/> + <sch:let name="emailAddress" value="gmd:CI_ResponsibleParty/gmd:contactInfo/*/gmd:address/*/gmd:electronicMailAddress/*/text()"/> + + <sch:assert + test="not($emptyRole)" + ><sch:value-of select="$loc/strings/alert.M48.role/div"/></sch:assert> + <sch:assert + test="not($missing)" + ><sch:value-of select="$loc/strings/alert.M48.info/div"/></sch:assert> + <sch:report + test="not($missing)" + ><sch:value-of select="$loc/strings/report.M48.info/div"/> + <sch:value-of select="$organisationName"/> + (<sch:value-of select="$role"/>) + </sch:report> + </sch:rule> + + </sch:pattern> + + <!-- INSPIRE metadata rules / END --> + +</sch:schema> diff --git a/src/main/webapp/WEB-INF/data/config/schema_plugins/iso19139/schematron/schematron-rules-inspire.xsl b/src/main/webapp/WEB-INF/data/config/schema_plugins/iso19139/schematron/schematron-rules-inspire.xsl new file mode 100644 index 0000000..7999b60 --- /dev/null +++ b/src/main/webapp/WEB-INF/data/config/schema_plugins/iso19139/schematron/schematron-rules-inspire.xsl @@ -0,0 +1,2253 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<xsl:stylesheet xmlns:xhtml="http://www.w3.org/1999/xhtml" + xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:xs="http://www.w3.org/2001/XMLSchema" + xmlns:schold="http://www.ascc.net/xml/schematron" + xmlns:iso="http://purl.oclc.org/dsdl/schematron" + xmlns:gml="http://www.opengis.net/gml" + xmlns:gmd="http://www.isotc211.org/2005/gmd" + xmlns:gmx="http://www.isotc211.org/2005/gmx" + xmlns:srv="http://www.isotc211.org/2005/srv" + xmlns:gco="http://www.isotc211.org/2005/gco" + xmlns:geonet="http://www.fao.org/geonetwork" + xmlns:skos="http://www.w3.org/2004/02/skos/core#" + xmlns:xlink="http://www.w3.org/1999/xlink" + version="2.0"><!--Implementers: please note that overriding process-prolog or process-root is + the preferred method for meta-stylesheets to use where possible. + --> +<xsl:param name="archiveDirParameter"/> + <xsl:param name="archiveNameParameter"/> + <xsl:param name="fileNameParameter"/> + <xsl:param name="fileDirParameter"/> + <xsl:variable name="document-uri"> + <xsl:value-of select="document-uri(/)"/> + </xsl:variable> + + <!--PHASES--> + + +<!--PROLOG--> +<xsl:output xmlns:svrl="http://purl.oclc.org/dsdl/svrl" method="xml" + omit-xml-declaration="no" + standalone="yes" + indent="yes"/> + <xsl:include xmlns:svrl="http://purl.oclc.org/dsdl/svrl" href="../../../xsl/utils-fn.xsl"/> + <xsl:param xmlns:svrl="http://purl.oclc.org/dsdl/svrl" name="lang"/> + <xsl:param xmlns:svrl="http://purl.oclc.org/dsdl/svrl" name="thesaurusDir"/> + <xsl:param xmlns:svrl="http://purl.oclc.org/dsdl/svrl" name="rule"/> + <xsl:variable xmlns:svrl="http://purl.oclc.org/dsdl/svrl" name="loc" + select="document(concat('../loc/', $lang, '/', $rule, '.xml'))"/> + + <!--XSD TYPES FOR XSLT2--> + + +<!--KEYS AND FUNCTIONS--> + + +<!--DEFAULT RULES--> + + +<!--MODE: SCHEMATRON-SELECT-FULL-PATH--> +<!--This mode can be used to generate an ugly though full XPath for locators + --> +<xsl:template match="*" mode="schematron-select-full-path"> + <xsl:apply-templates select="." mode="schematron-get-full-path"/> + </xsl:template> + + <!--MODE: SCHEMATRON-FULL-PATH--> +<!--This mode can be used to generate an ugly though full XPath for locators + --> +<xsl:template match="*" mode="schematron-get-full-path"> + <xsl:apply-templates select="parent::*" mode="schematron-get-full-path"/> + <xsl:text>/</xsl:text> + <xsl:choose> + <xsl:when test="namespace-uri()=''"> + <xsl:value-of select="name()"/> + </xsl:when> + <xsl:otherwise> + <xsl:text>*:</xsl:text> + <xsl:value-of select="local-name()"/> + <xsl:text>[namespace-uri()='</xsl:text> + <xsl:value-of select="namespace-uri()"/> + <xsl:text>']</xsl:text> + </xsl:otherwise> + </xsl:choose> + <xsl:variable name="preceding" + select="count(preceding-sibling::*[local-name()=local-name(current()) and namespace-uri() = namespace-uri(current())])"/> + <xsl:text>[</xsl:text> + <xsl:value-of select="1+ $preceding"/> + <xsl:text>]</xsl:text> + </xsl:template> + <xsl:template match="@*" mode="schematron-get-full-path"> + <xsl:apply-templates select="parent::*" mode="schematron-get-full-path"/> + <xsl:text>/</xsl:text> + <xsl:choose> + <xsl:when test="namespace-uri()=''">@ + <xsl:value-of select="name()"/> + </xsl:when> + <xsl:otherwise> + <xsl:text>@*[local-name()='</xsl:text> + <xsl:value-of select="local-name()"/> + <xsl:text>' and namespace-uri()='</xsl:text> + <xsl:value-of select="namespace-uri()"/> + <xsl:text>']</xsl:text> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <!--MODE: SCHEMATRON-FULL-PATH-2--> +<!--This mode can be used to generate prefixed XPath for humans--> +<xsl:template match="node() | @*" mode="schematron-get-full-path-2"> + <xsl:for-each select="ancestor-or-self::*"> + <xsl:text>/</xsl:text> + <xsl:value-of select="name(.)"/> + <xsl:if test="preceding-sibling::*[name(.)=name(current())]"> + <xsl:text>[</xsl:text> + <xsl:value-of select="count(preceding-sibling::*[name(.)=name(current())])+1"/> + <xsl:text>]</xsl:text> + </xsl:if> + </xsl:for-each> + <xsl:if test="not(self::*)"> + <xsl:text/>/@ + <xsl:value-of select="name(.)"/> + </xsl:if> + </xsl:template> + <!--MODE: SCHEMATRON-FULL-PATH-3--> +<!--This mode can be used to generate prefixed XPath for humans + (Top-level element has index) + --> +<xsl:template match="node() | @*" mode="schematron-get-full-path-3"> + <xsl:for-each select="ancestor-or-self::*"> + <xsl:text>/</xsl:text> + <xsl:value-of select="name(.)"/> + <xsl:if test="parent::*"> + <xsl:text>[</xsl:text> + <xsl:value-of select="count(preceding-sibling::*[name(.)=name(current())])+1"/> + <xsl:text>]</xsl:text> + </xsl:if> + </xsl:for-each> + <xsl:if test="not(self::*)"> + <xsl:text/>/@ + <xsl:value-of select="name(.)"/> + </xsl:if> + </xsl:template> + + <!--MODE: GENERATE-ID-FROM-PATH--> +<xsl:template match="/" mode="generate-id-from-path"/> + <xsl:template match="text()" mode="generate-id-from-path"> + <xsl:apply-templates select="parent::*" mode="generate-id-from-path"/> + <xsl:value-of select="concat('.text-', 1+count(preceding-sibling::text()), '-')"/> + </xsl:template> + <xsl:template match="comment()" mode="generate-id-from-path"> + <xsl:apply-templates select="parent::*" mode="generate-id-from-path"/> + <xsl:value-of select="concat('.comment-', 1+count(preceding-sibling::comment()), '-')"/> + </xsl:template> + <xsl:template match="processing-instruction()" mode="generate-id-from-path"> + <xsl:apply-templates select="parent::*" mode="generate-id-from-path"/> + <xsl:value-of select="concat('.processing-instruction-', 1+count(preceding-sibling::processing-instruction()), '-')"/> + </xsl:template> + <xsl:template match="@*" mode="generate-id-from-path"> + <xsl:apply-templates select="parent::*" mode="generate-id-from-path"/> + <xsl:value-of select="concat('.@', name())"/> + </xsl:template> + <xsl:template match="*" mode="generate-id-from-path" priority="-0.5"> + <xsl:apply-templates select="parent::*" mode="generate-id-from-path"/> + <xsl:text>.</xsl:text> + <xsl:value-of select="concat('.',name(),'-',1+count(preceding-sibling::*[name()=name(current())]),'-')"/> + </xsl:template> + + <!--MODE: GENERATE-ID-2--> +<xsl:template match="/" mode="generate-id-2">U</xsl:template> + <xsl:template match="*" mode="generate-id-2" priority="2"> + <xsl:text>U</xsl:text> + <xsl:number level="multiple" count="*"/> + </xsl:template> + <xsl:template match="node()" mode="generate-id-2"> + <xsl:text>U.</xsl:text> + <xsl:number level="multiple" count="*"/> + <xsl:text>n</xsl:text> + <xsl:number count="node()"/> + </xsl:template> + <xsl:template match="@*" mode="generate-id-2"> + <xsl:text>U.</xsl:text> + <xsl:number level="multiple" count="*"/> + <xsl:text>_</xsl:text> + <xsl:value-of select="string-length(local-name(.))"/> + <xsl:text>_</xsl:text> + <xsl:value-of select="translate(name(),':','.')"/> + </xsl:template> + <!--Strip characters--><xsl:template match="text()" priority="-1"/> + + <!--SCHEMA SETUP--> +<xsl:template match="/"> + <svrl:schematron-output xmlns:svrl="http://purl.oclc.org/dsdl/svrl" + title="INSPIRE metadata implementing rule validation" + schemaVersion=""> + <xsl:comment> + <xsl:value-of select="$archiveDirParameter"/> +  + <xsl:value-of select="$archiveNameParameter"/> +  + <xsl:value-of select="$fileNameParameter"/> +  + <xsl:value-of select="$fileDirParameter"/> + </xsl:comment> + <svrl:ns-prefix-in-attribute-values uri="http://www.opengis.net/gml" prefix="gml"/> + <svrl:ns-prefix-in-attribute-values uri="http://www.isotc211.org/2005/gmd" prefix="gmd"/> + <svrl:ns-prefix-in-attribute-values uri="http://www.isotc211.org/2005/gmx" prefix="gmx"/> + <svrl:ns-prefix-in-attribute-values uri="http://www.isotc211.org/2005/srv" prefix="srv"/> + <svrl:ns-prefix-in-attribute-values uri="http://www.isotc211.org/2005/gco" prefix="gco"/> + <svrl:ns-prefix-in-attribute-values uri="http://www.fao.org/geonetwork" prefix="geonet"/> + <svrl:ns-prefix-in-attribute-values uri="http://www.w3.org/2004/02/skos/core#" prefix="skos"/> + <svrl:ns-prefix-in-attribute-values uri="http://www.w3.org/1999/xlink" prefix="xlink"/> + <svrl:active-pattern> + <xsl:attribute name="document"> + <xsl:value-of select="document-uri(/)"/> + </xsl:attribute> + <xsl:attribute name="name"> + <xsl:value-of select="$loc/strings/identification"/> + </xsl:attribute> + <xsl:apply-templates/> + </svrl:active-pattern> + <xsl:apply-templates select="/" mode="M9"/> + <svrl:active-pattern> + <xsl:attribute name="document"> + <xsl:value-of select="document-uri(/)"/> + </xsl:attribute> + <xsl:attribute name="name"> + <xsl:value-of select="$loc/strings/dataIdentification"/> + </xsl:attribute> + <xsl:apply-templates/> + </svrl:active-pattern> + <xsl:apply-templates select="/" mode="M10"/> + <svrl:active-pattern> + <xsl:attribute name="document"> + <xsl:value-of select="document-uri(/)"/> + </xsl:attribute> + <xsl:attribute name="name"> + <xsl:value-of select="$loc/strings/serviceIdentification"/> + </xsl:attribute> + <xsl:apply-templates/> + </svrl:active-pattern> + <xsl:apply-templates select="/" mode="M11"/> + <svrl:active-pattern> + <xsl:attribute name="document"> + <xsl:value-of select="document-uri(/)"/> + </xsl:attribute> + <xsl:attribute name="name"> + <xsl:value-of select="$loc/strings/theme"/> + </xsl:attribute> + <xsl:apply-templates/> + </svrl:active-pattern> + <xsl:apply-templates select="/" mode="M12"/> + <svrl:active-pattern> + <xsl:attribute name="document"> + <xsl:value-of select="document-uri(/)"/> + </xsl:attribute> + <xsl:attribute name="name"> + <xsl:value-of select="$loc/strings/serviceTaxonomy"/> + </xsl:attribute> + <xsl:apply-templates/> + </svrl:active-pattern> + <xsl:apply-templates select="/" mode="M13"/> + <svrl:active-pattern> + <xsl:attribute name="document"> + <xsl:value-of select="document-uri(/)"/> + </xsl:attribute> + <xsl:attribute name="name"> + <xsl:value-of select="$loc/strings/geo"/> + </xsl:attribute> + <xsl:apply-templates/> + </svrl:active-pattern> + <xsl:apply-templates select="/" mode="M14"/> + <svrl:active-pattern> + <xsl:attribute name="document"> + <xsl:value-of select="document-uri(/)"/> + </xsl:attribute> + <xsl:attribute name="name"> + <xsl:value-of select="$loc/strings/temporal"/> + </xsl:attribute> + <xsl:apply-templates/> + </svrl:active-pattern> + <xsl:apply-templates select="/" mode="M15"/> + <svrl:active-pattern> + <xsl:attribute name="document"> + <xsl:value-of select="document-uri(/)"/> + </xsl:attribute> + <xsl:attribute name="name"> + <xsl:value-of select="$loc/strings/quality"/> + </xsl:attribute> + <xsl:apply-templates/> + </svrl:active-pattern> + <xsl:apply-templates select="/" mode="M16"/> + <svrl:active-pattern> + <xsl:attribute name="document"> + <xsl:value-of select="document-uri(/)"/> + </xsl:attribute> + <xsl:attribute name="name"> + <xsl:value-of select="$loc/strings/conformity"/> + </xsl:attribute> + <xsl:apply-templates/> + </svrl:active-pattern> + <xsl:apply-templates select="/" mode="M17"/> + <svrl:active-pattern> + <xsl:attribute name="document"> + <xsl:value-of select="document-uri(/)"/> + </xsl:attribute> + <xsl:attribute name="name"> + <xsl:value-of select="$loc/strings/constraints"/> + </xsl:attribute> + <xsl:apply-templates/> + </svrl:active-pattern> + <xsl:apply-templates select="/" mode="M18"/> + <svrl:active-pattern> + <xsl:attribute name="document"> + <xsl:value-of select="document-uri(/)"/> + </xsl:attribute> + <xsl:attribute name="name"> + <xsl:value-of select="$loc/strings/constraints"/> + </xsl:attribute> + <xsl:apply-templates/> + </svrl:active-pattern> + <xsl:apply-templates select="/" mode="M19"/> + <svrl:active-pattern> + <xsl:attribute name="document"> + <xsl:value-of select="document-uri(/)"/> + </xsl:attribute> + <xsl:attribute name="name"> + <xsl:value-of select="$loc/strings/org"/> + </xsl:attribute> + <xsl:apply-templates/> + </svrl:active-pattern> + <xsl:apply-templates select="/" mode="M20"/> + <svrl:active-pattern> + <xsl:attribute name="document"> + <xsl:value-of select="document-uri(/)"/> + </xsl:attribute> + <xsl:attribute name="name"> + <xsl:value-of select="$loc/strings/metadata"/> + </xsl:attribute> + <xsl:apply-templates/> + </svrl:active-pattern> + <xsl:apply-templates select="/" mode="M21"/> + </svrl:schematron-output> + </xsl:template> + + <!--SCHEMATRON PATTERNS--> +<svrl:text xmlns:svrl="http://purl.oclc.org/dsdl/svrl">INSPIRE metadata implementing rule validation</svrl:text> + + <!--PATTERN + $loc/strings/identification--> +<svrl:text xmlns:svrl="http://purl.oclc.org/dsdl/svrl"> + <xsl:copy-of select="$loc/strings/identification"/> + </svrl:text> + + <!--RULE + --> +<xsl:template match="//gmd:identificationInfo/*/gmd:citation/gmd:CI_Citation" priority="1003" + mode="M9"> + <svrl:fired-rule xmlns:svrl="http://purl.oclc.org/dsdl/svrl" + context="//gmd:identificationInfo/*/gmd:citation/gmd:CI_Citation"/> + <xsl:variable name="noResourceTitle" + select="not(gmd:title) or gmd:title/@gco:nilReason='missing'"/> + <xsl:variable name="resourceTitle" select="gmd:title/*/text()"/> + + <!--ASSERT + --> +<xsl:choose> + <xsl:when test="not($noResourceTitle)"/> + <xsl:otherwise> + <svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="not($noResourceTitle)"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$loc/strings/alert.M35/div"/> + <xsl:text/> + </svrl:text> + </svrl:failed-assert> + </xsl:otherwise> + </xsl:choose> + + <!--REPORT + --> +<xsl:if test="not($noResourceTitle)"> + <svrl:successful-report xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="not($noResourceTitle)"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$loc/strings/report.M35/div"/> + <xsl:text/> + <xsl:text/> + <xsl:copy-of select="$resourceTitle"/> + <xsl:text/> + </svrl:text> + </svrl:successful-report> + </xsl:if> + <xsl:apply-templates select="*" mode="M9"/> + </xsl:template> + + <!--RULE + --> +<xsl:template match="//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/gmd:CI_OnlineResource" + priority="1002" + mode="M9"> + <svrl:fired-rule xmlns:svrl="http://purl.oclc.org/dsdl/svrl" + context="//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/gmd:CI_OnlineResource"/> + <xsl:variable name="resourceLocator" select="gmd:linkage/*/text()"/> + <xsl:variable name="noResourceLocator" + select="normalize-space(gmd:linkage/gmd:URL)='' or not(gmd:linkage)"/> + + <!--ASSERT + --> +<xsl:choose> + <xsl:when test="not($noResourceLocator)"/> + <xsl:otherwise> + <svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="not($noResourceLocator)"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$loc/strings/alert.M52/div"/> + <xsl:text/> + </svrl:text> + </svrl:failed-assert> + </xsl:otherwise> + </xsl:choose> + + <!--REPORT + --> +<xsl:if test="not($noResourceLocator)"> + <svrl:successful-report xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="not($noResourceLocator)"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$loc/strings/report.M52/div"/> + <xsl:text/> + <xsl:text/> + <xsl:copy-of select="$resourceLocator"/> + <xsl:text/> + </svrl:text> + </svrl:successful-report> + </xsl:if> + <xsl:apply-templates select="*" mode="M9"/> + </xsl:template> + + <!--RULE + --> +<xsl:template match="//gmd:MD_Metadata" priority="1001" mode="M9"> + <svrl:fired-rule xmlns:svrl="http://purl.oclc.org/dsdl/svrl" context="//gmd:MD_Metadata"/> + <xsl:variable name="resourceType_present" + select="gmd:hierarchyLevel/*/@codeListValue='dataset' or gmd:hierarchyLevel/*/@codeListValue='series' or gmd:hierarchyLevel/*/@codeListValue='service'"/> + <xsl:variable name="resourceType" + select="string-join(gmd:hierarchyLevel/*/@codeListValue, ',')"/> + + <!--ASSERT + --> +<xsl:choose> + <xsl:when test="$resourceType_present"/> + <xsl:otherwise> + <svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="$resourceType_present"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$loc/strings/alert.M37/div"/> + <xsl:text/> + </svrl:text> + </svrl:failed-assert> + </xsl:otherwise> + </xsl:choose> + + <!--REPORT + --> +<xsl:if test="$resourceType_present"> + <svrl:successful-report xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="$resourceType_present"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$loc/strings/report.M37/div"/> + <xsl:text/> + <xsl:text/> + <xsl:copy-of select="$resourceType"/> + <xsl:text/> + </svrl:text> + </svrl:successful-report> + </xsl:if> + <xsl:apply-templates select="*" mode="M9"/> + </xsl:template> + + <!--RULE + --> +<xsl:template match="//gmd:MD_DataIdentification| //*[@gco:isoType='gmd:MD_DataIdentification']| //srv:SV_ServiceIdentification| //*[@gco:isoType='srv:SV_ServiceIdentification']" + priority="1000" + mode="M9"> + <svrl:fired-rule xmlns:svrl="http://purl.oclc.org/dsdl/svrl" + context="//gmd:MD_DataIdentification| //*[@gco:isoType='gmd:MD_DataIdentification']| //srv:SV_ServiceIdentification| //*[@gco:isoType='srv:SV_ServiceIdentification']"/> + <xsl:variable name="resourceAbstract" select="gmd:abstract/*/text()"/> + <xsl:variable name="noResourceAbstract" + select="not(gmd:abstract) or gmd:abstract/@gco:nilReason='missing'"/> + + <!--ASSERT + --> +<xsl:choose> + <xsl:when test="not($noResourceAbstract)"/> + <xsl:otherwise> + <svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="not($noResourceAbstract)"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$loc/strings/alert.M36/div"/> + <xsl:text/> + </svrl:text> + </svrl:failed-assert> + </xsl:otherwise> + </xsl:choose> + + <!--REPORT + --> +<xsl:if test="not($noResourceAbstract)"> + <svrl:successful-report xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="not($noResourceAbstract)"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$loc/strings/report.M36/div"/> + <xsl:text/> + <xsl:text/> + <xsl:copy-of select="$resourceAbstract"/> + <xsl:text/> + </svrl:text> + </svrl:successful-report> + </xsl:if> + <xsl:apply-templates select="*" mode="M9"/> + </xsl:template> + <xsl:template match="text()" priority="-1" mode="M9"/> + <xsl:template match="@*|node()" priority="-2" mode="M9"> + <xsl:apply-templates select="*" mode="M9"/> + </xsl:template> + + <!--PATTERN + $loc/strings/dataIdentification--> +<svrl:text xmlns:svrl="http://purl.oclc.org/dsdl/svrl"> + <xsl:copy-of select="$loc/strings/dataIdentification"/> + </svrl:text> + + <!--RULE + --> +<xsl:template match="//gmd:MD_DataIdentification[ normalize-space(../../gmd:hierarchyLevel/gmd:MD_ScopeCode/@codeListValue) = 'series' or normalize-space(../../gmd:hierarchyLevel/gmd:MD_ScopeCode/@codeListValue) = 'dataset' or normalize-space(../../gmd:hierarchyLevel/gmd:MD_ScopeCode/@codeListValue) = '']| //*[@gco:isoType='gmd:MD_DataIdentification' and ( normalize-space(../../gmd:hierarchyLevel/gmd:MD_ScopeCode/@codeListValue) = 'series' or normalize-space(../../gmd:hierarchyLevel/gmd:MD_ScopeCode/@codeListValue) = 'dataset' or normalize-space(../../gmd:hierarchyLevel/gmd:MD_ScopeCode/@codeListValue) = '')]" + priority="1000" + mode="M10"> + <svrl:fired-rule xmlns:svrl="http://purl.oclc.org/dsdl/svrl" + context="//gmd:MD_DataIdentification[ normalize-space(../../gmd:hierarchyLevel/gmd:MD_ScopeCode/@codeListValue) = 'series' or normalize-space(../../gmd:hierarchyLevel/gmd:MD_ScopeCode/@codeListValue) = 'dataset' or normalize-space(../../gmd:hierarchyLevel/gmd:MD_ScopeCode/@codeListValue) = '']| //*[@gco:isoType='gmd:MD_DataIdentification' and ( normalize-space(../../gmd:hierarchyLevel/gmd:MD_ScopeCode/@codeListValue) = 'series' or normalize-space(../../gmd:hierarchyLevel/gmd:MD_ScopeCode/@codeListValue) = 'dataset' or normalize-space(../../gmd:hierarchyLevel/gmd:MD_ScopeCode/@codeListValue) = '')]"/> + <xsl:variable name="resourceLanguage" + select="string-join(gmd:language/gco:CharacterString|gmd:language/gmd:LanguageCode/@codeListValue, ', ')"/> + <xsl:variable name="euLanguage" + select=" not(gmd:language/@gco:nilReason='missing') and geonet:contains-any-of($resourceLanguage, ('eng', 'fre', 'ger', 'spa', 'dut', 'ita', 'cze', 'lav', 'dan', 'lit', 'mlt', 'pol', 'est', 'por', 'fin', 'rum', 'slo', 'slv', 'gre', 'bul', 'hun', 'swe', 'gle'))"/> + + <!--ASSERT + --> +<xsl:choose> + <xsl:when test="$euLanguage"/> + <xsl:otherwise> + <svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="$euLanguage"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$loc/strings/alert.M55/div"/> + <xsl:text/> + </svrl:text> + </svrl:failed-assert> + </xsl:otherwise> + </xsl:choose> + + <!--REPORT + --> +<xsl:if test="$euLanguage"> + <svrl:successful-report xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="$euLanguage"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$loc/strings/report.M55/div"/> + <xsl:text/> + <xsl:text/> + <xsl:copy-of select="$resourceLanguage"/> + <xsl:text/> + </svrl:text> + </svrl:successful-report> + </xsl:if> + <xsl:variable name="topic" select="gmd:topicCategory/gmd:MD_TopicCategoryCode"/> + <xsl:variable name="noTopic" + select="not(gmd:topicCategory) or gmd:topicCategory/gmd:MD_TopicCategoryCode/text() = ''"/> + + <!--ASSERT + --> +<xsl:choose> + <xsl:when test="not($noTopic)"/> + <xsl:otherwise> + <svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="not($noTopic)"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$loc/strings/alert.M39/div"/> + <xsl:text/> + </svrl:text> + </svrl:failed-assert> + </xsl:otherwise> + </xsl:choose> + + <!--REPORT + --> +<xsl:if test="not($noTopic)"> + <svrl:successful-report xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="not($noTopic)"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$loc/strings/report.M39/div"/> + <xsl:text/> + <xsl:text/> + <xsl:copy-of select="$topic"/> + <xsl:text/> + </svrl:text> + </svrl:successful-report> + </xsl:if> + <xsl:variable name="resourceIdentifier" + select="gmd:citation/gmd:CI_Citation/gmd:identifier and not(gmd:citation/gmd:CI_Citation/gmd:identifier[*/gmd:code/@gco:nilReason='missing'])"/> + <xsl:variable name="resourceIdentifier_code" + select="gmd:citation/gmd:CI_Citation/gmd:identifier/*/gmd:code/*/text()"/> + <xsl:variable name="resourceIdentifier_codeSpace" + select="gmd:citation/gmd:CI_Citation/gmd:identifier/*/gmd:codeSpace/*/text()"/> + + <!--ASSERT + --> +<xsl:choose> + <xsl:when test="$resourceIdentifier"/> + <xsl:otherwise> + <svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="$resourceIdentifier"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$loc/strings/alert.M38/div"/> + <xsl:text/> + </svrl:text> + </svrl:failed-assert> + </xsl:otherwise> + </xsl:choose> + + <!--REPORT + --> +<xsl:if test="$resourceIdentifier_code"> + <svrl:successful-report xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="$resourceIdentifier_code"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$loc/strings/report.M38/div"/> + <xsl:text/> + <xsl:text/> + <xsl:copy-of select="$resourceIdentifier_code"/> + <xsl:text/> + </svrl:text> + </svrl:successful-report> + </xsl:if> + + <!--REPORT + --> +<xsl:if test="$resourceIdentifier_codeSpace"> + <svrl:successful-report xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="$resourceIdentifier_codeSpace"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$loc/strings/report.M38.codespace/div"/> + <xsl:text/> + <xsl:text/> + <xsl:copy-of select="$resourceIdentifier_codeSpace"/> + <xsl:text/> + </svrl:text> + </svrl:successful-report> + </xsl:if> + <xsl:apply-templates select="*" mode="M10"/> + </xsl:template> + <xsl:template match="text()" priority="-1" mode="M10"/> + <xsl:template match="@*|node()" priority="-2" mode="M10"> + <xsl:apply-templates select="*" mode="M10"/> + </xsl:template> + + <!--PATTERN + $loc/strings/serviceIdentification--> +<svrl:text xmlns:svrl="http://purl.oclc.org/dsdl/svrl"> + <xsl:copy-of select="$loc/strings/serviceIdentification"/> + </svrl:text> + + <!--RULE + --> +<xsl:template match="//srv:SV_ServiceIdentification| //*[@gco:isoType='srv:SV_ServiceIdentification']" + priority="1000" + mode="M11"> + <svrl:fired-rule xmlns:svrl="http://purl.oclc.org/dsdl/svrl" + context="//srv:SV_ServiceIdentification| //*[@gco:isoType='srv:SV_ServiceIdentification']"/> + <xsl:variable name="coupledResourceHref" + select="string-join(srv:operatesOn/@xlink:href, ', ')"/> + <xsl:variable name="coupledResourceUUID" select="string-join(srv:operatesOn/@uuidref, ', ')"/> + <xsl:variable name="coupledResource" + select="../../gmd:hierarchyLevel/gmd:MD_ScopeCode/@codeListValue='service' and //srv:operatesOn"/> + + <!--REPORT + --> +<xsl:if test="$coupledResource and $coupledResourceHref!=''"> + <svrl:successful-report xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="$coupledResource and $coupledResourceHref!=''"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$loc/strings/report.M51/div"/> + <xsl:text/> + <xsl:text/> + <xsl:copy-of select="$coupledResourceHref"/> + <xsl:text/> + </svrl:text> + </svrl:successful-report> + </xsl:if> + + <!--REPORT + --> +<xsl:if test="$coupledResource and $coupledResourceUUID!=''"> + <svrl:successful-report xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="$coupledResource and $coupledResourceUUID!=''"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$loc/strings/report.M51/div"/> + <xsl:text/> + <xsl:text/> + <xsl:copy-of select="$coupledResourceUUID"/> + <xsl:text/> + </svrl:text> + </svrl:successful-report> + </xsl:if> + <xsl:variable name="serviceType" select="srv:serviceType/gco:LocalName"/> + <xsl:variable name="noServiceType" + select="geonet:contains-any-of(srv:serviceType/gco:LocalName, ('view', 'discovery', 'download', 'transformation', 'invoke', 'other'))"/> + + <!--ASSERT + --> +<xsl:choose> + <xsl:when test="$noServiceType"/> + <xsl:otherwise> + <svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="$noServiceType"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$loc/strings/alert.M60/div"/> + <xsl:text/> + </svrl:text> + </svrl:failed-assert> + </xsl:otherwise> + </xsl:choose> + + <!--REPORT + --> +<xsl:if test="$noServiceType"> + <svrl:successful-report xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="$noServiceType"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$loc/strings/report.M60/div"/> + <xsl:text/> + <xsl:text/> + <xsl:copy-of select="$serviceType"/> + <xsl:text/> + </svrl:text> + </svrl:successful-report> + </xsl:if> + <xsl:apply-templates select="*" mode="M11"/> + </xsl:template> + <xsl:template match="text()" priority="-1" mode="M11"/> + <xsl:template match="@*|node()" priority="-2" mode="M11"> + <xsl:apply-templates select="*" mode="M11"/> + </xsl:template> + + <!--PATTERN + $loc/strings/theme--> +<svrl:text xmlns:svrl="http://purl.oclc.org/dsdl/svrl"> + <xsl:copy-of select="$loc/strings/theme"/> + </svrl:text> + + <!--RULE + --> +<xsl:template match="//gmd:MD_DataIdentification| //*[@gco:isoType='gmd:MD_DataIdentification']" + priority="1000" + mode="M12"> + <svrl:fired-rule xmlns:svrl="http://purl.oclc.org/dsdl/svrl" + context="//gmd:MD_DataIdentification| //*[@gco:isoType='gmd:MD_DataIdentification']"/> + <xsl:variable name="thesaurusURL" + select="concat('file:///', $thesaurusDir, '/external/thesauri/theme/inspire-theme.rdf')"/> + <xsl:variable name="inspire-thesaurus" select="document($thesaurusURL)"/> + <xsl:variable name="inspire-theme" select="$inspire-thesaurus//skos:Concept"/> + + <!--ASSERT + --> +<xsl:choose> + <xsl:when test="count($inspire-theme) > 0"/> + <xsl:otherwise> + <svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="count($inspire-theme) > 0"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + INSPIRE Theme thesaurus not found (at <xsl:text/> + <xsl:copy-of select="$thesaurusURL"/> + <xsl:text/>. Check installation in codelist/external/thesauri/theme. + Download thesaurus from https://geonetwork.svn.sourceforge.net/svnroot/geonetwork/utilities/gemet/thesauri/. + </svrl:text> + </svrl:failed-assert> + </xsl:otherwise> + </xsl:choose> + <xsl:variable name="thesaurus_name" + select="gmd:descriptiveKeywords/*/gmd:thesaurusName/*/gmd:title/*/text()"/> + <xsl:variable name="thesaurus_date" + select="gmd:descriptiveKeywords/*/gmd:thesaurusName/*/gmd:date/*/gmd:date/*/text()"/> + <xsl:variable name="thesaurus_dateType" + select="gmd:descriptiveKeywords/*/gmd:thesaurusName/*/gmd:date/*/gmd:dateType/*/@codeListValue/text()"/> + <xsl:variable name="keyword" + select="gmd:descriptiveKeywords/*/gmd:keyword/gco:CharacterString| gmd:descriptiveKeywords/*/gmd:keyword/gmx:Anchor"/> + <xsl:variable name="inspire-theme-found" + select="count($inspire-thesaurus//skos:Concept[skos:prefLabel = $keyword])"/> + + <!--ASSERT + --> +<xsl:choose> + <xsl:when test="$inspire-theme-found > 0"/> + <xsl:otherwise> + <svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="$inspire-theme-found > 0"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$loc/strings/alert.M40/div"/> + <xsl:text/> + </svrl:text> + </svrl:failed-assert> + </xsl:otherwise> + </xsl:choose> + + <!--REPORT + --> +<xsl:if test="$inspire-theme-found > 0"> + <svrl:successful-report xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="$inspire-theme-found > 0"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$inspire-theme-found"/> + <xsl:text/> + <xsl:text/> + <xsl:copy-of select="$loc/strings/report.M40/div"/> + <xsl:text/> + </svrl:text> + </svrl:successful-report> + </xsl:if> + + <!--REPORT + --> +<xsl:if test="$thesaurus_name"> + <svrl:successful-report xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="$thesaurus_name"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text>Thesaurus: + <xsl:text/> + <xsl:copy-of select="$thesaurus_name"/> + <xsl:text/>, <xsl:text/> + <xsl:copy-of select="$thesaurus_date"/> + <xsl:text/> (<xsl:text/> + <xsl:copy-of select="$thesaurus_dateType"/> + <xsl:text/>) + </svrl:text> + </svrl:successful-report> + </xsl:if> + <xsl:apply-templates select="*" mode="M12"/> + </xsl:template> + <xsl:template match="text()" priority="-1" mode="M12"/> + <xsl:template match="@*|node()" priority="-2" mode="M12"> + <xsl:apply-templates select="*" mode="M12"/> + </xsl:template> + + <!--PATTERN + $loc/strings/serviceTaxonomy--> +<svrl:text xmlns:svrl="http://purl.oclc.org/dsdl/svrl"> + <xsl:copy-of select="$loc/strings/serviceTaxonomy"/> + </svrl:text> + + <!--RULE + --> +<xsl:template match="//srv:SV_ServiceIdentification|//*[@gco:isoType='srv:SV_ServiceIdentification']" + priority="1000" + mode="M13"> + <svrl:fired-rule xmlns:svrl="http://purl.oclc.org/dsdl/svrl" + context="//srv:SV_ServiceIdentification|//*[@gco:isoType='srv:SV_ServiceIdentification']"/> + <xsl:variable name="inspire-thesaurus" + select="document(concat('file:///', $thesaurusDir, '/external/thesauri/theme/inspire-service-taxonomy.rdf'))"/> + <xsl:variable name="inspire-st" select="$inspire-thesaurus//skos:Concept"/> + + <!--ASSERT + --> +<xsl:choose> + <xsl:when test="count($inspire-st) > 0"/> + <xsl:otherwise> + <svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="count($inspire-st) > 0"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + INSPIRE service taxonomy thesaurus not found. Check installation in codelist/external/thesauri/theme. + Download thesaurus from https://geonetwork.svn.sourceforge.net/svnroot/geonetwork/utilities/gemet/thesauri/. + </svrl:text> + </svrl:failed-assert> + </xsl:otherwise> + </xsl:choose> + <xsl:variable name="keyword" + select="gmd:descriptiveKeywords/*/gmd:keyword/gco:CharacterString | gmd:descriptiveKeywords/*/gmd:keyword//gmd:LocalisedCharacterString | gmd:descriptiveKeywords/*/gmd:keyword/gmx:Anchor"/> + <xsl:variable name="inspire-theme-found" + select="count($inspire-thesaurus//skos:Concept[skos:prefLabel = $keyword])"/> + + <!--ASSERT + --> +<xsl:choose> + <xsl:when test="$inspire-theme-found > 0"/> + <xsl:otherwise> + <svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="$inspire-theme-found > 0"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$loc/strings/alert.M58/div"/> + <xsl:text/> + </svrl:text> + </svrl:failed-assert> + </xsl:otherwise> + </xsl:choose> + + <!--REPORT + --> +<xsl:if test="$inspire-theme-found > 0"> + <svrl:successful-report xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="$inspire-theme-found > 0"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$inspire-theme-found"/> + <xsl:text/> + <xsl:text/> + <xsl:copy-of select="$loc/strings/report.M58/div"/> + <xsl:text/> + </svrl:text> + </svrl:successful-report> + </xsl:if> + <xsl:apply-templates select="*" mode="M13"/> + </xsl:template> + <xsl:template match="text()" priority="-1" mode="M13"/> + <xsl:template match="@*|node()" priority="-2" mode="M13"> + <xsl:apply-templates select="*" mode="M13"/> + </xsl:template> + + <!--PATTERN + $loc/strings/geo--> +<svrl:text xmlns:svrl="http://purl.oclc.org/dsdl/svrl"> + <xsl:copy-of select="$loc/strings/geo"/> + </svrl:text> + + <!--RULE + --> +<xsl:template match="//gmd:MD_DataIdentification[ normalize-space(../../gmd:hierarchyLevel/gmd:MD_ScopeCode/@codeListValue) = 'series' or normalize-space(../../gmd:hierarchyLevel/gmd:MD_ScopeCode/@codeListValue) = 'dataset' or normalize-space(../../gmd:hierarchyLevel/gmd:MD_ScopeCode/@codeListValue) = ''] /gmd:extent/*/gmd:geographicElement/gmd:EX_GeographicBoundingBox | //*[@gco:isoType='gmd:MD_DataIdentification' and ( normalize-space(../../gmd:hierarchyLevel/gmd:MD_ScopeCode/@codeListValue) = 'series' or normalize-space(../../gmd:hierarchyLevel/gmd:MD_ScopeCode/@codeListValue) = 'dataset' or normalize-space(../../gmd:hierarchyLevel/gmd:MD_ScopeCode/@codeListValue) = '')] /gmd:extent/*/gmd:geographicElement/gmd:EX_GeographicBoundingBox " + priority="1001" + mode="M14"> + <svrl:fired-rule xmlns:svrl="http://purl.oclc.org/dsdl/svrl" + context="//gmd:MD_DataIdentification[ normalize-space(../../gmd:hierarchyLevel/gmd:MD_ScopeCode/@codeListValue) = 'series' or normalize-space(../../gmd:hierarchyLevel/gmd:MD_ScopeCode/@codeListValue) = 'dataset' or normalize-space(../../gmd:hierarchyLevel/gmd:MD_ScopeCode/@codeListValue) = ''] /gmd:extent/*/gmd:geographicElement/gmd:EX_GeographicBoundingBox | //*[@gco:isoType='gmd:MD_DataIdentification' and ( normalize-space(../../gmd:hierarchyLevel/gmd:MD_ScopeCode/@codeListValue) = 'series' or normalize-space(../../gmd:hierarchyLevel/gmd:MD_ScopeCode/@codeListValue) = 'dataset' or normalize-space(../../gmd:hierarchyLevel/gmd:MD_ScopeCode/@codeListValue) = '')] /gmd:extent/*/gmd:geographicElement/gmd:EX_GeographicBoundingBox "/> + <xsl:variable name="west" select="number(gmd:westBoundLongitude/gco:Decimal/text())"/> + <xsl:variable name="east" select="number(gmd:eastBoundLongitude/gco:Decimal/text())"/> + <xsl:variable name="north" select="number(gmd:northBoundLatitude/gco:Decimal/text())"/> + <xsl:variable name="south" select="number(gmd:southBoundLatitude/gco:Decimal/text())"/> + + <!--ASSERT + --> +<xsl:choose> + <xsl:when test="(-180.00 <= $west) and ( $west <= 180.00)"/> + <xsl:otherwise> + <svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="(-180.00 <= $west) and ( $west <= 180.00)"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$loc/strings/alert.M41.W/div"/> + <xsl:text/> + </svrl:text> + </svrl:failed-assert> + </xsl:otherwise> + </xsl:choose> + + <!--REPORT + --> +<xsl:if test="(-180.00 <= $west) and ( $west <= 180.00)"> + <svrl:successful-report xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="(-180.00 <= $west) and ( $west <= 180.00)"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$loc/strings/report.M41.W/div"/> + <xsl:text/> + <xsl:text/> + <xsl:copy-of select="$west"/> + <xsl:text/> + </svrl:text> + </svrl:successful-report> + </xsl:if> + + <!--ASSERT + --> +<xsl:choose> + <xsl:when test="(-180.00 <= $east) and ($east <= 180.00)"/> + <xsl:otherwise> + <svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="(-180.00 <= $east) and ($east <= 180.00)"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$loc/strings/alert.M41.E/div"/> + <xsl:text/> + </svrl:text> + </svrl:failed-assert> + </xsl:otherwise> + </xsl:choose> + + <!--REPORT + --> +<xsl:if test="(-180.00 <= $east) and ($east <= 180.00)"> + <svrl:successful-report xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="(-180.00 <= $east) and ($east <= 180.00)"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$loc/strings/report.M41.E/div"/> + <xsl:text/> + <xsl:text/> + <xsl:copy-of select="$east"/> + <xsl:text/> + </svrl:text> + </svrl:successful-report> + </xsl:if> + + <!--ASSERT + --> +<xsl:choose> + <xsl:when test="(-90.00 <= $south) and ($south <= $north)"/> + <xsl:otherwise> + <svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="(-90.00 <= $south) and ($south <= $north)"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$loc/strings/alert.M41.S/div"/> + <xsl:text/> + </svrl:text> + </svrl:failed-assert> + </xsl:otherwise> + </xsl:choose> + + <!--REPORT + --> +<xsl:if test="(-90.00 <= $south) and ($south <= $north)"> + <svrl:successful-report xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="(-90.00 <= $south) and ($south <= $north)"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$loc/strings/report.M41.S/div"/> + <xsl:text/> + <xsl:text/> + <xsl:copy-of select="$south"/> + <xsl:text/> + </svrl:text> + </svrl:successful-report> + </xsl:if> + + <!--ASSERT + --> +<xsl:choose> + <xsl:when test="($south <= $north) and ($north <= 90.00)"/> + <xsl:otherwise> + <svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="($south <= $north) and ($north <= 90.00)"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$loc/strings/alert.M41.N/div"/> + <xsl:text/> + </svrl:text> + </svrl:failed-assert> + </xsl:otherwise> + </xsl:choose> + + <!--REPORT + --> +<xsl:if test="($south <= $north) and ($north <= 90.00)"> + <svrl:successful-report xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="($south <= $north) and ($north <= 90.00)"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$loc/strings/report.M41.N/div"/> + <xsl:text/> + <xsl:text/> + <xsl:copy-of select="$north"/> + <xsl:text/> + </svrl:text> + </svrl:successful-report> + </xsl:if> + <xsl:apply-templates select="*" mode="M14"/> + </xsl:template> + + <!--RULE + --> +<xsl:template match="//srv:SV_ServiceIdentification[ normalize-space(../../gmd:hierarchyLevel/gmd:MD_ScopeCode/@codeListValue) = 'service'] /srv:extent/*/gmd:geographicElement/gmd:EX_GeographicBoundingBox" + priority="1000" + mode="M14"> + <svrl:fired-rule xmlns:svrl="http://purl.oclc.org/dsdl/svrl" + context="//srv:SV_ServiceIdentification[ normalize-space(../../gmd:hierarchyLevel/gmd:MD_ScopeCode/@codeListValue) = 'service'] /srv:extent/*/gmd:geographicElement/gmd:EX_GeographicBoundingBox"/> + <xsl:variable name="west" select="number(gmd:westBoundLongitude/gco:Decimal/text())"/> + <xsl:variable name="east" select="number(gmd:eastBoundLongitude/gco:Decimal/text())"/> + <xsl:variable name="north" select="number(gmd:northBoundLatitude/gco:Decimal/text())"/> + <xsl:variable name="south" select="number(gmd:southBoundLatitude/gco:Decimal/text())"/> + + <!--REPORT + --> +<xsl:if test="(-180.00 <= $west) and ( $west <= 180.00)"> + <svrl:successful-report xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="(-180.00 <= $west) and ( $west <= 180.00)"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$loc/strings/report.M41.W/div"/> + <xsl:text/> + <xsl:text/> + <xsl:copy-of select="$west"/> + <xsl:text/> + </svrl:text> + </svrl:successful-report> + </xsl:if> + + <!--REPORT + --> +<xsl:if test="(-180.00 <= $east) and ($east <= 180.00)"> + <svrl:successful-report xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="(-180.00 <= $east) and ($east <= 180.00)"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$loc/strings/report.M41.E/div"/> + <xsl:text/> + <xsl:text/> + <xsl:copy-of select="$east"/> + <xsl:text/> + </svrl:text> + </svrl:successful-report> + </xsl:if> + + <!--REPORT + --> +<xsl:if test="(-90.00 <= $south) and ($south <= $north)"> + <svrl:successful-report xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="(-90.00 <= $south) and ($south <= $north)"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$loc/strings/report.M41.S/div"/> + <xsl:text/> + <xsl:text/> + <xsl:copy-of select="$south"/> + <xsl:text/> + </svrl:text> + </svrl:successful-report> + </xsl:if> + + <!--REPORT + --> +<xsl:if test="($south <= $north) and ($north <= 90.00)"> + <svrl:successful-report xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="($south <= $north) and ($north <= 90.00)"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$loc/strings/report.M41.N/div"/> + <xsl:text/> + <xsl:text/> + <xsl:copy-of select="$north"/> + <xsl:text/> + </svrl:text> + </svrl:successful-report> + </xsl:if> + <xsl:apply-templates select="*" mode="M14"/> + </xsl:template> + <xsl:template match="text()" priority="-1" mode="M14"/> + <xsl:template match="@*|node()" priority="-2" mode="M14"> + <xsl:apply-templates select="*" mode="M14"/> + </xsl:template> + + <!--PATTERN + $loc/strings/temporal--> +<svrl:text xmlns:svrl="http://purl.oclc.org/dsdl/svrl"> + <xsl:copy-of select="$loc/strings/temporal"/> + </svrl:text> + + <!--RULE + --> +<xsl:template match="//gmd:MD_DataIdentification| //*[@gco:isoType='gmd:MD_DataIdentification']| //srv:SV_ServiceIdentification| //*[@gco:isoType='srv:SV_ServiceIdentification']" + priority="1000" + mode="M15"> + <svrl:fired-rule xmlns:svrl="http://purl.oclc.org/dsdl/svrl" + context="//gmd:MD_DataIdentification| //*[@gco:isoType='gmd:MD_DataIdentification']| //srv:SV_ServiceIdentification| //*[@gco:isoType='srv:SV_ServiceIdentification']"/> + <xsl:variable name="temporalExtentBegin" + select="gmd:extent/*/gmd:temporalElement/*/gmd:extent/*/gml:beginPosition/text()"/> + <xsl:variable name="temporalExtentEnd" + select="gmd:extent/*/gmd:temporalElement/*/gmd:extent/*/gml:endPosition/text()"/> + <xsl:variable name="publicationDate" + select="gmd:citation/*/gmd:date[./*/gmd:dateType/*/@codeListValue='publication']/*/gmd:date/*"/> + <xsl:variable name="creationDate" + select="gmd:citation/*/gmd:date[./*/gmd:dateType/*/@codeListValue='creation']/*/gmd:date/*"/> + <xsl:variable name="no_creationDate" + select="count(gmd:citation/*/gmd:date[./*/gmd:dateType/*/@codeListValue='creation'])"/> + <xsl:variable name="revisionDate" + select="gmd:citation/*/gmd:date[./*/gmd:dateType/*/@codeListValue='revision']/*/gmd:date/*"/> + + <!--ASSERT + --> +<xsl:choose> + <xsl:when test="$no_creationDate <= 1"/> + <xsl:otherwise> + <svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="$no_creationDate <= 1"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$loc/strings/alert.M42.creation/div"/> + <xsl:text/> + </svrl:text> + </svrl:failed-assert> + </xsl:otherwise> + </xsl:choose> + + <!--ASSERT + --> +<xsl:choose> + <xsl:when test="$publicationDate or $creationDate or $revisionDate or $temporalExtentBegin or $temporalExtentEnd"/> + <xsl:otherwise> + <svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="$publicationDate or $creationDate or $revisionDate or $temporalExtentBegin or $temporalExtentEnd"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$loc/strings/alert.M42/div"/> + <xsl:text/> + </svrl:text> + </svrl:failed-assert> + </xsl:otherwise> + </xsl:choose> + + <!--REPORT + --> +<xsl:if test="$temporalExtentBegin"> + <svrl:successful-report xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="$temporalExtentBegin"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$loc/strings/report.M42.begin/div"/> + <xsl:text/> + <xsl:text/> + <xsl:copy-of select="$temporalExtentBegin"/> + <xsl:text/> + </svrl:text> + </svrl:successful-report> + </xsl:if> + + <!--REPORT + --> +<xsl:if test="$temporalExtentEnd"> + <svrl:successful-report xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="$temporalExtentEnd"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$loc/strings/report.M42.end/div"/> + <xsl:text/> + <xsl:text/> + <xsl:copy-of select="$temporalExtentEnd"/> + <xsl:text/> + </svrl:text> + </svrl:successful-report> + </xsl:if> + + <!--REPORT + --> +<xsl:if test="$publicationDate"> + <svrl:successful-report xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="$publicationDate"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$loc/strings/report.M42.publication/div"/> + <xsl:text/> + <xsl:text/> + <xsl:copy-of select="$publicationDate"/> + <xsl:text/> + </svrl:text> + </svrl:successful-report> + </xsl:if> + + <!--REPORT + --> +<xsl:if test="$revisionDate"> + <svrl:successful-report xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="$revisionDate"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$loc/strings/report.M42.revision/div"/> + <xsl:text/> + <xsl:text/> + <xsl:copy-of select="$revisionDate"/> + <xsl:text/> + </svrl:text> + </svrl:successful-report> + </xsl:if> + + <!--REPORT + --> +<xsl:if test="$creationDate"> + <svrl:successful-report xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="$creationDate"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$loc/strings/report.M42.creation/div"/> + <xsl:text/> + <xsl:text/> + <xsl:copy-of select="$creationDate"/> + <xsl:text/> + </svrl:text> + </svrl:successful-report> + </xsl:if> + <xsl:apply-templates select="*" mode="M15"/> + </xsl:template> + <xsl:template match="text()" priority="-1" mode="M15"/> + <xsl:template match="@*|node()" priority="-2" mode="M15"> + <xsl:apply-templates select="*" mode="M15"/> + </xsl:template> + + <!--PATTERN + $loc/strings/quality--> +<svrl:text xmlns:svrl="http://purl.oclc.org/dsdl/svrl"> + <xsl:copy-of select="$loc/strings/quality"/> + </svrl:text> + + <!--RULE + --> +<xsl:template match="//gmd:DQ_DataQuality[../../gmd:identificationInfo/gmd:MD_DataIdentification or ../../gmd:identificationInfo/*/@gco:isoType = 'gmd:MD_DataIdentification']" + priority="1001" + mode="M16"> + <svrl:fired-rule xmlns:svrl="http://purl.oclc.org/dsdl/svrl" + context="//gmd:DQ_DataQuality[../../gmd:identificationInfo/gmd:MD_DataIdentification or ../../gmd:identificationInfo/*/@gco:isoType = 'gmd:MD_DataIdentification']"/> + <xsl:variable name="lineage" + select="not(gmd:lineage/gmd:LI_Lineage/gmd:statement) or (gmd:lineage//gmd:statement/@gco:nilReason)"/> + + <!--ASSERT + --> +<xsl:choose> + <xsl:when test="not($lineage)"/> + <xsl:otherwise> + <svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="not($lineage)"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:copy-of select="$loc/strings/alert.M43/div"/> + </svrl:text> + </svrl:failed-assert> + </xsl:otherwise> + </xsl:choose> + + <!--REPORT + --> +<xsl:if test="not($lineage)"> + <svrl:successful-report xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="not($lineage)"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:copy-of select="$loc/strings/report.M43/div"/> + </svrl:text> + </svrl:successful-report> + </xsl:if> + <xsl:apply-templates select="*" mode="M16"/> + </xsl:template> + + <!--RULE + --> +<xsl:template match="//gmd:MD_DataIdentification/gmd:spatialResolution|//*[@gco:isoType='gmd:MD_DataIdentification']/gmd:spatialResolution" + priority="1000" + mode="M16"> + <svrl:fired-rule xmlns:svrl="http://purl.oclc.org/dsdl/svrl" + context="//gmd:MD_DataIdentification/gmd:spatialResolution|//*[@gco:isoType='gmd:MD_DataIdentification']/gmd:spatialResolution"/> + + <!--ASSERT + --> +<xsl:choose> + <xsl:when test="*/gmd:equivalentScale or */gmd:distance"/> + <xsl:otherwise> + <svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="*/gmd:equivalentScale or */gmd:distance"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:copy-of select="$loc/strings/alert.M56/div"/> + </svrl:text> + </svrl:failed-assert> + </xsl:otherwise> + </xsl:choose> + + <!--REPORT + --> +<xsl:if test="*/gmd:equivalentScale or */gmd:distance"> + <svrl:successful-report xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="*/gmd:equivalentScale or */gmd:distance"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:copy-of select="$loc/strings/report.M56/div"/> + </svrl:text> + </svrl:successful-report> + </xsl:if> + <xsl:apply-templates select="*" mode="M16"/> + </xsl:template> + <xsl:template match="text()" priority="-1" mode="M16"/> + <xsl:template match="@*|node()" priority="-2" mode="M16"> + <xsl:apply-templates select="*" mode="M16"/> + </xsl:template> + + <!--PATTERN + $loc/strings/conformity--> +<svrl:text xmlns:svrl="http://purl.oclc.org/dsdl/svrl"> + <xsl:copy-of select="$loc/strings/conformity"/> + </svrl:text> + + <!--RULE + --> +<xsl:template match="/gmd:MD_Metadata" priority="1001" mode="M17"> + <svrl:fired-rule xmlns:svrl="http://purl.oclc.org/dsdl/svrl" context="/gmd:MD_Metadata"/> + <xsl:variable name="degree" + select="count(gmd:dataQualityInfo/*/gmd:report/*/gmd:result/*/gmd:pass)"/> + + <!--ASSERT + --> +<xsl:choose> + <xsl:when test="$degree"/> + <xsl:otherwise> + <svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="$degree"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$loc/strings/alert.M44.nonev/div"/> + <xsl:text/> + <xsl:text/> + <xsl:copy-of select="$degree>0"/> + <xsl:text/> + </svrl:text> + </svrl:failed-assert> + </xsl:otherwise> + </xsl:choose> + + <!--REPORT + --> +<xsl:if test="$degree"> + <svrl:successful-report xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="$degree"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$loc/strings/report.M44.nonev/div"/> + <xsl:text/> + </svrl:text> + </svrl:successful-report> + </xsl:if> + <xsl:apply-templates select="*" mode="M17"/> + </xsl:template> + + <!--RULE + --> +<xsl:template match="//gmd:dataQualityInfo/*/gmd:report/*/gmd:result/*" priority="1000" + mode="M17"> + <svrl:fired-rule xmlns:svrl="http://purl.oclc.org/dsdl/svrl" + context="//gmd:dataQualityInfo/*/gmd:report/*/gmd:result/*"/> + <xsl:variable name="degree" select="gmd:pass/*/text()"/> + <xsl:variable name="specification_title" select="gmd:specification/*/gmd:title/*/text()"/> + <xsl:variable name="specification_date" + select="gmd:specification/*/gmd:date/*/gmd:date/*/text()"/> + <xsl:variable name="specification_dateType" + select="normalize-space(gmd:specification/*/gmd:date/*/gmd:dateType/*/@codeListValue)"/> + + <!--REPORT + --> +<xsl:if test="$specification_title"> + <svrl:successful-report xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="$specification_title"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$loc/strings/report.M44.spec/div"/> + <xsl:text/> + <xsl:text/> + <xsl:copy-of select="$specification_title"/> + <xsl:text/>, (<xsl:text/> + <xsl:copy-of select="$specification_date"/> + <xsl:text/>, <xsl:text/> + <xsl:copy-of select="$specification_dateType"/> + <xsl:text/>) + </svrl:text> + </svrl:successful-report> + </xsl:if> + + <!--REPORT + --> +<xsl:if test="$degree"> + <svrl:successful-report xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="$degree"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$loc/strings/report.M44.degree/div"/> + <xsl:text/> + <xsl:text/> + <xsl:copy-of select="$degree"/> + <xsl:text/> + </svrl:text> + </svrl:successful-report> + </xsl:if> + <xsl:apply-templates select="*" mode="M17"/> + </xsl:template> + <xsl:template match="text()" priority="-1" mode="M17"/> + <xsl:template match="@*|node()" priority="-2" mode="M17"> + <xsl:apply-templates select="*" mode="M17"/> + </xsl:template> + + <!--PATTERN + $loc/strings/constraints--> +<svrl:text xmlns:svrl="http://purl.oclc.org/dsdl/svrl"> + <xsl:copy-of select="$loc/strings/constraints"/> + </svrl:text> + + <!--RULE + --> +<xsl:template match="//gmd:MD_DataIdentification| //*[@gco:isoType='gmd:MD_DataIdentification']| //srv:SV_ServiceIdentification| //*[@gco:isoType='srv:SV_ServiceIdentification']" + priority="1001" + mode="M18"> + <svrl:fired-rule xmlns:svrl="http://purl.oclc.org/dsdl/svrl" + context="//gmd:MD_DataIdentification| //*[@gco:isoType='gmd:MD_DataIdentification']| //srv:SV_ServiceIdentification| //*[@gco:isoType='srv:SV_ServiceIdentification']"/> + + <!--ASSERT + --> +<xsl:choose> + <xsl:when test="count(gmd:resourceConstraints/*) > 0"/> + <xsl:otherwise> + <svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="count(gmd:resourceConstraints/*) > 0"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$loc/strings/alert.M45.rc/div"/> + <xsl:text/> + </svrl:text> + </svrl:failed-assert> + </xsl:otherwise> + </xsl:choose> + <xsl:variable name="accessConstraints_count" + select="count(gmd:resourceConstraints/*/gmd:accessConstraints[*/@codeListValue != ''])"/> + <xsl:variable name="accessConstraints_found" select="$accessConstraints_count > 0"/> + <xsl:variable name="accessConstraints" + select=" count(gmd:resourceConstraints/*/gmd:accessConstraints/gmd:MD_RestrictionCode[@codeListValue='otherRestrictions'])>0 and ( not(gmd:resourceConstraints/*/gmd:otherConstraints) or gmd:resourceConstraints/*/gmd:otherConstraints[@gco:nilReason='missing'] )"/> + <xsl:variable name="otherConstraints" + select=" gmd:resourceConstraints/*/gmd:otherConstraints and gmd:resourceConstraints/*/gmd:otherConstraints/gco:CharacterString!='' and count(gmd:resourceConstraints/*/gmd:accessConstraints/gmd:MD_RestrictionCode[@codeListValue='otherRestrictions'])=0 "/> + <xsl:variable name="otherConstraintInfo" + select="gmd:resourceConstraints/*/gmd:otherConstraints/gco:CharacterString"/> + + <!--ASSERT + --> +<xsl:choose> + <xsl:when test="$accessConstraints_found"/> + <xsl:otherwise> + <svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="$accessConstraints_found"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$loc/strings/alert.M45.ca/div"/> + <xsl:text/> + </svrl:text> + </svrl:failed-assert> + </xsl:otherwise> + </xsl:choose> + + <!--REPORT + --> +<xsl:if test="$accessConstraints_found"> + <svrl:successful-report xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="$accessConstraints_found"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$accessConstraints_count"/> + <xsl:text/> + <xsl:text/> + <xsl:copy-of select="$loc/strings/report.M45.ca/div"/> + <xsl:text/> + </svrl:text> + </svrl:successful-report> + </xsl:if> + + <!--ASSERT + --> +<xsl:choose> + <xsl:when test="not($accessConstraints)"/> + <xsl:otherwise> + <svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="not($accessConstraints)"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$loc/strings/alert.M45.or/div"/> + <xsl:text/> + </svrl:text> + </svrl:failed-assert> + </xsl:otherwise> + </xsl:choose> + + <!--ASSERT + --> +<xsl:choose> + <xsl:when test="not($otherConstraints)"/> + <xsl:otherwise> + <svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="not($otherConstraints)"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$loc/strings/alert.M45.or/div"/> + <xsl:text/> + </svrl:text> + </svrl:failed-assert> + </xsl:otherwise> + </xsl:choose> + + <!--REPORT + --> +<xsl:if test="$otherConstraintInfo!='' and not($accessConstraints) and not($otherConstraints)"> + <svrl:successful-report xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="$otherConstraintInfo!='' and not($accessConstraints) and not($otherConstraints)"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$loc/strings/report.M45.or/div"/> + <xsl:text/> + <xsl:text/> + <xsl:copy-of select="$otherConstraintInfo"/> + <xsl:text/> + </svrl:text> + </svrl:successful-report> + </xsl:if> + <xsl:apply-templates select="*" mode="M18"/> + </xsl:template> + + <!--RULE + --> +<xsl:template match="//gmd:MD_DataIdentification/gmd:resourceConstraints/*| //*[@gco:isoType='gmd:MD_DataIdentification']/gmd:resourceConstraints/*| //srv:SV_ServiceIdentification/gmd:resourceConstraints/*| //*[@gco:isoType='srv:SV_ServiceIdentification']/gmd:resourceConstraints/*" + priority="1000" + mode="M18"> + <svrl:fired-rule xmlns:svrl="http://purl.oclc.org/dsdl/svrl" + context="//gmd:MD_DataIdentification/gmd:resourceConstraints/*| //*[@gco:isoType='gmd:MD_DataIdentification']/gmd:resourceConstraints/*| //srv:SV_ServiceIdentification/gmd:resourceConstraints/*| //*[@gco:isoType='srv:SV_ServiceIdentification']/gmd:resourceConstraints/*"/> + <xsl:variable name="accessConstraints" + select="string-join(gmd:accessConstraints/*/@codeListValue, ', ')"/> + <xsl:variable name="classification" + select="string-join(gmd:classification/*/@codeListValue, ', ')"/> + <xsl:variable name="otherConstraints" + select="gmd:otherConstraints/gco:CharacterString/text()"/> + + <!--REPORT + --> +<xsl:if test="$accessConstraints!=''"> + <svrl:successful-report xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="$accessConstraints!=''"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$loc/strings/report.M45.ac/div"/> + <xsl:text/> + <xsl:text/> + <xsl:copy-of select="$accessConstraints"/> + <xsl:text/> + </svrl:text> + </svrl:successful-report> + </xsl:if> + + <!--REPORT + --> +<xsl:if test="$classification!=''"> + <svrl:successful-report xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="$classification!=''"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$loc/strings/report.M45.class/div"/> + <xsl:text/> + <xsl:text/> + <xsl:copy-of select="$classification"/> + <xsl:text/> + </svrl:text> + </svrl:successful-report> + </xsl:if> + <xsl:apply-templates select="*" mode="M18"/> + </xsl:template> + <xsl:template match="text()" priority="-1" mode="M18"/> + <xsl:template match="@*|node()" priority="-2" mode="M18"> + <xsl:apply-templates select="*" mode="M18"/> + </xsl:template> + + <!--PATTERN + $loc/strings/constraints--> +<svrl:text xmlns:svrl="http://purl.oclc.org/dsdl/svrl"> + <xsl:copy-of select="$loc/strings/constraints"/> + </svrl:text> + + <!--RULE + --> +<xsl:template match="//gmd:MD_DataIdentification| //*[@gco:isoType='gmd:MD_DataIdentification']| //srv:SV_ServiceIdentification| //*[@gco:isoType='srv:SV_ServiceIdentification']" + priority="1000" + mode="M19"> + <svrl:fired-rule xmlns:svrl="http://purl.oclc.org/dsdl/svrl" + context="//gmd:MD_DataIdentification| //*[@gco:isoType='gmd:MD_DataIdentification']| //srv:SV_ServiceIdentification| //*[@gco:isoType='srv:SV_ServiceIdentification']"/> + <xsl:variable name="useLimitation" + select="gmd:resourceConstraints/*/gmd:useLimitation/*/text()"/> + <xsl:variable name="useLimitation_count" + select="count(gmd:resourceConstraints/*/gmd:useLimitation/*/text())"/> + + <!--ASSERT + --> +<xsl:choose> + <xsl:when test="$useLimitation_count"/> + <xsl:otherwise> + <svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="$useLimitation_count"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$loc/strings/alert.M45.ul/div"/> + <xsl:text/> + </svrl:text> + </svrl:failed-assert> + </xsl:otherwise> + </xsl:choose> + + <!--REPORT + --> +<xsl:if test="$useLimitation_count"> + <svrl:successful-report xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="$useLimitation_count"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$loc/strings/report.M45.ul/div"/> + <xsl:text/> + <xsl:text/> + <xsl:copy-of select="$useLimitation"/> + <xsl:text/> + </svrl:text> + </svrl:successful-report> + </xsl:if> + <xsl:apply-templates select="*" mode="M19"/> + </xsl:template> + <xsl:template match="text()" priority="-1" mode="M19"/> + <xsl:template match="@*|node()" priority="-2" mode="M19"> + <xsl:apply-templates select="*" mode="M19"/> + </xsl:template> + + <!--PATTERN + $loc/strings/org--> +<svrl:text xmlns:svrl="http://purl.oclc.org/dsdl/svrl"> + <xsl:copy-of select="$loc/strings/org"/> + </svrl:text> + + <!--RULE + --> +<xsl:template match="//gmd:identificationInfo" priority="1001" mode="M20"> + <svrl:fired-rule xmlns:svrl="http://purl.oclc.org/dsdl/svrl" context="//gmd:identificationInfo"/> + <xsl:variable name="missing" select="not(*/gmd:pointOfContact)"/> + + <!--ASSERT + --> +<xsl:choose> + <xsl:when test="not($missing)"/> + <xsl:otherwise> + <svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="not($missing)"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$loc/strings/alert.M47/div"/> + <xsl:text/> + </svrl:text> + </svrl:failed-assert> + </xsl:otherwise> + </xsl:choose> + + <!--REPORT + --> +<xsl:if test="not($missing)"> + <svrl:successful-report xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="not($missing)"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$loc/strings/report.M47/div"/> + <xsl:text/> + </svrl:text> + </svrl:successful-report> + </xsl:if> + <xsl:apply-templates select="*" mode="M20"/> + </xsl:template> + + <!--RULE + --> +<xsl:template match="//gmd:identificationInfo/*/gmd:pointOfContact |//*[@gco:isoType='gmd:MD_DataIdentification']/gmd:pointOfContact |//*[@gco:isoType='srv:SV_ServiceIdentification']/gmd:pointOfContact" + priority="1000" + mode="M20"> + <svrl:fired-rule xmlns:svrl="http://purl.oclc.org/dsdl/svrl" + context="//gmd:identificationInfo/*/gmd:pointOfContact |//*[@gco:isoType='gmd:MD_DataIdentification']/gmd:pointOfContact |//*[@gco:isoType='srv:SV_ServiceIdentification']/gmd:pointOfContact"/> + <xsl:variable name="missing" + select="not(*/gmd:organisationName) or (*/gmd:organisationName/@gco:nilReason) or not(*/gmd:contactInfo/*/gmd:address/*/gmd:electronicMailAddress) or (*/gmd:contactInfo/*/gmd:address/*/gmd:electronicMailAddress/@gco:nilReason)"/> + <xsl:variable name="organisationName" select="*/gmd:organisationName/*/text()"/> + <xsl:variable name="role" select="normalize-space(*/gmd:role/*/@codeListValue)"/> + <xsl:variable name="emptyRole" select="$role=''"/> + <xsl:variable name="emailAddress" + select="*/gmd:contactInfo/*/gmd:address/*/gmd:electronicMailAddress/*/text()"/> + + <!--ASSERT + --> +<xsl:choose> + <xsl:when test="not($missing)"/> + <xsl:otherwise> + <svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="not($missing)"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$loc/strings/alert.M47.info/div"/> + <xsl:text/> + </svrl:text> + </svrl:failed-assert> + </xsl:otherwise> + </xsl:choose> + + <!--ASSERT + --> +<xsl:choose> + <xsl:when test="not($emptyRole)"/> + <xsl:otherwise> + <svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="not($emptyRole)"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$loc/strings/alert.M48.role/div"/> + <xsl:text/> + </svrl:text> + </svrl:failed-assert> + </xsl:otherwise> + </xsl:choose> + + <!--REPORT + --> +<xsl:if test="not($missing)"> + <svrl:successful-report xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="not($missing)"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$loc/strings/report.M47.info/div"/> + <xsl:text/> + <xsl:text/> + <xsl:copy-of select="$organisationName"/> + <xsl:text/> + (<xsl:text/> + <xsl:copy-of select="$role"/> + <xsl:text/>) + </svrl:text> + </svrl:successful-report> + </xsl:if> + <xsl:apply-templates select="*" mode="M20"/> + </xsl:template> + <xsl:template match="text()" priority="-1" mode="M20"/> + <xsl:template match="@*|node()" priority="-2" mode="M20"> + <xsl:apply-templates select="*" mode="M20"/> + </xsl:template> + + <!--PATTERN + $loc/strings/metadata--> +<svrl:text xmlns:svrl="http://purl.oclc.org/dsdl/svrl"> + <xsl:copy-of select="$loc/strings/metadata"/> + </svrl:text> + + <!--RULE + --> +<xsl:template match="//gmd:MD_Metadata" priority="1001" mode="M21"> + <svrl:fired-rule xmlns:svrl="http://purl.oclc.org/dsdl/svrl" context="//gmd:MD_Metadata"/> + <xsl:variable name="dateStamp" select="gmd:dateStamp/*/text()"/> + + <!--ASSERT + --> +<xsl:choose> + <xsl:when test="$dateStamp"/> + <xsl:otherwise> + <svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="$dateStamp"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$loc/strings/alert.M50/div"/> + <xsl:text/> + </svrl:text> + </svrl:failed-assert> + </xsl:otherwise> + </xsl:choose> + + <!--REPORT + --> +<xsl:if test="$dateStamp"> + <svrl:successful-report xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="$dateStamp"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$loc/strings/report.M50/div"/> + <xsl:text/> + <xsl:text/> + <xsl:copy-of select="$dateStamp"/> + <xsl:text/> + </svrl:text> + </svrl:successful-report> + </xsl:if> + <xsl:variable name="language" + select="gmd:language/gco:CharacterString|gmd:language/gmd:LanguageCode/@codeListValue"/> + <xsl:variable name="language_present" + select="geonet:contains-any-of($language, ('eng', 'fre', 'ger', 'spa', 'dut', 'ita', 'cze', 'lav', 'dan', 'lit', 'mlt', 'pol', 'est', 'por', 'fin', 'rum', 'slo', 'slv', 'gre', 'bul', 'hun', 'swe', 'gle'))"/> + + <!--ASSERT + --> +<xsl:choose> + <xsl:when test="$language_present"/> + <xsl:otherwise> + <svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="$language_present"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$loc/strings/alert.M49/div"/> + <xsl:text/> + </svrl:text> + </svrl:failed-assert> + </xsl:otherwise> + </xsl:choose> + + <!--REPORT + --> +<xsl:if test="$language_present"> + <svrl:successful-report xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="$language_present"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$loc/strings/report.M49/div"/> + <xsl:text/> + <xsl:text/> + <xsl:copy-of select="normalize-space($language)"/> + <xsl:text/> + </svrl:text> + </svrl:successful-report> + </xsl:if> + <xsl:variable name="missing" select="not(gmd:contact)"/> + + <!--ASSERT + --> +<xsl:choose> + <xsl:when test="not($missing)"/> + <xsl:otherwise> + <svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="not($missing)"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$loc/strings/alert.M48/div"/> + <xsl:text/> + </svrl:text> + </svrl:failed-assert> + </xsl:otherwise> + </xsl:choose> + + <!--REPORT + --> +<xsl:if test="not($missing)"> + <svrl:successful-report xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="not($missing)"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$loc/strings/report.M48/div"/> + <xsl:text/> + </svrl:text> + </svrl:successful-report> + </xsl:if> + <xsl:apply-templates select="*" mode="M21"/> + </xsl:template> + + <!--RULE + --> +<xsl:template match="//gmd:MD_Metadata/gmd:contact" priority="1000" mode="M21"> + <svrl:fired-rule xmlns:svrl="http://purl.oclc.org/dsdl/svrl" + context="//gmd:MD_Metadata/gmd:contact"/> + <xsl:variable name="missing" + select="not(gmd:CI_ResponsibleParty/gmd:organisationName) or (gmd:CI_ResponsibleParty/gmd:organisationName/@gco:nilReason) or not(gmd:CI_ResponsibleParty/gmd:contactInfo/*/gmd:address/*/gmd:electronicMailAddress) or (gmd:CI_ResponsibleParty/gmd:contactInfo/*/gmd:address/*/gmd:electronicMailAddress/@gco:nilReason)"/> + <xsl:variable name="organisationName" + select="gmd:CI_ResponsibleParty/gmd:organisationName/*/text()"/> + <xsl:variable name="role" + select="normalize-space(gmd:CI_ResponsibleParty/gmd:role/*/@codeListValue)"/> + <xsl:variable name="emptyRole" select="$role=''"/> + <xsl:variable name="emailAddress" + select="gmd:CI_ResponsibleParty/gmd:contactInfo/*/gmd:address/*/gmd:electronicMailAddress/*/text()"/> + + <!--ASSERT + --> +<xsl:choose> + <xsl:when test="not($emptyRole)"/> + <xsl:otherwise> + <svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="not($emptyRole)"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$loc/strings/alert.M48.role/div"/> + <xsl:text/> + </svrl:text> + </svrl:failed-assert> + </xsl:otherwise> + </xsl:choose> + + <!--ASSERT + --> +<xsl:choose> + <xsl:when test="not($missing)"/> + <xsl:otherwise> + <svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="not($missing)"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$loc/strings/alert.M48.info/div"/> + <xsl:text/> + </svrl:text> + </svrl:failed-assert> + </xsl:otherwise> + </xsl:choose> + + <!--REPORT + --> +<xsl:if test="not($missing)"> + <svrl:successful-report xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="not($missing)"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$loc/strings/report.M48.info/div"/> + <xsl:text/> + <xsl:text/> + <xsl:copy-of select="$organisationName"/> + <xsl:text/> + (<xsl:text/> + <xsl:copy-of select="$role"/> + <xsl:text/>) + </svrl:text> + </svrl:successful-report> + </xsl:if> + <xsl:apply-templates select="*" mode="M21"/> + </xsl:template> + <xsl:template match="text()" priority="-1" mode="M21"/> + <xsl:template match="@*|node()" priority="-2" mode="M21"> + <xsl:apply-templates select="*" mode="M21"/> + </xsl:template> +</xsl:stylesheet> \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/data/config/schema_plugins/iso19139/schematron/schematron-rules-iso.sch b/src/main/webapp/WEB-INF/data/config/schema_plugins/iso19139/schematron/schematron-rules-iso.sch new file mode 100644 index 0000000..a55982e --- /dev/null +++ b/src/main/webapp/WEB-INF/data/config/schema_plugins/iso19139/schematron/schematron-rules-iso.sch @@ -0,0 +1,568 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<!-- + ~ Copyright (C) 2001-2016 Food and Agriculture Organization of the + ~ United Nations (FAO-UN), United Nations World Food Programme (WFP) + ~ and United Nations Environment Programme (UNEP) + ~ + ~ This program is free software; you can redistribute it and/or modify + ~ it under the terms of the GNU General Public License as published by + ~ the Free Software Foundation; either version 2 of the License, or (at + ~ your option) any later version. + ~ + ~ This program is distributed in the hope that it will be useful, but + ~ WITHOUT ANY WARRANTY; without even the implied warranty of + ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + ~ General Public License for more details. + ~ + ~ You should have received a copy of the GNU General Public License + ~ along with this program; if not, write to the Free Software + ~ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + ~ + ~ Contact: Jeroen Ticheler - FAO - Viale delle Terme di Caracalla 2, + ~ Rome - Italy. email: geonetwork@osgeo.org + --> + +<sch:schema xmlns:sch="http://purl.oclc.org/dsdl/schematron" + xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> + <!-- + +This Schematron schema merges three sets of Schematron rules +1. Schematron rules embedded in the GML 3.2 schema +2. Schematron rules implementing the Additional Constraints described in + ISO 19139 Table A.1 +3. INSPIRE IR on metadata for datasets and services. + + +This script was written by CSIRO for the Australia-New Zealand Land +Information Council (ANZLIC) as part of a project to develop an XML +implementation of the ANZLIC ISO Metadata Profile. + +December 2006, March 2007 + +Port back to good old Schematron-1.5 for use with schematron-report.xsl +and change titles for use as bare bones 19115/19139 schematron checker +in GN 2.2 onwards. + +Simon Pigot, 2007 +Francois Prunayre, 2008 +Etienne Taffoureau, 2008 + +This work is licensed under the Creative Commons Attribution 2.5 License. +To view a copy of this license, visit + http://creativecommons.org/licenses/by/2.5/au/ + +or send a letter to: + +Creative Commons, +543 Howard Street, 5th Floor, +San Francisco, California, 94105, +USA. + +--> + + <sch:title xmlns="http://www.w3.org/2001/XMLSchema">Schematron validation for ISO + 19115(19139)</sch:title> + <sch:ns prefix="gml" uri="http://www.opengis.net/gml"/> + <sch:ns prefix="gmd" uri="http://www.isotc211.org/2005/gmd"/> + <sch:ns prefix="srv" uri="http://www.isotc211.org/2005/srv"/> + <sch:ns prefix="gco" uri="http://www.isotc211.org/2005/gco"/> + <sch:ns prefix="geonet" uri="http://www.fao.org/geonetwork"/> + <sch:ns prefix="xlink" uri="http://www.w3.org/1999/xlink"/> + + <!-- Test that every CharacterString element has content or it's parent has a + valid nilReason attribute value - this is not necessary for geonetwork + because update-fixed-info.xsl supplies a gco:nilReason of missing for + all gco:CharacterString elements with no content and removes it if the + user fills in a value - this is the same for all gco:nilReason tests + used below - the test for gco:nilReason in 'inapplicable....' etc is + "mickey mouse" for that reason. --> + <sch:pattern> + <sch:title>$loc/strings/M6</sch:title> + <sch:rule context="*[gco:CharacterString]"> + <sch:report + test="(normalize-space(gco:CharacterString) = '') and (not(@gco:nilReason) or not(contains('inapplicable missing template unknown withheld',@gco:nilReason)))" + >$loc/strings/alert.M6.characterString</sch:report> + </sch:rule> + </sch:pattern> + + <sch:pattern> + <sch:title>$loc/strings/M7</sch:title> + <!-- UNVERIFIED --> + <sch:rule id="CRSLabelsPosType" context="//gml:DirectPositionType"> + <sch:report test="not(@srsDimension) or @srsName" + >$loc/strings/alert.M6.directPosition</sch:report> + <sch:report test="not(@axisLabels) or @srsName" + >$loc/strings/alert.M7.axisAndSrs</sch:report> + <sch:report test="not(@uomLabels) or @srsName" + >$loc/strings/alert.M7.uomAndSrs</sch:report> + <sch:report + test="(not(@uomLabels) and not(@axisLabels)) or (@uomLabels and @axisLabels)" + >$loc/strings/alert.M7.uomAndAxis</sch:report> + </sch:rule> + </sch:pattern> + + <!--anzlic/trunk/gml/3.2.0/gmd/citation.xsd--> + <!-- TEST 21 FXCHECK --> + <sch:pattern> + <sch:title>$loc/strings/M8</sch:title> + <sch:rule context="//*[gmd:CI_ResponsibleParty]"> + <sch:let name="count" value="(count(gmd:CI_ResponsibleParty/gmd:individualName[@gco:nilReason!='missing' or not(@gco:nilReason)]) + + count(gmd:CI_ResponsibleParty/gmd:organisationName[@gco:nilReason!='missing' or not(@gco:nilReason)]) + + count(gmd:CI_ResponsibleParty/gmd:positionName[@gco:nilReason!='missing' or not(@gco:nilReason)]))"/> + <sch:assert + test="$count > 0" + >$loc/strings/alert.M8</sch:assert> + <sch:report + test="$count > 0" + ><sch:value-of select="$loc/strings/report.M8"/> + <sch:value-of select="gmd:CI_ResponsibleParty/gmd:organisationName"/>- + <sch:value-of select="gmd:CI_ResponsibleParty/gmd:individualName"/> + </sch:report> + </sch:rule> + </sch:pattern> + <!-- anzlic/trunk/gml/3.2.0/gmd/constraints.xsd--> + <!-- TEST 4 FXCHECK --> + <sch:pattern> + <sch:title>$loc/strings/M9</sch:title> + <sch:rule context="//gmd:MD_LegalConstraints[gmd:accessConstraints/gmd:MD_RestrictionCode/@codeListValue='otherRestrictions'] + |//*[@gco:isoType='gmd:MD_LegalConstraints' and gmd:accessConstraints/gmd:MD_RestrictionCode/@codeListValue='otherRestrictions']"> + <sch:let name="access" value="not(gmd:otherConstraints) + or count(gmd:otherConstraints[gco:CharacterString = '']) > 0 + or gmd:otherConstraints/@gco:nilReason='missing'"/> + <sch:assert + test="$access = false()" + > + <sch:value-of select="$loc/strings/alert.M9.access"/> + </sch:assert> + <sch:report + test="$access = false()" + ><sch:value-of select="$loc/strings/report.M9"/> + <sch:value-of select="gmd:otherConstraints/gco:CharacterString"/> + </sch:report> + </sch:rule> + <sch:rule context="//gmd:MD_LegalConstraints[gmd:useConstraints/gmd:MD_RestrictionCode/@codeListValue='otherRestrictions'] + |//*[@gco:isoType='gmd:MD_LegalConstraints' and gmd:accessConstraints/gmd:MD_RestrictionCode/@codeListValue='otherRestrictions']"> + <sch:let name="use" value="(not(gmd:otherConstraints) or not(string(gmd:otherConstraints/gco:CharacterString)) or gmd:otherConstraints/@gco:nilReason='missing')"/> + <sch:assert + test="$use = false()" + ><sch:value-of select="$loc/strings/alert.M9.use"/> + </sch:assert> + <sch:report + test="$use = false()" + ><sch:value-of select="$loc/strings/report.M9"/> + <sch:value-of select="gmd:otherConstraints/gco:CharacterString"/> + </sch:report> + </sch:rule> + </sch:pattern> + <!-- anzlic/trunk/gml/3.2.0/gmd/content.xsd--> + <!-- TEST 13 FXCHECK --> + <sch:pattern> + <sch:title>$loc/strings/M10</sch:title> + <sch:rule context="//gmd:MD_Band[gmd:maxValue or gmd:minValue]"> + <sch:let name="values" value="(gmd:maxValue[@gco:nilReason!='missing' or not(@gco:nilReason)] + or gmd:minValue[@gco:nilReason!='missing' or not(@gco:nilReason)]) + and not(gmd:units)"/> + <sch:assert test="$values = false()" + ><sch:value-of select="$loc/strings/alert.M9"/> + </sch:assert> + <sch:report test="$values = false()" + > + <sch:value-of select="$loc/strings/report.M9.min"/> + <sch:value-of select="gmd:minValue"/> / + <sch:value-of select="$loc/strings/report.M9.max"/> + <sch:value-of select="gmd:maxValue"/> [ + <sch:value-of select="$loc/strings/report.M9.units"/> + <sch:value-of select="gmd:units"/>] + </sch:report> + <!-- FIXME : Rename to alert M10 --> + </sch:rule> + </sch:pattern> + <!-- anzlic/trunk/gml/3.2.0/gmd/dataQuality.xsd --> + <!-- TEST 10 FXCHECK --> + <sch:pattern> + <sch:title>$loc/strings/M11</sch:title> + <sch:rule context="//gmd:LI_Source"> + <sch:let name="extent" value="gmd:description[@gco:nilReason!='missing' or not(@gco:nilReason)] or gmd:sourceExtent"/> + <sch:assert test="$extent" + >$loc/strings/alert.M11</sch:assert> + <sch:report test="$extent" + >$loc/strings/report.M11</sch:report> + </sch:rule> + </sch:pattern> + <!-- TEST 7 FXCHECK --> + <sch:pattern> + <sch:title>$loc/strings/M13</sch:title> + <sch:rule context="//gmd:DQ_DataQuality[gmd:scope/gmd:DQ_Scope/gmd:level/gmd:MD_ScopeCode/@codeListValue='dataset' + or gmd:scope/gmd:DQ_Scope/gmd:level/gmd:MD_ScopeCode/@codeListValue='series']"> + <sch:let name="emptyStatement" value=" + count(*/gmd:LI_Lineage/gmd:source) + count(*/gmd:LI_Lineage/gmd:processStep) = 0 + and not(gmd:lineage/gmd:LI_Lineage/gmd:statement[@gco:nilReason!='missing' or not(@gco:nilReason)]) + "/> + <sch:assert + test="$emptyStatement = false()" + >$loc/strings/alert.M13</sch:assert> + <sch:report + test="$emptyStatement = false()" + >$loc/strings/report.M13</sch:report> + </sch:rule> + </sch:pattern> + <!-- TEST 8 FXCHECK --> + <sch:pattern> + <sch:title>$loc/strings/M14</sch:title> + <sch:rule context="//gmd:LI_Lineage"> + <sch:let name="emptySource" value="not(gmd:source) + and not(gmd:statement[@gco:nilReason!='missing' or not(@gco:nilReason)]) + and not(gmd:processStep)"/> + <sch:assert test="$emptySource = false()" + >$loc/strings/alert.M14</sch:assert> + <sch:report test="$emptySource = false()" + >$loc/strings/report.M14</sch:report> + + <sch:let name="emptyProcessStep" value="not(gmd:processStep) + and not(gmd:statement[@gco:nilReason!='missing' or not(@gco:nilReason)]) + and not(gmd:source)"/> + <sch:assert test="$emptyProcessStep = false()" + >$loc/strings/alert.M15</sch:assert> + <sch:report test="$emptyProcessStep = false()" + >$loc/strings/report.M15</sch:report> + </sch:rule> + </sch:pattern> + <!-- TEST 5 FXCHECK --> + <sch:pattern> + <sch:title>$loc/strings/M16</sch:title> + <sch:rule context="//gmd:DQ_DataQuality[gmd:scope/gmd:DQ_Scope/gmd:level/gmd:MD_ScopeCode/@codeListValue='dataset']"> + <sch:let name="noReportNorLineage" value="not(gmd:report) + and not(gmd:lineage)"/> + <sch:assert + test="$noReportNorLineage = false()" + >$loc/strings/alert.M16</sch:assert> + <sch:report + test="$noReportNorLineage = false()" + >$loc/strings/report.M16</sch:report> + </sch:rule> + </sch:pattern> + <!-- TEST 6 FXCHECK --> + <sch:pattern> + <sch:title>$loc/strings/M17</sch:title> + <sch:rule context="//gmd:DQ_Scope"> + <sch:let name="levelDesc" value="gmd:level/gmd:MD_ScopeCode/@codeListValue='dataset' + or gmd:level/gmd:MD_ScopeCode/@codeListValue='series' + or (gmd:levelDescription and ((normalize-space(gmd:levelDescription) != '') + or (gmd:levelDescription/gmd:MD_ScopeDescription) + or (gmd:levelDescription/@gco:nilReason + and contains('inapplicable missing template unknown withheld',gmd:levelDescription/@gco:nilReason))))"/> + <sch:assert + test="$levelDesc" + >$loc/strings/alert.M17</sch:assert> + <sch:report + test="$levelDesc" + ><sch:value-of select="$loc/strings/report.M17"/> <sch:value-of select="gmd:levelDescription"/></sch:report> + </sch:rule> + </sch:pattern> + <!-- anzlic/trunk/gml/3.2.0/gmd/distribution.xsd--> + <!-- TEST 14 FXCHECK --> + <sch:pattern> + <sch:title>$loc/strings/M18</sch:title> + <sch:rule context="//gmd:MD_Medium"> + <sch:let name="density" value="gmd:density and not(gmd:densityUnits[@gco:nilReason!='missing' or not(@gco:nilReason)])"/> + <sch:assert test="$density = false()" + >$loc/strings/alert.M18</sch:assert> + <sch:report test="$density = false()" + ><sch:value-of select="$loc/strings/report.M18"/> <sch:value-of select="gmd:density"/> + <sch:value-of select="gmd:densityUnits/gco:CharacterString"/></sch:report> + </sch:rule> + </sch:pattern> + <!-- TEST15 FXCHECK --> + <sch:pattern> + <sch:title>$loc/strings/M19</sch:title> + <sch:rule context="//gmd:MD_Distribution"> + <sch:let name="total" value="count(gmd:distributionFormat) + + count(gmd:distributor/gmd:MD_Distributor/gmd:distributorFormat)"/> + <sch:let name="count" value="count(gmd:distributionFormat)>0 + or count(gmd:distributor/gmd:MD_Distributor/gmd:distributorFormat)>0"/> + <sch:assert + test="$count" + >$loc/strings/alert.M19</sch:assert> + <sch:report + test="$count" + ><sch:value-of select="$total"/> <sch:value-of select="$loc/strings/report.M19"/></sch:report> + </sch:rule> + </sch:pattern> + <!-- anzlic/trunk/gml/3.2.0/gmd/extent.xsd--> + <!-- TEST 20 FXCHECK --> + <sch:pattern> + <sch:title>$loc/strings/M20</sch:title> + <sch:rule context="//gmd:EX_Extent"> + <sch:let name="count" value="count(gmd:description[@gco:nilReason!='missing' or not(@gco:nilReason)])>0 + or count(gmd:geographicElement)>0 + or count(gmd:temporalElement)>0 + or count(gmd:verticalElement)>0"/> + <sch:assert + test="$count" + >$loc/strings/alert.M20</sch:assert> + <sch:report + test="$count" + >$loc/strings/report.M20</sch:report> + </sch:rule> + </sch:pattern> + <!-- TEST 1 --> + <sch:pattern> + <sch:title>$loc/strings/M21</sch:title> + <sch:rule context="//gmd:MD_DataIdentification|//*[contains(@gco:isoType, 'MD_DataIdentification')]"> + <sch:let name="extent" value="(not(../../gmd:hierarchyLevel) + or ../../gmd:hierarchyLevel/gmd:MD_ScopeCode/@codeListValue='dataset' + or ../../gmd:hierarchyLevel/gmd:MD_ScopeCode/@codeListValue='') + and (count(gmd:extent/*/gmd:geographicElement/gmd:EX_GeographicBoundingBox) + + count (gmd:extent/*/gmd:geographicElement/gmd:EX_GeographicDescription))=0"/> + <sch:assert + test="$extent = false()" + >$loc/strings/alert.M21</sch:assert> + <sch:report + test="$extent = false()" + >$loc/strings/report.M21</sch:report> + </sch:rule> + </sch:pattern> + <!-- TEST 2 --> + <sch:pattern> + <sch:title>$loc/strings/M22</sch:title> + <sch:rule context="//gmd:MD_DataIdentification|//*[contains(@gco:isoType, 'MD_DataIdentification')]"> + <sch:let name="topic" value="(not(../../gmd:hierarchyLevel) + or ../../gmd:hierarchyLevel/gmd:MD_ScopeCode/@codeListValue='dataset' + or ../../gmd:hierarchyLevel/gmd:MD_ScopeCode/@codeListValue='series' + or ../../gmd:hierarchyLevel/gmd:MD_ScopeCode/@codeListValue='' ) + and not(gmd:topicCategory)"/> + <sch:assert + test="$topic = false()" + >$loc/strings/alert.M6</sch:assert> + <sch:report + test="$topic = false()" + ><sch:value-of select="$loc/strings/report.M6"/> "<sch:value-of select="gmd:topicCategory/gmd:MD_TopicCategoryCode/text()"/>"</sch:report> + </sch:rule> + </sch:pattern> + <!-- TEST 3 --> + <sch:pattern> + <sch:title>$loc/strings/M23</sch:title> + <sch:rule context="//gmd:MD_AggregateInformation"> + <sch:assert test="gmd:aggregateDataSetName or gmd:aggregateDataSetIdentifier" + >$loc/strings/alert.M23</sch:assert> + <sch:report test="gmd:aggregateDataSetName or gmd:aggregateDataSetIdentifier" + >$loc/strings/report.M23</sch:report> + </sch:rule> + </sch:pattern> + <!-- anzlic/trunk/gml/3.2.0/gmd/metadataEntity.xsd: --> + <!--<sch:pattern> + <sch:title>$loc/strings/M24</sch:title> + <!-\- UNVERIFIED -\-> + <sch:rule + context="//gmd:MD_Metadata/gmd:language|//*[@gco:isoType='gmd:MD_Metadata']/gmd:language"> + <sch:assert + test=". and ((normalize-space(.) != '') + or (normalize-space(./gco:CharacterString) != '') + or (./gmd:LanguageCode) + or (./@gco:nilReason + and contains('inapplicable missing template unknown withheld',./@gco:nilReason)))" + >$loc/strings/alert.M24</sch:assert> + <!-\- language: documented if not defined by the encoding standard. + It can't be documented by the encoding because GML doesn't + include xml:language. -\-> + </sch:rule> + </sch:pattern>--> + <sch:pattern> + <sch:title>$loc/strings/M25</sch:title> + <!-- UNVERIFIED --> + <sch:rule context="//gmd:MD_Metadata|//*[@gco:isoType='gmd:MD_Metadata']"> + <!-- characterSet: documented if ISO/IEC 10646 not used and not defined by + the encoding standard. Can't tell if XML declaration has an encoding + attribute. --> + </sch:rule> + </sch:pattern> + + <!-- anzlic/trunk/gml/3.2.0/gmd/metadataExtension.xsd--> + <!-- TEST 16 --> + <sch:pattern> + <sch:title>$loc/strings/M26</sch:title> + <sch:rule context="//gmd:MD_ExtendedElementInformation"> + <sch:assert + test="(gmd:dataType/gmd:MD_DatatypeCode/@codeListValue='codelist' + or gmd:dataType/gmd:MD_DatatypeCode/@codeListValue='enumeration' + or gmd:dataType/gmd:MD_DatatypeCode/@codeListValue='codelistElement') + or (gmd:obligation and ((normalize-space(gmd:obligation) != '') + or (gmd:obligation/gmd:MD_ObligationCode) + or (gmd:obligation/@gco:nilReason and contains('inapplicable missing template unknown withheld',gmd:obligation/@gco:nilReason))))" + >$loc/strings/alert.M26.obligation</sch:assert> + <sch:assert + test="(gmd:dataType/gmd:MD_DatatypeCode/@codeListValue='codelist' + or gmd:dataType/gmd:MD_DatatypeCode/@codeListValue='enumeration' + or gmd:dataType/gmd:MD_DatatypeCode/@codeListValue='codelistElement') + or (gmd:maximumOccurrence and ((normalize-space(gmd:maximumOccurrence) != '') + or (normalize-space(gmd:maximumOccurrence/gco:CharacterString) != '') + or (gmd:maximumOccurrence/@gco:nilReason and contains('inapplicable missing template unknown withheld',gmd:maximumOccurrence/@gco:nilReason))))" + >$loc/strings/alert.M26.maximumOccurence</sch:assert> + <sch:assert + test="(gmd:dataType/gmd:MD_DatatypeCode/@codeListValue='codelist' + or gmd:dataType/gmd:MD_DatatypeCode/@codeListValue='enumeration' + or gmd:dataType/gmd:MD_DatatypeCode/@codeListValue='codelistElement') + or (gmd:domainValue and ((normalize-space(gmd:domainValue) != '') + or (normalize-space(gmd:domainValue/gco:CharacterString) != '') + or (gmd:domainValue/@gco:nilReason and contains('inapplicable missing template unknown withheld',gmd:domainValue/@gco:nilReason))))" + >$loc/strings/alert.M26.domainValue</sch:assert> + </sch:rule> + </sch:pattern> + <!-- TEST 17 --> + <sch:pattern> + <sch:title>$loc/strings/M27</sch:title> + <sch:rule context="//gmd:MD_ExtendedElementInformation"> + <sch:let name="condition" value="gmd:obligation/gmd:MD_ObligationCode='conditional' + and (not(gmd:condition) or count(gmd:condition[@gco:nilReason='missing'])>0)"/> + <sch:assert + test="$condition = false()" + > + <sch:value-of select="$loc/strings/alert.M27"/> + </sch:assert> + <sch:report + test="$condition = false()" + > + <sch:value-of select="$loc/strings/report.M27"/> + </sch:report> + </sch:rule> + </sch:pattern> + <!-- TEST 18 --> + <sch:pattern> + <sch:title>$loc/strings/M28</sch:title> + <sch:rule context="//gmd:MD_ExtendedElementInformation"> + <sch:let name="domain" value="gmd:dataType/gmd:MD_DatatypeCode/@codeListValue='codelistElement' and not(gmd:domainCode)"/> + <sch:assert + test="$domain = false()" + >$loc/strings/alert.M28</sch:assert> + <sch:report + test="$domain = false()" + >$loc/strings/report.M28</sch:report> + </sch:rule> + </sch:pattern> + <!-- TEST 19 --> + <sch:pattern> + <sch:title>$loc/strings/M29</sch:title> + <sch:rule context="//gmd:MD_ExtendedElementInformation"> + <sch:let name="shortName" value="gmd:dataType/gmd:MD_DatatypeCode/@codeListValue!='codelistElement' and not(gmd:shortName)"/> + <sch:assert + test="$shortName = false()" + >$loc/strings/alert.M29</sch:assert> + <sch:report + test="$shortName = false()" + >$loc/strings/report.M29</sch:report> + </sch:rule> + </sch:pattern> + <!-- anzlic/trunk/gml/3.2.0/gmd/spatialRepresentation.xsd--> + <!-- TEST 12 --> + <sch:pattern> + <sch:title>$loc/strings/M30</sch:title> + <sch:rule context="//gmd:MD_Georectified"> + <sch:let name="cpd" value="(gmd:checkPointAvailability/gco:Boolean='1' or gmd:checkPointAvailability/gco:Boolean='true') and + (not(gmd:checkPointDescription) or count(gmd:checkPointDescription[@gco:nilReason='missing'])>0)"/> + <sch:assert + test="$cpd = false()" + >$loc/strings/alert.M30</sch:assert> + <sch:report + test="$cpd = false()" + >$loc/strings/report.M30</sch:report> + </sch:rule> + </sch:pattern> + <!-- --> + <sch:pattern> + <sch:title>$loc/strings/M61</sch:title> + <sch:rule context="//gmd:MD_Metadata/gmd:hierarchyLevel|//*[@gco:isoType='gmd:MD_Metadata']/gmd:hierarchyLevel"> + <sch:let name="hl" value="count(../gmd:hierarchyLevel/gmd:MD_ScopeCode[@codeListValue='dataset' or @codeListValue=''])=0 and + (not(../gmd:hierarchyLevelName) or ../gmd:hierarchyLevelName/@gco:nilReason)"/> + <sch:let name="resourceType" value="string-join(../gmd:hierarchyLevel/*/@codeListValue, ',')"/> + + <sch:assert + test="$hl = false()" + >$loc/strings/alert.M61</sch:assert> + <sch:report + test="$hl = false()" + ><sch:value-of select=" $loc/strings/report.M61"/> "<sch:value-of select="$resourceType"/>"</sch:report> + </sch:rule> + </sch:pattern> + + + <sch:pattern> + <sch:title>$loc/strings/requiredElements</sch:title> + <sch:rule context="//gmd:identificationInfo/*/gmd:abstract"> + <sch:let name="text" value="(gco:CharacterString | .//gmd:LocalisedCharacterString)[normalize-space(text()) != '']"/> + <sch:let name="nilReason" value="@gco:nilReason and not(./node())"/> + <sch:assert test="$text or $nilReason"> + <sch:value-of select="$loc/strings/alert.requiredAbstract"/> + </sch:assert> + <sch:report test="$text or $nilReason" > + <sch:value-of select="$loc/strings/report.requiredAbstract"/> + </sch:report> + </sch:rule> + <sch:rule context="//gmd:identificationInfo/*/gmd:citation/*/gmd:title"> + <sch:let name="text" value="(gco:CharacterString | .//gmd:LocalisedCharacterString)[normalize-space(text()) != '']"/> + <sch:let name="nilReason" value="@gco:nilReason and not(./node())"/> + <sch:assert test="$text or $nilReason"> + <sch:value-of select="$loc/strings/alert.requiredTitle"/> + </sch:assert> + <sch:report test="$text or $nilReason" > + <sch:value-of select="$loc/strings/report.requiredTitle"/> + </sch:report> + </sch:rule> + <sch:rule context="//gmd:identificationInfo/*/gmd:citation/*/gmd:date/*/gmd:date"> + <sch:let name="text" value="gco:Date|gco:DateTime"/> + <sch:let name="nilReason" value="@gco:nilReason and not(./node())"/> + <sch:assert test="$text or $nilReason"> + <sch:value-of select="$loc/strings/alert.requiredDate"/> + </sch:assert> + <sch:report test="$text or $nilReason" > + <sch:value-of select="$loc/strings/report.requiredDate"/> + </sch:report> + </sch:rule> + <sch:rule context="//gmd:identificationInfo/*/gmd:citation/*/gmd:date/*/gmd:dateType"> + <sch:let name="text" value="gmd:CI_DateTypeCode"/> + <sch:let name="nilReason" value="@gco:nilReason and not(./node())"/> + <sch:assert test="$text or $nilReason"> + <sch:value-of select="$loc/strings/alert.requiredDateType"/> + </sch:assert> + <sch:report test="$text or $nilReason" > + <sch:value-of select="$loc/strings/report.requiredDateType"/> + </sch:report> + </sch:rule> + <sch:rule context="/*/gmd:contact"> + <sch:assert test="node() | @gco:nilReason"> + <sch:value-of select="$loc/strings/alert.requiredContact"/> + </sch:assert> + <sch:report test="node() | @gco:nilReason" > + <sch:value-of select="$loc/strings/report.requiredContact"/> + </sch:report> + </sch:rule> + <sch:rule context="/*/gmd:language"> + <sch:assert test="node() | @gco:nilReason"> + <sch:value-of select="$loc/strings/alert.requiredLanguage"/> + </sch:assert> + <sch:report test="node() | @gco:nilReason" > + <sch:value-of select="$loc/strings/report.requiredLanguage"/> + </sch:report> + </sch:rule> + <sch:rule context="//gmd:identificationInfo/*/gmd:language"> + <sch:assert test="node() | @gco:nilReason"> + <sch:value-of select="$loc/strings/alert.requiredLanguage"/> + </sch:assert> + <sch:report test="node() | @gco:nilReason" > + <sch:value-of select="$loc/strings/report.requiredLanguage"/> + </sch:report> + </sch:rule> + </sch:pattern> + + <sch:pattern> + <sch:title>$loc/strings/requireCitation</sch:title> + <sch:rule context="//gmd:identificationInfo/*/gmd:citation"> + <sch:assert test="gmd:CI_Citation | @gco:nilReason"> + <sch:value-of select="$loc/strings/alert.requiredCitation"/> + </sch:assert> + <sch:report test="gmd:CI_Citation | @gco:nilReason" > + <sch:value-of select="$loc/strings/report.requiredCitation"/> + </sch:report> + </sch:rule> + </sch:pattern> + +</sch:schema> diff --git a/src/main/webapp/WEB-INF/data/config/schema_plugins/iso19139/schematron/schematron-rules-iso.xsl b/src/main/webapp/WEB-INF/data/config/schema_plugins/iso19139/schematron/schematron-rules-iso.xsl new file mode 100644 index 0000000..1e91364 --- /dev/null +++ b/src/main/webapp/WEB-INF/data/config/schema_plugins/iso19139/schematron/schematron-rules-iso.xsl @@ -0,0 +1,2144 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<xsl:stylesheet xmlns:xhtml="http://www.w3.org/1999/xhtml" + xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:xs="http://www.w3.org/2001/XMLSchema" + xmlns:schold="http://www.ascc.net/xml/schematron" + xmlns:iso="http://purl.oclc.org/dsdl/schematron" + xmlns:gml="http://www.opengis.net/gml" + xmlns:gmd="http://www.isotc211.org/2005/gmd" + xmlns:srv="http://www.isotc211.org/2005/srv" + xmlns:gco="http://www.isotc211.org/2005/gco" + xmlns:geonet="http://www.fao.org/geonetwork" + xmlns:xlink="http://www.w3.org/1999/xlink" + exclude-result-prefixes="#all" + version="2.0"><!--Implementers: please note that overriding process-prolog or process-root is + the preferred method for meta-stylesheets to use where possible. + --> +<xsl:param name="archiveDirParameter"/> + <xsl:param name="archiveNameParameter"/> + <xsl:param name="fileNameParameter"/> + <xsl:param name="fileDirParameter"/> + <xsl:variable name="document-uri"> + <xsl:value-of select="document-uri(/)"/> + </xsl:variable> + + <!--PHASES--> + + +<!--PROLOG--> +<xsl:output xmlns:svrl="http://purl.oclc.org/dsdl/svrl" method="xml" + omit-xml-declaration="no" + standalone="yes" + indent="yes"/> + <xsl:include xmlns:svrl="http://purl.oclc.org/dsdl/svrl" href="../../../xsl/utils-fn.xsl"/> + <xsl:param xmlns:svrl="http://purl.oclc.org/dsdl/svrl" name="lang"/> + <xsl:param xmlns:svrl="http://purl.oclc.org/dsdl/svrl" name="thesaurusDir"/> + <xsl:param xmlns:svrl="http://purl.oclc.org/dsdl/svrl" name="rule"/> + <xsl:variable xmlns:svrl="http://purl.oclc.org/dsdl/svrl" name="loc" + select="document(concat('../loc/', $lang, '/', $rule, '.xml'))"/> + + <!--XSD TYPES FOR XSLT2--> + + +<!--KEYS AND FUNCTIONS--> + + +<!--DEFAULT RULES--> + + +<!--MODE: SCHEMATRON-SELECT-FULL-PATH--> +<!--This mode can be used to generate an ugly though full XPath for locators + --> +<xsl:template match="*" mode="schematron-select-full-path"> + <xsl:apply-templates select="." mode="schematron-get-full-path"/> + </xsl:template> + + <!--MODE: SCHEMATRON-FULL-PATH--> +<!--This mode can be used to generate an ugly though full XPath for locators + --> +<xsl:template match="*" mode="schematron-get-full-path"> + <xsl:apply-templates select="parent::*" mode="schematron-get-full-path"/> + <xsl:text>/</xsl:text> + <xsl:choose> + <xsl:when test="namespace-uri()=''"> + <xsl:value-of select="name()"/> + <xsl:variable name="p_1" + select="1+ count(preceding-sibling::*[name()=name(current())])"/> + <xsl:if test="$p_1>1 or following-sibling::*[name()=name(current())]">[<xsl:value-of select="$p_1"/>]</xsl:if> + </xsl:when> + <xsl:otherwise> + <xsl:text>*[local-name()='</xsl:text> + <xsl:value-of select="local-name()"/> + <xsl:text>']</xsl:text> + <xsl:variable name="p_2" + select="1+ count(preceding-sibling::*[local-name()=local-name(current())])"/> + <xsl:if test="$p_2>1 or following-sibling::*[local-name()=local-name(current())]">[<xsl:value-of select="$p_2"/>]</xsl:if> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + <xsl:template match="@*" mode="schematron-get-full-path"> + <xsl:text>/</xsl:text> + <xsl:choose> + <xsl:when test="namespace-uri()=''">@ + <xsl:value-of select="name()"/> + </xsl:when> + <xsl:otherwise> + <xsl:text>@*[local-name()='</xsl:text> + <xsl:value-of select="local-name()"/> + <xsl:text>' and namespace-uri()='</xsl:text> + <xsl:value-of select="namespace-uri()"/> + <xsl:text>']</xsl:text> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <!--MODE: SCHEMATRON-FULL-PATH-2--> +<!--This mode can be used to generate prefixed XPath for humans--> +<xsl:template match="node() | @*" mode="schematron-get-full-path-2"> + <xsl:for-each select="ancestor-or-self::*"> + <xsl:text>/</xsl:text> + <xsl:value-of select="name(.)"/> + <xsl:if test="preceding-sibling::*[name(.)=name(current())]"> + <xsl:text>[</xsl:text> + <xsl:value-of select="count(preceding-sibling::*[name(.)=name(current())])+1"/> + <xsl:text>]</xsl:text> + </xsl:if> + </xsl:for-each> + <xsl:if test="not(self::*)"> + <xsl:text/>/@ + <xsl:value-of select="name(.)"/> + </xsl:if> + </xsl:template> + <!--MODE: SCHEMATRON-FULL-PATH-3--> +<!--This mode can be used to generate prefixed XPath for humans + (Top-level element has index) + --> +<xsl:template match="node() | @*" mode="schematron-get-full-path-3"> + <xsl:for-each select="ancestor-or-self::*"> + <xsl:text>/</xsl:text> + <xsl:value-of select="name(.)"/> + <xsl:if test="parent::*"> + <xsl:text>[</xsl:text> + <xsl:value-of select="count(preceding-sibling::*[name(.)=name(current())])+1"/> + <xsl:text>]</xsl:text> + </xsl:if> + </xsl:for-each> + <xsl:if test="not(self::*)"> + <xsl:text/>/@ + <xsl:value-of select="name(.)"/> + </xsl:if> + </xsl:template> + + <!--MODE: GENERATE-ID-FROM-PATH--> +<xsl:template match="/" mode="generate-id-from-path"/> + <xsl:template match="text()" mode="generate-id-from-path"> + <xsl:apply-templates select="parent::*" mode="generate-id-from-path"/> + <xsl:value-of select="concat('.text-', 1+count(preceding-sibling::text()), '-')"/> + </xsl:template> + <xsl:template match="comment()" mode="generate-id-from-path"> + <xsl:apply-templates select="parent::*" mode="generate-id-from-path"/> + <xsl:value-of select="concat('.comment-', 1+count(preceding-sibling::comment()), '-')"/> + </xsl:template> + <xsl:template match="processing-instruction()" mode="generate-id-from-path"> + <xsl:apply-templates select="parent::*" mode="generate-id-from-path"/> + <xsl:value-of select="concat('.processing-instruction-', 1+count(preceding-sibling::processing-instruction()), '-')"/> + </xsl:template> + <xsl:template match="@*" mode="generate-id-from-path"> + <xsl:apply-templates select="parent::*" mode="generate-id-from-path"/> + <xsl:value-of select="concat('.@', name())"/> + </xsl:template> + <xsl:template match="*" mode="generate-id-from-path" priority="-0.5"> + <xsl:apply-templates select="parent::*" mode="generate-id-from-path"/> + <xsl:text>.</xsl:text> + <xsl:value-of select="concat('.',name(),'-',1+count(preceding-sibling::*[name()=name(current())]),'-')"/> + </xsl:template> + + <!--MODE: GENERATE-ID-2--> +<xsl:template match="/" mode="generate-id-2">U</xsl:template> + <xsl:template match="*" mode="generate-id-2" priority="2"> + <xsl:text>U</xsl:text> + <xsl:number level="multiple" count="*"/> + </xsl:template> + <xsl:template match="node()" mode="generate-id-2"> + <xsl:text>U.</xsl:text> + <xsl:number level="multiple" count="*"/> + <xsl:text>n</xsl:text> + <xsl:number count="node()"/> + </xsl:template> + <xsl:template match="@*" mode="generate-id-2"> + <xsl:text>U.</xsl:text> + <xsl:number level="multiple" count="*"/> + <xsl:text>_</xsl:text> + <xsl:value-of select="string-length(local-name(.))"/> + <xsl:text>_</xsl:text> + <xsl:value-of select="translate(name(),':','.')"/> + </xsl:template> + <!--Strip characters--><xsl:template match="text()" priority="-1"/> + + <!--SCHEMA SETUP--> +<xsl:template match="/"> + <svrl:schematron-output xmlns:svrl="http://purl.oclc.org/dsdl/svrl" + title="Schematron validation for ISO
		19115(19139)" + schemaVersion=""> + <xsl:comment> + <xsl:value-of select="$archiveDirParameter"/> +  + <xsl:value-of select="$archiveNameParameter"/> +  + <xsl:value-of select="$fileNameParameter"/> +  + <xsl:value-of select="$fileDirParameter"/> + </xsl:comment> + <svrl:ns-prefix-in-attribute-values uri="http://www.opengis.net/gml" prefix="gml"/> + <svrl:ns-prefix-in-attribute-values uri="http://www.isotc211.org/2005/gmd" prefix="gmd"/> + <svrl:ns-prefix-in-attribute-values uri="http://www.isotc211.org/2005/srv" prefix="srv"/> + <svrl:ns-prefix-in-attribute-values uri="http://www.isotc211.org/2005/gco" prefix="gco"/> + <svrl:ns-prefix-in-attribute-values uri="http://www.fao.org/geonetwork" prefix="geonet"/> + <svrl:ns-prefix-in-attribute-values uri="http://www.w3.org/1999/xlink" prefix="xlink"/> + <svrl:active-pattern> + <xsl:attribute name="document"> + <xsl:value-of select="document-uri(/)"/> + </xsl:attribute> + <xsl:attribute name="name"> + <xsl:value-of select="$loc/strings/M6"/> + </xsl:attribute> + <xsl:apply-templates/> + </svrl:active-pattern> + <xsl:apply-templates select="/" mode="M7"/> + <svrl:active-pattern> + <xsl:attribute name="document"> + <xsl:value-of select="document-uri(/)"/> + </xsl:attribute> + <xsl:attribute name="name"> + <xsl:value-of select="$loc/strings/M7"/> + </xsl:attribute> + <xsl:apply-templates/> + </svrl:active-pattern> + <xsl:apply-templates select="/" mode="M8"/> + <svrl:active-pattern> + <xsl:attribute name="document"> + <xsl:value-of select="document-uri(/)"/> + </xsl:attribute> + <xsl:attribute name="name"> + <xsl:value-of select="$loc/strings/M8"/> + </xsl:attribute> + <xsl:apply-templates/> + </svrl:active-pattern> + <xsl:apply-templates select="/" mode="M9"/> + <svrl:active-pattern> + <xsl:attribute name="document"> + <xsl:value-of select="document-uri(/)"/> + </xsl:attribute> + <xsl:attribute name="name"> + <xsl:value-of select="$loc/strings/M9"/> + </xsl:attribute> + <xsl:apply-templates/> + </svrl:active-pattern> + <xsl:apply-templates select="/" mode="M10"/> + <svrl:active-pattern> + <xsl:attribute name="document"> + <xsl:value-of select="document-uri(/)"/> + </xsl:attribute> + <xsl:attribute name="name"> + <xsl:value-of select="$loc/strings/M10"/> + </xsl:attribute> + <xsl:apply-templates/> + </svrl:active-pattern> + <xsl:apply-templates select="/" mode="M11"/> + <svrl:active-pattern> + <xsl:attribute name="document"> + <xsl:value-of select="document-uri(/)"/> + </xsl:attribute> + <xsl:attribute name="name"> + <xsl:value-of select="$loc/strings/M11"/> + </xsl:attribute> + <xsl:apply-templates/> + </svrl:active-pattern> + <xsl:apply-templates select="/" mode="M12"/> + <svrl:active-pattern> + <xsl:attribute name="document"> + <xsl:value-of select="document-uri(/)"/> + </xsl:attribute> + <xsl:attribute name="name"> + <xsl:value-of select="$loc/strings/M13"/> + </xsl:attribute> + <xsl:apply-templates/> + </svrl:active-pattern> + <xsl:apply-templates select="/" mode="M13"/> + <svrl:active-pattern> + <xsl:attribute name="document"> + <xsl:value-of select="document-uri(/)"/> + </xsl:attribute> + <xsl:attribute name="name"> + <xsl:value-of select="$loc/strings/M14"/> + </xsl:attribute> + <xsl:apply-templates/> + </svrl:active-pattern> + <xsl:apply-templates select="/" mode="M14"/> + <svrl:active-pattern> + <xsl:attribute name="document"> + <xsl:value-of select="document-uri(/)"/> + </xsl:attribute> + <xsl:attribute name="name"> + <xsl:value-of select="$loc/strings/M16"/> + </xsl:attribute> + <xsl:apply-templates/> + </svrl:active-pattern> + <xsl:apply-templates select="/" mode="M15"/> + <svrl:active-pattern> + <xsl:attribute name="document"> + <xsl:value-of select="document-uri(/)"/> + </xsl:attribute> + <xsl:attribute name="name"> + <xsl:value-of select="$loc/strings/M17"/> + </xsl:attribute> + <xsl:apply-templates/> + </svrl:active-pattern> + <xsl:apply-templates select="/" mode="M16"/> + <svrl:active-pattern> + <xsl:attribute name="document"> + <xsl:value-of select="document-uri(/)"/> + </xsl:attribute> + <xsl:attribute name="name"> + <xsl:value-of select="$loc/strings/M18"/> + </xsl:attribute> + <xsl:apply-templates/> + </svrl:active-pattern> + <xsl:apply-templates select="/" mode="M17"/> + <svrl:active-pattern> + <xsl:attribute name="document"> + <xsl:value-of select="document-uri(/)"/> + </xsl:attribute> + <xsl:attribute name="name"> + <xsl:value-of select="$loc/strings/M19"/> + </xsl:attribute> + <xsl:apply-templates/> + </svrl:active-pattern> + <xsl:apply-templates select="/" mode="M18"/> + <svrl:active-pattern> + <xsl:attribute name="document"> + <xsl:value-of select="document-uri(/)"/> + </xsl:attribute> + <xsl:attribute name="name"> + <xsl:value-of select="$loc/strings/M20"/> + </xsl:attribute> + <xsl:apply-templates/> + </svrl:active-pattern> + <xsl:apply-templates select="/" mode="M19"/> + <svrl:active-pattern> + <xsl:attribute name="document"> + <xsl:value-of select="document-uri(/)"/> + </xsl:attribute> + <xsl:attribute name="name"> + <xsl:value-of select="$loc/strings/M21"/> + </xsl:attribute> + <xsl:apply-templates/> + </svrl:active-pattern> + <xsl:apply-templates select="/" mode="M20"/> + <svrl:active-pattern> + <xsl:attribute name="document"> + <xsl:value-of select="document-uri(/)"/> + </xsl:attribute> + <xsl:attribute name="name"> + <xsl:value-of select="$loc/strings/M22"/> + </xsl:attribute> + <xsl:apply-templates/> + </svrl:active-pattern> + <xsl:apply-templates select="/" mode="M21"/> + <svrl:active-pattern> + <xsl:attribute name="document"> + <xsl:value-of select="document-uri(/)"/> + </xsl:attribute> + <xsl:attribute name="name"> + <xsl:value-of select="$loc/strings/M23"/> + </xsl:attribute> + <xsl:apply-templates/> + </svrl:active-pattern> + <xsl:apply-templates select="/" mode="M22"/> + <svrl:active-pattern> + <xsl:attribute name="document"> + <xsl:value-of select="document-uri(/)"/> + </xsl:attribute> + <xsl:attribute name="name"> + <xsl:value-of select="$loc/strings/M25"/> + </xsl:attribute> + <xsl:apply-templates/> + </svrl:active-pattern> + <xsl:apply-templates select="/" mode="M23"/> + <svrl:active-pattern> + <xsl:attribute name="document"> + <xsl:value-of select="document-uri(/)"/> + </xsl:attribute> + <xsl:attribute name="name"> + <xsl:value-of select="$loc/strings/M26"/> + </xsl:attribute> + <xsl:apply-templates/> + </svrl:active-pattern> + <xsl:apply-templates select="/" mode="M24"/> + <svrl:active-pattern> + <xsl:attribute name="document"> + <xsl:value-of select="document-uri(/)"/> + </xsl:attribute> + <xsl:attribute name="name"> + <xsl:value-of select="$loc/strings/M27"/> + </xsl:attribute> + <xsl:apply-templates/> + </svrl:active-pattern> + <xsl:apply-templates select="/" mode="M25"/> + <svrl:active-pattern> + <xsl:attribute name="document"> + <xsl:value-of select="document-uri(/)"/> + </xsl:attribute> + <xsl:attribute name="name"> + <xsl:value-of select="$loc/strings/M28"/> + </xsl:attribute> + <xsl:apply-templates/> + </svrl:active-pattern> + <xsl:apply-templates select="/" mode="M26"/> + <svrl:active-pattern> + <xsl:attribute name="document"> + <xsl:value-of select="document-uri(/)"/> + </xsl:attribute> + <xsl:attribute name="name"> + <xsl:value-of select="$loc/strings/M29"/> + </xsl:attribute> + <xsl:apply-templates/> + </svrl:active-pattern> + <xsl:apply-templates select="/" mode="M27"/> + <svrl:active-pattern> + <xsl:attribute name="document"> + <xsl:value-of select="document-uri(/)"/> + </xsl:attribute> + <xsl:attribute name="name"> + <xsl:value-of select="$loc/strings/M30"/> + </xsl:attribute> + <xsl:apply-templates/> + </svrl:active-pattern> + <xsl:apply-templates select="/" mode="M28"/> + <svrl:active-pattern> + <xsl:attribute name="document"> + <xsl:value-of select="document-uri(/)"/> + </xsl:attribute> + <xsl:attribute name="name"> + <xsl:value-of select="$loc/strings/M61"/> + </xsl:attribute> + <xsl:apply-templates/> + </svrl:active-pattern> + <xsl:apply-templates select="/" mode="M29"/> + <svrl:active-pattern> + <xsl:attribute name="document"> + <xsl:value-of select="document-uri(/)"/> + </xsl:attribute> + <xsl:attribute name="name"> + <xsl:value-of select="$loc/strings/requiredElements"/> + </xsl:attribute> + <xsl:apply-templates/> + </svrl:active-pattern> + <xsl:apply-templates select="/" mode="M30"/> + <svrl:active-pattern> + <xsl:attribute name="document"> + <xsl:value-of select="document-uri(/)"/> + </xsl:attribute> + <xsl:attribute name="name"> + <xsl:value-of select="$loc/strings/requireCitation"/> + </xsl:attribute> + <xsl:apply-templates/> + </svrl:active-pattern> + <xsl:apply-templates select="/" mode="M31"/> + </svrl:schematron-output> + </xsl:template> + + <!--SCHEMATRON PATTERNS--> +<svrl:text xmlns:svrl="http://purl.oclc.org/dsdl/svrl">Schematron validation for ISO + 19115(19139)</svrl:text> + + <!--PATTERN + $loc/strings/M6--> +<svrl:text xmlns:svrl="http://purl.oclc.org/dsdl/svrl"> + <xsl:copy-of select="$loc/strings/M6"/> + </svrl:text> + + <!--RULE + --> +<xsl:template match="*[gco:CharacterString]" priority="1000" mode="M7"> + <svrl:fired-rule xmlns:svrl="http://purl.oclc.org/dsdl/svrl" context="*[gco:CharacterString]"/> + + <!--REPORT + --> +<xsl:if test="(normalize-space(gco:CharacterString) = '') and (not(@gco:nilReason) or not(contains('inapplicable missing template unknown withheld',@gco:nilReason)))"> + <svrl:successful-report xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="(normalize-space(gco:CharacterString) = '') and (not(@gco:nilReason) or not(contains('inapplicable missing template unknown withheld',@gco:nilReason)))"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:copy-of select="$loc/strings/alert.M6.characterString"/> + </svrl:text> + </svrl:successful-report> + </xsl:if> + <xsl:apply-templates select="*" mode="M7"/> + </xsl:template> + <xsl:template match="text()" priority="-1" mode="M7"/> + <xsl:template match="@*|node()" priority="-2" mode="M7"> + <xsl:apply-templates select="*" mode="M7"/> + </xsl:template> + + <!--PATTERN + $loc/strings/M7--> +<svrl:text xmlns:svrl="http://purl.oclc.org/dsdl/svrl"> + <xsl:copy-of select="$loc/strings/M7"/> + </svrl:text> + + <!--RULE + CRSLabelsPosType--> +<xsl:template match="//gml:DirectPositionType" priority="1000" mode="M8"> + <svrl:fired-rule xmlns:svrl="http://purl.oclc.org/dsdl/svrl" context="//gml:DirectPositionType" + id="CRSLabelsPosType"/> + + <!--REPORT + --> +<xsl:if test="not(@srsDimension) or @srsName"> + <svrl:successful-report xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="not(@srsDimension) or @srsName"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:copy-of select="$loc/strings/alert.M6.directPosition"/> + </svrl:text> + </svrl:successful-report> + </xsl:if> + + <!--REPORT + --> +<xsl:if test="not(@axisLabels) or @srsName"> + <svrl:successful-report xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="not(@axisLabels) or @srsName"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:copy-of select="$loc/strings/alert.M7.axisAndSrs"/> + </svrl:text> + </svrl:successful-report> + </xsl:if> + + <!--REPORT + --> +<xsl:if test="not(@uomLabels) or @srsName"> + <svrl:successful-report xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="not(@uomLabels) or @srsName"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:copy-of select="$loc/strings/alert.M7.uomAndSrs"/> + </svrl:text> + </svrl:successful-report> + </xsl:if> + + <!--REPORT + --> +<xsl:if test="(not(@uomLabels) and not(@axisLabels)) or (@uomLabels and @axisLabels)"> + <svrl:successful-report xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="(not(@uomLabels) and not(@axisLabels)) or (@uomLabels and @axisLabels)"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:copy-of select="$loc/strings/alert.M7.uomAndAxis"/> + </svrl:text> + </svrl:successful-report> + </xsl:if> + <xsl:apply-templates select="*" mode="M8"/> + </xsl:template> + <xsl:template match="text()" priority="-1" mode="M8"/> + <xsl:template match="@*|node()" priority="-2" mode="M8"> + <xsl:apply-templates select="*" mode="M8"/> + </xsl:template> + + <!--PATTERN + $loc/strings/M8--> +<svrl:text xmlns:svrl="http://purl.oclc.org/dsdl/svrl"> + <xsl:copy-of select="$loc/strings/M8"/> + </svrl:text> + + <!--RULE + --> +<xsl:template match="//*[gmd:CI_ResponsibleParty]" priority="1000" mode="M9"> + <svrl:fired-rule xmlns:svrl="http://purl.oclc.org/dsdl/svrl" + context="//*[gmd:CI_ResponsibleParty]"/> + <xsl:variable name="count" + select="(count(gmd:CI_ResponsibleParty/gmd:individualName[@gco:nilReason!='missing' or not(@gco:nilReason)]) + count(gmd:CI_ResponsibleParty/gmd:organisationName[@gco:nilReason!='missing' or not(@gco:nilReason)]) + count(gmd:CI_ResponsibleParty/gmd:positionName[@gco:nilReason!='missing' or not(@gco:nilReason)]))"/> + + <!--ASSERT + --> +<xsl:choose> + <xsl:when test="$count > 0"/> + <xsl:otherwise> + <svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="$count > 0"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:copy-of select="$loc/strings/alert.M8"/> + </svrl:text> + </svrl:failed-assert> + </xsl:otherwise> + </xsl:choose> + + <!--REPORT + --> +<xsl:if test="$count > 0"> + <svrl:successful-report xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="$count > 0"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$loc/strings/report.M8"/> + <xsl:text/> + <xsl:text/> + <xsl:copy-of select="gmd:CI_ResponsibleParty/gmd:organisationName"/> + <xsl:text/>- + <xsl:text/> + <xsl:copy-of select="gmd:CI_ResponsibleParty/gmd:individualName"/> + <xsl:text/> + </svrl:text> + </svrl:successful-report> + </xsl:if> + <xsl:apply-templates select="*" mode="M9"/> + </xsl:template> + <xsl:template match="text()" priority="-1" mode="M9"/> + <xsl:template match="@*|node()" priority="-2" mode="M9"> + <xsl:apply-templates select="*" mode="M9"/> + </xsl:template> + + <!--PATTERN + $loc/strings/M9--> +<svrl:text xmlns:svrl="http://purl.oclc.org/dsdl/svrl"> + <xsl:copy-of select="$loc/strings/M9"/> + </svrl:text> + + <!--RULE + --> +<xsl:template match="//gmd:MD_LegalConstraints[gmd:accessConstraints/gmd:MD_RestrictionCode/@codeListValue='otherRestrictions'] |//*[@gco:isoType='gmd:MD_LegalConstraints' and gmd:accessConstraints/gmd:MD_RestrictionCode/@codeListValue='otherRestrictions']" + priority="1001" + mode="M10"> + <svrl:fired-rule xmlns:svrl="http://purl.oclc.org/dsdl/svrl" + context="//gmd:MD_LegalConstraints[gmd:accessConstraints/gmd:MD_RestrictionCode/@codeListValue='otherRestrictions'] |//*[@gco:isoType='gmd:MD_LegalConstraints' and gmd:accessConstraints/gmd:MD_RestrictionCode/@codeListValue='otherRestrictions']"/> + <xsl:variable name="access" + select="not(gmd:otherConstraints) or count(gmd:otherConstraints[gco:CharacterString = '']) > 0 or gmd:otherConstraints/@gco:nilReason='missing'"/> + + <!--ASSERT + --> +<xsl:choose> + <xsl:when test="$access = false()"/> + <xsl:otherwise> + <svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="$access = false()"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$loc/strings/alert.M9.access"/> + <xsl:text/> + </svrl:text> + </svrl:failed-assert> + </xsl:otherwise> + </xsl:choose> + + <!--REPORT + --> +<xsl:if test="$access = false()"> + <svrl:successful-report xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="$access = false()"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$loc/strings/report.M9"/> + <xsl:text/> + <xsl:text/> + <xsl:copy-of select="gmd:otherConstraints/gco:CharacterString"/> + <xsl:text/> + </svrl:text> + </svrl:successful-report> + </xsl:if> + <xsl:apply-templates select="*" mode="M10"/> + </xsl:template> + + <!--RULE + --> +<xsl:template match="//gmd:MD_LegalConstraints[gmd:useConstraints/gmd:MD_RestrictionCode/@codeListValue='otherRestrictions'] |//*[@gco:isoType='gmd:MD_LegalConstraints' and gmd:accessConstraints/gmd:MD_RestrictionCode/@codeListValue='otherRestrictions']" + priority="1000" + mode="M10"> + <svrl:fired-rule xmlns:svrl="http://purl.oclc.org/dsdl/svrl" + context="//gmd:MD_LegalConstraints[gmd:useConstraints/gmd:MD_RestrictionCode/@codeListValue='otherRestrictions'] |//*[@gco:isoType='gmd:MD_LegalConstraints' and gmd:accessConstraints/gmd:MD_RestrictionCode/@codeListValue='otherRestrictions']"/> + <xsl:variable name="use" + select="(not(gmd:otherConstraints) or not(string(gmd:otherConstraints/gco:CharacterString)) or gmd:otherConstraints/@gco:nilReason='missing')"/> + + <!--ASSERT + --> +<xsl:choose> + <xsl:when test="$use = false()"/> + <xsl:otherwise> + <svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="$use = false()"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$loc/strings/alert.M9.use"/> + <xsl:text/> + </svrl:text> + </svrl:failed-assert> + </xsl:otherwise> + </xsl:choose> + + <!--REPORT + --> +<xsl:if test="$use = false()"> + <svrl:successful-report xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="$use = false()"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$loc/strings/report.M9"/> + <xsl:text/> + <xsl:text/> + <xsl:copy-of select="gmd:otherConstraints/gco:CharacterString"/> + <xsl:text/> + </svrl:text> + </svrl:successful-report> + </xsl:if> + <xsl:apply-templates select="*" mode="M10"/> + </xsl:template> + <xsl:template match="text()" priority="-1" mode="M10"/> + <xsl:template match="@*|node()" priority="-2" mode="M10"> + <xsl:apply-templates select="*" mode="M10"/> + </xsl:template> + + <!--PATTERN + $loc/strings/M10--> +<svrl:text xmlns:svrl="http://purl.oclc.org/dsdl/svrl"> + <xsl:copy-of select="$loc/strings/M10"/> + </svrl:text> + + <!--RULE + --> +<xsl:template match="//gmd:MD_Band[gmd:maxValue or gmd:minValue]" priority="1000" mode="M11"> + <svrl:fired-rule xmlns:svrl="http://purl.oclc.org/dsdl/svrl" + context="//gmd:MD_Band[gmd:maxValue or gmd:minValue]"/> + <xsl:variable name="values" + select="(gmd:maxValue[@gco:nilReason!='missing' or not(@gco:nilReason)] or gmd:minValue[@gco:nilReason!='missing' or not(@gco:nilReason)]) and not(gmd:units)"/> + + <!--ASSERT + --> +<xsl:choose> + <xsl:when test="$values = false()"/> + <xsl:otherwise> + <svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="$values = false()"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$loc/strings/alert.M9"/> + <xsl:text/> + </svrl:text> + </svrl:failed-assert> + </xsl:otherwise> + </xsl:choose> + + <!--REPORT + --> +<xsl:if test="$values = false()"> + <svrl:successful-report xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="$values = false()"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$loc/strings/report.M9.min"/> + <xsl:text/> + <xsl:text/> + <xsl:copy-of select="gmd:minValue"/> + <xsl:text/> / + <xsl:text/> + <xsl:copy-of select="$loc/strings/report.M9.max"/> + <xsl:text/> + <xsl:text/> + <xsl:copy-of select="gmd:maxValue"/> + <xsl:text/> [ + <xsl:text/> + <xsl:copy-of select="$loc/strings/report.M9.units"/> + <xsl:text/> + <xsl:text/> + <xsl:copy-of select="gmd:units"/> + <xsl:text/>] + </svrl:text> + </svrl:successful-report> + </xsl:if> + <xsl:apply-templates select="*" mode="M11"/> + </xsl:template> + <xsl:template match="text()" priority="-1" mode="M11"/> + <xsl:template match="@*|node()" priority="-2" mode="M11"> + <xsl:apply-templates select="*" mode="M11"/> + </xsl:template> + + <!--PATTERN + $loc/strings/M11--> +<svrl:text xmlns:svrl="http://purl.oclc.org/dsdl/svrl"> + <xsl:copy-of select="$loc/strings/M11"/> + </svrl:text> + + <!--RULE + --> +<xsl:template match="//gmd:LI_Source" priority="1000" mode="M12"> + <svrl:fired-rule xmlns:svrl="http://purl.oclc.org/dsdl/svrl" context="//gmd:LI_Source"/> + <xsl:variable name="extent" + select="gmd:description[@gco:nilReason!='missing' or not(@gco:nilReason)] or gmd:sourceExtent"/> + + <!--ASSERT + --> +<xsl:choose> + <xsl:when test="$extent"/> + <xsl:otherwise> + <svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="$extent"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:copy-of select="$loc/strings/alert.M11"/> + </svrl:text> + </svrl:failed-assert> + </xsl:otherwise> + </xsl:choose> + + <!--REPORT + --> +<xsl:if test="$extent"> + <svrl:successful-report xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="$extent"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:copy-of select="$loc/strings/report.M11"/> + </svrl:text> + </svrl:successful-report> + </xsl:if> + <xsl:apply-templates select="*" mode="M12"/> + </xsl:template> + <xsl:template match="text()" priority="-1" mode="M12"/> + <xsl:template match="@*|node()" priority="-2" mode="M12"> + <xsl:apply-templates select="*" mode="M12"/> + </xsl:template> + + <!--PATTERN + $loc/strings/M13--> +<svrl:text xmlns:svrl="http://purl.oclc.org/dsdl/svrl"> + <xsl:copy-of select="$loc/strings/M13"/> + </svrl:text> + + <!--RULE + --> +<xsl:template match="//gmd:DQ_DataQuality[gmd:scope/gmd:DQ_Scope/gmd:level/gmd:MD_ScopeCode/@codeListValue='dataset' or gmd:scope/gmd:DQ_Scope/gmd:level/gmd:MD_ScopeCode/@codeListValue='series']" + priority="1000" + mode="M13"> + <svrl:fired-rule xmlns:svrl="http://purl.oclc.org/dsdl/svrl" + context="//gmd:DQ_DataQuality[gmd:scope/gmd:DQ_Scope/gmd:level/gmd:MD_ScopeCode/@codeListValue='dataset' or gmd:scope/gmd:DQ_Scope/gmd:level/gmd:MD_ScopeCode/@codeListValue='series']"/> + <xsl:variable name="emptyStatement" + select=" count(*/gmd:LI_Lineage/gmd:source) + count(*/gmd:LI_Lineage/gmd:processStep) = 0 and not(gmd:lineage/gmd:LI_Lineage/gmd:statement[@gco:nilReason!='missing' or not(@gco:nilReason)]) "/> + + <!--ASSERT + --> +<xsl:choose> + <xsl:when test="$emptyStatement = false()"/> + <xsl:otherwise> + <svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="$emptyStatement = false()"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:copy-of select="$loc/strings/alert.M13"/> + </svrl:text> + </svrl:failed-assert> + </xsl:otherwise> + </xsl:choose> + + <!--REPORT + --> +<xsl:if test="$emptyStatement = false()"> + <svrl:successful-report xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="$emptyStatement = false()"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:copy-of select="$loc/strings/report.M13"/> + </svrl:text> + </svrl:successful-report> + </xsl:if> + <xsl:apply-templates select="*" mode="M13"/> + </xsl:template> + <xsl:template match="text()" priority="-1" mode="M13"/> + <xsl:template match="@*|node()" priority="-2" mode="M13"> + <xsl:apply-templates select="*" mode="M13"/> + </xsl:template> + + <!--PATTERN + $loc/strings/M14--> +<svrl:text xmlns:svrl="http://purl.oclc.org/dsdl/svrl"> + <xsl:copy-of select="$loc/strings/M14"/> + </svrl:text> + + <!--RULE + --> +<xsl:template match="//gmd:LI_Lineage" priority="1000" mode="M14"> + <svrl:fired-rule xmlns:svrl="http://purl.oclc.org/dsdl/svrl" context="//gmd:LI_Lineage"/> + <xsl:variable name="emptySource" + select="not(gmd:source) and not(gmd:statement[@gco:nilReason!='missing' or not(@gco:nilReason)]) and not(gmd:processStep)"/> + + <!--ASSERT + --> +<xsl:choose> + <xsl:when test="$emptySource = false()"/> + <xsl:otherwise> + <svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="$emptySource = false()"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:copy-of select="$loc/strings/alert.M14"/> + </svrl:text> + </svrl:failed-assert> + </xsl:otherwise> + </xsl:choose> + + <!--REPORT + --> +<xsl:if test="$emptySource = false()"> + <svrl:successful-report xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="$emptySource = false()"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:copy-of select="$loc/strings/report.M14"/> + </svrl:text> + </svrl:successful-report> + </xsl:if> + <xsl:variable name="emptyProcessStep" + select="not(gmd:processStep) and not(gmd:statement[@gco:nilReason!='missing' or not(@gco:nilReason)]) and not(gmd:source)"/> + + <!--ASSERT + --> +<xsl:choose> + <xsl:when test="$emptyProcessStep = false()"/> + <xsl:otherwise> + <svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="$emptyProcessStep = false()"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:copy-of select="$loc/strings/alert.M15"/> + </svrl:text> + </svrl:failed-assert> + </xsl:otherwise> + </xsl:choose> + + <!--REPORT + --> +<xsl:if test="$emptyProcessStep = false()"> + <svrl:successful-report xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="$emptyProcessStep = false()"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:copy-of select="$loc/strings/report.M15"/> + </svrl:text> + </svrl:successful-report> + </xsl:if> + <xsl:apply-templates select="*" mode="M14"/> + </xsl:template> + <xsl:template match="text()" priority="-1" mode="M14"/> + <xsl:template match="@*|node()" priority="-2" mode="M14"> + <xsl:apply-templates select="*" mode="M14"/> + </xsl:template> + + <!--PATTERN + $loc/strings/M16--> +<svrl:text xmlns:svrl="http://purl.oclc.org/dsdl/svrl"> + <xsl:copy-of select="$loc/strings/M16"/> + </svrl:text> + + <!--RULE + --> +<xsl:template match="//gmd:DQ_DataQuality[gmd:scope/gmd:DQ_Scope/gmd:level/gmd:MD_ScopeCode/@codeListValue='dataset']" + priority="1000" + mode="M15"> + <svrl:fired-rule xmlns:svrl="http://purl.oclc.org/dsdl/svrl" + context="//gmd:DQ_DataQuality[gmd:scope/gmd:DQ_Scope/gmd:level/gmd:MD_ScopeCode/@codeListValue='dataset']"/> + <xsl:variable name="noReportNorLineage" select="not(gmd:report) and not(gmd:lineage)"/> + + <!--ASSERT + --> +<xsl:choose> + <xsl:when test="$noReportNorLineage = false()"/> + <xsl:otherwise> + <svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="$noReportNorLineage = false()"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:copy-of select="$loc/strings/alert.M16"/> + </svrl:text> + </svrl:failed-assert> + </xsl:otherwise> + </xsl:choose> + + <!--REPORT + --> +<xsl:if test="$noReportNorLineage = false()"> + <svrl:successful-report xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="$noReportNorLineage = false()"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:copy-of select="$loc/strings/report.M16"/> + </svrl:text> + </svrl:successful-report> + </xsl:if> + <xsl:apply-templates select="*" mode="M15"/> + </xsl:template> + <xsl:template match="text()" priority="-1" mode="M15"/> + <xsl:template match="@*|node()" priority="-2" mode="M15"> + <xsl:apply-templates select="*" mode="M15"/> + </xsl:template> + + <!--PATTERN + $loc/strings/M17--> +<svrl:text xmlns:svrl="http://purl.oclc.org/dsdl/svrl"> + <xsl:copy-of select="$loc/strings/M17"/> + </svrl:text> + + <!--RULE + --> +<xsl:template match="//gmd:DQ_Scope" priority="1000" mode="M16"> + <svrl:fired-rule xmlns:svrl="http://purl.oclc.org/dsdl/svrl" context="//gmd:DQ_Scope"/> + <xsl:variable name="levelDesc" + select="gmd:level/gmd:MD_ScopeCode/@codeListValue='dataset' or gmd:level/gmd:MD_ScopeCode/@codeListValue='series' or (gmd:levelDescription and ((normalize-space(gmd:levelDescription) != '') or (gmd:levelDescription/gmd:MD_ScopeDescription) or (gmd:levelDescription/@gco:nilReason and contains('inapplicable missing template unknown withheld',gmd:levelDescription/@gco:nilReason))))"/> + + <!--ASSERT + --> +<xsl:choose> + <xsl:when test="$levelDesc"/> + <xsl:otherwise> + <svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="$levelDesc"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:copy-of select="$loc/strings/alert.M17"/> + </svrl:text> + </svrl:failed-assert> + </xsl:otherwise> + </xsl:choose> + + <!--REPORT + --> +<xsl:if test="$levelDesc"> + <svrl:successful-report xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="$levelDesc"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$loc/strings/report.M17"/> + <xsl:text/> + <xsl:text/> + <xsl:copy-of select="gmd:levelDescription"/> + <xsl:text/> + </svrl:text> + </svrl:successful-report> + </xsl:if> + <xsl:apply-templates select="*" mode="M16"/> + </xsl:template> + <xsl:template match="text()" priority="-1" mode="M16"/> + <xsl:template match="@*|node()" priority="-2" mode="M16"> + <xsl:apply-templates select="*" mode="M16"/> + </xsl:template> + + <!--PATTERN + $loc/strings/M18--> +<svrl:text xmlns:svrl="http://purl.oclc.org/dsdl/svrl"> + <xsl:copy-of select="$loc/strings/M18"/> + </svrl:text> + + <!--RULE + --> +<xsl:template match="//gmd:MD_Medium" priority="1000" mode="M17"> + <svrl:fired-rule xmlns:svrl="http://purl.oclc.org/dsdl/svrl" context="//gmd:MD_Medium"/> + <xsl:variable name="density" + select="gmd:density and not(gmd:densityUnits[@gco:nilReason!='missing' or not(@gco:nilReason)])"/> + + <!--ASSERT + --> +<xsl:choose> + <xsl:when test="$density = false()"/> + <xsl:otherwise> + <svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="$density = false()"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:copy-of select="$loc/strings/alert.M18"/> + </svrl:text> + </svrl:failed-assert> + </xsl:otherwise> + </xsl:choose> + + <!--REPORT + --> +<xsl:if test="$density = false()"> + <svrl:successful-report xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="$density = false()"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$loc/strings/report.M18"/> + <xsl:text/> + <xsl:text/> + <xsl:copy-of select="gmd:density"/> + <xsl:text/> + <xsl:text/> + <xsl:copy-of select="gmd:densityUnits/gco:CharacterString"/> + <xsl:text/> + </svrl:text> + </svrl:successful-report> + </xsl:if> + <xsl:apply-templates select="*" mode="M17"/> + </xsl:template> + <xsl:template match="text()" priority="-1" mode="M17"/> + <xsl:template match="@*|node()" priority="-2" mode="M17"> + <xsl:apply-templates select="*" mode="M17"/> + </xsl:template> + + <!--PATTERN + $loc/strings/M19--> +<svrl:text xmlns:svrl="http://purl.oclc.org/dsdl/svrl"> + <xsl:copy-of select="$loc/strings/M19"/> + </svrl:text> + + <!--RULE + --> +<xsl:template match="//gmd:MD_Distribution" priority="1000" mode="M18"> + <svrl:fired-rule xmlns:svrl="http://purl.oclc.org/dsdl/svrl" context="//gmd:MD_Distribution"/> + <xsl:variable name="total" + select="count(gmd:distributionFormat) + count(gmd:distributor/gmd:MD_Distributor/gmd:distributorFormat)"/> + <xsl:variable name="count" + select="count(gmd:distributionFormat)>0 or count(gmd:distributor/gmd:MD_Distributor/gmd:distributorFormat)>0"/> + + <!--ASSERT + --> +<xsl:choose> + <xsl:when test="$count"/> + <xsl:otherwise> + <svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="$count"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:copy-of select="$loc/strings/alert.M19"/> + </svrl:text> + </svrl:failed-assert> + </xsl:otherwise> + </xsl:choose> + + <!--REPORT + --> +<xsl:if test="$count"> + <svrl:successful-report xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="$count"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$total"/> + <xsl:text/> + <xsl:text/> + <xsl:copy-of select="$loc/strings/report.M19"/> + <xsl:text/> + </svrl:text> + </svrl:successful-report> + </xsl:if> + <xsl:apply-templates select="*" mode="M18"/> + </xsl:template> + <xsl:template match="text()" priority="-1" mode="M18"/> + <xsl:template match="@*|node()" priority="-2" mode="M18"> + <xsl:apply-templates select="*" mode="M18"/> + </xsl:template> + + <!--PATTERN + $loc/strings/M20--> +<svrl:text xmlns:svrl="http://purl.oclc.org/dsdl/svrl"> + <xsl:copy-of select="$loc/strings/M20"/> + </svrl:text> + + <!--RULE + --> +<xsl:template match="//gmd:EX_Extent" priority="1000" mode="M19"> + <svrl:fired-rule xmlns:svrl="http://purl.oclc.org/dsdl/svrl" context="//gmd:EX_Extent"/> + <xsl:variable name="count" + select="count(gmd:description[@gco:nilReason!='missing' or not(@gco:nilReason)])>0 or count(gmd:geographicElement)>0 or count(gmd:temporalElement)>0 or count(gmd:verticalElement)>0"/> + + <!--ASSERT + --> +<xsl:choose> + <xsl:when test="$count"/> + <xsl:otherwise> + <svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="$count"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:copy-of select="$loc/strings/alert.M20"/> + </svrl:text> + </svrl:failed-assert> + </xsl:otherwise> + </xsl:choose> + + <!--REPORT + --> +<xsl:if test="$count"> + <svrl:successful-report xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="$count"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:copy-of select="$loc/strings/report.M20"/> + </svrl:text> + </svrl:successful-report> + </xsl:if> + <xsl:apply-templates select="*" mode="M19"/> + </xsl:template> + <xsl:template match="text()" priority="-1" mode="M19"/> + <xsl:template match="@*|node()" priority="-2" mode="M19"> + <xsl:apply-templates select="*" mode="M19"/> + </xsl:template> + + <!--PATTERN + $loc/strings/M21--> +<svrl:text xmlns:svrl="http://purl.oclc.org/dsdl/svrl"> + <xsl:copy-of select="$loc/strings/M21"/> + </svrl:text> + + <!--RULE + --> +<xsl:template match="//gmd:MD_DataIdentification|//*[contains(@gco:isoType, 'MD_DataIdentification')]" + priority="1000" + mode="M20"> + <svrl:fired-rule xmlns:svrl="http://purl.oclc.org/dsdl/svrl" + context="//gmd:MD_DataIdentification|//*[contains(@gco:isoType, 'MD_DataIdentification')]"/> + <xsl:variable name="extent" + select="(not(../../gmd:hierarchyLevel) or ../../gmd:hierarchyLevel/gmd:MD_ScopeCode/@codeListValue='dataset' or ../../gmd:hierarchyLevel/gmd:MD_ScopeCode/@codeListValue='') and (count(gmd:extent/*/gmd:geographicElement/gmd:EX_GeographicBoundingBox) + count (gmd:extent/*/gmd:geographicElement/gmd:EX_GeographicDescription))=0"/> + + <!--ASSERT + --> +<xsl:choose> + <xsl:when test="$extent = false()"/> + <xsl:otherwise> + <svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="$extent = false()"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:copy-of select="$loc/strings/alert.M21"/> + </svrl:text> + </svrl:failed-assert> + </xsl:otherwise> + </xsl:choose> + + <!--REPORT + --> +<xsl:if test="$extent = false()"> + <svrl:successful-report xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="$extent = false()"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:copy-of select="$loc/strings/report.M21"/> + </svrl:text> + </svrl:successful-report> + </xsl:if> + <xsl:apply-templates select="*" mode="M20"/> + </xsl:template> + <xsl:template match="text()" priority="-1" mode="M20"/> + <xsl:template match="@*|node()" priority="-2" mode="M20"> + <xsl:apply-templates select="*" mode="M20"/> + </xsl:template> + + <!--PATTERN + $loc/strings/M22--> +<svrl:text xmlns:svrl="http://purl.oclc.org/dsdl/svrl"> + <xsl:copy-of select="$loc/strings/M22"/> + </svrl:text> + + <!--RULE + --> +<xsl:template match="//gmd:MD_DataIdentification|//*[contains(@gco:isoType, 'MD_DataIdentification')]" + priority="1000" + mode="M21"> + <svrl:fired-rule xmlns:svrl="http://purl.oclc.org/dsdl/svrl" + context="//gmd:MD_DataIdentification|//*[contains(@gco:isoType, 'MD_DataIdentification')]"/> + <xsl:variable name="topic" + select="(not(../../gmd:hierarchyLevel) or ../../gmd:hierarchyLevel/gmd:MD_ScopeCode/@codeListValue='dataset' or ../../gmd:hierarchyLevel/gmd:MD_ScopeCode/@codeListValue='series' or ../../gmd:hierarchyLevel/gmd:MD_ScopeCode/@codeListValue='' ) and not(gmd:topicCategory)"/> + + <!--ASSERT + --> +<xsl:choose> + <xsl:when test="$topic = false()"/> + <xsl:otherwise> + <svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="$topic = false()"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:copy-of select="$loc/strings/alert.M6"/> + </svrl:text> + </svrl:failed-assert> + </xsl:otherwise> + </xsl:choose> + + <!--REPORT + --> +<xsl:if test="$topic = false()"> + <svrl:successful-report xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="$topic = false()"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$loc/strings/report.M6"/> + <xsl:text/> "<xsl:text/> + <xsl:copy-of select="gmd:topicCategory/gmd:MD_TopicCategoryCode/text()"/> + <xsl:text/>"</svrl:text> + </svrl:successful-report> + </xsl:if> + <xsl:apply-templates select="*" mode="M21"/> + </xsl:template> + <xsl:template match="text()" priority="-1" mode="M21"/> + <xsl:template match="@*|node()" priority="-2" mode="M21"> + <xsl:apply-templates select="*" mode="M21"/> + </xsl:template> + + <!--PATTERN + $loc/strings/M23--> +<svrl:text xmlns:svrl="http://purl.oclc.org/dsdl/svrl"> + <xsl:copy-of select="$loc/strings/M23"/> + </svrl:text> + + <!--RULE + --> +<xsl:template match="//gmd:MD_AggregateInformation" priority="1000" mode="M22"> + <svrl:fired-rule xmlns:svrl="http://purl.oclc.org/dsdl/svrl" + context="//gmd:MD_AggregateInformation"/> + + <!--ASSERT + --> +<xsl:choose> + <xsl:when test="gmd:aggregateDataSetName or gmd:aggregateDataSetIdentifier"/> + <xsl:otherwise> + <svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="gmd:aggregateDataSetName or gmd:aggregateDataSetIdentifier"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:copy-of select="$loc/strings/alert.M23"/> + </svrl:text> + </svrl:failed-assert> + </xsl:otherwise> + </xsl:choose> + + <!--REPORT + --> +<xsl:if test="gmd:aggregateDataSetName or gmd:aggregateDataSetIdentifier"> + <svrl:successful-report xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="gmd:aggregateDataSetName or gmd:aggregateDataSetIdentifier"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:copy-of select="$loc/strings/report.M23"/> + </svrl:text> + </svrl:successful-report> + </xsl:if> + <xsl:apply-templates select="*" mode="M22"/> + </xsl:template> + <xsl:template match="text()" priority="-1" mode="M22"/> + <xsl:template match="@*|node()" priority="-2" mode="M22"> + <xsl:apply-templates select="*" mode="M22"/> + </xsl:template> + + <!--PATTERN + $loc/strings/M25--> +<svrl:text xmlns:svrl="http://purl.oclc.org/dsdl/svrl"> + <xsl:copy-of select="$loc/strings/M25"/> + </svrl:text> + + <!--RULE + --> +<xsl:template match="//gmd:MD_Metadata|//*[@gco:isoType='gmd:MD_Metadata']" priority="1000" + mode="M23"> + <svrl:fired-rule xmlns:svrl="http://purl.oclc.org/dsdl/svrl" + context="//gmd:MD_Metadata|//*[@gco:isoType='gmd:MD_Metadata']"/> + <xsl:apply-templates select="*" mode="M23"/> + </xsl:template> + <xsl:template match="text()" priority="-1" mode="M23"/> + <xsl:template match="@*|node()" priority="-2" mode="M23"> + <xsl:apply-templates select="*" mode="M23"/> + </xsl:template> + + <!--PATTERN + $loc/strings/M26--> +<svrl:text xmlns:svrl="http://purl.oclc.org/dsdl/svrl"> + <xsl:copy-of select="$loc/strings/M26"/> + </svrl:text> + + <!--RULE + --> +<xsl:template match="//gmd:MD_ExtendedElementInformation" priority="1000" mode="M24"> + <svrl:fired-rule xmlns:svrl="http://purl.oclc.org/dsdl/svrl" + context="//gmd:MD_ExtendedElementInformation"/> + + <!--ASSERT + --> +<xsl:choose> + <xsl:when test="(gmd:dataType/gmd:MD_DatatypeCode/@codeListValue='codelist' or gmd:dataType/gmd:MD_DatatypeCode/@codeListValue='enumeration' or gmd:dataType/gmd:MD_DatatypeCode/@codeListValue='codelistElement') or (gmd:obligation and ((normalize-space(gmd:obligation) != '') or (gmd:obligation/gmd:MD_ObligationCode) or (gmd:obligation/@gco:nilReason and contains('inapplicable missing template unknown withheld',gmd:obligation/@gco:nilReason))))"/> + <xsl:otherwise> + <svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="(gmd:dataType/gmd:MD_DatatypeCode/@codeListValue='codelist' or gmd:dataType/gmd:MD_DatatypeCode/@codeListValue='enumeration' or gmd:dataType/gmd:MD_DatatypeCode/@codeListValue='codelistElement') or (gmd:obligation and ((normalize-space(gmd:obligation) != '') or (gmd:obligation/gmd:MD_ObligationCode) or (gmd:obligation/@gco:nilReason and contains('inapplicable missing template unknown withheld',gmd:obligation/@gco:nilReason))))"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:copy-of select="$loc/strings/alert.M26.obligation"/> + </svrl:text> + </svrl:failed-assert> + </xsl:otherwise> + </xsl:choose> + + <!--ASSERT + --> +<xsl:choose> + <xsl:when test="(gmd:dataType/gmd:MD_DatatypeCode/@codeListValue='codelist' or gmd:dataType/gmd:MD_DatatypeCode/@codeListValue='enumeration' or gmd:dataType/gmd:MD_DatatypeCode/@codeListValue='codelistElement') or (gmd:maximumOccurrence and ((normalize-space(gmd:maximumOccurrence) != '') or (normalize-space(gmd:maximumOccurrence/gco:CharacterString) != '') or (gmd:maximumOccurrence/@gco:nilReason and contains('inapplicable missing template unknown withheld',gmd:maximumOccurrence/@gco:nilReason))))"/> + <xsl:otherwise> + <svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="(gmd:dataType/gmd:MD_DatatypeCode/@codeListValue='codelist' or gmd:dataType/gmd:MD_DatatypeCode/@codeListValue='enumeration' or gmd:dataType/gmd:MD_DatatypeCode/@codeListValue='codelistElement') or (gmd:maximumOccurrence and ((normalize-space(gmd:maximumOccurrence) != '') or (normalize-space(gmd:maximumOccurrence/gco:CharacterString) != '') or (gmd:maximumOccurrence/@gco:nilReason and contains('inapplicable missing template unknown withheld',gmd:maximumOccurrence/@gco:nilReason))))"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:copy-of select="$loc/strings/alert.M26.maximumOccurence"/> + </svrl:text> + </svrl:failed-assert> + </xsl:otherwise> + </xsl:choose> + + <!--ASSERT + --> +<xsl:choose> + <xsl:when test="(gmd:dataType/gmd:MD_DatatypeCode/@codeListValue='codelist' or gmd:dataType/gmd:MD_DatatypeCode/@codeListValue='enumeration' or gmd:dataType/gmd:MD_DatatypeCode/@codeListValue='codelistElement') or (gmd:domainValue and ((normalize-space(gmd:domainValue) != '') or (normalize-space(gmd:domainValue/gco:CharacterString) != '') or (gmd:domainValue/@gco:nilReason and contains('inapplicable missing template unknown withheld',gmd:domainValue/@gco:nilReason))))"/> + <xsl:otherwise> + <svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="(gmd:dataType/gmd:MD_DatatypeCode/@codeListValue='codelist' or gmd:dataType/gmd:MD_DatatypeCode/@codeListValue='enumeration' or gmd:dataType/gmd:MD_DatatypeCode/@codeListValue='codelistElement') or (gmd:domainValue and ((normalize-space(gmd:domainValue) != '') or (normalize-space(gmd:domainValue/gco:CharacterString) != '') or (gmd:domainValue/@gco:nilReason and contains('inapplicable missing template unknown withheld',gmd:domainValue/@gco:nilReason))))"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:copy-of select="$loc/strings/alert.M26.domainValue"/> + </svrl:text> + </svrl:failed-assert> + </xsl:otherwise> + </xsl:choose> + <xsl:apply-templates select="*" mode="M24"/> + </xsl:template> + <xsl:template match="text()" priority="-1" mode="M24"/> + <xsl:template match="@*|node()" priority="-2" mode="M24"> + <xsl:apply-templates select="*" mode="M24"/> + </xsl:template> + + <!--PATTERN + $loc/strings/M27--> +<svrl:text xmlns:svrl="http://purl.oclc.org/dsdl/svrl"> + <xsl:copy-of select="$loc/strings/M27"/> + </svrl:text> + + <!--RULE + --> +<xsl:template match="//gmd:MD_ExtendedElementInformation" priority="1000" mode="M25"> + <svrl:fired-rule xmlns:svrl="http://purl.oclc.org/dsdl/svrl" + context="//gmd:MD_ExtendedElementInformation"/> + <xsl:variable name="condition" + select="gmd:obligation/gmd:MD_ObligationCode='conditional' and (not(gmd:condition) or count(gmd:condition[@gco:nilReason='missing'])>0)"/> + + <!--ASSERT + --> +<xsl:choose> + <xsl:when test="$condition = false()"/> + <xsl:otherwise> + <svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="$condition = false()"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$loc/strings/alert.M27"/> + <xsl:text/> + </svrl:text> + </svrl:failed-assert> + </xsl:otherwise> + </xsl:choose> + + <!--REPORT + --> +<xsl:if test="$condition = false()"> + <svrl:successful-report xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="$condition = false()"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$loc/strings/report.M27"/> + <xsl:text/> + </svrl:text> + </svrl:successful-report> + </xsl:if> + <xsl:apply-templates select="*" mode="M25"/> + </xsl:template> + <xsl:template match="text()" priority="-1" mode="M25"/> + <xsl:template match="@*|node()" priority="-2" mode="M25"> + <xsl:apply-templates select="*" mode="M25"/> + </xsl:template> + + <!--PATTERN + $loc/strings/M28--> +<svrl:text xmlns:svrl="http://purl.oclc.org/dsdl/svrl"> + <xsl:copy-of select="$loc/strings/M28"/> + </svrl:text> + + <!--RULE + --> +<xsl:template match="//gmd:MD_ExtendedElementInformation" priority="1000" mode="M26"> + <svrl:fired-rule xmlns:svrl="http://purl.oclc.org/dsdl/svrl" + context="//gmd:MD_ExtendedElementInformation"/> + <xsl:variable name="domain" + select="gmd:dataType/gmd:MD_DatatypeCode/@codeListValue='codelistElement' and not(gmd:domainCode)"/> + + <!--ASSERT + --> +<xsl:choose> + <xsl:when test="$domain = false()"/> + <xsl:otherwise> + <svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="$domain = false()"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:copy-of select="$loc/strings/alert.M28"/> + </svrl:text> + </svrl:failed-assert> + </xsl:otherwise> + </xsl:choose> + + <!--REPORT + --> +<xsl:if test="$domain = false()"> + <svrl:successful-report xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="$domain = false()"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:copy-of select="$loc/strings/report.M28"/> + </svrl:text> + </svrl:successful-report> + </xsl:if> + <xsl:apply-templates select="*" mode="M26"/> + </xsl:template> + <xsl:template match="text()" priority="-1" mode="M26"/> + <xsl:template match="@*|node()" priority="-2" mode="M26"> + <xsl:apply-templates select="*" mode="M26"/> + </xsl:template> + + <!--PATTERN + $loc/strings/M29--> +<svrl:text xmlns:svrl="http://purl.oclc.org/dsdl/svrl"> + <xsl:copy-of select="$loc/strings/M29"/> + </svrl:text> + + <!--RULE + --> +<xsl:template match="//gmd:MD_ExtendedElementInformation" priority="1000" mode="M27"> + <svrl:fired-rule xmlns:svrl="http://purl.oclc.org/dsdl/svrl" + context="//gmd:MD_ExtendedElementInformation"/> + <xsl:variable name="shortName" + select="gmd:dataType/gmd:MD_DatatypeCode/@codeListValue!='codelistElement' and not(gmd:shortName)"/> + + <!--ASSERT + --> +<xsl:choose> + <xsl:when test="$shortName = false()"/> + <xsl:otherwise> + <svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="$shortName = false()"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:copy-of select="$loc/strings/alert.M29"/> + </svrl:text> + </svrl:failed-assert> + </xsl:otherwise> + </xsl:choose> + + <!--REPORT + --> +<xsl:if test="$shortName = false()"> + <svrl:successful-report xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="$shortName = false()"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:copy-of select="$loc/strings/report.M29"/> + </svrl:text> + </svrl:successful-report> + </xsl:if> + <xsl:apply-templates select="*" mode="M27"/> + </xsl:template> + <xsl:template match="text()" priority="-1" mode="M27"/> + <xsl:template match="@*|node()" priority="-2" mode="M27"> + <xsl:apply-templates select="*" mode="M27"/> + </xsl:template> + + <!--PATTERN + $loc/strings/M30--> +<svrl:text xmlns:svrl="http://purl.oclc.org/dsdl/svrl"> + <xsl:copy-of select="$loc/strings/M30"/> + </svrl:text> + + <!--RULE + --> +<xsl:template match="//gmd:MD_Georectified" priority="1000" mode="M28"> + <svrl:fired-rule xmlns:svrl="http://purl.oclc.org/dsdl/svrl" context="//gmd:MD_Georectified"/> + <xsl:variable name="cpd" + select="(gmd:checkPointAvailability/gco:Boolean='1' or gmd:checkPointAvailability/gco:Boolean='true') and (not(gmd:checkPointDescription) or count(gmd:checkPointDescription[@gco:nilReason='missing'])>0)"/> + + <!--ASSERT + --> +<xsl:choose> + <xsl:when test="$cpd = false()"/> + <xsl:otherwise> + <svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="$cpd = false()"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:copy-of select="$loc/strings/alert.M30"/> + </svrl:text> + </svrl:failed-assert> + </xsl:otherwise> + </xsl:choose> + + <!--REPORT + --> +<xsl:if test="$cpd = false()"> + <svrl:successful-report xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="$cpd = false()"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:copy-of select="$loc/strings/report.M30"/> + </svrl:text> + </svrl:successful-report> + </xsl:if> + <xsl:apply-templates select="*" mode="M28"/> + </xsl:template> + <xsl:template match="text()" priority="-1" mode="M28"/> + <xsl:template match="@*|node()" priority="-2" mode="M28"> + <xsl:apply-templates select="*" mode="M28"/> + </xsl:template> + + <!--PATTERN + $loc/strings/M61--> +<svrl:text xmlns:svrl="http://purl.oclc.org/dsdl/svrl"> + <xsl:copy-of select="$loc/strings/M61"/> + </svrl:text> + + <!--RULE + --> +<xsl:template match="//gmd:MD_Metadata/gmd:hierarchyLevel|//*[@gco:isoType='gmd:MD_Metadata']/gmd:hierarchyLevel" + priority="1000" + mode="M29"> + <svrl:fired-rule xmlns:svrl="http://purl.oclc.org/dsdl/svrl" + context="//gmd:MD_Metadata/gmd:hierarchyLevel|//*[@gco:isoType='gmd:MD_Metadata']/gmd:hierarchyLevel"/> + <xsl:variable name="hl" + select="count(../gmd:hierarchyLevel/gmd:MD_ScopeCode[@codeListValue='dataset' or @codeListValue=''])=0 and (not(../gmd:hierarchyLevelName) or ../gmd:hierarchyLevelName/@gco:nilReason)"/> + <xsl:variable name="resourceType" + select="string-join(../gmd:hierarchyLevel/*/@codeListValue, ',')"/> + + <!--ASSERT + --> +<xsl:choose> + <xsl:when test="$hl = false()"/> + <xsl:otherwise> + <svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="$hl = false()"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:copy-of select="$loc/strings/alert.M61"/> + </svrl:text> + </svrl:failed-assert> + </xsl:otherwise> + </xsl:choose> + + <!--REPORT + --> +<xsl:if test="$hl = false()"> + <svrl:successful-report xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="$hl = false()"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select=" $loc/strings/report.M61"/> + <xsl:text/> "<xsl:text/> + <xsl:copy-of select="$resourceType"/> + <xsl:text/>"</svrl:text> + </svrl:successful-report> + </xsl:if> + <xsl:apply-templates select="*" mode="M29"/> + </xsl:template> + <xsl:template match="text()" priority="-1" mode="M29"/> + <xsl:template match="@*|node()" priority="-2" mode="M29"> + <xsl:apply-templates select="*" mode="M29"/> + </xsl:template> + + <!--PATTERN + $loc/strings/requiredElements--> +<svrl:text xmlns:svrl="http://purl.oclc.org/dsdl/svrl"> + <xsl:copy-of select="$loc/strings/requiredElements"/> + </svrl:text> + + <!--RULE + --> +<xsl:template match="//gmd:identificationInfo/*/gmd:abstract" priority="1006" mode="M30"> + <svrl:fired-rule xmlns:svrl="http://purl.oclc.org/dsdl/svrl" + context="//gmd:identificationInfo/*/gmd:abstract"/> + <xsl:variable name="text" + select="(gco:CharacterString | .//gmd:LocalisedCharacterString)[normalize-space(text()) != '']"/> + <xsl:variable name="nilReason" select="@gco:nilReason and not(./node())"/> + + <!--ASSERT + --> +<xsl:choose> + <xsl:when test="$text or $nilReason"/> + <xsl:otherwise> + <svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="$text or $nilReason"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$loc/strings/alert.requiredAbstract"/> + <xsl:text/> + </svrl:text> + </svrl:failed-assert> + </xsl:otherwise> + </xsl:choose> + + <!--REPORT + --> +<xsl:if test="$text or $nilReason"> + <svrl:successful-report xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="$text or $nilReason"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$loc/strings/report.requiredAbstract"/> + <xsl:text/> + </svrl:text> + </svrl:successful-report> + </xsl:if> + <xsl:apply-templates select="*" mode="M30"/> + </xsl:template> + + <!--RULE + --> +<xsl:template match="//gmd:identificationInfo/*/gmd:citation/*/gmd:title" priority="1005" + mode="M30"> + <svrl:fired-rule xmlns:svrl="http://purl.oclc.org/dsdl/svrl" + context="//gmd:identificationInfo/*/gmd:citation/*/gmd:title"/> + <xsl:variable name="text" + select="(gco:CharacterString | .//gmd:LocalisedCharacterString)[normalize-space(text()) != '']"/> + <xsl:variable name="nilReason" select="@gco:nilReason and not(./node())"/> + + <!--ASSERT + --> +<xsl:choose> + <xsl:when test="$text or $nilReason"/> + <xsl:otherwise> + <svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="$text or $nilReason"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$loc/strings/alert.requiredTitle"/> + <xsl:text/> + </svrl:text> + </svrl:failed-assert> + </xsl:otherwise> + </xsl:choose> + + <!--REPORT + --> +<xsl:if test="$text or $nilReason"> + <svrl:successful-report xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="$text or $nilReason"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$loc/strings/report.requiredTitle"/> + <xsl:text/> + </svrl:text> + </svrl:successful-report> + </xsl:if> + <xsl:apply-templates select="*" mode="M30"/> + </xsl:template> + + <!--RULE + --> +<xsl:template match="//gmd:identificationInfo/*/gmd:citation/*/gmd:date/*/gmd:date" + priority="1004" + mode="M30"> + <svrl:fired-rule xmlns:svrl="http://purl.oclc.org/dsdl/svrl" + context="//gmd:identificationInfo/*/gmd:citation/*/gmd:date/*/gmd:date"/> + <xsl:variable name="text" select="gco:Date|gco:DateTime"/> + <xsl:variable name="nilReason" select="@gco:nilReason and not(./node())"/> + + <!--ASSERT + --> +<xsl:choose> + <xsl:when test="$text or $nilReason"/> + <xsl:otherwise> + <svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="$text or $nilReason"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$loc/strings/alert.requiredDate"/> + <xsl:text/> + </svrl:text> + </svrl:failed-assert> + </xsl:otherwise> + </xsl:choose> + + <!--REPORT + --> +<xsl:if test="$text or $nilReason"> + <svrl:successful-report xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="$text or $nilReason"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$loc/strings/report.requiredDate"/> + <xsl:text/> + </svrl:text> + </svrl:successful-report> + </xsl:if> + <xsl:apply-templates select="*" mode="M30"/> + </xsl:template> + + <!--RULE + --> +<xsl:template match="//gmd:identificationInfo/*/gmd:citation/*/gmd:date/*/gmd:dateType" + priority="1003" + mode="M30"> + <svrl:fired-rule xmlns:svrl="http://purl.oclc.org/dsdl/svrl" + context="//gmd:identificationInfo/*/gmd:citation/*/gmd:date/*/gmd:dateType"/> + <xsl:variable name="text" select="gmd:CI_DateTypeCode"/> + <xsl:variable name="nilReason" select="@gco:nilReason and not(./node())"/> + + <!--ASSERT + --> +<xsl:choose> + <xsl:when test="$text or $nilReason"/> + <xsl:otherwise> + <svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="$text or $nilReason"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$loc/strings/alert.requiredDateType"/> + <xsl:text/> + </svrl:text> + </svrl:failed-assert> + </xsl:otherwise> + </xsl:choose> + + <!--REPORT + --> +<xsl:if test="$text or $nilReason"> + <svrl:successful-report xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="$text or $nilReason"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$loc/strings/report.requiredDateType"/> + <xsl:text/> + </svrl:text> + </svrl:successful-report> + </xsl:if> + <xsl:apply-templates select="*" mode="M30"/> + </xsl:template> + + <!--RULE + --> +<xsl:template match="/*/gmd:contact" priority="1002" mode="M30"> + <svrl:fired-rule xmlns:svrl="http://purl.oclc.org/dsdl/svrl" context="/*/gmd:contact"/> + + <!--ASSERT + --> +<xsl:choose> + <xsl:when test="node() | @gco:nilReason"/> + <xsl:otherwise> + <svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="node() | @gco:nilReason"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$loc/strings/alert.requiredContact"/> + <xsl:text/> + </svrl:text> + </svrl:failed-assert> + </xsl:otherwise> + </xsl:choose> + + <!--REPORT + --> +<xsl:if test="node() | @gco:nilReason"> + <svrl:successful-report xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="node() | @gco:nilReason"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$loc/strings/report.requiredContact"/> + <xsl:text/> + </svrl:text> + </svrl:successful-report> + </xsl:if> + <xsl:apply-templates select="*" mode="M30"/> + </xsl:template> + + <!--RULE + --> +<xsl:template match="/*/gmd:language" priority="1001" mode="M30"> + <svrl:fired-rule xmlns:svrl="http://purl.oclc.org/dsdl/svrl" context="/*/gmd:language"/> + + <!--ASSERT + --> +<xsl:choose> + <xsl:when test="node() | @gco:nilReason"/> + <xsl:otherwise> + <svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="node() | @gco:nilReason"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$loc/strings/alert.requiredLanguage"/> + <xsl:text/> + </svrl:text> + </svrl:failed-assert> + </xsl:otherwise> + </xsl:choose> + + <!--REPORT + --> +<xsl:if test="node() | @gco:nilReason"> + <svrl:successful-report xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="node() | @gco:nilReason"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$loc/strings/report.requiredLanguage"/> + <xsl:text/> + </svrl:text> + </svrl:successful-report> + </xsl:if> + <xsl:apply-templates select="*" mode="M30"/> + </xsl:template> + + <!--RULE + --> +<xsl:template match="//gmd:identificationInfo/*/gmd:language" priority="1000" mode="M30"> + <svrl:fired-rule xmlns:svrl="http://purl.oclc.org/dsdl/svrl" + context="//gmd:identificationInfo/*/gmd:language"/> + + <!--ASSERT + --> +<xsl:choose> + <xsl:when test="node() | @gco:nilReason"/> + <xsl:otherwise> + <svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="node() | @gco:nilReason"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$loc/strings/alert.requiredLanguage"/> + <xsl:text/> + </svrl:text> + </svrl:failed-assert> + </xsl:otherwise> + </xsl:choose> + + <!--REPORT + --> +<xsl:if test="node() | @gco:nilReason"> + <svrl:successful-report xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="node() | @gco:nilReason"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$loc/strings/report.requiredLanguage"/> + <xsl:text/> + </svrl:text> + </svrl:successful-report> + </xsl:if> + <xsl:apply-templates select="*" mode="M30"/> + </xsl:template> + <xsl:template match="text()" priority="-1" mode="M30"/> + <xsl:template match="@*|node()" priority="-2" mode="M30"> + <xsl:apply-templates select="*" mode="M30"/> + </xsl:template> + + <!--PATTERN + $loc/strings/requireCitation--> +<svrl:text xmlns:svrl="http://purl.oclc.org/dsdl/svrl"> + <xsl:copy-of select="$loc/strings/requireCitation"/> + </svrl:text> + + <!--RULE + --> +<xsl:template match="//gmd:identificationInfo/*/gmd:citation" priority="1000" mode="M31"> + <svrl:fired-rule xmlns:svrl="http://purl.oclc.org/dsdl/svrl" + context="//gmd:identificationInfo/*/gmd:citation"/> + + <!--ASSERT + --> +<xsl:choose> + <xsl:when test="gmd:CI_Citation | @gco:nilReason"/> + <xsl:otherwise> + <svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="gmd:CI_Citation | @gco:nilReason"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$loc/strings/alert.requiredCitation"/> + <xsl:text/> + </svrl:text> + </svrl:failed-assert> + </xsl:otherwise> + </xsl:choose> + + <!--REPORT + --> +<xsl:if test="gmd:CI_Citation | @gco:nilReason"> + <svrl:successful-report xmlns:svrl="http://purl.oclc.org/dsdl/svrl" ref="#_{geonet:element/@ref}" + test="gmd:CI_Citation | @gco:nilReason"> + <xsl:attribute name="location"> + <xsl:apply-templates select="." mode="schematron-select-full-path"/> + </xsl:attribute> + <svrl:text> + <xsl:text/> + <xsl:copy-of select="$loc/strings/report.requiredCitation"/> + <xsl:text/> + </svrl:text> + </svrl:successful-report> + </xsl:if> + <xsl:apply-templates select="*" mode="M31"/> + </xsl:template> + <xsl:template match="text()" priority="-1" mode="M31"/> + <xsl:template match="@*|node()" priority="-2" mode="M31"> + <xsl:apply-templates select="*" mode="M31"/> + </xsl:template> +</xsl:stylesheet> \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/data/data/formatter/groovy/common/Functions.groovy b/src/main/webapp/WEB-INF/data/data/formatter/groovy/common/Functions.groovy new file mode 100644 index 0000000..12cf4df --- /dev/null +++ b/src/main/webapp/WEB-INF/data/data/formatter/groovy/common/Functions.groovy @@ -0,0 +1,69 @@ +package common + +import org.fao.geonet.api.records.formatters.FormatType +import org.fao.geonet.api.records.formatters.groovy.Environment +import org.nibor.autolink.*; + +public class Functions { + org.fao.geonet.api.records.formatters.groovy.Handlers handlers; + def org.fao.geonet.api.records.formatters.groovy.Functions f + def Environment env + + def isHtmlOutput = { + env.formatType == FormatType.html || env.formatType == FormatType.pdf || + env.formatType == FormatType.testpdf + } + + def isPDFOutput = { + env.formatType == FormatType.pdf || env.formatType == FormatType.testpdf + } + + /** + * Creates the default html for a label -> text pair. This is the element for primitive/simple data. + * This does not return a function it is returns the actual html and thus can be used within handlers/functions to + * directly get the html + */ + def textEl(label, text) { + return handlers.fileResult("html/text-el.html", ["label": label, "text" : text]) + } + + /** + * Same as textEl but doesn't escape the XML + */ + def wikiTextEl(label, text) { + return handlers.fileResult("html/wikitext-el.html", ["label": label, "text" : text]) + } + + /** + * Creates the default html for a label -> text pair. This is the element for primitive/simple data. + * This does not return a function it is returns the actual html and thus can be used within handlers/functions to + * directly get the html + */ + def urlEl(label, href, text) { + return handlers.fileResult("html/url-el.html", ["label": label, "href" : href, "text" : + text.length() > 50 ? (text.substring(0, 50) + "...") : text]) + } + + def textColEl(content, cols) { + return '<div class="col-md-' + cols + '">' + content + '</div>' + } + + def urlToHtml(content) { + LinkExtractor linkExtractor = LinkExtractor.builder() + .linkTypes(EnumSet.of(LinkType.URL)) // limit to URLs + .build(); + + Iterable<LinkSpan> links = linkExtractor.extractLinks(content); + String result = Autolink.renderLinks(content, links, new LinkRenderer() { + void render(LinkSpan link, CharSequence text, StringBuilder sb) { + sb.append("<a target=\"_blank\" href=\""); + sb.append(text, link.getBeginIndex(), link.getEndIndex()); + sb.append("\">"); + sb.append(text, link.getBeginIndex(), link.getEndIndex()); + sb.append("</a>"); + } + }); + return result + } + +} diff --git a/src/main/webapp/WEB-INF/data/data/formatter/groovy/common/Handlers.groovy b/src/main/webapp/WEB-INF/data/data/formatter/groovy/common/Handlers.groovy new file mode 100644 index 0000000..5173808 --- /dev/null +++ b/src/main/webapp/WEB-INF/data/data/formatter/groovy/common/Handlers.groovy @@ -0,0 +1,270 @@ +package common + +import jeeves.server.context.ServiceContext +import org.fao.geonet.api.records.MetadataUtils +import org.fao.geonet.api.records.formatters.groovy.Environment +import org.fao.geonet.api.records.formatters.groovy.util.* +import org.fao.geonet.api.records.model.related.RelatedItemType +import org.fao.geonet.constants.Geonet +import org.fao.geonet.kernel.GeonetworkDataDirectory +import org.fao.geonet.utils.Xml +import org.jdom.Element + +public class Handlers { + private org.fao.geonet.api.records.formatters.groovy.Handlers handlers; + private org.fao.geonet.api.records.formatters.groovy.Functions f + private Environment env + + common.Matchers matchers + common.Functions func + boolean requireValidMetadataForPublish = false; + + public Handlers(handlers, f, env) { + this.handlers = handlers + this.f = f + this.env = env + func = new common.Functions(handlers: handlers, f:f, env:env) + matchers = new common.Matchers(handlers: handlers, f:f, env:env) + } + + def addDefaultStartAndEndHandlers() { + handlers.start htmlOrXmlStart + handlers.end htmlOrXmlEnd + } + + def entryEl(labeller) { + return entryEl(labeller, null) + } + /** + * Creates a function that will process all children and sort then according to the sorter that applies to the elements. Then + * returns the default html for the container elements. + * + * @param labeller a function for creating a label from the element + * @param classer a function taking the element class(es) to add to the entry element. The method should return a string. + */ + def entryEl(labeller, classer) { + return { el -> + def childData = handlers.processElements(el.children(), el); + def replacement = [label: labeller(el), childData: childData, name:''] + + if (classer != null) { + replacement.name = classer(el); + } + + if (!childData.isEmpty()) { + return handlers.fileResult('html/2-level-entry.html', replacement) + } + return null + } + } + def processChildren(childSelector) { + return {el -> + handlers.processElements(childSelector(el), el); + } + } + /** + * Creates a function which will: + * + * 1. Select a single element using the selector function + * 2. Process all children of the element selected in step 1 with sorter that applies to the element selected in step 1 + * 3. Create a label using executing the labeller on the element passed to handler functions (not element selected in step 1) + * + * @param selector a function that will select a single element from the descendants of the element passed to it + * @param labeller a function for creating a label from the element + */ + def flattenedEntryEl(selector, labeller) { + return { parentEl -> + def el = selector(parentEl) + def childData = handlers.processElements(el.children(), el); + + if (!childData.isEmpty()) { + return handlers.fileResult('html/2-level-entry.html', [label: labeller(el), childData: childData]) + } + return null + } + } + + def selectIsotype(name) { + return { + it.children().find { ch -> + ch.name() == name || ch['@gco:isoType'].text() == name + } + } + } + + + def htmlOrXmlStart = { + if (func.isHtmlOutput()) { + def minimize = '' + def baseUrl = func.f.fparams.url; + if (env.param("debug").toBool()) { + minimize = '?minimize=false' + } + String cssLinks = """ + <link rel="stylesheet" href="$baseUrl../../static/gn_bootstrap.css$minimize"/> + <link rel="stylesheet" href="$baseUrl../../static/gn_metadata.css$minimize"/>"""; + + if (func.isPDFOutput()) { + cssLinks = """<link rel="stylesheet" href="$baseUrl../../static/gn_metadata_pdf.css$minimize"/>""" + } + return """ +<!DOCTYPE html> +<html> +<head lang="en"> + <meta charset="UTF-8"/> + $cssLinks + <script src="$baseUrl../../static/lib.js$minimize"></script> + <script src="$baseUrl../../static/gn_formatter_lib.js$minimize"></script> +</head> +<body> +""" + } else { + return '' + } + } + + def htmlOrXmlEnd = { + def required = ""; + if (!func.isPDFOutput()) { + required = """ +<script type="text/javascript"> +//<![CDATA[ + gnFormatter.formatterOnComplete(); +//]]> +</script>""" + } + if (func.isHtmlOutput()) { + return required + '</body></html>' + } else { + return required + } + } + + + NavBarItem createXmlNavBarItem() { + return new NavBarItem(f.translate("xml"), f.translate("xml"), "", "xml.metadata.get?uuid=${env.metadataUUID}") + } + + def loadHierarchyLinkBlocks() { + def uuid = this.env.metadataUUID + def id = this.env.metadataId + + LinkBlock hierarchy = new LinkBlock("associated-link", "fa fa-sitemap") + Element related = getRelatedReport(id, uuid) + + related.getChildren().each { rel -> + def type = rel.name + + rel.getChildren("item").each { item -> + def direction = Direction.CHILD + def association + if (type == "siblings") { + association = item.getChildText("associationType") + if (association != null && association != '') { + type = association; + direction = Direction.PARENT + } + } else if (type == "services" || type == "sources" || type == "parent" || type == "fcats") { + direction = Direction.PARENT + } else if( type == 'associated') { + Element aggIndexEl = item.getChildren().find{it.getName() startsWith "agg_"} + if (aggIndexEl != null) { + type = aggIndexEl.name.substring(4) + } + } else if (type == "onlines" || type == "thumbnails") { + return; + } + + def relatedIdInfo = addRelation(hierarchy, uuid, item, type, direction) + + if (relatedIdInfo != null && direction == Direction.PARENT) { + def parentUUID = relatedIdInfo['uuid'] as String + def report = getRelatedReport(relatedIdInfo['id'] as int, parentUUID) + + report.getChildren().each { potentialSiblingRel -> + def relType = potentialSiblingRel.name + potentialSiblingRel.getChildren("item").each { potentialSiblingItem -> + if (association != null) { + boolean isAggSibling = potentialSiblingItem.getChildren("agg_$association").any { + it.getTextTrim() == parentUUID + } + if (isAggSibling) { + addRelation(hierarchy, parentUUID, potentialSiblingItem, association, Direction.SIBLING) + } + } else if (relType == 'datasets' || relType == 'hassource' || relType == 'hasfeaturecat') { + addRelation(hierarchy, parentUUID, potentialSiblingItem, relType, Direction.SIBLING) + } else if (relType == 'children') { + addRelation(hierarchy, parentUUID, potentialSiblingItem, "siblings", Direction.SIBLING) + } + + } + } + } + } + } + return hierarchy; + } + + private Element getRelatedReport(int id, String uuid) { + def relatedXsl = this.env.getBean(GeonetworkDataDirectory).getWebappDir().resolve("xslt/services/metadata/relation.xsl"); + def RelatedItemType[] types = []; + def raw = MetadataUtils.getRelated(ServiceContext.get(), id, uuid, types, 1, 1000, true) + def withGui = new Element("root").addContent(Arrays.asList( + new Element("gui").addContent(Arrays.asList( + new Element("language").setText(env.lang3), + new Element("locUrl").setText(env.getLocalizedUrl()) + )), + raw)); + def related = Xml.transform(withGui, relatedXsl); + related + } + + private Map addRelation(hierarchy, uuid, rel, type, direction) { + def arrow; + switch (direction) { + case Direction.CHILD: + arrow = "pad-left fa-long-arrow-down" + break + case Direction.PARENT: + arrow = "pad-left fa-long-arrow-up" + break + default: + arrow = "fa-arrows-h" + } + def linkType = new LinkType() + linkType.name = type + linkType.relationDirection = direction + linkType.iconHtml = """ + <i class="fa ${arrow}" title="${f.translate(direction.name().toLowerCase() + "-plural")}"></i> +""" + def relUuid = rel.getChild("id").getText() + def relId = rel.getChild("mdid").getText() + def title = rel.getChild("title").getChild("value").getText() + def desc = rel.getChild("description").getChild("value").getText() + if (title == null || title.isEmpty()) { + title = relUuid; + } + + def href = createShowMetadataHref(relUuid) + def cls = uuid.trim().isEmpty() ? "text-muted" : '' + + def link = new AssociatedLink(href, title, cls) + link.setAbstract(desc); + link.metadataId = relUuid; + link.setLogo(rel.getChildText('logo')); + + hierarchy.put(linkType, link) + + return ['uuid': relUuid, 'id': relId] + + } + + private String createShowMetadataHref(String uuid) { + if (uuid.trim().isEmpty()) { + return "javascript:alert('" + this.f.translate("noUuidInLink") + "');" + } else { + return this.env.localizedUrl + "display#/" + URLEncoder.encode(uuid, "UTF-8") + "/formatters/full_view" + } + } + +} diff --git a/src/main/webapp/WEB-INF/data/data/formatter/groovy/common/Matchers.groovy b/src/main/webapp/WEB-INF/data/data/formatter/groovy/common/Matchers.groovy new file mode 100644 index 0000000..4d522a1 --- /dev/null +++ b/src/main/webapp/WEB-INF/data/data/formatter/groovy/common/Matchers.groovy @@ -0,0 +1,11 @@ +package common + +public class Matchers { + def handlers; + def f + def env + + def hasChild(childName) { + return { !it.children().find {it.name() == childName}.isEmpty() } + } +} diff --git a/src/main/webapp/WEB-INF/data/data/formatter/hierarchy_view/config.properties b/src/main/webapp/WEB-INF/data/data/formatter/hierarchy_view/config.properties new file mode 100644 index 0000000..10e7956 --- /dev/null +++ b/src/main/webapp/WEB-INF/data/data/formatter/hierarchy_view/config.properties @@ -0,0 +1 @@ +published=false \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/data/data/formatter/hierarchy_view/view.groovy b/src/main/webapp/WEB-INF/data/data/formatter/hierarchy_view/view.groovy new file mode 100644 index 0000000..750399f --- /dev/null +++ b/src/main/webapp/WEB-INF/data/data/formatter/hierarchy_view/view.groovy @@ -0,0 +1,3 @@ +handlers.add select: ~/.*/, {els -> + handlers.fileResult("html/associated.html", ["associated" : new common.Handlers(handlers, f, env).loadHierarchyLinkBlocks()]) +} \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/data/data/formatter/html/2-level-entry.html b/src/main/webapp/WEB-INF/data/data/formatter/html/2-level-entry.html new file mode 100644 index 0000000..0e8e44f --- /dev/null +++ b/src/main/webapp/WEB-INF/data/data/formatter/html/2-level-entry.html @@ -0,0 +1,15 @@ +<div class="entry {{name}}"> + + <h3> + <button type="button" class="btn btn-default toggler" target="{{'' | generateUUID}}"> + <i class="fa fa-arrow-circle-down"></i> + </button> + {{label}} + </h3> + + <div id="{{'' | lastUUID}}"> + <dl class="dl-horizontal"> + {{childData}} + </dl> + </div> +</div> diff --git a/src/main/webapp/WEB-INF/data/data/formatter/html/associated.html b/src/main/webapp/WEB-INF/data/data/formatter/html/associated.html new file mode 100644 index 0000000..d414cce --- /dev/null +++ b/src/main/webapp/WEB-INF/data/data/formatter/html/associated.html @@ -0,0 +1,54 @@ +<div fmt-repeat="linkBlock in associated" + class="summary-links summary-links-{{linkBlock.name | escapeXmlAttrs}}"> + <div fmt-if="isPDF"> + <div fmt-include="html/single-link.html" fmt-include-replace="true"/> + </div> + <div fmt-if="!isPDF"> + <h3> + <button type="button" class="btn btn-default toggler" target="{{'' | generateUUID}}"> + <i class="fa fa-arrow-circle-down"></i> + </button> + <i fmt-if="linkBlock.iconClasses" class="{{linkBlock.iconClasses}} pad-right"></i><span + fmt-translate="">{{linkBlock.name | escapeXmlContent}}</span> + </h3> + <table id="{{'' | lastUUID}}" class="table row"> + <tr fmt-repeat="link in linkBlock.links" class="row"> + <td class="col-md-2 link-block-title"> + <h3> + <button type="button" class="btn btn-default toggler" target="{{'' | generateUUID}}"> + <i class="fa fa-arrow-circle-down"></i> + </button> + <span fmt-if="link.type.iconHtml" fmt-only-children="true">{{link.type.iconHtml}}</span> + <i fmt-if="link.type.iconClasses" class="{{link.type.iconClasses}} pad-right" + title="{{link.type.iconTitle | capitalize}}"></i> + <img fmt-if="link.type.icon" src="{{link.type.icon}}" + title="{{link.type.iconTitle | capitalize}}" class="icon pad-right"></img> + <span fmt-translate="">{{link.type.name}}-link</span> + </h3> + </td> + <td class="col-md-10"> + <div id="{{'' | lastUUID}}"> + <div fmt-repeat="link in link.links"> + <a onclick="gnFormatter.loadAssociated(event, 'div#associated-{{- | generateUUID}}', '{{link.metadataId}}');" + title="{{link.tip}}" class="{{link.cls}} associated-link-a" + target="{{'' | lastUUID}}">{{link.text | escapeXmlContent}}</a> + <a href="{{link.href}}" target="_blank" title="{{link.href}}" class="{{link.cls}}"> + <i class="fa fa-external-link"></i> + </a> + + <div id="{{'' | lastUUID}}" style="display: none;" class="associated-link-row"> + <img class="logo" src="{{link.logo}}" fmt-if="link.logo"/> + <h3 class="text-justify" >{{link.tip | capitalize}}</h3> + <p class="text-justify" fmt-if="link.abstract">{{link.abstract}}</p> + + + <div id="associated-{{'' | lastUUID}}"/> + </div> + </div> + </div> + </td> + </tr> + <span fmt-if="linkBlock.html">{{linkBlock.html}}</span> + </table> + </div> +</div> diff --git a/src/main/webapp/WEB-INF/data/data/formatter/html/bbox.html b/src/main/webapp/WEB-INF/data/data/formatter/html/bbox.html new file mode 100644 index 0000000..b0fa512 --- /dev/null +++ b/src/main/webapp/WEB-INF/data/data/formatter/html/bbox.html @@ -0,0 +1,36 @@ +<div fmt-transclude="html/2-level-entry.html" fmt-transclude-model="childData"> + <div class="thumbnail extent"> + <span fmt-if="!pdfOutput" fmt-only-children="true"> + <div class="input-group coord coord-north"> + <input type="text" class="form-control" value="{{n}}" readonly=""/> + <span class="input-group-addon">N</span> + </div> + <div class="input-group coord coord-south"> + <input type="text" class="form-control" value="{{s}}" readonly=""/> + <span class="input-group-addon">S</span> + </div> + <div class="input-group coord coord-east"> + <input type="text" class="form-control" value="{{e}}" readonly=""/> + <span class="input-group-addon">E</span> + </div> + <div class="input-group coord coord-west"> + <input type="text" class="form-control" value="{{w}}" readonly=""/> + <span class="input-group-addon">W</span> + </div> + </span> + <img + src="region.getmap.png?mapsrs={{mapconfig.mapproj}}&amp;width={{mapconfig.width}}&amp;background={{mapconfig.background}}&amp;geom=Polygon(({{w}}%20{{n}},{{e}}%20{{n}},{{e}}%20{{s}},{{w}}%20{{s}},{{w}}%20{{n}}))&amp;geomsrs={{geomproj}}" + style="min-width:{{minwidth}}px; min-height:{{minheight}}px;" + alt=""/> + <div fmt-if="pdfOutput"> + <div> + <span class="value">{{n}}</span> <span class="input-group-addon">N</span> + <span class="value">{{s}}</span> <span class="input-group-addon">S</span> + </div> + <div> + <span class="value">{{w}}</span> <span class="input-group-addon">W</span> + <span class="value">{{e}}</span> <span class="input-group-addon">E</span> + </div> + </div> + </div> +</div> diff --git a/src/main/webapp/WEB-INF/data/data/formatter/html/links.html b/src/main/webapp/WEB-INF/data/data/formatter/html/links.html new file mode 100644 index 0000000..a729d50 --- /dev/null +++ b/src/main/webapp/WEB-INF/data/data/formatter/html/links.html @@ -0,0 +1,4 @@ +<div fmt-repeat="linkBlock in links" + class="summary-links summary-links-{{linkBlock.name | escapeXmlAttrs}}"> + <div fmt-include="html/single-link.html" fmt-include-replace="true"/> +</div> diff --git a/src/main/webapp/WEB-INF/data/data/formatter/html/list-entry.html b/src/main/webapp/WEB-INF/data/data/formatter/html/list-entry.html new file mode 100644 index 0000000..05d393d --- /dev/null +++ b/src/main/webapp/WEB-INF/data/data/formatter/html/list-entry.html @@ -0,0 +1,7 @@ +<div fmt-transclude="html/2-level-entry.html" fmt-transclude-model="childData"> + <ul class="md-value-list"> + <li fmt-repeat="item in listItems"> + {{item}} + </li> + </ul> +</div> diff --git a/src/main/webapp/WEB-INF/data/data/formatter/html/single-link.html b/src/main/webapp/WEB-INF/data/data/formatter/html/single-link.html new file mode 100644 index 0000000..d875140 --- /dev/null +++ b/src/main/webapp/WEB-INF/data/data/formatter/html/single-link.html @@ -0,0 +1,31 @@ +<div> + <h3> + <button type="button" class="btn btn-default toggler" target="{{'' | generateUUID}}"> + <i class="fa fa-arrow-circle-down"></i> + </button> + <i fmt-if="linkBlock.iconClasses" class="{{linkBlock.iconClasses}} pad-right"></i><span + fmt-translate="">{{linkBlock.name | escapeXmlContent}}</span> + </h3> + <table id="{{'' | lastUUID}}" class="table row target"> + <tr fmt-repeat="link in linkBlock.links" class="row"> + <td class="col-md-2 link-block-title"> + <span fmt-if="link.type.iconHtml" fmt-only-children="true">{{link.type.iconHtml}}</span> + <i fmt-if="link.type.iconClasses" title="{{link.type.iconTitle | capitalize}}" + class="{{link.type.iconClasses}} pad-right"></i> + <img fmt-if="link.type.icon" src="{{link.type.icon}}" + title="{{link.type.iconTitle | capitalize}}" class="icon pad-right"></img> + <span fmt-translate="">{{link.type.name}}-link</span> + </td> + <td class="col-md-10"> + <div fmt-repeat="link in link.links"> + <a fmt-if="isPDF" href="{{link.href | escapeXmlAttrs}}" target="_blank" + title="{{link.tip | escapeXmlAttrs}}" class="{{link.cls}}">{{link.text | + escapeXmlContent}}</a> + <a fmt-if="!isPDF" href="{{link.href}}" target="_blank" title="{{link.tip}}" + class="{{link.cls}}">{{link.text | escapeXmlContent}}</a> + </div> + </td> + </tr> + <span fmt-if="linkBlock.html">{{linkBlock.html}}</span> + </table> +</div> diff --git a/src/main/webapp/WEB-INF/data/data/formatter/html/text-el.html b/src/main/webapp/WEB-INF/data/data/formatter/html/text-el.html new file mode 100644 index 0000000..5fc7a2a --- /dev/null +++ b/src/main/webapp/WEB-INF/data/data/formatter/html/text-el.html @@ -0,0 +1,4 @@ +<div fmt-if="text" class="md-text"> + <dt title="{{label | escapeXmlContent}}">{{label | escapeXmlContent}}</dt> + <dd>{{text | escapeXmlContent}}</dd> +</div> \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/data/data/formatter/html/url-el.html b/src/main/webapp/WEB-INF/data/data/formatter/html/url-el.html new file mode 100644 index 0000000..4a3fa2b --- /dev/null +++ b/src/main/webapp/WEB-INF/data/data/formatter/html/url-el.html @@ -0,0 +1,4 @@ +<div fmt-if="text" class="md-text"> + <dt title="{{label | escapeXmlContent}}">{{label | escapeXmlContent}}</dt> + <dd><a href="{{href | escapeXmlAttrs}}" title="{{href | escapeXmlAttrs}}">{{text | escapeXmlContent}}</a></dd> +</div> \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/data/data/formatter/html/view-header.html b/src/main/webapp/WEB-INF/data/data/formatter/html/view-header.html new file mode 100644 index 0000000..2fc948a --- /dev/null +++ b/src/main/webapp/WEB-INF/data/data/formatter/html/view-header.html @@ -0,0 +1,83 @@ +<div class="container gn-metadata-view gn-metadata-view-groovy"> + <script type="application/javascript" fmt-if="isHTML"> + //<![CDATA[ + document.title = "{{pageTitle}}"; + var headEl = $("head"); + var iconLink = headEl.children("link[rel='shortcut icon']"); + if (iconLink.length > 0) { + iconLink.attr("href", "{{logo}}"); + } else { + headEl.append("<link rel='shortcut icon' type='image/x-icon' href='{{logo}}'></link>"); + } + //]]> + </script> + <h1> + <img fmt-if="logo" class="logo" src="{{logo | escapeXmlAttrs}}"></img> + <i fmt-if="!logo" class="fa fa-arrow-circle-down"></i> + <span class="title">{{title | escapeXmlContent}}</span> + </h1> + <ul fmt-if="!isPDF" class="view-outline nav nav-tabs"> + <li fmt-if="addOverviewNavItem"><a href="" rel=".overview" fmt-translate="">overview</a></li> + <li fmt-if="associated"> + <a href="" rel=".container > .associated"><span fmt-translate="">associated-link</span>&nbsp; + <i class="fa fa-circle-o-notch fa-spin associated-spinner"></i></a> + </li> + <li fmt-if="addCompleteNavItem"><a fmt-translate="" href="" + rel=".container > .entry:not(.overview)">complete</a></li> + <li fmt-repeat="item in navBar" title="{{item.name | escapeXmlAttrs}}"> + <a fmt-if="item.href" href="{{item.href | escapeXmlAttrs}}" target="_blank">{{item.abbrName | + escapeXmlContent}}</a> + <a fmt-if="item.rel" rel="{{item.rel | escapeXmlAttrs}}">{{item.abbrName | + escapeXmlContent}}</a> + </li> + <li fmt-if="showNavOverflow" class="dropdown"> + <a class="dropdown-toggle" data-toggle="dropdown" title="More information"><i + class="fa fa-ellipsis-h"></i><b class="caret"></b></a> + <ul class="dropdown-menu"> + <li fmt-repeat="item in navBarOverflow"> + <a fmt-if="item.href" href="{{item.href | escapeXmlAttrs}}" target="_blank">{{item.abbrName + | escapeXmlContent}}</a> + <a fmt-if="item.rel" rel="{{item.rel | escapeXmlAttrs}}">{{item.abbrName | + escapeXmlContent}}</a> + </li> + </ul> + </li> + </ul> + <div class="entry overview" data-fmt-if="!isPDF"> + <h3> + <button type="button" class="btn btn-default toggler" target="{{'' | generateUUID}}"> + <i class="fa fa-arrow-circle-down"></i> + </button> + <span fmt-translate="">overview</span> + </h3> + + <div id="{{'' | lastUUID}}" class="entry target"> + <img fmt-if="thumbnail" class="thumbnail" src="{{thumbnail | escapeXmlAttrs}}"></img> + <div fmt-if="abstract" class="entry abstract"> + <h3> + <button type="button" class="btn btn-default toggler" target="{{'' | generateUUID}}"> + <i class="fa fa-arrow-circle-down"></i> + </button> + <span fmt-translate="">abstract</span> + </h3> + + <dd id="{{'' | lastUUID}}" class="target"> + {{abstract}} + </dd> + </div> + {{keywords}} + {{formats}} + {{extents}} + + <div fmt-include="html/links.html" fmt-include-replace="true"/> + </div> + </div> + + {{content}} + <div class="entry associated"> + <span data-fmt-if="isPDF"> + <div fmt-include="html/links.html" fmt-include-replace="true"/> + </span> + <div fmt-include="html/associated.html" fmt-include-replace="true"/> + </div> +</div> diff --git a/src/main/webapp/WEB-INF/data/data/formatter/html/wikitext-el.html b/src/main/webapp/WEB-INF/data/data/formatter/html/wikitext-el.html new file mode 100644 index 0000000..c2a47b9 --- /dev/null +++ b/src/main/webapp/WEB-INF/data/data/formatter/html/wikitext-el.html @@ -0,0 +1,4 @@ +<div fmt-if="text" class="md-text"> + <dt title="{{label | escapeXmlContent}}">{{label | escapeXmlContent}}</dt> + <dd>{{text}}</dd> +</div> \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/data/data/formatter/xml_view/highlight-json-xml.js b/src/main/webapp/WEB-INF/data/data/formatter/xml_view/highlight-json-xml.js new file mode 100644 index 0000000..543a36d --- /dev/null +++ b/src/main/webapp/WEB-INF/data/data/formatter/xml_view/highlight-json-xml.js @@ -0,0 +1 @@ +var hljs=new function(){function e(e){return e.replace(/&/gm,"&").replace(/</gm,"<").replace(/>/gm,">")}function t(e){return e.nodeName.toLowerCase()}function n(e,t){var n=e&&e.exec(t);return n&&0==n.index}function r(e){var t=(e.className+" "+(e.parentNode?e.parentNode.className:"")).split(/\s+/);return t=t.map(function(e){return e.replace(/^lang(uage)?-/,"")}),t.filter(function(e){return m(e)||/no(-?)highlight/.test(e)})[0]}function i(e,t){var n={};for(var r in e)n[r]=e[r];if(t)for(var r in t)n[r]=t[r];return n}function a(e){var n=[];return function r(e,i){for(var a=e.firstChild;a;a=a.nextSibling)3==a.nodeType?i+=a.nodeValue.length:1==a.nodeType&&(n.push({event:"start",offset:i,node:a}),i=r(a,i),t(a).match(/br|hr|img|input/)||n.push({event:"stop",offset:i,node:a}));return i}(e,0),n}function s(n,r,i){function a(){return n.length&&r.length?n[0].offset!=r[0].offset?n[0].offset<r[0].offset?n:r:"start"==r[0].event?n:r:n.length?n:r}function s(n){function r(t){return" "+t.nodeName+'="'+e(t.value)+'"'}l+="<"+t(n)+Array.prototype.map.call(n.attributes,r).join("")+">"}function o(e){l+="</"+t(e)+">"}function c(e){("start"==e.event?s:o)(e.node)}for(var u=0,l="",f=[];n.length||r.length;){var h=a();if(l+=e(i.substr(u,h[0].offset-u)),u=h[0].offset,h==n){f.reverse().forEach(o);do c(h.splice(0,1)[0]),h=a();while(h==n&&h.length&&h[0].offset==u);f.reverse().forEach(s)}else"start"==h[0].event?f.push(h[0].node):f.pop(),c(h.splice(0,1)[0])}return l+e(i.substr(u))}function o(e){function t(e){return e&&e.source||e}function n(n,r){return RegExp(t(n),"m"+(e.cI?"i":"")+(r?"g":""))}function r(a,s){if(!a.compiled){if(a.compiled=!0,a.k=a.k||a.bK,a.k){var o={},c=function(t,n){e.cI&&(n=n.toLowerCase()),n.split(" ").forEach(function(e){var n=e.split("|");o[n[0]]=[t,n[1]?Number(n[1]):1]})};"string"==typeof a.k?c("keyword",a.k):Object.keys(a.k).forEach(function(e){c(e,a.k[e])}),a.k=o}a.lR=n(a.l||/\b[A-Za-z0-9_]+\b/,!0),s&&(a.bK&&(a.b="\\b("+a.bK.split(" ").join("|")+")\\b"),a.b||(a.b=/\B|\b/),a.bR=n(a.b),a.e||a.eW||(a.e=/\B|\b/),a.e&&(a.eR=n(a.e)),a.tE=t(a.e)||"",a.eW&&s.tE&&(a.tE+=(a.e?"|":"")+s.tE)),a.i&&(a.iR=n(a.i)),void 0===a.r&&(a.r=1),a.c||(a.c=[]);var u=[];a.c.forEach(function(e){e.v?e.v.forEach(function(t){u.push(i(e,t))}):u.push("self"==e?a:e)}),a.c=u,a.c.forEach(function(e){r(e,a)}),a.starts&&r(a.starts,s);var l=a.c.map(function(e){return e.bK?"\\.?("+e.b+")\\.?":e.b}).concat([a.tE,a.i]).map(t).filter(Boolean);a.t=l.length?n(l.join("|"),!0):{exec:function(){return null}}}}r(e)}function c(t,r,i,a){function s(e,t){for(var r=0;r<t.c.length;r++)if(n(t.c[r].bR,e))return t.c[r]}function l(e,t){return n(e.eR,t)?e:e.eW?l(e.parent,t):void 0}function f(e,t){return!i&&n(t.iR,e)}function h(e,t){var n=x.cI?t[0].toLowerCase():t[0];return e.k.hasOwnProperty(n)&&e.k[n]}function g(e,t,n,r){var i=r?"":N.classPrefix,a='<span class="'+i,s=n?"":"</span>";return a+=e+'">',a+t+s}function p(){if(!w.k)return e(B);var t="",n=0;w.lR.lastIndex=0;for(var r=w.lR.exec(B);r;){t+=e(B.substr(n,r.index-n));var i=h(w,r);i?(y+=i[1],t+=g(i[0],e(r[0]))):t+=e(r[0]),n=w.lR.lastIndex,r=w.lR.exec(B)}return t+e(B.substr(n))}function v(){if(w.sL&&!E[w.sL])return e(B);var t=w.sL?c(w.sL,B,!0,L[w.sL]):u(B);return w.r>0&&(y+=t.r),"continuous"==w.subLanguageMode&&(L[w.sL]=t.top),g(t.language,t.value,!1,!0)}function b(){return void 0!==w.sL?v():p()}function d(t,n){var r=t.cN?g(t.cN,"",!0):"";t.rB?(M+=r,B=""):t.eB?(M+=e(n)+r,B=""):(M+=r,B=n),w=Object.create(t,{parent:{value:w}})}function R(t,n){if(B+=t,void 0===n)return M+=b(),0;var r=s(n,w);if(r)return M+=b(),d(r,n),r.rB?0:n.length;var i=l(w,n);if(i){var a=w;a.rE||a.eE||(B+=n),M+=b();do w.cN&&(M+="</span>"),y+=w.r,w=w.parent;while(w!=i.parent);return a.eE&&(M+=e(n)),B="",i.starts&&d(i.starts,""),a.rE?0:n.length}if(f(n,w))throw new Error('Illegal lexeme "'+n+'" for mode "'+(w.cN||"<unnamed>")+'"');return B+=n,n.length||1}var x=m(t);if(!x)throw new Error('Unknown language: "'+t+'"');o(x);for(var w=a||x,L={},M="",k=w;k!=x;k=k.parent)k.cN&&(M=g(k.cN,"",!0)+M);var B="",y=0;try{for(var C,I,j=0;;){if(w.t.lastIndex=j,C=w.t.exec(r),!C)break;I=R(r.substr(j,C.index-j),C[0]),j=C.index+I}R(r.substr(j));for(var k=w;k.parent;k=k.parent)k.cN&&(M+="</span>");return{r:y,value:M,language:t,top:w}}catch(A){if(-1!=A.message.indexOf("Illegal"))return{r:0,value:e(r)};throw A}}function u(t,n){n=n||N.languages||Object.keys(E);var r={r:0,value:e(t)},i=r;return n.forEach(function(e){if(m(e)){var n=c(e,t,!1);n.language=e,n.r>i.r&&(i=n),n.r>r.r&&(i=r,r=n)}}),i.language&&(r.second_best=i),r}function l(e){return N.tabReplace&&(e=e.replace(/^((<[^>]+>|\t)+)/gm,function(e,t){return t.replace(/\t/g,N.tabReplace)})),N.useBR&&(e=e.replace(/\n/g,"<br>")),e}function f(e,t,n){var r=t?R[t]:n,i=[e.trim()];return e.match(/(\s|^)hljs(\s|$)/)||i.push("hljs"),r&&i.push(r),i.join(" ").trim()}function h(e){var t=r(e);if(!/no(-?)highlight/.test(t)){var n;N.useBR?(n=document.createElementNS("http://www.w3.org/1999/xhtml","div"),n.innerHTML=e.innerHTML.replace(/\n/g,"").replace(/<br[ \/]*>/g,"\n")):n=e;var i=n.textContent,o=t?c(t,i,!0):u(i),h=a(n);if(h.length){var g=document.createElementNS("http://www.w3.org/1999/xhtml","div");g.innerHTML=o.value,o.value=s(h,a(g),i)}o.value=l(o.value),e.innerHTML=o.value,e.className=f(e.className,t,o.language),e.result={language:o.language,re:o.r},o.second_best&&(e.second_best={language:o.second_best.language,re:o.second_best.r})}}function g(e){N=i(N,e)}function p(){if(!p.called){p.called=!0;var e=document.querySelectorAll("pre code");Array.prototype.forEach.call(e,h)}}function v(){addEventListener("DOMContentLoaded",p,!1),addEventListener("load",p,!1)}function b(e,t){var n=E[e]=t(this);n.aliases&&n.aliases.forEach(function(t){R[t]=e})}function d(){return Object.keys(E)}function m(e){return E[e]||E[R[e]]}var N={classPrefix:"hljs-",tabReplace:null,useBR:!1,languages:void 0},E={},R={};this.highlight=c,this.highlightAuto=u,this.fixMarkup=l,this.highlightBlock=h,this.configure=g,this.initHighlighting=p,this.initHighlightingOnLoad=v,this.registerLanguage=b,this.listLanguages=d,this.getLanguage=m,this.inherit=i,this.IR="[a-zA-Z][a-zA-Z0-9_]*",this.UIR="[a-zA-Z_][a-zA-Z0-9_]*",this.NR="\\b\\d+(\\.\\d+)?",this.CNR="(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",this.BNR="\\b(0b[01]+)",this.RSR="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",this.BE={b:"\\\\[\\s\\S]",r:0},this.ASM={cN:"string",b:"'",e:"'",i:"\\n",c:[this.BE]},this.QSM={cN:"string",b:'"',e:'"',i:"\\n",c:[this.BE]},this.PWM={b:/\b(a|an|the|are|I|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such)\b/},this.CLCM={cN:"comment",b:"//",e:"$",c:[this.PWM]},this.CBCM={cN:"comment",b:"/\\*",e:"\\*/",c:[this.PWM]},this.HCM={cN:"comment",b:"#",e:"$",c:[this.PWM]},this.NM={cN:"number",b:this.NR,r:0},this.CNM={cN:"number",b:this.CNR,r:0},this.BNM={cN:"number",b:this.BNR,r:0},this.CSSNM={cN:"number",b:this.NR+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",r:0},this.RM={cN:"regexp",b:/\//,e:/\/[gimuy]*/,i:/\n/,c:[this.BE,{b:/\[/,e:/\]/,r:0,c:[this.BE]}]},this.TM={cN:"title",b:this.IR,r:0},this.UTM={cN:"title",b:this.UIR,r:0}};hljs.registerLanguage("xml",function(){var t="[A-Za-z0-9\\._:-]+",e={b:/<\?(php)?(?!\w)/,e:/\?>/,sL:"php",subLanguageMode:"continuous"},c={eW:!0,i:/</,r:0,c:[e,{cN:"attribute",b:t,r:0},{b:"=",r:0,c:[{cN:"value",c:[e],v:[{b:/"/,e:/"/},{b:/'/,e:/'/},{b:/[^\s\/>]+/}]}]}]};return{aliases:["html","xhtml","rss","atom","xsl","plist"],cI:!0,c:[{cN:"doctype",b:"<!DOCTYPE",e:">",r:10,c:[{b:"\\[",e:"\\]"}]},{cN:"comment",b:"<!--",e:"-->",r:10},{cN:"cdata",b:"<\\!\\[CDATA\\[",e:"\\]\\]>",r:10},{cN:"tag",b:"<style(?=\\s|>|$)",e:">",k:{title:"style"},c:[c],starts:{e:"</style>",rE:!0,sL:"css"}},{cN:"tag",b:"<script(?=\\s|>|$)",e:">",k:{title:"script"},c:[c],starts:{e:"</script>",rE:!0,sL:"javascript"}},e,{cN:"pi",b:/<\?\w+/,e:/\?>/,r:10},{cN:"tag",b:"</?",e:"/?>",c:[{cN:"title",b:/[^ \/><\n\t]+/,r:0},c]}]}}); \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/data/data/formatter/xml_view/highlightjs.css b/src/main/webapp/WEB-INF/data/data/formatter/xml_view/highlightjs.css new file mode 100644 index 0000000..bdaaa35 --- /dev/null +++ b/src/main/webapp/WEB-INF/data/data/formatter/xml_view/highlightjs.css @@ -0,0 +1,153 @@ +/* + +Original style from softwaremaniacs.org (c) Ivan Sagalaev <Maniac@SoftwareManiacs.Org> + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #f0f0f0; + -webkit-text-size-adjust: none; +} + +.hljs, +.hljs-subst, +.hljs-tag .hljs-title, +.nginx .hljs-title { + color: black; +} + +.hljs-string, +.hljs-title, +.hljs-constant, +.hljs-parent, +.hljs-tag .hljs-value, +.hljs-rules .hljs-value, +.hljs-preprocessor, +.hljs-pragma, +.haml .hljs-symbol, +.ruby .hljs-symbol, +.ruby .hljs-symbol .hljs-string, +.hljs-template_tag, +.django .hljs-variable, +.smalltalk .hljs-class, +.hljs-addition, +.hljs-flow, +.hljs-stream, +.bash .hljs-variable, +.apache .hljs-tag, +.apache .hljs-cbracket, +.tex .hljs-command, +.tex .hljs-special, +.erlang_repl .hljs-function_or_atom, +.asciidoc .hljs-header, +.markdown .hljs-header, +.coffeescript .hljs-attribute { + color: #800; +} + +.smartquote, +.hljs-comment, +.hljs-annotation, +.hljs-template_comment, +.diff .hljs-header, +.hljs-chunk, +.asciidoc .hljs-blockquote, +.markdown .hljs-blockquote { + color: #888; +} + +.hljs-number, +.hljs-date, +.hljs-regexp, +.hljs-literal, +.hljs-hexcolor, +.smalltalk .hljs-symbol, +.smalltalk .hljs-char, +.go .hljs-constant, +.hljs-change, +.lasso .hljs-variable, +.makefile .hljs-variable, +.asciidoc .hljs-bullet, +.markdown .hljs-bullet, +.asciidoc .hljs-link_url, +.markdown .hljs-link_url { + color: #080; +} + +.hljs-label, +.hljs-javadoc, +.ruby .hljs-string, +.hljs-decorator, +.hljs-filter .hljs-argument, +.hljs-localvars, +.hljs-array, +.hljs-attr_selector, +.hljs-important, +.hljs-pseudo, +.hljs-pi, +.haml .hljs-bullet, +.hljs-doctype, +.hljs-deletion, +.hljs-envvar, +.hljs-shebang, +.apache .hljs-sqbracket, +.nginx .hljs-built_in, +.tex .hljs-formula, +.erlang_repl .hljs-reserved, +.hljs-prompt, +.asciidoc .hljs-link_label, +.markdown .hljs-link_label, +.vhdl .hljs-attribute, +.clojure .hljs-attribute, +.asciidoc .hljs-attribute, +.lasso .hljs-attribute, +.coffeescript .hljs-property, +.hljs-phony { + color: #88f; +} + +.hljs-keyword, +.hljs-id, +.hljs-title, +.hljs-built_in, +.css .hljs-tag, +.hljs-javadoctag, +.hljs-phpdoc, +.hljs-dartdoc, +.hljs-yardoctag, +.smalltalk .hljs-class, +.hljs-winutils, +.bash .hljs-variable, +.apache .hljs-tag, +.hljs-type, +.hljs-typename, +.tex .hljs-command, +.asciidoc .hljs-strong, +.markdown .hljs-strong, +.hljs-request, +.hljs-status { + font-weight: bold; +} + +.asciidoc .hljs-emphasis, +.markdown .hljs-emphasis { + font-style: italic; +} + +.nginx .hljs-built_in { + font-weight: normal; +} + +.coffeescript .javascript, +.javascript .xml, +.lasso .markup, +.tex .hljs-formula, +.xml .javascript, +.xml .vbscript, +.xml .css, +.xml .hljs-cdata { + opacity: 0.5; +} diff --git a/src/main/webapp/WEB-INF/data/data/formatter/xml_view/view.groovy b/src/main/webapp/WEB-INF/data/data/formatter/xml_view/view.groovy new file mode 100644 index 0000000..4f1e59c --- /dev/null +++ b/src/main/webapp/WEB-INF/data/data/formatter/xml_view/view.groovy @@ -0,0 +1,19 @@ +import groovy.xml.XmlUtil + +new common.Handlers(handlers, f, env).addDefaultStartAndEndHandlers() + +handlers.add {true} { el -> + def out = new StringWriter() + new XmlNodePrinter(new PrintWriter(out)).print(new XmlParser().parseText(XmlUtil.serialize(el))) + def xmlString = XmlUtil.escapeXml(out.toString()) + """ +<link rel='stylesheet' href='${env.resourceUrl}highlightjs.css' /> + <pre> + <code class='html'> + $xmlString + </code> + </pre> + <script src="${env.resourceUrl}highlight-json-xml.js"></script> + <script>hljs.initHighlightingOnLoad();</script> +""" +} \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/data/data/formatter/xslt/render-functions.xsl b/src/main/webapp/WEB-INF/data/data/formatter/xslt/render-functions.xsl new file mode 100644 index 0000000..dbe52cb --- /dev/null +++ b/src/main/webapp/WEB-INF/data/data/formatter/xslt/render-functions.xsl @@ -0,0 +1,139 @@ +<?xml version="1.0" encoding="UTF-8"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:xs="http://www.w3.org/2001/XMLSchema" + xmlns:util="java:org.fao.geonet.util.XslUtil" + xmlns:gn-fn-render="http://geonetwork-opensource.org/xsl/functions/render" + version="2.0" + exclude-result-prefixes="#all"> + + + <xsl:function name="gn-fn-render:get-schema-strings" as="xs:string"> + <xsl:param name="strings" as="node()"/> + <xsl:param name="key" as="xs:string"/> + + <xsl:variable name="nameInStrings" + select="$strings/*[name() = $key]"/> + <xsl:value-of select="if ($nameInStrings != '') + then $nameInStrings + else $key"/> + </xsl:function> + + <!-- Render coordinates of bbox and an images of the geometry + using the region API --> + <xsl:function name="gn-fn-render:bbox"> + <xsl:param name="west" as="xs:double"/> + <xsl:param name="south" as="xs:double"/> + <xsl:param name="east" as="xs:double"/> + <xsl:param name="north" as="xs:double"/> + + <xsl:variable name="boxGeometry" + select="concat('POLYGON((', + $east, ' ', $south, ',', + $east, ' ', $north, ',', + $west, ' ', $north, ',', + $west, ' ', $south, ',', + $east, ' ', $south, '))')"/> + <xsl:variable name="numberFormat" select="'0.00'"/> + + <div class="thumbnail extent" + itemprop="spatial" + itemscope="itemscope" + itemtype="http://schema.org/Place"> + <span itemprop="geo" + itemscope="itemscope" + itemtype="http://schema.org/geoShape"> + <div class="input-group coord coord-north"> + <input type="text" class="form-control" + value="{format-number($north, $numberFormat)}" readonly=""/> + <span class="input-group-addon">N</span> + </div> + <div class="input-group coord coord-south"> + <input type="text" class="form-control" + value="{format-number($south, $numberFormat)}" readonly=""/> + <span class="input-group-addon">S</span> + </div> + <div class="input-group coord coord-east"> + <input type="text" class="form-control" + value="{format-number($east, $numberFormat)}" readonly=""/> + <span class="input-group-addon">E</span> + </div> + <div class="input-group coord coord-west"> + <input type="text" class="form-control" + value="{format-number($west, $numberFormat)}" readonly=""/> + <span class="input-group-addon">W</span> + </div> + <meta itemprop="box" + content="{$south},{$east} {$north},{$west}"/> + + </span> + <xsl:copy-of select="gn-fn-render:geometry($boxGeometry)"/> + </div> + </xsl:function> + + + <!-- Use region API to display an image --> + <xsl:function name="gn-fn-render:geometry"> + <xsl:param name="geometry" as="xs:string"/> + + <!-- TODO get system config --> + <xsl:if test="$geometry"> + <xsl:variable name="background" + select="util:getSettingValue('region/getmap/background')"/> + <xsl:variable name="width" + select="util:getSettingValue('region/getmap/width')"/> + <xsl:variable name="mapproj" + select="util:getSettingValue('region/getmap/mapproj')"/> + + <img class="gn-img-extent" + src="{$baseUrl}region.getmap.png?mapsrs={if ($mapproj != '') + then $mapproj + else 'EPSG:3857'}&width={ + if ($width != '') + then $width + else '600' + }&background={ + if ($background != '') + then $background + else 'osm' + }&geomsrs=EPSG:4326&geom={$geometry}"/> + </xsl:if> + + </xsl:function> + + <!-- Template to get metadata title using its uuid. + Title is loaded from current language index if available. + If not, default title is returned. + If failed, return uuid. --> + <xsl:function name="gn-fn-render:getMetadataTitle"> + <xsl:param name="uuid" as="xs:string"/> + <xsl:param name="language" as="xs:string"/> + + <xsl:variable name="metadataTitle" + select="util:getIndexField( + $language, + $uuid, + 'title', + $language)"/> + <xsl:choose> + <xsl:when test="$metadataTitle=''"> + <xsl:variable name="metadataDefaultTitle" + select="util:getIndexField( + $language, + $uuid, + '_defaultTitle', + $language)"/> + <xsl:choose> + <xsl:when test="$metadataDefaultTitle=''"> + <xsl:value-of select="$uuid"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$metadataDefaultTitle"/> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$metadataTitle"/> + </xsl:otherwise> + </xsl:choose> + </xsl:function> +</xsl:stylesheet> diff --git a/src/main/webapp/WEB-INF/data/data/formatter/xslt/render-layout-fields.xsl b/src/main/webapp/WEB-INF/data/data/formatter/xslt/render-layout-fields.xsl new file mode 100644 index 0000000..aa47908 --- /dev/null +++ b/src/main/webapp/WEB-INF/data/data/formatter/xslt/render-layout-fields.xsl @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="UTF-8"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:xs="http://www.w3.org/2001/XMLSchema" + exclude-result-prefixes="#all" + version="2.0"> + + + <!-- This template should be overriden in the + schema plugin for other types of layouts. --> + <xsl:template mode="render-field" match="*|@*"> + <xsl:param name="fieldName" select="''" as="xs:string"/> + <dl> + <dt> + <xsl:value-of select="if ($fieldName != '') + then $fieldName + else name(.)"/> + </dt> + <dd> + <xsl:apply-templates mode="render-value"/> + </dd> + </dl> + </xsl:template> + + <xsl:template mode="render-value" match="*|@*"> + <xsl:value-of select="."/> + </xsl:template> +</xsl:stylesheet> \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/data/data/formatter/xslt/render-layout.xsl b/src/main/webapp/WEB-INF/data/data/formatter/xslt/render-layout.xsl new file mode 100644 index 0000000..fc40b3d --- /dev/null +++ b/src/main/webapp/WEB-INF/data/data/formatter/xslt/render-layout.xsl @@ -0,0 +1,408 @@ +<?xml version="1.0" encoding="UTF-8"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:gn-fn-render="http://geonetwork-opensource.org/xsl/functions/render" + xmlns:gn-fn-core="http://geonetwork-opensource.org/xsl/functions/core" + xmlns:saxon="http://saxon.sf.net/" + extension-element-prefixes="saxon" + exclude-result-prefixes="#all" + version="2.0"> + + <xsl:import href="common/render-html.xsl"/> + <xsl:import href="common/functions-core.xsl"/> + <xsl:import href="render-variables.xsl"/> + <xsl:import href="render-functions.xsl"/> + <xsl:import href="render-layout-fields.xsl"/> + + <xsl:output method="html"/> + + <!-- Those templates should be overriden in the schema plugin - start --> + <xsl:template mode="getMetadataTitle" match="*"/> + <xsl:template mode="getMetadataAbstract" match="*"/> + <xsl:template mode="getMetadataHierarchyLevel" match="*"/> + <xsl:template mode="getOverviews" match="*"/> + <xsl:template mode="getMetadataHeader" match="*"/> + <!-- Those templates should be overriden in the schema plugin - end --> + + <!-- Starting point --> + <xsl:template match="/"> + <xsl:choose> + <xsl:when test="$root = 'div'"> + <!-- Render only a DIV with the record details --> + <xsl:call-template name="render-record"/> + </xsl:when> + <xsl:otherwise> + <!-- Render complete HTML page --> + <xsl:call-template name="render-html"> + <xsl:with-param name="content"> + <xsl:call-template name="render-record"/> + </xsl:with-param> + <xsl:with-param name="title"> + <xsl:apply-templates mode="getMetadataTitle" select="$metadata"/> + </xsl:with-param> + <xsl:with-param name="description"> + <xsl:apply-templates mode="getMetadataAbstract" select="$metadata"/> + </xsl:with-param> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <xsl:template name="render-record"> + <div class="container-fluid gn-metadata-view gn-schema-{$schema}"> + + <xsl:variable name="type"> + <xsl:apply-templates mode="getMetadataHierarchyLevel" select="$metadata"/> + </xsl:variable> + + <xsl:variable name="title"> + <xsl:apply-templates mode="getMetadataTitle" select="$metadata"/> + </xsl:variable> + + + <article id="gn-metadata-view-{$metadataId}" + class="gn-md-view gn-metadata-display" + itemscope="itemscope" + itemtype="{gn-fn-core:get-schema-org-class($type)}"> + + + + <div class="row"> + <div class="col-md-8"> + + <header> + <h1 itemprop="name" + itemscope="itemscope" + itemtype="http://schema.org/name"> + <i class="fa gn-icon-{$type}"> </i> + <xsl:value-of select="$title"/> + </h1> + + <xsl:apply-templates mode="getMetadataHeader" select="$metadata"/> + + <div gn-related="md" + data-user="user" + data-types="onlines"> </div> + </header> + + <div> + <xsl:apply-templates mode="render-toc" select="$viewConfig"/> + <!-- Tab panes --> + <div class="tab-content"> + <xsl:for-each select="$viewConfig/*"> + <xsl:sort select="@formatter-order" + data-type="number"/> + <xsl:apply-templates mode="render-view" + select="."/> + </xsl:for-each> + </div> + </div> + </div> + <div class="gn-md-side gn-md-side-advanced col-md-4"> + <xsl:apply-templates mode="getOverviews" select="$metadata"/> + + <section class="gn-md-side-providedby"> + <h4> + <i class="fa fa-fw fa-cog"> </i> + <span><xsl:value-of select="$schemaStrings/providedBy"/></span> + </h4> + <img class="gn-source-logo" + src="{$nodeUrl}../images/logos/{$source}.png" /> + </section> + + <section class="gn-md-side-social"> + <h4> + <i class="fa fa-fw fa-share-square-o"> </i> + <span><xsl:value-of select="$schemaStrings/shareOnSocialSite"/></span> + </h4> + <a href="https://twitter.com/share?url={encode-for-uri($nodeUrl)}api%2Frecords%2F{$metadataUuid}" + target="_blank" class="btn btn-default"> + <i class="fa fa-fw fa-twitter"> </i> + </a> + <a href="https://plus.google.com/share?url={encode-for-uri($nodeUrl)}api%2Frecords%2F{$metadataUuid}" + target="_blank" class="btn btn-default"> + <i class="fa fa-fw fa-google-plus"> </i> + </a> + <a href="https://www.facebook.com/sharer.php?u={encode-for-uri($nodeUrl)}api%2Frecords%2F{$metadataUuid}" + target="_blank" class="btn btn-default"> + <i class="fa fa-fw fa-facebook"> </i> + </a> + <a href="http://www.linkedin.com/shareArticle?mini=true&summary=Hydrological Basins in Africa (Sample record, please remove!)&url={encode-for-uri($nodeUrl)}api%2Frecords%2F{$metadataUuid}" + target="_blank" class="btn btn-default"> + <i class="fa fa-fw fa-linkedin"> </i> + </a> + <a href="mailto:?subject={$title}&body={encode-for-uri($nodeUrl)}api%2Frecords%2F{$metadataUuid}" + target="_blank" class="btn btn-default"> + <i class="fa fa-fw fa-envelope-o"> </i> + </a> + </section> + + <section class="gn-md-side-viewmode"> + <h4> + <i class="fa fa-fw fa-eye"> </i> + <span><xsl:value-of select="$schemaStrings/viewMode"/></span> + </h4> + <xsl:for-each select="$configuration/editor/views/view[not(@disabled)]"> + <ul> + <li> + <a> + <xsl:attribute name="href"> + <xsl:choose> + <xsl:when test="@name = 'xml'"> + <xsl:value-of select="concat($nodeUrl, 'api/records/', $metadataUuid, '/formatters/xml')"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="concat($nodeUrl, 'api/records/', $metadataUuid, '/formatters/xsl-view?view=', @name, '&portalLink=', $portalLink)"/> + </xsl:otherwise> + </xsl:choose> + </xsl:attribute> + <xsl:variable name="name" select="@name"/> + <xsl:value-of select="$schemaStrings/*[name(.) = $name]"/> + </a> + </li> + </ul> + </xsl:for-each> + </section> + + <section class="gn-md-side-access"> + <div class="well text-center"> + <span itemprop="identifier" + itemscope="itemscope" + itemtype="http://schema.org/identifier" + class="hidden"> + <xsl:value-of select="$metadataUuid"/> + </span> + <a itemprop="url" + itemscope="itemscope" + itemtype="http://schema.org/url" + class="btn btn-block btn-primary" + href="{if ($portalLink != '') + then replace($portalLink, '\$\{uuid\}', $metadataUuid) + else concat($nodeUrl, $language, '/catalog.search#/metadata/', $metadataUuid)}"> + <i class="fa fa-fw fa-link"> </i> + <xsl:value-of select="$schemaStrings/linkToPortal"/> + </a> + <xsl:value-of select="$schemaStrings/linkToPortal-help"/> + </div> + </section> + + <section class="gn-md-side-associated"> + <h4> + <i class="fa fa-fw fa-link"> </i> + <span><xsl:value-of select="$schemaStrings/associatedResources"/></span> + </h4> + <div gn-related="md" + data-user="user" + data-types="parent|children|services|datasets|hassources|sources|fcats|siblings|associated"> + Not available + </div> + </section> + </div> + </div> + + <!-- + TODO: scrollspy or tabs on header ? + <div class="gn-scroll-spy" + data-gn-scroll-spy="gn-metadata-view-{$metadataId}" + data-watch="" + data-filter="div > h3"/>--> + <footer> + + </footer> + </article> + <br/> + <br/> + </div> + </xsl:template> + + <!-- Render list of tabs in the current view --> + <xsl:template mode="render-toc" match="view"> + <xsl:if test="count(tab) > 1"> + <ul class="view-outline nav nav-tabs nav-tabs-advanced"> + <xsl:for-each select="tab"> + <li> + <a href="#gn-tab-{@id}"> + <xsl:value-of select="gn-fn-render:get-schema-strings($schemaStrings, @id)"/> + </a> + </li> + </xsl:for-each> + </ul> + </xsl:if> + </xsl:template> + + + <!-- Render a tab. Tab id is defined in strings + and set the title of the section --> + <xsl:template mode="render-view" match="tab"> + <xsl:variable name="content"> + <xsl:apply-templates mode="render-view" select="*|@*"/> + </xsl:variable> + + <!-- Display a tab only if it contains something --> + <xsl:if test="$content != ''"> + <xsl:variable name="title" + select="gn-fn-render:get-schema-strings($schemaStrings, @id)"/> + + <div id="gn-tab-{@id}" class="tab-pane"> + <xsl:if test="count(following-sibling::tab) > 0"> + <h1 class="view-header"> + <xsl:value-of select="$title"/> + </h1> + </xsl:if> + <xsl:choose> + <xsl:when test="normalize-space($content) = ''"> + No information + </xsl:when> + <xsl:otherwise> + <xsl:copy-of select="$content"/>  + </xsl:otherwise> + </xsl:choose> + </div> + </xsl:if> + </xsl:template> + + + <!-- Render sections. 2 types of sections could be + defined: + 1) section with xpath matching an element + 2) section with name create a set of fields + --> + <xsl:template mode="render-view" + match="section[@xpath]"> + <div id="gn-view-{generate-id()}" class="gn-tab-content"> + <xsl:apply-templates mode="render-view" select="@xpath"/> + </div> + </xsl:template> + + + <xsl:template mode="render-view" + match="section[not(@xpath)]"> + <div id="gn-section-{generate-id()}" class="gn-tab-content"> + <xsl:if test="@name"> + <xsl:variable name="title" + select="gn-fn-render:get-schema-strings($schemaStrings, @name)"/> + + <xsl:element name="h{3 + count(ancestor-or-self::*[name(.) = 'section'])}"> + <xsl:attribute name="class" select="'view-header'"/> + <xsl:value-of select="$title"/> + </xsl:element> + </xsl:if> + <xsl:apply-templates mode="render-view" + select="section|field"/>  + </div> + </xsl:template> + + + <!-- Render metadata elements defined by XPath --> + <xsl:template mode="render-view" + match="field[not(template)]"> + <xsl:param name="base" select="$metadata"/> + + <!-- Matching nodes --> + <xsl:variable name="nodes"> + <saxon:call-template name="{concat('evaluate-', $schema)}"> + <xsl:with-param name="base" select="$base"/> + <xsl:with-param name="in" select="concat('/../', @xpath)"/> + </saxon:call-template> + </xsl:variable> + + <xsl:variable name="fieldName"> + <xsl:if test="@name"> + <xsl:value-of select="gn-fn-render:get-schema-strings($schemaStrings, @name)"/> + </xsl:if> + </xsl:variable> + + <xsl:for-each select="$nodes"> + <xsl:apply-templates mode="render-field"> + <xsl:with-param name="fieldName" select="$fieldName"/> + </xsl:apply-templates> + </xsl:for-each> + </xsl:template> + + + <xsl:template mode="render-view" + match="field[template]" + priority="2"> + <xsl:param name="base" select="$metadata"/> + <xsl:if test="@name"> + <xsl:variable name="title" + select="gn-fn-render:get-schema-strings($schemaStrings, @name)"/> + + <xsl:element name="h{3 + 1 + count(ancestor-or-self::*[name(.) = 'section'])}"> + <xsl:attribute name="class" select="'view-header'"/> + <xsl:value-of select="$title"/> + </xsl:element> + </xsl:if> + + <xsl:variable name="fieldXpath" + select="@xpath"/> + <xsl:variable name="fields" select="template/values/key"/> + + <xsl:variable name="elements"> + <saxon:call-template name="{concat('evaluate-', $schema)}"> + <xsl:with-param name="base" select="$base"/> + <xsl:with-param name="in" + select="concat('/../', $fieldXpath)"/> + </saxon:call-template> + </xsl:variable> + + <!-- Loop on each element matching current field --> + <xsl:for-each select="$elements/*"> + <xsl:variable name="element" select="."/> + + <!-- Loop on each fields --> + <xsl:for-each select="$fields"> + <xsl:variable name="nodes"> + <saxon:call-template name="{concat('evaluate-', $schema)}"> + <xsl:with-param name="base" select="$element"/> + <xsl:with-param name="in" + select="concat('/./', + replace(@xpath, '/gco:CharacterString', ''))"/> + </saxon:call-template> + </xsl:variable> + + <xsl:variable name="fieldName"> + <xsl:if test="@label"> + <xsl:value-of select="gn-fn-render:get-schema-strings($schemaStrings, @label)"/> + </xsl:if> + </xsl:variable> + + <xsl:for-each select="$nodes"> + <xsl:apply-templates mode="render-field"> + <xsl:with-param name="fieldName" select="$fieldName"/> + </xsl:apply-templates> + </xsl:for-each> + </xsl:for-each> + </xsl:for-each> + </xsl:template> + + <!-- Render metadata elements defined by XPath --> + <xsl:template mode="render-view" match="@xpath"> + <xsl:param name="base" select="$metadata"/> + + <!-- Matching nodes --> + <xsl:variable name="nodes"> + <saxon:call-template name="{concat('evaluate-', $schema)}"> + <xsl:with-param name="base" select="$base"/> + <xsl:with-param name="in" select="concat('/../', .)"/> + </saxon:call-template> + </xsl:variable> + + <xsl:variable name="fieldName"> + <xsl:if test="../@name"> + <xsl:value-of select="gn-fn-render:get-schema-strings($schemaStrings, ../@name)"/> + </xsl:if> + </xsl:variable> + + <xsl:for-each select="$nodes"> + <xsl:apply-templates mode="render-field"> + <xsl:with-param name="fieldName" select="$fieldName"/> + </xsl:apply-templates> + </xsl:for-each> + </xsl:template> + + + <!-- Forgot all none matching elements --> + <xsl:template mode="render-view" match="*|@*"/> + <xsl:template mode="render-field" match="*|@*|text()"/> + +</xsl:stylesheet> diff --git a/src/main/webapp/WEB-INF/data/data/formatter/xslt/render-variables.xsl b/src/main/webapp/WEB-INF/data/data/formatter/xslt/render-variables.xsl new file mode 100644 index 0000000..ca2106d --- /dev/null +++ b/src/main/webapp/WEB-INF/data/data/formatter/xslt/render-variables.xsl @@ -0,0 +1,69 @@ +<?xml version="1.0" encoding="UTF-8"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + version="2.0"> + + <!-- All URL parameters could be available as params --> + + <!-- Define the view to be rendered as defined in + the config-editor.xml file of the schema. --> + <xsl:param name="view" select="'default'"/> + + <!-- Choose the type of HTML to return: + * html render a full HTML page + * div render a div element to be embedded in an existing webpage. --> + <xsl:param name="root" select="'html'"/> + + <!-- Define the full portal link. By default, it will link + to the catalog.search main page of the catalog. To configure a custom + use {{uuid}} to be replaced by the record UUID. + eg. http://another.portal.org/${uuid} + --> + <xsl:param name="portalLink" select="''"/> + + + <!-- TODO: schema is not part of the XML --> + <xsl:variable name="schema" + select="/root/info/record/datainfo/schemaid"/> + <xsl:variable name="source" + select="/root/info/record/sourceinfo/sourceid"/> + <xsl:variable name="metadataId" + select="/root/info/record/id"/> + <xsl:variable name="metadataUuid" + select="/root/info/record/uuid"/> + + <xsl:variable name="schemaCodelists"> + <null/> + </xsl:variable> + + <xsl:variable name="metadata" + select="/root/undefined"/> + <xsl:variable name="language" + select="/root/lang/text()"/> + <xsl:variable name="baseUrl" + select="/root/url"/> + <xsl:variable name="nodeUrl" + select="/root/gui/nodeUrl"/> + + <!-- Date formating --> + <xsl:variable name="dateFormats"> + <dateTime> + <for lang="eng" default="true">[H1]:[m01]:[s01] on [D1] [MNn] [Y]</for> + <for lang="fre">[H1]:[m01]:[s01] le [D1] [MNn] [Y]</for> + </dateTime> + <date> + <for lang="eng" default="true">[D1] [MNn] [Y]</for> + <for lang="fre">[D1] [MNn] [Y]</for> + </date> + </xsl:variable> + + + <xsl:variable name="schemaStrings" + select="/root/schemas/*[name() = $schema]/strings"/> + + <!-- Get params from requests parameters or use the first view configured --> + <xsl:variable name="viewConfig" select="$configuration/editor/views/view[@name = $view]"/> + + <!-- Flat mode is defined in the first tab of the view --> + <xsl:variable name="isFlatMode" + select="$viewConfig/tab[1]/@mode = 'flat'"/> +</xsl:stylesheet> diff --git a/src/main/webapp/apps_extend/actions.js b/src/main/webapp/apps_extend/actions.js new file mode 100644 index 0000000..c857943 --- /dev/null +++ b/src/main/webapp/apps_extend/actions.js @@ -0,0 +1,3643 @@ +if ( typeof Ext == "undefined" ) Ext = {}; +if ( typeof Ext.menu == "undefined" ) Ext.menu = {}; +if ( typeof Ext.Msg == "undefined" ) Ext.Msg = {}; +if ( typeof Ext.menu.Item == "undefined" ) Ext.menu.Item = {}; +if ( typeof Ext.DomQuery == "undefined" ) Ext.DomQuery = {}; + +/** + * define class Ext.menu.Item + */ +Ext.menu.ItemPro = function(config) { + angular.extend(this, config); +}; +angular.extend(Ext.menu.ItemPro.prototype, { + items : [], + getEl : function(){ + this.disabled = false; + if ( this.el ) return this.el; + var me = this; + this.el = document.createElement('li'); + this.el.className = "dropdown-submenu"; + + this.anchor = document.createElement('a'); + $(this.anchor).click(function(){me.handler && me.handler()}); + $(this.anchor).html(' '+this.text); + this.el.appendChild(this.anchor); + // iconCls + $(this.anchor).prepend($('<i class="'+me.iconCls+'"></i>')); + + if (this.menu.items && this.menu.items.length) { + this.submenu = document.createElement('ul'); + this.submenu.className = "dropdown-menu dropdown-menu-right"; + this.el.appendChild(this.submenu); + this.menu.items.forEach(function(action, index) { + //console.log(index, action.getEl()); + $(action.getEl()).appendTo(me.submenu) + }) + } + return this.el; + }, + setText : function(text) { + this.text = text; + $(this.anchor).html(' '+this.text); + }, + setDisabled : function(bDisabled) { + this.disabled = bDisabled || false; + if( this.disabled ) $(this.el).attr("disabled", bDisabled).addClass("disabled"); + else $(this.el).removeAttr("disabled").removeClass("disabled") + //$(this.el).toggleClass("disabled", this.disabled); + }, + show : function(bDisabled) { + this.setDisabled(bDisabled); + $(this.el).toggle(true); + if (this.actionMenu && this.refreshActionMenu) { + this.actionMenu.showAt(this.actionMenu.getPosition()); + } + if (this.actionMenu && this.actionMenu.nbActionPro) { + this.actionMenu.nbActionPro--; + if (this.actionMenu.nbActionPro == 0) { + if (this.actionMenu.menu_loading) { + this.actionMenu.menu_loading.style.display = "none"; + } + } + } + }, + hide : function() { + this.setDisabled(true); + $(this.el).toggle(false); + if (this.actionMenu && this.refreshActionMenu) { + this.actionMenu.showAt(this.actionMenu.getPosition()); + } + if (this.actionMenu && this.actionMenu.nbActionPro) { + this.actionMenu.nbActionPro--; + if (this.actionMenu.nbActionPro == 0) { + if (this.actionMenu.menu_loading) { + this.actionMenu.menu_loading.style.display = "none"; + } + } + } + }, + /** + * all instances must implement this function and call this.hide() or + * this.show() + */ + setVisibility : function(catalogue) { + this.hide(); + }, + getTraitement : function(catalogue) { + var tabTraitement = []; + if (this.menu.items) { + this.menu.items.forEach(function(action, index) { + if (catalogue.isIdentified() && action.bConnect + || !catalogue.isIdentified() && action.bSearch) { + if (action.traitement) { + if (action.traitement instanceof Array) { + tabTraitement = tabTraitement.concat(action.traitement); + } else { + tabTraitement.push(action.traitement); + } + } + } + }); + } + if (catalogue.isIdentified() && this.bConnect + || !catalogue.isIdentified() && this.bSearch) { + if (this.traitement) { + if (this.traitement instanceof Array) { + tabTraitement = tabTraitement.concat(this.traitement); + } else { + tabTraitement.push(this.traitement); + } + } + } + return tabTraitement.join("|"); + }, + setAttr : function(attr, val) { + this[attr] = val; + if (this.menu.items) { + this.menu.items.forEach(function(action, index) { + action[attr] = val; + action.setHandler(action.handler, action); + }); + } + }, + setHandler : function(handler, scope){ + this.handler = function(){handler.call(scope||this)}; + } +}); + +/** + * define class Ext.ActionPro + */ +Ext.ActionPro = function(config) { + angular.extend(this, config); +}; +angular.extend(Ext.ActionPro.prototype, { + items : [], + getEl : function(){ + this.disabled = false; + if ( this.el ) return this.el; + var me = this; + this.el = document.createElement('li'); + this.anchor = document.createElement('a'); + $(this.anchor).click(function(){me.handler()}); + $(this.anchor).html(' '+this.text); + this.el.appendChild(this.anchor); + // iconCls + $(this.anchor).prepend($('<i class="'+me.iconCls+'"></i>')); + return this.el; + }, + setText : function(text) { + this.text = text; + $(this.anchor).html(' '+this.text); + }, + setDisabled : function(bDisabled) { + this.disabled = bDisabled || false; + if( this.disabled ) $(this.el).attr("disabled", bDisabled).addClass("disabled"); + else $(this.el).removeAttr("disabled").removeClass("disabled") + //$(this.el).toggleClass("disabled", this.disabled); + }, + show : function(bDisabled) { + this.setDisabled(bDisabled); + $(this.el).toggle(true); + if (this.actionMenu && this.refreshActionMenu) { + this.actionMenu.showAt(this.actionMenu.getPosition()); + } + this.resetToolTip(); + if (this.actionMenu && this.actionMenu.nbActionPro) { + this.actionMenu.nbActionPro--; + if (this.actionMenu.nbActionPro == 0) { + if (this.actionMenu.menu_loading) { + this.actionMenu.menu_loading.style.display = "none"; + } + } + } + }, + hide : function() { + this.setDisabled(true); + $(this.el).toggle(false); + if (this.actionMenu && this.refreshActionMenu) { + this.actionMenu.showAt(this.actionMenu.getPosition()); + } + if (this.actionMenu && this.actionMenu.nbActionPro) { + this.actionMenu.nbActionPro--; + if (this.actionMenu.nbActionPro == 0) { + if (this.actionMenu.menu_loading) { + this.actionMenu.menu_loading.style.display = "none"; + } + } + } + }, + /** + * all instances must implement this function and call this.hide() or + * this.show() + */ + setVisibility : function(catalogue) { + this.hide(); + }, + getTraitement : function(catalogue) { + if ((catalogue.isIdentified() && this.bConnect) + || (!catalogue.isIdentified() && this.bSearch)) { + if (this.traitement instanceof Array) { + return this.traitement.join("|"); + } else { + return this.traitement; + } + } else { + return ""; + } + }, + resetToolTip : function() { + if (this.oMetadataSelect) { + setToolTipToActionSelection(this); + } else { + setToolTipToAction(this); + } + }, + setAttr : function(attr, val) { + this[attr] = val; + }, + setHandler : function(handler, scope){ + this.handler = function(){handler.call(scope||this)}; + } +}); + +/** + * set a toolTip to an action + */ +function setToolTipToAction(actionPro, toolTip) { + actionPro.items.forEach(function(item) { + if (item.oToolTip) { + item.oToolTip.destroy(); + } + _toolTip = (toolTip ? toolTip : (actionPro.toolTip + ? actionPro.toolTip + : "")); + if (_toolTip) { + item.oTolTip = new Ext.ToolTip({ + target : item.id, + title : _toolTip + }); + } + }); +} + +/** + * set a toolTip to an action on selection + */ +function setToolTipToActionSelection(actionPro, toolTip) { + actionPro.items.forEach(function(item) { + if (item.oToolTip) { + item.oToolTip.destroy(); + } + _toolTip = (toolTip ? toolTip : (actionPro.toolTip + ? actionPro.toolTip + : "")); + if (_toolTip) { + item.oToolTip = new Ext.ToolTip({ + target : item.id, + title : _toolTip, + anchor : "anchor" + }); + } + }); +} + +/** + * set metadata actions + */ +function setMetadataActions($rootScope, $scope, actionMenu, record, addOnVisible, catalogue) { + // add actions only if actionMenu exists + + // set toolTip before showing actions +// actionMenu.on("beforeshow", function(menu) { +// for (var i = 0; i < actionMenu.tabActionPro.length; i++) { +// if (actionMenu.tabActionPro[i].resetToolTip) { +// actionMenu.tabActionPro[i].resetToolTip(); +// } +// } +// // set toolTip to existing actions +// if (actionMenu.viewAction) { +// setToolTipToAction(actionMenu.viewAction, +// "Consulter la fiche de métadonnée"); +// } +// if (actionMenu.viewXMLAction) { +// setToolTipToAction(actionMenu.viewXMLAction, +// "Exporter la fiche de métadonnée au format XML"); +// } +// if (actionMenu.viewXMLAction) { +// setToolTipToAction(actionMenu.printAction, +// "Exporter la fiche de métadonnée au format PDF"); +// } +// if (actionMenu.getMEFAction) { +// setToolTipToAction(actionMenu.getMEFAction, +// "Exporter la fiche de métadonnée au format ZIP"); +// } +// }); + + // show loading + + if ($scope.metadata_uuid==record.get("uuid")) return; + + $(actionMenu).html('') + // add loading + $scope.getting_rights = true; + $scope.metadata_uuid = record.get("uuid"); + actionMenu.tabActionPro = []; + var index = 0; + /**PRODIGE40 : REMOVE + // add action "Editer" + index++; + actionMenu.editNewAction = getEditNewAction(catalogue); + actionMenu.insert(index, actionMenu.editNewAction); + actionMenu.tabActionPro.push(actionMenu.editNewAction);*/ + // add action "Editer le catalogue d'attributs" + /*index++; + actionMenu.catalogueProAction = getCatalogueAction(catalogue); + actionMenu.insert(index, actionMenu.catalogueProAction); + actionMenu.tabActionPro.push(actionMenu.catalogueProAction);*/ + // add action "Importer les données" + /*index++; + actionMenu.insert(index, new Ext.ActionPro({ + text : "DEVELOPPEMENT : Ext Alert", + handler : function(){ Ext.Msg.alert('TODO DEVELOPPEMENT : Ext Alert', "contenu<br>Sur plusieurs lignes <br>Fin.", function(){alert('ok')}) }, + setVisibility : function(){return true;} + }) + ); + index++; + actionMenu.insert(index, new Ext.ActionPro({ + text : "DEVELOPPEMENT : Ext Confirm", + handler : function(){ Ext.Msg.confirm('TODO DEVELOPPEMENT : Ext Confirm', "contenu<br>Sur plusieurs lignes <br>Fin.", function(){alert('ok')}) }, + setVisibility : function(){return true;} + }) + );*/ + // add action "Synchronisation des données SIG" + actionMenu.synchronisationAction = getHarvestedSynchronizationAction(catalogue); + actionMenu.insert(index, actionMenu.synchronisationAction); + actionMenu.tabActionPro.push(actionMenu.synchronisationAction); + // aadd action "Importer les données" + index++; + actionMenu.importDataAction = getImportDataAction(catalogue); + actionMenu.insert(index, actionMenu.importDataAction); + actionMenu.tabActionPro.push(actionMenu.importDataAction); + // add action "Créer une donnée" + index++; + actionMenu.createStructureAction = getCreateStructureDataAction(catalogue); + actionMenu.insert(index, actionMenu.createStructureAction); + actionMenu.tabActionPro.push(actionMenu.createStructureAction); + // add action "Dupliquer" + /*index++; + actionMenu.duplicateProAction = getDuplicateProAction(catalogue); + actionMenu.insert(index, actionMenu.duplicateProAction); + actionMenu.tabActionPro.push(actionMenu.duplicateProAction);*/ + // add action "Administrer la jointure" + index++; + actionMenu.adminJoinAction = getAdminJoinAction(catalogue); + actionMenu.insert(index, actionMenu.adminJoinAction); + actionMenu.tabActionPro.push(actionMenu.adminJoinAction); + // add action "Paramétrer la carte" + index++; + actionMenu.paramCarteAction = getParamCarteAction(catalogue); + actionMenu.insert(index, actionMenu.paramCarteAction); + actionMenu.tabActionPro.push(actionMenu.paramCarteAction); + index++; + + if(catalogue.PRO_IS_RAWGRAPH_ACTIF=="on"){ + actionMenu.paramChartAction = getParamChartAction(catalogue); + actionMenu.insert(index, actionMenu.paramChartAction); + actionMenu.tabActionPro.push(actionMenu.paramChartAction); + index++; + } + + // add action "Renommer la carte" + /*index++; + actionMenu.renameCarteAction = getRenameCarteAction(catalogue); + actionMenu.insert(index, actionMenu.renameCarteAction); + actionMenu.tabActionPro.push(actionMenu.renameCarteAction);*/ + // add action "Créer une métadonnée enfant" + /*index++; + actionMenu.createChildAction = getCreateChildAction(catalogue); + actionMenu.insert(index, actionMenu.createChildAction); + actionMenu.tabActionPro.push(actionMenu.createChildAction);*/ + // add action "Représentation par défaut" + + actionMenu.representationActions = getRepresentationActions(catalogue); + actionMenu.insert(index, actionMenu.representationActions); + actionMenu.tabActionPro.push(actionMenu.representationActions); + + index++; + actionMenu.qualiteActions = getQualiteActions(catalogue); + actionMenu.insert(index, actionMenu.qualiteActions); + actionMenu.tabActionPro.push(actionMenu.qualiteActions); + + // add sub-menu "Gérer l'accès public" + index++; + actionMenu.publicAccessActions = getPublicAccessActions(catalogue); + actionMenu.insert(index, actionMenu.publicAccessActions); + actionMenu.tabActionPro.push(actionMenu.publicAccessActions); + // add sub-menu "Modifier le statut" + /*index++; + actionMenu.updateStatutActions = getUpdateStatutActions(catalogue); + actionMenu.insert(index, actionMenu.updateStatutActions); + actionMenu.tabActionPro.push(actionMenu.updateStatutActions);*/ + // add action "Supprimer" + // add action "Ajouter au panier" + index += 5; + actionMenu.addPanierAction = getAddToPanierAction(catalogue); + actionMenu.insert(index, actionMenu.addPanierAction); + actionMenu.tabActionPro.push(actionMenu.addPanierAction); + // add action "Visualiser" + + index++; + actionMenu.visualiserAction = getVisualiserAction(catalogue); + actionMenu.insert(index, actionMenu.visualiserAction); + actionMenu.tabActionPro.push(actionMenu.visualiserAction); + + index++; + if(catalogue.PRO_IS_RAWGRAPH_ACTIF=="on"){ + actionMenu.visualiserChartAction = getVisualiserChartAction(catalogue); + actionMenu.insert(index, actionMenu.visualiserChartAction); + actionMenu.tabActionPro.push(actionMenu.visualiserChartAction); + } + + + // add action "Export PDF complet" + index += 5; + actionMenu.exportPDFCompletAction = getExportPDFCompletAction(catalogue); + actionMenu.insert(index, actionMenu.exportPDFCompletAction); + actionMenu.tabActionPro.push(actionMenu.exportPDFCompletAction); + + index++; + actionMenu.deleteProAction = getDeleteProAction(catalogue); + actionMenu.insert(index, actionMenu.deleteProAction); + actionMenu.tabActionPro.push(actionMenu.deleteProAction); + + // set visibility on actions + if (actionMenu + && (!addOnVisible || addOnVisible + && actionMenu.getEl().dom.style.top.substr(0, 1) != "-")) { + if (addOnVisible) { + actionMenu.showAt(actionMenu.getPosition()); + } + // disable action "Editer" + if (actionMenu.editAction) { + actionMenu.editAction.hide(); + actionMenu.editAction.setDisabled(true); + } + if (actionMenu.extEditorAction) { + actionMenu.extEditorAction.hide(); + actionMenu.extEditorAction.setDisabled(true); + } + if (actionMenu.angularEditorAction) { + actionMenu.angularEditorAction.hide(); + actionMenu.angularEditorAction.setDisabled(true); + } + if (actionMenu.editNewAction) { + actionMenu.editNewAction.hide(); + actionMenu.editNewAction.setDisabled(true); + } + // hide default action "Supprimer" + if (actionMenu.deleteAction) { + actionMenu.deleteAction.hide(); + actionMenu.deleteAction.setDisabled(true); + } + // hide action "Autres actions" + if (actionMenu.otherActions) { + actionMenu.otherActions.hide(); + actionMenu.otherActions.setDisabled(true); + } + if (catalogue.isIdentified()) { + // hide action "Zoomer vers" + if (actionMenu.zoomToAction) { + actionMenu.zoomToAction.hide(); + actionMenu.zoomToAction.setDisabled(true); + } + } + var tabTraitement = []; + + // init all actions visibility + for (var i = 0; i < actionMenu.tabActionPro.length; i++) { + actionMenu.tabActionPro[i].setAttr("actionMenu", actionMenu); + actionMenu.tabActionPro[i].setAttr("record", record); + actionMenu.tabActionPro[i].setAttr("refreshActionMenu", addOnVisible); + actionMenu.tabActionPro[i].setVisibility(catalogue, true); + var traitements = actionMenu.tabActionPro[i].getTraitement(catalogue); + if ( !traitements ) traitements = []; + if ( !(traitements instanceof Array) ) traitements = traitements.split("|"); + traitements.forEach(function(traitement){ + if ( traitement && tabTraitement.indexOf(traitement)==-1 ) + tabTraitement.push(traitement); + }) + } + // get user rights and show actions + + /** + * fonction de verification des droits sur les actions du menu + */ + var verifyRights = function() { + if ( $scope.getting_rights ){ + $.ajax({ + //crossDomain: true, + url : catalogue.routes.catalogue.prodige_verify_rights_url, + data : { + ID : record.get("id"), + OBJET_TYPE : record.get('type'), + OBJET_STYPE : ( in_array("chart", record.type) ? "chart" : + (record.get('type') == "service" + && record.get('serviceType') && record.get("isharvested") == "n" + ? record.get('serviceType') + : "")), + TRAITEMENTS : tabTraitement.join("|") + }, + success : function(oResUserRights) { + $scope.getting_rights = true /*false*/; + $scope.$digest() + + var oRights = (typeof oResUserRights=="string" ? eval("(" + oResUserRights + ")") : oResUserRights); + if (actionMenu.editNewAction) { + if (typeof oRights["CMS"] != 'undefined' && oRights["CMS"]) { + actionMenu.editNewAction.show(); + actionMenu.editNewAction.setDisabled(false); + } else { + actionMenu.editNewAction.hide(); + actionMenu.editNewAction.setDisabled(true); + } + } + actionMenu.nbActionPro = actionMenu.tabActionPro.length; + //alert("TODO apps_extend/actions.js/setMetadataActions::ajax => restituer l'action setVisibility" ); + for (var i = 0; i < actionMenu.tabActionPro.length; i++) { + actionMenu.tabActionPro[i].setAttr("oRights", oRights); + + RESTITUER : actionMenu.tabActionPro[i].setVisibility(catalogue); + + // /*TO DELETE {*/ + // if ( actionMenu.tabActionPro[i].action_id == 'catalogue' ){ + // actionMenu.tabActionPro[i].setVisibility(catalogue); + // } else { + // actionMenu.tabActionPro[i].show(); + // actionMenu.tabActionPro[i].setDisabled(false); + // } + // /*}TO DELETE*/ + } + // hide default action "Supprimer" + if (actionMenu.deleteAction) { + actionMenu.deleteAction.hide(); + actionMenu.deleteAction.setDisabled(true); + } + // hide default action "Supprimer" + if (actionMenu.angularEditorAction) { + actionMenu.angularEditorAction.hide(); + actionMenu.angularEditorAction.setDisabled(true); + } + // hide action "Autres actions" + if (actionMenu.otherActions) { + actionMenu.otherActions.hide(); + actionMenu.otherActions.setDisabled(true); + } + + }, + failure : function() { + $scope.getting_rights = true /*false*/; + console.log("failure"); + } + }); + } + } // end verifyRights + $(actionMenu).on('beforeshow', verifyRights); + $(actionMenu).trigger('beforeshow'); + + } +} + +/** + * set metadata actions on selection + */ +function setSelectionMetadataActions(actionMenu, topToolBar, catalogue) { + if (actionMenu) { + + if (!actionMenu.bProSelectionActionsAdded) { + + actionMenu.on("beforeshow", function(menu) { + if (menu.tabSelectionActionPro) { + menu.nbActionPro = menu.tabSelectionActionPro.length; + } + // show loading + var menu_selection_loading = document + .getElementById('menu_selection_loading_' + menu.getId()); + if (menu_selection_loading) { + menu_selection_loading.style.display = ""; + } else { + // add loading + if (menu.getEl()) { + var div = document.createElement('div'); + div.setAttribute('id', 'menu_selection_loading_' + menu.getId()); + div + .setAttribute( + 'style', + 'position:absolute;top:0;width:100%;height:100%;background-color:rgba(255, 255, 255, 0.5)'); + var img = document.createElement('img'); + img.setAttribute('src', catalogue.URL + "/images/spinner.gif"); + img.setAttribute('style', 'display:block;margin:0 auto'); + div.appendChild(img); + menu.getEl().dom.appendChild(div); + menu.menu_loading = div; + } + } + $.ajax({ + crossDomain: true, + url : urlParent + "Services/selectMetadata.php", + data : { + action : "get", + query : catalogue.services.rootUrl + + catalogue.metadataStore.service + + "?" + + GeoNetwork.util.SearchTools.buildQueryFromForm(Ext + .getCmp("searchForm"), catalogue.startRecord, + GeoNetwork.util.SearchTools.sortBy, + catalogue.metadataStore.fast) + }, + success : function(oResMetadataSelect) { + var oMetadataSelect = eval("(" + + oResMetadataSelect + ")"); + this.tabSelectionActionPro.forEach(function(action) { + action.setAttr("oMetadataSelect", oMetadataSelect); + action.setVisibility(catalogue); + }); + }, + scope : this + }); + // set toolTip to existing actions on selection + setToolTipToActionSelection(topToolBar.selectionActions[0], + "Exporter la sélection au format ZIP"); + setToolTipToActionSelection(topToolBar.selectionActions[1], + "Exporter la sélection au format CSV"); + setToolTipToActionSelection(topToolBar.selectionActions[2], + "Exporter la sélection au format PDF"); + setToolTipToActionSelection(topToolBar.selectionActions[6], + "Affecter une (des) catégorie(s)"); + }); + + actionMenu.tabSelectionActionPro = []; + var index = 1; + // add action "Ajouter au panier" + actionMenu.addSelectionToPanierActionPro = getAddToPanierAction(catalogue); + actionMenu.insert(index, actionMenu.addSelectionToPanierActionPro); + actionMenu.tabSelectionActionPro.push(actionMenu.addSelectionToPanierActionPro); + + // add action "Modifier le statut" + actionMenu.addSelectionUpdateStatutActionsPro = getUpdateStatutActions(catalogue); + actionMenu.insert(index, actionMenu.addSelectionUpdateStatutActionsPro); + actionMenu.tabSelectionActionPro.push(actionMenu.addSelectionUpdateStatutActionsPro); + + // add action "Supprimer" + index++; + actionMenu.addSelectionDeleteActionPro = getDeleteProAction(catalogue); + actionMenu.insert(index, actionMenu.addSelectionDeleteActionPro); + actionMenu.tabSelectionActionPro.push(actionMenu.addSelectionDeleteActionPro); + + // add "Categories" + /*index++ + actionMenu.addSelectionCategoriesActionPro = getCategoriesProAction(catalogue, topToolBar); + actionMenu.insert(index, actionMenu.addSelectionCategoriesActionPro); + actionMenu.tabSelectionActionPro.push(actionMenu.addSelectionCategoriesActionPro); + */ + // attach actionMenu to action => useful to show/hide loading menu + for (var i = 0; i < actionMenu.tabSelectionActionPro.length; i++) { + actionMenu.tabSelectionActionPro[i].setAttr("actionMenu", actionMenu); + } + + // actionMenu.fireEvent("beforeshow", actionMenu); + + actionMenu.bProSelectionActionsAdded = true; + } + } +} + +/** + * return action "Importer les données" + */ +function getImportDataAction(catalogue) { + return new Ext.ActionPro({ + text : "Importer les données...", + iconCls : "fa fa-fw fa-upload", + traitement : "CMS", + bConnect : true, + bSearch : false, + handler : function() { + if( this.disabled ) return; + import_data(catalogue, this.record.get("uuid")); + }, + setVisibility : function(catalogue, bInit) { + if (catalogue.isIdentified() && this.bConnect + || !catalogue.isIdentified() && this.bSearch) { + if (bInit) { + this.hide(); + return; + } + var sdom_isset = (this.oRights.sdom_dispose_metadata || false); + switch (this.record.get('type') ) { + case "series" : + switch (this.oRights["couche_type"]) { + case "1" : // type "jointure" + this.show(); + break; + default : // type "vector" + this.hide(); + break; + } + case "dataset" : + switch (this.oRights["couche_type"]) { + case "-4" : // type "jointure" + //this.hide(); + //break; + default : // type "données", "majic", "table" + var enable = this.oRights[this.traitement]; + //verify rights to edit metadata (creation mode for non harvested data) + /*if(!enable && this.record.get("isharvested")=="n"){ + enable = Boolean( this.record["geonet:info"].edit ? this.record["geonet:info"].edit : false ) ; + }*/ + this.show( !(sdom_isset && enable)); + break; + } + break; + case "nonGeographicDataset" : + this.show( !(sdom_isset && this.oRights[this.traitement])); + break; + default : + this.hide(); + break; + } + } else { + this.hide(); + } + }, + getTraitement : function(catalogue) { + if (catalogue.isIdentified() && this.bConnect + || !catalogue.isIdentified() && this.bSearch) { + return this.traitement; + } else { + return ""; + } + } + }); +} + +/** + * return action "Créer la Structure des données" + */ +function getCreateStructureDataAction(catalogue) { + return new Ext.ActionPro({ + text : "Créer la structure de données", + iconCls : "fa fa-fw fa-edit", + traitement : "CMS", + bConnect : true, + bSearch : false, + handler : function() { + if( this.disabled ) return; + administration_carto_creerStructure(catalogue, this.record.get('id'), + this.oRights["layer_table"]||null, window.location.href, + this.oRights["color_theme_id"], this.oRights["server_url"]); + }, + setVisibility : function(catalogue, bInit) { + if (catalogue.isIdentified() && this.bConnect + || !catalogue.isIdentified() && this.bSearch) { + if (bInit) { + this.hide(); + return; + } + switch (this.record.get('type') ) { + case "dataset" : + switch (this.oRights["couche_type"]) { + case undefined : + if (this.oRights["CMS"] && this.oRights["PRO_EDITION"]){ + var enable = this.oRights[this.traitement]; + //verify rights to edit metadata (creation mode for non harvested data) + if(!enable && this.record.get("isharvested")=="n"){ + enable = this.record["geonet:info"].edit ? this.record["geonet:info"].edit :false ; + } + this.show(!enable); + }else{ + this.hide(); + } + break; + case "" : // type "donnee" + case "1" : // type "donnee" + this.hide(); + break; + default : // type "données", "majic", "table" + this.hide(); + break; + } + break; + default : + this.hide(); + break; + } + } else { + this.hide(); + } + }, + getTraitement : function(catalogue) { + if (catalogue.isIdentified() && this.bConnect + || !catalogue.isIdentified() && this.bSearch) { + return this.traitement; + } else { + return ""; + } + } + }); +} + +/** + * return action "Affecter une(des) catégorie(s) + */ +/* +function getCategoriesProAction(catalogue, toptoolbar) { + return new Ext.ActionPro({ + text : "Affecter une(des) catégorie(s)", + iconCls : "", + traitement : ["CMS"], + bConnect : true, + bSearch : false, + handler : function() { + if( $(this.el).prop('disabled') ) return; + if (this.oMetadataSelect) { + var tabMetadataDisallowedName = []; + var tabMetadataDisallowed = []; + var nbMetadataSelect = this.oMetadataSelect.length; + this.oMetadataSelect.forEach(function(metadata) { + $.ajax({ + //crossDomain: true, + scope : this, + url : catalogue.routes.catalogue.prodige_verify_rights_url, + data : { + ID : metadata.id, + OBJET_TYPE : metadata.type, + OBJET_STYPE : (metadata.type == "service" && metadata.serviceType + ? metadata.serviceType + : ""), + TRAITEMENTS : this.traitement.join("|") + }, + success : function(oResUserRights) { + var oRights = (typeof oResUserRights=="string" ? eval("(" + oResUserRights + ")") : oResUserRights); + if (!oRights[this.traitement[0]]) { + tabMetadataDisallowed.push(metadata["uuid"]); + tabMetadataDisallowedName.push(metadata["title"]); + } + nbMetadataSelect--; + if (nbMetadataSelect == 0) { + // On deselectionne les metadonnees dont les droits sont + // insuffisants + catalogue.metadataSelect('remove', tabMetadataDisallowed); + // On affiche la fenetre des categories + catalogue.massiveOp('Categories', function() { + var modalWindow = Ext.getCmp("modalWindow"); + modalWindow.on("destroy", function() { + catalogue.metadataSelect('add', tabMetadataDisallowed); + var tabMetadataDisallowedLength = tabMetadataDisallowedName.length; + tabMetadataDisallowedName = tabMetadataDisallowedName + .join(", "); + if (tabMetadataDisallowedLength > 0) { + Ext.Msg.alert("Droits insuffisants", + (tabMetadataDisallowedLength == 1 + ? "La couche " + : "Les couches ") + + tabMetadataDisallowedName + + (tabMetadataDisallowedLength == 1 + ? " n'a pu être mise " + : " n'ont pu être mises ") + + "à jour. Droits insuffisants."); + } + }); + }); + } + } + }); + }, this); + } + }, + setVisibility : function(catalogue, bInit) { + if ((catalogue.isIdentified() && this.bConnect) || (!catalogue.isIdentified() && this.bSearch)) { + this.show(bInit); + this.mode = ""; + if (this.oMetadataSelect) { + if (this.oMetadataSelect.length == 0) { + this.show(true); + } else { + this.show(); + } + } + if (this.oRights) { + var type = this.record.get('type') ; + var sub_type = (this.record.get('serviceType') || this.oRights["couche_type"]); + this.mode = getMode(type, sub_type); + } + } else { + this.hide(); + } + } + }); +} +*/ +/** + * return action "Supprimer" + */ +function getDeleteProAction(catalogue) { + //var doDelete = function(catalogue, uuid, type) { + + /*switch (type) { + case "dataset" : + administration_carto_delCouche(oRights["pk_data"], oRights["fmeta_id"], + oRights["layer_table"], oRights["couche_type"], + oRights["server_url"], title, onSuccess, tabParams); + break; + case "nonGeographicDataset" : + administration_carto_delCoucheMajic(oRights["pk_data"], + oRights["fmeta_id"], title, onSuccess, tabParams); + break; + case "series" : + confirm_administration_carto_delDataConfirmed(oRights["pk_data"], + oRights["fmeta_id"], 0, title, onSuccess, tabParams); + break; + case "service" : + if (typeof oRights["pk_data"] != 'undefined' + && typeof oRights["pk_stockage_carte"] != 'undefined') { + administration_carto_delMap(oRights["pk_data"], + oRights["pk_stockage_carte"], oRights["fmeta_id"], title, + onSuccess, tabParams); + } else { + administration_carto_delService(oRights["fmeta_id"], title, + onSuccess, tabParams); + } + break; + }*/ + //} + function doSelectionDelete(type, tabMetadataDelete) { + if (tabMetadataDelete.length == 0) { + Ext.Msg + .alert( + "Suppression de " + (type == "service" ? "carte" : "couche"), + "Vous n'avez pas les droits suffisants pour supprimer les métadonnées sélectionnées."); + } else { + var doDeleteNext = function(doDelete, tabMetadataDelete) { + var metadataDelete = tabMetadataDelete.pop(); + if (metadataDelete) { + doDelete(metadataDelete.metadata.type, metadataDelete.metadata.title, + metadataDelete.oRights, doDeleteNext, [doDelete, tabMetadataDelete]); + } else { + search(); + } + }; + doDeleteNext(doDelete, tabMetadataDelete); + } + } + + return new Ext.ActionPro({ + text : "Supprimer", + iconCls : "fa fa-fw fa-trash-o", + traitement : "CMS", + bConnect : true, + bSearch : false, + handler : function() { + if( this.disabled ) return; + if (this.oMetadataSelect) { + var nbDel = this.oMetadataSelect.length; + var tabMetadataDelete = []; + this.oMetadataSelect.forEach(function(metadata) { + $.ajax({ + //crossDomain: true, + scope : this, + url : catalogue.routes.catalogue.prodige_verify_rights_url, + data : { + ID : metadata.id, + OBJET_TYPE : metadata.type, + OBJET_STYPE : (metadata.type == "service" + && metadata.serviceType + ? metadata.serviceType + : ""), + TRAITEMENTS : this.traitement + }, + success : function(oResUserRights) { + var enable = Boolean( this.record["geonet:info"].edit ? this.record["geonet:info"].edit : false ) ; + var oRights = (typeof oResUserRights=="string" ? eval("(" + oResUserRights + ")") : oResUserRights); + //for metadata not associated to PRODIGE data, take geonetwork rights + if (this.record.get('isharvested')=="n" && (oRights[this.traitement] || enable)) { + tabMetadataDelete.push({ + metadata : metadata, + oRights : oRights + }); + } + nbDel--; + if (nbDel == 0) { + doSelectionDelete(metadata.type, tabMetadataDelete); + } + } + }); + }, this); + } else { + //doDelete(this.record.get('type') , this.record.get("title"), this.oRights); + deleteData(catalogue, this.record.get("uuid"), this.record.get("type"), this.oRights, this.record); + } + }, + setVisibility : function(catalogue, bInit) { + if (catalogue.isIdentified() && this.bConnect + || !catalogue.isIdentified() && this.bSearch) { + if (bInit) { + this.show(true); + return; + } + if (this.oMetadataSelect) { + if (this.oMetadataSelect.length == 0) { + this.show(true); + } else { + this.show(); + } + } else { + //action not visible for directory + if(this.record.get('istemplate')=="s" /*|| this.record.get('type')=="featureCatalog"*/){ + this.hide(); + return; + } + var scope = this; + var enable = Boolean( this.record["geonet:info"].edit ? this.record["geonet:info"].edit : false ) ; + //for metadata not associated to PRODIGE data, take geonetwork rights + if (this.record.get('isharvested')=="n" && (this.oRights[this.traitement] || enable)) { + //@TODO MIGRATION 4.0 (?? visible si il y a des enfants ??) + /*switch (this.record.get('type') ) { + case "series" : + ajaxRelatedMetadata("children", "json", this, this.record, function(oRes) { + if ( !oRes ){scope.show(false);return;} + if ( (oRes.relation instanceof Array ? oRes.relation.length > 0 : oRes.relation["@type"]=="children") ) { + scope.show(true); + } else { + scope.show(false); + } + }); + break; + default : + this.show(bInit); + break; + }*/ + this.show(bInit); + } else { + this.show(true); + } + } + } else { + this.hide(); + } + }, + getTraitement : function(catalogue) { + if (catalogue.isIdentified() && this.bConnect + || !catalogue.isIdentified() && this.bSearch) { + return this.traitement; + } else { + return ""; + } + } + }); +} + +/** + * return action "Dupliquer" + */ +/* +function getDuplicateProAction(catalogue) { + return new Ext.ActionPro({ + text : "Dupliquer", + iconCls : "md-mn-copy", + traitement : "CMS", + bConnect : true, + bSearch : false, + handler : function() { + if( $(this.el).prop('disabled') ) return; + switch (this.record.get('type') ) { + case "dataset" : + case "nonGeographicDataset" : + administration_carto_copyCouche(this.oRights["pk_data"], + this.oRights["fmeta_id"], parent.domaines_getCurentDomaine(), + parent.domaines_getCurentSousDomaine()); + break; + case "service" : + administration_carto_copyMap(this.oRights["pk_data"], + this.oRights["pk_stockage_carte"], this.oRights["fmeta_id"]); + break; + } + }, + setVisibility : function(catalogue, bInit) { + if (catalogue.isIdentified() && this.bConnect + || !catalogue.isIdentified() && this.bSearch) { + switch (this.record.get('type') ) { + case "series" : + this.hide(); + break; + case "service" : + if ( (this.record.get('serviceType') || (this.record.get('serviceType') ? this.record.get('serviceType') : null)) == 'invoke') { + this.show((bInit ? true : !this.oRights[this.traitement])); + } else { + this.hide(); + } + break; + default : + this.show((bInit ? true : !this.oRights[this.traitement])); + break; + } + } else { + this.hide(); + } + }, + getTraitement : function(catalogue) { + if (catalogue.isIdentified() && this.bConnect + || !catalogue.isIdentified() && this.bSearch) { + return this.traitement; + } else { + return ""; + } + } + }); +}*/ + +/** + * return action "Editer" (la fiche de métadonnées) + */ +function getEditNewAction(catalogue) { +/**PRODIGE 40 : remove*/ +return; + + return new Ext.ActionPro({ + text : "Éditer", + iconCls : "fa fa-fw fa-pencil", + traitement : "CMS", + bConnect : true, + bSearch : false, + handler : function() { + if( this.disabled ) return; + var id = this.record.get("id"); + metadataEdit2(id) + // catalogue.editorWindow.setPosition(0, 0); + }, + setVisibility : function(catalogue, bInit) { + if (catalogue.isIdentified() && this.bConnect + || !catalogue.isIdentified() && this.bSearch) { + switch (this.record.get('type') ) { + case "dataset" : + case "nonGeographicDataset" : + case "series" : + case "service" : + if (bInit) { + this.show(true); + return; + } + $.ajax({ + crossDomain: true, + url : catalogue.services.mdRelation, + data : { + type : "related", + fast : false, + uuid : this.record.get("uuid") + }, + success : function(oRes) { + var xmlDoc = oRes.responseXML; + var tabCatalogue = Ext.DomQuery.jsSelect("relations/relation", xmlDoc); + if (tabCatalogue.length > 0) { + this.show(!this.oRights[this.traitement]); + } else { + this.show(!this.oRights[this.traitement]); + } + }, + scope : this + }); + break; + } + } else { + this.hide(); + } + }, + getTraitement : function(catalogue) { + if (catalogue.isIdentified() && this.bConnect + || !catalogue.isIdentified() && this.bSearch) { + if (this.record.get('type') || this.record.get('type') == "dataset") { + return this.traitement; + } else { + return ""; + } + } else { + return ""; + } + } + }); +} + +/** + * return action "Créer/Editer le catalogue d'attributs" + */ +/* +function getCatalogueAction(catalogue) { + return new Ext.ActionPro({ + text : "Créer le catalogue d'attributs", + iconCls : "md-mn-edit", + traitement : "CMS", + action_id : 'catalogue', + bConnect : true, + bSearch : false, + handler : function() { + if( $(this.el).prop('disabled') ) return; + var me = this; + switch (this.record.get('type') ) { + case "dataset" : + if (this.catalogue_uuid == -1) { + // création du catalogue d'attributs + $.ajax({ + crossDomain: true, + dataType : 'json', + url : 'md.create', + data : angular.extend({ + _content_type : 'json', + id : catalogue.id_template_catalogue, + template : 'n', + child : 'n' + }, (this.record.get('groupowner') ? {group : this.record.get('groupowner') } : {fullPrivileges : true, group : 0})), + success : function(results) { + var catalogue_id = results.id; + if ( !results.id ) return; + // get UUID du catalogue d'attributs + $.ajax({ + crossDomain: true, + url : 'q', + data : { + _content_type : 'json', + _id : catalogue_id, + _isTemplate : 'y or n or s', + fast : 'index', from : 1, to : 1 + }, + success : function(results){ + if ( !results.metadata )return; + me.catalogue_uuid = results.metadata['geonet:info'].uuid; + // rattachement en tant que catalogue d'attributs + $.ajax({ + crossDomain: true, + url : 'md.processing', + data : { + id : me.record.get("id"), + uuidref : me.catalogue_uuid, + process : "fcats-add" + }, + success : function(oRes) { + // édition du catalogue d'attributs + metadataEdit2(me.catalogue_uuid); + } + }) + } + }) + } + }); + } else { + metadataEdit2(me.catalogue_uuid); + } + break; + } + }, + setVisibility : function(catalogue, bInit) { + var me = this; + if ((catalogue.isIdentified() && this.bConnect) || (!catalogue.isIdentified() && this.bSearch)) { + switch (this.record.get('type') ) { + case "dataset" : + if (bInit) { + this.setText("Créer le catalogue d'attributs"); + this.show(true); + return; + } + + ajaxRelatedMetadata("fcat", "xml", + this, + this.record, + function(documentXML) { + var tabCatalogue = documentXML.getElementsByTagName('info'); + if (tabCatalogue.length > 0) { + me.setText("Editer le catalogue d'attributs"); + me.show(!me.oRights[me.traitement]); + me.catalogue_uuid = tabCatalogue[0].getElementsByTagName("uuid")[0].innerHTML; + } else { + me.setText("Créer le catalogue d'attributs"); + me.show(!me.oRights[me.traitement]); + me.catalogue_uuid = -1; + } + }); + break; + case "nonGeographicDataset" : + case "series" : + case "service" : + this.hide(); + break; + } + } else { + this.hide(); + } + }, + getTraitement : function(catalogue) { + if ((catalogue.isIdentified() && this.bConnect) || (!catalogue.isIdentified() && this.bSearch)) { + if (this.record.get('type') || this.record.get('type') == "dataset") { + return this.traitement; + } else { + return ""; + } + } else { + return ""; + } + } + }); +} +*/ +/** + * return sub-menu "Représentation par défaut" + */ +function getRepresentationActions(catalogue) { + var representationParamAction = new Ext.ActionPro({ + text : "Paramétrer...", + iconCls : "fa fa-fw fa-wrench", + handler : function() { + if( this.disabled ) return; + administration_carto_paramCarto(catalogue, this.record.get("uuid")); + } + }); + + var representationInitAction = new Ext.ActionPro({ + text : "Réinitialiser", + iconCls : "fa fa-fw fa-undo", + handler : function() { + if( this.disabled ) return; + reinitParamCarto(catalogue, this.record.get("uuid")); + } + }); + + return new Ext.menu.ItemPro({ + text : "Représentation par défaut", + iconCls : "fa fa-fw fa-globe", + traitement : "CMS", + bConnect : true, + bSearch : false, + menu : { + items : [representationParamAction, representationInitAction] + }, + setVisibility : function(catalogue, bInit) { + + if (catalogue.isIdentified() && this.bConnect + || !catalogue.isIdentified() && this.bSearch) { + + if (bInit || !this.oRights["visualisable"]) { + this.hide(); + return; + } + switch (this.record.get('type') ) { + case "dataset" : + switch (this.oRights["couche_type"]) { + case "-3" : // type "table" + this.hide(); + this.menu.items.forEach(function(action, index) { + action.hide(); + }); + break; + default : // other types + this.show(!this.oRights[this.traitement]); + this.menu.items.forEach(function(action, index) { + action.show(!this.oRights[this.traitement]); + }, this); + break; + } + break; + default : + this.hide(); + this.menu.items.forEach(function(action, index) { + action.hide(); + }); + break; + } + } else { + this.hide(); + } + }, + getTraitement : function(catalogue) { + if (catalogue.isIdentified() && this.bConnect + || !catalogue.isIdentified() && this.bSearch) { + if (this.record.get('type') || this.record.get('type') == "dataset") { + return this.traitement; + } else { + return ""; + } + } else { + return ""; + } + } + }); +} + +/** + * Mise en conformité d'un dataset + */ +function conformiteQualite(catalogue, uuid){ + Ext.Msg.confirm( + 'Module Qualité', + "Vous êtes sur le point d'effectuer une mise en conformité de la fiche de métadonnée vis à vis d'uns standard. Cela inscrira cette confomité dans la fiche de métadonnée. Confirmez-vous cette action ?" + + , function(id, value) { + if (id === 'yes') { + $.ajax({ + crossDomain: true, + url : catalogue.URL + "/standards/conformite", + data : { + uuid : uuid + }, + success : function(oRes) { + if (oRes.success) { + Ext.Msg.alert("Succès", + " la mise en conformité a été effectuée."); + } else { + Ext.Msg.alert("Echec", "Impossible d'effectuer la mise en conformité."); + } + }, + failure : function() { + + console.log("failure"); + }, + scope : this + }); + } + }, this); + +} + + +/** + * Controle qualité d'un dataset + */ +function controleQualite(catalogue, uuid){ + window.open(catalogue.URL +'/standards/qualite/'+uuid); +} +/** + * return sub-menu "Qualité" + */ +function getQualiteActions(catalogue) { + var controleQualiteAction = new Ext.ActionPro({ + text : "Contrôle qualité", + iconCls : "fa fa-fw fa-list-alt", + handler : function() { + if( this.disabled ) return; + controleQualite(catalogue, this.record.get("uuid")); + } + }); + + var conformiteAction = new Ext.ActionPro({ + text : "Mise en conformité vis d'un standard", + iconCls : "fa fa-fw fa-check", + handler : function() { + if( this.disabled ) return; + conformiteQualite(catalogue, this.record.get("uuid")); + } + }); + + return new Ext.menu.ItemPro({ + text : "Qualité", + iconCls : "fa fa-fw fa-thumbs-up", + traitement : "CMS", + bConnect : true, + bSearch : false, + menu : { + items : [controleQualiteAction, conformiteAction] + }, + setVisibility : function(catalogue, bInit) { + + if (catalogue.isIdentified() && this.bConnect + || !catalogue.isIdentified() && this.bSearch) { + + if (bInit || !this.oRights["visualisable"] || this.oRights["PRO_MODULE_STANDARDS"]!="on") { + this.hide(); + return; + } + switch (this.record.get('type') ) { + case "dataset" : + case "series" : + this.show(!this.oRights[this.traitement]); + this.menu.items.forEach(function(action, index) { + action.show(!this.oRights[this.traitement]); + }, this); + break; + default : + this.hide(); + this.menu.items.forEach(function(action, index) { + action.hide(); + }); + break; + } + } else { + this.hide(); + } + }, + getTraitement : function(catalogue) { + if (catalogue.isIdentified() && this.bConnect + || !catalogue.isIdentified() && this.bSearch) { + if (this.record.get('type') || this.record.get('type') == "dataset") { + return this.traitement; + } else { + return ""; + } + } else { + return ""; + } + } + }); +} + +/** + * return action "Créer une métadonnée enfant" + */ +function getCreateChildAction(catalogue) { + return new Ext.ActionPro({ + text : "Créer une métadonnée enfant", + iconCls : "fa fa-fw fa-sitemap", + traitement : "CMS", + bConnect : true, + bSearch : false, + handler : function() { + if( this.disabled ) return; + administration_carto_addFicheEnfant(this.oRights["fmeta_id"], parent + .domaines_getCurentDomaine(), parent + .domaines_getCurentSousDomaine()); + }, + setVisibility : function(catalogue, bInit) { + if (catalogue.isIdentified() && this.bConnect + || !catalogue.isIdentified() && this.bSearch) { + switch (this.record.get('type') ) { + case "series" : + this.show((bInit ? true : !this.oRights[this.traitement])); + break; + default : + this.hide(); + break; + } + } else { + this.hide(); + } + }, + getTraitement : function(catalogue) { + if (catalogue.isIdentified() && this.bConnect + || !catalogue.isIdentified() && this.bSearch) { + if ((this.record.get('type') ) == "series") { + return this.traitement; + } else { + return ""; + } + } else { + return ""; + } + } + }); +} + +/** + * return action "Administrer la jointure" + */ +function getHarvestedSynchronizationAction(catalogue) { + return new Ext.ActionPro({ + text : "Synchroniser les données", + iconCls : "fa fa-fw fa-refresh", + traitement : "CMS", + bConnect : true, + bSearch : false, + handler : function() { + if( this.disabled ) return; + window.open(catalogue.admincartoURL.replace(/\/$/g, '')+'/prodige/synchronisation/admin/'+this.record.get('uuid')); + }, + setVisibility : function(catalogue, bInit) { + this.hide(); + if (catalogue.isIdentified() && this.bConnect + || !catalogue.isIdentified() && this.bSearch + ) { + if (bInit) { + this.hide(); + return; + } + var links = this.record.get('links'), + hasDataLink = false; + links.forEach(function(link){ + hasDataLink = hasDataLink || (["OGC:WFS","WWW:DOWNLOAD"].indexOf(link.protocol.replace(/^(\w+:\w+).*/, "$1").toUpperCase())!=-1); + return !hasDataLink; + }); + if ( (this.record.get('isharvested')=="n" && !this.oRights["SYNCHRONIZE"]) + || this.record.get('type')=="featureCatalog" + || !eval(this.record["geonet:info"].edit) + || !hasDataLink + ) { + this.hide(); + } else { + this.show(false) + } + } + }, + getTraitement : function(catalogue) { + if (catalogue.isIdentified() && this.bConnect + || !catalogue.isIdentified() && this.bSearch) { + if ((this.record.get('type') ) == "dataset") { + return this.traitement; + } else { + return ""; + } + } else { + return ""; + } + } + }); +} + +/** + * return action "Administrer la jointure" + */ +function getAdminJoinAction(catalogue) { + return new Ext.ActionPro({ + text : "Administrer la jointure", + iconCls : "fa fa-fw fa-table", + traitement : "CMS", + bConnect : true, + bSearch : false, + handler : function() { + if( this.disabled ) return; + administration_carto_adminView(this.record.get('id'), + this.oRights["pk_data"], this.oRights["layer_table"], + window.location.href, this.oRights["color_theme_id"], + prodigeConfig.URL); + }, + setVisibility : function(catalogue, bInit) { + this.hide();return; + if (catalogue.isIdentified() && this.bConnect + || !catalogue.isIdentified() && this.bSearch) { + if (bInit) { + this.hide(); + return; + } + switch (this.record.get('type') ) { + case "dataset" : + switch (this.oRights["couche_type"]) { + case "-4" : // type "jointure" + this.show(!this.oRights[this.traitement]); + break; + default : // other types + this.hide(); + break; + } + break; + default : + this.hide(); + break; + } + } else { + this.hide(); + } + }, + getTraitement : function(catalogue) { + if (catalogue.isIdentified() && this.bConnect + || !catalogue.isIdentified() && this.bSearch) { + if ((this.record.get('type') ) == "dataset") { + return this.traitement; + } else { + return ""; + } + } else { + return ""; + } + } + }); +} +/** + * return action "Paramétrer la carte" + */ +function getParamChartAction(catalogue) { + return new Ext.ActionPro({ + text : "Paramétrer le graphe...", + iconCls : "fa fa-fw fa-bar-chart", + traitement : "CMS", + bConnect : true, + bSearch : false, + handler : function() { + if( this.disabled ) return; + window.open(catalogue.URL + "/graph/update?uuid="+ this.record.get("uuid")); + }, + setVisibility : function(catalogue, bInit) { + if (catalogue.isIdentified() && this.bConnect + || !catalogue.isIdentified() && this.bSearch) { + if (bInit) { + this.hide(); + return; + } + var sdom_isset = (this.oRights.sdom_dispose_metadata || false); + + switch (this.record.get('type') ) { + case "service" : + if(in_array("chart", this.record.type)){ + //if ((this.record.get('serviceType')) == "invoke") { + var enable = this.oRights[this.traitement]; + + //verify rights to edit metadata (creation mode for non harvested data) + /*if(!enable && this.record.get("isharvested")=="n"){ + enable = Boolean( this.record["geonet:info"].edit ? this.record["geonet:info"].edit : false ) ; + }*/ + this.show( !(sdom_isset && enable)); + } else { + this.hide(); + } + break; + default : + this.hide(); + break; + } + } else { + this.hide(); + } + }, + getTraitement : function(catalogue) { + if (catalogue.isIdentified() && this.bConnect + || !catalogue.isIdentified() && this.bSearch) { + if (this.record.get('type') == "service") { + return this.traitement; + } else { + return ""; + } + } else { + return ""; + } + } + }); +} +/** + * return action "Paramétrer la carte" + */ +function getParamCarteAction(catalogue) { + return new Ext.ActionPro({ + text : "Paramétrer la carte...", + iconCls : "fa fa-fw fa-globe", + traitement : "CMS", + bConnect : true, + bSearch : false, + handler : function() { + if( this.disabled ) return; + window.open(catalogue.admincartoURL + "/geosource/init_map/"+ this.record.get("uuid")); + }, + setVisibility : function(catalogue, bInit) { + if (catalogue.isIdentified() && this.bConnect + || !catalogue.isIdentified() && this.bSearch) { + if (bInit) { + this.hide(); + return; + } + var sdom_isset = (this.oRights.sdom_dispose_metadata || false); + switch (this.record.get('type') ) { + case "service" : + if ((this.record.get('serviceType')) == "invoke") { + if(in_array("chart", this.record.type)){ + this.hide(); + }else{ + var enable = this.oRights[this.traitement]; + //verify rights to edit metadata (creation mode for non harvested data) + /*if(!enable && this.record.get("isharvested")=="n"){ + enable = Boolean( this.record["geonet:info"].edit ? this.record["geonet:info"].edit : false ) ; + }*/ + this.show( !(sdom_isset && enable)); + } + } else { + this.hide(); + } + break; + default : + this.hide(); + break; + } + } else { + this.hide(); + } + }, + getTraitement : function(catalogue) { + if (catalogue.isIdentified() && this.bConnect + || !catalogue.isIdentified() && this.bSearch) { + if (this.record.get('type') == "service") { + return this.traitement; + } else { + return ""; + } + } else { + return ""; + } + } + }); +} + + +/** + * return action "Renommer la carte" + */ +function getRenameCarteAction(catalogue) { + return new Ext.ActionPro({ + text : "Renommer la carte...", + iconCls : "fa fa-fw fa-terminal", + traitement : "CMS", + bConnect : true, + bSearch : false, + handler : function() { + if( this.disabled ) return; + map_change_name(this.oRights["srv"], this.oRights["path"], + this.oRights["pk_stockage_carte"], document.location.href); + }, + setVisibility : function(catalogue, bInit) { + if (catalogue.isIdentified() && this.bConnect + || !catalogue.isIdentified() && this.bSearch) { + if (bInit) { + this.hide(); + return; + } + switch (this.record.get('type')) { + case "service" : + if (this.record.get('serviceType') + && this.record.get('serviceType') == "invoke") { + if (this.oRights["carte_type"] == 0) { // carte + // interactive + this.show(!this.oRights[this.traitement]); + } else { // autre carte + this.hide(); + } + } else { + this.hide(); + } + break; + default : + this.hide(); + break; + } + } else { + this.hide(); + } + }, + getTraitement : function(catalogue) { + if (catalogue.isIdentified() && this.bConnect + || !catalogue.isIdentified() && this.bSearch) { + if (this.record.get('type') == "service") { + return this.traitement; + } else { + return ""; + } + } else { + return ""; + } + } + }); +} + +/** + * return sub-menu "Modifier le statut" + */ +function getUpdateStatutActions(catalogue) { + function getMode(type, sub_type) { + var mode = ""; + switch (type) { + case "dataset" : + switch (sub_type) { + case "1" : // vecteur + case "0" : // raster + case "-1" : // lot + mode = "couche"; + break; + case "-2" : // majic + mode = "majic"; + break; + case "-3" : // table + mode = "table"; + break; + case "-4" : // vue + mode = "vue"; + break; + default : + mode = "couche"; + break; + } + break; + case "service" : + mode = "carte"; // enough for service and carte + break; + default : + mode = "couche"; + break; + } + return mode; + } + + var retirerAction = new Ext.ActionPro({ + text : "Retirer", + iconCls : "fa fa-fw fa-minus", + traitement : ["PROPOSITION", "PUBLICATION"], + bConnect : true, + bSearch : false, + handler : function() { + if( this.disabled ) return; + if (this.oMetadataSelect) { + var tabMetadataAllowed = []; + var nbMetadataSelect = this.oMetadataSelect.length; + this.oMetadataSelect.forEach(function(metadata) { + $.ajax({ + crossDomain: true, + scope : this, + url : catalogue.routes.catalogue.prodige_verify_rights_url, + data : { + ID : metadata.id, + OBJET_TYPE : metadata.type, + OBJET_STYPE : (metadata.type == "service" + && metadata.serviceType ? metadata.serviceType : ""), + TRAITEMENTS : this.traitement.join("|") + }, + success : function(oResUserRights) { + var oRights = (typeof oResUserRights=="string" ? eval("(" + oResUserRights + ")") : oResUserRights); + if (oRights["statut"] == 2 && oRights[this.traitement[0]] + || oRights["statut"] == 3 + && oRights[this.traitement[0]] + && oRights[this.traitement[1]] + || oRights["statut"] == 4 + && oRights[this.traitement[1]]) { + metadata.statut = oRights["statut"]; + tabMetadataAllowed.push(metadata); + } + nbMetadataSelect--; + if (nbMetadataSelect == 0) { + var type = this.oMetadataSelect.type; + var sub_type = (metadata.serviceType + ? metadata.serviceType + : oRights["couche_type"]); + administration_carto_action_changeStatut( + tabMetadataAllowed, + 1, + getMode(type, sub_type), + (getUrlParam("modePropositionActif", "off") == "on"), + setMetadataDecoration); + } + } + }); + }, this); + } else { + administration_carto_changeStatut(this.oRights["fmeta_id"], this.record + .get("title"), 1, this.mode, setMetadataDecoration); + } + }, + setVisibility : function(catalogue, bInit) { + if ((catalogue.isIdentified() && this.bConnect) || (!catalogue.isIdentified() && this.bSearch)) { + if (bInit) { + this.hide(); + return; + } + if (this.oMetadataSelect) { + this.show(); + } else { + switch (this.oRights["statut"]) { + case "1" : // en cours + this.hide(); + break; + case "2" : // attente validation + this.show(!this.oRights[this.traitement[0]]); + break; + case "3" : // validée + this.show(!this.oRights[this.traitement[0]] + && !this.oRights[this.traitement[1]]); + break; + case "4" : // publiée + this.show(!this.oRights[this.traitement[1]]); + break; + default : // incohérent + this.show(true); + break; + } + } + } else { + this.hide(); + } + } + }); + var proposerAction = new Ext.ActionPro({ + text : "Proposer", + iconCls : "fa fa-fw fa-thumbs-o-up", + traitement : ["CMS_MODE_PROPOSITION"], + bConnect : true, + bSearch : false, + handler : function() { + if( this.disabled ) return; + if (this.oMetadataSelect) { + var tabMetadataAllowed = []; + var nbMetadataSelect = this.oMetadataSelect.length; + this.oMetadataSelect.forEach(function(metadata) { + $.ajax({ + crossDomain: true, + scope : this, + url : catalogue.routes.catalogue.prodige_verify_rights_url, + data : { + ID : metadata.id, + OBJET_TYPE : metadata.type, + OBJET_STYPE : (metadata.type == "service" + && metadata.serviceType ? metadata.serviceType : ""), + TRAITEMENTS : this.traitement.join("|") + }, + success : function(oResUserRights) { + var oRights = (typeof oResUserRights=="string" ? eval("(" + oResUserRights + ")") : oResUserRights); + if (oRights["statut"] == 1 && oRights[this.traitement[0]]) { + metadata.statut = oRights["statut"]; + tabMetadataAllowed.push(metadata); + } + nbMetadataSelect--; + if (nbMetadataSelect == 0) { + var type = this.oMetadataSelect.type; + var sub_type = (metadata.serviceType + ? metadata.serviceType + : oRights["couche_type"]); + administration_carto_action_changeStatut( + tabMetadataAllowed, + 2, + getMode(type, sub_type), + (getUrlParam("modePropositionActif", "off") == "on"), + setMetadataDecoration); + } + } + }); + }, this); + } else { + administration_carto_changeStatut(this.oRights["fmeta_id"], this.record + .get("title"), 2, this.mode, setMetadataDecoration); + } + }, + setVisibility : function(catalogue, bInit) { + if ((catalogue.isIdentified() && this.bConnect) || (!catalogue.isIdentified() && this.bSearch)) { + if (bInit) { + this.hide(); + return; + } + if (this.oMetadataSelect) { + if (getUrlParam("modePropositionActif", "off") == "on") { + this.show(); + } else { + this.hide(); + } + } else { + switch (this.oRights["statut"]) { + case "1" : // en cours + if (getUrlParam("modePropositionActif", "off") == "on") { + this.show(!this.oRights[this.traitement[0]]); + } else { + this.hide(); + } + break; + case "2" : // attente validation + case "3" : // validée + case "4" : // publiée + this.hide(); + break; + default : // incohérent + this.show(true); + break; + } + } + } else { + this.hide(); + } + } + }); + var validerAction = new Ext.ActionPro({ + text : "Valider", + iconCls : "fa fa-fw fa-check", + traitement : ["CMS", "PROPOSITION"], + bConnect : true, + bSearch : false, + handler : function() { + if( this.disabled ) return; + if (this.oMetadataSelect) { + var tabMetadataAllowed = []; + var nbMetadataSelect = this.oMetadataSelect.length; + this.oMetadataSelect.forEach(function(metadata) { + $.ajax({ + crossDomain: true, + scope : this, + url : catalogue.routes.catalogue.prodige_verify_rights_url, + data : { + ID : metadata.id, + OBJET_TYPE : metadata.type, + OBJET_STYPE : (metadata.type == "service" + && metadata.serviceType ? metadata.serviceType : ""), + TRAITEMENTS : this.traitement.join("|") + }, + success : function(oResUserRights) { + var oRights = (typeof oResUserRights=="string" ? eval("(" + oResUserRights + ")") : oResUserRights); + if (oRights["statut"] == 1 && oRights[this.traitement[0]] + || oRights["statut"] == 2 && oRights[this.traitement[1]]) { + metadata.statut = oRights["statut"]; + tabMetadataAllowed.push(metadata); + } + nbMetadataSelect--; + if (nbMetadataSelect == 0) { + var type = this.oMetadataSelect.type; + var sub_type = (metadata.serviceType + ? metadata.serviceType + : oRights["couche_type"]); + administration_carto_action_changeStatut( + tabMetadataAllowed, 3, getMode(type, sub_type), + (getUrlParam("modePropositionActif", "off") == "on"), + setMetadataDecoration); + } + } + }); + }, this); + } else { + administration_carto_changeStatut(this.oRights["fmeta_id"], this.record + .get("title"), 3, this.mode, setMetadataDecoration); + } + }, + setVisibility : function(catalogue, bInit) { + if ((catalogue.isIdentified() && this.bConnect) || (!catalogue.isIdentified() && this.bSearch)) { + if (bInit) { + this.hide(); + return; + } + if (this.oMetadataSelect) { + this.show(); + } else { + switch (this.oRights["statut"]) { + case "1" : // en cours + if (getUrlParam("modePropositionActif", "off") == "on") { + validerAction.hide(); + } else { + this.show(!this.oRights[this.traitement[0]]); + } + break; + case "2" : // attente validation + this.show(!this.oRights[this.traitement[1]]); + break; + case "3" : // validée + case "4" : // publiée + this.hide(); + break; + default : // incohérent + this.show(true); + break; + } + } + } else { + this.hide(); + } + } + }); + var publierAction = new Ext.ActionPro({ + text : "Publier", + iconCls : "fa fa-fw fa-flag", + traitement : ["PUBLICATION"], + bConnect : true, + bSearch : false, + handler : function() { + if( this.disabled ) return; + if (this.oMetadataSelect) { + var tabMetadataAllowed = []; + var nbMetadataSelect = this.oMetadataSelect.length; + this.oMetadataSelect.forEach(function(metadata) { + $.ajax({ + crossDomain: true, + scope : this, + url : catalogue.routes.catalogue.prodige_verify_rights_url, + data : { + ID : metadata.id, + OBJET_TYPE : metadata.type, + OBJET_STYPE : (metadata.type == "service" + && metadata.serviceType ? metadata.serviceType : ""), + TRAITEMENTS : this.traitement.join("|") + }, + success : function(oResUserRights) { + var oRights = (typeof oResUserRights=="string" ? eval("(" + oResUserRights + ")") : oResUserRights); + if (oRights["statut"] == 3 && oRights[this.traitement[0]]) { + metadata.statut = oRights["statut"]; + tabMetadataAllowed.push(metadata); + } + nbMetadataSelect--; + if (nbMetadataSelect == 0) { + var type = this.oMetadataSelect.type; + var sub_type = (metadata.serviceType + ? metadata.serviceType + : oRights["couche_type"]); + administration_carto_action_changeStatut( + tabMetadataAllowed, + 4, + getMode(type, sub_type), + (getUrlParam("modePropositionActif", "off") == "on"), + setMetadataDecoration); + } + } + }); + }, this); + } else { + administration_carto_changeStatut(this.oRights["fmeta_id"], this.record + .get("title"), 4, this.mode, setMetadataDecoration); + } + }, + setVisibility : function(catalogue, bInit) { + if ((catalogue.isIdentified() && this.bConnect) || (!catalogue.isIdentified() && this.bSearch)) { + if (bInit) { + this.hide(); + return; + } + if (this.oMetadataSelect) { + this.show(); + } else { + switch (this.oRights["statut"]) { + case "1" : // en cours + case "2" : // attente validation + this.hide(); + break; + case "3" : // validée + this.show(!this.oRights[this.traitement[0]]); + break; + case "4" : // publiée + this.hide(); + break; + default : // incohérent + this.show(true); + break; + } + } + } else { + this.hide(); + } + } + }); + + return new Ext.menu.ItemPro({ + text : "Modifier le statut", + iconCls : "fa fa-fw fa-check", + bConnect : true, + bSearch : false, + menu : { + items : [proposerAction, validerAction, publierAction, retirerAction] + }, + handler : function() { + }, + setVisibility : function(catalogue, bInit) { + if (catalogue.isIdentified() && this.bConnect + || !catalogue.isIdentified() && this.bSearch) { + this.show(bInit); + this.mode = ""; + if (this.oMetadataSelect) { + if (this.oMetadataSelect.length == 0) { + this.show(true); + } else { + this.show(); + } + } + if (this.oRights) { + var type = this.record.get('type'); + var sub_type = (this.record.get('serviceType') + && this.record.get('serviceType') + ? this.record.get('serviceType') + : this.oRights["couche_type"]); + this.mode = getMode(type, sub_type); + } + this.menu.items.forEach(function(action) { + action.mode = this.mode; + var old_show = action.show; + action.show = function(bDisabled) { + this.setDisabled(bDisabled); + old_show.call(this); + if (this.actionMenu && this.refreshActionMenu) { + this.actionMenu.showAt(this.actionMenu.getPosition()); + } + }; + action.setVisibility(catalogue, bInit); + }, this); + } else { + this.hide(); + } + } + }); +} + +/** + * @brief ajoute une couche WMS au serveur + * @param pk_couche + * @param type_service + */ +function administration_carto_webservice(pk_data, type_service, login, pwd, type_data){ + var params; + var i; + var param; + var curdom = null; + var cursdom = null; + var url; + var deldata = false; + + params = document.location.search.substr(1).split("&"); + for (i = 0; i < params.length; i++) + { + param = params[i].split("="); + if (param[0] == "domaine") + curdom = param[1]; + if (param[0] == "sousdomaine") + cursdom = param[1]; + } + url = IHM_getBaseUrl(); + if(type_data == 0) //couche + url += "administration_carto_webservices.php?action="+type_service+"&coucheId=" + pk_data+"&login="+login+"&pass="+pwd+"&type_data="+type_data; + if(type_data == 1)//carte + url += "administration_carto_webservices.php?action="+type_service+"&carteId=" + pk_data+"&login="+login+"&pass="+pwd+"&type_data="+type_data; + if (curdom){ + url += "&domaine=" + escape(curdom); + if (cursdom) + url += "&sousdomaine=" + escape(cursdom); + } + if(type_data == 0) //couche + window.location = url; + if(type_data == 1){ + var iframe = this; + var ajaxUrl = url; + var queryParams = {};//{action:"valid",metadataId:metadata_id,statut:statut,mode:mode}; + iframe.tabParams = null; + iframe.onSuccess = function(responseText){ + var oRes = eval("("+responseText+")"); + if ( oRes.success ) { + //alert("La carte est publié en WMS."); + Ext.Msg.alert("Publication WMS", (oRes.enable ? "La carte a été correctement publiée en WMS" : "Le service WMS associé à la carte a été supprimé")) ; + } else { + Ext.Msg.alert("Echec", oRes.msg); + } + }; + AjaxRequest(ajaxUrl, queryParams, iframe); + }//carte +} + +/** + * return sub-menu "Gérer l'accès public" + */ +function getPublicAccessActions(catalogue) { + var WMSAction = new Ext.ActionPro({ + text : "WMS", + iconCls : "", + traitement : ["CMS"], + bConnect : true, + bSearch : false, + handler : function() { + if( this.disabled ) return; + var type = (this.oRights["carte_type"] == "0" ? 1 : 0); + var del = this.oRights['carte_wms'] != 0; + var url = catalogue.URL + "/geosource/wxs/mapAddToWebService/"+this.record.get("uuid")+"?action="+type+"&carteId=" + this.oRights["pk_data"]+"&type_data=1"; + + $.ajax({ + crossDomain: true, + url : url, + success : function(oRes) { + if ( oRes.success ) { + //alert("La carte est publié en WMS."); + Ext.Msg.alert("Publication WMS", (oRes.enable ? "La carte a été correctement publiée en WMS" : "Le service WMS associé à la carte a été supprimé")) ; + this.scope.setState(oRes.enable); + } else { + Ext.Msg.alert("Echec", oRes.msg); + } + }, + scope : this + }); + + }, + setVisibility : function(catalogue, bInit) { + + if (catalogue.isIdentified() && this.bConnect + || !catalogue.isIdentified() && this.bSearch) { + if (bInit) { + this.hide(); + return; + } + if (!this.oRights["visualisable"] + && !(this.oRights["CMS"] && this.oRights["carte_type"] == "0")) { + this.hide(); + return; + } + switch (this.record.get('type')) { + case "service" : + switch (this.oRights["carte_type"]) { + case "0" : // carte interactive + this.show(!this.oRights[this.traitement[0]]); + var wms = this.oRights['carte_wms'] == "0" ? 0 : 1; + this.setState(wms); + break; + default : + this.hide(); + break; + } + break; + + case "dataset" : + this.hide(); + break; + + default : + this.hide(); + break; + } + } else { + this.hide(); + } + }, + setState : function(bWMS) { + this.bWMS = bWMS; + if (this.bWMS) { + this.setText("WMS : <span style=\"color:green\">oui</span>"); + } else { + this.setText("WMS : <span style=\"color:red\">non</span>"); + } + this.setHandler(this.handler, this); + } + });/* + var WFSAction = new Ext.ActionPro({ + text : "WFS", + iconCls : "", + traitement : ["CMS"], + bConnect : true, + bSearch : false, + handler : function() { + if( $(this.el).prop('disabled') ) return; + + + administration_carto_webservice(this.oRights["pk_data"], 'wfs', + this.oRights["login"], this.oRights["pwd"], 0); + }, + setVisibility : function(catalogue, bInit) { + if (catalogue.isIdentified() && this.bConnect + || !catalogue.isIdentified() && this.bSearch) { + if (bInit || !this.oRights["visualisable"]) { + this.hide(); + return; + } + switch (this.record.get('type')) { + case "dataset" : + switch (this.oRights["couche_type"]) { + case "1" : // type "vecteur" + case "0" : // type "raster" + case "-4" : // type "jointure" + this.show(!this.oRights[this.traitement[0]]); + break; + case "-3" : // type "tabulaire" + this.hide(); + break; + default : + this.hide(); + break; + } + break; + default : + this.hide(); + break; + } + this.setState(this.oRights['wfs']); + } else { + this.hide(); + } + }, + setState : function(bWFS) { + this.bWFS = bWFS; + if (this.bWFS) { + this.setText("WFS : <span style=\"color:green\">oui</span>"); + } else { + this.setText("WFS : <span style=\"color:red\">non</span>"); + } + this.setHandler(this.handler, this); + } + });*/ + var downloadAction = new Ext.ActionPro({ + text : "En Téléchargement libre", + iconCls : "", + traitement : ["CMS"], + bConnect : true, + bSearch : false, + handler : function() { + + if( this.disabled ) return; + Ext.Msg.confirm( + 'Téléchargement libre', + (this.bDownload ? + "Vous êtes sur le point de désactiver le téléchargement libre pour cette métadonnée, souhaitez-vous continuer ?" + : + (this.record.get("type") == "series" + ? "Attention, la publication d'un ensemble de séries de données en téléchargement libre donne accès aux données enfant quel que soit le niveau de publication de celles-ci, souhaitez-vous continuer ?" + : "Attention, la publication d'une série de données en téléchargement libre donne accès aux données quels que soient les droits appliqués par ailleurs, souhaitez-vous continuer ?" + ) + ) + , function(id, value) { + if (id === 'yes') { + $.ajax({ + crossDomain: true, + url : catalogue.URL + "/geosource/setMetaDataDownload",//urlParent + "Services/setMetadataDownload.php", + data : { + metadata_id : this.record.get("id"), + type : this.record.get("type"), + mode : (this.bDownload ? "remove" : "add") + }, + success : function(oRes) { + if (oRes.update_success) { + + this.scope.setState(!this.scope.bDownload); + Ext.Msg.alert("Succès", + "Le téléchargement libre a été " + + (this.scope.bDownload ? "activé" : "désactivé") + + " correctement."); + } else { + this.scope.setState(this.scope.bDownload); + Ext.Msg.alert("Echec", "Impossible " + + (this.scope.bDownload + ? "de désactiver" + : "d'activer") + + " le téléchargement libre."); + } + }, + scope : this + }); + } + }, this); + + }, + setVisibility : function(catalogue, bInit) { + if ((catalogue.isIdentified() && this.bConnect) || (!catalogue.isIdentified() && this.bSearch)) { + if (bInit) { + this.hide(); + return; + } + + switch (this.record.get('type')) { + case "dataset" : + case "nonGeographicDataset": + switch (this.oRights["couche_type"]) { + case "1" : // type "vecteur" + if (this.oRights["visualisable"]){ + this.show(!this.oRights[this.traitement[0]]); + }else { + this.hide(); + return; + } + + case "0" : // type "raster" + case "-4" : // type "jointure" + case "-3" : // type "tabulaire" + this.show(!this.oRights[this.traitement[0]]); + break; + default : + this.hide(); + return; + break; + } + break; + // type ensemble (ajout BF, prodige 3.4) + case "series" : + switch (this.oRights["couche_type"]) { + case "-1" : + this.show(!this.oRights[this.traitement[0]]); + break; + } + break; + + default : + this.hide(); + return; + break; + } + this.setState(this.oRights["download"]); + } else { + this.hide(); + } + }, + setState : function(bDownload) { + this.bDownload = bDownload; + if (this.bDownload) { + this + .setText("<span title=\"Désactiver le téléchargement libre\">En téléchargement libre : <span style=\"color:green\">oui</span></span>"); + } else { + this + .setText("<span title=\"Activer le téléchargement libre\">En téléchargement libre : <span style=\"color:red\">non</span></span>"); + } + this.setHandler(this.handler, this); + } + }); + var domainsPubAction = new Ext.ActionPro({ + text : "Domaines de publication...", + iconCls : "fa fa-fw fa-list-ul", + traitement : ["CMS"], + bConnect : true, + bSearch : false, + handler : function() { + if( this.disabled ) return; + var type = this.record.get('type'); + switch (type) { + case "dataset" : + case "nonGeographicDataset" : + mode = "couche"; + break; + case "series" : + mode = "couche"; + break; + case "service" : + if (this.record.get('serviceType') && this.record.get('serviceType') == "invoke") { + if(in_array("chart", this.record.type)){ + mode = "chart"; + }else{ + mode = "carte"; + } + }else{ + return false; + } + break; + } + setDomSdom(catalogue, this.record.get("uuid"), mode); + + /*openPopupDomainsPub(this.record.get("id"), this.record.get("title"), + type, sub_type);*/ + }, + setVisibility : function(catalogue, bInit) { + var type = this.record.get('type'); + var serviceType = this.record.get('serviceType'); + var allowedType = false; + if(type=="dataset" || (type == "service" && serviceType=="invoke") || type == "nonGeographicDataset" || type=="series"){ + allowedType = true; + } + if (allowedType && catalogue.isIdentified() && this.bConnect + || !catalogue.isIdentified() && this.bSearch + ) { + if (bInit) { + this.hide(); + return; + } + + + var enable = this.oRights[this.traitement[0]]; + //verify rights to edit metadata (creation mode) + if(!enable && this.record.get("isharvested")=="n"){ + enable = Boolean( this.record["geonet:info"].edit ? this.record["geonet:info"].edit : false ) ; + } + this.show(!enable); + + } else { + + this.hide(); + } + } + }); + + return new Ext.menu.ItemPro({ + text : "Gérer l'accès public", + iconCls : "fa fa-fw fa-flag-o", + bConnect : true, + bSearch : false, + menu : { + items : [WMSAction,/* WFSAction,*/ downloadAction, domainsPubAction + /*categories*/] + }, + handler : function() { + }, + setVisibility : function(catalogue, bInit) { + if (catalogue.isIdentified() && this.bConnect + || !catalogue.isIdentified() && this.bSearch) { + + if(this.record.get('istemplate')=="s" || this.record.get('type')=="featureCatalog"){ + this.hide(); + return; + } + this.show(bInit || true); + var bParentDisabled = bInit || true; + this.menu.items.forEach(function(action, index) { + var old_show = action.show; + action.show = function(bDisabled) { + bParentDisabled = bParentDisabled && bDisabled; + this.setDisabled(bDisabled); + old_show.call(this, bDisabled); + if (this.actionMenu && this.refreshActionMenu) { + this.actionMenu.showAt(this.actionMenu.getPosition()); + } + }; + action.setVisibility(catalogue, bInit); + }, this); + this.show(bParentDisabled); + } else { + this.hide(); + } + } + }); +} + +/** + * open ExtJS popup to manage domains/sub-domains publication + */ +function openPopupDomainsPub(fmeta_id, metadata_name, type, sub_type) { + var treePanel = new Ext.tree.TreePanel({ + root : new Ext.tree.AsyncTreeNode({ + nodeType : "async", + loader : new Ext.tree.TreeLoader({ + url : urlParent + "Services/getDomaines.php", + baseParams : { + fmeta_id : fmeta_id + } + }) + }), + rootVisible : false, + border : true, + autoScroll : true, + enableDD : false, + fieldLabel : "Domaine/Sous-domaine", + height : 300 + }); + + var mode = ""; + var metadataFieldLabel = ""; + switch (type) { + case "dataset" : + case "nonGeographicDataset" : + mode = "couche"; + metadataFieldLabel = "Nom de la série de données"; + break; + case "series" : + mode = "couche"; + metadataFieldLabel = "Nom de l'ensemble de série de données"; + break; + case "service" : + if (sub_type == "invoke") { + mode = "carte"; + metadataFieldLabel = "Nom de la carte"; + } else { + mode = "carte"; + metadataFieldLabel = "Nom du service"; + } + break; + } + + var popup = new Ext.Window({ + id : "popupDomainsPub", + width : "auto", + height : "auto", + constrain : true, + title : "Sélection des domaines/sous-domaines de publication", + resizable : true, + maximizable : true, + items : new Ext.form.FormPanel({ + labelWidth : 150, + items : [{ + xtype : 'label', + fieldLabel : metadataFieldLabel, + width : 200, + text : metadata_name + }, treePanel] + }), + buttons : [{ + text : 'Valider', + handler : function() { + var tabSDom = []; + selNodes = treePanel.getChecked(); + selNodes.forEach(function(node) { + var tabTmp = node.id.split("_"); + tabSDom.push(tabTmp[1]); + }); + if (tabSDom.length == 0) { + Ext.Msg.alert("Domaine/sous-domaine", + "Veuillez sélectionner au moins un sous-domaine."); + } else { + $.ajax({ + crossDomain: true, + url : urlParent + "Services/getDomaines.php", + data : { + mode : 2 + }, + success : function(oRes) { + oRes = eval("(" + oRes + ")"); + var bRight = false; + tabSDom.forEach(function(sDomSelected) { + oRes.forEach(function(sDomRight) { + if (sDomSelected == sDomRight.id) { + bRight = true; + return false; + } + }); + if (bRight) { + return false; + } + }); + if (bRight) { + $.ajax({ + crossDomain: true, + url : urlParent + "Services/setMetadataDomSdom.php", + data : { + id : fmeta_id, + mode : mode, + "sdom[]" : tabSDom + }, + success : function(oRes) { + var oRes = eval("(" + oRes + ")"); + if (oRes.success) { + popup.destroy(); + location.reload(); + } else { + Ext.Msg + .alert("Erreur", + "Impossible de mettre à jour les domaines/sous-domaines."); + } + } + }); + } else { + var tabSDomRight = []; + /* + * Ext.each(oRes, function(sDomRight){ + * tabSDomRight.push(sDomRight.nom); }); + */ + Ext.Msg + .alert( + "Domaine/sous-domaine", + "Veuillez sélectionner au moins un sous-domaine pour lequel vous avez les droits d'administration."/* + * + " + * Ceux-ci + * sont + * listés + * ci-dessous :<br/>"+ "<ul><li>"+tabSDomRight.join('</li><li>')+"</li></ul>" + */); + } + } + }); + } + } + }, { + text : 'Annuler', + handler : function() { + popup.destroy(); + } + }] + }); + popup.show(); +} + +/** + * return action "Ajouter au panier" + */ +function getAddToPanierAction(catalogue) { + return new Ext.ActionPro({ + text : "Choisir cette donnée", + toolTip : "Choisir cette donnée pour préparer le téléchargement ou la covisualisation", + iconCls : "fa fa-fw fa-star", + traitement : ["TELECHARGEMENT", "NAVIGATION"], + bConnect : true, + bSearch : true, + bCumulError : false, + handler : function(action, event, onSuccess) { + if( this.disabled ) return; + // action on metadata selection + if (this.oMetadataSelect) { + var reader = new Ext.data.JsonReader({ + fields : [{ + name : 'uuid', + mapping : 'uuid' + }, { + name : 'id', + mapping : 'id' + }, { + name : 'title', + mapping : 'uuid' + }, { + name : 'type', + mapping : 'type' + }, { + name : 'isharvested', + mapping : 'isharvested' + }, { + name : 'links', + mapping : 'links' + }] + }); + var store = new Ext.data.JsonStore({ + fields : ['uuid', 'id', 'title', 'type', 'isharvested', 'links'], + data : this.oMetadataSelect + }); + var addToPanierAction = getAddToPanierAction(catalogue); + this.nbAdd = this.oMetadataSelect.length; + addToPanierAction.bCumulError = true; + parent.lastError = []; + this.tabForbidden = []; + this.tabImpossible = []; + this.oMetadataSelect.forEach(function(metadata, index) { + addToPanierAction.setAttr("record", store.getAt(index)); + $.ajax({ + crossDomain: true, + scope : this, + url : catalogue.routes.catalogue.prodige_verify_rights_url, + data : { + ID : metadata.id, + OBJET_TYPE : metadata.type, + OBJET_STYPE : (metadata.type == "service" + && metadata.serviceType ? metadata.serviceType : ""), + TRAITEMENTS : addToPanierAction.getTraitement(catalogue) + }, + success : function(oResUserRights) { + var oRights = (typeof oResUserRights=="string" ? eval("(" + oResUserRights + ")") : oResUserRights); + addToPanierAction.setAttr("record", store.getAt(index)); + addToPanierAction.setAttr("oRights", oRights); + addToPanierAction.setVisibility(catalogue); + if (addToPanierAction.isHidden()) { + this.tabImpossible.push(metadata.title); + this.onAddFinished(); + } else if (addToPanierAction.isDisabled()) { + this.tabForbidden.push(metadata.title); + this.onAddFinished(); + } else { + addToPanierAction.handler(null, null, Ext.createDelegate(this.onAddFinished, this)); + } + } + }); + }, this); + } + // action on one metadata + else { + var type = this.record.get("type"); + switch (type) { + case "dataset" : + case "nonGeographicDataset" : + case "series" : + panier_ajouter(this.record, this.bCumulError); + if (onSuccess) + onSuccess(); + break; + /* case "series" : + ajaxRelatedMetadata(null,null, + this, + this.record, + function(json) { + if ( !json ) return; + alert('TODO : geosource/apps_extend/actions.js::getAddToPanierAction / ajax / relatedMetadata'); + console.error('TODO : geosource/apps_extend/actions.js::getAddToPanierAction / ajax / relatedMetadata', json); + return; + + var xmlDoc = oRes.responseXML; + var tabChildren = Ext.DomQuery.jsSelect("relations/relation", xmlDoc); + if (!this.bCumulError) { + parent.lastError = []; + } + for (var i = 0; i < tabChildren.length; i++) { + parent.panier_ajouterElement( + Ext.DomQuery.selectValue("uuid", tabChildren[i]) + , Ext.DomQuery.selectValue("id", tabChildren[i]) + , Ext.DomQuery.selectValue("title", tabChildren[i]) + , this.record, true); + } + if (!this.bCumulError && parent.lastError.length > 0) { + if (parent.lastError.length == 1) { + Ext.Msg.alert('Panier', 'La couche ' + + parent.lastError.join(', ') + + ' est déjà présente dans le panier.'); + } else { + Ext.Msg.alert('Panier', 'Les couches ' + + parent.lastError.join(', ') + + ' sont déjà présentes dans le panier.'); + } + parent.lastError = []; + } + if (onSuccess) + onSuccess(); + }, + null + ); + break;*/ + } + } + }, + setVisibility : function(catalogue, bInit) { + if ((catalogue.isIdentified() && this.bConnect) || (!catalogue.isIdentified() && this.bSearch)) { + // visibility on metadata selection action + if (this.oMetadataSelect) { + this.toolTip = "Ajouter la sélection aux données choisies pour préparer le téléchargement ou la covisualisation"; + if (this.oMetadataSelect.length > 0) { + var bDisabled = true; + this.oMetadataSelect.forEach(function(metadata) { + if (metadata.type != "service") { + bDisabled = false; + return false; + } + }); + this.show(bDisabled); + } else { + this.show(true); + } + } + // visibility on one metadata action + else { + if(this.record.get('istemplate')=="s" || this.record.get('type')=="featureCatalog"){ + this.hide(); + return; + } + var type = this.record.get("type"); + switch (type) { + case "dataset" : + case "nonGeographicDataset" : + case "series" : + switch (this.record.get("isharvested")) { + case "y" : + var tabLinks = this.record.get("links"); + if (tabLinks.length == 0) { + this.hide(); + } else { + this.show(bInit); + } + break; + case "n" : + this.show(bInit || !(this.oRights[this.traitement[0]] || this.oRights[this.traitement[1]])); + break; + } + break; + /*case "series" : + this.show(bInit || !(this.oRights[this.traitement[0]] || this.oRights[this.traitement[1]])); + break;*/ + case "service" : + this.hide(); + break; + } + } + } else { + this.hide(); + } + }, + getTraitement : function(catalogue) { + if ((catalogue.isIdentified() && this.bConnect) || (!catalogue.isIdentified() && this.bSearch)) { + if (this.oMetadataSelect) { + return this.traitement; + } else { + var type = this.record.get("type"); + if ( ["series", "dataset", "nonGeographicDataset"].indexOf(type)!=-1 && this.record.get("isharvested") == "n") { + if (this.traitement instanceof Array) { + return this.traitement.join("|"); + } else { + return this.traitement; + } + } else { + return ""; + } + } + } else { + return ""; + } + }, + onAddFinished : function() { + this.nbAdd--; + if (this.nbAdd == 0 + && (parent.lastError.length > 0 || this.tabForbidden.length > 0 || this.tabImpossible.length > 0)) { + var tabMsg = []; + if (parent.lastError.length == 1) { + tabMsg.push("La couche " + parent.lastError.join(", ") + + " est déjà présente dans les données choisies."); + } else if (parent.lastError.length > 1) { + tabMsg.push("Les couches " + parent.lastError.join(", ") + + " sont déjà présentes dans les données choisies."); + } + if (this.tabForbidden.length == 1) { + tabMsg + .push("Vous ne possédez pas les droits suffisants pour télécharger la couche suivante :<br/>" + + this.tabForbidden.join(", ")); + } else if (this.tabForbidden.length > 1) { + tabMsg + .push("Vous ne possédez pas les droits suffisants pour télécharger les couches suivantes :<br/>" + + this.tabForbidden.join(", ")); + } + if (this.tabImpossible.length == 1) { + tabMsg.push("La couche " + this.tabImpossible.join(", ") + + " n'est pas téléchargeable."); + } else if (this.tabImpossible.length > 1) { + tabMsg.push("Les couches " + this.tabImpossible.join(", ") + + " ne sont pas téléchargeables."); + } + if (tabMsg.length > 0) { + Ext.Msg.alert('Panier', tabMsg.join("<br/><br/>")); + } + parent.lastError = []; + this.tabForbidden = []; + this.tabImpossible = []; + } + } + }); +} + +/** + * return action "Visualiser" + */ +function getVisualiserAction(catalogue) { + return new Ext.ActionPro({ + text : "Visualiser", + toolTip : "Voir les données sur l'interface cartographique", + iconCls : "fa fa-fw fa-globe", + traitement : "NAVIGATION", + bConnect : true, + bSearch : true, + handler : function() { + if( this.disabled ) return; + switch (this.record.get('type')) { + case "dataset" : + + //addLog('WMS', (typeof(this.record.get("title"))!="undefined" ? this.record.get("title").replace(",",";") : "")+","+this.record.get("id")); + var isharvested = this.record.get("isharvested"); + switch (isharvested) { + case "y" : + //window.open(urlParent + "consultation_wms.php?IDT="+ this.record.get("id") + this.paramVisu); + window.open(catalogue.URL + "/geosource/consultationWMS?IDT="+ this.record.get("id") + this.paramVisu); + break; + default : + case "n" : + //window.open(urlParent + "consultation_wms.php?IDT="+ this.record.get("id")); + window.open(catalogue.URL + "/geosource/consultationWMS?IDT="+ this.record.get("id")); + break; + } + break; + case "series" : + // nothing to do + break; + case "service" : + if(in_array("chart", this.record.type)){ + //chart link + window.open(catalogue.URL + "/graph/readOnly?uuid=" + this.record.get("uuid")); + } + else if ((this.record.get('serviceType') == 'invoke')) { + // statistiques de consultation de carte + /* + * $.ajax({ url:urlParent+"consultation_addLog.php", + * params:{logFile:"ConsultationCarte", objectName : + * this.record.get("title").replace(",", + * ";")+","+this.record.get("id")} }); + */ + //addLog('ConsultationCarte', (typeof(this.record.get("title"))!="undefined" ? this.record.get("title").replace(",",";") : "")+","+this.record.get("id")); + var isharvested = this.record.get("isharvested"); + switch (isharvested) { + case "y" : + var tabLinks = this.record.get("links"); + if (tabLinks.length > 0) { + window.open(tabLinks[0].href); + } + break; + case "n" : + //alert('TODO apps_extend/actions.js/getVisualiserAction::handler(service|map, n) => controller catalogue consultation.php');return; + //window.open(urlParent + "consultation.php?id=" + this.record.get("id")); + window.open(catalogue.URL + "/geosource/consultation?id=" + this.record.get("id")); + break; + } + } else { + var tabLinks = this.record.get("links"); + if (tabLinks.length > 0) { + window.open(tabLinks[0].href); + } + } + break; + } + }, + setVisibility : function(catalogue, bInit) { + if ((catalogue.isIdentified() && this.bConnect) || (!catalogue.isIdentified() && this.bSearch)) { + if (this.record.get('istemplate')=="s" || this.record.get('type')=="featureCatalog"){ + this.hide(); + return; + } + switch (this.record.get('type')) { + case "dataset" : + if (this.record.get('spatialRepresentationType') == "Tabulaire") { + this.hide(); + } else { + switch (this.record.get("isharvested")) { + case "y" : + this.paramVisu = ""; + if (bInit) { + this.hide(); + } else { + var me = this; + ajaxServicesMetadata(this, this.record + , function(oRes) { + /* + * var xmlDoc = oRes.responseXML; var tabService = + * Ext.DomQuery .jsSelect( "relations/relation", + * xmlDoc); if (tabService.length > 0) { // pas de // + * vérification de // droits pour les // données + * associées // à un service de // covisu WMS/WFS + * this.paramVisu = "&layerTitle=" + this.record + * .get("title") + "&Mode=WMS&uuidService="; for ( var i = + * 0; i < tabService.length; i++) { this.paramVisu += + * Ext.DomQuery .selectValue( "uuid", tabService[i]) + + * "|"; } this.paramVisu += "&uuidData=" + this.record + * .get("uuid"); this.show(); } else { + */ + var tabLinks = me.record.get("links"); + if (tabLinks.length > 0) { + var oLink = {}; + tabLinks.forEach(function(link) { + if (link.protocol && link.protocol != "" && new RegExp(/^OGC:WMS/i).test(link.protocol)) { + if (link.href && link.href != "" && link.name && link.name != "") { + oLink.wms = "&layerTitle=" + + me.record.get("title") + + "&Mode=WMS&protocol=GetMap&connection=" + + link.href + "&layer=" + link.name; + } + } + if (link.protocol && link.protocol != "" && new RegExp(/^OGC:WFS/i).test(link.protocol)) { + if (link.href && link.href != "" && link.name && link.name != "") { + oLink.wfs = "&layerTitle=" + + me.record.get("title") + + "&Mode=WMS&protocol=GetFeatures&connection=" + + link.href + "&layer=" + link.name; + } + } + }, me); + if (oLink.wms) { + me.paramVisu = oLink.wms; + me.show(); + } else if (oLink.wfs) { + me.paramVisu = oLink.wfs; + me.show(); + } else { + me.hide(); + } + } else { + me.hide(); + } + // } + }); + } + this.setHandler(this.handler, this); + break; + case "n" : + this.show((bInit ? true : (this.oRights["visualisable"] + ? !this.oRights[this.traitement] + : true))); + break; + } + } + break; + case "series" : + this.hide(); + break; + case "nonGeographicDataset" : + this.hide(); + break; + case "service" : + if ((this.record.get('serviceType') == 'invoke')) { + if(in_array("chart", this.record.type)){ + this.hide(); + }else{ + switch (this.record.get("isharvested")) { + case "y" : + var tabLinks = this.record.get("links"); + if (tabLinks.length > 0) { + this.show(); + } else { + this.hide(); + } + break; + case "n" : + this.show((bInit ? true : !this.oRights[this.traitement])); + break; + } + } + } else { + var tabLinks = this.record.get("links"); + if (tabLinks.length > 0) { + this.show(); + } else { + this.hide(); + } + } + break; + } + } else { + this.hide(); + } + }, + getTraitement : function(catalogue) { + if ((catalogue.isIdentified() && this.bConnect) || (!catalogue.isIdentified() && this.bSearch)) { + if (this.record.get('type') == "service" + || this.record.get('type') == "dataset" + && this.record.get("isharvested") == "n") { + return this.traitement; + } else { + return ""; + } + } else { + return ""; + } + } + }); +} + + +/** + * return action "Importer les données" + */ +function getVisualiserChartAction(catalogue) { + return new Ext.ActionPro({ + text : "Visualiser le graphe...", + iconCls : "fa fa-fw fa-bar-chart", + traitement : "NAVIGATION", + bConnect : true, + bSearch : false, + handler : function() { + if( this.disabled ) return; + window.open(catalogue.URL + "/graph/readOnly?uuid=" + + this.record.get("uuid")); + }, + setVisibility : function(catalogue, bInit) { + if (catalogue.isIdentified() && this.bConnect + || !catalogue.isIdentified() && this.bSearch) { + if (bInit) { + this.hide(); + return; + } + this.table = ""; + switch (this.record.get('type') ) { + case "service" : + + if(in_array("chart", this.record.type)){ + var disable = !this.oRights[this.traitement]; + //this.table = this.oRights["tableName"]; + this.show(disable); + } else { + this.hide(); + } + break; + default : + this.hide(); + break; + } + } else { + this.hide(); + } + }, + getTraitement : function(catalogue) { + if (catalogue.isIdentified() && this.bConnect + || !catalogue.isIdentified() && this.bSearch) { + return this.traitement; + } else { + return ""; + } + } + }); +} + + +/** + * return action "Export PDF Complet" + */ +function getExportPDFCompletAction(catalogue) { + return new Ext.ActionPro({ + text : "Export PDF complet (ZIP)", + toolTip : "Exporter la fiche de métadonnée et ses métadonnées asssociées au format PDF", + iconCls : "fa fa-fw fa-file-zip-o", + bConnect : false, + bSearch : true, + handler : function() { + if( this.disabled ) return; + //alert('TODO apps_extend/actions.js/getExportPDFCompletAction::handler => controller catalogue Services/getMetadataPDFComplet.php');return; + window.location = catalogue.URL + "/metadata/pdf?uuid="//"Services/getMetadataPDFComplet.php?uuid=" + + this.record.get("uuid"); + }, + setVisibility : function(catalogue, bInit) { + this.show(); + } + }); +} +/** + * return action + */ +function getSubMenuAction(catalogue, texte, url, target) { + return new Ext.ActionPro({ + text : texte, + bConnect : false, + bSearch : true, + handler : function() { + if (target == "_blank") + window.open(url); + else + window.location = url; + }, + setVisibility : function(catalogue, bInit) { + if (bInit) + this.show(); + else + this.hide(); + } + }); +} + +function ajaxRelatedMetadata(type, content_type, scope, metadata, successFn, failureFn){ + $.ajax({ + crossDomain: true, + dataType: "json", + accepts: { + text: "application/json" + }, + url : '/geonetwork/srv/api/records/'+metadata.get("uuid")+'/related', + data : { + type : type||["siblings", "associated", "related"] + }, + success : successFn, + failure : failureFn, + scope : scope + }); +} +function ajaxServicesMetadata(scope, metadata, successFn, failureFn){ + $.ajax({ + crossDomain: true, + dataType: "json", + accepts: { + text: "application/json" + }, + url : '/geonetwork/srv/api/records/'+metadata.get("uuid")+'/related', + data : { + type : "services" + }, + success : successFn, + failure : failureFn, + scope : scope + }); +} + +/** + * @version 3.2 + * effectue un appel Ajax + * @param ajaxUrl URL de l'appel + * @param queryParams paramètres de l'appel + * @param iframe objet contenant les fonctions "onSuccess" ainsi que les paramètres "tabParams" associés + * @param method méthode de l'appel ("GET" par défaut) + */ +function AjaxRequest(ajaxUrl, queryParams, iframe, method, async){ + if ( typeof method=="undefined" ) method = 'GET'; + if ( typeof async=="undefined" ) async = true; + switch(ajaxUrl){ + case "Services/getUserRights.php" : ajaxUrl = prodigeConfig.routes.catalogue.prodige_verify_rights_url; break; + } + $.ajax({ + dataType: "json", + accepts: { + text: "application/json" + }, + async : async, + crossDomain: true, + url : ajaxUrl , + data : queryParams, + method : ( method ? method : 'GET' ), + success : function(result){ + var fn; + if ( typeof iframe.onSuccess == 'function' ) { + fn = iframe.onSuccess; + if ( !iframe.onSuccess.createDelegate ) { + fn = function(){ + return iframe.onSuccess.apply(this, arguments) + } + } + var response = (typeof result == "string" ? result.replace(/^\((.*)\)$/g, '$1') : result); + fn.createDelegate(this, ( iframe.tabParams && iframe.tabParams.concat && typeof iframe.tabParams.concat == 'function' ? iframe.tabParams.concat(response) : [response] )).call(); + } + }, + failure : function(result){ + console.log("failedAjax") + console.log(result); + } + }); +} +Function.prototype.createDelegate = function(obj, args, appendArgs){ + var method = this; + return function() { + var callArgs = args || arguments; + if (appendArgs === true){ + callArgs = Array.prototype.slice.call(arguments, 0); + callArgs = callArgs.concat(args); + }else if (typeof appendArgs === 'number' && isFinite(appendArgs)){ + callArgs = Array.prototype.slice.call(arguments, 0); // copy arguments first + var applyArgs = [appendArgs, 0].concat(args); // create method call params + Array.prototype.splice.apply(callArgs, applyArgs); // splice them in + } + return method.apply(obj || window, callArgs); + }; +} + + + + function getMetadataEditURL(id, create, group, child, isTemplate, schema){ + var url = 'catalog.edit#/'; + if (create) { + if (id) { + if (child) { + url += 'create?childOf=' + id; + } else { + url += 'create?from=' + id; + } + } else { + url += 'create'; + } + } else { + url += 'metadata/' + id; + } + return url; + } + function metadataEdit2(id, create, group, child, isTemplate, schema){ + var url = getMetadataEditURL(id, create, group, child, isTemplate, schema); + window.open(url, 'metadata_'+id); + }; + + + /** + * @brief open the map in a simplified mode to edit the default representation of the layer + * @param action : url to open + */ + function administration_carto_paramCarto(catalogue, uuid) + { + //open map in popup + parent.administration_carto_win_cartodynamique = window.open(catalogue.URL+"/geosource/layerAddToMap/"+uuid/*, "Cartographie_dynamique", "directories=0, fullscreen=yes, menubar=0, status=1, toolbar=0, resizable=1"*/); + } + + /** + * @brief open in new window import data interface + * @param uuid metadata uuid + */ + function import_data(catalogue, uuid) + { + window.open(catalogue.admincartoURL+"/prodige/importdata/manage/"+uuid/*, "Cartographie_dynamique", "directories=0, fullscreen=yes, menubar=0, status=1, toolbar=0, resizable=1"*/); + } + + function setDomSdom (catalogue, uuid, mode) + { + window.open(catalogue.URL+"/geosource/setDomsdom/"+uuid+"?mode="+mode/*, "Cartographie_dynamique", "directories=0, fullscreen=yes, menubar=0, status=1, toolbar=0, resizable=1"*/); + } + + function deleteData(catalogue, uuid, type, oRights, record){ + confirmActionDelete = function(id, value){ + if (id === 'yes') { + var msg = $('body').append('<div id="msg-remove" class="modal fade" tabindex="-1" role="dialog" > ' + + '<div class="modal-dialog" role="document">' + + '<div class="modal-content">' + + '<div class="modal-body" ng-bind-html="body">Suppression en cours...</div>') + var closeFn = Ext.Msg.info('Suppression', "Suppression en cours..."); + $.ajax({ + crossDomain: true, + url : catalogue.URL+"/geosource/deleteMetaData/"+ uuid, + success : function(oResUserRights) { + $("#msg-remove").remove(); + var msg = Ext.Msg.alert('Suppression', "La ressource a été supprimée"); + setTimeout(function(){ + msg && msg.close && msg.close(); + // relancer la recherche pour actualiser les résultats + $('.gn-top-search button[data-ng-click="triggerSearch()"]').click(); + }, 3000); + }, + failure : function() { + $("#msg-remove").remove(); + console.log("failure"); + } + }); + } + + }; + var name = record.title || record.defaultTitle; + if(type=="dataset" && (oRights["couche_type"]==1 || oRights["couche_type"]==0 || oRights["couche_type"]==4)){ + //first verify maps + $.ajax({ + crossDomain: true, + url : catalogue.URL+"/geosource/canDeleteMetaData/"+ uuid, + success : function(response) { + var message = []; + if ( response.maps.length ){ + message.push('La métadonnée sera supprimée des cartes suivantes :' + + '<ul><li>'+response.maps.join('</li><li>')+'</li></ul>'); + } else { + message.push("Aucune carte ne contient la métadonnée."); + } + if ( response.joins.length ){ + message.push('Les vues de base de données suivantes seront supprimées :' + + '<br/><em>(Les configurations associées restent inchangées)</em>' + + '<ul><li>'+response.joins.join('</li><li>')+'</li></ul>'); + } else { + message.push("Aucune vues de jointures ne contient la métadonnée."); + } + Ext.Msg.confirm('Suppression de la métadonnée "'+name+'"', + ('Examen de l\'utilisation des couches de la métadonnée "'+name+'" dans les cartes et les jointures :' + + '<ul><li>'+message.join('</li><li>')+'</li></ul>' + + '<br/><b>Souhaitez-vous poursuivre la suppression ?</b>'), confirmActionDelete, this); + + return; + var tabmaps = eval(oResUserRights); + if(tabmaps.length == 0){ + Ext.Msg.confirm("Suppression de couche", "Aucune carte ne contient la couche "+name+", souhaitez-vous poursuivre la suppression ?", confirmActionDelete, this); + }else{ + var strMaps =""; + for (var i=0; i<tabmaps.length;i++){ + strMaps+= tabmaps[i]+", "; + } + strMaps = strMaps.slice(0,-2)+"."; + Ext.Msg.confirm("Suppression de couche", "La couche "+name+" est contenue dans les cartes suivantes :" + + strMaps+ "La couche sera supprimée des cartes. Souhaitez-vous poursuivre la suppression ?", confirmActionDelete, this); + } + + }, + failure : function() { + console.log("failure"); + } + }); + }else{ + Ext.Msg.confirm('Suppression de la métadonnée "'+name+'"', + "Souhaitez-vous poursuivre la suppression ?", confirmActionDelete, this); + } + + + + } + + /** + * Réinitialisation de la représentation par défaut + */ + function reinitParamCarto(catalogue, uuid) + { + $.ajax({ + crossDomain: true, + url : catalogue.URL+"/geosource/mapDelete/"+ uuid, + success : function(oResUserRights) { + //Ext.Msg.alert("La représentation par défaut a été réinitialisée"); + Ext.Msg.alert('Représentation par défaut', "La représentation par défaut a été réinitialisée", function(){}); + }, + failure : function() { + console.log("failure"); + } + }); + } + +/** + * Open the UserDetails prodige form in a popup + */ +function openUserDetails() +{ + var width = 680; + var left = (screen.width/2)-(width/2); + window.open(prodigeConfig.routes.catalogue.geosource_user_details, "Ma fiche utilisateur", "height=400,top=300,width="+width+",left="+left+", directories=0, fullscreen=yes, menubar=0, status=1, toolbar=0, resizable=1"); +} + +/** + * @param logFile + * @param objectName + */ +function addLog(logFile, objectName) +{ + $.get( + __PRODIGE_CATALOGUE_CONFIG_URL__+'/prodige/add_log', + { logFile:logFile, objectName : objectName } + ) + .fail(function(){ + console.log("Erreur d'ecriture du log '"+logFile+"'"); + }); +} diff --git a/src/main/webapp/apps_extend/admin.js b/src/main/webapp/apps_extend/admin.js new file mode 100644 index 0000000..a71f37e --- /dev/null +++ b/src/main/webapp/apps_extend/admin.js @@ -0,0 +1,941 @@ +var SSO_ENABLED = true; +if ( typeof Ext == "undefined" ) Ext = {}; +if ( typeof Ext.menu == "undefined" ) Ext.menu = {}; +if ( typeof Ext.Msg == "undefined" ) Ext.Msg = {}; +if ( typeof Ext.menu.Item == "undefined" ) Ext.menu.Item = {}; + + +if ( $.cookie && $.cookie("__PRODIGE_CATALOGUE_CONFIG_URL__") ){ + __PRODIGE_CATALOGUE_CONFIG_URL__ = $.cookie("__PRODIGE_CATALOGUE_CONFIG_URL__"); +} + +if ( $.cookie && $.cookie("__PRODIGE_BROADCAST_CONNECT_URL__") ){ + __PRODIGE_BROADCAST_CONNECT_URL__ = $.cookie("__PRODIGE_BROADCAST_CONNECT_URL__").split(','); +} +//(function() { +if (module){ + + + (initProdigeCatalogue = function (){ + $.ajaxSetup({ + xhrFields: { + withCredentials: true + } + }); + prodigeConfig = angular.extend({}, window.catalogue||{}); + var gn_prodige = document.createElement('div'); + gn_prodige.setAttribute('ng-controller', 'gn_prodige_controller'); + // gn_prodige.setAttribute('ng-init', 'callXhrAsynchronous()'); + document.body.appendChild(gn_prodige); + + + module.controller('gn_prodige_controller', [ + '$rootScope', '$scope', '$controller', '$http', '$q'/*, '$templateCache'*/, + function ($rootScope, $scope, $controller, $http, $q/*, $templateCache*/) { + $rootScope.prodige = { + isIdentified : function(){ + return $scope.$parent && $scope.$parent.authenticated; + }, + loaded : false + }; + + __PRODIGE_BROADCAST_CONNECT_URL__ = __PRODIGE_BROADCAST_CONNECT_URL__ || []; + if ( __PRODIGE_BROADCAST_CONNECT_URL__.indexOf(__PRODIGE_CATALOGUE_CONFIG_URL__)==-1 ) + __PRODIGE_BROADCAST_CONNECT_URL__ = [__PRODIGE_CATALOGUE_CONFIG_URL__].concat(__PRODIGE_BROADCAST_CONNECT_URL__); + + var urls = __PRODIGE_BROADCAST_CONNECT_URL__; + var ln = urls.length; + var attemptConnect = {}; + var G_I = 0; + var onSiteConnect = function(json, casuser){ + + var i = (SSO_ENABLED ? G_I : json.index); + if ( i<ln && !attemptConnect[i] ){ + attemptConnect[i] = true; + $.ajax({ + async: false, + xhrFields: { + withCredentials: true + }, + crossDomain: true, + dataType: "jsonp", + url : (SSO_ENABLED + ? (urls[i])+'/prodige/connect?index='+i+'&sessionid='+json.sessionid + : (urls[i])+'/prodige/connect?casuser='+casuser+'&index='+i+'&sessionid='+json.sessionid + ), + success : function(data){ + if ( urls[i]==__PRODIGE_CATALOGUE_CONFIG_URL__ ) $scope.callXhrAsynchronous(); + if (SSO_ENABLED) { + G_I++; + } + onSiteConnect(data, casuser) + }, + failure : function(){ + if ( urls[i]==__PRODIGE_CATALOGUE_CONFIG_URL__ ) $scope.callXhrAsynchronous(); + if (SSO_ENABLED) { + G_I++; + } + onSiteConnect(data, casuser) + } + }); + } + }; + var connectUser = function(casuser){ + if ( SSO_ENABLED || casuser ){ + var i = (SSO_ENABLED ? G_I : 0); + if ( i<ln && !attemptConnect[i] ){ + attemptConnect[i] = true; + $.ajax({ + xhrFields: { + withCredentials: true + }, + async: false, + crossDomain: true, + dataType: "jsonp", + url : (SSO_ENABLED + ? (urls[i])+'/prodige/connect?index='+i + : (urls[i])+'/prodige/connect?casuser='+casuser+'&index='+i + ), + success : function(data){ + if ( urls[i]==__PRODIGE_CATALOGUE_CONFIG_URL__ ) $scope.callXhrAsynchronous(); + if (SSO_ENABLED) { + G_I++; + } + onSiteConnect(data, casuser) + }, + failure : function(){ + if ( urls[i]==__PRODIGE_CATALOGUE_CONFIG_URL__ ) $scope.callXhrAsynchronous(); + if (SSO_ENABLED) { + G_I++; + } + onSiteConnect(data, casuser) + } + }); + } + } + } + /** + * watch $parent.user to force a prodige auth connection and get the user config + */ + $scope.$parent.$watch('user', function() { + if( $scope.$parent.user ) { + $scope.$parent.$watch('authenticated', function(){$scope.$parent.authenticated && connectUser($scope.$parent.user['username'])}); + } else { + connectUser('vinternet'); + } + });/* + $scope.$parent.$watch('user', function() { + if( typeof $scope.$parent.user['@authenticated'] != "undefined" ) { + var casuser = $scope.$parent.user['@authenticated'] == "true" ? $scope.$parent.user['username'] : 'vinternet'; + jQuery('body').append('<iframe id="footerexec" style="display:none;">'); + jQuery('#footerexec').on('load', function(){ + $scope.callXhrAsynchronous(); + }).attr('src', __PRODIGE_CATALOGUE_CONFIG_URL__+'/prodige/connect?casuser='+casuser); + } + });*/ + + $scope.myXhr = function(){ + var deferred = $q.defer(); + $.ajax({ + xhrFields: { + withCredentials: true + }, + async: false, + crossDomain: true, + dataType: "jsonp", + url : __PRODIGE_CATALOGUE_CONFIG_URL__+'/geosource/get_config', + method: 'GET', + headers: {'Content-Type': 'application/x-www-form-urlencoded'}, + success : function(data,status,headers,config){ + //resolve the promise + deferred.resolve(data); + }, + //if request is not successful + failure : function(data,status,headers,config){ + //reject the promise + console.log(status); + console.log(data); + console.log(headers); + console.log(config); + deferred.reject('ERROR'); + } + }); + //return the promise + return deferred.promise; + }; + $scope.callXhrAsynchronous = function(){ + /** + * disable 'Users and groups' button in admin.console + */ + angular.element('a[href="#organization"]').addClass('disabled hidden'); + + var myPromise = $scope.myXhr(); + // wait until the promise return resolve or eject + //"then" has 2 functions (resolveFunction, rejectFunction) + myPromise.then(function(data){ + angular.extend($rootScope.prodige, data); + $rootScope.prodige.loaded = true; + prodigeConfig = angular.extend({}, $rootScope.prodige); + }, + function(reject){ + }); + }; + + }]); + + /** + * Chargement des fichiers de langue de l'extension Alkante + */ + module.config(['$LOCALES', function($LOCALES) { + $LOCALES.push('alk-extend'); + }]); + + })(); + + (topToolbar = function (){ + module.directive('navbarHeader', function($compile, $rootScope){ + return { + restrict: 'C', + scope: false, + link : function(scope, element){ + $rootScope.$watch('prodige.loaded', function(){ + if ( !$rootScope.prodige.loaded ) return; + var div = document.createElement('div') + div.setAttribute('ng-controller', "toolbar"); + div.setAttribute('data-ng-include', "'../../apps_extend/templates/top-toolbar.html'"); + $(element).parent().find('ul.navbar-right').parent().append($(div)); + $compile($(div))(scope); + }) + } + } + }); + module.directive('wellMd', function($compile, $rootScope){ + return { + restrict: 'C', + scope: false, + link : function(scope, element){ + var img = document.createElement('img'); + img.className = "big-logo"; + img.setAttribute('data-ng-src', '../../images/logos/{{info.site.siteId}}.png?{{info.site.lastUpdate}}'); + var div = document.createElement('h1'); + div.appendChild(img); + $(element).addClass('prodige-home'); + $(element).prepend($(div)) + $compile($(div))(scope); + } + } + }); + module.directive('userAccountExpirationMsg', function($compile, $rootScope){ + return { + restrict: 'AE', + scope: false, + link: function(scope, element, attrs) { + $rootScope.$watch('prodige.loaded', function(){ + if ( !$rootScope.prodige.loaded ) return; + + if( $rootScope.prodige.userDetails && $rootScope.prodige.userDetails.alert == true ) { + var div = $('<i class="fa fa-warning text-warning" title="'+$rootScope.prodige.userDetails.message+'"></i>'); + $(element).append(div); + $compile(div)(scope); + } + }); + } + } + }); + })(); + + (helpModal = function(){ + module.controller( 'helpModal', [ + '$rootScope', '$scope', '$controller', '$http' + , function($rootScope, $scope, $controller, $http){ + // move modal to body to avoid backdrop overlap + $('#helpModal').appendTo('body'); + $scope.help = []; + $.ajax({ + xhrFields: { + withCredentials: true + }, + crossDomain: true, + method : 'GET', + url : prodigeConfig.routes.catalogue.geosource_get_help, + withCredentials: true, + success : function(data) { + $scope.help = data; + } + }); + } + ]); + })(); + + (toolbar = function(){ + module.controller( 'toolbar', [ + '$rootScope', '$scope', '$controller', '$http' + , function($rootScope, $scope, $controller, $http){ + + $scope.initContactForm = function() { + // broadcast to child scopes + $rootScope.$broadcast('initContactForm'); + }; + + } + ]); + })(); + + (contactAdmin = function(){ + module.controller( 'formContactAdmin', [ + '$rootScope', '$scope', '$controller', '$http' + , function($rootScope, $scope, $controller, $http){ + // move modal to body to avoid backdrop overlap + $('#contactAdmin').appendTo('body'); + $scope.model = { + usr_name : $rootScope.prodige.isIdentified() ? $rootScope.prodige.usr_name : '', + usr_firstname : $rootScope.prodige.isIdentified() ? $rootScope.prodige.usr_firstname : '', + usr_email : $rootScope.prodige.isIdentified() ? $rootScope.prodige.usr_mail : '' + }; + $scope.control = ""; + $scope.refreshCaptcha = function(){ + $scope.control = String(Math.round(Math.random()*1000000000)); + $('#captchaimg').get(0).src = prodigeConfig.URL+'/geosource/captcha' + "?rand="+$scope.control; + }; + $scope.initForm = function(){ + $scope.model = { + usr_name : $rootScope.prodige.isIdentified() ? $rootScope.prodige.usr_name : '', + usr_firstname : $rootScope.prodige.isIdentified() ? $rootScope.prodige.usr_firstname : '', + usr_email : $rootScope.prodige.isIdentified() ? $rootScope.prodige.usr_mail : '', + captcha : '', + message: '' + }; + $scope.refreshCaptcha(); + } + // init form data when notified to (see toolbar controller) + $rootScope.$on('initContactForm', function(e){ + $scope.initForm(); + }); + $scope.processForm = function(){ + if ( $scope.formContactAdmin.$valid ){ + $http({ + method : 'POST', + url : prodigeConfig.routes.catalogue.geosource_contact_admin, + data : $.param($scope.model), // pass in data as strings + withCredentials: true, + headers : { 'Content-Type': 'application/x-www-form-urlencoded' } // set the headers so angular passing info as form data (not request payload) + }) + .then( + function(data) { // success + //console.log('submit', data); + // re-init form with default values + $scope.initForm(); + // close popup + angular.element('#contactAdmin').modal('hide'); + alert("Votre message a bien été envoyé à l'administrateur de la plate-forme"); + }, + function(data) { // error + console.log('#contactAdmin', data); + } + ) + } else { + console.log($scope.formContactAdmin.$error); + } + }; + } + ]); + })(); + + function configureMetadata(md){ + if ( !md || md.get ) return; + md.get = md.get || function(field){ + var result, temp; + var traduction = { + 'isharvested' : 'isHarvested', + 'istemplate' : 'isTemplate', + 'Data' : 'title', + 'spatialRepresentationType' : 'spatialRepresentationType_text' + }; + if ( typeof traduction[field]!="undefined" ){ + field = traduction[field]; + } + try { + switch(field){ + case "id" : + temp = this['geonet:info'].id; + break; + case "id" : case "uuid" : + temp = (this.getUuid ? this.getUuid() : this['geonet:info'].uuid); + break; + case "links" : + temp = this['link'] || []; + var res = []; + temp.forEach(function(value){ + var tokens = value.split('|'); + res.push({ + name: tokens[0], + title: tokens[1], + href: tokens[2], + protocol: tokens[3], + type: tokens[4] + }) + }) + return res; + break; + case "serviceType" : + var type = ((temp = this.type) instanceof Array ? (temp[0].value || temp[0]) : temp); + if ( type=="map" ) return "invoke"; + if ( type=="service-invoke" ) return "invoke"; + default : + temp = this[field]; + break; + } + result = (temp instanceof Array ? (temp[0].value || temp[0]) : temp); + switch(field){ + case "type" : + result = result.split('-')[0]; + switch(result){ + case "map" : result = "service"; break; + case "service-invoke" : result = "service"; break; + } + break; + } + } catch(e){ } + return result; + } + return md; + }; + + (panier = function(){ + panier_ajouter = null; + module.controller( 'metadataCart', [ + '$rootScope', '$scope', '$controller', '$http' + , function($rootScope, $scope, $controller, $http){ + // move modal to body to avoid backdrop overlap + $('#metadataCart').appendTo('body'); + //$scope.$apply(); + var panier = JSON.parse(window.sessionStorage.getItem('PRODIGE.PANIER') || '{}'); + $scope.metadatas = panier.metadatas || []; + $scope.indexes = panier.indexes || {}; + window.sessionStorage.setItem('PRODIGE.PANIER', JSON.stringify({metadatas : $scope.metadatas, indexes : $scope.indexes})); + + $('#metadataCart').on('shown.bs.modal', function(){ + if ( !$scope.metadatas ) return; + $scope.metadatas.forEach(function(metadata){ + if (metadata.can_storage===null && metadata.query_storage) { + metadata.can_storage = true; + delete metadata.query_storage; + } + }); + window.sessionStorage.setItem('PRODIGE.PANIER', JSON.stringify({metadatas : $scope.metadatas, indexes : $scope.indexes})); + $scope.$apply(); + }); + window.panier_ajouter = $scope.panier_ajouter = function (metadata){ + if ( !metadata ) return false; + configureMetadata(metadata); + var type = metadata.get('type'); + + switch(type){ + case "dataset": + case "nonGeographicDataset": + if ( metadata.can_storage===false ) return false; + //nothing to do + break; + case "series": + // search metadata children of the series to add them in basket + var canAdd = true; + $.ajax({ + async: false, + url : '/geonetwork/srv/api/records/'+metadata.get("uuid")+'/related', + data : { + type : "children" + }, + dataType: "json", + accepts: { + text: "application/json" + }, + success : function(res) { + if (typeof res == "string") res = JSON.parse(res); + var metadatas = []; + if ( res!==null ){ + if ( !(res.children instanceof Array) ){res.children = [res.children];} + metadatas = res.children; + } + + var nbAdd = 0; + var metadatasByIds = {}; + var ajaxMetadatas = []; + var harvested = []; + metadatas.forEach(function(metadataChild){ + $.ajax({ + async: false, + url : '/geonetwork/srv/fre/qi?_content_type=json&fast=index&uuid='+metadataChild.id, + dataType: "json", + accepts: { + text: "application/json" + }, + success : function(res) { + if (typeof res == "string") res = JSON.parse(res); + metadata = res.metadata; + + configureMetadata(metadata); + var type = metadata.get('type'), serviceType = metadata.get('serviceType'); + + if ( ["series", "dataset", "nonGeographicDataset"].indexOf(type)==-1 ) return; + var isHarvested = metadata.get('isHarvested'); + if ( isHarvested=="y" ){ + var tabLinks = metadata.get("links"); + metadata.can_storage = tabLinks.length>0; + window.panier_ajouter(metadata) && nbAdd++; + return; + } + + + ajaxMetadatas.push({ + ID : metadata.get('id'), + OBJET_TYPE : type, + OBJET_STYPE : (type == "service" && serviceType ? serviceType : "") + }); + metadatasByIds[metadata.get('id')] = metadata; + } + }); + }); + + if ( ajaxMetadatas.length>0 ) { + var traitements = ["TELECHARGEMENT", "NAVIGATION"]; + $.ajax({ + async : false, + crossDomain: true, + url : prodigeConfig.routes.catalogue.prodige_verify_rights_url+'_multiple', + data : { + metadatas : ajaxMetadatas, + TRAITEMENTS : traitements.join("|") + }, + success : function(oRights) { + oRights = (typeof oRights=="string" ? JSON.parse(oRights) : oRights); + for (var id in oRights ){ + var metadata = metadatasByIds[id]; + metadata.can_storage = traitements.some(function(traitement){return !!oRights[id][traitement];}); + if ( metadata.can_storage ){ + nbAdd++; + window.panier_ajouter(metadata); + } + } + } + }); + } + if ( nbAdd==0 ) { + canAdd = false; + } + } + }); + return canAdd; + break; + default : /*not add other types in basket*/ return false; + } + + var serviceType = metadata.get('serviceType'); + var id = metadata.get("id"); + + if ( typeof $scope.indexes[id] == "undefined" ){ + metadata.can_storage = (typeof metadata.can_storage=="undefined" ? null : metadata.can_storage); + $scope.indexes[id] = $scope.metadatas.length; + $scope.metadatas.push(metadata); + window.sessionStorage.setItem('PRODIGE.PANIER', JSON.stringify({metadatas : $scope.metadatas, indexes : $scope.indexes})); + //$scope.$apply(); + } + $('#metadataCart').modal('show'); + + if ( metadata.can_storage===null ){ + + if ( metadata.get("isharvested")=="y" ){ + var tabLinks = metadata.get("links"); + metadata.can_storage = tabLinks.length>0; + if ( !metadata.can_storage ) $scope.panier_retirer(metadata); + $scope.$apply(); + }else{ + $scope.metadatas[$scope.indexes[id]].query_storage = true; + var traitements = ["TELECHARGEMENT", "NAVIGATION"]; + $.ajax({ + crossDomain: true, + url : prodigeConfig.routes.catalogue.prodige_verify_rights_url, + data : { + ID : id, + OBJET_TYPE : type, + OBJET_STYPE : (type == "service" && serviceType ? serviceType : ""), + TRAITEMENTS : traitements.join("|") + }, + success : function(oRights) { + delete $scope.metadatas[$scope.indexes[id]].query_storage; + oRights = (typeof oRights=="string" ? JSON.parse(oRights) : oRights); + $scope.metadatas[$scope.indexes[id]].can_storage = traitements.some(function(traitement){return !!oRights[traitement];}); + if ( !$scope.metadatas[$scope.indexes[id]].can_storage ) $scope.panier_retirer($scope.metadatas[$scope.indexes[id]]); + $scope.$apply(); + }, + failure : function(oRights) { + delete $scope.metadatas[$scope.indexes[id]].query_storage; + $scope.metadatas[$scope.indexes[id]].can_storage = false; + } + }); + } + } + return true; + }; // panier_ajouter + $scope.panier_retirer = function(metadata){ + if ( !metadata ) return; + configureMetadata(metadata); + var id = metadata.get('id'); + if ( typeof $scope.indexes[id] != "undefined" ){ + var index = $scope.indexes[id]; + var mds = [], ids = {}; + $scope.metadatas.forEach(function(md, mdIndex){ + if ( mdIndex==index ) return; + ids[md['geonet:info'].id] = mds.length; + mds.push(md); + }); + window.sessionStorage.setItem('PRODIGE.PANIER', JSON.stringify({metadatas : ($scope.metadatas = mds), indexes : ($scope.indexes = ids)})); + // $scope.$apply(); + } + }; // panier_retirer + $scope.panier_vider = function(){ + $scope.metadatas = []; + $scope.indexes = {}; + window.sessionStorage.setItem('PRODIGE.PANIER', JSON.stringify({metadatas : $scope.metadatas, indexes : $scope.indexes})); + //$scope.$apply(); + }; + $scope.panier_covisualiser = function(metadata){ + window.panier_covisualiser($scope, prodigeConfig) + }; + $scope.panier_downloadParametrage = function(metadata){ + window.panier_downloadParametrage($scope, prodigeConfig); + }; + + } + ]); + })(); + + (prodigeActions = function(){ + module.directive('gnResultsContainer', function($compile, $rootScope, $http, $templateCache){ + return { + restrict: 'A', + link: function(scope, element, attrs, controller, transcludeFn) { + // remplacer le template d'affichage de la liste de résultats dans le cas de la vue "Contribuer" + if( $(element).closest('[data-ng-controller="GnEditorBoardSearchController"]').size() > 0 ) { + $http + .get('../../apps_extend/templates/editor.html', {cache: $templateCache}) + .success(function(tplContent){ + scope.prodigeIsContributeMenu = true; + element.replaceWith($compile(tplContent)(scope)); + }); + } + } + }; + }); + module.directive('gnMdLinks', function($compile, $rootScope){ + return { + //require: ['!searching'], + restrict: 'C', + //transclude : true, + scope: false, + link : function(scope, element){ + var div = document.createElement('gn-catalog-links') + element.append($(div)); + + $compile($(div))(scope); + scope.prodigeMenu = $(div); + } + }; + }); + module.directive('gnMdActionsBtn', function($compile, $rootScope){ + return { + // require: ['$root.prodige.loaded'], + restrict: 'C', + //transclude : true, + scope: false, + link : function(scope, element){ + var div = document.createElement('gn-catalog-links'); + $(element).before($(div)); + + $compile($(div))(scope); + scope.prodigeMenu = $(div); + div.className = "gn-md-actions-btn gn-resultview pull-right"; + } + }; + }); + module.directive('gnMdView', function($compile, $rootScope, $http){ + return { + restrict: 'C', + //transclude : true, + //scope: false, + link : function(scope, element){ + scope.$watch('gnMdViewObj.current.record', function(){ + if( scope.gnMdViewObj.current.record ) { + //params: {logFile:"ConsultationMetadonnees", + // objectName : record.get("title").replace('"', '""')+"\",\""+record.get("id")} + var record = scope.gnMdViewObj.current.record; + $http({ + url : __PRODIGE_CATALOGUE_CONFIG_URL__+'/prodige/add_log', + method: 'GET', + params: {logFile:"ConsultationMetadonnees", objectName : (record.title||record.defaultTitle)+";"+record.getId()}, + withCredentials: true + }) + .error(function(data,status,headers,config){ + console.log("Erreur d'ecriture du log 'ConsultationMetadonnees'"); + }); + } + }); + } + }; + }); + module.directive('gnSelectionActions', function($compile, $rootScope){ + return { + transclue : true, + scope : false, + restrict: 'C', + link : function(scope, element){ + var action = $(document.createElement('li')); + action.attr('ng-show', "$root.prodige.loaded"); + action.html('<a ng-click="panier_ajouter_selection()"><i class="fa fa-star"></i> ' + + '<span title="Choisir les éléments sélectionnés sur la page uniquement">Choisir ces données (sélections de la page)</span>' + + '</a>'); + $(element).find('.dropdown-menu').prepend(action); + + scope.panier_ajouter_selection = function(){ + var nbAdd = 0; + var metadatas = scope.$parent.$parent.searchResults.records; + var metadatasByIds = {}; + var ajaxMetadatas = []; + metadatas.forEach(function(metadata){ + if ( !metadata["geonet:info"].selected ) return; + configureMetadata(metadata); + var type = metadata.get('type'), serviceType = metadata.get('serviceType'); + if ( ["series", "dataset", "nonGeographicDataset"].indexOf(type)==-1 ) return; + var isHarvested = metadata.get('isHarvested'); + if ( isHarvested=="y" ){ + var tabLinks = metadata.get("links"); + metadata.can_storage = tabLinks.length>0; + metadata.can_storage && window.panier_ajouter(metadata) && nbAdd++; + return; + } + ajaxMetadatas.push({ + ID : metadata.get('id'), + OBJET_TYPE : type, + OBJET_STYPE : (type == "service" && serviceType ? serviceType : "") + }); + metadatasByIds[metadata.get('id')] = metadata; + }); + if ( ajaxMetadatas.length>=0 ) { + var traitements = ["TELECHARGEMENT", "NAVIGATION"]; + $.ajax({ + async : false, + crossDomain: true, + url : prodigeConfig.routes.catalogue.prodige_verify_rights_url+'_multiple', + data : { + metadatas : ajaxMetadatas, + TRAITEMENTS : traitements.join("|") + }, + success : function(oRights) { + oRights = (typeof oRights=="string" ? JSON.parse(oRights) : oRights); + + for (var id in oRights ){ + var metadata = metadatasByIds[id]; + metadata.can_storage = traitements.some(function(traitement){return !!oRights[id][traitement];}); + if ( metadata.can_storage ){ + window.panier_ajouter(metadata) && nbAdd++; + } + } + } + }); + } + if ( nbAdd==0 ) { + Ext.Msg.alert('Ajout de la sélection dans le panier', 'Aucune métadonnée ne peut être ajoutée au panier.'); + } + } + $compile(action)(scope); + } + } + }); + + module.directive('gnCatalogLinks', function($rootScope){ + return { + require: ['$root.prodige.loaded'], + transclude : true, + templateUrl : '../../apps_extend/templates/metadata-actions.html', + controller : ['$scope', '$rootScope', '$controller', function($scope, $rootScope, $controller){ + + // hide default geosource delete metadata actions + angular.element('a.gn-md-delete-btn').hide(); // + angular.element('.gn-selection-actions li>a[ng-click="mdService.deleteMd()"]').parent().hide(); // marche pas + + $scope.prodigeActions = []; + $scope.setMetadataDecoration = function(){ + if ( !$scope.md ) return true; + configureMetadata($scope.md); + var legendTooltip; + var legendConfig = { + "vector" : ["Série de données vecteur", (legendTooltip="Une série de données géographiques est «une compilation identifiable de données géographiques» , une donnée géographique étant «toute donnée faisant directement ou indirectement référence à un lieu ou une zone géographique spécifique».")], + //"grid" : ["Série de données raster", legendTooltip], + "raster" : ["Série de données raster", legendTooltip], + "nonGeographicDataset" : ["Série de données non géographique ou tabulaire"], + "series" : ["Ensemble de séries de données", "Un ensemble de séries de données géographiques est une compilation de séries de données géographiques partageant la même spécification de produit."], + "map" : ["Cartes"], + "service" : ["Services"], + "chart" : ["Graphes"] + }; + + var mdtype; + var type = "unknown"; + switch (mdtype = $scope.md.get('type')){ + case "dataset" : + switch ($scope.md.get('spatialRepresentationType_text')){ + case "Vecteur" : type = "vector"; break; + case "Raster" : type = "raster"; break; + case "Tabulaire" : type = "nonGeographicDataset"; break; + default : type = 'nonGeographicDataset'; break; + } + break; + case "service" : + if($scope.md.get('keyword')=='infoChartAccessService'){ + type = "chart"; + }else{ + type = ($scope.md.get('serviceType')=="invoke" ? "map" : mdtype); + } + break; + default : + type = mdtype; + break; + } + + $scope.md && $scope.prodigeMenu.closest("[data-gn-fix-mdlinks]").addClass('metadata-'+type); + + //création d'un encart de légende + if ( $scope.prodigeIsContributeMenu!=true && $('.legend-metadata').length==0 && $('[data-sortby-combo]').length!=0 ){ + var legend; + legend = $('<div class="pull-right ng-isolate-scope"></div>'); + legend.insertAfter('[data-sortby-combo]'); + + legend = $('<div class="btn-group legend-metadata">' + + '<button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-expanded="false"><i class="fa fa-tags"></i> Légende</span> <span class="caret"></span>' + + '</div>').appendTo(legend); + legend = $('<ul class="dropdown-menu" role="menu"></ul>').appendTo(legend); + + $.each(legendConfig, function(cls, info){ + legend.append('<li'+(info[1] ? ' title="'+info[1]+'"' : '')+'><div class="icon metadata-'+cls+'"></div> '+info[0]+'<br/></li>'); + }) + + } + return true; + } + $scope.initMetadataActions = function(){ + var menu = $scope.prodigeMenu.find('.metadataActions'); + $(menu).trigger('beforeshow'); + menu.getEl = function(){return $(this).get(0)}; + menu.getId = function(){return $(this).get(0).id}; + menu.insert = function(index, el){ + if ( el instanceof Ext.menu.ItemPro ){ + $scope.prodigeActions.push(el); + return $(this).append($(el.getEl())); + } + if ( el instanceof Ext.ActionPro ){ + $scope.prodigeActions.push(el); + return $(this).append($(el.getEl())); + } + return $(this).append($(el)) + }; + window.setMetadataActions($rootScope, $scope, menu, $scope.md, false, prodigeConfig); + } + }] + }; + }); + })();//end prodigeActions + + /*$scope.confirm = function(title, body, success, fn_scope){ + $scope.msg = {msg_type : "alert", msg_title : title, msg_body : body}; + $scope.msg.confirmFn = function(){ + if ( success ) + success.call(fn_scope||this); + $scope.showMessage = false; + }; + $scope.showMessage = true; + };*/ + + + (extMessages = function (){ + module./*directive( 'extMessages', function($compile){return { + restrict : 'A', + scope : false, + */ + controller( 'extMessages', /* :*/ [ '$scope', "$controller", "$timeout" + , function(/*scope,element*/$scope, $controller, $timeout){ + // move modal to body to avoid backdrop overlap + $('#extMessages').appendTo('body'); + //console.log(arguments); + if ( typeof Ext == "undefined" ) Ext = {}; + if ( typeof Ext.Msg == "undefined" ) Ext.Msg = {}; + + $scope.modaltype = "alert"; + $scope.title = "Title"; + $scope.body = "Body"; + + $scope.close = function(){ + $('#extMessages #autoclose').click(); + } + + $scope.info = function(title, body, success, fn_scope){ + $('#extMessages').zIndex( 10000 ).modal('show'); + //diffère l'assignation des variables pour prise en compte + $timeout(function(){ + $scope.modaltype = "info"; + $scope.title = title; + $scope.body = body; + }, 0); + }; + + + + $scope.alert = function(title, body, success, fn_scope){ + $('#extMessages').zIndex( 10000 ).modal('show'); + //diffère l'assignation des variables pour prise en compte + $timeout(function(){ + $scope.modaltype = "alert"; + $scope.title = title; + $scope.body = body; + $scope.confirmFn = function(btn){ + if ( success ) { + success.apply(fn_scope||$scope, arguments); + } + }; + }, 0); + + }; + + $scope.confirm = function(title, body, success, fn_scope){ + $('#extMessages').zIndex( 10000 ).modal('show'); + //diffère l'assignation des variables pour prise en compte + $timeout(function(){ + $scope.modaltype = "confirm"; + $scope.title = title; + $scope.body = body; + $scope.confirmFn = function(btn){ + if ( success ) { + success.apply(fn_scope||$scope, arguments); + } + }; + }, 0); + + }; + + Ext.Msg.info = function(title, body, success, fn_scope){ + $scope.info(title, body, success, fn_scope); + return $scope.close; + }; + Ext.Msg.alert = function(title, body, success, fn_scope){ + $scope.alert(title, body, success, fn_scope); + return $scope; + }; + Ext.Msg.confirm = function(title, body, success, fn_scope){ + $scope.confirm(title, body, success, fn_scope); + return $scope; + }; + } + ] + //}} + ); + })(); +} + diff --git a/src/main/webapp/apps_extend/administration_carto.js b/src/main/webapp/apps_extend/administration_carto.js new file mode 100644 index 0000000..ffc396f --- /dev/null +++ b/src/main/webapp/apps_extend/administration_carto.js @@ -0,0 +1,1434 @@ + +/** + * @brief Initialisation de la page + * @return + */ +function administration_carto_init() +{ + try + { + IHM_historique_add(window.location); + IHM_Chargement_stop(); + administration_carto_domaineChange(); + domaines_event_onchange_add(events_administration_carto_changedomaine); + administration_carto_onfocus(); + + } + catch(e) + {} +} + +function administration_carto_onfocus() +{ + var domaine; + + try + { + domaine = domaines_getCurentDomaine(); + if (domaine) + IHM_Domaines_resume(); + else + IHM_Domaines_show(); + } + catch(e){} +} + +/** + * @brief Gère le clic sur un autre domaine + * @return + */ +function administration_carto_domaineChange() +{ + var domaine; + var sousdomaine; + try + { + domaine = domaines_getCurentDomaine(); + sousdomaine = domaines_getCurentSousDomaine(); + if (domaine){ + administration_carto_loadData(domaine, sousdomaine); + } + else + { + Ext.getCmp('westLayout').setTitle("Domaine / Sous-domaine"); + IHM_Panier_hide(); + IHM_Domaines_show(); + IHM_Chargement_stop(); + IHM_NoSelectionDomain_show(); + window.timerOnload = setTimeout("window.onload()", 2500); + } + } + catch(e){} +} +/** + * @brief Charge les données dans un sous-domaine/domaine + * @param domaine + * @param sousdomaine + * @return + */ +function administration_carto_loadData(domaine, sousdomaine) +{ + if ( document.location.pathname.indexOf("administration")==-1 ){ + + } + else { + var url; + var params; + var i; + var param; + var curdom = null; + var cursdom = null; + if ( window.timerOnload ){ + clearTimeout(window.timerOnload); + window.timerOnload = null; + } + IHM_Chargement_start(); + //administration_carto_setResume(domaine, sousdomaine); + url = document.location.pathname + "?domaine=" + domaine; + params = document.location.search.substr(1).split("&"); + for (i = 0; i < params.length; i++) + { + param = params[i].split("="); + if (param[0] == "domaine") + curdom = unescape(param[1]); + if (param[0] == "sousdomaine") + cursdom = unescape(param[1]); + } + if (sousdomaine) + url += "&sousdomaine=" + sousdomaine; + if ((!curdom && domaine) || (!cursdom && sousdomaine) || (cursdom && !sousdomaine) || (curdom != domaine) || (cursdom != sousdomaine)){ + document.location.replace(url); + } + else + IHM_Chargement_stop(); + } +} + +/** + * @brief Ouvre l'interface cartographique + * @param url + * @return + */ +function administration_carto_openInterface(action, login, pwd, mdtitle, PN_IS_ADM_PRODIGE) +{ + if(document.administration_carto){ + document.administration_carto.login.value = login; + document.administration_carto.pass.value = pwd; + document.administration_carto.mdtitle.value = mdtitle; + //document.administration_carto.PN_IS_ADM_PRODIGE.value = PN_IS_ADM_PRODIGE; + document.administration_carto.action = action; + administration_carto_win_cartodynamique = window.open("blank.html", "Cartographie_dynamique", "directories=0, fullscreen=yes, menubar=0, status=1, toolbar=0, resizable=1"); + document.administration_carto.submit(); + } +} + +/** + * @brief Ouvre l'interface cartographique + * @param url url de la carte + * @param mapName nom de la carte + * @return + */ +function consultation_openInterface(url, mapName) +{ + //maj Logs + var iframe = this; + iframe.tabParams = new Array(mapName); + + var ajaxUrl = IHM_getBaseUrl()+"consultation_addLog.php"; + var queryParams = {'logFile' : 'ConsultationCarte', 'objectName' :mapName}; + iframe.onSuccess = function(){}; + AjaxRequest(ajaxUrl, queryParams, iframe); + consultation_win_cartodynamique = window.open(url, "Cartographie_dynamique", "directories=0, fullscreen=yes, menubar=0, status=1, toolbar=yes, resizable=1"); +} + +/** + * @version 3.2 - 06/04/2012 + * @brief Supprime le service + * @param metadata_id + * @return + */ +function administration_carto_delService(metadata_id, service_nom, onSuccess, tabParams) +{ + var iframe = this; + iframe.tabParams = [metadata_id, onSuccess, tabParams]; + iframe.onSuccess = confirm_administration_carto_delService; + iframe.tabParamsNo = tabParams; + iframe.onResponseNo = onSuccess; + Ext.Msg.confirm("Suppression du service", "Le service "+service_nom+" sera supprimé, les contextes liés à ce service sont susceptibles de ne plus fonctionner.<br>" + + "Souhaitez-vous continuer ?", confirm, iframe); +} + +/** + * @version 3.2 - 06/04/2012 + * @param metadata_id + * @param deldata + * @return + */ +function confirm_administration_carto_delService(metadata_id, onSuccess, tabParams){ + var iframe = this; + iframe.tabParams = tabParams; + var ajaxUrl = IHM_getBaseUrl()+"administration_carto_Action.php"; + var queryParams = {action : "del", metadataId : escape(metadata_id)}; + iframe.onSuccess = onSuccess; + AjaxRequest(ajaxUrl, queryParams, iframe); +} + +/** + * @version 3.2 - 07/03/2012 + * @brief Supprime la carte + * @param pk_carte + * @param pk_stockage_carte + * @param metadata_id + * @return + */ +function administration_carto_delMap(pk_carte, pk_stockage_carte, metadata_id, carte_nom, onSuccess, tabParams) +{ + + var iframe = this; + iframe.tabParams = [pk_carte, pk_stockage_carte, metadata_id, true, onSuccess, tabParams]; + iframe.onSuccess = confirm_administration_carto_delMap; + iframe.tabParamsNo = tabParams; + iframe.onResponseNo = onSuccess; + Ext.Msg.confirm("Suppression de carte", "La carte "+carte_nom+" sera supprimée, les contextes liés à cette carte sont susceptibles de ne plus fonctionner.<br>" + + "Souhaitez-vous continuer ?", confirm, iframe); +} + +/** + * @version 3.2 - 07/03/2012 + * @param pk_carte + * @param pk_stockage_carte + * @param metadata_id + * @param deldata + * @return + */ +function confirm_administration_carto_delMap(pk_carte, pk_stockage_carte, metadata_id, deldata, onSuccess, tabParams){ + + var iframe = this; + iframe.tabParams = tabParams; + var ajaxUrl = IHM_getBaseUrl()+"administration_carto_Action.php"; + var queryParams = {action : "del", stockageCarteId : pk_stockage_carte, carteId : pk_carte, metadataId : escape(metadata_id), deldata : deldata}; + iframe.onSuccess = onSuccess; + AjaxRequest(ajaxUrl, queryParams, iframe); + + /** + * @deprecated v3.2 - 07/03/2012 + */ + /* + var params; + var i; + var param; + var curdom = null; + var cursdom = null; + var url; + + params = document.location.search.substr(1).split("&"); + for (i = 0; i < params.length; i++) + { + param = params[i].split("="); + if (param[0] == "domaine") + curdom = param[1]; + if (param[0] == "sousdomaine") + cursdom = param[1]; + } + url = IHM_getBaseUrl(); + url += "administration_carto_Action.php?action=del&stockageCarteId=" + pk_stockage_carte + "&carteId=" + pk_carte + "&metadataId=" + escape(metadata_id); + if (deldata) + url += "&deldata=1"; + if (curdom) + { + url += "&domaine=" + escape(curdom); + if (cursdom) + url += "&sousdomaine=" + escape(cursdom); + } + window.location = url; + */ +} + +/** + * @version 3.2 - 07/03/2012 + * @brief Supprime la métadonnée associée aux données MAJIC + * @param pk_couche + * @param metadata_id + * @return + */ +function administration_carto_delCoucheMajic(pk_couche, metadata_id, couche_nom, onSuccess, tabParams) +{ + var iframe = this; + iframe.tabParams = [pk_couche, metadata_id, true, "majic", couche_nom, onSuccess, tabParams]; + iframe.onSuccess = confirm_administration_carto_delDataConfirmed; + iframe.tabParamsNo = tabParams; + iframe.onResponseNo = onSuccess; + Ext.Msg.confirm("Suppression de couche", "La donnée "+couche_nom+" va être supprimée. Souhaitez-vous continuer ?", confirm, iframe); + +} + + +/** + * @version 3.2 - 07/03/2012 + * @brief Supprime la couche et sa métadonnée associée + * @param pk_couche + * @param metadata_id + * @return + */ +function administration_carto_delCouche(pk_couche, metadata_id, layerTable, coucheType, coucheSrv, couche_nom, onSuccess, tabParams) +{ + var iframe = this; + iframe.tabParams = [pk_couche, metadata_id, true, layerTable, coucheType, coucheSrv, couche_nom, onSuccess, tabParams]; + iframe.onSuccess = confirm_administration_carto_delData; + iframe.tabParamsNo = tabParams; + iframe.onResponseNo = onSuccess; + Ext.Msg.confirm("Suppression de couche", "La donnée "+couche_nom+" va être supprimée. Souhaitez-vous continuer ?", confirm, iframe); +} + + +/** + * @version 3.2 - 07/03/2012 + * Suppression d'une donnée, appel de la liste des cartes impactées en ajax + * @param pk_couche identifiant de donnée + * @param metadata_id identifiant de métadonnée + * @param deldata vrai si suppression de la donnée + * @param layerTable nom de la table + * @param coucheType type de couche (vecteur ou raster) + * @param coucheSrv url du serveur + * @return + */ +function confirm_administration_carto_delData(pk_couche, metadata_id, deldata, layerTable, coucheType, coucheSrv, couche_nom, onSuccess, tabParams){ + + var iframe = this; + iframe.tabParams = new Array(pk_couche, metadata_id, coucheType, couche_nom, onSuccess, tabParams); + var ajaxUrl = window.location.protocol+"//"+ coucheSrv + "/PRRA/Administration/Administration/Layers/LayerGetMaps.php"; + var queryParams = {coucheType : coucheType, layerTable : layerTable}; + iframe.onSuccess = showResultLayerMaps; + AjaxRequest(ajaxUrl, queryParams, iframe); +} + +/** + * @version 3.2 - 07/03/2012 + * @brief Affichage de la liste des mapfiles contenant la couche + * @param pk_couche identifiant de donnée + * @param metadata_id identifiant de métadonnée + * @param responseText retour Ajax + * @return + */ +function showResultLayerMaps(pk_couche, metadata_id, coucheType, couche_nom, onSuccess, tabParams, responseText){ + + var iframe = this; + iframe.tabParams = [pk_couche, metadata_id, true, coucheType, onSuccess, tabParams]; + iframe.onSuccess = confirm_administration_carto_delDataConfirmed; + iframe.tabParamsNo = tabParams; + iframe.onResponseNo = onSuccess; + var tabmaps = eval(responseText); + if(tabmaps.length == 0) + Ext.Msg.confirm("Suppression de couche", "Aucune carte ne contient la couche "+couche_nom+", souhaitez-vous poursuivre la suppression ?", confirm, iframe); + else{ + var strMaps =""; + for (var i=0; i<tabmaps.length;i++) + strMaps+= "<b>"+tabmaps[i]+"</b><br>"; + Ext.Msg.confirm("Suppression de couche", "La couche "+couche_nom+" est contenue dans les cartes suivantes :<br>" + + strMaps+ "La couche sera supprimée des cartes. Souhaitez-vous poursuivre la suppression ?", confirm, iframe); + } +} + +/** + * @version 3.2 - 07/03/2012 + * suppression d'une donnée confirmée + * @param pk_couche identifiant de donnée + * @param metadata_id identifiant de métadonnée + * @param deldata boolean permet la suppression des données associées + * @return + */ +function confirm_administration_carto_delDataConfirmed(pk_couche, metadata_id, deldata, mode, onSuccess, tabParams){ + + var iframe = this; + iframe.tabParams = tabParams; + var ajaxUrl = IHM_getBaseUrl()+"administration_carto_Action.php"; + var queryParams = {action : "del", coucheId : pk_couche, metadataId : escape(metadata_id), deldata : deldata, mode : mode}; + iframe.onSuccess = onSuccess; + AjaxRequest(ajaxUrl, queryParams, iframe); + + /** + * @deprecated v3.2 - 07/03/2012 + */ + /* + var params; + var i; + var param; + var curdom = null; + var cursdom = null; + var url; + params = document.location.search.substr(1).split("&"); + for (i = 0; i < params.length; i++) + { + param = params[i].split("="); + if (param[0] == "domaine") + curdom = param[1]; + if (param[0] == "sousdomaine") + cursdom = param[1]; + } + url = IHM_getBaseUrl(); + url += "administration_carto_Action.php?action=del&coucheId=" + pk_couche + "&metadataId=" + escape(metadata_id); + if (deldata=="true") + url += "&deldata=1"; + if (curdom) + { + url += "&domaine=" + escape(curdom); + if (cursdom) + url += "&sousdomaine=" + escape(cursdom); + } + url+="&mode="+mode; + window.location = url; + */ +} + +/** + * @brief ajoute une couche WMS au serveur + * @param pk_couche + * @param type_service + */ +function administration_carto_webservice(pk_data, type_service, login, pwd, type_data){ + var params; + var i; + var param; + var curdom = null; + var cursdom = null; + var url; + var deldata = false; + + params = document.location.search.substr(1).split("&"); + for (i = 0; i < params.length; i++) + { + param = params[i].split("="); + if (param[0] == "domaine") + curdom = param[1]; + if (param[0] == "sousdomaine") + cursdom = param[1]; + } + url = IHM_getBaseUrl(); + if(type_data == 0) //couche + url += "administration_carto_webservices.php?action="+type_service+"&coucheId=" + pk_data+"&login="+login+"&pass="+pwd+"&type_data="+type_data; + if(type_data == 1)//carte + url += "administration_carto_webservices.php?action="+type_service+"&carteId=" + pk_data+"&login="+login+"&pass="+pwd+"&type_data="+type_data; + if (curdom){ + url += "&domaine=" + escape(curdom); + if (cursdom) + url += "&sousdomaine=" + escape(cursdom); + } + if(type_data == 0) //couche + window.location = url; + if(type_data == 1){ + var iframe = this; + var ajaxUrl = url; + var queryParams = {};//{action:"valid",metadataId:metadata_id,statut:statut,mode:mode}; + iframe.tabParams = null; + iframe.onSuccess = function(responseText){ + var oRes = eval("("+responseText+")"); + if ( oRes.success ) { + //alert("La carte est publié en WMS."); + Ext.Msg.alert("Publication WMS", (oRes.enable ? "La carte a été correctement publiée en WMS" : "Le service WMS associé à la carte a été supprimé")) ; + } else { + Ext.Msg.alert("Echec", oRes.msg); + } + }; + AjaxRequest(ajaxUrl, queryParams, iframe); + }//carte +} + +/** + * @version 3.2 - 07/03/2012 + * @brief Change le statut d'une fiche de métadonnées + * @param metadata_id + * @param title + * @param statut + * @param mode + * @param onSuccess fonction à exécuter après changement de statut + * @return + */ +function administration_carto_changeStatut(metadata_id, title, statut, mode, onSuccess) +{ + var msg = ""; + var fram; + var url; + var urlfram; + + try + { + if(mode!="majic"){ + switch(statut) + { + case 1: + msg = "La fiche " + title + " va être renvoyée à la saisie"; + break; + case 2: + msg = "La fiche " + title + " va être proposée pour validation"; + break; + case 3: + msg = "La fiche " + title + " va être validée et proposée pour publication"; + break; + case 4: + msg = "La fiche " + title + " va être publiée"; + break; + default: + return; + break; + } + }else{ + switch(statut) + { + case 1: + msg = "La métadonnée majic va être renvoyée à la saisie"; + break; + case 2: + msg = "La métadonnée majic va être proposée pour validation"; + break; + case 3: + msg = "La métadonnée majic va être validée et proposée pour publication"; + break; + case 4: + msg = "La métadonnée majic va être publiée"; + break; + default: + return; + break; + } + } + var iframe = this; + iframe.tabParams = [metadata_id, statut, mode, onSuccess]; + iframe.onSuccess = changeStatut; + Ext.Msg.confirm('Changement de statut', msg, confirm, iframe); + } + catch(e){} +} + +/** + * @version 3.2 - 07/03/2012 + * Acces à la page de modification de statut + * @param metadata_id + * @param statut + * @param mode + * @return + */ +function changeStatut(metadata_id, statut, mode, onSuccess){ + + var iframe = this; + var ajaxUrl = IHM_getBaseUrl()+"administration_carto_Action.php"; + var queryParams = {action:"valid",metadataId:metadata_id,statut:statut,mode:mode}; + iframe.tabParams = null; + iframe.onSuccess = function(responseText){ + var oRes = eval("("+responseText+")"); + if ( oRes.success ) { + onSuccess(); + } else { + Ext.Msg.alert("Echec", oRes.msg); + } + }; + AjaxRequest(ajaxUrl, queryParams, iframe); + + /** + * @deprecated v3.2 - 07/03/2012 + */ + /* + var curdom = null; + var cursdom = null; + params = document.location.search.substr(1).split("&"); + for (i = 0; i < params.length; i++) + { + param = params[i].split("="); + if (param[0] == "domaine") + curdom = param[1]; + if (param[0] == "sousdomaine") + cursdom = param[1]; + } + var url = IHM_getBaseUrl(); + url += "administration_carto_Action.php?action=valid"; + if (curdom) + { + url += "&domaine=" + escape(curdom); + if (cursdom) + url += "&sousdomaine=" + escape(cursdom); + } + url +="&metadataId=" + escape(metadata_id) + "&statut=" + statut + "&mode=" + mode; + window.location = url; + */ +} + +/** + * @version 3.2 - 07/03/2012 + * @brief Change le statut de plusieurs fiches de métadonnées + * @param tabMetadata tableau d'informations de métadonnées sous la forme [{id:<id>, title:<title>, statut:<statut>}, {id:<id>, title:<title>, statut:<statut>}] + * @param statut + * @param mode + * @param modePropositionActif string true ou false + * @param onSuccess fonction à exécuter après changement de statut + * @return + */ +function administration_carto_action_changeStatut(tabMetadata, statut, mode, modePropositionActif, onSuccess) +{ + try + { + var tabMetadataId = []; + var tabMetadataTitle = []; + for ( var i=0; i<tabMetadata.length; i++ ) { + switch ( statut ) { + case 1 : // action retirer + if ( tabMetadata[i].statut != 1 ) { + tabMetadataId.push(tabMetadata[i].id); + tabMetadataTitle.push(tabMetadata[i].title); + } + break; + case 2 : // action proposer + if ( tabMetadata[i].statut == 1 ) { + tabMetadataId.push(tabMetadata[i].id); + tabMetadataTitle.push(tabMetadata[i].title); + } + break; + case 3 : // action valider + if ( !modePropositionActif && tabMetadata[i].statut == 1 + || tabMetadata[i].statut == 2 ) { + tabMetadataId.push(tabMetadata[i].id); + tabMetadataTitle.push(tabMetadata[i].title); + } + break; + case 4 : // action publier + if ( tabMetadata[i].statut == 3 ) { + tabMetadataId.push(tabMetadata[i].id); + tabMetadataTitle.push(tabMetadata[i].title); + } + break; + } + } + if ( tabMetadataTitle.length == 0 ) { + Ext.Msg.alert("Actions sur la sélection", "Impossible de réaliser l'action demandée pour les métadonnées sélectionnées."); + } else { + var msg = ( tabMetadataTitle.length == 1 ? "La fiche " : "Les fiches " )+tabMetadataTitle.join(", "); + switch ( statut ) { + case 1 : + msg += ( tabMetadataTitle.length == 1 ? " va être renvoyée" : " vont être renvoyées")+" à la saisie."; + break; + case 2 : + msg += ( tabMetadataTitle.length == 1 ? " va être proposée" : " vont être proposées")+" pour validation."; + break; + case 3 : + msg += ( tabMetadataTitle.length == 1 ? " va être validée et proposée" : " vont être validées et proposées")+" pour publication."; + break; + case 4 : + msg += ( tabMetadataTitle.length == 1 ? "va être publiée" : " vont être publiées")+"."; + break; + } + var iframe = this; + iframe.tabParams = new Array(tabMetadataId.join(","), statut, mode, onSuccess); + iframe.onSuccess = changeStatutCarto; + Ext.Msg.confirm('Changement de statut', msg, confirm, iframe); + } + + /** + * @deprecated v3.2 - 07/03/2012 + */ + /* + var msg = ""; + var fram; + var url; + var urlfram; + var metadataList = ""; + + var tabCheckbox = document.action_form.action; + var nbFiche = 0; + + var strTitre = ""; + + switch(statut) + { + case 1: + if(typeof(tabCheckbox.length)!="undefined"){ + for (var i=0; i<tabCheckbox.length; i++){ + //case cochée et statut autre que en cours + if(tabCheckbox[i].checked && document.action_form.elements["statut_"+tabCheckbox[i].value].value != 1){ + var tabInfoMetadata = tabCheckbox[i].value.split("_"); + metadataList+=tabInfoMetadata[1]+","; + nbFiche ++; + strTitre+= "<b>"+document.action_form.elements["titre_"+tabCheckbox[i].value].value + "</b><br>"; + + } + } + }else{ //only one checkbox + if(tabCheckbox.checked && document.action_form.elements["statut_"+tabCheckbox.value].value != 1){ + var tabInfoMetadata = tabCheckbox.value.split("_"); + metadataList+=tabInfoMetadata[1]+","; + nbFiche ++; + strTitre+= "<b>"+document.action_form.elements["titre_"+tabCheckbox.value].value + "</b><br>"; + + } + } + + if (nbFiche==0){ + Ext.Msg.alert("Actions sur la sélection", "Impossible de réaliser l'action demandée pour les métadonnées sélectionnées"); + return; + }else if(nbFiche==1){ + msg = "La fiche "+ strTitre+" va être renvoyée à la saisie"; + }else{ + msg = "Les fiches <br>"+ strTitre+" vont être renvoyées à la saisie"; + } + break; + case 2: + if(typeof(tabCheckbox.length)!="undefined"){ + for (var i=0; i<tabCheckbox.length; i++){ + //case cochée et statut en cours + if(tabCheckbox[i].checked && document.action_form.elements["statut_"+tabCheckbox[i].value].value == 1){ + var tabInfoMetadata = tabCheckbox[i].value.split("_"); + metadataList+=tabInfoMetadata[1]+","; + nbFiche ++; + strTitre+= "<b>"+document.action_form.elements["titre_"+tabCheckbox[i].value].value + "</b><br>"; + } + } + }else{ //only one checkbox + if(tabCheckbox.checked && document.action_form.elements["statut_"+tabCheckbox.value].value == 1){ + var tabInfoMetadata = tabCheckbox.value.split("_"); + metadataList+=tabInfoMetadata[1]+","; + nbFiche ++; + strTitre+= "<b>"+document.action_form.elements["titre_"+tabCheckbox.value].value + "</b><br>"; + } + } + if (nbFiche==0){ + Ext.Msg.alert("Actions sur la sélection", "Impossible de réaliser l'action demandée pour les métadonnées sélectionnées"); + return; + }else if(nbFiche==1){ + msg = "La fiche "+ strTitre+" va être proposée pour validation"; + }else{ + msg = "Les fiches <br>"+ strTitre+" vont être proposées pour validation"; + } + + break; + case 3: + if(typeof(tabCheckbox.length)!="undefined"){ + for (var i=0; i<tabCheckbox.length; i++){ + //case cochée et statut attente validation ou en cours (si mode proposition désactivé) + if(tabCheckbox[i].checked && (document.action_form.elements["statut_"+tabCheckbox[i].value].value == 2 + || (modePropositionActif =="off" && document.action_form.elements["statut_"+tabCheckbox[i].value].value == 1) )){ + var tabInfoMetadata = tabCheckbox[i].value.split("_"); + metadataList+=tabInfoMetadata[1]+","; + nbFiche ++; + strTitre+= "<b>"+document.action_form.elements["titre_"+tabCheckbox[i].value].value + "</b><br>"; + } + } + }else{ //only one checkbox + if(tabCheckbox.checked && (document.action_form.elements["statut_"+tabCheckbox.value].value == 2 + || (modePropositionActif =="off" && document.action_form.elements["statut_"+tabCheckbox.value].value == 1) )){ + var tabInfoMetadata = tabCheckbox.value.split("_"); + metadataList+=tabInfoMetadata[1]+","; + nbFiche ++; + strTitre+= "<b>"+document.action_form.elements["titre_"+tabCheckbox.value].value + "</b><br>"; + } + } + if (nbFiche==0){ + Ext.Msg.alert("Actions sur la sélection", "Impossible de réaliser l'action demandée pour les métadonnées sélectionnées"); + return; + }else if(nbFiche==1){ + msg = "La fiche "+ strTitre+" va être validée et proposée pour publication"; + }else{ + msg = "Les fiches <br>"+ strTitre+" vont être validées et proposées pour publication"; + } + + break; + case 4: + if(typeof(tabCheckbox.length)!="undefined"){ + for (var i=0; i<tabCheckbox.length; i++){ + //case cochée et statut validée + if(tabCheckbox[i].checked && document.action_form.elements["statut_"+tabCheckbox[i].value].value == 3){ + var tabInfoMetadata = tabCheckbox[i].value.split("_"); + metadataList+=tabInfoMetadata[1]+","; + nbFiche ++; + strTitre+= "<b>"+document.action_form.elements["titre_"+tabCheckbox[i].value].value + "</b><br>"; + + } + } + }else{//only one checkbox + if(tabCheckbox.checked && document.action_form.elements["statut_"+tabCheckbox.value].value == 3){ + var tabInfoMetadata = tabCheckbox.value.split("_"); + metadataList+=tabInfoMetadata[1]+","; + nbFiche ++; + strTitre+= "<b>"+document.action_form.elements["titre_"+tabCheckbox.value].value + "</b><br>"; + + } + } + if (nbFiche==0){ + Ext.Msg.alert("Actions sur la sélection", "Impossible de réaliser l'action demandée pour les métadonnées sélectionnées"); + return; + }else if(nbFiche==1){ + msg = "La fiche "+ strTitre+" va être publiée"; + }else{ + msg = "Les fiches <br>"+ strTitre+" vont être publiées"; + } + break; + default: + return; + break; + } + + var iframe = this; + iframe.tabParams = new Array(metadataList, statut, mode); + iframe.onSuccess = changeStatutCarto; + Ext.Msg.confirm('Changement de statut', msg, confirm, iframe); + */ + } + catch(e){} +} + +/** + * @version 3.2 + * @brief effectue l'action de modification de statut d'un ensemble de métadonnées + * @param metadataList + * @param statut + * @param mode + * @param onSuccess + * @return + */ +function changeStatutCarto(metadataList, statut, mode, onSuccess){ + + var iframe = this; + var ajaxUrl = IHM_getBaseUrl()+"administration_carto_Action.php"; + var queryParams = {action:"valid",metadataId:metadataList,statut:statut,mode:mode}; + iframe.tabParams = null; + iframe.onSuccess = function(responseText){ + var oRes = eval("("+responseText+")"); + if ( oRes.success ) { + onSuccess(); + } else { + Ext.Msg.alert("Echec", oRes.msg); + } + }; + AjaxRequest(ajaxUrl, queryParams, iframe); + + /** + * @deprecated v3.2 - 07/03/2012 + */ + /* + var curdom = null; + var cursdom = null; + params = document.location.search.substr(1).split("&"); + for (i = 0; i < params.length; i++) + { + param = params[i].split("="); + if (param[0] == "domaine") + curdom = param[1]; + if (param[0] == "sousdomaine") + cursdom = param[1]; + } + var url = IHM_getBaseUrl(); + url += "administration_carto_Action.php?action=valid"; + if (curdom) + { + url += "&domaine=" + escape(curdom); + if (cursdom) + url += "&sousdomaine=" + escape(cursdom); + } + url += "&metadataId=" + metadataList.substr(0, metadataList.length-1) + "&statut=" + statut + "&mode=" + mode; + window.location = url; + */ +} +/** + * @brief Ouvre geosource pour éditer la fiche de métadonnées + * @param pk_objet + * @param pk_objet_dep + * @param meta_id + * @param statut + * @param mode + * @return + */ +function administration_carto_editFiche(pk_objet, pk_objet_dep, meta_id, statut, mode, bHasRightPublication) +{ + switch(statut) + { + case -1: // pas de fiche + + var iframe = this; + iframe.tabParams = new Array(pk_objet); + iframe.onSuccess = administration_carto_createFiche; + Ext.Msg.confirm("Edition de métadonnée", "Aucune fiche n'est associée à la " + mode + ".\nUne nouvelle fiche va être créée.", confirm, iframe); + + break; + case 1: // saisie + case 2: // attente validation + try + { + IHM_Fiche_Edit(meta_id, mode); + } + catch(e){} + break; + case 3: // validée + case 4: // publiée + if(bHasRightPublication){ + try + { + IHM_Fiche_Edit(meta_id, mode); + } + catch(e){} + }else + { + var iframe = this; + iframe.tabParams = new Array(pk_objet, pk_objet_dep, mode, meta_id); + iframe.onSuccess = administration_carto_DuplicateFiche; + Ext.Msg.confirm("Edition de métadonnée", "La fiche doit être dupliquée pour pouvoir être éditée. Voulez-vous dupliquer cette fiche ?", confirm, iframe); + } + break; + default: + break; + } +} + +/** + * + * @param pk_objet + * @return + */ +function administration_carto_createFiche(pk_objet){ + IHM_Chargement_start(); + switch(mode) + { + case "couche": + window.location = "/geonetwork/srv/fre/metadata.create.new?id=2&group=2&couche=" + pk_objet; + break; + case "carte": + window.location = "/geonetwork/srv/fre/metadata.create.new?id=3&group=2&carte=" + pk_objet; + break; + } +} + +/** + * + * @param pk_objet + * @param pk_objet_dep + * @param mode + * @param meta_id + * @return + */ +function administration_carto_DuplicateFiche(pk_objet, pk_objet_dep, mode, meta_id){ + switch(mode) + { + case "couche": + administration_carto_copyCouche(pk_objet, meta_id); + break; + case "carte": + administration_carto_copyMap(pk_objet, pk_objet_dep, meta_id); + break; + } +} + +/** + * + * @param meta_id identifiant de la métadonnée dans Géosource + * @return + */ +function administration_carto_addFicheEnfant(meta_id, domaine, sousdomaine){ + + var url; + url = IHM_getBaseUrl(); + url += "administration_donnees_ajout.php?domaine="+domaine+ + (sousdomaine!="" ? "&sousdomaine="+sousdomaine : "")+ + "&child=y&metadataId=" + escape(meta_id); + window.location = url; + + +} + + +/** + * @brief Copie la carte + * @param pk_carte + * @param pk_stockage_carte + * @param meta_id + * @return + */ +function administration_carto_copyMap(pk_carte, pk_stockage_carte, meta_id) +{ + var url; + url = IHM_getBaseUrl(); + url += "administration_carto_copy.php?action=copy&metadataId=" + escape(meta_id) + "&stockageCarteId=" + pk_stockage_carte + "&carteId=" + pk_carte + "&mode=carte"; + window.location = url; +} + +/** + * @brief Copie la couche + * @param pk_couche + * @param meta_id + * @param domaine + * @param sousdomaine + * @return + */ +function administration_carto_copyCouche(pk_couche, meta_id, domaine, sousdomaine) +{ + var url; + url = IHM_getBaseUrl(); + url += "administration_carto_copy.php?action=copy&metadataId=" + escape(meta_id) + "&coucheId=" + pk_couche + "&mode=couche" + +"&domaine="+domaine+"&sousdomaine="+sousdomaine; + window.location = url; +} + + +/** + * @brief Copie la couche majic + * @param pk_couche + * @param meta_id + * @param domaine + * @param sousdomaine + * @return + */ +function administration_carto_copyMajic(pk_couche, meta_id, domaine, sousdomaine) +{ + var url; + url = IHM_getBaseUrl(); + url += "administration_carto_Action.php?action=copy&metadataId=" + escape(meta_id) + "&coucheId=" + pk_couche + "&mode=majic" + +"&domaine="+domaine+"&sousdomaine="+sousdomaine; + window.location = url; +} + +/** + * @brief Validation de la duplication + */ +function administration_copy_valider(mode){ + var form = document.form_copy; + var name = form.NOM; + var serveur = document.getElementById("SERVEUR"); + var modele = /^[a-z]+[a-z0-9_]*$/i; + if (modele.test(name.value)){ + } + else{ + Ext.Msg.alert("Duplication", "Le nom de fichier saisi ne doit pas contenir de caractères\n" + + "accentués ou non alphanumériques comme -()\"'. etc."); + return; + } + if(in_array(name.value, tabData[serveur])){ + if(mode =="couche") + Ext.Msg.alert("Ajout de données", "Une table portant ce nom existe déjà ."); + else + Ext.Msg.alert("Ajout de carte", "Une carte portant ce nom existe déjà ."); + return; + } + if(form){ + form.submit(); + } +} + +/** + * @brief Montre la fiche de métadonnées de la couche à partir de la cartographie + * @param meta_id + * @return + */ +function administration_carto_showFiche(meta_id) +{ + try + { + IHM_Fiche_Show(meta_id); + } + catch(e){} +} + +/** + * @brief Ajoute une nouvelle carte + * @return + */ +function administration_carto_ajoutCarte() +{ + try + { + IHM_Chargement_start(); + } + catch(e){} + window.location = "administration_carto_ajout.php"; +} + +/** + * @brief Ajoute une nouvelle couche + * @return + */ +function administration_carto_ajoutCouche() +{ + try + { + IHM_Chargement_start(); + } + catch(e){} + window.location = "administration_donnees_ajout.php"; +} + +/** + * @brief Importe les données d'une couche + * @param pk_couche + * @return + */ +function administration_carto_importCouche(pk_couche, metadata_id) +{ + var curdom = null; + var cursdom = null; + params = document.location.search.substr(1).split("&"); + for (i = 0; i < params.length; i++) + { + param = params[i].split("="); + if (param[0] == "domaine") + curdom = param[1]; + if (param[0] == "sousdomaine") + cursdom = param[1]; + } + var url = IHM_getBaseUrl(); + url += "Administration/Administration/Layers/LayersImportation.php?Id=" + pk_couche + "&metadata_id=" + metadata_id; + if (curdom) + { + url += "&domaine=" + escape(curdom); + if (cursdom) + url += "&sousdomaine=" + escape(cursdom); + } + window.location = url; +} + + + +/** + * @brief Changer fichier d'une carte statique + * @param pk_couche + * @return + */ +function administration_carto_changeStaticCarte(pk_carte, nom_fichier,fmeta_id) +{ + var url = IHM_getBaseUrl(); + url += "administration_carto_changeStaticCarte.php?Id=" + pk_carte + "&file_name=" + nom_fichier+ "&fmeta_id="+fmeta_id; + window.location = url; +} + + +/** + * @brief open the map in a simplified mode to edit the default representation of the layer + * @param action : url to open + * @param login : login to connect paramCarto + * @param pwd : pwd to connect paramCarto + */ +function administration_carto_paramCarto(action, login, pwd) +{ + //open map in popup + if(document.administration_carto){ + document.administration_carto.login.value = login; + document.administration_carto.pass.value = pwd; + document.administration_carto.action = action; + administration_carto_win_cartodynamique = window.open("blank.html", "Cartographie_dynamique", "directories=0, fullscreen=yes, menubar=0, status=1, toolbar=0, resizable=1"); + document.administration_carto.submit(); + } + + //window.open(url, "default_layer_map", "directories=0, fullscreen=0, menubar=0, status=1, toolbar=0, resizable=1"); +} + + +/** + * Réinitialisation de la représentation par défaut + */ +function reinitParamCarto(srvAdmin, layer_table){ + + var iframe = this; + iframe.tabParams = new Array(""); + var queryParams = { + layerMapFile : layer_table + } + var ajaxUrl = window.location.protocol+"//" + srvAdmin + "/PRRA/LayerMapInit.php"; + iframe.onSuccess = reinitParamCartoSuccess; + AjaxRequest(ajaxUrl, queryParams, iframe); +} + +function reinitParamCartoSuccess(){ + Ext.Msg.alert("Succès", "La représentation par défaut a été réinitialisée"); +} + +/** + * true if needle is in array (php equivalent) + * @param needle + * @param haystack + * @param argStrict + * @return + */ +function in_array (needle, haystack, argStrict) { + + var key = '', strict = !!argStrict; + if (strict) { + for (key in haystack) { + if (haystack[key] === needle) { + return true; + } + } + } else { + for (key in haystack) { + if (haystack[key] == needle) { + return true; + } + } + } + return false; +} + +function actionOnSelect(strMsg){ + var tabCheckbox = document.action_form.action; + var hasOneChecked = false + if(typeof(tabCheckbox.length)!="undefined"){ + for (var i=0; i<tabCheckbox.length; i++){ + if(tabCheckbox[i].checked){ + hasOneChecked = true; + break; + } + } + }else{//only one checkbox in html page + if(tabCheckbox.checked) + hasOneChecked = true; + } + + if(hasOneChecked){ + if(document.getElementById("action_detail").style.display=="") + document.getElementById("action_detail").style.display="none"; + else + document.getElementById("action_detail").style.display="" + }else{ + Ext.Msg.alert("Actions sur la sélection", strMsg); + } +} + +/** + * renomme un mapfile + * @param srv : url du serveur carto admin + * @param mapfile nom du mapfile existant + * @param pk_stockage_carte identifiant dans stockage_carte + * @return + */ +function map_change_name(srv, mapfile, pk_stockage_carte, urlBack){ + var iframe = this; + iframe.onSuccess = mapfileRename; + iframe.tabParams = new Array(srv, mapfile.substr(0, mapfile.length-4), pk_stockage_carte, urlBack); + Ext.Msg.prompt('Changement de nom', 'Vous souhaitez modifier le nom du mapfile de la carte. Les contextes utilisant cette carte sont susceptibles de ne plus fonctionner.<br>'+ + 'Le mapfile porte le nom: "'+mapfile.substr(0, mapfile.length-4)+'".<br>Entrez le nom du nouveau mapfile:', prompt, iframe); +} + +function mapfileRename(srv, mapfile, pk_stockage_carte, urlBack, newName){ + + var modele = /^[a-z]+[a-z0-9_]*$/i; + if (modele.test(newName)){ + } + else{ + Ext.Msg.alert("Changement de nom", "Le nom de fichier saisi ne doit pas contenir de caractères\n" + + "accentués ou non alphanumériques comme -()\"'. etc."); + return; + } + if (mapfile != ""){ + var ajaxUrl = window.location.protocol+"//"+srv+"/PRRA/Administration/Administration/Maps/MapChangeName.php"; + var iframe = this; + iframe.tabParams = new Array(pk_stockage_carte, newName); + iframe.onSuccess = successChangeName; + iframe.onFailure = function(){Ext.Msg.alert("Cartes", "Echec de l'opération")}; + var queryParams = { + MAPFILE : mapfile, + pk_stockage_carte : pk_stockage_carte, + NEW_MAPFILE: newName + } + AjaxRequest(ajaxUrl, queryParams, iframe); + /* + l_url = window.location.protocol+"//"+srv+"/PRRA/Administration/Administration/Maps/MapChangeName.php"; + l_url += "?MAPFILE="+mapfile; + l_url += "&pk_stockage_carte="+pk_stockage_carte; + l_url += "&NEW_MAPFILE="+newName; + l_url += "&url_retour="+urlBack; + IHM_Chargement_start(); + window.location = l_url;*/ + } +} + +function successChangeName(pk_stockage_carte, newName, responseText){ + eval("var responseJson = "+responseText); + if(responseJson.success==true){ + if(responseJson.mode==3){ + Ext.alert("le nom du mapfile souhaité est déjà utilisé. Aucune opération réalisée."); + }else{ + var iframe = this; + iframe.onSuccess = function(){Ext.Msg.alert("Cartes", "L'opération a été réalisée avec succès.")}; + iframe.onFailure = function(){Ext.Msg.alert("Cartes", "Echec de l'opération")}; + var queryParams = { + pk_stockage_carte : pk_stockage_carte, + NEW_MAPFILE: newName, + action : "rename" + } + AjaxRequest(IHM_getBaseUrl()+"administration_carto_Action.php", queryParams, iframe); + } + } +} + + +/** + * @brief Ouvre la fenêtre de création/définition d'une vue + * @param metadata_id : identifiant de la métadonnée de vue + * @param desc_vue : titre de la la vue + * @param nom_vue : nom de la vue, sera utilisé cmme nom de la vue dans la base + * @param urlBack : url de retour en sortie du module d'administration de vue (généralement l'url de la page courante) + * @param color_theme_id : identifiant du theme extjs de l'interface, passé au module d'administration de vue pour qu'il soit chargé dans le même thème extjs + * @param svrAdmin : adresse du serveur d'administartion ou se trouve le module d'administarion de vue + * @return nothing + */ +function administration_carto_adminView(metadata_id, desc_vue, nom_vue, urlBack, color_theme_id, svrAdmin) +{ + var params = { + pk_view : metadata_id, + view_title : desc_vue, + view_name : nom_vue, + url_back : urlBack, + view_type : -4 + } + + var jsonParams = Ext.encode(params); + var token = TextEncode(jsonParams); + + var url = svrAdmin + "/join/" + token; + + window.open(url, 'administration_carto_adminView'); +} + + + +/** + * @brief Ouvre la fenêtre de paramétrage de structure de cuche + * @param metadata_id : identifiant de la métadonnée + * @param nom_couche : nom de la couche à créer + * @param urlBack : url de retour en sortie du module d'administration de vue (généralement l'url de la page courante) + * @param color_theme_id : identifiant du theme extjs de l'interface, passé au module d'administration de vue pour qu'il soit chargé dans le même thème extjs + * @param svrAdmin : adresse du serveur d'administartion ou se trouve le module d'administarion de vue + * @return nothing, redirect + */ +function administration_carto_creerStructure(catalogue, metadata_id, nom_couche, urlBack, color_theme_id, svrAdmin) +{ + var params = { + pk_data : metadata_id, + data_name : nom_couche, + url_back : urlBack, + theme_id_for_ext : color_theme_id + } + + var jsonParams = Ext.encode(params); + var token = TextEncode(jsonParams); + + var url = catalogue.admincartoURL+"/importdata/table_structure/index/"+metadata_id+(nom_couche ? "/"+nom_couche : ""); + + window.open(url, 'administration_carto_creerStructure'); +} + +/** + * fonction appelée au chargement de la page d'admin des tables, permet de connaitre les vues utilisant les tables + * @param srvAdmin + * @param login + * @param passwd + * @param idx + * @return + */ +function checkTables(srvAdmin, login, passwd, idx){ + if(document.getElementById("layerTables")){ + var tabLayers = eval(document.getElementById("layerTables").value); + var iframe = this; + iframe.tabParams = new Array(""); + var queryParams = { + idx : idx, + login : login, + serviceName: 'getViewsFromTablenames', + passwd : passwd, + parameters : Ext.encode({ + tablenames : tabLayers + }) + } + + var ajaxUrl = window.location.protocol+"//" + srvAdmin + "/HTML_JOIN/gui/viewServices.php"; + iframe.onSuccess = showTablesResult; + AjaxRequest(ajaxUrl, queryParams, iframe); + } +} +/** + * gere la visiblité et le contenu des boutons supprimer et liste des vues + * @param vide + * @param responseText + * @return + */ +function showTablesResult(vide, responseText){ + eval("var responseJson = "+responseText); + var tabLayers = responseJson.data; + for(var layerName in tabLayers){ + if(document.getElementById("suppr_"+layerName)){ + if(tabLayers[layerName].length==0){ + document.getElementById("suppr_"+layerName).style.display=""; + }else{ + if(document.getElementById("vues_"+layerName)){ + strViewsMsg = "Liste des vues contenant la table:<br>"; + for(var i=0;i<tabLayers[layerName].length; i++){ + strViewsMsg+= "<b>"+tabViews[tabLayers[layerName][i]]+"</b><br>"; + } + document.getElementById("vues_"+layerName).style.display=""; + document.getElementById("vues_"+layerName).setAttribute('onclick',"Ext.Msg.alert('Administration de tables','"+strViewsMsg+"')"); + } + } + } + } +} + +/** + * fonction appelée au chargement de la page d'admin des tables, permet de connaitre les vues utilisant les couches + * @param srvAdmin + * @param login + * @param passwd + * @param idx + * @return + */ +function checkLayers(srvAdmin, login, passwd, idx){ + if(document.getElementById("layers")){ + var tabLayers = eval(document.getElementById("layers").value); + var iframe = this; + iframe.tabParams = new Array(""); + var queryParams = { + idx : idx, + login : login, + serviceName: 'getViewsFromLayernames', + passwd : passwd, + parameters : Ext.encode({ + layernames : tabLayers + }) + } + + var ajaxUrl = window.location.protocol+"//" + srvAdmin + "/HTML_JOIN/gui/viewServices.php"; + iframe.onSuccess = showLayersResult; + AjaxRequest(ajaxUrl, queryParams, iframe); + } +} +/** + * gere la visiblité et le contenu des boutons supprimer et liste des vues + * @param vide + * @param responseText + * @return + */ +function showLayersResult(vide, responseText){ + eval("var responseJson = "+responseText); + var tabLayers = responseJson.data; + for(var layerName in tabLayers){ + if(document.getElementById("suppr_"+layerName)){ + if(tabLayers[layerName].length==0){ + document.getElementById("suppr_"+layerName).style.display=""; + }else{ + if(document.getElementById("vues_"+layerName)){ + strViewsMsg = "Liste des vues contenant la table:<br>"; + for(var i=0;i<tabLayers[layerName].length; i++){ + strViewsMsg+= "<b>"+tabViews[tabLayers[layerName][i]]+"</b><br>"; + } + document.getElementById("vues_"+layerName).style.display=""; + document.getElementById("vues_"+layerName).setAttribute('onclick',"Ext.Msg.alert('Administration de tables','"+strViewsMsg+"')"); + } + //rEs(document.getElementById("suppr_"+layerName)); + } + } + } +} + +/** + * remove Dom Element + * @param tO element to delete + * @return + */ +function rEs(tO) { var i, n; if (!tO) { return false; } + if (!tO.nodeName) { if (tO.length) for (n=tO.length; n--;) rEs(tO[n]); } + else tO.parentNode.removeChild(tO); +} + +function chooseModele(displayImport){ + document.getElementById("parcourir_import").style.display=(displayImport ? "" : "none"); +} diff --git a/src/main/webapp/apps_extend/bootstrap-submenu-2.0.4/css/bootstrap-submenu.css b/src/main/webapp/apps_extend/bootstrap-submenu-2.0.4/css/bootstrap-submenu.css new file mode 100644 index 0000000..674b546 --- /dev/null +++ b/src/main/webapp/apps_extend/bootstrap-submenu-2.0.4/css/bootstrap-submenu.css @@ -0,0 +1,126 @@ +/*! + * Bootstrap-submenu v2.0.4 (https://vsn4ik.github.io/bootstrap-submenu/) + * Copyright 2014-2016 Vasily A. (https://github.com/vsn4ik) + * Licensed under the MIT license + */ + +.dropdown-submenu > a:after { + content: ""; +} + +@media (min-width: 768px) { + .dropdown-submenu { + position: relative; + } + .dropdown-submenu .dropdown-menu { + top: 0; + left: 100%; + margin-top: -6px; + border-top-left-radius: 0; + } + .dropup .dropdown-submenu .dropdown-menu, + .navbar-fixed-bottom .dropdown-submenu .dropdown-menu { + top: auto; + bottom: 0; + margin-top: 0; + margin-bottom: -6px; + border-top-left-radius: 4px; + border-bottom-left-radius: 0; + } + .dropdown-menu-right .dropdown-submenu .dropdown-menu, + .navbar-right .dropdown-submenu .dropdown-menu { + left: auto; + right: 100%; + border-top-left-radius: 4px; + border-top-right-radius: 0; + } + .dropup .dropdown-menu-right .dropdown-submenu .dropdown-menu, + .dropup .navbar-right .dropdown-submenu .dropdown-menu, + .navbar-fixed-bottom .dropdown-menu-right .dropdown-submenu .dropdown-menu, + .navbar-fixed-bottom .navbar-right .dropdown-submenu .dropdown-menu { + border-radius: 4px 4px 0; + } + .dropdown-submenu > a:after { + float: right; + margin-top: 6px; + margin-right: -10px; + border-left: 4px dashed; + border-top: 4px solid transparent; + border-bottom: 4px solid transparent; + } + .dropdown-menu-right .dropdown-submenu > a:after, + .navbar-right .dropdown-submenu > a:after { + float: left; + border-left: none; + margin-left: -10px; + margin-right: 0; + border-right: 4px dashed; + border-top: 4px solid transparent; + border-bottom: 4px solid transparent; + } +} +@media (max-width: 767px) { + .dropdown-submenu .dropdown-menu { + position: static; + margin-top: 0; + border: 0; + box-shadow: none; + } + .dropdown-submenu > a:after { + margin-left: 6px; + display: inline-block; + vertical-align: middle; + border-top: 4px dashed; + border-left: 4px solid transparent; + border-right: 4px solid transparent; + } + .dropdown > .dropdown-menu > .dropdown-submenu > .dropdown-menu > li.dropdown-header, + .dropup > .dropdown-menu > .dropdown-submenu > .dropdown-menu > li.dropdown-header, + .btn-group > .dropdown-menu > .dropdown-submenu > .dropdown-menu > li.dropdown-header, + .dropdown > .dropdown-menu > .dropdown-submenu > .dropdown-menu > li > a, + .dropup > .dropdown-menu > .dropdown-submenu > .dropdown-menu > li > a, + .btn-group > .dropdown-menu > .dropdown-submenu > .dropdown-menu > li > a { + padding-left: 30px; + } + .dropdown > .dropdown-menu > .dropdown-submenu > .dropdown-menu > li > .dropdown-menu > li.dropdown-header, + .dropup > .dropdown-menu > .dropdown-submenu > .dropdown-menu > li > .dropdown-menu > li.dropdown-header, + .btn-group > .dropdown-menu > .dropdown-submenu > .dropdown-menu > li > .dropdown-menu > li.dropdown-header, + .dropdown > .dropdown-menu > .dropdown-submenu > .dropdown-menu > li > .dropdown-menu > li > a, + .dropup > .dropdown-menu > .dropdown-submenu > .dropdown-menu > li > .dropdown-menu > li > a, + .btn-group > .dropdown-menu > .dropdown-submenu > .dropdown-menu > li > .dropdown-menu > li > a { + padding-left: 40px; + } + .dropdown > .dropdown-menu > .dropdown-submenu > .dropdown-menu > li > .dropdown-menu > li > .dropdown-menu > li.dropdown-header, + .dropup > .dropdown-menu > .dropdown-submenu > .dropdown-menu > li > .dropdown-menu > li > .dropdown-menu > li.dropdown-header, + .btn-group > .dropdown-menu > .dropdown-submenu > .dropdown-menu > li > .dropdown-menu > li > .dropdown-menu > li.dropdown-header, + .dropdown > .dropdown-menu > .dropdown-submenu > .dropdown-menu > li > .dropdown-menu > li > .dropdown-menu > li > a, + .dropup > .dropdown-menu > .dropdown-submenu > .dropdown-menu > li > .dropdown-menu > li > .dropdown-menu > li > a, + .btn-group > .dropdown-menu > .dropdown-submenu > .dropdown-menu > li > .dropdown-menu > li > .dropdown-menu > li > a { + padding-left: 50px; + } + .dropdown > .dropdown-menu > .dropdown-submenu > .dropdown-menu > li > .dropdown-menu > li > .dropdown-menu > li > .dropdown-menu > li.dropdown-header, + .dropup > .dropdown-menu > .dropdown-submenu > .dropdown-menu > li > .dropdown-menu > li > .dropdown-menu > li > .dropdown-menu > li.dropdown-header, + .btn-group > .dropdown-menu > .dropdown-submenu > .dropdown-menu > li > .dropdown-menu > li > .dropdown-menu > li > .dropdown-menu > li.dropdown-header, + .dropdown > .dropdown-menu > .dropdown-submenu > .dropdown-menu > li > .dropdown-menu > li > .dropdown-menu > li > .dropdown-menu > li > a, + .dropup > .dropdown-menu > .dropdown-submenu > .dropdown-menu > li > .dropdown-menu > li > .dropdown-menu > li > .dropdown-menu > li > a, + .btn-group > .dropdown-menu > .dropdown-submenu > .dropdown-menu > li > .dropdown-menu > li > .dropdown-menu > li > .dropdown-menu > li > a { + padding-left: 60px; + } + .navbar-nav > .dropdown > .dropdown-menu > .dropdown-submenu > .dropdown-menu > li.dropdown-header, + .navbar-nav > .dropdown > .dropdown-menu > .dropdown-submenu > .dropdown-menu > li > a { + padding-left: 35px; + } + .navbar-nav > .dropdown > .dropdown-menu > .dropdown-submenu > .dropdown-menu > li > .dropdown-menu > li.dropdown-header, + .navbar-nav > .dropdown > .dropdown-menu > .dropdown-submenu > .dropdown-menu > li > .dropdown-menu > li > a { + padding-left: 45px; + } + .navbar-nav > .dropdown > .dropdown-menu > .dropdown-submenu > .dropdown-menu > li > .dropdown-menu > li > .dropdown-menu > li.dropdown-header, + .navbar-nav > .dropdown > .dropdown-menu > .dropdown-submenu > .dropdown-menu > li > .dropdown-menu > li > .dropdown-menu > li > a { + padding-left: 55px; + } + .navbar-nav > .dropdown > .dropdown-menu > .dropdown-submenu > .dropdown-menu > li > .dropdown-menu > li > .dropdown-menu > li > .dropdown-menu > li.dropdown-header, + .navbar-nav > .dropdown > .dropdown-menu > .dropdown-submenu > .dropdown-menu > li > .dropdown-menu > li > .dropdown-menu > li > .dropdown-menu > li > a { + padding-left: 65px; + } +} +/*# sourceMappingURL=bootstrap-submenu.css.map */ \ No newline at end of file diff --git a/src/main/webapp/apps_extend/bootstrap-submenu-2.0.4/css/bootstrap-submenu.css.map b/src/main/webapp/apps_extend/bootstrap-submenu-2.0.4/css/bootstrap-submenu.css.map new file mode 100644 index 0000000..4ab4300 --- /dev/null +++ b/src/main/webapp/apps_extend/bootstrap-submenu-2.0.4/css/bootstrap-submenu.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["less/bootstrap-submenu.less","less/mixins.less"],"names":[],"mappings":"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","sourcesContent":["// :after: friends with IE8. Use ::after in future.\n\n@import \"../node_modules/bootstrap/less/variables.less\";\n@import \"mixins.less\";\n\n// Variables\n@caret-margin: -@caret-width-base * 2 - 2;\n\n//\n// Sub-Menus\n// --------------------------------------------------\n\n.dropdown-submenu > a:after {\n content: \"\";\n}\n\n@media (min-width: @grid-float-breakpoint) {\n .dropdown-submenu {\n position: relative;\n\n .dropdown-menu {\n top: 0;\n left: 100%;\n margin-top: -6px;\n border-top-left-radius: 0;\n\n // Strictly before .dropdown-menu-right\n .dropup &,\n .navbar-fixed-bottom & {\n top: auto;\n bottom: 0;\n margin-top: 0;\n margin-bottom: -6px;\n border-top-left-radius: @border-radius-base;\n border-bottom-left-radius: 0;\n }\n\n .dropdown-menu-right &,\n .navbar-right & {\n left: auto;\n right: 100%;\n\n border-top-left-radius: @border-radius-base;\n border-top-right-radius: 0;\n\n .dropup &,\n .navbar-fixed-bottom & {\n border-radius: @border-radius-base @border-radius-base 0;\n }\n }\n }\n\n > a:after {\n float: right;\n margin-top: @line-height-computed / 2 - @caret-width-base;\n margin-right: @caret-margin;\n\n .make-caret(left, top, bottom);\n\n .dropdown-menu-right &,\n .navbar-right & {\n float: left;\n border-left: none;\n margin-left: @caret-margin;\n margin-right: 0;\n\n .make-caret(right, top, bottom);\n }\n }\n }\n}\n\n@media (max-width: @grid-float-breakpoint-max) {\n .dropdown-submenu {\n .dropdown-menu {\n position: static;\n margin-top: 0;\n border: 0;\n box-shadow: none;\n }\n\n > a:after {\n margin-left: 6px;\n display: inline-block;\n vertical-align: middle;\n\n .make-caret(top, left, right);\n }\n }\n\n .dropdown-menu > .dropdown-submenu {\n .dropdown > &,\n .dropup > &,\n .btn-group > & {\n .make-nested-list(30px, 0, 4);\n }\n\n .navbar-nav > .dropdown > & {\n .make-nested-list(35px, 0, 4);\n }\n }\n}\n",".make-caret(@base, @left, @right) {\n // dashed: fix caret size for Mozilla Firefox\n border-@{base}: @caret-width-base dashed;\n\n border-@{left}: @caret-width-base solid transparent;\n border-@{right}: @caret-width-base solid transparent;\n}\n\n.make-nested-list(@offset, @i, @n) when (@i < @n) {\n > .dropdown-menu > li {\n &.dropdown-header,\n > a {\n padding-left: @offset + (10 * @i);\n }\n\n .make-nested-list(@offset, @i + 1, @n);\n }\n}\n"]} \ No newline at end of file diff --git a/src/main/webapp/apps_extend/bootstrap-submenu-2.0.4/css/bootstrap-submenu.min.css b/src/main/webapp/apps_extend/bootstrap-submenu-2.0.4/css/bootstrap-submenu.min.css new file mode 100644 index 0000000..bd7f2e9 --- /dev/null +++ b/src/main/webapp/apps_extend/bootstrap-submenu-2.0.4/css/bootstrap-submenu.min.css @@ -0,0 +1,7 @@ +/*! + * Bootstrap-submenu v2.0.4 (https://vsn4ik.github.io/bootstrap-submenu/) + * Copyright 2014-2016 Vasily A. (https://github.com/vsn4ik) + * Licensed under the MIT license + */ + +.dropdown-submenu>a:after{content:""}@media (min-width:768px){.dropdown-submenu{position:relative}.dropdown-submenu .dropdown-menu{top:0;left:100%;margin-top:-6px;border-top-left-radius:0}.dropup .dropdown-submenu .dropdown-menu,.navbar-fixed-bottom .dropdown-submenu .dropdown-menu{top:auto;bottom:0;margin-top:0;margin-bottom:-6px;border-top-left-radius:4px;border-bottom-left-radius:0}.dropdown-menu-right .dropdown-submenu .dropdown-menu,.navbar-right .dropdown-submenu .dropdown-menu{left:auto;right:100%;border-top-left-radius:4px;border-top-right-radius:0}.dropup .dropdown-menu-right .dropdown-submenu .dropdown-menu,.dropup .navbar-right .dropdown-submenu .dropdown-menu,.navbar-fixed-bottom .dropdown-menu-right .dropdown-submenu .dropdown-menu,.navbar-fixed-bottom .navbar-right .dropdown-submenu .dropdown-menu{border-radius:4px 4px 0}.dropdown-submenu>a:after{float:right;margin-top:6px;margin-right:-10px;border-left:4px dashed;border-top:4px solid transparent;border-bottom:4px solid transparent}.dropdown-menu-right .dropdown-submenu>a:after,.navbar-right .dropdown-submenu>a:after{float:left;border-left:none;margin-left:-10px;margin-right:0;border-right:4px dashed;border-top:4px solid transparent;border-bottom:4px solid transparent}}@media (max-width:767px){.dropdown-submenu .dropdown-menu{position:static;margin-top:0;border:0;box-shadow:none}.dropdown-submenu>a:after{margin-left:6px;display:inline-block;vertical-align:middle;border-top:4px dashed;border-left:4px solid transparent;border-right:4px solid transparent}.btn-group>.dropdown-menu>.dropdown-submenu>.dropdown-menu>li.dropdown-header,.btn-group>.dropdown-menu>.dropdown-submenu>.dropdown-menu>li>a,.dropdown>.dropdown-menu>.dropdown-submenu>.dropdown-menu>li.dropdown-header,.dropdown>.dropdown-menu>.dropdown-submenu>.dropdown-menu>li>a,.dropup>.dropdown-menu>.dropdown-submenu>.dropdown-menu>li.dropdown-header,.dropup>.dropdown-menu>.dropdown-submenu>.dropdown-menu>li>a{padding-left:30px}.btn-group>.dropdown-menu>.dropdown-submenu>.dropdown-menu>li>.dropdown-menu>li.dropdown-header,.btn-group>.dropdown-menu>.dropdown-submenu>.dropdown-menu>li>.dropdown-menu>li>a,.dropdown>.dropdown-menu>.dropdown-submenu>.dropdown-menu>li>.dropdown-menu>li.dropdown-header,.dropdown>.dropdown-menu>.dropdown-submenu>.dropdown-menu>li>.dropdown-menu>li>a,.dropup>.dropdown-menu>.dropdown-submenu>.dropdown-menu>li>.dropdown-menu>li.dropdown-header,.dropup>.dropdown-menu>.dropdown-submenu>.dropdown-menu>li>.dropdown-menu>li>a{padding-left:40px}.btn-group>.dropdown-menu>.dropdown-submenu>.dropdown-menu>li>.dropdown-menu>li>.dropdown-menu>li.dropdown-header,.btn-group>.dropdown-menu>.dropdown-submenu>.dropdown-menu>li>.dropdown-menu>li>.dropdown-menu>li>a,.dropdown>.dropdown-menu>.dropdown-submenu>.dropdown-menu>li>.dropdown-menu>li>.dropdown-menu>li.dropdown-header,.dropdown>.dropdown-menu>.dropdown-submenu>.dropdown-menu>li>.dropdown-menu>li>.dropdown-menu>li>a,.dropup>.dropdown-menu>.dropdown-submenu>.dropdown-menu>li>.dropdown-menu>li>.dropdown-menu>li.dropdown-header,.dropup>.dropdown-menu>.dropdown-submenu>.dropdown-menu>li>.dropdown-menu>li>.dropdown-menu>li>a{padding-left:50px}.btn-group>.dropdown-menu>.dropdown-submenu>.dropdown-menu>li>.dropdown-menu>li>.dropdown-menu>li>.dropdown-menu>li.dropdown-header,.btn-group>.dropdown-menu>.dropdown-submenu>.dropdown-menu>li>.dropdown-menu>li>.dropdown-menu>li>.dropdown-menu>li>a,.dropdown>.dropdown-menu>.dropdown-submenu>.dropdown-menu>li>.dropdown-menu>li>.dropdown-menu>li>.dropdown-menu>li.dropdown-header,.dropdown>.dropdown-menu>.dropdown-submenu>.dropdown-menu>li>.dropdown-menu>li>.dropdown-menu>li>.dropdown-menu>li>a,.dropup>.dropdown-menu>.dropdown-submenu>.dropdown-menu>li>.dropdown-menu>li>.dropdown-menu>li>.dropdown-menu>li.dropdown-header,.dropup>.dropdown-menu>.dropdown-submenu>.dropdown-menu>li>.dropdown-menu>li>.dropdown-menu>li>.dropdown-menu>li>a{padding-left:60px}.navbar-nav>.dropdown>.dropdown-menu>.dropdown-submenu>.dropdown-menu>li.dropdown-header,.navbar-nav>.dropdown>.dropdown-menu>.dropdown-submenu>.dropdown-menu>li>a{padding-left:35px}.navbar-nav>.dropdown>.dropdown-menu>.dropdown-submenu>.dropdown-menu>li>.dropdown-menu>li.dropdown-header,.navbar-nav>.dropdown>.dropdown-menu>.dropdown-submenu>.dropdown-menu>li>.dropdown-menu>li>a{padding-left:45px}.navbar-nav>.dropdown>.dropdown-menu>.dropdown-submenu>.dropdown-menu>li>.dropdown-menu>li>.dropdown-menu>li.dropdown-header,.navbar-nav>.dropdown>.dropdown-menu>.dropdown-submenu>.dropdown-menu>li>.dropdown-menu>li>.dropdown-menu>li>a{padding-left:55px}.navbar-nav>.dropdown>.dropdown-menu>.dropdown-submenu>.dropdown-menu>li>.dropdown-menu>li>.dropdown-menu>li>.dropdown-menu>li.dropdown-header,.navbar-nav>.dropdown>.dropdown-menu>.dropdown-submenu>.dropdown-menu>li>.dropdown-menu>li>.dropdown-menu>li>.dropdown-menu>li>a{padding-left:65px}} \ No newline at end of file diff --git a/src/main/webapp/apps_extend/bootstrap-submenu-2.0.4/js/bootstrap-submenu.js b/src/main/webapp/apps_extend/bootstrap-submenu-2.0.4/js/bootstrap-submenu.js new file mode 100644 index 0000000..4f202a1 --- /dev/null +++ b/src/main/webapp/apps_extend/bootstrap-submenu-2.0.4/js/bootstrap-submenu.js @@ -0,0 +1,195 @@ +/*! + * Bootstrap-submenu v2.0.4 (https://vsn4ik.github.io/bootstrap-submenu/) + * Copyright 2014-2016 Vasily A. (https://github.com/vsn4ik) + * Licensed under the MIT license + */ + +/** + * $.inArray: friends with IE8. Use Array.prototype.indexOf in future. + * $.proxy: friends with IE8. Use Function.prototype.bind in future. + */ + +'use strict'; + +(function(factory) { + if (typeof define == 'function' && define.amd) { + // AMD. Register as an anonymous module + define(['jquery'], factory); + } + else if (typeof exports == 'object') { + // Node/CommonJS + module.exports = factory(require('jquery')); + } + else { + // Browser globals + factory(jQuery); + } +})(function($) { + function Item(element) { + this.$element = $(element); + this.$menu = this.$element.closest('.dropdown-menu'); + this.$main = this.$menu.parent(); + this.$items = this.$menu.children('.dropdown-submenu'); + + this.init(); + } + + Item.prototype = { + init: function() { + this.$element.on('keydown', $.proxy(this, 'keydown')); + }, + close: function() { + this.$main.removeClass('open'); + this.$items.trigger('hide.bs.submenu'); + }, + keydown: function(event) { + // 27: Esc + + if (event.keyCode == 27) { + event.stopPropagation(); + + this.close(); + this.$main.children('a, button').trigger('focus'); + } + } + }; + + function SubmenuItem(element) { + this.$element = $(element); + this.$main = this.$element.parent(); + this.$menu = this.$main.children('.dropdown-menu'); + this.$subs = this.$main.siblings('.dropdown-submenu'); + this.$items = this.$menu.children('.dropdown-submenu'); + + this.init(); + } + + $.extend(SubmenuItem.prototype, Item.prototype, { + init: function() { + this.$element.on({ + click: $.proxy(this, 'click'), + keydown: $.proxy(this, 'keydown') + }); + + this.$main.on('hide.bs.submenu', $.proxy(this, 'hide')); + }, + click: function(event) { + // Fix a[href="#"]. For community + event.preventDefault(); + + event.stopPropagation(); + + this.toggle(); + }, + hide: function(event) { + // Stop event bubbling + event.stopPropagation(); + + this.close(); + }, + open: function() { + this.$main.addClass('open'); + this.$subs.trigger('hide.bs.submenu'); + }, + toggle: function() { + if (this.$main.hasClass('open')) { + this.close(); + } + else { + this.open(); + } + }, + keydown: function(event) { + // 13: Return, 32: Spacebar + + if (event.keyCode == 32) { + // Off vertical scrolling + event.preventDefault(); + } + + if ($.inArray(event.keyCode, [13, 32]) != -1) { + this.toggle(); + } + } + }); + + function Submenupicker(element) { + this.$element = $(element); + this.$main = this.$element.parent(); + this.$menu = this.$main.children('.dropdown-menu'); + this.$items = this.$menu.children('.dropdown-submenu'); + + this.init(); + } + + Submenupicker.prototype = { + init: function() { + this.$menu.off('keydown.bs.dropdown.data-api'); + this.$menu.on('keydown', $.proxy(this, 'itemKeydown')); + + this.$menu.find('li > a').each(function() { + new Item(this); + }); + + this.$menu.find('.dropdown-submenu > a').each(function() { + new SubmenuItem(this); + }); + + this.$main.on('hidden.bs.dropdown', $.proxy(this, 'hidden')); + }, + hidden: function() { + this.$items.trigger('hide.bs.submenu'); + }, + itemKeydown: function(event) { + // 38: Arrow up, 40: Arrow down + + if ($.inArray(event.keyCode, [38, 40]) != -1) { + // Off vertical scrolling + event.preventDefault(); + + event.stopPropagation(); + + var $items = this.$menu.find('li:not(.disabled):visible > a'); + var index = $items.index(event.target); + + if (event.keyCode == 38 && index !== 0) { + index--; + } + else if (event.keyCode == 40 && index !== $items.length - 1) { + index++; + } + else { + return; + } + + $items.eq(index).trigger('focus'); + } + } + }; + + var old = $.fn.submenupicker; + + // For AMD/Node/CommonJS used elements (optional) + // http://learn.jquery.com/jquery-ui/environments/amd/ + $.fn.submenupicker = function(elements) { + var $elements = this instanceof $ ? this : $(elements); + + return $elements.each(function() { + var data = $.data(this, 'bs.submenu'); + + if (!data) { + data = new Submenupicker(this); + + $.data(this, 'bs.submenu', data); + } + }); + }; + + $.fn.submenupicker.Constructor = Submenupicker; + $.fn.submenupicker.noConflict = function() { + $.fn.submenupicker = old; + return this; + }; + + return $.fn.submenupicker; +}); diff --git a/src/main/webapp/apps_extend/bootstrap-submenu-2.0.4/js/bootstrap-submenu.min.js b/src/main/webapp/apps_extend/bootstrap-submenu-2.0.4/js/bootstrap-submenu.min.js new file mode 100644 index 0000000..ab71e0b --- /dev/null +++ b/src/main/webapp/apps_extend/bootstrap-submenu-2.0.4/js/bootstrap-submenu.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap-submenu v2.0.4 (https://vsn4ik.github.io/bootstrap-submenu/) + * Copyright 2014-2016 Vasily A. (https://github.com/vsn4ik) + * Licensed under the MIT license + */ + +"use strict";!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){function b(b){this.$element=a(b),this.$menu=this.$element.closest(".dropdown-menu"),this.$main=this.$menu.parent(),this.$items=this.$menu.children(".dropdown-submenu"),this.init()}function c(b){this.$element=a(b),this.$main=this.$element.parent(),this.$menu=this.$main.children(".dropdown-menu"),this.$subs=this.$main.siblings(".dropdown-submenu"),this.$items=this.$menu.children(".dropdown-submenu"),this.init()}function d(b){this.$element=a(b),this.$main=this.$element.parent(),this.$menu=this.$main.children(".dropdown-menu"),this.$items=this.$menu.children(".dropdown-submenu"),this.init()}b.prototype={init:function(){this.$element.on("keydown",a.proxy(this,"keydown"))},close:function(){this.$main.removeClass("open"),this.$items.trigger("hide.bs.submenu")},keydown:function(a){27==a.keyCode&&(a.stopPropagation(),this.close(),this.$main.children("a, button").trigger("focus"))}},a.extend(c.prototype,b.prototype,{init:function(){this.$element.on({click:a.proxy(this,"click"),keydown:a.proxy(this,"keydown")}),this.$main.on("hide.bs.submenu",a.proxy(this,"hide"))},click:function(a){a.preventDefault(),a.stopPropagation(),this.toggle()},hide:function(a){a.stopPropagation(),this.close()},open:function(){this.$main.addClass("open"),this.$subs.trigger("hide.bs.submenu")},toggle:function(){this.$main.hasClass("open")?this.close():this.open()},keydown:function(b){32==b.keyCode&&b.preventDefault(),-1!=a.inArray(b.keyCode,[13,32])&&this.toggle()}}),d.prototype={init:function(){this.$menu.off("keydown.bs.dropdown.data-api"),this.$menu.on("keydown",a.proxy(this,"itemKeydown")),this.$menu.find("li > a").each(function(){new b(this)}),this.$menu.find(".dropdown-submenu > a").each(function(){new c(this)}),this.$main.on("hidden.bs.dropdown",a.proxy(this,"hidden"))},hidden:function(){this.$items.trigger("hide.bs.submenu")},itemKeydown:function(b){if(-1!=a.inArray(b.keyCode,[38,40])){b.preventDefault(),b.stopPropagation();var c=this.$menu.find("li:not(.disabled):visible > a"),d=c.index(b.target);if(38==b.keyCode&&0!==d)d--;else{if(40!=b.keyCode||d===c.length-1)return;d++}c.eq(d).trigger("focus")}}};var e=a.fn.submenupicker;return a.fn.submenupicker=function(b){var c=this instanceof a?this:a(b);return c.each(function(){var b=a.data(this,"bs.submenu");b||(b=new d(this),a.data(this,"bs.submenu",b))})},a.fn.submenupicker.Constructor=d,a.fn.submenupicker.noConflict=function(){return a.fn.submenupicker=e,this},a.fn.submenupicker}); \ No newline at end of file diff --git a/src/main/webapp/apps_extend/css/apps_extend.css b/src/main/webapp/apps_extend/css/apps_extend.css new file mode 100644 index 0000000..8bfcd9a --- /dev/null +++ b/src/main/webapp/apps_extend/css/apps_extend.css @@ -0,0 +1,119 @@ + +input.ng-invalid, textarea.ng-invalid +{ + border-color: red; +} + +#metadataCart .modal-body +{ + overflow:auto; + max-height : 300px; +} + +.dropdown-menu .loading { + font-size: 20px; + right: 0%; + top: 0%; + background-color: transparent; + left: initial; +} + +.gn-resultview .gn-md-links .dropdown-menu li a { + padding-top: 4px; + padding-bottom: 4px; +} + +.pull-right .metadataActions{ + left : initial !important; + right : 0 !important; +} + +.big-logo{ + min-height : 50px; + max-height : 70px; + min-width : 50px; + max-width : 70px; + margin-right : 10px; + float:left; +} + +button.prodige-menu{ + background-color:darkgreen;color:white +} +.prodige-home h1{ + font-size:34px !important; +} + +.legend-metadata li { + height: 30px; + width : 360px; + display : block; + padding : 5px; +} +.legend-metadata .icon { + border: solid 1px #000000; + height: 15px; + width: 30px; + float: left; + margin-right:5px; +} +li.list-group-item:hover { + box-shadow : 5px 5px 10px -5px !important; +} + +.metadata-nonGeographicDataset +{ background-color: rgba(218,218,218,1) !important; /* #DADADA */ } +//li.metadata-nonGeographicDataset:hover +//{ background-color: rgba(218,218,218,0.65) !important; } + +.metadata-vector, .metadata-dataset +{ background-color: rgba(222,236,253,1) !important; /* #DEECFD */ } +//li.metadata-vector:hover, li.metadata-dataset:hover +//{ background-color: rgba(222,236,253,0.65) !important; } + +.metadata-grid, .metadata-raster +{ background-color: rgba(175,211,255,1) !important; /* #AFD3FF */ } +//li.metadata-grid:hover, li.metadata-raster:hover +//{ background-color: rgba(175,211,255,0.65) !important; } + +.metadata-textTable +{ background-color: rgba(175,188,210,1) !important; /* #AFBCD2 */ } +//li.metadata-textTable:hover +//{ background-color: rgba(175,188,210,0.65) !important; } + +.metadata-series +{ background-color: rgba(255,216,241,1) !important; /* #FFD8F1 */ } +//li.metadata-series:hover +//{ background-color: rgba(255,216,241,0.65) !important; } + +.metadata-service +{ background-color: rgba(253,235,196,1) !important; /* #FDEBC4 */ } +//li.metadata-service:hover +//{ background-color: rgba(253,235,196,0.65) !important; } + +.metadata-carte, .metadata-map +{ background-color: rgba(229,242,211,1) !important; /* #E5F2D3 */ } +//li.metadata-carte:hover, li.metadata-map:hover +//{ background-color: rgba(229,242,211,0.65) !important; } + +.metadata-chart +{ background-color: rgba(220,193,241,1) !important; /* dcc1f1 */ } + +table.contribute-search-results > tbody > tr > td { + vertical-align: middle; +} + +table.contribute-search-results > tbody > tr > td .btn-group { + display: block; +} + +.open > .dropdown-menu.metadataActions { + overflow-y: inherit; +} + +/* thumbnail width */ +.gn-md-view .gn-md-side .gn-img-thumbnail, .gn-md-view .gn-md-side .gn-img-extent { + width: auto; +} + +div[data-results=searchResults] div.gn-selection-actions li:last-child {content:'';display:none !important; } \ No newline at end of file diff --git a/src/main/webapp/apps_extend/images/FitAll_OFF.gif b/src/main/webapp/apps_extend/images/FitAll_OFF.gif new file mode 100644 index 0000000000000000000000000000000000000000..e4052ec7c6ad70856f80fd816d2dbdba9cc907d6 GIT binary patch literal 1122 zcmW+#eN2^Q6hFE)^WzU(lexm2!|bMRtR2U=-4HTF)Fyr~Dbpd$9b@^$@H4lZ)2mG_ z)Y5$9x;f`kr<s5s8|KD@%-F$@FzS*w@N&H%A8Jh)>U{h?@AKc;Ip_Cv-gnmQ>@<I2 zA|=uQk#$e4HP(u?Y%RG;)vB>7R@o}KrcrB*HDV20LvB{oim@VA*b2E-R?Eh+SZ2!v zBui?^SQ1NY2?ekL4J<5UnjDXNMpaZ<l^iW9W7LQmRzpq&nqpK$g;mIj!YmtQQD$X= zMyx6sB~fA}utGJ!AQ~zm3q2468_>YQGC4!8#uH=M7;^qVi%P@@8zE;GD$ryx%!Uc> zAqumG#1I>TJ>&tI*hU=i4-s$()c}KNsKh9AfEd_-1{S>pKkWi;xQv{y>Y0S(uP3 z>_P>aLM((Fku(B;E{r2+xJ8u612VCVIG_oJ;Sj0;2GQ7rEa(6+umMf(L~a^w)Odu8 zAxQWGEh;AWakyN)d%LE0LKm}l6*ubz?Nax$bE{q)?g*YkhvbQNH}P~hU=JFf1FnSd z;0aW>W3f+)ifDYs-Dr1Bc<{9L)8xGMdr$1Y+%k1R@!ZnjZ-4%?eP^)u$-tHRTSv}U z>}ve$Sh!959^HKSXm2EPDHdC>WXY#1Ry5te-`LTiZEel*cvCFa7>%B<u73LBh3^Yr z%I=hcg9Z7){F0L;EuAespAVn@guz#az$i_H2K*6;M6X(^7&12J!toDw46S%)>CFp; zwW}zpXk^xb6IrVg-dNak<EPed*CdY5UOKjO`04d;F6tXT@!-Ua`Qr+{oOY&cOzpnc z2D`QnR_4{e-PZqi-dCLP(UGThB~yOASU!E-hwo-jt1pdLuMSs!Gjh+`&u(OPEk7Jy zv@(=h`k<yb@O`fD_L-!)>Fts_?&^k~#^S1$C%tuL&*vNpl&`saZDUV!`2P``Bx7~= zsAL()Dj&1>@yW@fIz~4~-|v}p<=GEkhy0t5+V>h(=C+1@?hS9Ly0<p;Z$suld-AE? zR)13@=g!&Pub-N+I9?NcCU1S-wJuV3r+nD&X_q&j`#AVVZ79jVEq*;cBY9?7<m!PD z(O=HSQvy@A^{c5GmLBqVceVeRpOPC%D~+G4JRIm;c5#0Cf0T2}-?#j`h8+pnzQWYL KytH|l6nF{#dpmIe literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/FitAll_ON.gif b/src/main/webapp/apps_extend/images/FitAll_ON.gif new file mode 100644 index 0000000000000000000000000000000000000000..5792ba995f744470fbdc7788dbc77209db21ab81 GIT binary patch literal 1107 zcmW+#eMpsO6hDigY=c3ITidMJrO?nz(J7bMr4OPH2+8PUgNnRkPXvqR?vy^1icuN# zM@lVDXo*-R1Qz)bS`=<n(8+~v!#S@Xh}WFE2_;><(S7<o@AKc`ob&rS@4IQs##K25 zKJrnV$hxQ2inYdCww7F_YE`Tnt8A5AQ`CxBF;>_Lxmlyuh&9F<wuam)t7WllEVE?- zk|nhymW(B~gaX)r1{RhvO^(MsQ8lWpN{$wlh>B5R6>=)jG@{0+VKwALVU|VND6=v_ zBUY6}$tbZBSfLtV5Dk@(g&v534QOCtnVcb4;~5baA?FXYsEiTAV#wKr3N+aWvoOIu zL}6CQ2(b|CArHvJHsXMPh=4<=1{g#`B}SnG#J~nLu*fCn+Nkl^7;-_vA81iA8z$rm zyHJ6qAvS~@ku(B;E{r2+xJ8u612VCVIG_oJ;Sj0;2GQ7rEa(6+umMf(L~a^w)Odu8 zAxQWGEh;AWakyN)d%LE0LKm}l6*ubz?Nax$bE{q)?g*YkhvbQNH}P~hU=JFf1FnSd z;0aW35{Yj^A^K{~wd)Nh&Rn?E9C_3;byMGtzfDp`{=(v>#%B@AKmVe;clhP#>6Z4Y zo&g>EzwF=M^1;EY9UV=>!%b~%v5AR^L?V$)rf=W2zqF(~+LLiCW9iwY>uc8UKE1oJ zwoqy%nM_VjP6h%2zu%8ff8o^hk6@ItpaFk`k7%Z)uJ6Cxe7kzxFVpTU+4J;v!EdGi zq=r7;P+qg)2l6kkoecDUUEH6Qt@p|!!3!A=V<{`P5B**eU)^5vI+k)Xcxzro$>(<u z)L&WIHu$Xm#{<<@myH}fKI7HimSChTbpFVk8#@n28xIE38yDnPoZ1@AT-lJ9b7-iu zs;l{V-;0_Zxxa=+Vp*+4qkq<SMLRNk&!xpL9y{whe7|_?@78x;%v~HjG}<|TU)`&7 z*`@E3dACyjD_l@iwl3WD_<3b??TUDJxGq-NR~&0E$PN}2REPI&8q0YSNL`*c-gj`< z(^)O6gS#3ld^5B&_ej&+_V4~0UzJwcJ8dfbr1G<gs!!_fF01KlNPX~AX6xmlk=Op_ pf#}P^^pTD|$K$j5FNN#=h_wCuj?xBBPM>}6(>2jW-{h^O+z$krH1+@h literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/Infos_OFF.gif b/src/main/webapp/apps_extend/images/Infos_OFF.gif new file mode 100644 index 0000000000000000000000000000000000000000..be55af29a66eb9383b1b3b5e1924c9bcc07d7efc GIT binary patch literal 1032 zcmW+#YfO(}6hD-)S!|6o>x0W?(_*$`CTT5e(Xbk+nJz1KK3GY$QbRuYAT!L^^mJLs z+*$u+3e~Jq(o=ty>7r2myO%Lq8us`-@AK{Kob$V#_uUy4xivV&kNjws$k?ZiQO1Zd zYz)~-YonFXVl*2~wyCsH$|y04jUqcM+K4hDM%W11Rn~@;VKK~x2}p*tA!SGmu^|+| z1~jm+jA^nw_9?AJYu1`9Eh?q760KM(vMSINrA4%`7P6u+%Sy9oX3YeRSk<I7i6+(r zR;UITL_;NHp$B4M0~%OZCTqync%l?5Mb;l^QHdyFC1mYF1)401Suw#qL}6BuC}Ksh zhddw?+lT}HAp#De8ek9&l^BH%5Ca>~z#^NRZKK9x5wbzTA81iA3lnmMU8q1)h=q_N zl12c~g>eK8w}=vXKqj^k2Q<Mj96~j~AR3#H1sxy;HlWF#$WEh;8jo->1POnjMa5)4 z4x6iUZ`*WEXk&J+VrQM8ZR$>TcGZc)9>H;FksQ(XCXNmZ>_Fplz?BdlJb~){@bJOZ zR0@oxH4#fg)BGc{mht`#2hIe><ZM24cF*xEM+<MS+PXJ9UJ6QGQgAso{d96x!OfbM zx1YW~ebaXR?)`?3T^CDA-g!Lj0|RgS`<r`u>fG+f_4O51RUbx2J4Z&`gM&R26W!zE zU1MW?larsPrts;np7WjuqZ9-U_#^y?77deYp8u}O8{uc?yVfVXsZ421qkzDsYIky2 z!S8?_*9xbT!g2=n>$cfVw<1pceHGdnmyr~8se7>OQ{0oXm)CuM^behIm(}IYcm|H- zMVE(N=pJcZ+j{(P<H@P!^MBTLByPXBuKa=5U7y6=kCt309(p#N5L4+hHy$#pOP1%x zpWE11y|MIJ@wcKa?Jr`!#HEjSG+cccQ~vx|Z?7wRVaE5QbN`w$z2c)w_q8l8^Bum^ zekeHmmnS9eUjEHm<>~0DSTUQ~m_PHmZhz3q4UKs}$KF?M+s4U7zEvr0k+n5HhFV+; HyeZ^AgOd=j literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/Infos_ON.gif b/src/main/webapp/apps_extend/images/Infos_ON.gif new file mode 100644 index 0000000000000000000000000000000000000000..9837828bca18e512916e70d7d8c08e001cd3f6d2 GIT binary patch literal 1028 zcmW+#SxA&o6h1{!R74R;pePY7TJ&;Yw6dg(%EXe07TVD0LLeBK*uF`HWS9xnjT$Ae zqB8dur-$~%Ic4RO5>8sC5u-!uIF8EgyZ?PVoO8bI{QugNH3>^HA}E3eiHv<>j5bCY z!^V)UM2u)7$_N`F+tgyTHd-0YMw6XYVw5&Y8O27CU1c$>4J*TJn1EzR3~58k5F0`P zY(N7G%a|t1W1kjLA}m6d7M0ebm1q`CRt1_$i&COk6j@Q2Wi70PS(u;^t3p~x39%4Z zp&DQi4V93E9*BVrXkcNPtRY+DDXm#+vi?AeN-3>aE3$T>0!>z$Su?>sL}6Bw(!`oz z4|zZ)wh;&XLj)W`HNYSmDlrNjAO<#|fkies+eVGYN|6l`{y>Y0Sur73*o6u-6|o}Z zh@=q!bYUDp!!4pj9*~J`!~sn(42Mt+Fo?z`WI+drfemP~C$iIMqsAj#3_-#lXi+iQ zkHhBb+}k#t6WW-atJqm5Xq&o|on3X}ut#tlS|mrby@{j40z1(79B?Is2T!2t3x@}W zhqq^DMjmX8E9{NVxU>33Ahl5T-v5_&raq^pcgx}HSy$>$-23{pC6s&l?kivD?sLg6 zDeVY^FJ3SE83;DKc=_#D=f9z$z~EqSFzD~^{}Tu_e);m&>#eA%=?{mydwRP3{`Rh} z7N2i$WF$B|j8A{|(6})$N{gTYe?$b)#CG!Sk6c$(wlaTgb?nX$RT;_D8nsw{H|=p1 zOq-kex~nNFVSZo7^1=nv_qejZKW=G`-!#W{q_g3Y=SgLGa!Dxo%(Jz~opyfS=s@3u zjWNrMr?BhIg$+>&*+2R}=G?2xNIKN^xcI@fqPUc@(9HvX-+gvBmChI~h&)#0+gvxP zw!*tKCnm9SYOVGjebknil~;0d*DP1LC(r+5{O)bJ9j)05Z-3tLu&R31@mSBf)b~Zv z`?9W9f4Z2m{+8#&srJm~t-bD<dAE}CqaUWbSDYM4_qzQx@!ffJc5=*yn<39>TJ|3e Cwii(V literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/Marianne.jpg b/src/main/webapp/apps_extend/images/Marianne.jpg new file mode 100644 index 0000000000000000000000000000000000000000..97b75359219be656e36d45e97dadeb16fba61a29 GIT binary patch literal 23771 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 HKWqO5q9)fl literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/Mesure_OFF.gif b/src/main/webapp/apps_extend/images/Mesure_OFF.gif new file mode 100644 index 0000000000000000000000000000000000000000..ec0fd01e74d9b84e07a33a3322a86ad20e8b3cfb GIT binary patch literal 961 zcmW+#O-Phs5S|SWN{2v5QljV}7-p9tD8;}IZH7@=2aOVQWylaLjDAQV@?fDP6x6;6 zR!CWfshJcg8IeXgSec~}xFx&m4{0T6iQ?Pye(!CVndfi5&!4?}`;KD?lt6!ptb1y$ zu~w{QYsporR*hA$%2vrWjap-@5o_2Qa<igVj1{rMR>-ZgS~ix&GFv7fSyD^Jl2~F( zD1Z%UU||{4<apdOs-nuO<Y-YDqej%Q8geSo6r&<4tU^u{X4xo<GAk1_VpYi~i4rS; z6{-OS(NGCl=z$p6fCd(p$r*Aro*2W%kn;yxR3b*$2syh@fhLP#HcW62QJ6I(hS(77 zArHvJHsXMPh=4<=1{g#`B}SnG#J~nLu*fCn+NkkZgj|sD2U=9j!h~F57b?&cVj<*+ zq!9pgVH`ojEuusokcn-?0ZlLrhfobLh{h&lK?jI|4QO&Fa?@y|#v@z|LBbzsQ8BrX z!{zGT+cmutx|qGIxLGe~m%5joTlL~_NAMgvBu})viKoK>d(ikCa3zEXPoVl3iF^o$ z3yO<lQuC7conD(6$T@SPu=@6a(hIqPvQv$171fs;9(R5kkF@r_s@0(@H-oQ7zefHo zHhmv|_h;_XSST2dv`<a<&diR?&+pIAKO6`QMWX|uP|x7t@WjMWB$8iLG&(u?ZF)L1 zGxK|CX?bM@pZ=!B7$1z%7HGg9kw6sNNFBa)d)n`0Rj=y!(cN6WvA1S<VXE7|rlGHP z^r`P<O-GZzF6md*`ndRuJIhA$T8_NUyVqZpl6|!@@!);`t&#L-Pw+`o|MiTth2etu zl-#<kv=iarq2%{>_xeg6m3Ee7w(P1e96q;g^Ov@y=GpZPUD3gI8MxN^F!%Vtv(yRS kgY=56N9z}Vj`ao4mcKcl*cG=S=lRJOm2=_Gt79qSKNmaeT>t<8 literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/Mesure_ON.gif b/src/main/webapp/apps_extend/images/Mesure_ON.gif new file mode 100644 index 0000000000000000000000000000000000000000..544de2ff741af551b2de52d71d17087c9e0efff2 GIT binary patch literal 947 zcmW+#OGuSr5S_|JwCo{;wXj7Y)goqNwJ8lvg~VDJXn7YyEri+xf;~Viu5i)R$_Y!Q zkc2Re9%QwXgdC_4=^=u65iK#z6utMq_kNx4pWQGsXU;kEeZ?h3`A2H9DVx@aoDXwO zofGHSIr5pAGj%4;*cthvnp1TuPT48>UNI-?M4Ye_@}q2y)v-8c#{?ut=13ihBX)!Y z*nkEWhS5!aj}J8yGd3f?7MZH4n6fE(7AT6EhzXmJCxu>CV=-o90!NG*sgW455w?Og zz(5)-K?^l31~#C9g<<l7e2x%RRwb_wYmtelunKv(V1XiwGAk3*gA{s|M2VFk4}O3q zreO#4g9H?UHNZd`EYS)cSPX1H1B<+KzKk5fBIJ#PKCDH?EKKkfa=`*cAr^v<a2f`H z7usPo)WS;m0h*YG9pD7PPzcrl18Gcx7I<JWumMf}M7|qk<OssWU?lWmEixwmIJ~dn zy?rq}p|?4_iti1L_O6HC`O(l0e}qt>M+!;%n}j?(a0rd(fGfc~Xu_(0$>ee(Q5lKs zZ_XU5`;>cqYF~7Duk;snXA193pT732pn0rjAXzuGekIo1*fTT|PxXCEeHb3;9Ge?_ z`~LIypHnMqJx}}E$0z4kR{Ljv-S{!lG9CZ8^mi!;CgSncAefn-UrVJ@86W9%ItT(h z{oF*>1_-5t;D8^IO|-d%7BA(T8t6XJuyHVN_;z_$;jQ)UrR^QHU9Y1%Ig)j`;_*my z_m1kEk{3@(T5|`hg1N&prT2DKMe6ffdkb`HvAm4(ti|@!wp!oWNO?z5L#FfMwuy?n zWo=EJTVDMhy`TU5%y?7m{Fk;1WxXdKd_7PZOCNpoaISpeTx0sr!lvVI`X`6d$;9Z@ K#p-uA>DYgxFYU4b literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/Minimiser.gif b/src/main/webapp/apps_extend/images/Minimiser.gif new file mode 100644 index 0000000000000000000000000000000000000000..c010ed1e621b1ac67e8e80415ae27d1d27de3db2 GIT binary patch literal 106 zcmZ?wbhEHb6k!lyC}3bv{K>+|z`)9&!vF*zu_hq>|NsA2uU`H6^XK^S;~;S`VAhY= zbw|$Nlw@eZkEb=>_kF)Nc6+p4J2@lk)z)_vn{?OSD)#Z+xYgTMqEF?QWMUr+gEasV CT_^_t literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/Oeil.gif b/src/main/webapp/apps_extend/images/Oeil.gif new file mode 100644 index 0000000000000000000000000000000000000000..b812b6c9586bdd597cdd9dc52a9ffbf9f76fd9b6 GIT binary patch literal 89 zcmZ?wbhEHb6krfwSjfZx1TS9vhXBQ&ER0+XObj|8QII?Xlh%~}m8Z`#C|3k&Np7+= ktmc)J<*1lw!1i*dQ(DI^`ObtVQ$lVpwf<MH!N6b*02z`Vi~s-t literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/PRRA.gif b/src/main/webapp/apps_extend/images/PRRA.gif new file mode 100644 index 0000000000000000000000000000000000000000..c878cbd5a4b4ff8f8978246098f814778e9f6213 GIT binary patch literal 2563 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 MY#y7?b_ZbdKXFn(3IG5A literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/Pan_Est_OFF.gif b/src/main/webapp/apps_extend/images/Pan_Est_OFF.gif new file mode 100644 index 0000000000000000000000000000000000000000..cb9e442a303c3fa9254613b9e649d6a217d8b6a1 GIT binary patch literal 836 zcmchWF;13Y5QK;1FZg341(AY?^mI#zhRVdC7Q`!P!Q6vJNoXnD&O3MmXt$vC7IuVc zefB+sTYa0|ot>F|zmK0U-oE>`)mBeZPgHkyyF0oySyfkdxhuLf#jMWkbZ2yGdR^^o zyB%%KXjDgbxFb3QQmb0oaw}RSU;_;n!*px*Ok|a-qDr%tEVI&;QK?};(OGsm${JGi zMpn2YDg;MHOIdO$N^FHSV339-w5YKdY@oqnSR-h1!kLk&(Z^acI~{3_Tv$*HXGDfj z4=H+6PDKiN_yJ9(u><{(Kq0IFgETB@g$Ikl1{y4lb5kZK!qymxKGu>&IE1grg#|?` zEPTXi41gEy7>!!2#1CjPjU8}8FbZJ}7^Inm7CcxCHqe?AO*dt7LR<_Z(Z^b{&^(Uu zb=`Z4>x5(Ty2|t}qsR5--Ha|f<_JsSAT82!lf`3z7c|d-D`6g*She@%hKI<<e~#nl z&5ra(C$o3{3GE*1_tnGq%U|!WH!ofv{(Ss;|6}*)?C#UwHy>{IU-|UlrOy8W+(%bz literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/Pan_Est_ON.gif b/src/main/webapp/apps_extend/images/Pan_Est_ON.gif new file mode 100644 index 0000000000000000000000000000000000000000..11112ebcdab7d43067e6bf524b57c9e8b4fe76d0 GIT binary patch literal 836 zcmchWF;1LO41@;>2~Zj+A}COj?P-uv6hsAzl2GLe(D)uyAkk9bE@w&YB1fS^ROXv^ zh`9K*mhJJ(`0dZ@AK%Vz_q3;1X&gOMGdUA8a@IXv(>Wc}a<O`<rgAE#<lgMbn#{?V zlt-f{Y9c3MLLiNLRHGclhy-k)!D5(hd5@#Ivpc%wwPaOY*%e(f3yN8t*%_TODSD$i zvLiYKM@C!K%2u@43Twb14NGWIV=>r3gT=5c$T^W!Q6=kREm>w|RLXK;K{2u-DujAS z(Ob$=l#quX&}14r&<_a|!WuA0!;)5buo!Hh!IGVGnVg7B*+}%UmMkJe_=;RuP)tP% zA8{H3;6*z|qZTXi1DZ@@2b>U$LRbR^X(pis4;F(Bw0t6WQzj?G#V`_mtR)NiaoE>& zZx`1IZS%T{dzaC6eR=26WrvTj6dGxf_DvQK121Tv16RU4G_mU7_X7`+AOATvZ`)g5 udE$@%6Fa*bZRzOr>d)of_J>c$&;M@z-tT_?`t<AN%lF5Rhk16iuZwqXDpYs? literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/Pan_NordEst_OFF.gif b/src/main/webapp/apps_extend/images/Pan_NordEst_OFF.gif new file mode 100644 index 0000000000000000000000000000000000000000..8b7011b736602619fc7113529a9b1c45f20f1c49 GIT binary patch literal 834 zcmchWF;1LO41@=XMOmt(kA#+*B4V12k|qs^DlIJ(uDJt65GTMQw?Imt-WSM8A}aIw z9RgRsWqUj`e*fjw#s2HfR$Kj-dZN0sJG$Mi$*Q`tE4tjJDQ0zMXLPz#(;L;19ns+q z&8VxL?P$9#kXqHsR<ztA0UKzr7^YjZXCkYj%2k@RWSNyw=}HX?ijfsj;R+2YdY$Dc zyDT^|TFO$CTw*J%0fRIwp+$|wU;_;n!x}-86OrjmjXu_rMPxWbBNrAF9cib9dPvcm zij-5x!w+aOjUDKR1PWmd7^GoID?C^XHqc;coSQN^;Rub9=wmIJ9TvVK7Zwyl4&ftC zV*tEp$7s}IC4NAYY3zU#f>8)-z#z>ewBW&Fuz}W`Xu2tr6XIeRi9XhnS@Sr?*LCkH zt`m;U>nhW`j2_pQcQd-|m?JEOgS1G`O%{&<UeG)Tu7r7LV%4Xg4?ILZ-Z^%!hX>L> soz33)C-mV&FWb-ikI#Sak2a^@ukUt0ejV@5e?NV>{qwka*&OQI8~6=XHvj+t literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/Pan_NordEst_ON.gif b/src/main/webapp/apps_extend/images/Pan_NordEst_ON.gif new file mode 100644 index 0000000000000000000000000000000000000000..aa796a74e0b836dd19b77ed7cc293b1588b0302e GIT binary patch literal 834 zcmchWF;1LO41{N;U0Bl5BSpJ)3Y2L;(9nQV(WXt~dXEq(NQrWSSjuJ6`#y-ue13<B zi(hNm9?y*5K7Dz-x&3yb3%yD`QQg@c-R{<8RbAN?UGCBpvpTagI^C)1jq1pb=x~Q- z)YZ;*wA~g+t!iZ}T5gem4K!E`)2-PvkyTOUD$QE5%*v>ArG^E?$cm_Ng@zQp&T^Dp z791HZWhqK7u@%;UK^m6OqQ+vdfd-3VjiAYi$aJPgA8W}XGMu523k!;lw9`U8r07jW z$|>aG2Q-<+4)j9;g|G$;(y*iz9xMhMXs|TSO_`i<gvLnpv6jpZ3ty273yL9!@DZmm z0A93XG-|ODKcLApcEAb2D1<d&kY*BE@L)06Kx<Ak-IU1*aWRZUA8X01c^u>Gy7v^< z3CHGjmFZnZkL%038C`bF5thP1TBPSDi^l*jXr2RC!aOvw>hk#)50M}LISy~z&8+-1 qpZQOm?>}m@zq&cS{QGgXJKldi9UgvuIDG#5=lb~l_inS@>h2x8cv8{; literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/Pan_NordOuest_OFF.gif b/src/main/webapp/apps_extend/images/Pan_NordOuest_OFF.gif new file mode 100644 index 0000000000000000000000000000000000000000..f110cf7f6388f8a5a3d1f02644d7132e0f09d515 GIT binary patch literal 837 zcmchWF;13Y5QN8s5dP3eVo4&u6$Mt)NU%n!I0F`2QE&x<iIkLVtT+RSJ=S{xPhzar zXWv7x)wkK**_qk*`*Lyq>GW!&js8kKQQg@c-R{<8RbAN?UGCBpvpTagI^C)1jq1pb z=x~Q-)YZ;*wA~g+t!iZ}T5gem4K!E`)2-PvkyTOUD$QE5%*v>ArG^E?$cm_Ng@zQp z&T^Dp791HZWhqK7u@%;UK^m6OqQ+vdfd-3VjiAYi$aJPgA8W}XGMu523k!;lw9`U8 zr07jW$|>aG2Q-<+4)j9;g|G$;(y*iz9xMhMXs|TSO_`i<gvLnpv6jpZ3ty273yL9! z@DZmm0A93XG-|ODKcLApcEAb2D1<d&kY*BE@L)06Kx<Ak-IU1*aWRZUA8X01c^u>G zy7v^<3CHGjmFZnZkL%038C`bF5thP1TBPSDi^l*jXr2RC!aOvw>frL8hseh($M)aO z8|jZuX7BtH+WVmA&EeO#KVR;4pSPcnZ??Z~_xI1QA0M86|9JQQ+xPpAM>_it8TVJ( literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/Pan_NordOuest_ON.gif b/src/main/webapp/apps_extend/images/Pan_NordOuest_ON.gif new file mode 100644 index 0000000000000000000000000000000000000000..c239cd777d5489dd33d4a71f3469e3c457326de0 GIT binary patch literal 837 zcmchWJx-iq41{MTL_kzXl#%$UQlxXUh}48soB;|~6ng~}q-;rvOOBG%zC=zDrE;Em z4-pri*0MdG8Nd7W+wJ!H;aJD|BaNeHY9?o5M$WpYYdWW6S}s;k)l^Q!l-!#=S(7;# zlk#ZvL`~#GObDb=k7|^o7?FStG*}GNE$?wucXmg&yq2u0E4!jgW<fElGdrVGCPi;l zM|MPq;K*pJTG@&gTVV|tq+tmyYAgmDXs{TT1vw|ODyn3CtR>5=j7nK9EGR}+M1@cf zDSAs;iW2hh1DZ@@2l^p_LRbR^X;{(<4;F(BG+458E|U|HDI1AC){;eJ2w#y43yP^o z;Ui9C0K90&Xw+gQen69H?0^%3Q3z|mAk8GS;K5?BftF9?Zp!3@xEMyFkF{hWKMwo4 z?(O0_p>1AQaqlwPt}pLAy6o@~mO>*f(!R;!Vc-SLbKpvthbC5?-tT#c{P@pt`S)Ps wm7o3bf8xW@l{QBo?{+UgzaMTczI@vK-ant5+&;a%zW@4hcK-OXy}HoNKiN!HA^-pY literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/Pan_Nord_OFF.gif b/src/main/webapp/apps_extend/images/Pan_Nord_OFF.gif new file mode 100644 index 0000000000000000000000000000000000000000..115a60efc557ce3400d3bbb9f8ce72f0ffc8c697 GIT binary patch literal 834 zcmchWFHW9e5X6TD5<b(Us)huRO+L|NOq;q2{u$1IS=}=r2v^tygR5*qg2(R#DskL^ zpqAf0hv=$zv%9l1v(I~ae)8@6)kYh=N<C5C*&W^P)?`&(*%e*x(iF2gvoku~sp*aC z$d2f6hi25(&UUoj7D%mXWh+{4k$?>}SPavx*)x$<QROPlTC&W_sC1=<1;xmUsBndb z6ur)JlwB4a87*ZgN-nV#)__48me8WcVz7Y*i(!qR$%)8xrbZuY$s#hGp^*y<ijK6? zLOrDDO-0Hn<lzT2nZ^$ELjr}c1`N`$q!k`41{-LwG|o+#oN$E3Nc6Fm%nl1*kqZlo zA&2l0r!fFtv|}`Cu@XO^$uxGr3Bf3YHDHit5?b(JG1x$BPBh(=$q8{Wj6@%6$*g%C z<LkQj6xRvI=5>|nT}F@V%exs}cFYl$!a-W3=O&BC0552s16RU4G_mT_<t-19kN+IU yZ@W9vKW%64{1e(g)WhcB?AOub^@qP-w!i<}KizyhzPNk&`uy|e^TXb*e!K%G6<5;$ literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/Pan_Nord_ON.gif b/src/main/webapp/apps_extend/images/Pan_Nord_ON.gif new file mode 100644 index 0000000000000000000000000000000000000000..6fbc172db61499e274122d99ad617f705b48d798 GIT binary patch literal 834 zcmchWFHYrg48-ScUIG}BRTvV2Lm)`TEWsi8vu4kLspbp_!WEieaLBy^zK2*GHz26; z>Gu#@@yl!4PG_dycYS;H>-=s{d-{}mqPnv?y4|hGs=Bf(y4<BHW_4y~bh=a18`Y5= z(cuowsH>grXuB<tTGh%{wA>;A8)&c?rdzXTBCDdxRhqSAnUzuLN(~E&krh$l3JocG zo#iOIEI2Y+%2JeEVk@ixgETCmMUBN^0}U3#8bOm2k?Bm0KGu>&WH>`37Zwy9X{UvH zNYR^$lvBvV4`?!t9q5My3SkWxq+v-bJXj1i&|qntn=(1!2#t~GV=b8-7QP}E78FAc z;Ui9C0K90&Xw+gQen69H?0^%3Q3z|mAk8GS;K5?Bf!3U8x+#+r;$j$yKGu?1^Ek%W zb?+&z6OPU6D$~1+9@m$5GrH`UBP@l3v`EiQ7LNg5&^!mOgn4LU)z3dqJVbu{=Q#e_ vZf51_eC9u~vwNh??%~b-zo&;E*C(g1e_!4n_m6)+f1JHvJ|1kgTU~qu>_%0> literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/Pan_OFF.gif b/src/main/webapp/apps_extend/images/Pan_OFF.gif new file mode 100644 index 0000000000000000000000000000000000000000..7ee53abecee1b0ec248bf16f5e7d83737d7b4dd6 GIT binary patch literal 995 zcmW+#YfO(}6hD=XTsE8e#|K0otZ6Pg)|f3bR?*^1>*BW6>R2k74>iKVM9Ik7cxoCG zW7ULFi?$-GICRxz{6|e{L*_nP+vE4V&$qL4&hK{KH)d<}y7j3(^3h)+>z-O`tQBk7 zT5^@DRby4GvQ=_Tqt+N}#2U7S+^nb-V@0g66>_VrmW^ex%$5mAmei85B$n6`3Sa{o zSXjn1IUe_ns;IImIa*Z4s1Y@+hMWpC#i)o1tB@0gSvJa|%*q6fSXDAgqQpvIg=&C7 zG*m(sdLRZipn-*Da)w-uC&sWb<otmam532GLe4H!pvhvG4HMi$6lM*HAvOei$OAI5 zjX2;RBH$3J0S3`fiBaePF|Yv*EON=YHflT;Ar~b4ffg0BFd<jig$gu<SO_^HX#@aW z7)Q`>iztx?WMUg}KobnZAyfklqOl2C&;ep#1Df24+%(##@dy_~knjguR7~#UaJhQ- zc1`buE@tm4Zq^IhrS4_tR=qgf5j=+u$rJ5v;^}a}9yC4&TnXX96R3K|#=1X#Oi4=% zibx1v9_`zl8yc4%wlO(!*U{+xr6~m!Co1c6ORjF)y)QBQa6-m`+Gm<mQ22b{T}92^ z*1rCPJ$qjG{morn^{uV98ynA*mmeuA>K`BP`}C=IZ0z;ONc-?`Lr2Hp#KharpFd1a zcKiKrMo01KFa0+y07fYS8t_N>h-S3Vy?_O=_189?3cMG-`)plR)Un@R)}-H_)6!P- z>rd*9<=>Y*Dhc7V$9Z3?+AsJPUV4|G6WW;-vT0>@aA9@a<#`#A)tL`&#TBfcf3h}a z$C8(oQCW{>@9Y_gIv!T`W2(4!BKFGKIX}vi%l0PRoIdO6lcb*Xf!gV(npV`z%^9kg z*%{bT^vXZjaPagk&FiX5ED7H?+AK-m+Om)TT-kr;;@$Vx&IPU7GIjsZ_RjP1Ri$6b WzRC3^4~rMaH!aHS9SRJj4gUdxG4qiC literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/Pan_ON.gif b/src/main/webapp/apps_extend/images/Pan_ON.gif new file mode 100644 index 0000000000000000000000000000000000000000..29b7e9a7ce00e054a97808c85fdaefecb161d19b GIT binary patch literal 987 zcmW+#OGuPa6h4MUWQ!IxR6<}a!YBw%MOKRnd`1YFL?VGBoe<O(nT$cJ3|&|aCFZRl z6Rac}RB#Xq!a||AN}?q;87ZkL%{0u2!@RnE_rJTtIp=$w|1T^qIGR`GA{WJojD6Y| zWsDfZ#*nSFHd+}iMzhgmn@Ss{j1r^RD6+GnjVL2xgpH70Wo=j)7Q<|qfMiG;QijA3 z8$tnWKm!ZQm?q0(pVC^iX06H6qEbpL(TcSqs{&0?T0{$LAu9^AtTc;e)=bcdRZU8h zXktxZg=&C7G*m(sdLRZipn-*DvW9GpCrYtWWc`5_m535nLe?%+pvj_`6%*V;6lN8P zB31-@$OAI5jX2;RBH$3J0S3`fiBaePF|Yv*EV9YjHflT;AsZz8ffg0BFd<jig$gu< zSO_^HX#@aW7)Q`>iztx?WMUg}KobnZAyfklqOl2C&;ep#1DfoK>@?b_@dy_~knjgu zR802cu(>+-woT`RHfHB4cGd~nrtV~CSDiTQ5gdmW$q{XD;^?rz4m3UoTnXX96R4tz z#A+gO(e2*RIJvF5FXvvm^u@o!S6}8gzpouk6+Q`;-5;y#nW^m@zH-ysc(?oQk7TER z{L^CU-SqNIFg>xb@O5@}bZl%jnT*8a;aKeN+S;FJG%!CuJ~j1bc(~v1{~ZebT3MM} zT8gDoYsustuNR+wPCPRMMrl7Z;E!+-Z5*ONO?FXV*Qs0U`g1E=4`iS4%xo{o>^j?h z+LPK@QCT$M_P0&@#saOc_k8fCeHpYR@+kkort*RI;%n}a+lOj=4a?`A6}N;N2EO+W z?9FdUpA1zVYwszo3n!|w@~-!kKQ9=}*G+@3CY!bveyUyhl6&MvRdq-3TiLD=Ph`qB z+k5coM^ALLBN#v5eaXMMYF}IIVg1j?S#z$%z=hp&9p1W%<};CS!O&`?e8cDZP)XnA J!1_!&{vQA-0~Y`Q literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/Pan_Ouest_OFF.gif b/src/main/webapp/apps_extend/images/Pan_Ouest_OFF.gif new file mode 100644 index 0000000000000000000000000000000000000000..6c09cd2a09d90fd0c3aef4ed900ecf04aa202712 GIT binary patch literal 837 zcmchWF-o3c5QHaSAb%k!q!zW16c)lXk@QL+;2E^o6L^6n&0pH?4eY%@AeMUpNtIKm z)%xsv2)Fu{-JPA8eZR}^7hlh>H`?e~>WS*k?&x;6CadbouIO@?rkK^4ozdw|O>b03 zc0`9eG^4I|wxjK~Kx$PhThVfh1Z<$eVwi5to{6lADpzUNl4Vv#r7JZoC`ML9g)20q z=yjH(?6Tm<Xemoka*3_51`N`$gcdaxgAFuT3~K~UPDG|NHTqaf7Lnl$ja*nzbfldY z>LEpMDpF1%4?m#EG<KjL5-5Z<V339-t?*zm*g%7∾`wgd;RYqK~y?c3Aj|Tv$*H zIfRcmjREkY9ivf;mG}Worm+J~2u2~S0fRJ?(1Hhx!3J7$qUokgPKb+PB>GrOX3gUm zU)Q~-xK21Wud7V&GJ0HJ-p%N;V~(&C4$>k$H(5LectP_VxDw`}iB<boTOJ}G?;J<3 zJ0GMcozC9*C-mu951Y^1-G6_6e%w9yaesIC_t(?G$?ePD|Ht3^M>qB5>`>p{05<bk AFaQ7m literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/Pan_Ouest_ON.gif b/src/main/webapp/apps_extend/images/Pan_Ouest_ON.gif new file mode 100644 index 0000000000000000000000000000000000000000..3b6e1ac2229833085aac0b34091476ef9220f82b GIT binary patch literal 837 zcmchWF;1LO41@<M5lay%D^Vjh1)`upng*1fC{m=HArwAAE)Zx^()tD*1Boqt2~Gj2 z%;$HAxcIe}?eWa`?YHkYSJ%Iebfj0QC#pNUqubq@tg0)!qRU;HVpeB%MyES9y-^+6 z5gqQ(jJn#{j<(wZsa36PMawM`uz?1PVY)SYCbBB3T%}n{mRT8<uGFxg7+Db&uF#O8 z*IACT%Yq}Lr7T6sCAPvEFi67^TGUt!Hqc-(tPwOh5t+`^=wmHeM20goa$!Nyk#<_B zhZMc3NI8W({D3CY*nxgXpb*x8K^m5{!h^+N0}YnOxhazqj?fs1KGu@iVc{!sVL>tE z5I*8G2EdDUj7BY1;s-RD#tt|k7=^F~4AM+O3mz;68)(gmrkgT3AufiI=wmIJHIHL_ zUH6{iI^o#7t}?yL=y82{H>1mrIl@vnNQ?B`Wbqi_1<iBdN|=WxR&9U&<stIpKgaIh yhl5#pF`xNQ9B#hoU~_zRyMOxg@zcqV$A{DBJDr^Ue*65gzu)d|>-_RmU*7@aa#p|q literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/Pan_SudEst_OFF.gif b/src/main/webapp/apps_extend/images/Pan_SudEst_OFF.gif new file mode 100644 index 0000000000000000000000000000000000000000..3e8d0ff0b209dda1ac23639a28bda83b7c9ed6db GIT binary patch literal 837 zcmchWF-o3c5QHa0h<_kOP7qCD^*1t2#72Vr!769aVtbDeND&0V(k(rLXRryl7f6>| zh}GuV_Ym3YTXuJLX7>HQUF^P`TyC_{i_{a<o!!yxZcSFzm0i*0E=@73GdrWxotoaL zj_imIcW6dk?QBQeZGqIPR<@$$775rugT*l2nmrR)6;-a%tR>5=j7nE(SWt|thzeI| zNYU#oN7-e;k<n6?qT~`=VGS6hVF@j2ECw5Buo%_|nw*GCXKM7ZmMkK}85+5;py)_D zE!0Db-c+QVLLPoVlWFWgKO|5HYrr54OIqQ<Vz7Y*OXJ*>$q7ejj6@%6$?UN36}hmW z7;*?7aT){QMLR~L7Ax@snoMH{oDhscSOW%WCZPon7K076=0wv?nVb+8!$|b8mdu*R zF}|*QPjQ`aY+hHH-evT-zPy{!Wyc(0DIBCldTz3K4Df>HIdCP+Lldh$e*eWo<l{fb z;p^TT>5sOvcm4_Of7avW^X~5N*^jp$j?V9IAHM$Fe0sm#zrK39d3U_q{ysj?=|3*P BSD*j@ literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/Pan_SudEst_ON.gif b/src/main/webapp/apps_extend/images/Pan_SudEst_ON.gif new file mode 100644 index 0000000000000000000000000000000000000000..24790e6c09687bb9209bb73c47a8c91d7581cb37 GIT binary patch literal 837 zcmchWF;1LO41@=P#4ZvACm=~dwGEmEM1xQSO2rvS;hq~1DFupB(7NO-X;SzQ+yYTK zpWh+k;@4WX$1~%%ci(O=E+4kq>RsxI>dx-ycDE+0>dLO@a+ju<)tQ~q=}t{=R7ZA1 zhdVT*u6DMg?Y2N_RV!Q3a*G6Ppuu98Zq1&FtcogEY1WcuRz{^OH7qDbRz!s>G^FTt zmZR*l;K*nxOHp!(t*{0R(y)XUH5P*nG*}F41WisvrZYAASW6a>;S7yjSWtANofhgL zMQ<unP9YCJpvg3LpdS(_gf(E0h9#}=U@_Q0gQan9%H)J2G)AJ2wPbc!_=;RuPz*VQ zk2sA1@S+`~QHz!M0Zpc{15OA=A*=y|G?UPR2aCZ5T63c5rc6$Vi(w@CSW9Nj;}~Dp zy{EWNI5w}VOz$#!TwmVJ=(1yuuoMo`B0V=*JO+3{^BlMm=AnsIC-=`hM1K6|`22CO xH!FAZng7J$=8Nur>-y#G`p5q9+1Jg}>&?&Y>CtZU`2EkX!}HtS-}6tp`UlgXRUrTX literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/Pan_SudOuest_OFF.gif b/src/main/webapp/apps_extend/images/Pan_SudOuest_OFF.gif new file mode 100644 index 0000000000000000000000000000000000000000..38b719a8984a39ff65038e0c77e5a9d2c0574f4b GIT binary patch literal 837 zcmchWJ5F9v41@<M68uU<109dlp@^mlq(wwjG;DyzHCaN6NR%mY2WyB#PmMPaiG3g{ z=kr-aTwTldcxHU=_sff~r#BmI^d|L0b!T^UyIYf0b!As{xl2>b>demQbf=~_sv|q1 z!yTGYS3BF$c3U8|s+Fy1xkUmt&|oo4w`R{oRz;PoG;7H+E2Gkt8Wt2IE26>`8dCH+ z%Tab&aAdTUr6{??R#*cDX;?yw8jHaO8Z3r2f+i;-)0rB5tR;)caE3-MEGRnCP7C#r zqBj*Or;vvq&}14r&<_a|!WuA0!;)5buo!Hh!O}Q4Wpct18Y9uiS~5E<d_^uSD25!u zN1Vn0c+rm0sKrYBfF{$}0Vf2b5Y~V}nn`HEgT-J2tvS(jQzj?G#V`_mtR=JNag49) z-cwvB9Gllwrgs@Vt}pLqblEXSSPBPek)E3@9s|6fc@A6&^U%bq-K#quA|L-bj^96Q yNq_Zu_Rc?{olp96^K$X~=;`P7$Ak0x+sEf$o5Qo~ogWY9cl%%VUhhwi^z9!p?N}xN literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/Pan_SudOuest_ON.gif b/src/main/webapp/apps_extend/images/Pan_SudOuest_ON.gif new file mode 100644 index 0000000000000000000000000000000000000000..befaa48e4ea1e9c63e2a265628b3b6d2814536fc GIT binary patch literal 837 zcmchWJx-iq41@;>iCt0AKo@>$8svsRlL8T?O2Y+cT*DD4khY*m8F$H1()$P$xkZ%9 zdFDMtTzp!~_IPIe?&mM}*B>9Z+Uk!qj-IKRoQWAZ>z=OZoQ`R^SUpu!ITcfKZ}wzO z=44FDqtO#JkrOc?kVZYKQI29n0yfZKF-*6-$5Gwc9o_O;vZ}7^iY}Q2#jMWkj82&p zy-^+65gmdfqpfOXD_U%YHDHj2CA6rq7;K=yVptaBoXD!ElJ&8cEVD8yWx24R7+Db& zLOrDDEoCW6$iok4GL0SRhXe{?4H%?hNh>^93^veU$<Db<PDG|`B>GrO7Lg%*MJ_BT zrXq!pIE?}Dq8+1Ai<S5RO{TE}P6$RJtO0{GlhA?(i@^q3K9RdAlM~`%7>PdCl7;*@ z?CZL>i|d58d0oZ5%V@j4yz}U?!$(*OjkHMnCX0uG7c|d-D`6g*SatMu$3x`De~$CN y`+Ht_>5u;t2b&A+z3J1p-@BKC!w+}gpML&&-Jae&Y@UDI?M|+a-#2Gxy8Q>~NLBFw literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/Pan_Sud_OFF.gif b/src/main/webapp/apps_extend/images/Pan_Sud_OFF.gif new file mode 100644 index 0000000000000000000000000000000000000000..d9f885d59632b059a9630f4bbc8066670d003482 GIT binary patch literal 834 zcmchWF;1LO41_1rD%q`~RER3to+{HMf(``~2?;nt8do_6MXuluZV<!?kSHj80ZtN8 zna}SKxcV*I<C*dM&wrhL|M7dLo&HNbQQg@c-R{<8RbAN?UGCBpvpTagI^C)1jq1pb z=x~Q-)YZ;*wA~g+t!iZ}T5gem4K!E`)2-PvkyTOUD$QE5%*v>ArG^E?$cm_Ng@zQp z&T^Dp791HZWhqK7u@%;UK^m6OqQ+vdfd-3VjiAYi$aJPgA8W}XGMu523k!;lw9`U8 zr07jW$|>aG2Q-<+4)j9;g|G$;(y*iz9xMhMXs|TSO_`i<gvLnpv6jpZ3ty273yL9! z@DZmm0A93XG-|ODKcLApcEAb2D1<d&kY*BE@L)06Kx<Ak-IU1*aWRZUA8X01c^u>G zy7v^<3CHGjmFZnZkL%038C`bF5thP1TBPSDi^l*jXr2RC!aOvw>dWO{9wHy_9Q)VJ u2kAvevv>XpZNKVa_jGo3`}k*be|Yiy@9y;G^QUho+w1+$n*)E`==cpLSXJ@> literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/Pan_Sud_ON.gif b/src/main/webapp/apps_extend/images/Pan_Sud_ON.gif new file mode 100644 index 0000000000000000000000000000000000000000..87342907963635551a3dfd0fe66ca1cb57bfb2c2 GIT binary patch literal 834 zcmchWF;1LO41{N;RamMh6%>)s_Eby*f@T#FgoH$L1R9@Y3$EZU+<;?H_&!l8=kq%R zE`F_Ldpt9K`|$Yl`sU?Sr}``PM0IC(bh}%VRdr=obh%4Y%<9a}=ya#1H>x8$qQf1U zQCB<L(RN!PwW^h^Xt_lKHqc-(Ot)swL{>$Wt2ArLGApCfl^PZlBP*i96&h0XI?GXZ zS#V^ul%*)S#8y}X25DGAiyDi;1{y4eHG(E5BGZ`~eXJ#m$Z&>6E-WZI(oPHYkfJvg zDW{N!AJAkPJJ1ga6v7%XNW+p=c(533puy5OH)V3d5gH@W$67KwEPO>SEGUK?!bhCO z0C>@k(Wu2r{D3CY*a0U5qY&1BL7GWu!GpzM1FbpHbW<iL#KkZYeXJ$3=5dU#>)umb zCmfsCRi<|tJ+3eBW^~yxM_396X_20rEFJ^Apm`2l3G>jzs&CJ)JVbtca_s+YH?#6` pKJ%YA*<EO}`+oTK=b-Jw`P0Yy+mGYdldHSk@BRJp%wM*;{SULIQfUAH literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/ZoomIn_OFF.gif b/src/main/webapp/apps_extend/images/ZoomIn_OFF.gif new file mode 100644 index 0000000000000000000000000000000000000000..64e76cc443f7fa398a88522ebfd58445760d423f GIT binary patch literal 1150 zcmW+#e@xV67=LIqo2%S%Vd;dKl}n^m&pJc9T7MY2<*YW{ArqBrPc>rfkh+4+8Z3=r zG<QvXhrddf{ll-JHxanoTIyDBh{Ob<xJ2$ajva}52ZZ|idB5*}&z|S`{Cd9Mf=zF~ zmcKiTvS^0L*r$zA#)vU&4B1L+qm|KOG#gE}skBkbC^3qSB0DSEh%zEZ*a+EG)`pc~ zG0cVuNQSf_Wk?LMAr!y{G_bIYX|g=_DXm3o)|xCWDy6g%tyn9vD$o?AMYOOMvZ64{ zO0#HY%><2D)uc3uCe{R2s0J8BLnUOP2V!6Y8dz8+Ysl7kq7*Ad)*on5i6~(uWbHx) znk<T0F~L1VVOEhSVnwirJRlR>hy(s10uG@XU=R(J7=;cH0~^r5BAc9TqsC(qvO&Th zXi+f>6LN)Js6bPQg^(kXMgY)-aRd#wh!S}~Cbkg=G{G<&LN&l38k>*>9Uulapvj)d zPNR()k8m*r34fqP#biGYo2zqg+jLH7V|K1$XPuyJ>P~ic)rrF%!EtDj9MSeBjt&d# zK;v`3l@K00f$C~B+B-H@SW=Ri`~GvAE1z_G-}&rNaqWqBKdyey`-$&(%bwbA8k^hy z9E~=Gf2r4fb%&4qIye-aojdjK=x@`vYDOYQ#-gngiEwgiAeGwU@oe{c`(m-*BayD2 zp8oOizG&35Yu8{rKAcEIlF6I%^LOvx$EUwyE;9p0X$>^skH{i=#86wtQyW`PzE%5B z+x5;f<vHQ~cheJ{1&bOl)(@V|@WgwwJIY5wb-cFinM(&~Dw$i*(BEG6(h1+<!wuP? zz|z$8%FAW34*z8A^Xhco@a6+cXVhf=`0~!uM1S|P)y>7O)0D2Oetv34*WQ8uH@IgW zJ=#&_nfYS)TEmVvzZ{^S>ld^Xt*w}7P2313|2Y@_s-=4}_}DRb_vv6$?UMgq=<-ip z^G)vSIlAfl*^qnvf|lE_`jdYh%-i~OsjK2j*Qdq)ygMD`!<PzQ-hZz6!Ve=oO^feU zy^_Bt{bK3avd8~+DfiANV$vMj@a<4yC^xh)7TkKh*B2;kFLA}Mx_>NMR*=1XUB$Lw zAkolQ61*AP+t`>BE*h$Gjc1&neWPk!HT`ruCqM1;Uh&UQ4@7EG8$Wz__l?28mYRj3 oGbbzKAFNvO^{Qicj#u9LBXH35?4gfF>*mH*e)oDRGn3Xo084dPIRF3v literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/ZoomIn_ON.gif b/src/main/webapp/apps_extend/images/ZoomIn_ON.gif new file mode 100644 index 0000000000000000000000000000000000000000..26ab9abaef716660deecb4a5114873de298ed733 GIT binary patch literal 1156 zcmW+#Z%ox?6h4p}%`MSkwC0CqIIo3lwbQuXZn~)n$tu3IHE}^uomB`b2zmY2n!^?w zlEW?E6x6nycj_I?Nr@NM3S!hdWnn;F5adE=_=f<6%e|Mk=lz{;XXl*fJkN99H+yT= zI!|FLrP3^sv7wDo#)vU&4B1R;qm|KOG#gE}sI*baC^3qSBHJt4h%zEZ*a+EC)`pc~ zG0cVuNQSf_Wk?LMAtb;CG_Wv?ZnAr9D6K_n)|%{EWJ+lzTCrASS)eFNi)djjWJ#fy zm1fb*nh6{+s!3@QO{@u9!5Uy74VIvV8WsZ^(7?hlSwS{Oh*GQ+S$$ZGOhgGQAuAUw zP-IceiV5mL3cZR%5i5c`_yL-jh8@rk5>N=%00U{TL@Rh;F|Yv*EV9noGI9iqkTnwe zuofA!Fu_;I1q&2~SO`ACX&3-rXot~I3oGFVXkr?6fD;5mAy@+pq%jFv;DN=!1~l0d z*>04PBM29Rk<f>=$e8Tou)aF?wngWJ)@J7_w%0M*y6$*qM;$xt5gdgU$suiT;_$G* z4m6$vt_1U-39F{(=cgi(ZAC?{+Jy|?Zz~TCul{Q4c?o2lS=fAR<n4nOH`VqOHqQH6 z=62Vdt2*1#8IJk;Vy*3+r+V%*T@Bvo|9g05_Uw88@jnMAW*!B`?|%MQ=<AX2uao~x zMx&u{_)#=EHZd_9i^Udf#N+X3G>WIcGO{QELTN2H;76nqJ!$CSCoA4)JhSm|V$%!l zU*?|Pd}MBU&hZl^r<<$hyT4D*4xCEav&@yVXxFlW;GW^;ig0hq3YY7_>o2bAS~~Wl zXL9t?;q21w9@YQxcTc!W8-n}#20AYEmA|*)*emrrPNv<cZ!La2aJBA-jNEH`Q?~w_ z*7sEY`u)*BLU&$min}5=`_o^N0w;sTd#Cg3#vc#1HkNn!ym`s~*L*W`Wtab0@=|kI zsQ2ltoZ4H#icouN@!Dq!T1rM257oPq^F2Gq`>*`I+MVClGuqpgUh-|7yCVHTQ-eQa zdt0S1uPpJKvX9)m?vG4ePkq?%YWYap!L%)lyRYpI{nYW!iJA{H|B2k(R`~4Bu|aR; zy`R6hb+l$^%Z{OG&%2$a9o3cTH~p@p%scz51A}SrZ<x9}{?@ukd${4vp@cQhc?S-Z wUtb@OB`yC<UztAYITZQecGcv|?gDRo;BqppId{IOIzAK5%}i`gSxVmj0q&Yxc>n+a literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/ZoomOut_OFF.gif b/src/main/webapp/apps_extend/images/ZoomOut_OFF.gif new file mode 100644 index 0000000000000000000000000000000000000000..4cd99c7348f5397d8edc6c2c23cbc338cb95bf72 GIT binary patch literal 1147 zcmW+#ZA{f=6hF6`Yqn-<ixJE=lfG1Q(pl3By{^q`ZZ{G)yMZl*`8XRActIfAT2a%5 z_#vkD7^607wK51{7{QHbX{`=wK!kC**8%s1i<kKVU5txQzvusaJ3Ht6-p>E;d2!2T z_nr*OpcIj@PmIyVC}Y?dvXzJtZA2MiBV?OejMhdgquFS(vr3H8Mk%A%D6*?8hP7d3 zm<<z<42dCaNEu>7D1Z%UU||{4WO?k<B1(is$kL+HTC@_)qRFa2Q)y936pJD&3bU+* zl`snvG-6dq3n?KM0xMJl45FbDvd{xDumKG$ER!{4YdobjYfaW4Xi+Jp6>CM-E>xh& zN;7LFxQ8grYEqh56YL=m$iz0{fPaX9L#PHAL_;M;p##Lg1~jn9CTH8I@mMLcLBbzs zQ86nf<O;h`fu<r>gdCAH0)Q@zBWSoql*j`zv5h#O35MYissRSk*n}+T05PxuP4+}~ z8g0~ggo`0a_ya8}Ci`*NT%CK{rgK6YvvU<Y>jZ66ce1mqP8{|Kjzf#&h_*LzbXZ^q z8lMBMgz(@ARDVVymu6;OEh%y3mfZPh;RE@v=Xk3Msz2J*@afC@>$jJdRkn7V`u5Do zROFk$K%)%*GJg378JbQlwOyI|{rZjfLgC}nGaa*uf#m$?!a{-1S5#U$9F6`F4v)rS z!;y$@_wMm{d?JwuCzIEfmv61Cq;KEGr@!vjT`m}<$Dsj#L<Z5_hB{rDTfh74`Gz|> zC%aA-gnvA|yb$T~toh_z<9N5r7vH$nT@n7Ni8pmVeEuk1oqf!6Y?RA4o~_G1d@K}b z&bpagA3G53t(l9yUB7C>g!gFH;umx7*xJ6@#8P0n=fJK&*;ZFPJ5?6!t4;rReaDyc z!JdlQ#NMG)Q*r*Gbo$<$dpe3Y9gL5?HSzEKsqnzxp}J}H$YfDraBQ&g*UV6U&D_<Z z+<o`&byr-xFgTI^{<S{;#eVOF51WErZ?-)B&Z?RdExo4~FKu5rR6ZH=U+JHG@?`s& z^W)K<E1NI-v(J`4G4facSGmQ3s=-&P8+y0391n!v*ePQ{cizFB?d1EX^xW#Dz~|j< z-5(G2di>X>n_qb8>(-$<+R&3~ZGSee>LG8;n-`4K6xOfaGZOOOtZeh-EoIgYzq|O< lz7MMJ+qQY#mZU45_5OqV*H0bEIdNpoGdF(QQScn){|{PcTR;E+ literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/ZoomOut_ON.gif b/src/main/webapp/apps_extend/images/ZoomOut_ON.gif new file mode 100644 index 0000000000000000000000000000000000000000..bcb8c9a6db2c0f1340c9202d0d7c0a28b76d81b1 GIT binary patch literal 1152 zcmW+#Sxl5y6h0~s?SosX<AYkG7zygcn474`VwFb3q^7osZ3PlB@kCPx5k~8%wGWjx z#>i+SX>U7%#H1;y3NA2gtwBtT&2@Mf6&M+62bm}slua0Bx&7{c-%ids-*)~#H*ed< z^dcMCXp%^qr?i$@v(`duGL=$VNv&8bp%s~?R9Z?cSxccMnORnvrDoPFG?Q5sN(-q4 zYaz5CAZb#Xq$buRG@$@Cpn-*DOq1a;Pb$Sq38l!;qLNZcR#GTQMg^KI6|-WYn2adQ z3aJDuA(S9!#Hu2xh!qJ%V1;UcK{QlC7J48CHlTrpWip0LjmJ_7DarT)Eh=WoLNXb< zP=TgkDTEXR_Yj3yNi0c7f<5E`nb<}g@DCAi2-N_CXsE;}bbuJxfCd(s<V+hio?s>u zB>aIEl@Kflxxy|~pvfedkRy^t0MLbT1P!-{5_v!-wh;$3!7v;`HNYSmn~((^AO<#| z$(+bcqm3Gma4`f4f1pJr$b1|oSL@!UX`Rr-Y+c37T0xuCt?bOI6^A*3<<KBmqRmY# z9R}Ef#^-=5Av|~j)!6j(Xe9FWzJ00ggx&SeveVC3o*iAzH@00#<XjBx{O;OTx4)=< z+SM|3<oxgDH7&JWvA^y=@c3WeY;No94%{6Y2~AAZ{89UQY`pSG&^I#iXZYp!J<l$L z`rk&Qf&Tu9Xmm0b8yFmn#N)AeJdsF5qfvbN%OXiLV3gKC1O5mb(R-TS99*=${>qjg zX5LJ@|I^y)oFAt?+)??<_3Fm*$cviQxi>tQj?GWqkyJAOw=C!L#-sgD9g9*^hd)`h z;^Dl3ru32UqjR~%`RTIzK;x_p6@8hm(cb27y1rP_b|^V7Tz1Rh+jTPfI_<L8J~!j| zu7>|oy6jb%hvGz^1uBxg&gpxhSzV64hSuYC4Fm6ns|rf{!VNjA>Vj=2#(MV@Ewtq~ zI|c)J*#+*Z7DuRW-A8G*;QG??x&EsQ>pb4Fq3$i0YiCzw`(HeMlv4QXC9iY!@bx)? zJxg0N?d|V>`S63qtxcZW?X5riJWYrH-F|WAcyaIgl64C>MSj}+w{!Qs{6g1caj>PN z`u0_OPvO!r=g{tJd%eq-oG9JvIyZj0?r!$vJ6Cc=_S>&k_=~&meA~IH_f(lLD^{6Q sc`Vr8;mZh*54g`Hf8JEE=~aD4XV$^m{h_lfM?2h`dtwiEeoPtv1AatYc>n+a literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/add.png b/src/main/webapp/apps_extend/images/add.png new file mode 100644 index 0000000000000000000000000000000000000000..6332fefea4be19eeadf211b0b202b272e8564898 GIT binary patch literal 733 zcmV<30wVp1P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004XF*Lt006JZ zHwB960000PbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU!Z%IT!R5;6} zlj}>9VHk(~TedF+gQSL8D5xnVSSWAVY>J9b+m>@{iq7_KE}go~11+5s4;8hc+i0Xa zI1j@EX5!S+Me6HNqKzU5YQwL;-W5$p%ZMKMeR<%zp69-~?<4?8|C8S?bklXr4v&Ov zb&06v2|-x?qB`90yn>Qi%Sh2^G4n)$ZdyvTPf9}1)_buUT7>`e2G&2VU@~Bb(o+Mz zi4)>IxlSY${Dj4k={-9RzU^W5g9|2V5RZ2Zu<x6&^l=W_1sO_5@*~{AJR(k@osu$W zIOyKBVDIZThPU;2xYmJgUn>lL9s2xQbZ@r6eP9Ra5u(s|C0Nj#&4>wTSkb?%#=9?@ z^oxDy-O@tyN{L@by(WWvQ3%CyEu8x{+#Jb4-h&K9Owi)2p<DqQ{Z%tMS5;_RkwZ2s ziU|ZZE*fUaAe}14z#AR(OU=04okqn3igEs-_q_}KZ*?@>gg+heWDyked|3R$$kL@A z#sp1v-r+=G4B8D6DqsDH0@7OztA7aT9qc1Py{()w`m``?Y0&gi2=ROcc-9+nU^I6< zT=e_Y=<?pf1$FXK3F5I5#ceAAN5BHvd?h5_(jPS+7l@o3)VYh{*frx)Pb%2=Sw~G2 znu{1!PYZ*jM}To^G}f>vSnG@?3Ue{BW5ONFttcE!R-R_W4O01|0-|K-YNXLo2`4Qv z`r1LxR6#yf3FB%T95gJnaKKivA~Z}S9A(ZxE<qS_Liq!k=vg3Per<qx!vKx95m{X+ zQ8;uQPPk0h^qI`uo^&$1^CFd@NeQR5pADaHJwu&SvB+fQDdu0d@n7>DK}O3T04USJ P00000NkvXXu0mjf^IS-S literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/ancre_bas.gif b/src/main/webapp/apps_extend/images/ancre_bas.gif new file mode 100644 index 0000000000000000000000000000000000000000..a7c912b6040f385ff8254749c8eda88ab185074e GIT binary patch literal 850 zcmZuwO=uHg5PiGaCaq{;SxH2}R15YX)ryA|4@OOEtRNKy3oX>2+K_^D(Li%pXdqGp zdZ=3u)q^NRD0(pHB`2v=C4~wp^sp2W6%T?U0fn?`iEnmS%)x=#ncaCa@0<B%j~(we z4xHDq0ab|9s?{2w^YgVjxri&cgh33^jv|Q^I*_0pc2oZUSXj{*(6KLITW$2>8+G@6 z`sQZj84D`F=bswF-)>n3F+wNU$Bnl2h3Zv}!kCDo)L>h=!4Qh88cxwq2XtJfE%4hU z^~bv~B8q};FA2q8!VPSqPCZ*3lUPR8(bZ&IC#hxP+n^#w{&U1k9=5GM))o=2p*r6o zb}w<l>-fCF_nzvB^abynZ@q7=d_M#Q4Ya@6>r77wpIB3RHCab`mGfWNVp~(x%<Qyf z(n>!DbEG~hYvT)&qXO;zoYKTdu3%-hDsBB)Oy-wn6$Dr#<@b>CbL)BgD;YPRFeK>b zoy9RA$`ez_>ss;YNS`IYFPT>t_n=VI@cmBKGMOvqks1SMkGfc?CHEbnK52US=HbX| z<zu<O_c?8`C7*pn%MeaeXO_eGJ4M-x(PXM4ksRh-GFZX5^yqMYE9BkJJC*rWxEsPL zJJNF3>mx{9gud5@RR1Tj<rtP&`|F7i9NIMZN%Dp7o*%nfjzQjASJ#ty9d=8){1egO z9t48h;)VM!vZ~f>^z}ZNyWY6H=UUF(F?S=pYvfGa-1#cEwX^wl`_m6cCb(w@{{SL{ B39bMD literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/ancre_droit.gif b/src/main/webapp/apps_extend/images/ancre_droit.gif new file mode 100644 index 0000000000000000000000000000000000000000..72619fabf7d9f33c3a1a28fb200736026a6d74ce GIT binary patch literal 862 zcmZuwO=uHQ5dJn=vq4QTt|W?Jf;}imt0EHV!Bn?3DoBf<g$lJ=8zM-92Aab{gMkvH zVBK7*2k{W0=)sDYoTUCBsZ>a%houye(1V~zKq0L^#BZ`I=HS5W%zN|Ad~fExJ#n%- za%6BLG}Itcuhr`O&dt@E<T9?~3I;GlJAwpKXhWQKxRLVz&-|*N0SyP;rqN0-wpnYe zrzW<cz?iB4pMLle{CdZT5F>PgeZ0XmK2z<gQAEaLD7BbIZXkf-njgLN({2sdXlJ-L zN&WsIh>)V7+fG99r*H#aYW~^6sKhcZ4P747I72NH-wGFW@?RuovePvBSX)H6hMIhf z*!{!_ujTLx-$$w~(iiM=F57!yu8%@N3+*rVI(;gD71oqqldL1X%K0yCH;p_sGdpD@ zX{DbCbEH11zsKe!#|7+h=9DHzas?~1b<sATCCU8KtO7S{q?{g7PHr=Ae>Ky{Ck%1= z1#4jxi1Ne~@;0pabfnLc)0fPvi|=5j?#H*gStH3@Igix1aQ=7$E4AdlL)0gp*Y6%) zeWO&${XNfVi@rkk5iLVFOPyW{;_npYU5q4BZSlk~?~=hP#-vA!^IIkFA>OIXugbR} zobpC|_v}7Y;zIQ8KBW3T(U){Avi6tL0a&zYz9-2SzWYw>Mp=if!)xowybk*$UH*xv z+5xw^GuHDUlU03Qy)PMlHSXE9Lo1gDU*6o(?#-!BE5~kc-Ft2&cVPF6319E6<=Fem N+kAWH;Y}(!{s6PN4>14$ literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/bandeau.png b/src/main/webapp/apps_extend/images/bandeau.png new file mode 100644 index 0000000000000000000000000000000000000000..1b277ea65c2b911ec582757a0602c24e53bfbc2b GIT binary patch literal 253 zcmeAS@N?(olHy`uVBq!ia0vp^Aa(!;8<12`f1(4VSkfJR9T^xl_H+M9WCij$3p^r= z85p>QL70(Y)*K0-AbW|YuPggCW-&n-k=q*SX+WVKPZ!6Kid$EwUF1D#z`?xnq+9H_ z+}rCOc(uQHZSLh{8NX;(T{-Lh%-x5aQd|AFKd+7cAQ`_VW6y>UX><JA=6%hS>Z)<Q zxIdl2_<iCrb7iZTym`k>xU^=?v%fH}&|Xd^hTme2zoH!Lo&Lg@&(VnvOIZEYo?YzT vBp<-_FGS$n;zBub-;F=({?r-oI4iep1uJJ-!Tn7@cQJUn`njxgN@xNA@^4s` literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/bandeaux/bandeau_bleu.png b/src/main/webapp/apps_extend/images/bandeaux/bandeau_bleu.png new file mode 100644 index 0000000000000000000000000000000000000000..0ee7a21f68e0fd9129311a854c327d61446cb209 GIT binary patch literal 211 zcmeAS@N?(olHy`uVBq!ia0vp^Aa(!;8<12`f1(4V7>k44ofy`glX(f`uqAoByD<C* z!3BGlPX>x`7I;J!Gca%qgD@k*tT_@uLG}_)Usv{9%#vKz+?&l^ynsTIC9V-A&iT2y zsd*&~&PAz-C8;S2<(VZJ3hti10pX2&;y^`uo-U3d9>?FFGGt^>;9xLVQg6*Q;~-N& s<LT_(<*)Yjwf3k6inxN&QTsxMH8WXUu3mii7^suM)78&qol`;+0M(W{?EnA( literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/bandeaux/bandeau_gris.png b/src/main/webapp/apps_extend/images/bandeaux/bandeau_gris.png new file mode 100644 index 0000000000000000000000000000000000000000..193d973507e5993d51a8e45159dd5896a3a5a255 GIT binary patch literal 801 zcmV++1K#|JP)<h;3K|Lk000e1NJLTq000UA002-31^@s6ASdK300001b5ch_0Itp) z=>Px#24YJ`L;%?U*#Ox9@xqt@000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iOb< z3L*k_)>GC100N;&L_t(Y$BkCewks<LOMw6X<=h7WQK#qbKD3=#Dj1Rg0SJHigc*CO z0D$X11&9P82t=6qv6FMdh!yVs5on!KCxcoG1!M@IgNYCYVx<;tb_a!sy+!MNnERd1 z+D1TUj+TM@!nuv(Kh}u=LFs^lQ01@|hQ-*wZwu%MALjOeLoBdo=HccL_nrG!0%<qk z8r9$md8CuKR>OSblGQ03zdkp%3Ajcm9yPBEM3`sgSAJqqO#5UpbIjUyZpBFu(n9vF zbw2EONs5P$5@39#;O+-Y2xXpZY*%PA@B<t5t=5Yt^ux`3F&2($G^m?RVOF;mNVa}9 ze@ioNOF&K7R!*)VsGoBEsC8-P(2A~-H;!Y?DEqdSvXq_UOP+fEnd2?+@S<5!>^e>m zAj=akJ}&ks@5Q2-VK~hLPFleqa=bMIaM6uBKh9fk&D6r}l4yGd!ort9{VZQefd<$g za`f=WyLn1_lR|ks>$RF_Agg`2Z)sG?(#>Y=R|)@uqno`BmX92C3yaurXb@s-COG@d ziDQ#DjrC`(g%jRzvo>~q=_Q}T!f`S7AcYdUi0TS@tq)~ZOb`E1=eO-G&^XXh7HCfg zVQv?WJO$R?WAU<&bCaf}{H50J!y4aNqT;kQ4=c>xf_<SW*LyVJsP%XI7?QAalJe21 zX2^mpJ6FU4yu-9dYPY@>+D2~dhP1P&xhFNFslpF0?H0!y$IEha;kv=1n$FRvYHemu zui)te|L@_Gr;TITTpg#&VveTC{>C{j@u1l=BMj;AZo~Eu9J|(Q`s60#(Iaw_(lIUX zd1B4FISkv+k$RG|r@cqn*Q>tu&hJE~+$P+j{bf$0M@u2!(e>2M0r<{Qno2xJ?DR*B f`Gh!KdY$+mX?<7ag;9qR00000NkvXXu0mjf2d8*) literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/bandeaux/bandeau_marron.png b/src/main/webapp/apps_extend/images/bandeaux/bandeau_marron.png new file mode 100644 index 0000000000000000000000000000000000000000..fa45e4d7412d970b9bdd1ed0740f728b3f55550f GIT binary patch literal 908 zcmV;719SX|P)<h;3K|Lk000e1NJLTq000UA002-31^@s6ASdK300001b5ch_0Itp) z=>Px#24YJ`L;$z|s{oI2-qe}^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iOb< z3LzR!mzYBU00Rt3L_t(Y$BkCWksCn_132w?oP+bv3H#uM9?4a!hpy>^1Obrz_xF$R zi`NMf0_&#$us$*0N#Kw%%K+vxu(sqv0XTdD6d?K;09B_mmme|!3Q?y3K)^TVh7+~0 zPwUm3qjSe$uwvQ&JEaa@bE4;=K27sy#u#DXsBR)e%bUW9;AX3gH&Lkc1c-ArAqYW_ zq0S3{VqdMQ&P3nI)(&L}JJl)}GCvK9fN&U3Zi>uwV9~}7Fmc>UXMB2>9>9r+4&$o# zGNnpLW@Qq?<x78q0w8cAo=hY(*-C-E2DOlcnDNckTm(9Vx!MDV@@V#F*82Gn!muL( zQpTILmP5h9lMq=IQfa2K8>(eRn)RgP=-Pa9Gvyk~YyqTh(bmJmV2Wwvu`;8*ornjL z5PrWJ+bYiBxRRR~N3xn^c%>qw6k4y%xUm$~8;3?o5-2HiSnza=0t;78G7?P+=3gxf z$8@FOR!2Dm?LEz@E~VP0+}m*C38<5}ib=S<h7=~&|5<a)4e}5zX0=H*{B(2FQim=D z86mXDCW*;!e7tORN|`35^gwF$4V7`RHA8NEwA1*4C*rv&HV@YfhmTWGnUTra^X8*B zCEi5NhIDf$8Lp~3dtt*f)#=0<*W7TG5RnjV+h|iWz}?AIEreH$(I;qqXMN9g9aVp3 zSDTV*2(Gb|Qr-oCUCZ0e+L~Ey&77ImH09RC?l;TP%(@a#L9yMv;K<5!+Zv3Eb~Lp% zA4fFRxd=q@krcqN2>{Uru9LZ8v^8sc*G0>WJ2&sBAns&h15j(eXr?t&@}s*ZdxA!% z8eU`}NFW1;d}c|M7h*jj<5o+-P9VR;$aae0^pvZqTg^}K8IgmpnUgDvyt?jFL)55N zPn;6k0Uv|N3?Du14bIX`1k-uMwiF95Z19+hwMijqRTG-o9%c?&18{E?Za;EMp?Rmc zr4+qsj*@8oNaJM7M<eLC#q>mc>oXs!o^Dq&g)XDl+f=hMG;q0ga(Qd<u_u#h=!o&} inav{B5B<rzC;kAG<WppSdJQ)K0000<MNUMnLSTZTQJ81| literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/bandeaux/bandeau_orange.png b/src/main/webapp/apps_extend/images/bandeaux/bandeau_orange.png new file mode 100644 index 0000000000000000000000000000000000000000..f8e312e0920c0fa7c53f0fb0bd1653e94f0bb0de GIT binary patch literal 887 zcmV--1Bm>IP)<h;3K|Lk000e1NJLTq000UA002-31^@s6ASdK300001b5ch_0Itp) z=>Px#24YJ`L;(K)%m9#Eoq&@7000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iOb< z3LpwfJGo{600Q?(L_t(Y$BkA?mLo|Blc+d#-?mSpS@08Cy%=x&oQVU3kOKbw1L1#s z9tc1Lm=7pG5I_P#J{RzSA29M+zt|W-AV}abDvHWOD+4<N^DmDi1R|KFij|99UF3;k z0K}wVy%aN;AOzqAI&f<QfvA86_`s-I5<FBe*kJPI0|_w`a0+YqLYB@#U3EbMqWTJe ztXjbY!%nh20kmlW;IV7mel&#hHDIu8P2+tCrr|7hV1PW!1EWr$y;Op`Cx$hI=NneW zHry+RenC56Fbs0Cd;(>tdkS&d_DEXF#>7vh1x6%TOb~zqpgJrWdx{@W`QxMuRdBZK zu|;CcjNs~I@YBc9NCkN>cOGT*6_t+DC=BCTrs@1$sq=@19}aSa0L7lDLOr7<fI&zq zt|KKtGIfQk46vO7F%O4!Q-uoLOVxA6i8G320Lpid5zv?y&7_JM3L@};0E3kqMxu6h zGIh)t(?|MDBk>U2>2?`5jaAkof38*|ZA9F9AsgJoSQ%8)rzkKv0CFoYk8BO8C;V$F zEVh~eCWRBAF*1<*H}S~z%0Xr+gnsLK#a~lZLs0X$(=BIY2<V}37y~_96P4q5kBp$N z10APm73+F#tMKO^hI~WGk}J*Jul-@@wV{wr(em7!m4{;mUx*TXtoMuonEHHXS#9_S zGu|T2<y5-%@@w3*Op$JTcC%({xd$eNKV@}*f^)jC5@vHfdUh*0n5sRqa6n^LUP_r% zdbs+yHqyTG%Di41D0R6#PQ{*{k(*g`GwD)Ti{o&vG+GA}<6N|1J%q{3p2v4ScTV3k zQoBSWHD*TF2ry*BusUxO;FwfBkkdD=le^GUTZ%3KUq}exMWJ?`j^%MZs8D;LQue$S z^D-cJu)W~+%Hz4Y00g=O-!3o?H~01L{fysrhG*aT26Vep3R6+s9o+tEZuT)0+r?K3 z#>7=hO+9-9u=h0d`#5@ay=K_r_s1{#8g_y5yJiAUzOYl{;b*-8@E_N|OSu!0IrIPk N002ovPDHLkV1j9Qe-Z!y literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/bandeaux/bandeau_rouge.png b/src/main/webapp/apps_extend/images/bandeaux/bandeau_rouge.png new file mode 100644 index 0000000000000000000000000000000000000000..d9206f848d002a4b51f8241f490799b1e2080cab GIT binary patch literal 882 zcmV-&1C9KNP)<h;3K|Lk000e1NJLTq000UA002-31^@s6ASdK300001b5ch_0Itp) z=>Px#24YJ`L;(K)r~s%uL0j<v000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iOb< z3LhlSGoF<I00Qz!L_t(Y$BkB7V&otUlLYra&R$RZ;Rhy3x68+LnsES2vTXh#Z2$yd z#3J5nLxM6$BN*c)1K898U=Rdo$Q4}s8YHnPj)wx7F99&(QUtIi^#SgKB2YZfHr4`N zKO5k<sTI#4Y*K*gxS9XR-NwcuXx+Hj0C^w~u%&f=n9Byl8%F@3`=eo*$8Son6Y&w6 z@Bj|HFZyO$o6-q-?3Q_)I}!j@StfzJud^k=j6>)=kc1ugDDH!qIxNqN-3~*|bqSJi ze&>Lz??}+>6j@?&@gC1($HDYZE3@Wdr?)Lhv6xx-pA~@rP*8X>L%bQu%LEbxHkXc| znUwi(4={=gRA`g{o!QeUMoW2{rN<<L0BFGsN~xeTxz5`pzc3&WRy-%1I5LsUvuIvO zkjB<pQRpTl!w~3jhw*N3EejCdcxHY1$qc{XHX-_C{ZV+=26y0ZTz{`ycpFQn?tQx& zvwmP>i#j!#KSx0^Au?>nj&SRw;ZTa!2p4XX3Kz`UX^}ZRQosg@w&zg=xmR0t0AAYD z`HR#?IYtP#kaioz%Y36Ngr3673#%y%e^lW=ZSUvB><YgHGFnLX869;`ey=W~q_9ns z!|Dy{y5quVU9AlvYMAM4iQ}wcLr<BR(c(-)X${We4pUV-aClGP+ZwD!d3t10IJ-ZG z_o$2)4@+UHn-7+F^_ekOd{LSne!t!Sw>J4PrI1i6{@jTNaCz>;o?439&6RqTZ_eq| zsb^Pk=Y1My`Lr^yT2;5xX+dr;@8ar+5|bJB3|63~?5+VtNl~{Cj%)F&cAh)_G#2{J z_1$54ch}XG)?i!)knKZaT3ktr-HhBU^-SSoP$e@));$&m;A)jJw+^6HJ`?_E-Ymi? zUmb>GES!Uz$FMVeJt({;Jznp;+VE@K8&tB?<I!Esp`5%_1op^v=ksD_&J+hl->s2| znc}UQ^I6c1WSC4;K>9eI!v_IFkbUNz-o%f_p3-;9AH_6<zu;b7efVF;t^fc407*qo IM6N<$f+i1*h5!Hn literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/bandeaux/bandeau_vert.png b/src/main/webapp/apps_extend/images/bandeaux/bandeau_vert.png new file mode 100644 index 0000000000000000000000000000000000000000..b6d789f2f7b9cdbfa0b54f32145673d57a3ef222 GIT binary patch literal 850 zcmV-Y1FigtP)<h;3K|Lk000e1NJLTq000UA002-31^@s6ASdK300001b5ch_0Itp) z=>Px#24YJ`L;&Le>j36@>3)0w000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iOb< z3LO(fxLFtg00PoUL_t(Y$9-4Hfg~XelZ+pm#fG!_N2Gn=3yPWkbQcBql4Ljk{QD~a zfZ~e)72mNS0=~>35ikJ)5E~?b%q7Cj3~?4f-*zAJWve#jON@>AakJHS(pPSC^Q<o# zV0|NPzr?&)fUmXci68`ppSf)x@nv@SGhLg%cX~QzFnmPZo({Ni)v<J65z6${*RsyR z@p`UB9zRh&_V3D&RqGu&Kq~wU(;k%(AI8VSb>pm^#>M~zqx!e6D5wFx%*V^i&qx(a zJ3R@dF5?qDR@d(n!(Q1J+-VRQKnOhR+z$e7fu0R}f>gt^vX4a1eyA+jfV^s>?|2oc zrYcp_g$QP>gx!ohtu%0L)J+N>BfCr%rk%8Dsso^nS_5E8M5#l=S0LPDV^J%7Wz}8* z3i`+_4r(=)2w#go@b3J*m7<pJP0a^iwg#vYS~i{-EHuOKpFmF`{E)O8>XzjC@-w3a zH}2iSN5RhO5L;fbC8vG7HDqwTqDH$?n>n+^AlF5Y;b%~dfE%r4d6bd@CM;TUanf_T zAoAqQae_Jma^p&Do|okrJA`zw>4!3QLsIv_ThzcI_Sqm|fF#h)$fAU^(gI}N2TSY= zW{=2|4&tEek#K&(Ib=`d4>4=D;US_AgkDtOmx-}d69Avy^%&qDviH1nC|qk#Hp{E! z<o*ce3c<dF^kpn@{P<|qS1!(EcPO%IcMJ+{YYTuRko?v>^w}5JFq1;dXu|^(wpN?7 zm??}$Ria;8OK~HtQ*=yHX~S?em}~Ai4(m<Z1CP}-LprjVZly@{TsIw(FGYIz@J&2g zNF@C9Nx&frn&S+H)SuJim{NX``5H%>Tp!6j`*2TE@6ooVg=!zVdS6dL*$c<ieA8u$ zX|<1!Zr8k(VsD+t%JmRkodU2|b6W1srac)P8w0o){}Jjp)5j$92%yLoZp2Ix^J74J cgj3P~2Rfu|P%b}MWdHyG07*qoM6N<$f*mk@x&QzG literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/bandeaux/bandeau_violet.png b/src/main/webapp/apps_extend/images/bandeaux/bandeau_violet.png new file mode 100644 index 0000000000000000000000000000000000000000..84fe7b93118f380e602680fa2bc9757fa50b8ef8 GIT binary patch literal 877 zcmV-z1CsoSP)<h;3K|Lk000e1NJLTq000UA002-31^@s6ASdK300001b5ch_0Itp) z=>Px#24YJ`L;%tNq5%K>i1Eb$000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iOb< z3Lq+RRhg~;00QkvL_t(Y$BkD@vLhi3lLV)lJI(!<ng#wrXECXIsiXr~wq%*dKl`uo zAFnMbJ{kZ&pYu~KGz`{4j12(5v(Nw(4-JAgKwdF6#W=~=J4}cTe=iDPEHEH4VC1F< z&7}+3fx!>TNaiH+Vg&%zLJ}ks7U1|Em8j5bt@H3CTEQ{`WBF#(k<Pa!fVBnK(oAKr z<iLJVVJpg$)pebLD)%{YsX0xclakJQoT#pzO^}%mu(^1Np?)&qSg4cCx=Qj(J?^Z} z9}AmDG6&b8(DA!kW@aogKr)h12jc@Fc{t^{%HayfB+$H>xiuKn#>TGW#YJy}1<=1j z&sVUN&2={%$CsImbk*0yue`fm`C)`Z%;<&ZDV|P2{kBCF`7|3HqqkvLJO&`@>JNgj z4XS&5OQ(z9Bp77NglBm;z3eeHG0XEvOIIbQC|-M<vYh3~(imMgm{ld(*koJChr&9M z*h?z#QM!Y&y3!Fk)N_U9H0nd;CWRRpqyJ|@TVldMb<~6xaGIG&guK<0LOIE#9n&E# z71z}>mxo&rLl`6)Q<~I(_)?h9w^lb0(YBX$Cl7ILQYOlL@;IfS9d(>X;3B-9@3mNd z4Jb~1t3RB=Q7|Sab~}q_c?L`apmIo^B)7=JNGyO(4ku!aV-tI6-Gd*1Ifi`bcS}9M zGmNRqDSLi1M3LcZ0&313Vy~5!f;RFPZD-QPR4C!LBbT<=mNfhN@$l55vt1X5HQ*Yc z=aNy5yHHXt55aiG?wLN3Es6veblqLZ$IENIy1Cxr{;KWjLh6T`geJF^4g=}8*|NT` zc6*U<I9h1^gw@bwUT28z7tNa)Rj$65RGBz7(DR1EXU+`wdgmeuY)Esie-<Rn@*ZB^ z&~<%AoQILjp6(rIa$Q#}wnq<1-Tqj((kD6YxIf15bpf3Bo=(H#eQJJmVfmxqJN@YE z>!NziHWvOdU7O`Ojvc>5*8KjjFk$eT*Zg_y$sPXyzno2)0Or^-00000NkvXXu0mjf Da5R%I literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/barre.gif b/src/main/webapp/apps_extend/images/barre.gif new file mode 100644 index 0000000000000000000000000000000000000000..e626bf5a3cadb20aa017600d791ee4218e40b941 GIT binary patch literal 488 zcmZ?wbhEHbJj%$;@Z~?lJx#+oYwvLwPGK;fsp-}8ea@8sOXs{d)cnuD@STI>y`ka% z|Nq~=fB*dX^LzL1ojZ4K@7}!(qyWXAEMVn2AQEIJ3+w*`g}#)`c^RwL<-Fcku=`9& z?){2&?`z)wKd_+SpoR#~i6uoRbFAiHSRqn5Cu;qTWeKO>R_%YVp~6RR_W2hjGY?4Y zy8mHEO`Wldz>ht3=imSS-_Y39+|t_C#N64{-P7CGKVjme$y26In?5;*muJr0dGi-6 zT(o$}Qr_9ic~;Juy=uYQr5iVG-YCGp&d$NLW6$1w`wtvEboj_o_T9%$o;tl>;N1BO z7cX7Da`oEv8#iy=zH|59{Ra;pJ$~}^+4C1K@A1ER`|kaRkDoq&`TFhqkDtGO|M~mx zKLazDjK_ur2b=%OXq0?NSa`TyK-p`K$HqlRyCsaX?wr`T_;|m9bC-<grX?pQOZlhH zEn2W?>FMbP$*1OcZeDhFwng!)J0~|UKR@50nM>Ad%Zk7`^Aj#co!YYU^74SiUUR*+ zuDZH9VsqBrQ(ISGU!QQeOV)eanwy(9zE}}^dfVFD+Y26_n(MuN-QC?4pI_ZQy?y=t L{S9~97#OSpG64S_ literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/basket.gif b/src/main/webapp/apps_extend/images/basket.gif new file mode 100644 index 0000000000000000000000000000000000000000..ba8e7ea6bbafceb670d60dc00307f3ff789074a8 GIT binary patch literal 133 zcmZ?wbhEHb6krfwSj5Wk9|X?)KXc~)%$fhw(tsQWFi`x-!pOkD%Af<{fz&cEdquch z{g=<fwtDh4E~Dp<xLr7SO|_nUT^oNZ=crrX!Jl(@Vs`s(FA<LGaZJ9#B-;4gT;Q8V d!x>}Y(kl`34=!G&%dqd_gjK&83b;5KtO4A@HR%8V literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/boulerouge.gif b/src/main/webapp/apps_extend/images/boulerouge.gif new file mode 100644 index 0000000000000000000000000000000000000000..aa15ec65133c078885bc2ba9903772f82de7e387 GIT binary patch literal 102 zcmZ?wbhEHb<YM4rc+A591RN%l&q-+h=V16Qz%fDEE>j`#zcGWeM)rD1-ASSWntGN0 sk$~b)7DfgJeg++oPLLT4EW#g7daj<T+`r27?M?PB+2^q@L>U>Z0oZRObN~PV literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/carte16.png b/src/main/webapp/apps_extend/images/carte16.png new file mode 100644 index 0000000000000000000000000000000000000000..4a8e0686ef00a70c3a7e1f40e81cb4c460695358 GIT binary patch literal 1087 zcmV-F1i<@=P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00006VoOIv0RI60 z0RN!9r;`8x010qNS#tmY07w7;07w8v$!k6U000Sga6xAP000mG000mGT*j@#0009+ zNkl<ZILnpLUrbY19Ki95OO{L`*^)UkP0U_gSCcJnn#_kKMwa+6#r;XPEPF6poOALZ z$(&D;)xwrdP}(|K0s^BJ6ma4+AcYG3M++1Xi(UV>v~UsWA7}*(Zp*$qMa=YZH~HqA zUvkgq<{oM7(Z+%|wdQXMYX@|NwS$_%nnBI(ngNkh>>ZkSbJaQ??Q0*;PF?Oy?yMwz zT(L#f<Bwaz)0jL#jKKiCp$W_(na*JHQGo=Vq14LSA!c(ljjG!lmp-Z3B1!vCDo<Hr zve8+^?>}wiobwfiJzsG5wt*i;XDAt7q{NZr+glG-))Lo!^uYxx&3;+huT}~`rL45X z<*T>U{PL@W)|5}j&`#2>(^y7~9JSx&VDB_X`cr(>C-bFcmIm(}XDk6Z_wg0rv;eLL z%4n{X(CgQ6;m#)9qlb7HFyQpsIcA@x*tNtF+bmx@GZ;b(PXI+K<r!;SzTs1&>&`>p zxQ?d54O|-8%9Ov1zoP97dCaKC(j2lTI4pqX@FG=K0TitQRW<?qq2`oH0O#^)ZCOv9 zYcto}JDK!Wk@2?^jMyo6g!tT?;9@X~#v1$&&<LP6q(*C9L$%`tu3vtU_O?y5N0ju( zibzE-!TbQxNf+O{)3n5v#k-GzeJZ6^05`=iR2cKn^*xW?^b)O28)zL<aK-lqL%w1b zCU267n;DI|xe?2twS{D9-zuQ9$7O3+O;ukW)wTlkw>Q(&_6}EjcF{4h4P$s0bIFU` zpLVh|KTcv{PTav0z*zzGM+9J&sP1`{#;(t(@A`<Q?!#Og-$Q3~2a%+TtN@lX<NWzB zEr76`J1a?hRmz|H<FY+eM#U8cXInm`&bpO`p^Y@Vwqxiz$mQWZxa0#QVkWZpMp%B3 zKx2Cfn2^VUt<-mZN`vEde)B14b8n+7`ZhhGBHH_ob0=9sHeuuM#Q^-16?Y(jy*c26 zGG)2RFGrH|cxEDa?gjBCLU?Dx_>vL)sR-VgDT1kKCQ@_6=CVv>mMAy*rlj{zz9v2Q zUh&I{<8?poDAm_(FEyNhsuQb~UO4~OiClV7qnP#eieok3J-hqBdPzLbi1I}R|FgBC zHU9#gT7*~_X|E0d001R)MObuXVRU6WV{&C-bY%cCFfchSF)=MLHB>P&Iy5*sG&U<R zF*-0XhQ_Kr0000bbVXQnWMOn=I&E)cX=Zr<GB7YXEigANGB{K)H##&mIx#paFfuwY zFs<VANB{r;8FWQhbW?9;ba!ELWdK2BZ(?O2No`?gWm08fWO;GPWjp`?002ovPDHLk FV1hSt?S%jU literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/carte32.png b/src/main/webapp/apps_extend/images/carte32.png new file mode 100644 index 0000000000000000000000000000000000000000..cd913151a599873cff66ef550231a98fc52baa3e GIT binary patch literal 1771 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 N002ovPDHLkV1o85KD+<` literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/checked.gif b/src/main/webapp/apps_extend/images/checked.gif new file mode 100644 index 0000000000000000000000000000000000000000..fad5893727ee8a13f428aa777380ae97152adec8 GIT binary patch literal 959 zcmZ?wbhEHb6krfwXlGz>j-2EYIms=0ihImdkJxD*ann5GrhCOt_fD7*mN_@JU|~Yh zlH}5*DP>F3%9rQXt#bJ9P}a7(ufM;0=I)-EyC%%tyKeK&xyuhMUUy>sj`JIKUfjO_ z>dyTab{)LB=kT>-Cr%wbdG^%lGbhhnIDP)=+4C1qp1*tM!nLy(uU)-*?dpv?S8v|E zb?f%+J9qBfy?6e~qdWJX+<Wlw{-dY&9=^Q)=;gylj~+aF1_aNazj*ob)$7-9-n@PL z_T9TzZ$7+z_wm!`FP}bt`|{<>*RNl{ef##~$B&;sfByLSi(wRuh5*qap!k!8nE{v; zbU->ld4hps4uc|xjK_ur2b)<{HDXQ_Japi6Q1W6iYUvPA5Rzlscwpk<4sO9XmXjI+ zi&_OWe7|@wG&BoL67X4M6R7Omz-DfcwPk^l8<#v6OGU!M%_;%{ss?XfI5Zp-5OGar zYW(QXz|GEX#*rx~s>CVD%q0^Mz{1hH&cW`(j0A>8wr;ZvZ4rjePOb7*MGqXL4LK$% TI;tJY@rY17bXb6iiNP8GS6tA5 literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/contact.png b/src/main/webapp/apps_extend/images/contact.png new file mode 100644 index 0000000000000000000000000000000000000000..5929e1f025fe4e79903302d379349428f9288d6c GIT binary patch literal 437 zcmV;m0ZRUfP)<h;3K|Lk000e1NJLTq000mG000aK1^@s6Yv(<I00004b3#c}2nYxW zd<bNS00009a7bBm000gq000gD0q|4h^8f$=S4l)cR49?1l3j}vK@dexD$Pu0Ce3`g zAjk$E_RatQLlPluvdP0P2vNa_9kL@k-PJxML`4x}!FjpGy;TJ@a>rx*yx;Rb^{T2c zAG?l8mhq;puQGq=IzDwBLX5Q2DVyDnp!!d2cRSkYlo%tTF(M)~*0Owj#H;?5<<k?j zwTK8&7147eF^0CPSZp>7A^efWc1v59B*x%X(HN0<4j4ipOH*#zmic=9n|Z!obJH|r zY0417DL@qoXY<RMNs>@j74y~VqAgY{%Bmtwl8ZKkfU08jrwyVi?)jO@S|&-t`}=zU z-p*!B(v&ZU12)f3_m4(s2tNW|hJnNJNNFuT1dK7vZf^lF#^6Js$TB+TutfnPrxU#Q z4Bpc@N0I0F5H5%aBJzt?<T;&l4Bnpxed~Mn&QV|SNOfKF)j9gU$GmPDmJbhTj8}c) fcs%Ca-5uWn_=GFy9Ri`J00000NkvXXu0mjf{Fb{K literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/corbeille 16.gif b/src/main/webapp/apps_extend/images/corbeille 16.gif new file mode 100644 index 0000000000000000000000000000000000000000..aa9c145889b8a7303319722a97b11a7376736190 GIT binary patch literal 949 zcmZ?wbhEHb6krfw_|Cw<0t7Qyc=`Ex`K5RzrFduXi%Cj}Nvg=J0Fl1@A}LKhea*G{ zMwV7a&i>YZKon)Y*2*O!#U;7QWvz=}M802gm0!gyzwJ@shf)$MsuC(%5)S2OHn(KX zIFdQzeCDF_nLzHLs+t+IYPP?xInz>eroVN@lGe4iTDQM%J@l(@(XPI=Ky;*U`;)#y z@B4rvXLj|Sc|T+O`59+^E!@6q;i2;jfsE_77Ct<(>d^UB*PpDq{%h64_nXh0-+cYn z=7+mBKLnERH$VKf`OT5N4}a}_bAIoeU&kK4KlbL<u{XbNe1CG|`!9x3Fd70FA@KkI zf5o3Hj0_C_8FWCBpgiHgF^S<nr;Nvj2M%IhLRyxS6df2?z1$>pemJ&rN$7D^DHuNS z5Nv0(P?%{^*wor&KVwDA%p)9vYNlMv8XSW=I)uC%9?ZCLux*m8wpoUP=av@-xaIT~ zDOe;wogl8Ca^b<jBkTvoxP)gV98hSQB+R0EN1|HUO+Z=1;LC~t0Txa<XFIVDfutpl TYOWO`Cl>~_2QFe{WUvMR$OFE5 literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/croix rouge 12.gif b/src/main/webapp/apps_extend/images/croix rouge 12.gif new file mode 100644 index 0000000000000000000000000000000000000000..a8f8ce39a9b808c6c4289ba3b7c0cc991f4baa69 GIT binary patch literal 916 zcma)5Ur1AN6#nkocCRpO-4?sSq8SP<Mrio3(aW7KwIMQ%YAm7EtPv5dT<F6ES4xbs zu=$XMhz~wUJrwlfi*V~<?4bvJn?4OH6oMK=O#8z+XS<_4cHrD|c7Nx5-}%n{t?x{) z&wtql8_GasX6D=2*jhB|SCs8&v=Wb3LZJnZC)e2-SCq2f-ziBq?Dld?%bKDr*zI;; zyE~-oI{w!jNX{I>@~#Zk>cGxV8OqnEnorDX6|$2QUs<!-7xEgS3g3f%<Skik>5>zx zdoqS7pAa3mNik3FR>)JI6{G|Ky~Y@;zvODxOwYNu8{_q}(@j}zkUUKFtuP@-{4T1Q z4P><lVY4yUXhR;M+77B?-h#o)d@=HxIjVu@?EhGMcTNC~K!Al#ev{VBStmXbCTmR+ z4r}H4uN=;5bL44#UQ1GBJwEDTe3br7e&8Mx&~EH$f@-*zYXJvL6dPyBP=8(*AToxb zA!YP7@?I>ZtNlE9g7W3U#yFtT#AL)<jhs`$I_tW4Ul9!BO-07{=TlmedU+nk7`f0> zt!1oMYIT#}vEFk02;_v9BYlhM;hd0pojS<B=?Fvg)VCDWx5)S6ZsO{R#Pw@%b43Z0 ztg%4*+a=yE`lh_U65S2v<U6weMNNl9b#BUQIvD+*1-F8DNZ959C!SC|Pv43AnQzfJ z8(R-n?`6xLnV4mGxt;$Ls&pG|(zH8VG~Jio-f#@}_KA|cE2$<`z+zJ}>9o-O2+iL9 zbu}<$u{d3Y6}>gobo_uz=_tMHv6{s7fz{$@VAgW1Bb5oihuLgvS4&H=!N;z);pt6x Vw^<aOzWE)sIQ7hPRFx#0`U@(K42l2% literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/croix rouge.gif b/src/main/webapp/apps_extend/images/croix rouge.gif new file mode 100644 index 0000000000000000000000000000000000000000..750801c3e8b39ba53efd1952e30dd4ea08f268b3 GIT binary patch literal 337 zcmZ?wbhEHb6k`x!IP#z2e^1Z*;^MtgQI--C&!eLLCnx{+@|vTmdCbr-SwiBwrKKSU zN49{#cSXg$5)yL+1Oyluo;!IRIB<Z0IH35Gg^__lh(QOW9Au{h>$wFgT^BO+GBW!P zHwbJ<)ZqA}vwDk+Z><HhOy)-i3psbUOa%rDX4WGL3p+GKdfS{mq+~=kdF0MHYc)m7 z(_6rT#kJd|a&{O$6C=YG1>=Zp9`4eDIKjlQ2wwBj!tgpfM{d5!e8pZ$%pMw+1(Wy% zN_BPB1h{#+nzVH*tMW98!Xrv_a{L%rSp~z4P1BpRSt@FbOwwa4g9TY?jd|H;TMES0 y?n+5p=^UT9my?f!onzVpZrfc+(H2WRrcRDhb-Cxzyp(4$|NNfg7n`&c8LR=`%3gW^ literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/data_hide.gif b/src/main/webapp/apps_extend/images/data_hide.gif new file mode 100644 index 0000000000000000000000000000000000000000..8eba497a2654a0f1b054cd842fee574001955f5b GIT binary patch literal 339 zcmZ?wbhEHb<YVAwSgOlVSy@?CRaISGT~kw2S65eGU*FW!)Y;kD)6>)2+dFmY)alcw z&zw1P&YU?*mMmGldiDDC>o;xMw0ZO9EnBwi-o1P8-o1wpA3l2Y=<(ynPn<Y$_UzdU z7cN}9c=5)K8+Y#9dHC?*lP6DJzI^%m_3Jlp-hBM{@zbYIpFe;8`t|Gg@85s^{Q2wG zuRnkO{Qdj)Ke<5hpP+M5YGO%hib8p2Nrr;Er*8m*;!hSvE(UuB9R?r(d6a=I`oOdg zDr;;44y9aDiDF=2?+;qBN`QgoaPXoaw|QI_PZ~0~OqsxtI`xW#!YN<(iig`gW@mO@ tsZetWc9Mu<W@TU&4Hjl#;*eM7@fXfu7SMFk5u55IDbuJZ>Ey^@4FD$Z#x?)| literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/data_show.gif b/src/main/webapp/apps_extend/images/data_show.gif new file mode 100644 index 0000000000000000000000000000000000000000..0f8a0d83b78657508ff67961a948b17303a20d17 GIT binary patch literal 319 zcmZ?wbhEHb<YVAwSgOlVSy@?CRaISGT~kw2S65eGU*FW!)Y;kD)6>)2+dFmY)alcw z&zw1P&YU?*mMmGldiDDC>o;xMw0ZO9EnBwi-o1P8-o1wpA3l2Y=<(ynPn<Y$_UzdU z7cN}9c=5)K8+Y#9dHC?*lP6DJzI^%m_3Jlp-hBM{@zbYIpFe;8`t|Gg@85s^{Q2wG zuRnkO{Qdj)Ke<5hCkrDNgFS-|0}z1x#K0DFAWU0WNGf{H89}2B8(K8go>(w4NG#@e zVwfQlJ(Y2Rf?2{or+`DZ6sGQz4)Rvr$zeTvsbg|XAXBiLAOka>x)N8IpnFLe8w&%A Ys8)s?dl<KpT85Jbzo?VCn<IlY09?1baR2}S literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/domaines.gif b/src/main/webapp/apps_extend/images/domaines.gif new file mode 100644 index 0000000000000000000000000000000000000000..38331fb8c0abbcd894957a7cc02d0d470e463ede GIT binary patch literal 956 zcmZ?wbhEHb6krfwXlGzB^-Om7?-0<i;pS?k+w0ZtZ_~TKP5=IO!v{MIAMG-GxIg&C zLF)?#s~#VUcy=uI$??3Wr>p+Htew1Q`-BZ=_TT=0{ql_4*Jj?oG4t`6wio9cKHcv6 zaCg$D`%`|u?Em&);{P`je!rgi=k4tOAAA0Pobdm{<o_Qh|NlJg^V79oUabH5e8G?B zi+{XW`t9|W|3CJhy!QFb%`fL}eYtS=%cXl?uipQ5?culEPrm>Eefa<H<A48u`2YX= z&)<Ll{rmU-|9^&2Fd72X2m!^PEX)iHj0`#;!$5h0fnz2EGl$F%2WAc?S&IY-jRgyx zMLAqdBmxtdow+15IXDs@9pjW%(=nLiP}J1G$QAG)VWC2!Goww?F`mFhtX<NoT1QwE z9Gd(&ZNg+a9yGKxia1ny-B`%1!NMjl7V}|3V)}V0<A#4<G$*$QNf|agn_wBXEJ#v+ rOWxm?Th)2Q9d@4zJyoU~J+J8VEK!C9>+kPxVCRza*-`MYfx#L8kn+hn literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/download.gif b/src/main/webapp/apps_extend/images/download.gif new file mode 100644 index 0000000000000000000000000000000000000000..48deff30a9dfe4dbc56798211d37bcd9f836c747 GIT binary patch literal 151 zcmZ?wbhEHb6krfw*v!Dd@c(~(ef@z02f)n#4L|`9i-7^i!Uhz7vM_?gbwC8j3<nlx zffJlwk|k^hcRy!zi)=NVb46@Tj`o_QuwyfGuHAmF$bRRa{jC>atIu|sF&i?=FfcMU Zm3U44RkAC4>n|=wzXt^oLW~U73;-utEq4F_ literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/fleche_jaune.gif b/src/main/webapp/apps_extend/images/fleche_jaune.gif new file mode 100644 index 0000000000000000000000000000000000000000..04bef3ac0e2f73dfabf43214282af30e44eca045 GIT binary patch literal 875 zcmY*YQAkr^6#k}jn-68J8(UCo!U&0wB|cm$XrpQCp{Ov7CWxXA1<Oj=9xk{T)u4y$ z`q1hjW?Bfo*qcPq$|xW9;9An^F$x4LgrI4y>^pah?7-oi`~TnhzH`q09X-~fHg&pC zg91=2{!XXUj+XKM#GF2rdz$%lpmX|r!P0~C7)A#g(S>@1(T84$dCdym-N;4~cpLFH z9LI}QJ6bDWN9ySr=753*tFC#N1ve?iw@u%UN#6M^3YLD@;rx0_Q;Aup33l3|Ys++k zX+Egef|#$;wb&OYX4mXE#XM?NFu*v)vjn}HzMJT+bTfT+;3nK_9oWo#5Brn+Gx?jV zb?pS*N4y6W2vEO*m{Gs3oh7%JXmxMMgT#7?6Wx4SSM*NOOD1!{=u=%Towf1%5KO3I zEOJ(7s{<d&DYFieM`o4&yLRZ>7(JFwYJ-e2kIEY1$HK3XjMT8fy7Hc)#7M1RWw#ZK z8+*xraAH1ff|VRY<r#*`wHtLqD>0*<Foc;;=CcvmwMh=BYec3tCNk&Wxny5rGwXJI zyA#(2Su6brM|;~511nted%Nk03%Q<x|E1|%Zt=g!D=d<G>1uVTXl#jEd>8fMzFz#a z!z~RgU_@rjbAPMUZREM^Z-s9|H06!d+%3&vBhJmdG>5SNv%vcR{N!#w<3KaxFyE8Z zi{8ER-Q|UVp<laZrm_k9q+I?JK3fo#HYJ)$J&W76xpoFe$LFqZsdXiSkM5h|mc9L& udU4{_m0gEVKS_Eg=Ev%q9=>s2dJwp+gdQuYnG}+q{m;9jSx+X0gMR?lVjHah literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/fondPRRA.jpg b/src/main/webapp/apps_extend/images/fondPRRA.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0260fa3f2673312cdf0ebec5b09e2c8c1569944c GIT binary patch literal 37705 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 literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/fondPRRA2.jpg b/src/main/webapp/apps_extend/images/fondPRRA2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..bc93aca7435abc2780977028c4b0adf4b9f045a0 GIT binary patch literal 113872 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%0DNlpoyGc(&} ze93vRA*(uu%%IRa6~vRsK{0v@f5JIVHvQ}ns08il4HHL4$0ipmS2{0yZuaK<191EU zT<T4&X9M>pC!ajA)Z9(7Zo?{`82$q|p5>X2pl_XEwF@wbnVGrl<-@pxsCtTZDDGJH zExea}-x!ir0K=k4p?wej7PuVsHcnC2Q?8bl)(ZT0JP<Sax9?gM9CjjEtxqsnn-74Z zqC#_@$+sH~L((1yKDKFYZa&LNeluTxcNumb_77lcxObnt(`e@UA3cRz4imHeps|T8 zoqhiTyBB`RzH!XyKtAr7-cD7!xw)(Je^Wqfg4~6dg_o9=>BR<JBtBv{IR%B26K6k0 zQBl7#?C>sBHt$Oqr@cR%lH{nMz65_vzATCJ)yJG~{(DTsjlz%H!&cM>%XP?8ViCJ| z^?x<!!^S3~|8gCU{~h$d!G+{udvOg1=M3Wi|7e(-2mSYOz%SH5R35{tXX|gx&9Ns* z<x@6a$<@Wt#joQfVaflyE&exsw&bG3{Y%`Lv*TYByq-J_*sl4o<_A0LowjkC4($r` z7ru>+*|xinFk2CV^(V|^HGtA$P7Di?EQ$tNQV6Rh>vw^y$QLWpJ!E)+!!0T0%x0SW P@yGKJ{>g2xf4~0^QfL~x literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/graphique16.png b/src/main/webapp/apps_extend/images/graphique16.png new file mode 100644 index 0000000000000000000000000000000000000000..87bfe77dd1e9595d3355dff93c8eb5834e5fe482 GIT binary patch literal 1007 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b zK-vS0-A-oPfdtD69Mgd`SU*F|v9*U87??hLx;TbdoZfrM(<eAkgzdrZ!nSD(d03<5 zLM|#bYq%u27z8RfX(lYRQ8R2{+bEd9sK}#wf$6AMP}?LUe<wj!!S-8WZS1lWGMpCW z#2ipIWVt(Ohv9L%!+t&ym6P=?yQ}}rnNuzJOWys8WXq=1Hw|4Ay;t4pToG94pJBPa z<=KRgcO@Gb7#v(<#cx@OZ(eYF4)>|;=Jjdj357ek_BZ<nF5#07l{8xLw^mIfZSuou zXT;CfANl+H(Z`-3kv;o*=g4g<nsMr2$SK1>X7?*~c_Ba5SffgvCis6;SS@$Bc=q3K z{1$TxroX#uy!^9y9z*L=!&iCR=giNY<JYikrptt^WQE0jt<O(b{${_ip{8oO=eyOq z3li?K%v9r6U2-d9#q5sOQwuc?WZM+p7WvQj;ho8Zy2-B{5=&orI>vGY8de;=Cd2vY zU4h5iqT`pB>a@(dp!g&s`%3J$1^O<VZ^$dpm0af}`0VSCr)udLtQzx9NgA!RnxJv9 z#j*35QpYW4hk%Do+^c7D)OvhzyH;V=uJiSJt~pC?ZaDjzujy^#yHBf|8Ej?L@VRMm za`h9T)>RG~A*=^wRmCTrnp5DoRNHBOi$s*~H@}}@b<eJsueATO;^Cp!a}pM3hu&Wn ze!6(Uj?nKD%}@CW?(CX8Vflw<nVtF{RQZ0)@82@(gj3i&@qecB&Aruj8v+{+_I%Je zIAP1=Gq)HQ7^vi?^xSAau`2!Mynf!7LH-X!Z$GXvlvOO|5!Q`Qf0TXl-3QB~y!$xr zJdk{E@=zscf}W6Qz=~f{g0q34uvPawFUwRtf$tAk<l=MMFF3Ur&+1QDGE+Gtp>spC z=<JQFZz$>R&%3<QflVZ8UWxIl3&|7Xy_oAXWrdEIbnL8G(G4pRQM}r5t?r%Y{|?u? zEYtejq%F_zXO=~6HQs$T`LaXi)qOW)=e@f1vi=s!-^o+bB<8=8lz2CHi*sz&*2mU+ z7bc%fG8GbAJ#SNrk+jaT)V-zrp|hu*W!rpm)&1lvuX%H`N|ztbXL!(Z;iE=R1u!qD zmbgZgq$HN4S|t~y0x1R~0|QH4ATl%#F*LU_Ft;)^*ETS+GBB9;LcSVBLvDUbW?Cg~ z4ez%uKMvF&39=zLKdq!Zu_%?nF(p4KRlzeiF+DXXH8G{K@MNkDP!WTttDnm{r-UW| D;(n?L literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/iconevideo.jpeg b/src/main/webapp/apps_extend/images/iconevideo.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..c5493310793c05493a2d19fa2124ca13b3748179 GIT binary patch literal 630 zcmex=<NpH&0WUXCHwH#VMg|WcWcdG(LCm!xGmU}4*Ox(yfq{Voh=Jh$Z3brsR%R9! z7G_o;!OF_Y#?HgR4g~z%+?+gu{6a#4{DOkQVlv{wB2uD)f)a`nQnIr0^76vsN-9cn zDl&5Nav(z(fm+$w*!eg(_~b+cMdU~Z{|_(-axh3TNHQ}jF)#@-G7B>PKf)l*z`(@F z3UMohWaD6EU}9nC1WM`)FfcMRGqSR=F+)`_GBL9-unMxV3kfS4aySMh7B-3~nK%Vb z3|_bqs6h-E9*oF_F#x>{6qgfZ09wKXGX<!E31~8lAghqDq2vEs3_Q$?KqoN^GT1Yu zFFl{R^6WvU<C2;81MQRQ?Y`<LAN67v?g;H$no>V!WzBV~W3K&K;m4Nja&WrEyX1#O z<}v%UKE5lu*-f|N3nlJIsyvoi`Pkz`<k4xNeSQ+$DmrdO?{u8zT;|(7ZC-?vh`-5- zFYMQr7}UJXzh$?(Q+3hRZO`Na6&5I4pA4%ketB(s`LQ_r-uP8huErP#X-7*&-kl%G zST^Bi?(vXqz3$6y^WBZeFZ^-y;Dp9GBJ(BA8C3N<di6f-4LS3et#;SD(=V*|h%4&| zzU_K(zi^GGe8k<TwU2wMYTUOUb2a=ae=BsiT~5`1hLXK5SFBbsU;7;s+CD4I%PV%$ nf};6TK69Qo@{fC!Q(m)w)t=Bmoe0bRSiP+o5BL_H{(lnyc*M5i literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/imagesPDF.jpeg b/src/main/webapp/apps_extend/images/imagesPDF.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..fb1aad4d921f35fe015fcc60079710bae0c30c59 GIT binary patch literal 698 zcmex=<NpH&0WUXCHwH#VMg|WcWcdG(LCm!xGmU}4*Ox(yfq{Voh=Jh$Z3brsR%R9! z7G_o;!OF_Y#?HgR4g~z%+?+gu{6a#4{DOkQVlv{wB2uD)f)a`nQnIr0^76vsN-9cn zDl&5Nav(z(fm+$w*!eg(_~b+cMdU~Z{|_(-axh3TNHQ}jF)#@-G7B>PKf)jZ@&eEk z2*Ae9!pQ-YF%)26WM*b!209oj$;iaa!oVuXrpPX2C@kU_n8+cjWL`KiD5Ruu<E9Tl zE#iy}%*aMDFfcN)vH>Mj1Q{5CT3MLk)-W<KF$=P=3JDvEC^`ljZM^vZ76T7ZGm{{* zAcH-_@{^C$mQ22Vw5mjHww~(3vl7~~Retqr39tOoUAx`g>B8Hc$HUf?xoLWOJY`qs zy7A<(+|<myANt+*q?`%T>nyy^bt<r^QiIj&4ohnS?>FY9eAnh^U-}@L8xj(0DKm|w zrSrV5>jJK6g_8;xY|Zb~^2|&)vbE)1?b?09CZ|&7@Xg=8D!=jll+`V}76zG=M7KPT z^el2|yOXKX!(#V1Gl2a_OH)?+dk^_p`R^Tae%0N~-eAafajK)g)$PENU7_a|ZK~{4 zd9q^G^;xU#cf8v;X+laNQ|pIWcRPI8ITaY2=ltqolGx?<-hB0z$+F+1qLdukJ~0Lr zaI#jvTf}feIl-!At=z?Um96nF_`mrUpFaNgsmC|=(B)m}E`0O+=O2B$?T*@W`JEA^ zqB~hH#2#tdqA~BR%Y>!LtEO?Dvt!<P!sPsS`Kssr4}bALTD2uoI<m@1=)B6+9eLCL G-vj`_i`Vb~ literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/lbleu.gif b/src/main/webapp/apps_extend/images/lbleu.gif new file mode 100644 index 0000000000000000000000000000000000000000..7cee5b6a2f50afd311a09f1a012f0274495713c3 GIT binary patch literal 879 zcmb`Gv1*lZ48>2ON?l5!A{|5!oTPLKl!^+9qAm0p1gT_jtdrY?4n-(}2tp>cAnImu z>UOOidLiHoI6L?P;uL@RKZAkGcXN}RoOANshg%OeZaluFMg397WPB#$F(I3DOsCW0 z_fm}qPrecS_W!~pmqN<kL}n&)S;$gWU38PXJme{_?hRA8A{42p9!*oaGL)%orYcjp zDpU#W25xAu7^b^=Plua@S(;U^C380q^E9t!K{4DSEYhNy6us$|VVRZ%M@FsODy-6q zt*{0R(y)XUH5P*nG*}E*3+kK*_jIq;$6B%okMyXP3k!-Fp6OYrhZMbD;gw#<!w+aO zjUDKR1PWmd7^GoID?C^XHqc;IJJ)4$A|tAeL?3I(G9wFLkqZloQ5l7gIE?}Dq8+1A zi<S5RO{TE}P6$RJtO0{GlhA?(i@^rE`b6DLnVcvthLPxFEm@A2tbHB#?&3IM+dQt) zy~F5seR$WS!;U_}P}oR=bl+s~Xy5_O>%f&T4^6DP`geX#TGDF2)%~B)!nW$d<;^ee zzU?h6U%$4p^Zxt(((?Mj=F#EFi%a(O^wZJK{g+qnJ-WEH`(*a|+}*>~&$}Pa-mKj| bIXHgxYqqlS?Dx;v*N;Em-g$n0UN`>%5jB0w literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/legende.png b/src/main/webapp/apps_extend/images/legende.png new file mode 100644 index 0000000000000000000000000000000000000000..465af117e77232aa334108734c849676572d4ce9 GIT binary patch literal 145 zcmeAS@N?(olHy`uVBq!ia0vp^{2<K11|+SoP4xm&jKx9jP7LeL$-D$|*pj^6T^Rm@ z;DWu&Cj&(|3p^r=85p>QL70(Y)*K0-AbW|YuPgf<4kmV9tqAUr1wbJ|PZ!4!jq}L~ h60D08M0k`K7?>wBFdAkG{Qycbc)I$ztaD0e0sy5AAP4{e literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/legende_carte.gif b/src/main/webapp/apps_extend/images/legende_carte.gif new file mode 100644 index 0000000000000000000000000000000000000000..d3e9c52e0e4c8fd3be9390564b6093a514a0e692 GIT binary patch literal 46 zcmZ?wbhEHb<Y(Y#XkcV``swoj8y|HTfB+=Iz{K0qzw-23{>5{)-0DteWUvMRQjiak literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/legende_dataset.gif b/src/main/webapp/apps_extend/images/legende_dataset.gif new file mode 100644 index 0000000000000000000000000000000000000000..841f4b6d81eca6eee269f9c5f8282687a9cf97ee GIT binary patch literal 46 xcmZ?wbhEHb<Y(Y#XkcLYf8!$%=`a8RNQ8ljx21pO>9_og=WMyvozBQ$4FFat53T?J literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/legende_donnee.gif b/src/main/webapp/apps_extend/images/legende_donnee.gif new file mode 100644 index 0000000000000000000000000000000000000000..7914381e6495e22c4071fdecdc17df97b4f49f29 GIT binary patch literal 46 zcmZ?wbhEHb<Y(Y#XkcWx_TcsZ8y|HTfB+=Iz{K0qzw-23{>5{)-0DteWUvMRQArPo literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/legende_service.gif b/src/main/webapp/apps_extend/images/legende_service.gif new file mode 100644 index 0000000000000000000000000000000000000000..8f6494c9ca831778fbd0e204a09429ce1614b629 GIT binary patch literal 46 zcmZ?wbhEHb<Y(Y#XkcXc`})ZL8y|HTfB+=Iz{K0qzw-23{>5{)-0DteWUvMRQuhy& literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/lgris.png b/src/main/webapp/apps_extend/images/lgris.png new file mode 100644 index 0000000000000000000000000000000000000000..5d65e94a4c090a39f27fcbe15ee5a87d2172744f GIT binary patch literal 245 zcmeAS@N?(olHy`uVBq!ia0vp^HbBhB!2%?2x^IsMQY`6?zK#qG8~eHcB(eheOiAAE zE)4(M`_JqL@;D1TB8wRqxP?KOkzv*x37{Z*iKnkC`!!}UesjsAff*-&LS>#Vjv*Dd z-d-@|YjO~9d+5Kp{YzU+r<V}7@S!#~SKSC59i1%`-mKzXKQqPX|DH2BWt)x8O!Ax* z_v&`u3C`y}tTDZA>FUkVf=Ah{ne-O<Ex#(Yul(`mFk!~UFBV+9@p^hoamAip<yTf* m4gI3L?cWitxTC9gNR)d=J}pahQxE{UfWgz%&t;ucLK6VK)>VT5 literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/loading.gif b/src/main/webapp/apps_extend/images/loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..e846e1d6c58796558015ffee1fdec546bc207ee8 GIT binary patch literal 771 zcmZ?wbhEHb6krfw*v!MQYQ=(yeQk4RPu{+D?cCXuwr^cCp}%d_ius2R?!0jBXnAQ) zOH<|l|Nj|aK=D7fpKD04vtxj(k)8oFBT!uNCkrbB0}q1^NDatX1{VJbCr|b)oWWMT zS%hVC<e5zgOcIlpc`kLa*!o;M_#F$wy(Jnw%^xoO{@do#FR1axvu?^Eg~=WXT$f%h ziRw+0<X~ye?)5wTu<&NHn6>	~NwO_yO%;SvZ5MdNYf|QNy-I*%yJaj+uTdt+qbZ z4E`Fzb8m}I&!N8OKmWEcCmrLs^Hs&3i)mt@hQVdcqghkaBs*D}tG_lKew4?rTjzIZ z9tSone1TS+TR7tu^CunG)Y7Jg#sw#)sG9C!c0I%LEzP)9;hqRf&)s$D8d5Db{TBs% zgl0~5QQ91luq4Q9tJgt4QLbaxZvAaKeCM9!oy85dg4k>TdBSVqjHub_PG=PO&J-rx z7oYTuF+kH|tG-UK+EkUhDjYx?zW?T|lx><M;PP#XNUM@C2hfJD#O#hF$!^x>+aOQm zzL$v$zBLo4Cj=G&tw{H}dW?tlTkS)SY4<#NS92z*EY-MMB6Ftp`R=*=*Ev7cS+X%W zMCur^FdlokL}1Y+&aasU2J4#EOuNlnb9CmqgLCGTSY!1BD42pkHY^XidQ5=>YQx%` z*%Pm9D!CkBu&tMWm(%-ejACVWGS2RX5=QOJ$1*tr7F}F+*-OA+Ly&Isg|AEuUYicA z#%IG6kPXkHt{zk2M6zK@Vu^4Q(1zE$?yY6M!^&jQ+2^E?!p7{g*|X6}vuRC3p@jk0 W117c83?+LXEZI4G$p&LV25SKE>nb+@ literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/logos/Logo_Prodige_V0.jpg b/src/main/webapp/apps_extend/images/logos/Logo_Prodige_V0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a4de289bb800fed7f21dc4f070bdfa052f39b46b GIT binary patch literal 77205 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ʹzh1mu;GXKF`IWe5!ku{8FCWVi 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 literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/logos/Marianne.jpg b/src/main/webapp/apps_extend/images/logos/Marianne.jpg new file mode 100644 index 0000000000000000000000000000000000000000..97b75359219be656e36d45e97dadeb16fba61a29 GIT binary patch literal 23771 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 HKWqO5q9)fl literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/lrouge.gif b/src/main/webapp/apps_extend/images/lrouge.gif new file mode 100644 index 0000000000000000000000000000000000000000..bbc4494d511aa90f68809fe38e9000dc412c3b22 GIT binary patch literal 492 zcmYk2YiNxD06@?8e!o9SNhnFvT2ib{NwRKIl9VKoq@+n}t!^^g-JO}%9`5F`t-0FW z*qYnij4f+yB}qxkBQ1rLkdj0q=9ly1{5U^PMPkeP(*5PQ9D`*)WC4<_<}dRt{X6DY z%+HwbG2bG-Mtq6*9PugQL&W=#cOh>>UWdF2nG1Ls@FL)8z-+*ifX6<Md>;Bd@VW0Z z<8jYp%45=F!sE8bm`lNB)FtmS;xgoL)nUM)-y!SJ=g@1@ZF9k<%O+#fVbf~SVsX}@ z$)eGs!Qx}Yvw(V&T9cC|CrpwiH3roNRR+fmDh-Yr9ML(fb4cf)&H<f$8hbVNXzbS5 zrLj|Ehst)9Z7N$;5-Jrcn-w-GJP(-m*r>2Up-iDvW}VDhnKd#cGQ~1Q600OuO01Ar zF0oW%iO6D+MIsAD7KnrbzJM!W3m5{LfCAF|W!{9OOqwmq6=LyU`cGP-mb&^>L%Q*F z)0tGVxh0)!YwtLh>1=Q9x_GI(=X_o7<!rX^N^T(2KRA@THhjHjB!8oGv@q6o^HyPe SB7bLcc<S!p^i1v)Wq$x*e06*P literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/lrouge.png b/src/main/webapp/apps_extend/images/lrouge.png new file mode 100644 index 0000000000000000000000000000000000000000..fc06053a30d13c4b166d168f18c8322915ab62fb GIT binary patch literal 268 zcmeAS@N?(olHy`uVBq!ia0vp^HbBhB!3HFY{pzm(DVB6cUq=Rpjs4tz5?O(Kwj^(N z7l!{JxM1({$v_d#0*}aI1_o|n5N2eUHAey{$X?><>&kwOS&ZMD$=_t53Q(xi)5S5Q z;?~<s8@Ub{2(Ufy|0r1V|M{yW4-`DSr)OPV*n3)3M#f5G<t+KW0)e8R9$}f<kzqn^ zJRAFrf8DG$-^upeDx2y41^3tjxAxyn0{J_Sv+P^sC|la~YTrlE_;00B2~6J^?Gog- zI{#jIaObB#OQU6&qZbA(Kh~f6_I%I*))+9_v%rQS!uRE`9~ZW)0XmAo)78&qol`;+ E02vuzqW}N^ literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/moins.GIF b/src/main/webapp/apps_extend/images/moins.GIF new file mode 100644 index 0000000000000000000000000000000000000000..26a56333d9269c6513e4fa50262c893c28d563ea GIT binary patch literal 838 zcmZ?wbhEHb<YwSz_|Cv^;J|^FrWS@#Fd70QG6Zx$z6Rw51`cfoMh+Q|fP{u-4nZlM l9RdyvZG6&VH4=dhuHAyhep5UqC>`zP6IN@9Fi>Ey1^^Id5|#h} literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/ombre.gif b/src/main/webapp/apps_extend/images/ombre.gif new file mode 100644 index 0000000000000000000000000000000000000000..bc8ac426e96407a25829d9a6111b6fd30a96e527 GIT binary patch literal 859 zcmV-h1El;%Nk%v~VFdsb0QUd@000010RaL60s{jB1Ox;H1qB8M1_uWR2nYxX2?+`c z3JVJh3=9kn4Gj(s4i66x5D*X%5fKs+5)%^>6ciK{6%`g178e&67#J8C85tTH8XFrM z92^`S9UUGX9v>ecARr(iAt53nA|oRsBqSsyB_$>%CMPE+C@3f?DJd!{Dl021EG#T7 zEiEoCE-x=HFfcGNF)=bSGBYzXG&D3dH8nOiHa9mnI5;>tIXOByIy*Z%JUl!-Jv}}? zK0iM{KtMo2K|w-7LPJACL_|bIMMXwNMn^|SNJvOYNl8jdN=r*iOiWBoO-)WtPESuy zP*6}&QBhJ-Qd3h?R8&+|RaI72R##V7SXfwDSy@_IT3cINTwGjTU0q&YUSD5dU|?Wj zVPRroVq;@tWMpJzWo2e&W@l$-XlQ6@X=!R|YHMq2Y;0_8ZEbFDZf|dIaBy&OadC2T za&vQYbaZreb#-=jc6WDoczAeud3kzzdV70&e0+R;eSLm@et&;|fPjF3fq{a8f`fyD zgoK2Jg@uNOhKGlTh=_=ZiHVAeii?YjjEszpjg5|uj*pLzkdTm(k&%*;l9Q8@l$4Z} zm6ev3mY0{8n3$NEnVFiJnwy)OoSdAUot>VZo}ZteprD|kp`oIpqNAguq@<*!rKP5( zrl+T;sHmu^si~@}s;jH3tgNi9t*x%EuCK4Ju&}VPv9YqUva_?Zw6wIfwY9dkwzs#p zxVX5vxw*Q!y1To(yu7@<y}iD^zQ4b}z`(%4!NJ19!o$PE#KgqK#l^<P#>dCU$jHda z$;ryf%FD~k%*@Qq&CSlv&d<-!(9qD)(b3Y<($mw^)YR0~)z#M4*4Nk9*x1<F+1c9K z+S}XP+}zyV-QC{a-rwKf;Nall;o;)q;^X7v<mBY#<>lt)=I7_<=;-L_>FMg~>g((4 z?Ck9A?d|UF?(gsK@bK{Q@$vHV^7Hfa^z`)g_4W4l_V@Sq`1ttw`T6?#`uqF){QUg= z{r&#_{{R2~A^8LV00000EC2ui00jUP06+*h009XUIIdv9e+UuMTDUMF!cGt&E}J+p lpGAufGya>zk>jb4AAyM!iLGQwcPLT%Te(uBOP2uw06Q>GnRx&J literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/ombre_h.gif b/src/main/webapp/apps_extend/images/ombre_h.gif new file mode 100644 index 0000000000000000000000000000000000000000..ecdcb9f3806062d93d631fdb65df9b569bbe20dd GIT binary patch literal 846 zcmV-U1F`%^Nk%w1VH5xb0QUd@000010RaL60s{jB1Ox;H1qB8M1_uWR2nYxX2?+`c z3JVJh3=9kn4Gj(s4i66x5D*X%5fKs+5)%^>6ciK{6%`g178e&67#J8C85tTH8XFrM z92^`S9UUGX9v>ecARr(iAt53nA|oRsBqSsyB_$>%CMPE+C@3f?DJd!{Dl021EG#T7 zEiEoCE-x=HFfcGNF)=bSGBYzXG&D3dH8nOiHa9mnI5;>tIXOByIy*Z%JUl!-Jv}}? zK0iM{KtMo2K|w-7LPJACL_|bIMMXwNMn^|SNJvOYNl8jdN=r*iOiWBoO-)WtPESuy zP*6}&QBhJ-Qd3h?R8&+|RaI72R##V7SXfwDSy@_IT3cINTwGjTU0q&YUSD5dU|?Wj zVPRroVq;@tWMpJzWo2e&W@l$-XlQ6@X=!R|YHMq2Y;0_8ZEbFDZf|dIaBy&OadC2T za&vQYbaZreb#-=jc6WDoczAeud3kzzdV70&e0+R;eSLm@et&;|fPjF3fq{a8f`fyD zgoK2Jg@uNOhKGlTh=_=ZiHVAeii?YjjEszpjg5|uj*pLzkdTm(k&%*;l9Q8@l$4Z} zm6ev3mY0{8n3$NEnVFiJnwy)OoSdAUot>VZo}ZteprD|kp`oIpqNAguq@<*!rKP5( zrl+T;sHmu^si~@}s;jH3tgNi9t*x%EuCK4Ju&}VPv9YqUva_?Zw6wIfwY9dkwzs#p zxVX5vxw*Q!y1To(yu7@<y}iD^zQ4b}z`(%4!NJ19!o$PE#KgqK#l^<P#>dCU$jHda z$;ryf%FD~k%*@Qq&CSlv&d<-!(9qD)(b3Y<($mw^)YR0~)z#M4*4Nk9*x1<F+1c9K z+S}XP+}zyV-QC{a-rwKf;Nall;o;)q;^X7v<mBY#<>lt)=I7_<=;-L_>FMg~>g((4 z?Ck9A?d|UF?(gsK@bK{Q@$vHV^7Hfa^z`)g_4W4l_V@Sq`1ttw`T6?#`uqF){QUg= z{r&#_{{R2~EC2ui02BZP000Ox00B+vbcz<RW!T2K%jfT(!-oz95;TZVAw!4|B^ErG YaA8A?5eIIp=n-Vdi5x9{1Q`$jJ1wo1^#A|> literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/outils16.png b/src/main/webapp/apps_extend/images/outils16.png new file mode 100644 index 0000000000000000000000000000000000000000..dddcdbd3039873c85b290d0b4126da8e424202c4 GIT binary patch literal 3689 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 F{sRg81@Zs@ literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/plus.gif b/src/main/webapp/apps_extend/images/plus.gif new file mode 100644 index 0000000000000000000000000000000000000000..1ba1341c853ad81ddb9877b92a579118f81b3e84 GIT binary patch literal 65 zcmZ?wbhEHb<YwSzC}3dFVE_UUyYaw*11(K0AT9#~lT=H;*y%Mt9V{OCc)k^$^O!&6 PqG*;vk*OAoD1$Ws0Zb9s literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/puce_h2-trans.png b/src/main/webapp/apps_extend/images/puce_h2-trans.png new file mode 100644 index 0000000000000000000000000000000000000000..913cb71864b36334573723550881e03e02e0247a GIT binary patch literal 704 zcmV;x0zdtUP)<h;3K|Lk000e1NJLTq000jF000jN1^@s7Owpy>0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU!Vo5|nRCwBA{{R0!!~6H|?=a-$<=p{t z{sROMh>;AUnPg>U=ggfu_dh@YF@i)K931BS{P~kXL_~yv5hT5A*|PuNzkg@Abm`J5 zfB<5KnPP5k{`JI(6XzLr@7@hE?EkuT>;8kZGd+CxkO2hl-n|Q=Dw!1&6uh22dnPR; zB*aiwRwfJ(Kwv}j^Yc&o`uduIYytsxc6Nr%n>U}DIB}vmGsprrH#gl6A3iVy1qCsv zsi`rXI(3RcOG`_7>eQ*ROh66oA3uI%c>DG(Sa(lP510)S1IdA{00E#i$sk8CKtMat z__-hkKmb0-7=@t_2E#$SI4C;w0OBRw`$orljh;n1dxRe09Y`p+_(p{$0oMjT^5-W* z{_Gp>sNcvF`5-S`_|h95F~-wc3u`TqQUcwAfe+!mKaDYPT^FR3xYJC&2q6GP+OcxZ ztjWLi-eHWv?83)@)*3`>4U|$0RVjrv`2x3&IVU*hpw`NrX7c|=`3X=a8KX!D#b7wf zC?bNT;5|IS9^f@o4E9s*MQo>>E3CyHU{7FgC3pcVK}Qs1^93AS_JKTj=Kqs?$r;3l zUY}Z}W3p+QN)$!1EQ?VahC%wi|JIm?3V#fea=`VeEKIbnt8CjQ`@Rdtp67}0`w|3! zgkfkV$_SJDg>s6ba6p`<$%K4mS-!j1)iN>f#1Y>#%?t50%Q9of1ZbA~d=8_!uI(T3 z=n#K(U3ZJ)Smt>)6G}gys;aDH_U?#7_wHGD%_T`<fDn`6=$U;$3_!-;wypL2k9MBt mj@=*w0*uHsjw7@CL;Dxnm0VjM2P?<`0000<MNUMnLSTZ%g+Lkr literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/puce_h3.gif b/src/main/webapp/apps_extend/images/puce_h3.gif new file mode 100644 index 0000000000000000000000000000000000000000..239cf1249968c883c18e84670f57c25ae885a76f GIT binary patch literal 51 zcmZ?wbhEHbWMyDyXkcVWONjjc|G(l-7DfgJMg|=QAOOiQFmbUol`Xt}-Y04y1A{dH DL5mD~ literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/remove.gif b/src/main/webapp/apps_extend/images/remove.gif new file mode 100644 index 0000000000000000000000000000000000000000..08d083355ff1b4e99b9ef8139f28ede1485b50cf GIT binary patch literal 949 zcmZ?wbhEHb6krfwXlGzJz`$^jh2@BVz)=yA<1#WQRaDNJn4Gt<xe^d?H6-L_O3JN_ zj5`GdcS}m1OqlR|&YYJ^mb~7u;q8tc@Am9@f8fA}BS$`-IPvMsnXfl)e1GuZ$CD>N zU%dGJ;lrOVU;h61@&EsShEXsY0)sdN6o0ZXGcd?A=z!b^$`cG6lNjtdWNtJvwem3w z^YtV!G#qAN*V6d2fsv7ciC4iUL4l!xsfAfr@4<wCW@k2TMw1yY1RNT;nRrDQEH^A| zW8}0eVR+z>=-tS}R<nR1!RgR^CV7Sv3JWuQ+c~EuJvb1oaH-KT`P?3@4{7K41*4c| p%y^LM(XPUt<-x%4^gx%mao(FBg-VB~38?z1XdG;6?*v+G4FKH^bqD|e literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/remove.png b/src/main/webapp/apps_extend/images/remove.png new file mode 100644 index 0000000000000000000000000000000000000000..08f249365afd29594b51210c6e21ba253897505d GIT binary patch literal 715 zcmV;+0yO=JP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004XF*Lt006JZ zHwB960000PbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU!T}ebiR5;6} zllx0kVHn5#Tecsf1c`2hgi%nK^D=kV+T5njvrLa$EMjSnone|mjm2E}L#U;8)yiKo zO>C4}Mrzlg<+1Y8PEBfUp0jJpx4B>@E+cy3`^(Gw`Mf+2&yxZm<$to~Vpgvg&QKNR z_f#1(r6svZt%iF?s+n<8X?B&!h3g9Dbb8_=MX}!;HiQSAh`bp^WMl~Z-44teO7W_Y zV4thSL{h;rJY7!l3%5J4H1!tIzB`Dv+YxO(haWeausGZYkI8^hWj6mzo=L0{%;<E2 z80_Y*w_}NMA$su)e0B@`wrYegSP*HT5w@N{_}&f79VIb*XrKGBY>yxzh{5!Htr?51 zvG|W62MzC8BZ76hRpCyO2zOn<%e)K>NHge!-~)Ap33OdWw6hsLYbCxGNt0%wk_2z7 zfyYvXheSG)5HRK1VB~%mq7Dmurw#bi@hEcOr3&G1ZiF*$M=&9nB#VNf&Q^r$4G5kp zTURh&s)E0%5&hyVD}sp<72~zmAY`Y(9aqO6CXF%=zFHGzO-A&I(pE}v70YQxCPJ{Y z4L+?5-crdLn3ZRPEs!A4ehEY3ZRpL~w9>@aMN+{F4dI@v&>(QDHQum!mG~E^$OS8l z!7?%Uwib*ROP67Hw`ika)gX-(<Pal@1N`)16#~~<@x7jghg9OTS^;mJ8T{oIOsMnG zla<QHU?S-#Kb7w%o*dlEj!JgnOSKW+hV$`!syc>8Ia`-u_IEhxG7U<13kSsMW+$<e xd62)I>lbb2dUMm5p6pa}cjgA+U$^mJ^AjD?&bdi)8~y+Q002ovPDHLkV1g8IMc@Dc literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/rss.gif b/src/main/webapp/apps_extend/images/rss.gif new file mode 100644 index 0000000000000000000000000000000000000000..fbee103516d244bcfa028b6c98c2b9c1f90fe699 GIT binary patch literal 579 zcmdUs+fR~l9EZQZSCm5@7%8UEz```oLS=*+(Rp*OF1)u}Z*;A@+%$Lvgf(C*m>X{B z-eLr9dXa~^$e3>GS~Qng*+sU=m2L`~%5;9zKcnX_c%D7?AKtred?F_~B`uWURXBks z{GG(RR(KQ$)#7s>0va40!YRfak3}!O4q+e*-+cJ=91AazNn_XmzYabX4t6oy14j-% zK1IThKU46QAbbbHZEXI8Q;Ne3{>{R##dH^<j}bLvq#3SUyftEX3-b=l+i|dm^ac_^ z#GhfT9dlN!yupuA?C)T_10T8(X~S|5U))G-Ap8LFe#BoOxr9IkcGgb{=>McFBVt4r zsyWp^eL~_;zr||f2W;dVbU7UbSst&ifUHz}<wnCLQE*uF%0i_~P#7=gL?R)&X1E{~ z>KY~QC9&+8i~6gq_WVqCth`=VC@Z|lOlp}dCKk%%`9)PMm*Zk*^KJ>hnwUbn_WJj^ zGfZl(RI=veNKFfuuVHdd#Y$2%(JOhhYBuv!eRS8Y?Tj-u*RI~y)_)&$+x1GBh)l<~ Cvc`@8 literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/rss32.png b/src/main/webapp/apps_extend/images/rss32.png new file mode 100644 index 0000000000000000000000000000000000000000..28683cca11429e85d7f551580a7d71e4b0fc5413 GIT binary patch literal 2839 zcmV+y3+VKTP)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F800006VoOIv0RI60 z0RN!9r;`8x010qNS#tmY3ljhU3ljkVnw%H_000Sga6xAP001BW001BWhx(kI000Ub zNkl<ZSi{Yic~nzp8peaRwY8hm<LPudZB**CQ(J4XF4Vd&Sj%)!>#=7XYp0u9*Vaze zL9rsDf~bgbMQ}k-Sril$1wnx#C`iH%wZRKYAU8WCA-T&l@4cZS9-R5NIp;YyAtb-& zeZS{>b3cXR_x8B)x<XN)RP<K+D*9K9Qz*M>`~#XG$*W5fdwDdecb6tVMtWSSnfOHi z!eL&$OMH7h8mxKWOOd5ec-72!+UL%fN>$6c5gNmmiHu?EWX7;%l1HHv7&c@)!)_YK zu)!ZN?8Y$+yTO-XgGMv#x{(YUID*mtXE>u@<HP7z4`cNI9?Ixf4PkVP251^SeL+>@ z|BO%08w#)TDNl8WSAW=70YFhd`ws!FL8G)C=T<>1KMMSkN=oyno}Sm81!~U#)yY6r zB2aM}C_f2N6A!WM1jN$g5N{rZcq0~K(P4<!qahUR2Y(?Lj@=(axA0YMeZX@8^kGG{ z|Fc~N>Sp#+)XeDX(;75d%U_QG8gqfW1*CkBnk40U)OZcJL+>}_0NN|SuUTa9GQ|2! zh;<hs)?R>Eoer_;Jj9ALDkPN*o+V@Pa3B8)x^G_5N}Z_t`|}=n?Z?k4;;Hp_z8s+H zIKK*DvLG_KaMPE&wb|fEyq5mfK%hI>B)V!Z6F8H=7pXHD)D;5OoFga!D+yMSLeON0 z>O_dQPC+O=385r`IuZ+egdZB__ERPGRd`8k*?@YqqJPW!ks48bhzt<)*Gp(`EJcU0 z0nXMsIPR)pZ}=IG`YgBzDEyL6a8lhlg46O;6SRt;6$I4~R87!Z2?Ra?;bt6!;$sks zjzGA66kOtWX#VPDwPx~@{qGx~R1YwOO=(0;0<|_1-0ciFTB-rw0dRJ}-43zC3a+h{ z4Ar9j_BA-GQo&axd-708(DG9RPUy@6L2nYYn4m>55DKL%9F)bM3xa;BH&ZdSkFv`E zZ86iX4;j>)p!TMNt51Wyxm*Uz2D(WyV}Z+{MO$4C9Ay+jHGNJUN9{favE&Gakf22b zEj%cPP{`j4;o2SuSEC@L1%h2Mn5pd1K-Dqe_F3?CDX>wH+J4PL`<)^<nk(TlH$rfl zWdpLLuFz}8y$aY$6XCu=slQ1oK16Fx(4PsKPta?-A>{6YaAgOC><9>Fek230J!F6e zi)kkrsEDC;O(IcCYfnR{K1pp(fU6=Nc51PWlHJ}|0?wu*18pQ5;IhGOYJ^pt3TJ@| zVj-!3D$OJ4Rf6VhCvX^q%UdC2ZULY4-J=XlXP`L<)Wp-eN;=W0ING+PN@{QU5p>*& zfsF#z-cSUgT~7wAvUpnynK%z;?hc68sM6eU0u%IdDEQ0}ngtudXZ!^I)Dp1Ey_w2s zPd;Q|haZD76@iXIAdtN@7LHr71UwABESl0C4QLM2TGR8=18`nf!9uNfv9|%r1Uk$R zY_0US6gVzzhL9Bk;ZiV!iv&$yPvHv$pSl)&{5L%r@KTy0rZFguB*-DSO7_E2ec6+E z<|eGw7ht6c=O|WDy7vH*iX*}0N5GuF4~`}^;55nNEq7tcC*$esAY=qWI8V^jAHkpb z0etfJ;E#O{cG;kw3`}KkV>@tbFI>gDDS-K&T|jFrrJkcNZqpXROxwzt7Y^}fQo%Ox zxtn3m-VXbnQov!7<<ix{m_h5Ex(dQsf+nv7pSVnJKNmX>?9zc`;HifUY@foQXe&?> z2^WoHOD#=5r_s}1d7Uk?INA+n3Y;yA+ME*%@d~y0(mEJ3x1poC3a}ex*($SPJG}xz z(h>qM2A{AH{E4r@9hyT120Ub7LNBE$YyyKE8pV0*!R2j)>1sI4#j&u^EVnn6f^Tb) z*BKoqh<28iB@32}AWHUHh!<DGmG(Uh*}K7;nt*l#1oJ%@E=Hi^_~+F2`QW4HfK$x? z7v>9g@t>JWzo#ECFtNANv~?_lj4yzUFM$hRlNLg_uo&))Z(%#X5^UBs*nYW2a7w;| zm9LiabXby>K|H$%V)ECp#Vvs8I!#mB5t7=<FM-`L6<qj8aG~$Oz45Pb2fYS%(Vv*g z>D>%GrZk0)VUV@}UHS}S>SsXeeBjJHxKGao8~0Bb3Tc;EsLD1SM7p+SMxgD$bO_OY z;Py>~?!a8Q8p{C64BuLh=7S5+vFS~4B==9R!@a&I1Cz)=h%X}&sGCy$0Ws-Q(p(^M zF2s|cz!*CVh64J%x89>Fb#UD+hc0#j-1{a#AXy{Ez;I>1Yyj4~FlN(^+AsuMuvGnE zGT_~lfyb4m;8BbO5+x8pxl?msiu)A$Qwyo``EVW&fEYg$LfpsDN6)5^Wy%I58S^MB zyT(J<GY;;Zqo9jkK-Jfgi6%Je^3f9F3-^Y<$kn^oJ;H$TrxA>JayBIK@w3nx_c<(@ z^KjEFuxpFZoU#^<n2#VH^M{MttxH%AUK&EyX1JO(XxTR#T%<2}GN2C|4|{cvXBk@R z&>S@f9f5;nc+UnVKcO^k7|sYMs7g{>j6V$dH1*nBJyp`xe!Gw={{%wJbcl!jU{v|h z=uMa37tKv*Nn8tO_z3V3BVpP6E=;+HJ<DKX&=R)__B8|kkAd~?GQv@Rh$PFw8L*Vm zJ)pGp<h7<Mb=7E%nFs#h6bK}H)HvwVx88r>cr_Z<E$@L39}fGbx6qm#MDRvZ6Ab6J z!@7Fl|1dD6kCI*UHX|IKE?4L{FcmFnG{?!kY=UGiNr7?CGzj}Afv2#!caMSY__z1} z$5xgOW9UfmTZh3J{3cqCE`?|$1D0l(b7Ns%;|;FUfc~48x*O1pf2_Z5`Cv6qUoKTA zRcRua?(7Cw2+UsD2i?9|a8by36=}~{dA*w>{b@ezrJ)rKT}m+6P1J$Vx8b7wem8su z4WcNRF73s=BP(HA?J?jA^hWc)UQ}zQ_U*bQJ54vG4f9`8Il@L!brU_>I|25{u`ur( z2iwjM;EwtLyd<ie-z9}@H0)s`U=8(wHDnm9!9(Gs)^nSN(7<^EZGnSfSu+Th)q`NA ztCPSSZNc^*lyp=2f-0$B=S``6TORPdqQ?JOAKg-Kt$XMDa)o@<SQ#ipje#IRBj4`? zj{-+Q<F>y?V|6(AZSR8L@(%dTZ*>lvH}3Cusp9*h*BxsILHETUwKacxmTt?Rd*ER5 z(KDWd$;^HMx+Md(ju0PkJ4VY@dPJSsLC}a1_rV;2IRbN`L&1f-<ry^6r0azL7C3ij z+oj4SczwY0bTG;8elU?9<&&OJTzQ#}X4Hv>c`vGTi<BDu3U9{n-C)vd9<8L;D+YPA zd>~_3Hh?iKRWj_7R~h!(R~UBj%Z!xp2PFlL)?6dCU8+212p!F)J^ko2V#(-Uio&5@ zy)~2i^sk_w%%0U(S>e|u>6cB`^qwUJ?)s?5dzXys^Se8YEB*^`LLi)um>(<v001R) zMObuXVRU6WV{&C-bY%cCFfchSF)=MLIaDz=IyE*rGB_(RF*-0Xs7j8?0000bbVXQn zWMOn=I&E)cX=Zr<GB7YXEigGPFfvpyG&(RiIxsRTFfuwYFo`Dw82|tP8FWQhbW?9; pba!ELWdK2BZ(?O2No`?gWm08fWO;GPWjp`?002ovPDHLkV1f$OBVGUi literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/rss_over.gif b/src/main/webapp/apps_extend/images/rss_over.gif new file mode 100644 index 0000000000000000000000000000000000000000..fa650814787cf5371057939b6c52a6870ab7e9dd GIT binary patch literal 599 zcmdVXT~AVR0D$p7r$eM@k>W5*gUYQGU(13h{WmM;MXlGHwsa>Ug$rzCSu95RlGwtI zrHeJGY^Merx#5&a&wbyay78)uF1zz4vyahl&o_8_de3{jnoZcm*E0fbE2W^>8Bp<? z@mmO#5G*HHLC8+nLAZut2g9}8t>>PL`)(ez5p5vaPPBtq6OTN^T8R0GdwJ5y)I}1P znZCyJ8zirgyvfXUX8O?k(KYm2=mWeQ<W-RQ+q}L*Dnu$wD#Dux3lB+;viKBZl21u8 zb9{bF{v-Je%NbUdDC8+Dv$n$8D#Zd{iooXo%=Kq?cO;;V1pLm?;K-1(r}x4o;o4A5 zr6MleV#~i#!t(BMd~AGTa$HGFKTAwCw!hG48<jC-f9nyKqiP{tH5XUh((pA`?8;`} zD>W@gyA02svemMjrC56Kq&!_&wB)Lr_F7fzF?nK#s^*+VXPv3UD-R2i+u3m3__j~_ z%s=M8Z#yKr%D11A_MeOO2ZX6Z)`>P*`&-HX%3d|CtG3F`4{5P3Cd|Sn&+3lQ?78l0 It634gzu2>2pa1{> literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/s.gif b/src/main/webapp/apps_extend/images/s.gif new file mode 100644 index 0000000000000000000000000000000000000000..1d11fa9ada9e93505b3d736acb204083f45d5fbf GIT binary patch literal 43 scmZ?wbhEHbWMp7uX!y@?;J^U}1_s5SEQ~;kK?g*DWEhy3To@Uw0n;G|I{*Lx literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/tab-close-on.gif b/src/main/webapp/apps_extend/images/tab-close-on.gif new file mode 100644 index 0000000000000000000000000000000000000000..eacea39b623348f656de9a8f0df4ac4b74ceccbd GIT binary patch literal 880 zcmZ?wbhEHb<YwSzXlG#X4UZ}=DQ@lWpL_W8nfpJ^Kl*w3$<OQ0f8Bcd>)z|%kKX-x z_TkUV&wm+4!Dt8!#}H8b$pZA&e+C_p=RkRafy0-9okPYWK%u#rLy#**AmKn$J2Q)p zz={Nh21Zf+FqsJojYs=sS(PMy7OF5cvh&sKnGv+0v0q<*pG<%Q!&xR)rDrk@3zqxO MXKm)=;9#%@0E9$42LJ#7 literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/tableau-bord.png b/src/main/webapp/apps_extend/images/tableau-bord.png new file mode 100644 index 0000000000000000000000000000000000000000..e13d91c31ee29195697bb96890d8b7019add39a0 GIT binary patch literal 1010 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b zK-vS0-A-oPfdtD69Mgd`SU*F|v9*U87?{3!x;TbdoKBtW?IY|car}C-TGht~or^y{ zaO8~Z(D=GSO)78Ro{EbzGMG9$6}mbF8zVBhKTY6Tq$VZIY3Cu3@_WhMyaoNbtwB-K zxO8=IT>qqVLF)gxo(G@3>t@#P`)l+wHEo)9mei`%@{{&$pXq)fOO7>mtD3&t?72L% zGS@dwFYrlTvF8cf_wcE9M&&Jk<TpN9<8r02yFhr)S5>vvs6(|M4(l7f-@$nCYPZwY zmA$(^Y<X~C?!MaJ??2g_TP*#(X8S4b6|yDH#u>+r7fbr{l$A*7W|&%BaC>1AaUrS1 z>2SC95i_qf>tiQw_YJw_xHr8}ws#vx)4uN~cCFr^cs1d2H1EluQl9?ILM*e2FZrIB zT&t10@ml?%b8NdD_a^%tWVYi7)@b9q&2s8~*NPXC2fxbkpQ?7Nf7&G{7+M>*;+E{U z$#0#`9^B=xwQh>UkIC5?8_ypQjc>kX#(pr{@yhkyj`yq!r5B|*WW3>RVhMaCDE+?a zg|wUJ=9N>mRoULHVA`6<b!a+|A?HE8$cG|UhFT?upT0O${hA@?kT%;{JxBiIGk8~} zEuLrX$@Aojl+~NWp8D8SHK!8UcP0|^crM6?DCj+tF!AP6IJRlQ^W!`<pSiZQDa<LB zOiP+{+2Fhek9WjD>wK9SjiU=@e$z3QydeFg&z$##`(p14k*O_{R-ZW{8r`^O&halr ze8$?95l=<_oYZN4X7I97EX?tIzxIw*yCXvW?%BL#WxUk<_@-+TEw*#i%(xDV1{#<M zwoCXKW|U2ymu$u?YO1iceZ%@451lXfojmf0OX#MJ*!AL^((}s%0ypu@3YM<?A$*%{ z%dL}(HFo^@kP}$C{hv$n{wIAY0v(z&R9GH)Z(w~SG27cXW1f<&_{@dRzdz64ID5nQ zmR<hN`KiUPr8h-a=1eHHTBopi*U1Hy+TVGNDy{ePl&zXRLuTjw>fiSo^w%1*3q@V_ zzp}@Ep`o8q#<Ke-d?uY)wX;4uzwqY5Sl86_9gCmW1y}sr?~~>?`Q~AJ2B}4dq~<vk zdjYe9YKdz^NlIc#s#S7PDv)9@GBB{zH8j*UFby#@vNEx-GBMLOFtjo-Xgjvb7DYpD zeoAIqB}9XPxvsHch@rWaiLsRdP=gUr!|&a9)PWi#K{f>Er<If^7Ns&crsOB3DtP85 brl$s_CZ<#to=mj?Dq`?-^>bP0l+XkK7~icF literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/tableau-bord16.png b/src/main/webapp/apps_extend/images/tableau-bord16.png new file mode 100644 index 0000000000000000000000000000000000000000..3a735cc018af344fb07a3fd4074511cb0e4ad821 GIT binary patch literal 3563 zcmZ`*S2UarwEgrJUGyF$`j`<tN*E<Gx(K2Zg9w5dEtn8Bh!VX;?={ggM2`@Lh)57! zj3^UC8|C`%+kLp}oPG9Md!4<`%X!#w#)i7I)ST1+0MP2|X`5a%!+)S8zn**tSB?Nc zE$XhNW$f<k3;=;Y^D_d>&A+q8Oke_ni@tz}O{0HxeFUaL((Is)SsV_xN$4PQO#;Ql zj8N?yK|SLE^rW$ng?1AIi+Ll35an%IcBr|ex6aI~`q~f2`}>5|TJN2A#~p-i%!D-? zkXj*=nMn>KO8(4@k5tXWF{YUKZv$u|UI(-o0JqTTv~LWdWEdI!5>+7JOKeX{gb%j- zK<x7s3qc!FTosmD;hw+P%mNs5-zjlOGP1=g3d546TPNbPI5Q<(*@a!ZZ)-A+#wj_b z(5ew6n@h5ORH?Sc4k}f=GyCDRd-HEATtIgqwjq`V(vc_0xX9F`6Awz4SW#G+HK&7+ z04(~RY(AE8g7S>AaePc`f-CF5k{*@)v-yXTOD;46nZEk4iDf@#CNh7X4C#gGpE;Vx zYc6Fzq{RJzh(z`X;;ZeH>DTNJ+yLv|xfOWj=M)s$D%aBbUQP}IzNj|7LLPYEpPz#U zbDVS_80xNG?KGTEaRLrwaUSmuUP;wcqsOIyPYVR6uZjS=w9=dBdrv35fvQX#v1Vst z(=!W;493iUFcaG${e@9XPf<fRLP%}*^*+{C=`Y+d9xYwZB_Snj@Tme(3bEquTrP|` z;iI@j@{()j1=1DvGecj-l_!kC7+P|NH>lg)Rh2W33v*8B`!7oeJ6PkUP8f}y6VTI0 zagDGYirdtT{F8)1+p7}q?h_DySkSU~+AF`SJ%tNIZ`q1)WG-H5T=@3Oai)C;+ws5z z(_11UJ!0`>iq9H6n}C)Bc`aJXht%sM*GVJ;1C<2{s~%|;n!Z_scb1e|Q+Af>2<>4^ z!Kn#xBOBHfRU{jage`Hl6M01v99ZCJgahjbavBCwM**<*i#36pddyQXWBlYU^c|Yr z#tbY}gZHQy=$Y;XVO=ZP#UrbWf-5=Bc$KO0W9l^`v9@kEa-zdxe)UqqBdQviYRS0z zZ(QGdp|$kDhxh~ecofYNkB{&?z!#;mbb!BeBCkrV9{HOA&A`Z69M3LzV}R_hZgFzp z%h$EK@yXPsMDEbe6ty)GaQqm*w+TB78B~{}*wdt-(wK#&g}jCLK}59<j}G!}u!(|+ zbEVa^t{g{Q?2PW*TMU+QlhmKJlfm|d*S)q9nPTq}QEY=O`wiNX#HPMLCqY^Ltd=aM zF*P{X2Dd8%Bq_V!scGLbw3cUvZ*+jVF=|$P+hp5nn*l{kAlDtJS{n1&ZNJS;pZU7x zBTsLBFYU6(GnzoL4<f(F_g*7b{qSWcI?oj@mBWa8G?GQ!n71hfUJCVz+!HQJ_esH{ z@u_-3)r@s<FSMnf-D*k=ObE<Y)Oij|6~Lv~=uHX<xKrR5aNIa)oNzXLMo=ZS<P-5e zoiF5+_>}Q9krdje*9VJ`YSJv$Db{k*Tj>z8Gc}vi_ib^hcZph~8u^n7F%1-x5@Qo9 zpAN3#tV%PzW$HJ@;%??1jx)zG;ciVmEUj>91Y3i>z@FK}*^yv2mmx7qX#UDQM-zE7 z&TAvH`Hcs;TTp{yR<oWGI%CA+$1a&8(Ic*-GoK1Fc*+Fiq;lA#qAc#K7;=?k9u>bI zaHm3y90}LKqBF)urPBT0tbV#V(lWA;5h7}o8IWd_u_(MKc4bUd_O^ndGP$hLez~}B z%yi3iuB^5U3VSVssi2hD5+fI@f1p}9+n`ucTDw;Crrx~FU(;PDyL`JcuhgdgxlWLE zRIyV--vhCSN;Ug$q+tQY6<7%z=FsW^^nuZXA`i?KdMhHQ)w<HU+dB8B7BWIv>#iNf z2BRBlp#|+Xx@A-XT`dr?ODoE*?0ERj$j=V;NW$hxjYY-Go7TM6OjJGU)e#9#b5i6u zXFhrUqfU0)Xs_m7wFR!=#)2rjV!Om&$WY5g)54k_qi`(n)Zytzh#QDqR)|BH!<Dm@ zJ&9v7;d$bIqH<yZ*AsSKjy>=$<kHQ_G1Y0x&3Dm!XnIa=@%`Lk0OT$t!z%HIlwWg4 z*D3jd^a0!GVdk@p9edPpgwryj>09yeN@Q8O@M7~f-=FvU#b>H#JYH%(CI#JR&#arA z8K2>*HL~hyX?o8%%iVVRWd<w%<0y7#+IMF?Z#{8zcxQS$3-u3Ga^z32B#<1H&{fmH zW5{EMleUsPhed|<MQtmDDoP9|@(uD%$9KjLq~)dm*o=1w*7Mdw>q)%8UPWHtyk5_L zn`fSXG>^C|sX7y!cc2||7P!05{nvEgDd<kfm*7W14F|jb1Wri_<^<KFZwKoH6rnfl zS6J5tZ!OlQ_t7Md{v2~2Kv2JdrL$zlJM)Wx_!~v=`pNFbcE<J~VMUP>J^UYr-^o+S zgd*jlK5PMKq;a!xqw&<|JH8n|Nx2$}Wc)68Q?Mh&)?~J_v9i3fBi&2lxHd1gHC8%- z*RBjB9`Y^y8+DDDMPX7(g5ywLEOa<}m^UtT;t(MZ`n~dD#bedgO1c(Pi}2J%DTU-X z4~wnBhvo(|2aSYhg|`i}4E^<L_41ZGeQG*nQdQHoQa92r(&&Z5?^7AM!v@QS$_v&; z@Tox<_s{M>+#_*kxF}r76VI7#E6C{avch8xjv8<$srlrDd5^JfJ5({lz0fM{R767Z zk9MoSyiAw6t_&h%+@(Hbx9y3^6RRg7`{oDo>xp%K)(?Alt@+xz5s_!n5wy%)cjbA1 zY0tj-fU9_(cHVscFt=YJfbI58Pf7O0m8P;X<Kkp{#pZ9QCkyh^^1H1sb~ff}TEius z*leZb#p-W|+4qTeoF(EE(iflqWbAQ%JKgMmWjJQ|Ykb+3u8S^HKXW}Jaqnnu!NgET zMm)Sl)O8{~{_#y@2vtZ_h^|DaL|3(3HOd0hU|8F2yK3{*qQ<fdg9_sdS;U47U(_M* zBL|UtbUyU+RmYWkZdi{>#aN}RAiTb_rSoE2f_H8%OHO>Q8utnh=Us09_O>6@9jCD? zDO0TN&{=S(+}UR0o=wjmk2{`q-X$$J`ACLe4i|*+5iao03RmxnvWr@WW6z6P^QY{l ziI8jlV<-_+5(<i<EjU#B@%8E4!ez<i>lnkTf@&qHkj}#!%kbW8BZS|?cs@*B!B1`Z zJkSU}aY4h#=Jk*Kh|cD)Bk(kpP(~AK7>baYvsFV5ZhRi8NvO&HF4=%Qe011$<?`2z zfL_-aM%MhXRjBp$r<dkag{*=6FU$XYfwg_`vhBjG94+~5;`38BQzlimRm=j+cDvg% zgS?k7hbT5Fp!8+D7OJMtr}6K0C!UsMlvE7c44?5)sCTQ6bA}(mhGh0csSA<|&EeH> zd82HD{2Wwa_h0|@uW<<61gk4`c=~0_QOEcJUzp!{UAVjxYK81-uwoHr_qj*)(Bnr< zK?k}+x53O_W{eG!67F{*wfc0i3m=e1W3|_`C!xL>wt2aE@VB>O+Nki7j3n#eTywt7 z?K(N~JL{Pm06?%X0H7lQ;PmR6aR7h>0l=0604Qex0GoHJ{h-eEF1Zs-R~xwcuij!R z(ykRMA3ZBS0H9&|4@6T7VdwveC?8G4HUDos1#E`u`T>BrMPFOfTyeC_%*u$<ggxJW z`U)G4RhLaP$Z1t`JJa~tY0mhNHGP^hK_y;rNryZZ9YNVlbwlN*GQSGRnW7Q~B0pIg z>X(}4XSfk|JP%ROGLZ?L!j1j*&7Q0MmHxdZegDjMJ+AQMMWkufd)8OOc4m*0oZGG0 zUYK)z$I;b8R3`-kgk-jS>R&lz=<1P9rl`Kwsk!Cyjw8p@*r|S&btusQ&W8d8^l61* z`{rd|i>-*lr7G+0-X41j=Zo9xvJ5~P*R@5#MGVY(U~LI9lLMt?wCnC{oErs_YqCa` zhY)R<*<E4Q800u_-m-H0eFMF+R5>J}=3}5UQp^@^-FVmGs9mCI6N+&QPmXSB<*j|8 z?Am5o>ibw=M8vH+c>=uaLv|~gT*>Rvea;2uKX|OtPiz;LalXIaAnT1?ah4~t&#guT z(|^AV+>R~><AheJ(~CfH7r{dRc+FUO)pt}A#s%fhxHfs9+o_H_ysvus+$)nf9UxEv zPO7iwsfiF&I3sLE*|SI_<0&mXHy5M`OLmV8Y=AEjJW@Sbpgqd*vLsaw^|wB6L>YrL z%qHDl{*8jnwwCkTQ)wdN`&XnjnmBtYkWBV%9#h!iQ#qF>+#+<JzOe5yB$Si&Eb5vS zVehQs2PW0o29`|ez_xTGTOe{)t53%xJ6S5&WNW8Ej(yuVrR7soX!QZ=Ognl5vU9Z| zH>0JrR<!pVZNg3qsBz5Er6Nfnl({*v^No1(=J3%R`?rTne-|l#|CY|#54t<HY(?D9 z#XS@to;Ba#6quG~d3fs)x2wUO1g}hiMNI#jrs$CcCTZ#Zh|wS&GgQ~YMmN51<FHqH zc`G~YWk2#?C6$WM$&y+RgQ1b(qA7LMN}^6(ur5}i!9+cBOXjj<#5&#dhk~ly;nraI z0pI?5x5ovC^y2k53;RPY{aqaWA1gciKE5UZ3<4=hUAHX6TvkC@R#q7dmH>g3L7=3G htoHw7c<Sxq?i%#}8?I9MNv{onKGaaV{+>g`{{Unrq0ImQ literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/tableau-bord2.png b/src/main/webapp/apps_extend/images/tableau-bord2.png new file mode 100644 index 0000000000000000000000000000000000000000..4a8e0686ef00a70c3a7e1f40e81cb4c460695358 GIT binary patch literal 1087 zcmV-F1i<@=P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00006VoOIv0RI60 z0RN!9r;`8x010qNS#tmY07w7;07w8v$!k6U000Sga6xAP000mG000mGT*j@#0009+ zNkl<ZILnpLUrbY19Ki95OO{L`*^)UkP0U_gSCcJnn#_kKMwa+6#r;XPEPF6poOALZ z$(&D;)xwrdP}(|K0s^BJ6ma4+AcYG3M++1Xi(UV>v~UsWA7}*(Zp*$qMa=YZH~HqA zUvkgq<{oM7(Z+%|wdQXMYX@|NwS$_%nnBI(ngNkh>>ZkSbJaQ??Q0*;PF?Oy?yMwz zT(L#f<Bwaz)0jL#jKKiCp$W_(na*JHQGo=Vq14LSA!c(ljjG!lmp-Z3B1!vCDo<Hr zve8+^?>}wiobwfiJzsG5wt*i;XDAt7q{NZr+glG-))Lo!^uYxx&3;+huT}~`rL45X z<*T>U{PL@W)|5}j&`#2>(^y7~9JSx&VDB_X`cr(>C-bFcmIm(}XDk6Z_wg0rv;eLL z%4n{X(CgQ6;m#)9qlb7HFyQpsIcA@x*tNtF+bmx@GZ;b(PXI+K<r!;SzTs1&>&`>p zxQ?d54O|-8%9Ov1zoP97dCaKC(j2lTI4pqX@FG=K0TitQRW<?qq2`oH0O#^)ZCOv9 zYcto}JDK!Wk@2?^jMyo6g!tT?;9@X~#v1$&&<LP6q(*C9L$%`tu3vtU_O?y5N0ju( zibzE-!TbQxNf+O{)3n5v#k-GzeJZ6^05`=iR2cKn^*xW?^b)O28)zL<aK-lqL%w1b zCU267n;DI|xe?2twS{D9-zuQ9$7O3+O;ukW)wTlkw>Q(&_6}EjcF{4h4P$s0bIFU` zpLVh|KTcv{PTav0z*zzGM+9J&sP1`{#;(t(@A`<Q?!#Og-$Q3~2a%+TtN@lX<NWzB zEr76`J1a?hRmz|H<FY+eM#U8cXInm`&bpO`p^Y@Vwqxiz$mQWZxa0#QVkWZpMp%B3 zKx2Cfn2^VUt<-mZN`vEde)B14b8n+7`ZhhGBHH_ob0=9sHeuuM#Q^-16?Y(jy*c26 zGG)2RFGrH|cxEDa?gjBCLU?Dx_>vL)sR-VgDT1kKCQ@_6=CVv>mMAy*rlj{zz9v2Q zUh&I{<8?poDAm_(FEyNhsuQb~UO4~OiClV7qnP#eieok3J-hqBdPzLbi1I}R|FgBC zHU9#gT7*~_X|E0d001R)MObuXVRU6WV{&C-bY%cCFfchSF)=MLHB>P&Iy5*sG&U<R zF*-0XhQ_Kr0000bbVXQnWMOn=I&E)cX=Zr<GB7YXEigANGB{K)H##&mIx#paFfuwY zFs<VANB{r;8FWQhbW?9;ba!ELWdK2BZ(?O2No`?gWm08fWO;GPWjp`?002ovPDHLk FV1hSt?S%jU literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/tableau-bord232.png b/src/main/webapp/apps_extend/images/tableau-bord232.png new file mode 100644 index 0000000000000000000000000000000000000000..cd913151a599873cff66ef550231a98fc52baa3e GIT binary patch literal 1771 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 N002ovPDHLkV1o85KD+<` literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/tableau-bord32.png b/src/main/webapp/apps_extend/images/tableau-bord32.png new file mode 100644 index 0000000000000000000000000000000000000000..e5e0fc98ec1d94456294c3985462d49f75c643f7 GIT binary patch literal 4904 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 QKMDZyFlCv_w<aO~1Cbj=NdN!< literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/tarte16.png b/src/main/webapp/apps_extend/images/tarte16.png new file mode 100644 index 0000000000000000000000000000000000000000..69241868049b28d4b270d626adf64dbd75a3afea GIT binary patch literal 1034 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSpS?+AQ#RTNDC3(BM zF#HF>1$&oI28wVNctjQhX%8@VJDF_<5-cllOb60n^B7`|tv$@Zz^v@);uvCax->Z3 zV{)QMo%?6^>2LkRHN`|zmI*itlr4<^%h6<@xOAD>^7-1i>(*#2yxo(h5Ubg#6Qr&4 zroHLWm3+QAZ$DqokB-~FNmo}tWSaI|zq|A9mABa+;j<~Qc>jCO_c_n!OrNlGnvTGt zQjLzV2&X;{sYSKNH?*jjYigYMue*2Vgd9i5zOLD#RTtNoZHq8{t{Pc<PIq<hq|k-= zX2Np?oHx0!dWt`rV5~7SJ8Y6kpm=52m!ed^JulxhBwt{5f3I=R!!BjYH^om|PJ3Ts zk$vcrI>Xpmtixz)uR+ll(SzZ4uC~lu&|qir(NyE{>G_^tel_$TR<z0gruZvqcmE64 zSeGu5XP2hCI-Tx|t#tcf^KQcd*)>kLP5R$uTHE>UQur_9{(QT@9cM?6W<`-(?i-Y@ zKVA6tNZZa+$+|5U=1q>fddMu0>-UlDjz%vFX48Uxb0;aO)*JS{%l2tT><wP=+oaXm z->x~pcgpdonXlHaI_lQA|6xsM)_>-RV_g>>)Hfdcczr{E*y4rf+pEs2WK}V(c*FM~ zH=N<wtVEqtc~3o0S&RBAWQNVnozi{pzFX-3)QDgCjq-cAZ(ne}!R8fk@vrPtSz(QA zY4^_C{mUoGo3B-lnD=^;XP2|{(c)~AV{A7|zq9=LE^H7sqiLfO-@oUP653`5BP08k zKjM(<T)gA`k7lOd`7sMbb&@%QBANC^FEumyxV6&qz|2^OdvOmg)hXD^?U>c@GP`qw zxcy<?*ZeWh+zU4T6TfttZG%Dgwh6BSCUP)`PMUmXdC@z?k{am=J4H|2<9qUk#b@{7 z8Afj#pPrMQvqqv}<tz3wks5|ro6k)fI&wrL&)qO(yLVW6Qsa_RhevD=JVX}UbrIy1 zxz};>aNr7)=gKc{s;?-XBe#p&I5|aHv~W**=)&8RA|E~u78bPGz;<K%l%$(FP9|ZK zmmRHIeAeA4s)YN?y83RHf1wA%W~xP=y;|*?c|CBp2*0Hr-=~8XujE;}*FJl-r^lu^ ze9m+GCAURdijNxjUWr*;s+&Gha>n_jhsI^;-{jBy)}C8pwALhWc2~jMS&{+skKVW` z^P5}drKrQNVA}=2yrWv;8c~vxSdwa$T$Bo=7>o=IEOmj%&^W}<%*x2X%E(;Xz{twL jpxiNeDT;>N{FKbJO57UQWNu3WH86O(`njxgN@xNA^3c2y literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/unchecked.gif b/src/main/webapp/apps_extend/images/unchecked.gif new file mode 100644 index 0000000000000000000000000000000000000000..43823e52db80e04017b2bc1e031bef2d82c67e6a GIT binary patch literal 941 zcmZ?wbhEHb6krfwXlGz>`0voy-@k72&h=Y%ZQ8zP%g((!cJJT4@8F*OhYlV-dg#cp zW5-XNI(_EM*|Vq5Up;&A+S!ZOuUxr$<?6Kymv3CSa`V#FTUV~%zIx-%jobHb-@bF} z&i&hW@87w5@9zDF4;}*1<A;wPJ$&@|(c>qNpFDl?^y$-QVDS9;ix)3mg1{>fcnt(^ zUcUi>w{PFRfB*i&hYz1Vefsj{%h#`8zkU10FbYOPfHonZ_>+YhWU>y30Obh=jxGj9 z4jGRP3l283GHb+~D0p~)!9>Yxj)(FAXDKG5ESZ1@4oAD0WI9R=9v*6Ak!N+{dHKMR zl}FY^$AdFLm4!>ptVN@75u<Mhi(bZ$hDWSC5<+#C3@$Vt>5?#BR20ya;KC(goN;9V qqtnW!)kYaNB(j|}n>i$H<|I5^)XKF~L^CSn=7x7MEgZ~D4AuZjXTU80 literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/volet.png b/src/main/webapp/apps_extend/images/volet.png new file mode 100644 index 0000000000000000000000000000000000000000..b398de11f685a019433862770d1b29e7cf09f6a0 GIT binary patch literal 229 zcmeAS@N?(olHy`uVBq!ia0vp^wLr|p!3HE}E)R?WQY`6?zK#qG8~eHcB(eheoCO|{ z#S9GG!XV7ZFl&wkP>{XE)7O>#8nc)nt0n9AN!&o85>FS$kcwMxCm!T&FyLXXjqOam zDJJK-bS2X%Vb1&Np)smqJ=^{=Tya?Yl}qY<gzB|_pQgXeH)Ec1PIkBaukB$U#7wU4 zY0Q|p-LCn}=bFta@mE5>n0;*y`|_>oa(3I9_XRKb?pl;QzR>Gz4q==vw_p@o!F>P8 SFX3pQ{S2P2elF{r5}E*dPEw-) literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/volets/volet_bleu.png b/src/main/webapp/apps_extend/images/volets/volet_bleu.png new file mode 100644 index 0000000000000000000000000000000000000000..79c65942e66d0582cb3cf0cb8fe2d378633fccb9 GIT binary patch literal 1105 zcmV-X1g`suP)<h;3K|Lk000e1NJLTq004ae000UI1^@s6nWs@)00001b5ch_0Itp) z=>Px#24YJ`L;&Cb-~jhqtjoUu000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iOb< z2pkZ{F71r~00YrUL_t(o!+lpvmK-4rljtMmv^lM^0AtD2%Pe}Ts{#LHSrC8zYLQqZ z)*?vU=S6^vSPLMD9|_*yY|ZoRXVkg-_k6e4{T4tjEE2qX&;M()_i_=xvQ=vqu+~Z& zY~RbjUVqNS@n!tJ?XUKSw&wm{ov&f{o*#bf^}om;hmHB%F_G9cSj-r$PQLfY6>+hA z1OxyO(SH;K*}MIq`l|ZaZ)kgYJ_+7$ka~dtaqlH~_VU_g*r>B?jR0!zPNTebr1Qby z^9e`{_bUVG^OF;R=ghr<5M;i8?X!1hBiXr>u+KR86cr9r1S?W?CT<?ww<m8M*Ysv> z=PMRnufu?+zVdQ{m+!NH<;A91;Vv2kXh;1xSBBIXHo*8=!s_c=8w6f;szJz17{TpN zZJjPj7c49vR33Debc?S9m8^BtFlc)OHGs^Hapzr8JXM31+hQW2w*;)0r7jGrGi)Z9 zol`axB+=+(!lnWi2yg>ylo}s9b_X!K%=@SEOiu?3icEme5PR(l-Lz^OkN@65)BnR> zvi;{!T48TvRE`hAsLiglqE%JMVuozQTHx#fWgXl<9v@aO?u1=usMD2-BpdXOqeiXg zV8OarNrmO2iq55h5IyPb0CTiB0Gz2R9!`3@6rI$o55Ub{c!8h>nvCX|5Q!tiQxHDP zMlwT}Pe*0jIwMtfnGB|B<p5!2Pi2p>n%$h~`pafp(-AeNJ4QFWkKrkDKJ$YCK1lB3 zkTPGqwoZ*g&zM)S*vQhyXqdj}#jCoT-x%cKHSeG1(le%Boun~#FOJ1XUvmwjILpyU zv&3wEh`dxv?`9l<<J97)<9Rl{g_)>Z0O5=8<#c<hOBYc>Y6_=V@ezg?9H3{2p+z0- z9Qg#W@u7kVFGW+{{dmgdx&A*$_HQ)d$LJ;v&@vSo8JbBt^iJ|~mi9b4G=GJY&fI2` zfE7kwC>fYzCe!`CYp)iuImJ{in}NhcnM-vxxHy0$16SS)==$`QuqTE<o|F@I^Qci6 zisEH}AxCD;yenn8%FnEZgRzyen{JoPn#w@DXZpNS=}d#78&`!seyK+P$L%bXxSD!3 zH9x<HfaXj)6eUyWu5DU5Hw%da6rubSAvHa!MH>71q$xcgW*@pmdUc98Mv6Yf#5;61 z0QIcPhDbeh_o$fyG1H$rPl|#|B}}+JikSEawA>DrF>b}<vT3Tc?(g>=OI_f2nQ2L( zvqsHPo@)(K%+({=g^|28?VEz0#%)IX42D9_vr@O_=!xr<5Ld!ap@|$JS#!o%l!5sl Xg11A}G(4R700000NkvXXu0mjfum%f0 literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/volets/volet_gris.png b/src/main/webapp/apps_extend/images/volets/volet_gris.png new file mode 100644 index 0000000000000000000000000000000000000000..2e7d095f6b94fa96bf37f38b5cf076239b4ba9e7 GIT binary patch literal 1081 zcmV-91jhS`P)<h;3K|Lk000e1NJLTq004ae000UI1^@s6nWs@)00001b5ch_0Itp) z=>Px#24YJ`L;%?U*#Ox9@xqt@000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iOb< z2qG45h*QM?00X&6L_t(o!-ZJUk|ZGrOX&aq=Inzg5S`ksy4{{06$lXG5rBdL1`!cp z1cHIc&-)*P`944f;>*tr#An|}Ajq-zW4@07+jl{N-#6E@eEEX;_XEka9r(!Sd26lN z2!i}pObqZdUz;z!o-u9x7vEX`#j(-xbu6F$n~%%qw3*Mxr{i1s8y5Sr|5Z)_KokH1 z00;pT=8pjFr}Kc^u%6o%&Yk;I`+ofvw>h5mB-_!<^V2e?dAG>)ai6i@GGh{EcyxaS zNNk=1B1a4hBOW~1;ZXYAp`*a_PKHmNHG^pHC{XD?)w2LFx3iEYXH08B#UBYtEfS}} ze8*#-6LMwZaAo>{u;8ksVmQg>PJ^}_I-s6yGJ9s5;(<k3u#(})4trJY!hafAuBxRC z=fLHE1AxjTVHBBW$&BTIW-Dlds8OUNTiFmjXS5z<FA-3gbj;eZPM4jzyQn%9R+uu- zMpEybo-TX^d3E)wqR}rShpa^JB9(O!$DyzCseq*we{V+iBul3d*GDEX^7yN^Sy<}} z&rG3V{-|YK&AT72y`0Qxd*d!8t!|!WJwTFrr)C$(Y#RM@V9cb@#8(fhR;%pJS6Ul- zp(qQpn4x!GOO%K5N-|`FiGwK)E2u!1CxgXU1VI(OGZQjL3gL(FnZg}_8fG$Pp!NAW zpADawgQ3wu3yP=IX@K<l;z%m^#I$Ox&Dd);aL&0wReWfKQS97&y4(I9;<8wzF>ctp z`R<ffu!pH|b=sJaoD?g_DBDHF)CfIZ$xFa!=ww1Cmt?a?ZXq|jeKi)_#FMGDl|?<Z zlrCY^*-NE%evs>)S|+?MEkXR8?5f$UAAZ&Oi%FcRls>w~y5=q4V}kmvIXp?DM_7eD z#?>H78=uxWYTAU!%zd0LAt#OYKi$qvuXAX3wOAB5=L%E&kt4?o?4EEHGxXY17dF%l zCTDHSSmErK6<lA(k~u!&DGr@<H^eXD#m6MoCBA4vYl`9J(as5{ps;By(?lFNZd*OR zaL|U+o~+09tmfUG8;kzVn3B&Z)?7!E<E=tv-84Yu5`OCnqe~C7>brGHJ54e%N9$2N zMp(OjXwL4Z%o6iz)fs#0>FTm<5cwp=oZBuWk0#={VqP(EsJ@!%gx!^8N_RtO1<ckh zY;%gn>w7>Pfn%Mq#7^rTV-|JBfic62TJPLd9Ddsn=6&wm^k))_ZI#sD<KPgAbgYg- zFMXp1a{qsl>*{jVqWt<%4cT-^*FKWkU7h#?lD`VvW81y&00000NkvXXu0mjf_wor# literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/volets/volet_marron.png b/src/main/webapp/apps_extend/images/volets/volet_marron.png new file mode 100644 index 0000000000000000000000000000000000000000..fdab3b82693548e1dc5c6f5e8a393dc078bbaa1f GIT binary patch literal 1011 zcmV<P0}T9$P)<h;3K|Lk000e1NJLTq004ae000UI1^@s6nWs@)00001b5ch_0Itp) z=>Px#24YJ`L;$z|s{oI2-qe}^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iOb< z2q7?*sD=9g00VPLL_t(o!+luUapf=!12nVsq=)q16ZS*mP3L9&4ol_<l2G{j^G_rZ z*FpV#FQo71?E&HYPuo*29N^qNChPd;xzB;%dGbNvJX`EO0G_khbwC0q>A;5#A?H5V z?fJ4h{JXj$MsOQWw)Nfb@dTSJ5ZC=v{12ZAo`V~Xx(7Yx?jP%?>Bhl%x(>!m=|cLv zFM`nf1L%8%?L`2DE<Ri;)2ctoWC3FpRFSXpJ-t(5iKY!E2c&z^Rl8gfdUgZ%QR(iW z(Bi`<I@`(-QujN_0z*3&|MhMXEP*psGV3kC-R=A{9<Zd-cPS_9x|w9KrOkHj$qs31 zTCQ9bpml&%crXPZtgv5AHy03V?z3Cf$CqWZTMFFV)^=qnJ@M8<jv|Ia0e!ZO*}UXC zON8`fB%l!x85v^>S-KVYjJTY(l2WgdIu%Idx~mD^lBTq-5qh@T-)gURAf+xLy-<rD zqzW(=k=^neps3o51nXzF1m*Xic5dxq7JyO(YpFt6Co@2mhZ!K^=8@1%$>Gylf6Ph$ zYVhjymK@|F9V-B4ui$L&19Uz4%q11}c+u5%8>2)CdMw|&3fY)Y3$oH+$^NRfQClvf zAX(lkFg>hM4JyUOw@H|lD`nYr^z^--Nsq?Kk~o!_v(Jv1u-dw6B3SUt1`>WT1-5E^ zwyN-eUSS-}Lrti)WwsV9>aB-zZVib^wE~b<JSsIpc<&dA&HJcCvLU>Y>7nY3H=bdo z6=>;6XC4dAI&#%~WV+6%3Xzpx2y>2^of=Tt<gqXeEi7XU9&y^QzAo3#x>%rFs-6u6 zj6GbV6@!-?J^!Qk)<wq&^{SjR$fPqqQeOE7g9$ScfoxSKc8=X*OYK;dZfV1>vE<CU zH$3&;r{41WJY@@4Wj9)RpBf3~IBkqE#Bf|j#<;b?$M9R{^m@%zzA-+Jd9&ml?_%O* zAm-AoeB?~?H0i##<Z-S@?Pg;If3<$ak*K#ze31C!02gw%p9yx7xt((4WZj1bvA~Hd za2x}wF;S|1YIZMvbWSYu-|+7<T$Oi~Bf-djB61p>9Sg;(T;1RFM^`G2A&xL6Nvden z#{d_-Dws|XV{jzKi_f8w2gAaa`F#kj805q;<6i;h&xj%O5tid5Q4?3mCLx#oCebUL hJZ`j%v3vvt{sUq6>JlLUj7|Um002ovPDHLkV1izA*-8Ka literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/volets/volet_orange.png b/src/main/webapp/apps_extend/images/volets/volet_orange.png new file mode 100644 index 0000000000000000000000000000000000000000..fa430d5841f96ae5c6d687e5b6368ca866cb2b0f GIT binary patch literal 1089 zcmV-H1it%;P)<h;3K|Lk000e1NJLTq004ae000UI1^@s6nWs@)00001b5ch_0Itp) z=>Px#24YJ`L;(K)%m9#Eoq&@7000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iOb< z2p|!|+N9(F00Y5EL_t(o!*y6&awIVff<AU`o0E_a>w#pawzjHg#&$~xAsqhxKp+7S zBmsW)ED{6(p8v!b&p6K@@O=OP@awfW=bXn_M}k~yKc3HZZmgkwS8;Kj<MASX|N1*3 z)_f-q64d++%s4yda}MeqGp>lozDJzx@#Z<XjtDI6`@;4!yb2pwEV<?zSU8pgCtIVe z8D^}pGe7_U383QHezj-l{3OQu-0NF7zXufm;*;$avG#L3br1o<h(!<*xEUZp2<mir z;*yhS1RW=l?{_K|kDwxr1f|Zo*Fhc2+0;1Cr5q_TmeSIcGTO{l5l6l~NWMXo6`ffS zawZpDQH7BT6fZTSq<jXh=n(&`gvJQPNKn`55IvkxD{h8f1T=g_P(mRD1sQM?ijKph zh`ET#DBorn(T=YQ8rDSNaWi1ySlm+K3dUZ}?CV`A<`Khp;iY_0f-`{?S#fF$1e#fN zCR@QB8ZHthanw|XEEny<>N<4QOtX-(6+B=uWAn3u5EQ^72|MA1*BKjv^<IObn~5qs zrlKZIBx}Md?4^5s#sMsr^m8LT+wH47*^10809`^e*bzzrF(fgI#d~sC1!pIAi4M?U z)@4ZVs85Mf7nc_&>`QWyY{#H6RP<=-Qiesvgt<t{Il7!vO~%#PnQV+8%A?eXh<wDS z`6gN8sgBkux;SUHN@_WZVj6jmD{lfi(M^(kG;)O;UDuK-OZ5!2Y#bLnIvr>QVRz0w zXE{ix;ayS|HxW|3f)La#z;rTqF0#5F!Qk*ct-|z0ElAO|at1wo0GPS(B1BIxw!Diz zmh><HvRTDx$Z%$)78zJh*Qlh2uq(lm^#bA8n{U1(YmAJ=_RC}Bd#EBcxy)j=YmFCH z9hk<+<i_Q?WL0e@`ItnV>y109QeVkNs;RY`UoQJG=KVwYzA>9Ba9T$`OpBGBz;ot| zRIh`&nlJmcC2>gge@fvS<knQ9mBszAV-V*2!Y!=^HLJl@XDYl8Rs#>2wdAJ{z-=b0 zne=q2buU`A;!?G=E8pEMC`ZjTKxGkWTj-G)%LkMxTAtIdFXCf#?&rLkSzI|wU26LV zBD;C;?h5xTR%AWEt-D8b^;tJ*=+?}2i0cwc;-1kOI$qfFbrX4*S9b~*yVhC~eotSs zhI3znEv&m=Btg2PcR*>^k?Gq-Tn>KBvt_hs&Yosm+<R~ad;N_;!v(It1?bv3hDzRt zr`6Ndoaffr7}8FXILTR_s+EF9s)5Du9vp>X<;kad(CYCAexo~fM8IG(00000NkvXX Hu0mjfj~MJR literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/volets/volet_rouge.png b/src/main/webapp/apps_extend/images/volets/volet_rouge.png new file mode 100644 index 0000000000000000000000000000000000000000..d2e3c8930ab3ed4b7e34593f6eae829dc7d21f8d GIT binary patch literal 1075 zcmV-31kC%1P)<h;3K|Lk000e1NJLTq004ae000UI1^@s6nWs@)00001b5ch_0Itp) z=>Px#24YJ`L;(K)r~s%uL0j<v000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iOb< z2p<)kX-dHW00Xm0L_t(o!*y6mas(j^lgR&{llLhHjFC(yRg>;vF<xac`~^f3Ai=fj zN$jx&)_3qH=T^<xJ4_C_K;q6V)>z5?xo5!7TLiGMR>}I9fAu}OEU4x~o}V4>SMNS& z&Vw<2eQ@8wmA?9zU&B`V-hcHon^Cruu3Uu3EqD0A*My(yvj9K<0M>K=sh?+DJBYE$ zR@X2Iu*S4E)Bsx^SX)%Gwdc3^7Jy!8-~8q1eU=CUb?4&vR+YoPJ<qLK&*L$bp_0au z>!tdq+99_>t&7;p;vAMF4fle&XWIMGi+oje%{m0c4*H&ROL#(1!Ym=mDQ)DLXZSzj zrLZDXiyDi$)9eh(oGfHSPq6N}H(@vor_9cBuG=88oeK-n-B@-2mdt#jLvyhHivs|* zAFr;8Bz&sx`pWj+0^lgy)M?wdQ+v5W?I?b2E~`(FGa6e_d8X3jFrA=n8u{T3H^|lz zYz4hKRO_zulm*hLb8?F<KyOi$J>TJ?&2vN5Q(~G`?K*o{c*As#<17l%5`yhy53VEw zTZX^G5$duqco#jD!>jJEz%PSBwd~vngH8_bRSts8_5g7ti0}fMV<MmSbRwv#44wq# zz`A3H9Hkfm>lD#dQrTnPN}uQ)$aZWz>t`}wr0dql=q1q(X1ZNLr44Vd5ggvD2NS1% zFe+TL(YbY0AI-Ouluxa?<;t-Nx`HGPqcGfZ9O4aI)@ToB5Lm(XnHI5RZu)~#?A zVWDP{K2T}6t57X)TN!LlC6t^=mIN5wz+vA&{RUshH8OawfX`%7^#hU(vEuN~sZ0)t z(e$G#-e<i&y3dQOS>sttp6Ah)Y5MS+eqvNd*S?ZgNrwXrh6uOY37*1}<lDN0FH)>F z!oi3igwF%ZB6r@h!b5|QuINUJ<lF~RPqh=H5uHkx2U4AQ5@+pyRGG<>9;Uv@m_k=g zNjiMANQ>US9IRV|mG_WtQl9qc{G<+gS`PIM@@>!E!+<jdKXEjW>C`Z-O!!&2LCXC? zQe!Lfl4J9@J1}}aFQfdr>v>%|12#g|L`^~7KiE~G*CC1gIIo5Az7v_C?xbuH<N6qf z-b<Md`@ba|p`-_qi3l!--g1bS4_L)_@7H?+(gZE{AtyRGyhjZx`&4qaivULZry-$- zB`K+gj>$k;4o7mR9hns@|D{Z)r^67yucFSSQwDFL2;Z%NMq2fHR`UknKOXq+ADqpU teRb@*YKB}F*=V7+Xv7g{4V1Co{|Dt$FL%VrH3a|w002ovPDHLkV1i~N|7HLH literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/volets/volet_vert.png b/src/main/webapp/apps_extend/images/volets/volet_vert.png new file mode 100644 index 0000000000000000000000000000000000000000..a464ff62820a9638fd6173361d615caa500c239f GIT binary patch literal 1104 zcmV-W1h4yvP)<h;3K|Lk000e1NJLTq004ae000UI1^@s6nWs@)00001b5ch_0Itp) z=>Px#24YJ`L;&Le>j36@>3)0w000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iOb< z2p$(}d>X6(00YoTL_t(o!*!TJ79$}DMC+5q++vP1_rFoiLPfwNi@Z*YfKU_|{`~uE z2n8r26y+IMzatb#@KFRQLu^?>1d3eW?}|<ced507*b4N~*&pqF*S&N^^Oe*~ghG-2 zv32C0qc1|J_!Xf~@dwZ+LLt)bibd#CV*>Yl5kl3*XX#1b&z`P_*fLzdtAERvdY<cF z=B(NH-1QPyMqWaaBnzF7B`m9cyd+r5OGdfJNV({IA%s%VesotX@;7^%g}mf^%pHBj z*R6>2X6u>yk38LKd2$~6>OSh|G1$s8I*|TT-nDpo=)rrxSA2#iwwH=r=jOsIrY<qN zD%LaHxSFHIstJwbsFAQU$k&uxz|(#S3@*tl5pL(TmkbGq#84)C|L{x_J%C2#bVCRl zU@6EtL58}qC^xTBZm<Oh?<>G(iz}*!iekoexD`A<u|0-M$eIkgRl)Jet}9n=+hxZ# za>0_J$G2m+Ad8H7KhQWhJqYdvSP*M{lX7E&lk8c?=ew7B0;&YTn?c;eegVOb!^vzD z+#C1#eHbs3=fMl(T&AeJw(uyd!kVTqS@8p$@4V$MPMq;tF7HLIzNm2H2+bnO;JZ-n zOVe%%+tkOYu2m^5(2N#vD03&6+ELD)QB9Nzo;<!Pzzsq4M%GimjY5|924|<(oBLX~ z+)DP{*YfUajU<Og^BzFdWCt1xEGZIL9;`sE%Ka`HE}7)etJOM*vue}w?37qcRO|%! zTQ$%R?WFpO;6cc(uy2*&-dZlw4{P1Jf2z4uH0u2tA#ev`MSoRSdTVV%R16fxF*QB( zYCqq;XHECr)Blhw$p!Kqo>tP^NP!A<=vHY<)!R2cL{6{9e!%hWD_tD_;P5e3@THaR z7WMn%-p^h7z27!t-jUEX!;~bU_k8%C-`<t}Hi0(bQhPKn*hkT4TWtdF4$)_ncoO1C zDlWC}KJ*NS+{msBIz6pF6RJII%&rUHdcDt}e2q}2X#HTTJ0tYY?w*56jibHw47*SM z>MhXBd8j1!BB#tAeM(7?GJsbCYuCdax_7Iiiiem$=w`E9Jv9oxS2_3Il$Vm7b>Evz zJ;`q%j5yhPu8Z{=2l{niQzsG@sOVhfdHvzGnPbntxucmzcXnwP;XUZR<KAKeb~<sn zx-!~4#UgIA1!FpfFW1HW9N$K3z7p|sZ7n@xj27b>#T^)S`8(~nB-4|f{2lG&IwK)< z;PRJSg!L<ZjBj92vD%P?`kc{#Vn2<$4y;Ho^}^-$lC|f5jTTDEgs(On){1IOjr1R1 W4It@-e<!{G0000<MNUMnLSTY%aTvz{ literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/volets/volet_violet.png b/src/main/webapp/apps_extend/images/volets/volet_violet.png new file mode 100644 index 0000000000000000000000000000000000000000..b21786213a8fce22a86260b88cd70880dc2f818a GIT binary patch literal 1106 zcmV-Y1g-mtP)<h;3K|Lk000e1NJLTq004ae000UI1^@s6nWs@)00001b5ch_0Itp) z=>Px#24YJ`L;%tNq5%K>i1Eb$000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iOb< z2p~HcVQn%100YuVL_t(o!+lpvawQ=QlU#GE+$r~8Y8GHDL08@)>88P7SvLIn_bXO` zAgTzGU=hW6CJN;Gjv|T$66=5QoCOOkfGiYE9*Ne$z2@?(3cy~gwYOmU!={?^)po3P z)YgeDlUTA`7q>3Aqsn~!ibI(n+yCunuNN!Mp!(d3llw;Ovz31EiC@QT_8&V;=JC&b zId&HwKMMdTfe<7C03cvJ5fA}tJz_mV0>Hfo=iB;7w2-xxN2YDx`?=)wv2#@MzEXh@ zAkK<NXw<?tb8P^^_W9}fq4j->P}>&5cw!@^|A3BO*&l)@jN==Rd%BFK=*Hm~HAw+8 z`o6ezdOqyqeyxs)xN{H+^e8(qG=Lnv+F_C*fesJ>(h3DfKKHf=utikVfbbj>dKDU- z%7|_7bs!cvXn~>yMmw+U<ZMVNMDpzEqYT7(9ypnG|70Mb0|Zdm(;GJ+XbElm17zdz zjfa(EP0|s?p(9NfN;;R^2)Pw5AspnJWJ0I1**e6~OzAGs>ro+>lZUC+jY@4j4KSsX zhHaDMfg-0GtaA9~7Dgt>T2zFA21GBEj+=IDd2^zMbrp1{;ELAECeeuPfU^Q@&Z&p3 zl&DgYVmRLPsZ6$_2Uz|%2FpQn9BSNl;+P<62#Mg6Q-#i!xvDRH!jlR+&M&QZi`W(T zS@F8!^^F*A76kJgka3zo$=VMsZQc%a*1Y;_gz>5*lTSVEatQP8)r?q2TIqx!Kk*q3 zX&6A7BYb4vmIoW>ixeAW)e^oDAN26iM>S`rRT%4>Y!G+#c%<d+$@GS0bmFJu;qVnV z5E_7N*0R7=6qx4Y>RV$dW%~>Qx?1g?mY%+Mqeh1E=%q%~o&-AL&$y7zJcAJ@m|fsA zq&W_=6H;Aux@w1bc#imEg4`C->pZ7c8M%=%x^J&}_uujPbRVzk7p6MCc%}DXL|rwr z2Z@bJT@FPhA(+To5pj2p@ZlN(c!rh?=ofR2y*XgFb*Dc{Mzhv4H_{}%Tu<T_-!n(f z^bDGRe~e2_53tP&GtctLm}tq8Um%q8&keG+kKSgPNgv=a1_pg(^O?0`7uWU4(5as0 zH9=JKzrOop(_LIRZc5=*WHBqu-0ic1SNI*s_fCj2OJoZ(7BRM1OgMg1xOhiH^P;gv zgHKnpv}={!qU6Z@=!b0C9vo(<>j>vH_v3OR$cEQlJ}2(bXLmsbv_G=ulwk9gcu&Xp zoBG7K-zz80NAG~}K<;5QJ@@*%<=oKV$Hi&Orrx1bjO+1}u+zhJQR+K?@tFhnO=h3@ Y4;SDyto@pxE&u=k07*qoM6N<$f}Xt$i2wiq literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/images/waiting.gif b/src/main/webapp/apps_extend/images/waiting.gif new file mode 100644 index 0000000000000000000000000000000000000000..e8cf474009febe4953c2d0a9fd2065f51292b083 GIT binary patch literal 25224 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 literal 0 HcmV?d00001 diff --git a/src/main/webapp/apps_extend/locales/fr-extend.json b/src/main/webapp/apps_extend/locales/fr-extend.json new file mode 100644 index 0000000..e9c9c9f --- /dev/null +++ b/src/main/webapp/apps_extend/locales/fr-extend.json @@ -0,0 +1,3 @@ +{ + "basket" : "Panier" +} \ No newline at end of file diff --git a/src/main/webapp/apps_extend/panier.js b/src/main/webapp/apps_extend/panier.js new file mode 100644 index 0000000..3594271 --- /dev/null +++ b/src/main/webapp/apps_extend/panier.js @@ -0,0 +1,683 @@ +/** + * @brief Supprime un élément du panier + * @param evt + * @return + */ +function panier_supprimerElement(evt) +{ + + + /*var element; + var panier; + var ligne; + var i; + var id; + var identifiant = null; + + if (navigator.appName == "Microsoft Internet Explorer") + { + evt = window.event; + element = evt.srcElement; + } + else + element = evt.target; + while (element && (element.tagName != "TR")) + element = element.parentNode; + if (element && (element.tagName == "TR")) + identifiant = panier_getElementId(element); + panier = panier_getPanier(); + if (panier && identifiant) + { + for (i = 0; (i < panier.rows.length) && identifiant; i++) + { + ligne = panier.rows[i]; + id = panier_getElementId(ligne); + if (id == identifiant) + { + identifiant = null; + panier.deleteRow(i); + } + } + } + IHM_InfosBulle_hide(evt);*/ +} + +/** + * @brief vide les éléments du panier + * @param oBt objet bouton Ext, permet de différencier un appel utilisateur d'un appel programmé + */ +function panier_vider(oBt) +{ + if ( Ext.getCmp("gridPanier").getStore().getCount() > 0 ) { + Ext.getCmp("gridPanier").getStore().removeAll(); + } else if ( oBt ) { + Ext.Msg.alert('Données choisies','Aucune couche de données n\'est présente.'); + } + + /* + var panier; + var ligne; + + panier = panier_getPanier(); + if (panier) + { + for (i = 0; i < panier.rows.length; i++) + { + if (panier.rows[i]){ + ligne = panier.rows[i]; + id = panier_getElementId(ligne); + panier.deleteRow(i); + } + } + } + */ +} + +/** + * @brief Visualise un élément du panier + * @param evt + * @return + */ +function panier_visualiserElement(evt) +{ + var element; + var panier; + var identifiant = null; + + if (navigator.appName == "Microsoft Internet Explorer") + { + evt = window.event; + element = evt.srcElement; + } + else + element = evt.target; + while (element && (element.tagName != "TR")) + element = element.parentNode; + if (element && (element.tagName == "TR")) + identifiant = panier_getElementId(element); + if (identifiant) + { + try + { + IHM_Fiche_Show(identifiant); + } + catch(e){} + } + IHM_InfosBulle_hide(evt); +} +/** + * @brief Vérifie si l'élément existe déjà dans le panier + * @param identifiant + * @return boolean + */ +function panier_elementExist(identifiant) +{ + var panier; + var ligne; + var i; + var id; + var bRslt = false; + + panier = panier_getPanier(); + if (panier && identifiant) + { + for (i = 0; (i < panier.rows.length) && !bRslt; i++) + { + ligne = panier.rows[i]; + id = panier_getElementId(ligne); + if (id == identifiant) + bRslt = true; + } + } + return bRslt; +} + +var lastError = []; +/** + * @brief Ajoute un élément au panier + * @param identifiant + * @param titre + * @return + */ +function panier_ajouterElement(uuid, identifiant, titre, record, bCumulError) +{ + var panier; + var ligne; + var td1, td2; + var img, inpt; + + if ( bCumulError == undefined ) bCumulError = false; + + if ( uuid==undefined && identifiant==undefined && titre==undefined && bCumulError ){ + if ( typeof lastError == "undefined" ) return; + if ( lastError.length == 0 ) return; + + var strMsg = ""; + if ( lastError.length == 1 ){ + strMsg = 'La couche '+lastError[0]+' est déjà présente dans les données choisies.'; + } + else { + strMsg = 'Les couches : '; + for (var i=0; i<lastError.length; i++){ + strMsg += "<br/> - "+lastError[i]; + } + strMsg += '<br/> sont déjà présentes dans les données choisies.'; + } + Ext.Msg.alert('Données choisies', strMsg); + lastError = []; + return; + } + + var DataRecord = Ext.data.Record.create([{ + name: 'Data', + name: 'record', + id : 'id' + } + ]); + + if ( Ext.getCmp("contPanier").timerCollapse ){ + clearTimeout(Ext.getCmp("contPanier").timerCollapse); + Ext.getCmp("contPanier").timerCollapse = null; + } + + if(Ext.getCmp("gridPanier").getStore().findExact("id", identifiant)>-1){ + + if ( bCumulError ){ + lastError.push(titre); + } + else + Ext.Msg.alert('Données choisies', 'La couche '+titre+' est déjà présente dans les données choisies.'); + + }else{ + Ext.getCmp("gridPanier").getStore().add( + new DataRecord({ + Data: titre, + id : identifiant, + record: record + }) + ); + Ext.getCmp("contPanier").expand(true); + Ext.getCmp("contPanier").timerCollapse = setTimeout('Ext.getCmp("contPanier").collapse(true);', 3000); + } + //windowGrid.getStore().add(r); + + /* + if (panier_elementExist(identifiant)) + { + alert("La couche est déjà présente dans le panier"); + return; + } + panier = panier_getPanier(); + if (panier && identifiant && titre) + { + // Suppression de la ligne vide (compatibilité HTML4.01 Transitionnal) + if (panier.rows.length == 1) + { + if (panier.rows[0].cells.length == 1) + panier.deleteRow(0); + } + + ligne = panier.insertRow(-1); + if (ligne) + { + td1 = ligne.insertCell(-1); + td2 = ligne.insertCell(-1); + if (td1) + { + node = document.createTextNode(titre); + td1.appendChild(node); + td1.className = "visualiser"; + td1.onclick = panier_visualiserElement; + td1.onmouseout = IHM_InfosBulle_hide; + td1.onmousemove = panier_InfosBulle_visualiser; + inpt = document.createElement("input"); + inpt.type = "hidden"; + inpt.name = "panier_" + ligne.rowIndex; + inpt.value = identifiant; + td1.appendChild(inpt); + } + if (td2) + { + td2.className = "supprimer"; + td2.onclick = panier_supprimerElement; + td2.onmouseout = IHM_InfosBulle_hide; + td2.onmousemove = panier_InfosBulle_supprimer; + } + } + }*/ +} + + +/** + * @brief Affiche l'info bulle visualiser + * @param evt + * @return + */ +function panier_InfosBulle_visualiser(evt) +{ + IHM_InfosBulle_show(evt, "Consulter la fiche"); +} + +/** + * @brief Affiche l'info bulle supprimer du panier + * @param evt + * @return + */ +function panier_InfosBulle_supprimer(evt) +{ + IHM_InfosBulle_show(evt, "Supprimer du panier"); +} +/** + * @brief retourne l'identifiant de l'élément + * @param ligne + * @return + */ +function panier_getElementId(ligne) +{ + var elems; + var id = null; + + if (ligne && (ligne.cells.length == 2)) + { + elems = ligne.cells[0].getElementsByTagName("input"); + if (elems && (elems.length == 1)) + id = elems[0].value; + } + return id; +} +/** + * @brief renvoie le contenu du panier + * @return + */ +function panier_getPanier() +{ + var div; + var tables; + var panier = null; + + div = document.getElementById("panier"); + if (div) + { + tables = div.getElementsByTagName("TABLE"); + if (tables && (tables.length == 1)) + panier = tables[0]; + } + return panier; +} + +/** + * MPA: 6 mai 2006 + * @brief Fonction qui permet d'acceder au parametrage du telechargement + */ +function panier_downloadParametrage(panier) +{ + /* var bHasRecord = false; + var l_url = "panierDownloadFrontal_parametrage.php?LAYERIDTS="; + //console.log(Ext.getCmp("gridPanier").getStore().data); + for(idx = 0; idx < Ext.getCmp("gridPanier").getStore().data.length; idx++){ + bHasRecord = true; + l_url += Ext.getCmp("gridPanier").getStore().data.items[idx].data.id; + if (idx!=Ext.getCmp("gridPanier").getStore().data.length-1){ + l_url +="|"; + } + } + if(bHasRecord){ + contenu = window.frames["fenetre"]; + if (contenu) + { + //parent.IHM_historique_add(l_url); + contenu.location = l_url; + } + }else{ + Ext.Msg.alert('Panier','Le panier ne contient aucune couche de données.<br>Veuillez ajouter une (ou des) couche(s) à votre panier.'); + }*/ + /** + * Passage des parametres en POST + **/ + var l_form = document.createElement("form"); + var l_form_input = ""; + l_form.setAttribute('name', 'l_form'); + l_form.setAttribute('action', prodigeConfig.URL+'/geosource/panierDownloadFrontalParametrage'); + l_form.setAttribute('method', 'post'); + l_form.setAttribute('target', 'fenetre'); + var layerIdtsValue = []; + for (var id in panier.indexes) { + layerIdtsValue.push(id); + } + layerIdtsValue = layerIdtsValue.join("|"); + + if(layerIdtsValue!=""){ + l_form_input = document.createElement("input"); + l_form_input.setAttribute("type", "text"); + l_form_input.setAttribute("value", layerIdtsValue); + l_form_input.setAttribute("name", "LAYERIDTS"); + l_form.appendChild(l_form_input); + document.body.appendChild(l_form); + l_form.submit(); + }else{ + Ext.Msg.alert('Données choisies - Téléchargement', 'Veuillez ajouter une (ou des) couche(s) aux données choisies.'); + } + + /*var panier = null; + var ligne = null; + var coucheIdt = ""; + var coucheIdts = ""; + var idx = 0; + var l_url = ""; + var ongSelected = null; + + if (panier_hasCouches()) + { + panier = panier_getPanier(); + for (idx = 0; idx < panier.rows.length; idx++) + { + ligne = panier.rows[idx]; + coucheIdt = panier_getElementId(ligne); + if (coucheIdts != "") coucheIdts += "|"; + coucheIdts += coucheIdt; + } + l_url = "panierDownloadFrontal_parametrage.php?"; + l_url += "LAYERIDTS="+coucheIdts; + + ongSelected = IHM_Onglets_get(IHM_Onglets_getSel()); + IHM_Onglets_unsel(ongSelected); + + if (navigator.appName == "Microsoft Internet Explorer") + contenu = window.frames("fenetre"); + else + contenu = window.frames["fenetre"]; + if (contenu) + { + parent.IHM_historique_add(l_url); + contenu.location = l_url; + } + } + else{ + alert("Le panier ne contient aucune couche de données.\nAucun téléchargement n'est accessible.\n\nVeuillez ajouter une (ou des) couche(s) à votre panier."); + }*/ +} + +/** + * MPA: 6 mai 2006 + * @brief Fonction qui permet de savoir si le panier contient des couche + */ +function panier_hasCouches() +{ + var panier = null; + var b_HasElement = false; + + panier = panier_getPanier(); + if (panier){ + if (panier.rows.length == 1) { + //on verifie que le panier contient bien une couche + if (panier.rows[0].cells.length == 2) b_HasElement = true; + } + else if (panier.rows.length > 1) b_HasElement = true; + } + return b_HasElement; +} + +/** + * MTO: 5 juin 2012 + * @brief Fonction qui permet de covisualiser le panier + */ +var nbRecordsCovisu = 0; +var tabRecordsCanCovisu = []; +var tabDatasCannotCovisu = []; +var tabParamsCovisu = []; +function panier_covisualiser($scope, prodigeConfig) +{ + var geonetwork_dir = window.location.pathname.replace(/(\/.+)?\/srv\/.+/, "$1"); + nbRecordsCovisu = Object.keys($scope.metadatas).length; + if ( nbRecordsCovisu > 0 ) { + tabRecordsCanCovisu = []; + tabDatasCannotCovisu = []; + tabParamsCovisu = []; + $.each($scope.metadatas, function(key, metadata){ + configureMetadata(metadata); + var uuid = metadata.get("uuid"); + var type = metadata.get('type'); + // donnée de typ dataset + if ( type == "dataset" ) { + var oParam = { + id:metadata.get("id"), + layerTitle:metadata.get("Data"), + isHarvested:metadata.get("isHarvested") + }; + // donnée table + if ( metadata.get('spatialRepresentationType_text') == "Tabulaire" ) { + tabDatasCannotCovisu.push(metadata.get("Data")); + nbRecordsCovisu--; + } + else if ( metadata.get('spatialRepresentationType') == "textTable" ) { + tabDatasCannotCovisu.push(metadata.get("Data")); + nbRecordsCovisu--; + } + // donnée moissonnée + else if ( metadata.get("isHarvested") == "y" ) { + var urlRelation = document.location.protocol+"//"+document.location.host+""+geonetwork_dir+"/srv/api/records/"+metadata.get("uuid")+"/related"; + var paramsRelation = {type:"services"}; + var iframe = {}; + iframe.tabParams = [metadata]; + iframe.onSuccess = function(record, res) { + var tabService = []; + // console.log(xmlDoc); + if (typeof res == "string") res = JSON.parse(res); + if ( res!==null ){ + if ( typeof res.services == "undefined" ){res.services = [];} + if ( !res.services ){res.services = [];} + if ( !(res.services instanceof Array) ){res.services = [res.services];} + tabService = res.services; + } + // console.log(tabService); + if (tabService.length > 0) { + oParam.uuidService = []; + for (var i = 0; i < tabService.length; i++) { + oParam.uuidService.push(tabService[i].id); + } + oParam.uuidService = oParam.uuidService.join("|"); + oParam.uuidData = record.get("uuid"); + tabRecordsCanCovisu.push(record); + tabParamsCovisu.push(oParam); + nbRecordsCovisu--; + } + else { + var tabLinks = record.get("links"); + if (tabLinks.length > 0) { + var oLink = {}; + tabLinks.forEach(function(link) { + var _link = {}; + if (typeof(link) == 'string') { // cas particulier où + // l'ajout au panier a été + // effectué par une + // sélection (case à + // cocher) => les liens ne + // sont pas directement + // accessibles) + var tabSplit = link.split("|"); + _link.name = tabSplit[0] || ""; + _link.href = tabSplit[2] || ""; + _link.protocol = tabSplit[3] || ""; + } else { + _link = link; + } + if (_link.protocol && _link.protocol != "" + && new RegExp(/^OGC:WMS/i).test(_link.protocol)) { + if (_link.href && _link.href != "" && _link.name + && _link.name != "") { + oLink.wms = { + protocol : "GetMap", + connection : _link.href, + layer : _link.name + } + } + } + if (_link.protocol && _link.protocol != "" + && new RegExp(/^OGC:WFS/i).test(_link.protocol)) { + if (_link.href && _link.href != "" && _link.name + && _link.name != "") { + oLink.wfs = { + protocol : "GetMap", + connection : _link.href, + layer : _link.name + } + } + } + }, this); + if (oLink.wms) { + oParam.protocol = oLink.wms.protocol; + oParam.connection = oLink.wms.connection; + oParam.layer = oLink.wms.layer; + tabRecordsCanCovisu.push(record); + tabParamsCovisu.push(oParam); + nbRecordsCovisu--; + } else if (oLink.wfs) { + oParam.protocol = oLink.wfs.protocol; + oParam.connection = oLink.wfs.connection; + oParam.layer = oLink.wfs.layer; + tabRecordsCanCovisu.push(record); + tabParamsCovisu.push(oParam); + nbRecordsCovisu--; + } else { + tabDatasCannotCovisu.push(record.get("title")); + nbRecordsCovisu--; + } + } else { + tabDatasCannotCovisu.push(record.get("title")); + nbRecordsCovisu--; + } + } + } + AjaxRequest(urlRelation, paramsRelation, iframe, 'GET', false); + } + // donnée non moissonnée + else if ( metadata.get("isHarvested") == "n" ) { + /*var urlUserRight = "Services/getUserRights.php"; + var paramsUserRight = {ID:metadata.get("id"),TRAITEMENTS:"NAVIGATION",OBJET_TYPE:type,OBJET_STYPE:( type == "service" && ( metadata.get('serviceType') ) )}; + var iframe = {};*/ + + $.ajax({ + //crossDomain: true, + url : prodigeConfig.routes.catalogue.prodige_verify_rights_url, + async: false, + data : { + ID : metadata.get("id"), + OBJET_TYPE : type, + OBJET_STYPE : ( type == "service" && ( metadata.get('serviceType') ) ), + TRAITEMENTS : "NAVIGATION" + }, + success : function(oResUserRights) { + $scope.getting_rights = false; + //$scope.$digest() + + if ( oResUserRights.NAVIGATION ) { + tabRecordsCanCovisu.push(oResUserRights); + tabParamsCovisu.push(oParam); + nbRecordsCovisu--; + } else { + tabDatasCannotCovisu.push(metadata.get("title")); + nbRecordsCovisu--; + } + } + }); + + /* + iframe.tabParams = [metadata]; + iframe.onSuccess = function(record, res){ + var json_res = eval("("+res+")"); + if ( json_res.NAVIGATION ) { + tabRecordsCanCovisu.push(record); + tabParamsCovisu.push(oParam); + nbRecordsCovisu--; + panier_covisualiser_confirm($scope); + } else { + tabDatasCannotCovisu.push(record.get("title")); + nbRecordsCovisu--; + panier_covisualiser_confirm($scope); + } + }; + AjaxRequest(urlUserRight, paramsUserRight, iframe);*/ + } + // moissonnage non défini + else { + tabDatasCannotCovisu.push(metadata.get("Data")); + nbRecordsCovisu--; + } + } + // autre type de donnée + else { + tabDatasCannotCovisu.push(metadata.get("Data")); + nbRecordsCovisu--; + } + }); + panier_covisualiser_confirm($scope); + } else { + Ext.Msg.alert('Données choisies - Co-visualisation','Veuillez ajouter une (ou des) couche(s) aux données choisies.'); + } +} + +/** + * MTO: 5 juin 2012 + * @brief Fonction qui permet d'afficher les données non visualisable et de continuer + */ +function panier_covisualiser_confirm($scope) +{ + if ( tabRecordsCanCovisu.length > 0 ) { + if ( tabDatasCannotCovisu.length > 0 ) { + /*var iframe = {}; + iframe.tabParams = []; + iframe.onSuccess = panier_covisualiser_confirmed; + */ + Ext.Msg.confirm( + 'Données choisies - Co-visualisation', + 'Les données '+tabDatasCannotCovisu.join(', ')+' ne sont pas visualisables. Souhaitez-vous continuer ?' + , function(id, value) { + if (id === 'yes') { + tabDatasCannotCovisu = []; + panier_covisualiser_confirmed(); + } + }, this); + + tabDatasCannotCovisu = []; + } else { + panier_covisualiser_confirmed(); + } + } else { + Ext.Msg.alert('Données choisies - Co-visualisation', 'Aucune donnée n\'est covisualisable.'); + } +} + +/** + * MTO: 5 juin 2012 + * @brief Fonction qui permet de préparer les données avant covisualisation + */ +function panier_covisualiser_confirmed() +{ + var d = new Date(); + var curr_time = d.getTime() + + openWindowWithPost(__PRODIGE_CATALOGUE_CONFIG_URL__+'/geosource/covisualisation', "covisu"+curr_time, tabParamsCovisu); + tabParamsCovisu = []; +} + +/** + * @brief Ouvre un nouvel onglet avec passage des paramètres en post + * @param tabParams tableau des paramètres (chaque paramètre est un objet) + */ +function openWindowWithPost(url,name,tabParams) +{ + var newWindow = window.open('', name); + if (!newWindow) return false; + var html = ""; + html += "<html><head></head><body><form id='form_covisu' method='post' action='"+url+"'>"; + if ( tabParams && tabParams.length > 0 ) { + for ( var i=0; i < tabParams.length; i++) { + for ( var key in tabParams[i] ) { + html += "<input type=\"hidden\" name=\"data["+i+"]["+key+"]\" value=\""+tabParams[i][key]+"\"/>"; // TODO : effectuer un "htmlentities" + } + } + } + html += "</form><script type='text/javascript'>document.getElementById(\"form_covisu\").submit();</script></body></html>"; + newWindow.document.write(html); + return newWindow; +} \ No newline at end of file diff --git a/src/main/webapp/apps_extend/search/css/App-extend.css b/src/main/webapp/apps_extend/search/css/App-extend.css new file mode 100644 index 0000000..9697d92 --- /dev/null +++ b/src/main/webapp/apps_extend/search/css/App-extend.css @@ -0,0 +1,49 @@ +.nonGeographicDataset +{ + background-color: #DADADA !important; +} + +.vector +{ + background-color: #DEECFD !important; +} + +.grid +{ + background-color: #AFD3FF !important; +} + +.textTable +{ + background-color: #AFBCD2 !important; +} + +.series +{ + background-color: #FFD8F1 !important; +} + +.carte +{ + background-color: #E5F2D3 !important; +} + +.service +{ + background-color: #FDEBC4 !important; +} + +/** + * style boutons "Actions" + */ +.md-view ul li * h1 span a { + color: #007600; + font-size: 15px; +} +.info { + float: left; + height: 40%; +} +.md-info { + height: auto !important; +} \ No newline at end of file diff --git a/src/main/webapp/apps_extend/search/home_en.html b/src/main/webapp/apps_extend/search/home_en.html new file mode 100644 index 0000000..f193f5b --- /dev/null +++ b/src/main/webapp/apps_extend/search/home_en.html @@ -0,0 +1,9 @@ +<p> + <div style="width: 100%; height: 100%;"> + <div class="info"> + <h3>Quick links</h3> + <div class="md-view" id="tag"> + </div> + </div> + </div> +</p> \ No newline at end of file diff --git a/src/main/webapp/apps_extend/search/home_fr.html b/src/main/webapp/apps_extend/search/home_fr.html new file mode 100644 index 0000000..40ba1f7 --- /dev/null +++ b/src/main/webapp/apps_extend/search/home_fr.html @@ -0,0 +1,9 @@ +<p> + <div style="width: 100%; height: 100%;"> + <div class="info"> + <h3>Liens rapides</h3> + <div class="md-view" id="tag"> + </div> + </div> + </div> +</p> diff --git a/src/main/webapp/apps_extend/search/home_fre.html b/src/main/webapp/apps_extend/search/home_fre.html new file mode 100644 index 0000000..40ba1f7 --- /dev/null +++ b/src/main/webapp/apps_extend/search/home_fre.html @@ -0,0 +1,9 @@ +<p> + <div style="width: 100%; height: 100%;"> + <div class="info"> + <h3>Liens rapides</h3> + <div class="md-view" id="tag"> + </div> + </div> + </div> +</p> diff --git a/src/main/webapp/apps_extend/templates/contact-admin.html b/src/main/webapp/apps_extend/templates/contact-admin.html new file mode 100644 index 0000000..b3594c5 --- /dev/null +++ b/src/main/webapp/apps_extend/templates/contact-admin.html @@ -0,0 +1,120 @@ +<!-- <script type="text/javascript"> +(function(){ + //var cat_contact_admin = angular.module('cat_contact_admin'); + if (module){ + module.controller('form_cat_contact_admin', [ + '$rootScope', '$scope', '$controller', '$http' + , function($rootScope, $scope, $controller, $http){ + $scope.model = {}; + $scope.captcha = ""; + $scope.refreshCaptcha = function(){console.log('refreshCaptcha'); + $http({ + method : 'GET', + url : $rootScope.prodige.ip + "/include/captcha.php?rand="+Math.round(Math.random()*1000000) + }) + .success(function(data){console.log('captcha', data);return; + $('#captchaimg').attr('src', data.img); + $scope.captcha = data.captcha; + }) + }; + $scope.processForm = function(){ + if ( this.validate() ){ + $http({ + method : 'POST', + url : __PRODIGE_CATALOGUE_URL__+$rootScope.prodige.routes.catalogue.contact_admin, + data : $.param($scope.model), // pass in data as strings + headers : { 'Content-Type': 'application/x-www-form-urlencoded' } // set the headers so angular passing info as form data (not request payload) + }) + .success(function(data) { + console.log('submit', data); + + }); + } + }; + } + ]); + } +})(); +/* + function contactAdmin(){ + var form=document.form_pwd; + if ( validateEmail ){ + form.action = top.__PRODIGE_CATALOGUE_URL__+"{{ $root.prodige.usr_name }}/geosource/contact_admin"; + form.submit(); + } + } + function refreshCaptcha(){ + var oImg = document.images['captchaimg']; + if( oImg ) { + oImg.src = oImg.src.split("?")[0]+"?rand="+Math.round(Math.random()*1000000); + } + } + function validateEmail() + { + var mail = document.getElementById('usr_email').value; + var name = document.getElementById('usr_name').value; + var firstname = document.getElementById('usr_firstname').value; + var message = document.getElementById('message').value; + if(name =="" || mail == "" || firstname == "" || message == ""){ + parent.Ext.Msg.alert('Contact', "Veuillez renseigner tous les champs."); + return false; + } + var modele = /^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$/; + if (!modele.test(mail)){ + parent.Ext.Msg.alert('Contact', "L'adresse email est incorrecte."); + return false + } + return true + }*/ +</script> --> +<div class="modal fade" id="contactAdmin" tabindex="-1" role="dialog" aria-labelledby="contactAdminLabel"> + <div class="modal-dialog" role="document"> + <div class="modal-content"> + <div class="modal-header"> + <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button> + <h4 class="modal-title" id="contactAdminLabel">Contacter l'administrateur</h4> + </div> + <form name="formContactAdmin" ng-controller="formContactAdmin" ng-submit="processForm()" ng-init='refreshCaptcha()'> + <div class="modal-body"> + <div class="form-group"> + <label for="usr_name" class="control-label">Nom</label> + <input type="text" class="form-control" ng-model='model.usr_name' required="required" name='usr_name' id='usr_name' > + <div class="error help-block" ng-show="formContactAdmin.usr_name.$error.required">Saisie obligatoire</div> + </div> + <div class="form-group"> + <label for="usr_firstname" class="control-label">Prénom</label> + <input type="text" class="form-control" ng-model='model.usr_firstname' value='{{model.usr_firstname}}' required="required" name='usr_firstname' id='usr_firstname' > + <div class="error help-block" ng-show="formContactAdmin.usr_firstname.$error.required">Saisie obligatoire</div> + </div> + <div class="form-group"> + <label for="usr_email" class="control-label">Courriel</label> + <input type="email" class="form-control" ng-model='model.usr_email' required="required" name='usr_email' id='usr_email' > + <div class="error help-block" ng-show="formContactAdmin.usr_email.$error.required">Saisie obligatoire</div> + <div class="error help-block" ng-show="formContactAdmin.usr_email.$error.email">Mauvais format de courriel</div> + </div> + <div class="form-group"> + <label for="captcha" class="control-label">Code de sécurité </label> + <div class="input-group"> + <span class="input-group-btn"> + <button class="btn btn-default" type="button" ng-click='refreshCaptcha()' title="Cliquez sur l'image pour générer un nouveau code."> + <img src="" id="captchaimg"> + </button> + </span> + <input type="text" class="form-control" ng-model='model.captcha' name='captcha' id='captcha' value="" required="required" > + </div> + <div class="error help-block" ng-show="formContactAdmin.captcha.$error.required">Saisie obligatoire</div> + </div> + <div class="form-group"> + <label for="message" class="control-label">Message</label> + <textarea class="form-control" ng-model='model.message' required="required" name="message" id="message"></textarea> + <div class="error help-block" ng-show="formContactAdmin.message.$error.required">Saisie obligatoire</div> + </div> + </div> + <div class="modal-footer"> + <button type="button" class="btn btn-default" data-dismiss="modal">Annuler</button> + <button type="submit" class="btn btn-primary" name="VALIDATION">Valider</button> + </div> + </form> + </div> + </div> +</div> \ No newline at end of file diff --git a/src/main/webapp/apps_extend/templates/editor.html b/src/main/webapp/apps_extend/templates/editor.html new file mode 100644 index 0000000..d9ae139 --- /dev/null +++ b/src/main/webapp/apps_extend/templates/editor.html @@ -0,0 +1,82 @@ +<!-- geonetwork-3.2.0-0/catalog/components/search/resultsview/partials/viewtemplates/editor.html --> +<table class="table gn-results-editor contribute-search-results gn-resultview"> + <tr data-ng-repeat="md in searchResults.records" ng-class="'metadata-' + (md.type).join(' metadata-')"> + <td> + <input data-gn-selection-md type="checkbox" + data-ng-model="md['geonet:info'].selected" + data-ng-change="change()"/> + <span + data-ng-class="md.valid == 1 ? 'text-success' : (md.valid == 0 ? 'text-danger' : 'text-muted')"> + <i class="fa" + data-ng-class="'gn-recordtype-' + md.isTemplate" + data-ng-show="user.isReviewerOrMore()" + title="{{('isTemplate' + md.isTemplate) | translate}} ({{('validStatus-' + md.valid) | translate}})"></i> + </span> + <a href="" + data-ng-show="md.isTemplate != 's'" + data-ng-href="catalog.search#/metadata/{{md.getUuid()}}" + title="{{md.abstract}}">{{md.title || md.defaultTitle}}</a> + <span data-ng-show="md.isTemplate == 's'">{{md.title || md.defaultTitle}}</span> + <br/> + <div class="gn-record-details"> + <span title="{{'metadataAuthor' | translate}}">{{md.getOwnername()}}</span> + <span class="pull-right text-muted" + data-ng-class="{'text-success': md.mdStatus == 2, 'text-warning': md.mdStatus == 4}" + data-ng-show="md.mdStatus">{{('status-' + md.mdStatus) | translate}}</span> + </div> + </td> + <td> + <!-- prodige metadata actions --> + <div data-gn-fix-mdlinks> + <div class="gn-md-links"></div> + </div> + </td> + <td> + <a class="btn btn-link" + data-ng-href="" + data-ng-if="user.canEditRecord(md) && user.isEditorOrMore()" + data-ng-click="mdService.openPrivilegesPanel(md, getCatScope())" + title="{{'privileges' | translate}}"> + <i class="fa text-muted" + data-ng-class="md.isPublished() ? 'fa-unlock' : 'fa-lock'"></i> + </a> + </td> + <td> + <!-- TODO: subtemplate link for editing is different --> + <a class="btn btn-link" + data-ng-show="user.canEditRecord(md) && md.isTemplate != 's'" + data-ng-href="#/metadata/{{md['geonet:info'].id}}" + title="{{'edit' | translate}}"> + <i class="fa fa-pencil"></i> + </a> + </td> + <!-- prodige metadata actions : replace default 'delete' action of geosource --> + <!-- + <td> + <a class="btn btn-link" + data-ng-show="user.canEditRecord(md) && md.isTemplate != 's'" + data-gn-click-and-spin="deleteRecord(md)" + data-gn-confirm-click="{{'deleteRecordConfirm' | translate:md}}" + title="{{'delete' | translate}}"> + <i class="fa fa-times text-danger"></i> + </a> + </td> + --> + <td> + <a class="btn btn-link" + data-ng-show="md.isTemplate != 's'" + data-ng-href="#/create?from={{md['geonet:info'].id}}" + title="{{'duplicate' | translate}}"> + <i class="fa fa-copy text-muted"></i> + </a> + </td> + <td> + <a class="btn btn-link" + data-ng-show="user.canEditRecord(md) && md.isTemplate != 's'" + data-ng-href="#/create?childOf={{md['geonet:info'].id}}" + title="{{'createChild' | translate}}"> + <i class="fa fa-sitemap text-muted"></i> + </a> + </td> + </tr> +</table> diff --git a/src/main/webapp/apps_extend/templates/ext-messages.html b/src/main/webapp/apps_extend/templates/ext-messages.html new file mode 100644 index 0000000..2425c4e --- /dev/null +++ b/src/main/webapp/apps_extend/templates/ext-messages.html @@ -0,0 +1,22 @@ +<div class="modal fade" ng-controller="extMessages" id="extMessages" tabindex="-1" role="dialog" aria-labelledby="ext-messages-title"> + <div class="modal-dialog" role="document"> + <div class="modal-content"> + <div class="modal-header"> + <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button> + <h4 class="modal-title" id="ext-messages-title">{{ title }}</h4> + </div> + <div class="modal-body" ng-bind-html="body"> + </div> + <div class="modal-footer"> + <button type="button" class="btn btn-default" data-dismiss="modal"" style="display:none" id="autoclose">autoclose</button> + <div ng-if="modaltype == 'alert'"> + <button type="button" class="btn btn-default" data-dismiss="modal"" ng-click="confirmFn('ok')">OK</button> + </div> + <div ng-if="modaltype == 'confirm'"> + <button type="button" class="btn btn-default" data-dismiss="modal" ng-click="confirmFn('yes')">Oui</button> + <button type="button" class="btn btn-default" data-dismiss="modal">Non</button> + </div> + </div> + </div> + </div> +</div> \ No newline at end of file diff --git a/src/main/webapp/apps_extend/templates/harvested-synchronization.html b/src/main/webapp/apps_extend/templates/harvested-synchronization.html new file mode 100644 index 0000000..8e17982 --- /dev/null +++ b/src/main/webapp/apps_extend/templates/harvested-synchronization.html @@ -0,0 +1,42 @@ +<div class="modal fade" ng-controller="harvestedSynchronization" id="harvestedSynchronization" tabindex="-1" role="dialog" aria-labelledby="harvestedSynchronisationLabel"> + <div class="modal-dialog" role="document"> + <div class="modal-content"> + <div class="modal-header"> + <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button> + <h4 class="modal-title" id="harvestedSynchronisationLabel">Paramétrer la synchronisation des données SIG de la métadonnée</h4> + </div> + <div class="modal-body"> + <table class="table table-striped table-hover table-bordered table-responsive"> + <ng-repeat ng-repeat="source in metadataSources"> + <tr> + <td colspan="2"> + <div class='synchronisation-source'> + <div class='source-name'>{{ source.title }}</div> + <div class='source-description'>{{ source.description }}</div> + </div> + </td> + <td> + <input type="radio" name="import_data_source" value="{{ link.url }}"/> + </td> + </tr> + <tr ng-repeat="link in sources.links"> + <td> </td> + <td> + <div class='synchronisation-source'> + <div class='source-name'>{{ link.title }}</div> + <div class='source-description'>{{ link.description }}</div> + </div> + </td> + <td> + <input type="radio" name="import_data_source" value="{{ link.url }}"/> + </td> + </tr> + </ng-repeat> + <tr class="animate-repeat" ng-if="metadataSources.length == 0"> + <td><strong>Aucun lien de téléchargement des données défini...</strong></td> + </tr> + </table> + </div> + </div> + </div> +</div> \ No newline at end of file diff --git a/src/main/webapp/apps_extend/templates/help-modal.html b/src/main/webapp/apps_extend/templates/help-modal.html new file mode 100644 index 0000000..852f0cb --- /dev/null +++ b/src/main/webapp/apps_extend/templates/help-modal.html @@ -0,0 +1,27 @@ +<div class="modal fade" ng-controller="helpModal" id="helpModal" + tabindex="-1" role="dialog" aria-labelledby="helpModalLabel"> + <div class="modal-dialog" role="document"> + <div class="modal-content"> + <div class="modal-header"> + <button type="button" class="close" data-dismiss="modal" + aria-label="Close"> + <span aria-hidden="true">×</span> + </button> + <h4 class="modal-title" id="helpModalLabel">Aide</h4> + </div> + <div class="modal-body"> + <div ng-repeat="elt in help" class="thumbnail"> + <div class="row gn-md-title"> + <h4> + <a ng-href="{{ elt.url }}" title="{{ elt.title }}" + target="_blank" class="ng-binding"> <i + class="fa gn-icon-series" title="dataset"></i> {{ elt.title }} + </a> + </h4> + {{ elt.desc }} + </div> + </div> + </div> + </div> + </div> +</div> \ No newline at end of file diff --git a/src/main/webapp/apps_extend/templates/metadata-actions.html b/src/main/webapp/apps_extend/templates/metadata-actions.html new file mode 100644 index 0000000..9136307 --- /dev/null +++ b/src/main/webapp/apps_extend/templates/metadata-actions.html @@ -0,0 +1,27 @@ +<!-- <colored ng-init="setMetadataDecoration()"></colored> --> + + <div class="btn-group" + ng-show="$root.prodige.loaded"> + <button type="button" + class="btn btn-default dropdown-toggle prodige-menu" + ng-class="prodigeIsContributeMenu ? 'btn-xs' : ''" + data-toggle="dropdown" + title="Actions" ng-show="setMetadataDecoration()" + ng-click="initMetadataActions()"> + <span class="fa fa-plus"></span> + <span class="caret"></span> + </button> + <div class="dropdown-menu dropdown-menu-right metadataActions" role="menu"> + <span class="loading fa fa-spinner fa-spin" ng-show="getting_rights"></span> + </div> + </div> + + + <div class="btn-group" ng-repeat="link in ::catalogue_actions" + data-ng-class="::catalogue_actions.length > 0 ? '' : 'invisible'"> + <button type="button" + class="btn btn-default" + ng-click="link.url()" title="{{::link.desc}}"> + <img data-ng-src="{{::link.icon}}"/> + </button> + </div> diff --git a/src/main/webapp/apps_extend/templates/metadata-cart.html b/src/main/webapp/apps_extend/templates/metadata-cart.html new file mode 100644 index 0000000..a221275 --- /dev/null +++ b/src/main/webapp/apps_extend/templates/metadata-cart.html @@ -0,0 +1,36 @@ +<script type="text/javascript" src='../../apps_extend/panier.js'></script> +<div class="modal fade" ng-controller="metadataCart" ng-init='initMetadataCart()' id="metadataCart" tabindex="-1" role="dialog" aria-labelledby="contactAdminLabel"> + <div class="modal-dialog" role="document"> + <div class="modal-content"> + <div class="modal-header"> + <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button> + <h4 class="modal-title" id="contactAdminLabel"> + Données choisies <ng-pluralize count="metadatas.length" when="{'0': '', 'one': '(1 élément)', 'other': '({} éléments)'}"></ng-pluralize> + </h4> + </div> + <div class="modal-body"> + <table class="table table-striped table-hover table-bordered table-responsive"> + <tr ng-repeat="ametadata in metadatas | orderBy:'title'"> + <td>{{ ametadata.title }}</td> + <td class="text-center" style="vertical-align:middle;"> + <span ng-show="ametadata.can_storage===null">Vérification des droits</span> + <a href="" class="btn btn-xs btn-link" + title="Retirer des données choisies" + ng-click="panier_retirer(ametadata)"> + <i class="fa fa-times delete" style="vertical-align:baseline;"></i> + </a> + </td> + </tr> + <tr class="animate-repeat" ng-if="metadatas.length == 0"> + <td><strong>Aucune métadonnée...</strong></td> + </tr> + </table> + </div> + <div class="modal-footer" ng-if="metadatas.length > 0"> + <button type="button" class="btn btn-primary" ng-click="panier_downloadParametrage()"><span class="fa fa-download"></span> Télécharger</button> + <button type="submit" class="btn btn-primary" ng-click="panier_covisualiser()"><span class="fa fa-eye"></span> Co-visualiser</button> + <button type="submit" class="btn btn-default" ng-click="panier_vider()"><span class="fa fa-eraser"></span> Vider</button> + </div> + </div> + </div> +</div> \ No newline at end of file diff --git a/src/main/webapp/apps_extend/templates/top-toolbar.html b/src/main/webapp/apps_extend/templates/top-toolbar.html new file mode 100644 index 0000000..8e50607 --- /dev/null +++ b/src/main/webapp/apps_extend/templates/top-toolbar.html @@ -0,0 +1,53 @@ +<div ng-if="$root.prodige.loaded"> + <!-- Actions complémentaires ajoutées à la barre d'outils --> + <ul class="nav navbar-nav navbar-right"> + <li __data-ng-show="authenticated"> + <a data-toggle="modal" data-target="#metadataCart" + title="Données choisies" + class="hidden-xs btn btn-link"> + <i class="fa fa-star"></i> + Données choisies + </a> + </li> + <li ng-if="$root.prodige.PRO_CATALOGUE_CONTACT_ADMIN == 'on'"> + <a data-toggle="modal" data-target="#contactAdmin" ng-click="initContactForm()" + title="Contacter l'administrateur" + class="hidden-xs btn btn-link"> + <i class="fa fa-envelope"></i> + Contacter l'administrateur + </a> + <ng-include src="'../../apps_extend/templates/contact-admin.html'"></ng-include> + </li> + <li ng-if="$root.prodige.PRO_CATALOGUE_NB_SESSION_USER == 'on'"> + <a class="hidden-xs btn btn-link"> + <b>#</b><ng-pluralize count="$root.prodige.sessionNumber" + when="{'0': '0 visiteur', + 'one': '1 visiteur', + 'other': '{} visiteurs'}"></ng-pluralize> + </a> + </li> + <li class="dropdown dropdown-hover open"> + <a data-gn-active-tb-item="admin.console" + title="Autres actions" + class="dropdown-toggle" + role="button" aria-expanded="false"> + <i class="fa fa-wrench"></i> + <span class="hidden-sm">Autres actions</span> + </a> + <ul class="dropdown-menu"> + <li ng-if="$root.prodige.routes.catalogue.carteperso"><a data-gn-active-tb-item="{{ $root.prodige.routes.catalogue.carteperso }}" target="_blank"><i class="fa fa-fw fa-globe"></i> Cartes personnelles</a></li> + <li ng-if="$root.prodige.routes.admin.prodige_admin"><a data-gn-active-tb-item="{{ $root.prodige.routes.admin.prodige_admin }}" target="_blank"><i class="fa fa-fw fa-group"></i> Administration générale</a></li> + <li ng-if="$root.prodige.routes.admin.prodige_adminsite"><a data-gn-active-tb-item="{{ $root.prodige.routes.admin.prodige_adminsite }}" target="_blank"><i class="fa fa-fw fa-cogs"></i> Administration de la plate-forme</a></li> + <li ng-if="$root.prodige.routes.admin.prodige_standards"><a data-gn-active-tb-item="{{ $root.prodige.routes.admin.prodige_standards }}" target="_blank"><i class="fa fa-fw fa-thumbs-up"></i> Module qualité</a></li> + <li ng_if = "$root.prodige.routes.admin.optional.catalogue_opendata"><a href="{{ $root.prodige.routes.admin.optional.catalogue_opendata }}" target="_blank"><i class="fa fa-fw fa-paper-plane"></i> Moissonnage DCAT</a><li> + <li ng-if="$root.prodige.routes.admin.prodige_base_territoriale"><a data-gn-active-tb-item="{{ $root.prodige.routes.admin.prodige_base_territoriale }}" target="_blank"><i class="fa fa-fw fa-outdent"></i> Module base territoriale</a></li> + <li><a data-toggle="modal" data-target="#helpModal" class="btn-link"><i class="fa fa-fw fa-question-circle"></i> Aide</a></li> + </ul> + </li> + </ul> + + <ng-include src="'../../apps_extend/templates/metadata-cart.html'"></ng-include> + <ng-include src="'../../apps_extend/templates/help-modal.html'"></ng-include> + <ng-include src="'../../apps_extend/templates/ext-messages.html'"></ng-include> + +</div> diff --git a/src/main/webapp/apps_extend/util.js b/src/main/webapp/apps_extend/util.js new file mode 100644 index 0000000..ae535a8 --- /dev/null +++ b/src/main/webapp/apps_extend/util.js @@ -0,0 +1,152 @@ +if ( typeof Ext == "undefined" ) Ext = {}; +if ( typeof Ext.menu == "undefined" ) Ext.menu = {}; +if ( typeof Ext.Msg == "undefined" ) Ext.Msg = {}; +if ( typeof Ext.menu.Item == "undefined" ) Ext.menu.Item = {}; +if ( typeof Ext.DomQuery == "undefined" ) Ext.DomQuery = {}; + +Ext.encode = function(json) { + return JSON.stringify(json); +}; +Ext.decode = function(text) { + return JSON.parse(text); +}; + +function TextEncode(strParam) +{ + var t = new String("test"); + if (!t.charCodeAt) return strParam; + strParam = encodeToUTF8(strParam); + var strEncode = ""; + for(var i=0; i<strParam.length; i++) { + strEncode += DecToHexa(strParam.charCodeAt(i)); + } + return strEncode; +} + +function TextDecode(strParam) +{ + var test = ""; + var t = new String("test"); + if (!t.fromCharCode && !String.fromCharCode) return strParam; + //décodage + var strDecode = ""; + for(var i=0; i<strParam.length; i+=2 ) { + strDecode = new String(strDecode) + String.fromCharCode( HexaToDec(strParam.substr(i, 2) ) ) ; + } + + return decodeFromUTF8(strDecode); +} + +function DecToHexa(integer, bIter){ + var tabConv = new Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F"); + if (integer<=15 ) { + if( bIter) return tabConv[integer]; + return "0"+tabConv[integer]; + } + var quotient = Math.floor(integer/16); + var remainder = integer % 16; + return new String(DecToHexa(quotient,true))+new String(DecToHexa(remainder,true)); +} + +function HexaToDec(hexa){ + var tabConv = new Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F"); + if (hexa.length==1){ + for (var j=0; j<tabConv.length; j++){ + if (tabConv[j].toLowerCase()==hexa.toLowerCase()) return j; + } + return 0; + } + var res = 0; + for (var p=0; p<hexa.length; p++){ + res = new Number( new Number(res) + new Number(HexaToDec(hexa.charAt(p))*Math.pow(16, hexa.length - p -1)) ); + } + return res; +} + +function encodeToUTF8(strLatin1) +{ + var strUTF8 = ""; + + for (var n = 0; n < strLatin1.length; n++) { + var c = strLatin1.charCodeAt(n); + if (c < 128) { + strUTF8 += String.fromCharCode(c); + } + else if((c > 127) && (c < 2048)) { + strUTF8 += String.fromCharCode((c >> 6) | 192); + strUTF8 += String.fromCharCode((c & 63) | 128); + } + else { + strUTF8 += String.fromCharCode((c >> 12) | 224); + strUTF8 += String.fromCharCode(((c >> 6) & 63) | 128); + strUTF8 += String.fromCharCode((c & 63) | 128); + } + } + + return strUTF8; +} + +function decodeFromUTF8(strUTF8) { + var strLatin1 = ""; + var i = 0; + var c = c1 = c2 = 0; + + while ( i < strUTF8.length ) { + c = strUTF8.charCodeAt(i); + if (c < 128) { + strLatin1 += String.fromCharCode(c); + i++; + } + else if((c > 191) && (c < 224)) { + c2 = strUTF8.charCodeAt(i+1); + strLatin1 += String.fromCharCode(((c & 31) << 6) | (c2 & 63)); + i += 2; + } + else { + c2 = strUTF8.charCodeAt(i+1); + c3 = strUTF8.charCodeAt(i+2); + strLatin1 += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63)); + i += 3; + } + } + + return strLatin1; +} +function getCheckSumEncodage(strToken) +{ + var tabTrad = new Array(); + for(var i=0; i<10; i++) tabTrad[i] = i; + tabTrad["A"] = tabTrad["a"] = 10; + tabTrad["B"] = tabTrad["b"] = 11; + tabTrad["C"] = tabTrad["c"] = 12; + tabTrad["D"] = tabTrad["d"] = 13; + tabTrad["E"] = tabTrad["e"] = 14; + tabTrad["F"] = tabTrad["f"] = 15; + + var iChecksum = 0; + for(i=0; i<strToken.length; i++) { + iChecksum += parseInt(tabTrad[strToken.charAt(i)]); + } + return iChecksum; +} + +function replace_html(el, html) { + if( el ) { + var oldEl = (typeof el === "string" ? document.getElementById(el) : el); + var newEl = document.createElement(oldEl.nodeName); + + // Preserve any properties we care about (id and class in this example) + newEl.id = oldEl.id; + newEl.className = oldEl.className; + + //set the new HTML and insert back into the DOM + newEl.innerHTML = html; + if(oldEl.parentNode) + oldEl.parentNode.replaceChild(newEl, oldEl); + else + oldEl.innerHTML = html; + + //return a reference to the new element in case we need it + return newEl; + } +}; diff --git a/src/main/webapp/catalog/components/cookieWarning/partials/cookieWarning.html b/src/main/webapp/catalog/components/cookieWarning/partials/cookieWarning.html new file mode 100644 index 0000000..710fa97 --- /dev/null +++ b/src/main/webapp/catalog/components/cookieWarning/partials/cookieWarning.html @@ -0,0 +1,16 @@ +<div class="cookie-warning" + data-ng-show="{{showCookieWarning}}" + data-ng-controller="CookieWarningController"> + + <p class="{showCookieWarning}" + data-translate="">cookieWarning</p> + <p> + <a href="https://www.cnil.fr/fr/site-web-cookies-et-autres-traceurs" target="cookie_law" + data-translate="">moreOnCookie</a> + </p> + <p> + <span data-ng-click="close()" data-translate="">acceptCookie</span> + <span data-translate="">or</span> + <span data-ng-click="goAway()" data-translate="">rejectCookie</span> + </p> +</div> diff --git a/src/main/webapp/catalog/js/jscompatibility.js b/src/main/webapp/catalog/js/jscompatibility.js new file mode 100644 index 0000000..5511f36 --- /dev/null +++ b/src/main/webapp/catalog/js/jscompatibility.js @@ -0,0 +1,14 @@ +if ( !String.prototype.includes ) { + String.prototype.includes = function(search, start) { + 'use strict'; + if (typeof start !== 'number') { + start = 0; + } + + if (start + search.length > this.length) { + return false; + } else { + return this.indexOf(search,start) !== -1; + } + }; +} \ No newline at end of file diff --git a/src/main/webapp/catalog/lib/jquery.ext/jquery.cookie.js b/src/main/webapp/catalog/lib/jquery.ext/jquery.cookie.js new file mode 100644 index 0000000..feb62e9 --- /dev/null +++ b/src/main/webapp/catalog/lib/jquery.ext/jquery.cookie.js @@ -0,0 +1,117 @@ +/*! + * jQuery Cookie Plugin v1.4.1 + * https://github.com/carhartl/jquery-cookie + * + * Copyright 2006, 2014 Klaus Hartl + * Released under the MIT license + */ +(function (factory) { + if (typeof define === 'function' && define.amd) { + // AMD + define(['jquery'], factory); + } else if (typeof exports === 'object') { + // CommonJS + factory(require('jquery')); + } else { + // Browser globals + factory(jQuery); + } +}(function ($) { + + var pluses = /\+/g; + + function encode(s) { + return config.raw ? s : encodeURIComponent(s); + } + + function decode(s) { + return config.raw ? s : decodeURIComponent(s); + } + + function stringifyCookieValue(value) { + return encode(config.json ? JSON.stringify(value) : String(value)); + } + + function parseCookieValue(s) { + if (s.indexOf('"') === 0) { + // This is a quoted cookie as according to RFC2068, unescape... + s = s.slice(1, -1).replace(/\\"/g, '"').replace(/\\\\/g, '\\'); + } + + try { + // Replace server-side written pluses with spaces. + // If we can't decode the cookie, ignore it, it's unusable. + // If we can't parse the cookie, ignore it, it's unusable. + s = decodeURIComponent(s.replace(pluses, ' ')); + return config.json ? JSON.parse(s) : s; + } catch(e) {} + } + + function read(s, converter) { + var value = config.raw ? s : parseCookieValue(s); + return $.isFunction(converter) ? converter(value) : value; + } + + var config = $.cookie = function (key, value, options) { + + // Write + + if (arguments.length > 1 && !$.isFunction(value)) { + options = $.extend({}, config.defaults, options); + + if (typeof options.expires === 'number') { + var days = options.expires, t = options.expires = new Date(); + t.setTime(+t + days * 864e+5); + } + + return (document.cookie = [ + encode(key), '=', stringifyCookieValue(value), + options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE + options.path ? '; path=' + options.path : '', + options.domain ? '; domain=' + options.domain : '', + options.secure ? '; secure' : '' + ].join('')); + } + + // Read + + var result = key ? undefined : {}; + + // To prevent the for loop in the first place assign an empty array + // in case there are no cookies at all. Also prevents odd result when + // calling $.cookie(). + var cookies = document.cookie ? document.cookie.split('; ') : []; + + for (var i = 0, l = cookies.length; i < l; i++) { + var parts = cookies[i].split('='); + var name = decode(parts.shift()); + var cookie = parts.join('='); + + if (key && key === name) { + // If second argument (value) is a function it's a converter... + result = read(cookie, value); + break; + } + + // Prevent storing a cookie that we couldn't decode. + if (!key && (cookie = read(cookie)) !== undefined) { + result[name] = cookie; + } + } + + return result; + }; + + config.defaults = {}; + + $.removeCookie = function (key, options) { + if ($.cookie(key) === undefined) { + return false; + } + + // Must not alter options, thus extending a fresh object... + $.cookie(key, '', $.extend({}, options, { expires: -1 })); + return !$.cookie(key); + }; + +})); diff --git a/src/main/webapp/catalog/locales/fr-alk-extend.json b/src/main/webapp/catalog/locales/fr-alk-extend.json new file mode 100644 index 0000000..a433e2e --- /dev/null +++ b/src/main/webapp/catalog/locales/fr-alk-extend.json @@ -0,0 +1,5 @@ +{ + "basket" : "Panier", + "contactAdmin" : "Contacter l'administrateur", + "moreActions" : "Autres actions" +} \ No newline at end of file diff --git a/src/main/webapp/catalog/style/gn_viewer.less b/src/main/webapp/catalog/style/gn_viewer.less new file mode 100644 index 0000000..66698ae --- /dev/null +++ b/src/main/webapp/catalog/style/gn_viewer.less @@ -0,0 +1,694 @@ +@import "gn_bootstrap.less"; + +@viewport-padding: 1em; +@transition-params: .3s ease; + +@gn-popup-max-width: 1200px; + + +[gn-main-viewer], +.gn-main-viewer { + position: relative; + + [role=tooltip] { + position: absolute; + clip: rect(1px, 1px, 1px, 1px); + right: 0; + } + + fieldset legend { + margin-bottom: 2px; + } + + .gn-layertree-filter { + margin: 0 0 15px 0px; + position:relative; + .clear { + right: 1em; + position: absolute; + top: 7px; + } + } + + .wrapper { + width: 100%; + height: 100%; + min-height: 100%; + } + [ngeo-map] { + width: 100%; + height: 89.9vh; + &.gn-gfi-loading:hover { + cursor: wait; + } + } + .popover-dropdown, [gn-popover-dropdown] { + .dropdown-menu { + max-height: 45vh; + overflow: auto; + + } + .dropdown-toggle { + padding: 0; + border: none; + } + } + .search-container { + position: absolute; + top: @viewport-padding; + left: @viewport-padding; + width: 20em; + .dropdown-menu { + width: 100%; + top: ~"calc(100% - 3px)"; + background: rgba(255,255,255,.9); + padding: 0 0 1em; + h5 { + padding: 0 1em; + } + ul { + margin:0; + background: #fff; + } + li { + background: transparent; + padding: 0; + &:hover { + } + } + a { + padding: .5em 1em; + display: block; + em { + font-size: 90%; + color: grey; + } + } + } + .clear { + position: absolute; + top: .75em; + right: 3.5em; + color: #666; + z-index: 99; + &:hover { + cursor: pointer; + color: #222; + } + } + } + .tools { + position: absolute; + top: @viewport-padding; + right: 0; + width: 2.8em; + button, [role="button"] { + margin-bottom: .2em; + border-right-width: none; + border-top-right-radius: 0; + border-bottom-right-radius: 0; + background: rgba(255,255,255,.8); + width: 2.8em; + transition: background @transition-params; + &.active { + width: 3.0em; + border-left: medium none; + border-radius: 0px; + margin-left: -0.2em; + background: none repeat scroll 0% 0% rgba(0, 0, 0, 0.7); + border-color: transparent; + color: #FFF; + } + } + + .tools-spacer { + height: 1.4em; + } + } + .control-tools { + top: auto; + bottom: @viewport-padding; + } + & > .panel { + background: rgba(255,255,255,.8); + } + .panel-tools { + position: absolute; + top: @viewport-padding; + right: 3em; + width: 26em; + min-height: 12.8em; + height: ~"calc(100% - 2em)"; + max-width: ~"calc(100% - 4em)"; + overflow-y: auto; + transition: opacity @transition-params; + h3 { + margin-top: 15px; + } + li[gn-layermanager-item] { + .fa-arrows-alt,.gn-layer-ordering { + opacity: 0; + transition: opacity @transition-params; + } + label { + padding: 0px; + display: block; + margin-bottom: 0px; + + } + } + .gn-layer-outofrange > label { + color: #999; + } + .gn-searchlayer { + label { + font-size: 90%; + max-width: 68%; + } + } + .list-group-item { + transition: max-height @transition-params; + &:hover { + .fa-arrows-alt, .gn-layer-ordering { + opacity: 1 + } + } + label { + font-weight: normal; + } + & > label { + font-size: 90%; + max-width: 72%; + } + } + .btn-group.gn-layer-btn { + display: inherit; + } + .btn-group { + display: flex; + .btn { + flex: 1; + } + } + .flux, .context { + margin: .2em; + } + .baselayer { + .dropdown-menu { + width: 100%; + top: 100%; + bottom: unset; + } + } + .gn-layer-actions { + [ngeo-popover-anchor] { + text-decoration: none; + } + } + .unfold { + opacity: 0; + transition: opacity @transition-params; + float: right; + border: none; + background: none; + padding: 0; + } + .unfold, + .close { + margin-top: -.1em; + margin-right: .2em; + } + .details { + font-size: 90%; + margin: 0 0 .5em 0; + p { + overflow: auto; + } + .delete { + .btn-xs; + .pull-right; + clear: both; + margin-top: 1.3em; + } + } + h5 { + margin: .2em 0; + } + [gn-layermanager] { + max-height: 44em; + overflow-y: auto; + .gn-layer-ordering { + margin-top: -4px; + margin-right: -10px; + .fa { + padding: 0px 10px; + font-size: 0.8em; + } + } + ul { + margin-bottom: 4px; + } + } + .metadata { + .btn; + .btn-link; + width: 100%; + font-style: italic; + font-size: 13px; + } + label { + padding: 10px 0; + font-weight: normal; + } + } + + @import "../components/viewer/wmsimport/style/layertree.less"; + + .fu { + position: relative; + input[type=file] { + position: absolute; + top: 0; + left: 0; + opacity: 0; + width: 100%; + } + } + + //.collapsed { + // max-height: 0; + // min-height: 0; + // overflow-y: hidden; + // border: 0; + // margin: 0; + // padding: 0; + //} + .force-hide { + opacity: 0; + pointer-events: none; + } + + /* hackish tmp */ + .ol-overlaycontainer-stopevent { + /* display: none; */ + } + .overlay { + position: absolute; + bottom: 12px; + left: ~"calc(-10px - 2em)"; + background: rgba(60,60,60,.8); + line-height: 2em; + padding: 1em; + width: 17em; + color: #fff; + text-shadow: 0 0 1px #000; + border-radius: 2px; + font-size: 12px; + &:after { + content: ' '; + position: absolute; + bottom: -10px; + left: 2em; + width: 0; + height: 0; + border-style: solid; + border-width: 10px 10px 0 10px; + border-color: rgba(60,60,60,.8) transparent; + } + dl { + margin-bottom: 0; + dl dd, dl dt { + display: block; + float: none; + width: 100%; + margin-left: 0; + text-align: left; + } + } + dt { + width: 6em; + } + dd { + margin-left: 6.5em; + } + } + + /* jquery-ui slider */ + .ui-slider { + position: relative; + text-align: left; + border: 1px solid #ddd; + height: .7em; + margin: 0.8em 0; + + .ui-slider-range { + position: absolute; + z-index: 1; + font-size: .7em; + display: block; + border: 0; + background-position: 0 0; + background-color: dimgrey; + top: 0; + height: 100%; + } + .ui-slider-handle { + top: -.3em; + margin-left: -.6em; + position: absolute; + z-index: 2; + width: 0.8em; + height: 1.2em; + border-radius: 1.2em; + cursor: ew-resize; + } + .ui-state-default { + border: 1px solid #d3d3d3; + background: #e6e6e6 none 50% 50% repeat-x; + font-weight: normal; + color: #555555; + } + } + + /* Measures */ + .gn-measure-text { + .alert { + margin-top: 1em; + } + dt { + width: 120px; + } + dd { + margin-left: 130px; + } + } + + + .alert-warning { + background: rgba(252,248,227,.6) + } + .panel-sm { + font-size: @font-size-small; + } + + [gn-localisation-input] { + .dropdown-menu { + padding-bottom: 0; + } + } + .gn-draw-styleform { + > div > input { + margin: 15px 0; + width: 80%; + } + label { + font-weight: normal; + font-size: 13px; + } + form { + margin-top: 10px; + padding-bottom: 100px; + input[type='text'] { + width: 146px; + } + input[type='number'] { + width: 55px; + } + .form-group { + margin-top: 2px; + margin-bottom: 8px; + } + } + } + + + [gn-data-filter-view], + [data-gn-data-filter-view], + .gn-data-filter-view { + table { + font-size: 80%; + } + .gn-btn-data-download { + position: absolute; + right: 0px; + top: 18px; + } + } +} + +[gn-popup] { + display: none; + min-width: 200px; + max-width: @gn-popup-max-width; + min-height: 100px; + max-height: ~"calc(100% - 89px)"; + z-index: 2000; + height: auto; + + @media (max-width: @screen-tablet) { + z-index: 1500; + left: 2%; + right: 2%; + top: 2%; + bottom: 2%; + max-height: none; + max-width: none; + overflow-y: auto; + -webkit-overflow-scrolling: touch; + } + @media (max-width: @screen-phone) { + position: fixed !important; + overflow: hidden; + } +} + +[gn-bootstrap-datepicker].input-group[class*="col-"] { + padding-left: 15px; + padding-right: 15px; +} + +.gn-popup-content { + overflow: auto; + max-width: inherit; + max-height: 600px; + font-size: 12px; + @media (max-width: @screen-phone) { + width: 100%; + height: auto; + max-height: none; + position: absolute; + top: 36px; + bottom: 10px; + overflow-x: hidden; + overflow-y: auto; + table { + width: 100% !important; + td { + vertical-align: top; + } + } + } + .gn-popup-iframe { + width: 1000px; + height: 600px; + + &.profile { + width: 500px; + height: 400px; + } + &.transect { + width: 400px; + height: 600px; + } + &.time { + width: 400px; + height: 300px; + } + } +} + + + +[data-gn-wfs-filter-facets], [gn-wfs-filter-facets] { + font-size:12px; + .gn-facet { + > .list-group { + overflow: auto; + max-height: 10em; + margin-bottom: 10px; + } + + .list-group-item:hover { + cursor: pointer; + } + .fa { + margin-right: .3em; + font-size: 14px; + } + } + + .btn-group { + margin-top: 15px; + margin-bottom: 15px; + display: inline-block !important; + } + + .close { + font-size: 14px; + } +} + +[gn-wfs-filter-facets-tree] { + .list-group .list-group{ + display: none; + } + .gn-leaf { + margin-left: 16px; + } +} + +gn-features-tables, .gn-viewer-info-pane { + display : block; + position : absolute; + bottom : 1em; + left : 1em; + right : 3.8em; + background-color : rgba(255,255,255, .6); + border-radius : 3px; + .nav li a { + background : rgba(255, 255, 255, .5); + text-shadow : 0 0 1px white; + .badge { + text-shadow : none; + } + } + .tab-content { + background : white; + min-height : 5em; + padding : 1em; + } + .gn-features-table { + padding : .25em; + } + .layername { + display : inline-block; + max-width : 10em; + text-overflow : ellipsis; + white-space : nowrap; + overflow : hidden; + vertical-align : middle; + } + .close { + font-size : 24px; + margin : .25em .4em 0 0; + } + + .profile { + width: 100%; + min-height: 20em; + height: 200px; + overflow-x: auto; + svg { + width: auto; + } + .overlay { + width: 100%; + } + } +} + +gn-wps-process-form { + .popover-parent { + position: relative; + } + + ul { + list-style: none; + } + + .panel { + background: none; + margin-bottom: 0px; + border: none; + box-shadow: none; + + .panel-heading { + height: 2em; + line-height: 1.6em; + + .close { + margin-right: -0.2em; + } + } + } + + .form-group .output-selection { + display: inline-block; + } + .form-group .input-group { + margin-bottom: 6px; + } +} + +gn-geometry-tool .btn-group { + display: flex; + .btn { + flex-basis: initial !important; + flex-grow: 1; + &.btn-icon { + flex-grow: 0 !important; + } + } +} + +.ol-dragbox, .gnbbox-dragbox { + background-color: rgba(255,255,255,0.4); + border: solid 2px red; + } + +.layermanager-item-menu { + margin: -9px -14px; + ul { + li { + padding: 8px 10px !important; + border-top: 1px solid #ccc; + a { + font-size: 14px; + } + &:first-child { + border-top: 0; + } + label { + color: #757575; + } + } + input[type="range"] { + width: 100% !important; + } + } +} + +[gn-ows-context] { + ul.gn-resultview li.gn-grid { + width: 150px; + min-width: 150px; + max-height: 170px; + padding: 2px; + margin: 2px; + font-size: 80%; + text-align: center; + } + .gn-md-thumbnail { + float:left; + width: 110px; + height: 110px; + margin: 2px !important; + } +} +[data-gn-search-layer-for-map] { + .gn-md-thumbnail .gn-img-thumbnail { + width: 40px; + height: 40px; + margin: 2px !important; + } +} diff --git a/src/main/webapp/catalog/style/inspire/iti.css b/src/main/webapp/catalog/style/inspire/iti.css new file mode 100644 index 0000000..6c19692 --- /dev/null +++ b/src/main/webapp/catalog/style/inspire/iti.css @@ -0,0 +1,776 @@ +/* Colors by group of themes */ +/* Icons ref for the 34 themes */ +/* Fonts containing icons for the 34 themes */ +@font-face { + font-family: 'INSPIRE-themes'; + src: url('../catalog/style/inspire/INSPIRE-themes.eot?9d9vnf'); + src: url('../catalog/style/inspire/INSPIRE-themes.eot?#iefix9d9vnf') format('embedded-opentype'), url('../catalog/style/inspire/INSPIRE-themes.ttf?9d9vnf') format('truetype'), url('../catalog/style/inspire/INSPIRE-themes.woff?9d9vnf') format('woff'), url('../catalog/style/inspire/INSPIRE-themes.svg?9d9vnf#INSPIRE-themes') format('svg'); + font-weight: normal; + font-style: normal; +} +/* Fonts for labels + Generated by Font Squirrel (http://www.fontsquirrel.com) on June 2, 2015 */ +@font-face { + font-family: 'pf_square_sans_promedium'; + src: url('../catalog/style/inspire/pfsquaresanspro-medium-webfont.eot'); + src: url('../catalog/style/inspire/pfsquaresanspro-medium-webfont.eot?#iefix') format('embedded-opentype'), url('../catalog/style/inspire/pfsquaresanspro-medium-webfont.woff2') format('woff2'), url('../catalog/style/inspire/pfsquaresanspro-medium-webfont.woff') format('woff'), url('../catalog/style/inspire/pfsquaresanspro-medium-webfont.ttf') format('truetype'), url('pfsquaresanspro-medium-webfont.svg#pf_square_sans_promedium') format('svg'); + font-weight: normal; + font-style: normal; +} +[class^="iti-"], +[class*=" iti-"] { + font-family: 'INSPIRE-themes'; + speak: none; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + /* Better Font Rendering =========== */ + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.inspire-themes-icons-box, +.iti-box { + border-radius: 6px; + border-collapse: initial; + margin: 2px; + width: 34px; + height: 34px; + float: left; + margin-right: 5px; + border: 2px solid; + /* Border colors */ +} +.inspire-themes-icons-box .icon, +.iti-box .icon { + border-radius: 4px; + border: 1px solid #ffffff; + padding: 0px; + width: 32px; + height: 32px; + background-color: white; + font-size: 32px; + display: table-cell; + vertical-align: middle; +} +.inspire-themes-icons-box.acr, +.iti-box.acr { + width: 80px; + display: table; +} +.inspire-themes-icons-box.acr p.label, +.iti-box.acr p.label { + font-size: 24px; + display: table-cell; + vertical-align: middle; + margin-top: 6px; + margin-bottom: 0px; +} +.inspire-themes-icons-box.full, +.iti-box.full { + width: 240px; + display: table; +} +.inspire-themes-icons-box.full p.label, +.iti-box.full p.label { + font-size: 11px; + width: 202px; + display: table-cell; + vertical-align: middle; +} +.inspire-themes-icons-box p.label, +.iti-box p.label, +.inspire-themes-icons-box p.label:before, +.iti-box p.label:before { + float: left; + /*font-family: pf_square_sans_promedium;*/ + color: white; + margin-left: 4px; +} +.inspire-themes-icons-box.bu, +.iti-box.bu, +.inspire-themes-icons-box.cp, +.iti-box.cp, +.inspire-themes-icons-box.gg, +.iti-box.gg, +.inspire-themes-icons-box.gn, +.iti-box.gn, +.inspire-themes-icons-box.oi, +.iti-box.oi, +.inspire-themes-icons-box.rs, +.iti-box.rs { + background-color: #b2b2b2; + border-color: #b2b2b2; +} +.inspire-themes-icons-box.am, +.iti-box.am, +.inspire-themes-icons-box.au, +.iti-box.au, +.inspire-themes-icons-box.hh, +.iti-box.hh, +.inspire-themes-icons-box.lu, +.iti-box.lu, +.inspire-themes-icons-box.pd, +.iti-box.pd, +.inspire-themes-icons-box.su, +.iti-box.su { + background-color: #ea572d; + border-color: #ea572d; +} +.inspire-themes-icons-box.ad, +.iti-box.ad, +.inspire-themes-icons-box.af, +.iti-box.af, +.inspire-themes-icons-box.el, +.iti-box.el, +.inspire-themes-icons-box.er, +.iti-box.er, +.inspire-themes-icons-box.pf, +.iti-box.pf, +.inspire-themes-icons-box.tn, +.iti-box.tn, +.inspire-themes-icons-box.us, +.iti-box.us { + background-color: #f59e00; + border-color: #f59e00; +} +.inspire-themes-icons-box.ac, +.iti-box.ac, +.inspire-themes-icons-box.ef, +.iti-box.ef, +.inspire-themes-icons-box.hy, +.iti-box.hy, +.inspire-themes-icons-box.mf, +.iti-box.mf, +.inspire-themes-icons-box.of, +.iti-box.of, +.inspire-themes-icons-box.sr, +.iti-box.sr { + background-color: #36a9e1; + border-color: #36a9e1; +} +.inspire-themes-icons-box.br, +.iti-box.br, +.inspire-themes-icons-box.hb, +.iti-box.hb, +.inspire-themes-icons-box.lc, +.iti-box.lc, +.inspire-themes-icons-box.ps, +.iti-box.ps, +.inspire-themes-icons-box.sd, +.iti-box.sd { + background-color: #95c11f; + border-color: #95c11f; +} +.inspire-themes-icons-box.ge, +.iti-box.ge, +.inspire-themes-icons-box.mr, +.iti-box.mr, +.inspire-themes-icons-box.nz, +.iti-box.nz, +.inspire-themes-icons-box.so, +.iti-box.so { + background-color: #b17f4a; + border-color: #b17f4a; +} +/* Icon colors */ +.iti-bu, .iti-15, .iti-Bâtiments, +.iti-cp, .iti-6, .iti-Parcellescadastrales, +.iti-gg, .iti-2, .iti-Systèmesdemaillagegéographique, +.iti-gn, .iti-3, .iti-Dénominationsgéographiques, +.iti-oi, .iti-12,.iti-Ortho-imagerie, +.iti-rs, .iti-1, .iti-Référentielsdecoordonnées { + color: #b2b2b2; +} +.iti-am, .iti-24, .iti-Zonesdegestionderestrictionouderéglementationetunitésdedéclaration, +.iti-au, .iti-4, .iti-Unitésadministratives, +.iti-hh, .iti-18, .iti-Santéetsécuritédespersonnes, +.iti-lu, .iti-17, .iti-Usagedessols, +.iti-pd, .iti-23, .iti-Répartitiondelapopulation—démographie, +.iti-su, .iti-14, .iti-Unitésstatistiques { + color: #ea572d; +} +.iti-ad, .iti-5, .iti-Adresses, +.iti-af, .iti-22, .iti-Installationsagricolesetaquacoles, +.iti-el, .iti-10, .iti-Altitude, +.iti-er, .iti-33, .iti-Sourcesdénergie, +.iti-pf, .iti-21, .iti-Lieuxdeproductionetsitesindustriels, +.iti-tn, .iti-7, .iti-Réseauxdetransport, +.iti-us, .iti-19, .iti-Servicesdutilitépubliqueetservicespublics{ + color: #f59e00; +} +.iti-ac, .iti-26, .iti-Conditionsatmosphériques, +.iti-ef, .iti-20, .iti-Installationsdesuivienvironnemental, +.iti-hy, .iti-8, .iti-Hydrographie, +.iti-mf, .iti-27, .iti-Caractéristiquesgéographiquesmétéorologiques, +.iti-of, .iti-28, .iti-Caractéristiquesgéographiquesocéanographiques, +.iti-sr, .iti-29 .iti-Régionsmaritimes{ + color: #36a9e1; +} +.iti-br, .iti-30, .iti-Régionsbiogéographiques, +.iti-hb, .iti-31, .iti-Habitatsetbiotopes, +.iti-lc, .iti-11, .iti-Occupation, +.iti-ps, .iti-9, .iti-Sitesprotégés, +.iti-sd, .iti-32, .iti-Répartitiondesespèces { + color: #95c11f; +} +.iti-ge, .iti-13, .iti-Géologie, +.iti-mr, .iti-34, .iti-Ressourcesminérales, +.iti-nz, .iti-25, .iti-Zonesà risquenaturel, +.iti-so, .iti-16, .iti-Sols { + color: #b17f4a; +} +/* +An experiment of loop - need more work. +@iti-theme-bu: bu; +@iti-theme-cp: cp; +@iti-theme-gg: gg; +@iti-group-grey: @iti-theme-bu, @iti-theme-cp, @iti-theme-gg; + +.iti-group-box-color(@color) { + background-color: @color; + border-color: @color; +} +.@{iti-css-prefix}-box { + .-(@i: length(@iti-group-grey)) when (@i > 0) { + @name: extract(@iti-group-grey, @i); + &.@{name} { + .iti-group-box-color(@iti-color-grey) + } + .-((@i - 1)); + } .-; +}*/ +.iti-bu:before, .iti-15:before, .iti-Bâtiments:before { + content: "\e606"; +} +.iti-cp:before, .iti-6:before, .iti-Parcellescadastrales:before { + content: "\e607"; +} +.iti-gg:before, .iti-2:before, .iti-Systèmesdemaillagegéographique:before { + content: "\e60c"; +} +.iti-gn:before, .iti-3:before, .iti-Dénominationsgéographiques:before { + content: "\e60d"; +} +.iti-oi:before, .iti-12:before, .iti-Ortho-imagerie:before { + content: "\e617"; +} +.iti-rs:before, .iti-1:before, .iti-Référentielsdecoordonnées:before { + content: "\e61b"; +} +.iti-am:before, .iti-24:before, .iti-Zonesdegestionderestrictionouderéglementationetunitésdedéclaration:before { + content: "\e603"; +} +.iti-au:before, .iti-4:before, .iti-Unitésadministratives:before { + content: "\e604"; +} +.iti-hh:before, .iti-18:before, .iti-Santéetsécuritédespersonnes:before { + content: "\e60f"; +} +.iti-lu:before, .iti-17:before, .iti-Usagedessols:before { + content: "\e612"; +} +.iti-pd:before, .iti-23:before, .iti-Répartitiondelapopulation—démographie:before { + content: "\e618"; +} +.iti-su:before, .iti-14:before, .iti-Unitésstatistiques:before { + content: "\e61f"; +} +.iti-ad:before, .iti-5:before, .iti-Adresses:before { + content: "\e601"; +} +.iti-af:before, .iti-22:before, .iti-Installationsagricolesetaquacoles:before { + content: "\e602"; +} +.iti-el:before, .iti-10:before, .iti-Altitude:before { + content: "\e609"; +} +.iti-er:before, .iti-33:before, .iti-Sourcesdénergie:before { + content: "\e60a"; +} +.iti-pf:before, .iti-21:before, .iti-Lieuxdeproductionetsitesindustriels:before { + content: "\e619"; +} +.iti-tn:before, .iti-7:before, .iti-Réseauxdetransport:before{ + content: "\e620"; +} +.iti-us:before, .iti-19:before, .iti-Servicesdutilitépubliqueetservicespublics:before { + content: "\e621"; +} +.iti-ac:before, .iti-26:before, .iti-Conditionsatmosphériques:before{ + content: "\e600"; +} +.iti-ef:before, .iti-20:before, .iti-Installationsdesuivienvironnemental:before { + content: "\e608"; +} +.iti-hy:before, .iti-8:before, .iti-Hydrographie:before { + content: "\e610"; +} +.iti-mf:before, .iti-27:before, .iti-Caractéristiquesgéographiquesmétéorologiques:before { + content: "\e613"; +} +.iti-of:before, .iti-28:before, .iti-Caractéristiquesgéographiquesocéanographiques:before { + content: "\e616"; +} +.iti-sr:before, .iti-29:before, .iti-Régionsmaritimes:before { + content: "\e61e"; +} +.iti-br:before, .iti-30:before, .iti-Régionsbiogéographiques:before { + content: "\e605"; +} +.iti-hb:before, .iti-31:before, .iti-Habitatsetbiotopes:before { + content: "\e60e"; +} +.iti-lc:before, .iti-11:before, .iti-Occupation:before { + content: "\e611"; +} +.iti-ps:before, .iti-9:before, .iti-Sitesprotégés:before { + content: "\e61a"; +} +.iti-sd:before, .iti-32:before, .iti-Répartitiondesespèces:before { + content: "\e61c"; +} +.iti-ge:before, .iti-13:before, .iti-Géologie:before { + content: "\e60b"; +} +.iti-mr:before, .iti-34:before, .iti-Ressourcesminérales:before { + content: "\e614"; +} +.iti-nz:before, .iti-25:before, .iti-Zonesà risquenaturel:before { + content: "\e615"; +} +.iti-so:before, .iti-16:before, .iti-Sols:before { + content: "\e61d"; +} +/*=========SCALABILITY=========*/ +.x05 .iti-box { + border-radius: 3px; + /*6*/ + width: 16px; + /*34*/ + height: 16px; + /*34*/ + margin-right: 2px; + /*5*/ + border-width: 1px; + /*2*/ +} +.x05 .iti-box .icon { + border-radius: 2px; + /*4*/ + border-width: 0px; + /*1*/ + width: 16px; + /*32*/ + height: 16px; + /*32*/ + font-size: 16px; + /*32*/ +} +.x05 .iti-box.acr { + width: 40px; + /*80*/ +} +.x05 .iti-box.full { + width: 110px; + /*220*/ +} +.x05 .iti-box .label, +.x05 .iti-box .label:before { + margin-left: 2px; + /*4*/ +} +.x05 .iti-box.acr .label { + font-size: 12px; + /*24*/ + margin-top: 3px; + /*6*/ +} +.x05 .iti-box.full .label { + font-size: 4px; + /*11*/ + margin-top: 4px; + /*11*/ + width: 91px; + /*182*/ + /*white-space: pre;*/ + display: none; +} +.x05 .iti-box.full .label.two { + margin-top: 3px; + /*6*/ +} +.x15 .iti-box { + border-radius: 9px; + /*6*/ + width: 50px; + /*34*/ + height: 50px; + /*34*/ + margin-right: 8px; + /*5*/ + border-width: 3px; + /*2*/ +} +.x15 .iti-box .icon { + border-radius: 6px; + /*4*/ + border-width: 1px; + /*1*/ + width: 48px; + /*32*/ + height: 48px; + /*32*/ + font-size: 48px; + /*32*/ +} +.x15 .iti-box.acr { + width: 120px; + /*80*/ +} +.x15 .iti-box.full { + width: 330px; + /*220*/ +} +.x15 .iti-box .label, +.x15 .iti-box .label:before { + margin-left: 6px; + /*4*/ +} +.x15 .iti-box.acr .label { + font-size: 36px; + /*24*/ + margin-top: 9px; + /*6*/ +} +.x15 .iti-box.full .label { + font-size: 17px; + /*11*/ + margin-top: 17px; + /*11*/ + width: 273px; + /*182*/ + /*white-space: pre;*/ +} +.x15 .iti-box.full .label.two { + margin-top: 9px; + /*6*/ +} +.x20 .iti-box { + border-radius: 12px; + /*6*/ + width: 68px; + /*34*/ + height: 68px; + /*34*/ + margin-right: 10px; + /*5*/ + border-width: 4px; + /*2*/ +} +.x20 .iti-box .icon { + border-radius: 8px; + /*4*/ + border-width: 2px; + /*1*/ + width: 64px; + /*32*/ + height: 64px; + /*32*/ + font-size: 64px; + /*32*/ +} +.x20 .iti-box.acr { + width: 160px; + /*80*/ +} +.x20 .iti-box.full { + width: 440px; + /*220*/ +} +.x20 .iti-box .label, +.x20 .iti-box .label:before { + margin-left: 8px; + /*4*/ +} +.x20 .iti-box.acr .label { + font-size: 48px; + /*24*/ + margin-top: 12px; + /*6*/ +} +.x20 .iti-box.full .label { + font-size: 22px; + /*11*/ + margin-top: 22px; + /*11*/ + width: 364px; + /*11*/ + /*white-space: pre;*/ +} +.x20 .iti-box.full .label.two { + margin-top: 12px; + /*6*/ +} +.x25 .iti-box { + border-radius: 18px; + /*6*/ + width: 84px; + /*34*/ + height: 84px; + /*34*/ + margin-right: 15px; + /*5*/ + border-width: 6px; + /*2*/ +} +.x25 .iti-box .icon { + border-radius: 12px; + /*4*/ + border-width: 2px; + /*1*/ + width: 80px; + /*32*/ + height: 80px; + /*32*/ + font-size: 80px; + /*32*/ +} +.x25 .iti-box.acr { + width: 200px; + /*80*/ +} +.x25 .iti-box.full { + width: 550px; + /*220*/ +} +.x25 .iti-box .label, +.x25 .iti-box .label:before { + margin-left: 10px; + /*4*/ +} +.x25 .iti-box.acr .label { + font-size: 60px; + /*24*/ + margin-top: 15px; + /*6*/ +} +.x25 .iti-box.full .label { + font-size: 28px; + /*11*/ + margin-top: 28px; + /*11*/ + width: 454px; + /*182*/ + /*white-space: pre;*/ +} +.x25 .iti-box.full .label.two { + margin-top: 15px; + /*6*/ +} +.iti-box.acr.ac .label:before { + content: "AC"; +} +.iti-box.acr.ad .label:before { + content: "AD"; +} +.iti-box.acr.af .label:before { + content: "AF"; +} +.iti-box.acr.am .label:before { + content: "AM"; +} +.iti-box.acr.au .label:before { + content: "AU"; +} +.iti-box.acr.br .label:before { + content: "BR"; +} +.iti-box.acr.bu .label:before { + content: "BU"; +} +.iti-box.acr.cp .label:before { + content: "CP"; +} +.iti-box.acr.ef .label:before { + content: "EF"; +} +.iti-box.acr.el .label:before { + content: "EL"; +} +.iti-box.acr.er .label:before { + content: "ER"; +} +.iti-box.acr.ge .label:before { + content: "GE"; +} +.iti-box.acr.gg .label:before { + content: "GG"; +} +.iti-box.acr.gn .label:before { + content: "GN"; +} +.iti-box.acr.hb .label:before { + content: "HB"; +} +.iti-box.acr.hh .label:before { + content: "HH"; +} +.iti-box.acr.hy .label:before { + content: "HY"; +} +.iti-box.acr.lc .label:before { + content: "LC"; +} +.iti-box.acr.lu .label:before { + content: "LU"; +} +.iti-box.acr.mf .label:before { + content: "MF"; +} +.iti-box.acr.mr .label:before { + content: "MR"; +} +.iti-box.acr.nz .label:before { + content: "NZ"; +} +.iti-box.acr.of .label:before { + content: "OF"; +} +.iti-box.acr.oi .label:before { + content: "OI"; +} +.iti-box.acr.pd .label:before { + content: "PD"; +} +.iti-box.acr.pf .label:before { + content: "PF"; +} +.iti-box.acr.ps .label:before { + content: "PS"; +} +.iti-box.acr.rs .label:before { + content: "RS"; +} +.iti-box.acr.sd .label:before { + content: "SD"; +} +.iti-box.acr.so .label:before { + content: "SO"; +} +.iti-box.acr.sr .label:before { + content: "SR"; +} +.iti-box.acr.su .label:before { + content: "SU"; +} +.iti-box.acr.tn .label:before { + content: "TN"; +} +.iti-box.acr.us .label:before { + content: "US"; +} + +.iti-box.full.ac-en .label:before { + content: "Atmospheric conditions"; +} +.iti-box.full.ad-en .label:before { + content: "Addresses"; +} +.iti-box.full.af-en .label:before { + content: "Agricultural and\A aquaculture facilities"; +} +.iti-box.full.am-en .label:before { + content: "Area management/restriction/\A regulation zones and reporting units"; +} +.iti-box.full.au-en .label:before { + content: "Administrative units"; +} +.iti-box.full.br-en .label:before { + content: "Bio-geographical regions"; +} +.iti-box.full.bu-en .label:before { + content: "Buildings"; +} +.iti-box.full.cp-en .label:before { + content: "Cadastral parcels"; +} +.iti-box.full.ef-en .label:before { + content: "Environmental monitoring facilities"; +} +.iti-box.full.el-en .label:before { + content: "Elevation"; +} +.iti-box.full.er-en .label:before { + content: "Energy resources"; +} +.iti-box.full.ge-en .label:before { + content: "Geology"; +} +.iti-box.full.gg-en .label:before { + content: "Geographical grid systems"; +} +.iti-box.full.gn-en .label:before { + content: "Geographical names"; +} +.iti-box.full.hb-en .label:before { + content: "Habitats and biotopes"; +} +.iti-box.full.hh-en .label:before { + content: "Human health and safety"; +} +.iti-box.full.hy-en .label:before { + content: "Hydrography"; +} +.iti-box.full.lc-en .label:before { + content: "Land cover"; +} +.iti-box.full.lu-en .label:before { + content: "Land use"; +} +.iti-box.full.mf-en .label:before { + content: "Meteorological\A geographical features"; +} +.iti-box.full.mr-en .label:before { + content: "Mineral resources"; +} +.iti-box.full.nz-en .label:before { + content: "Natural risk zones"; +} +.iti-box.full.of-en .label:before { + content: "Oceanographic\A geographical features"; +} +.iti-box.full.oi-en .label:before { + content: "Orthoimagery"; +} +.iti-box.full.pd-en .label:before { + content: "Population distribution –\A demography"; +} +.iti-box.full.pf-en .label:before { + content: "Production and industrial facilities"; +} +.iti-box.full.ps-en .label:before { + content: "Protected sites"; +} +.iti-box.full.rs-en .label:before { + content: "Coordinate reference systems"; +} +.iti-box.full.sd-en .label:before { + content: "Species distribution"; +} +.iti-box.full.so-en .label:before { + content: "Soil"; +} +.iti-box.full.sr-en .label:before { + content: "Sea regions"; +} +.iti-box.full.su-en .label:before { + content: "Statistical units"; +} +.iti-box.full.tn-en .label:before { + content: "Transport networks"; +} +.iti-box.full.us-en .label:before { + content: "Utility and governmental services"; +} diff --git a/src/main/webapp/catalog/templates/admin/admin.html b/src/main/webapp/catalog/templates/admin/admin.html new file mode 100644 index 0000000..2085edc --- /dev/null +++ b/src/main/webapp/catalog/templates/admin/admin.html @@ -0,0 +1,38 @@ +<span> + <div class="col-lg-8" data-ng-controller="GnAdminController"> + <div class="clearfix"> + <a data-ng-repeat="m in getMenu()" href="{{getMenuUrl(m)}}" + class="btn btn-lg btn-block {{m.classes}} gn-btn-admin" ng-if="getMenuUrl(m) != '#organization'"> + <i class="fa {{m.icon}} fa-4x"/> + <p data-translate="">{{m.name}}</p> + </a> + </div> + </div> + <div class="col-lg-4"> + <div class="panel panel-default" data-ng-hide="true"> + <div class="panel-heading" data-translate="">latestNews</div> + </div> + <div class="panel panel-default" data-ng-hide="true"> + <div class="panel-heading" data-translate="">quicklinks</div> + </div> + <div class="panel panel-default text-center" data-ng-hide="searchInfo.facet.types.length === 0"> + <div class="panel-body"> + <div data-ng-repeat="type in searchInfo.facet.types"> + <h2>{{type['@count']}}</h2> + <h5>{{(type['@label'] || type['@name']) | translate}}</h5> + </div> + </div> + </div> + <div class="panel panel-default text-center"> + <div class="panel-body"> + <div data-ng-hide="searchInfo.count == 0"> + <h2>{{searchInfo.count}}</h2> + <h5 data-translate="" title="{{'totalNumberOfRecordsHelp' | translate}}" + >totalNumberOfRecords</h5> + </div> + <div data-ng-show="searchInfo.count == 0" data-translate=""> emptyCatalogShouldBeFilled + </div> + </div> + </div> + </div> +</span> diff --git a/src/main/webapp/catalog/templates/top-toolbar.html b/src/main/webapp/catalog/templates/top-toolbar.html new file mode 100644 index 0000000..494adcc --- /dev/null +++ b/src/main/webapp/catalog/templates/top-toolbar.html @@ -0,0 +1,156 @@ +<div class="container-fluid"> + <div class="navbar-header"> + <button type="button" + class="navbar-toggle collapsed" + data-toggle="collapse" + data-target="#navbar" + title="{{'toggleNavigation' | translate}}" + aria-expanded="false" + aria-controls="navbar"> + <span class="sr-only" data-translate>toggleNavigation</span> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + </button> + </div> + <div id="navbar" class="navbar-collapse collapse"> + <ul class="nav navbar-nav"> + <li data-ng-if="gnCfg.mods.home.enabled"> + <a data-gn-active-tb-item="{{gnCfg.mods.home.appUrl}}"> + <img class="gn-logo" + data-ng-src="{{gnUrl}}../images/logos/{{info['system/site/siteId']}}.png?random{{info['system/site/lastUpdate']}}"/> + <span class="hidden-sm hidden-md">{{info['system/site/name']}}</span> + </a> + </li> + <li data-ng-if="gnCfg.mods.search.enabled"> + <a data-gn-active-tb-item="{{gnCfg.mods.search.appUrl}}" + title="{{'search' | translate}}"> + <i class="fa fa-search"></i> + <span class="hidden-sm" data-translate="">search</span> + </a> + </li> + <li data-ng-if="gnCfg.mods.map.enabled"> + <a data-gn-active-tb-item="{{gnCfg.mods.map.appUrl}}" + title="{{'map' | translate}}"> + <i class="fa fa-globe"></i> + <span class="hidden-sm" data-translate="">makeYourMap</span> + + <span data-gnv-layer-indicator=""/> + </a> + </li> + <li class="dropdown dropdown-hover open" data-ng-if="gnCfg.mods.editor.enabled" + data-ng-show="authenticated && user.isEditorOrMore()" + id="gn-login-dropdown"> + <a data-gn-active-tb-item="{{gnCfg.mods.editor.appUrl}}" + title="{{'editorBoard' | translate}}" + class="dropdown-toggle" + role="button" aria-expanded="false"> + <i class="fa fa-pencil"></i> + <span class="hidden-sm" data-translate="">contribute</span> + </a> + <ul class="dropdown-menu" role="menu"> + <li> + <a data-gn-active-tb-item="{{gnCfg.mods.editor.appUrl}}#/create"> + <i class="fa fa-fw fa-plus"/> <span data-translate="">addRecord</span> + </a> + </li> + <li> + <a data-gn-active-tb-item="{{gnCfg.mods.editor.appUrl}}#/import"> + <i class="fa fa-fw fa-upload"/> <span data-translate="">ImportRecord</span> + </a> + </li> + <li> + <a data-gn-active-tb-item="{{gnCfg.mods.editor.appUrl}}#/directory"> + <i class="fa fa-fw fa-list-ul"/> <span data-translate="">directoryManager</span> + </a> + </li> + <li> + <a data-gn-active-tb-item="{{gnCfg.mods.editor.appUrl}}#/batchedit"> + <i class="fa fa-fw fa-pencil"/> <span data-translate="">batchEditing</span> + </a> + </li> + </ul> + </li> + <li class="dropdown dropdown-hover open" data-ng-show="user.isUserAdminOrMore()"> + <a data-gn-active-tb-item="admin.console" + title="{{'adminConsole' | translate}}" + class="dropdown-toggle" + role="button" aria-expanded="false"> + <i class="fa fa-wrench"></i> + <span class="hidden-sm" data-translate="">adminConsole</span> + </a> + <ul data-ng-if="user.isUserAdmin() && viewMenuAdmin" class="dropdown-menu" role="menu"> + <li data-ng-repeat="t in userAdminMenu" data-ng-if="t.name!=usersAndGroups"> + <a data-gn-active-tb-item="admin.console{{t.route}}"> + <i class="fa fa-fw {{t.icon}}"/> <span data-translate="">{{t.name | translate}}</span> + </a> + </li> + </ul> + <ul data-ng-if="user.isAdministrator()" class="dropdown-menu" role="menu"> + <li data-ng-repeat="t in adminMenu" data-ng-if="t.name!=usersAndGroups"> + <a data-gn-active-tb-item="{{gnCfg.mods.admin.appUrl}}{{t.route}}"> + <i class="fa fa-fw {{t.icon}}"/> <span data-translate="">{{t.name | translate}}</span> + </a> + </li> + </ul> + </li> + <li><a> + <span class="alert alert-danger ng-hide" + data-ng-show="session.remainingTime > 0 && + session.remainingTime < session.alertInTitleWhen" + data-translate="" + data-translate-values="{remainingTime: '{{session.remainingTime}}'}"> + sessionWillExpireIn + </span> + </a></li> + </ul> + + + <form class="navbar-form navbar-right" role="language"> + <div class="form-group" + data-gn-language-switcher="lang" + data-langs="langs" + data-lang-labels="langLabels"/> + </form> + + <ul data-ng-if="gnCfg.mods.signin.enabled" + class="nav navbar-nav navbar-right"> + <li data-ng-show="authenticated"> + <a> + <user-account-expiration-msg/> + </a> + </li> + <li class="dropdown dropdown-hover open" data-ng-show="authenticated"> + <a href="javascript:openUserDetails();" + title="Afficher les informations du compte" + class="hidden-xs btn btn-link"> + <img class="img-circle" + data-ng-src="//gravatar.com/avatar/{{user.email | md5}}?s=18"/> + <div class="gn-user-info"> + {{user.name}} {{user.surname}}<br> + <span class="gn-user-role">{{user.profile | lowercase | translate}}</span> + </div> + <user-account-expiration-msg/> + </a> + <ul class="dropdown-menu" role="menu"> + <li> + <a href="{{gnCfg.mods.signout.appUrl}}" + title="{{'signout' | translate}}"> + <i class="fa fa-sign-out"></i> + {{'signout' | translate}} + </a> + </li> + </ul> + </li> + <li data-ng-show="!authenticated && service !== 'catalog.signin' && service !== 'new.account' && !shibbolethEnabled"> + <a href="{{gnCfg.mods.signin.appUrl | signInLink}}" + title="{{'signIn'|translate}}" + data-ng-keypress="$event" + data-ng-mouseover="focusLoginPopup()"> + <i class="fa fa-sign-in"/> + {{'signIn' | translate}} + </a> + </li> + </ul> + </div> +</div> diff --git a/src/main/webapp/catalog/views/default/directives/partials/mdactionmenu.html b/src/main/webapp/catalog/views/default/directives/partials/mdactionmenu.html new file mode 100644 index 0000000..85edfc4 --- /dev/null +++ b/src/main/webapp/catalog/views/default/directives/partials/mdactionmenu.html @@ -0,0 +1,121 @@ +<div> + <div class="btn-group md-actions" + data-ng-if="user.isConnected()"> + <button type="button" + title="{{'manageRecord' | translate}}" + class="btn btn-default dropdown-toggle" + data-toggle="dropdown" + aria-expanded="false"> + <i class="fa fa-cog"/> + <span class="caret"></span> + </button> + <ul class="dropdown-menu" role="menu"> + <li><a data-ng-href="" + data-ng-if="user.canEditRecord(md) && user.isEditorOrMore()" + data-ng-click="mdService.openPrivilegesPanel(md, getCatScope())"> + <i class="fa fa-key"></i> + <span data-translate="">privileges</span> + </a></li> + <li data-ng-if="md.isOwned() && user.isUserAdminOrMore()"> + <a data-ng-href="" + data-ng-click="mdService.openTransferOwnership(md, null, getCatScope())"> + <i class="fa fa-user"></i> + <span data-translate="">transferOwnership</span> + </a></li> + <li data-ng-if="user.canEditRecord(md) && user.isReviewerOrMore()" + data-ng-class=" + (md.isPublished() || (allowPublishInvalidMd() === true) || + (!md.isPublished() && (allowPublishInvalidMd() === false) && + (!md.hasValidation() || (md.hasValidation() && md.isValid())))) ? '' : 'disabled'" + title="{{(!md.isPublished() ? (md.isValid() ? 'mdvalid' : + (!md.hasValidation() ? 'mdnovalidation': + (allowPublishInvalidMd() === false ? 'mdinvalidcantpublish' : 'mdinvalid'))) : '') | translate }}" + > + <a data-ng-click="mdService.publish(md, undefined, undefined, getCatScope())"> + <i class="fa" + data-ng-class="md.isPublished() ? 'fa-lock' : 'fa-unlock'"></i> + <span data-ng-if="md.isPublished()" + data-translate="">unpublish</span> + <span data-ng-if="!md.isPublished()" + data-translate="">publish</span> + + <i class="fa" + data-ng-if="!md.isPublished() && md.hasValidation()" + data-ng-class="md.isValid() ? 'gn-recordtype-n text-success' : 'gn-recordtype-n text-danger'"></i> + <i class="fa gn-recordtype-n text-muted" + data-ng-if="!md.isPublished() && !md.hasValidation()"></i> + </a> + + </li> + <!-- TODO: Some installation only allows status update + based on current status. --> + <li data-ng-class="((allowPublishInvalidMd() === true) || + ((allowPublishInvalidMd() === false) && + (!md.hasValidation() || (md.hasValidation() && md.isValid())))) ? '' : 'disabled'"> + <a data-ng-href="" + data-ng-if="user.canEditRecord(md) && + md.isWorkflowEnabled()" + data-ng-click="mdService.openUpdateStatusPanel(getScope())"> + <i class="fa fa-bell"></i> + <span data-translate="">updateStatus</span> + </a></li> + <li><a data-ng-href="" + data-ng-if="user.canEditRecord(md) && + !md.isWorkflowEnabled()" + data-ng-click="mdService.startWorkflow(md, getCatScope())"> + <i class="fa fa-bell"></i> + <span data-translate="">enableWorkflow</span> + </a></li> + <li class="divider" data-ng-if="user.isConnected()"></li> + <li><a data-ng-href="" + data-ng-if="user.isEditorOrMore()" + data-ng-click="mdService.duplicate(md)"> + <i class="fa fa-copy"></i> + <span data-translate="">duplicate</span> + </a></li> + <li><a data-ng-href="" + data-ng-if="user.isEditorOrMore()" + data-ng-click="mdService.createChild(md)"> + <i class="fa fa-sitemap"></i> + <span data-translate="">createChild</span> + </a></li> + </ul> + </div> + <div class="btn-group md-actions"> + <button type="button" + title="{{'downloadRecord' | translate}}" + class="btn btn-default dropdown-toggle" + data-toggle="dropdown" + aria-expanded="false"> + <i class="fa fa-download"/> + <span class="caret"></span> + </button> + <ul class="dropdown-menu" role="menu"> + <li><a data-ng-href="" + data-ng-click="mdService.getPermalink(md)"> + <i class="fa fa-link"/> + <span data-translate="">permalink</span> + </a></li> + <li><a data-ng-href="" + data-ng-click="mdService.metadataMEF(md.getUuid())"> + <i class="fa fa-file-zip-o"></i> + <span data-translate="">exportMEF</span> + </a></li> + <li><a data-ng-href="../api/records/{{md.getUuid()}}/formatters/xsl-view?root=div&output=pdf" + target="_blank"> + <i class="fa fa-file-pdf-o"></i> + <span data-translate="">exportPDF</span> + </a></li> + <li><a data-ng-href="../api/records/{{md.getUuid()}}/formatters/xml" + target="_blank"> + <i class="fa fa-file-code-o"></i> + <span data-translate="">exportXML</span> + </a></li> + <li><a data-ng-href="" + data-ng-click="mdService.metadataRDF(md.getUuid())"> + <i class="fa fa-share-alt"></i> + <span data-translate="">exportRDF</span> + </a></li> + </ul> + </div> +</div> diff --git a/src/main/webapp/catalog/views/default/templates/results.html b/src/main/webapp/catalog/views/default/templates/results.html new file mode 100644 index 0000000..2aaae05 --- /dev/null +++ b/src/main/webapp/catalog/views/default/templates/results.html @@ -0,0 +1,117 @@ +<div class="container-fluid" + data-ng-search-form="" + data-runSearch="true"> + <div data-ng-include="'../../catalog/views/default/templates/searchForm.html'"></div> + + <div gn-grid-related-query="searchResults.records"></div> + <div class="row"> + <div class="col-md-3 gn-search-facet"> + + <div data-ng-show="searchResults.records.length > 0" + data-gn-saved-selections-panel="user"></div> + + <!-- Hierachical facet mode --> + <div class="panel panel-default" + data-ng-show="searchResults.records.length > 0"> + <div class="panel-heading" data-gn-slide-toggle=""> + <i class="fa fa-search"/> + <span data-translate="">filter</span> + </div> + <div class="panel-body"> + <div data-gn-facet-dimension-list="searchResults.dimension" + data-params="searchObj.params" + data-facet-type="facetsSummaryType" + data-facet-list="facetConfig" + data-current-facets="currentFacets"> + </div> + </div> + </div> + </div> + + <div class="col-md-9 container-fluid"> + <div class="row" data-ng-show="isFilterTagsDisplayedInSearch"> + <div class="col-xs-12"> + <div data-search-filter-tags=""> + + </div> + </div> + </div> + <div class="row"> + <div class="col-xs-12 col-md-9" + data-gn-facet-dimension-list="searchResults.dimension" + data-params="searchObj.params" + data-facet-type="facetsSummaryType" + data-facet-list="facetConfig" + data-current-facets="currentFacets" + data-tab-field="facetTabField"></div> + + <div class="col-xs-12 col-sm-6 col-sm-push-3 text-center" + data-ng-show="searchResults.records.length > 0"> + <div class="" + data-gn-pagination="paginationInfo" + data-hits-values="searchObj.hitsperpageValues" + data-enable-hot-keys="" + data-enable-events=""></div> + </div> + + <div class="col-xs-6 col-sm-3 col-sm-pull-6 col-lg-pull-6" + data-ng-show="searchResults.records.length > 0"> + <div data-gn-selection-widget="" + data-results="searchResults"></div> + </div> + + <div class="col-xs-6 col-sm-3" + data-ng-show="searchResults.records.length > 0"> + <div class="pull-right" + data-sortby-combo="" + data-params="searchObj.params" + data-gn-sortby-values="searchObj.sortbyValues"></div> + </div> + </div> + + + <div class="row"> + <div class="col-xs-12"> + <span class="loading fa fa-spinner fa-spin" + data-ng-show="searching"></span> + + <div class="alert alert-warning" role="alert" + ng-if="!searching && searchResults.count == 0"> + <i class="fa fa-frown-o"></i> + <span data-translate="">zarooResult</span> + </div> + + <div data-ng-show="searchResults.records.length > 0" + data-gn-results-container="" + data-search-results="searchResults" + data-template-url="resultTemplate" + data-map="searchObj.searchMap"></div> + </div> + </div> + + <div class="row"> + <div class="col-xs-12 text-center" + data-ng-show="searchResults.records.length > 0"> + <div class="" + data-gn-pagination="paginationInfo" + data-hits-values="searchObj.hitsperpageValues" + data-enable-hot-keys="" + data-enable-events=""></div> + </div> + </div> + <br> + </div> + + <div data-gn-map-field="searchObj.searchMap" + data-gn-map-field-geom="searchObj.params.geometry" + data-gn-map-field-opt="searchObj.mapfieldOption" + class="gn-search-map"> + </div> + + <button data-ng-click="toggleMap()" + title="{{'toggleMiniMap' | translate}}" + class="gn-toggle gn-minimap-toggle btn btn-link gn-minimap-button"> + <i class="fa fa-angle-double-right" ></i> + <b class="gn-minimap-toggle gn-minimap-text" data-translate="">map</b> + </button> +</div> diff --git a/src/main/webapp/images/logos/favicon.ico b/src/main/webapp/images/logos/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..a1891f3dfb2dd178652a7bdbec66c9638797f38d GIT binary patch literal 14942 zcmc&*2V4}#_ur$abV2G-M8$?u6dOoDV*|0p*b%I#7;HqNfC`pqVq(E)uxo688wwmC zDk7qY1?<>0*t>$D$K3(n|C>GTJQ1Xr{IY(AH?zC*=6&b2nc0)$1oY3{ouj|DoR=HN znQ|Q0j0)Z2W>I1H|E+7+=3BJ`{ZBL+HR#lL{k)Rbx3Y`d+SxVvLR<U93$2>RJ!#P} z?wx&o(L0ysqC9t}gW2vbiCg-9dt}z|z9+f|j!w7Tw(gqlza`t(@ZI&tb7l7hVOe#8 zCuX+&zQ@r$jf8Q<X4)c{>c+u>6+KpB`MMdkSuv-3W>kc_BL2R)UJT51;$W&11KWCW z=+y4u<pAIGfEiOV>;Jj>QXR!Wn^(V3RR3r6_HFQE$pG%p-|p1&?s{ZT{dzHkFP_I? zPT0&DrmrX#+KI$ZL~{@eJCnHLfqhceFJFAiBq8R3;C}{`2HLUXK0jRc<zk&49!aU@ z`f(+^4)tS5Pa?ugSak^ZS72p*&2$oopM2iTc-s)c#2~iBy>-Ifl}m3qD=>rR{NKKU z#++DWX&fhIIKLKGP5N8ZjVW<zEV}=5*o96Et6jbIUj_NMU57vEpDB96x04fJn6|P@ z$YD6m{sA4<1S{(!WMh-Rn;VGGrn%_q=2bVFFadY%xb=zLRc(-ssIzyE#pH0AnPR?M zc-T3o#%2j0Oqk97M|v%HTpbZCjbe*>e|s#E<mTi0v18S<@ut@C&nJ&L)lV@$)2E#7 zZBs9SkEgtk)(~%neOde_o;CN6c$iRJYhn?fA2jNOACvoV;>X;fz)=x3Cmjmw#-LN% zBS&XVIXlG8jPgW{^%@T|{aDID@vxvAWunb;4z(%w$ny`y04=f^(i1-)M9bA<73P@b zH!FP+dUrj#M}aLnJ5N!qkjlqnxqx!0HpxbO*c?<>4u;2^Vr)~PsMyUh=}LR&gDVGk zC(r5Wam=r$=MjHzk3;@l+b50i>2`R2d&k6R=f($f8dy*srZG)vUaC7DlabHwG@l)v zl5X67@U9*MdHVR<3bC>W)gMPL8`BTV9p;3yiFLvUPnU$K`7<&*lV53maX^)a^sfGI z;pcmFbv?4lp+VwvA)9M9Z`IA|)Tecm#CK84uQz7wWA;^S-!;W+svCo5mI?U-d#5ZQ zxiu6pjvudH{802`bk4L4pVrM2&e#}{U-0%)b-kPDiI{C6;-?F28O`n5{+N-^F1asN zoiCdoOZ_->bv>LwIBPM62?_t~x-V|`{kGpYC#72%lHW7m;(hGPGAiPqO}$u53(RcG z<Vucx$H*s_O+8UDTh~_AXRVB45FC&`fia2RTmBq=GC-LIP%Lon@Qq;Vlo<k=uTR#C zVPRpPy#2?DtL`l+f0$MQufk4E$ro%)Vh}d%f(v7&SR*PJyEz_8tCH;y9~RSkdmTLy zx#W(HqJMdG+mSoU+o8*M)Sk9vZ5!_~Gk$OA)-%)0zWtk8MmBG>bxq$`SXe%>Yh)MQ zxl`Any?pu_hlPeK@uywLSMnI(lYEeL!mni&xV}W0t{Yp#V#P048Yr2RR{o5<=4@TJ zDr<hZ4Or58$BO1}#DHVdU%Y~voK2UqY`JwwXLS3AMs3sWHmR8FFcNC5`arE&SE$*x zg@#d6Xx0%zO+y!)KtP4#i?OlsgFb!wc&%BphQ}Qq9?sprpUd+OnUc}l+BiY>C7ho; zBmJ~@IQWQc=(G6Qu4PgtdzbCyc*^HL`96TfVOE&UEBAB!a}n&UV)7;joc3V?ZH>Cb zrQLnQ%Qj&{%35u|)y0DTi=f#f47J>UfO>m>2%P(YYuXicOkJR@+XNbQEO^WUPK^aQ zWid1~d>j}U$j91<hzM@sf~!2=E$i=^**A!P@(C_pmhya?<=8lQv^}WI&pZ?QGihX6 zXMRsg`IE(6GgfGCYNm4lLcRU4p}1jd5{Cw+acF2JLL-aV;wHAS@0}aR=e2bd<&7Jb zn0fu?Jx!WRU6<c89;i)=hvv9lsO`TF^<5UCL5mOw9ezL^&j4t(8w6wP9x%3WgQ1Bd z3=A7WPu~>UIy%r%Df;^Q#qRFza}+WzTPBbD=_m8`oEs<pU8xT$bDD_R;vfZ|$jEzq zHE8rno4#FB%=>pcWIWFItZ_u>MdOvrE*M8eo;C>i@vzqF$Skcxhn{HNy79Dj!8<X- zrq1GxqMUmtHM3d$C|_g#b<_?$i#owaU_5dUTDq=<efy<o-X;PK+fRq^n;_V=@JGXD z-@&#?chqm#5mxn`U}<FsOQ9u%mO=<Ehzf<Uw6uhylgkz+U>$uSFDLtRVCOA;mu87? zEvm4OVYb=SD)t@8Stl;~8P6l-@R#!my{jCnyvmu}V*RE&WqBGa-$8xpQ`GwT7PRMP zLO3oNZNH61>rQ{6mB%Wya{mR+9mC+*VLF`Jj)y}VKRC4Nj}}f|uy=5WeG3;fw{K3A zioHEwS~PEtUVXpc#Kv8|Y^8Ge-{)U#(%4E=Qn_t2yN*Sdc8B&WJJ+xxdQ`;GT&Q~| zith^6mVjGV0?m~LsI~MNv=`roWpEZ;y^g}wI~J}zcEYXuT6FBX9PV8f!S&lvxONJL zo96_$edC7??gQZ3u_rpXb%Lv_D_q?=5Ow40En7NZ(4fHs6k<Nfl+XV-|8!qdE!rz8 zZMQr>mfy26iYxwW)onWkkDAiZEa^|&ni8lnygcS&XsjxL*76rHTzn56z0cyCeyRAj zR}$I|iAJ*@wxPq2D0KB%fi6Cah|WegpI~(N2}JjvBhkZqFnW0PftR;8yu7?YJ`4v3 z2iV!!mH7Jl8Y|?C7d_>x-P{iE=l94J#w|HsmP?%)9h4iif=M;$sW%b}t8FqKt6*I* zcpa}Lr(RQxTC3kfEAj=J{z#Yyo`*}oDKwm)h9+|o;XE@M-UGM5XV9PMHE22d4qAkM zgXW<B;29V&coGH;8%xC(y?XUh;<dK6X1d;1R>U=bTs3TN9amJjU9&xC?3W$0Eb}t$ zfD_W$Ot-vV75Xi;Yqhn-&{|ypomDSkvho2emfb|dUoW8f;&il{mx6wN2k`xfoftS` zGX{@b1K-h+@Ef%RV<$ym;*2m1A2Xi(wl6xC>et4`21Z6k7(RTsRT(k3kwZ>+^YOY0 z>#(wYtJ2Q?0Oq%vPJ1MU0`l3<@bcJ6&xBd~&-XA`{Tk+fJc8|tJ7~7-3Y?c@V!)Ub z3>}*Yzwrk!B5*gxOx%iqAJ${W&#N$L_CojvPDY=BgW%q&6CBB&tqHH5o*o)EZZcC< z#+2>g5@N4vI5rl&Vtawg^sL&qI`zowVoxrrn2%BA<CVuRb%r_W1L{S+hUMy~uv`5% z93pRG;P`X!4NSwxpd$#FoPY__VlXjy52i+J#N>HPFly>dd^da~JiB<q!O;me);6G= z3{z9{yXDCl9(J*Z34d-{am-?KQC{Dw+#7vNynrJt$~eXAw0vD_tSy4x+V?PydIOuN zr)akN0S1iA#;_l<FmiGR#!WkpiPMi@LU1g`Puq$qzeHm6jJfDPDiCfS{o&x`MtB=S z-#{O=YH49s$j|0wWn8rIltx3tc<H~T-<}E5?Ht7>mV+wPugV-~t}BB6S~1Ml=Az-6 z7x;es-xxaaI{YVJ!r0(Uj0;Xfz?4LcoVW{<7OumXu%FRy_%yhC`of`gSJZFN5_)wF znSRirV;7IIc-b1EPnV-9{}$eEaUZT#gjF7=Rp)_(A?&rt9t_usAzYt_-T_ZAI4}o( zlW$|hl*<@3B?F@-C1b>d7>u5|5o6~sgU^5vxOWbKlS?1i+O<X9dR7n!G-wTGt6U$d z;+``j(?_ufs0g>}`xVtwUlo7$$mKxMeYK60cQ??2V?E(vl=Q7us&h?hYf!00&onmD zVvcAXYS*P=x={wN(a-SxxJMW~;U0!eyozBH&tmw5Gz=lUQ<wiA#w}ijp}~vLsZS8v zcnn4p$IdXdY({$wJy==W`hO-6-4Mk**0-QDJQIpr^1{wC6?Hi^+9b=bpybutB+FZU zQ~F(bygPdwza%t02zg0@nfW0Y&C7$@IzW5IO9&0<jIu6$CoxFi>q7kmIv0tDkmRwY zJ;(gBxmbAaB^IVX!h&P>FfS<^b7IaQbXPKdTpx|Vr5oWl=Qs2VnuX3oN5Q#kPuMuL zfu5-l7B=PUm)Z2BfOA&kN1d`B=a+6hZg{$N0F|-BPFas0l5XukFwMF$-y43kFugpy z-*!lj6Y}yC9-hX-sKqe|)|WtM$PHMs{bT9<vedF}Ji;>HAtEam^UplTf|Cz0Kjjv} z6E7fi-wDjvl7PUK+c9#%N(=~|hwdYPKwF<duxs}X>e@7h_jd!8=jE!h9g2Rb+AP1W z5>v{<Zt<6-B<-b4t8C}qT@Ft(*H!3@=`9}mL+|kVWj1V1x-E-S(Pny|mGvHTFBBl+ z+#Af#c!qgtIhcFoIzr>lVfxNw1g(k2s9!f=Q0NkPPxuKP2abV#Cm)#6o+5C1h<#ak zs@$#wFSiC*mM!a6mS5oL3^#UeVnyF|EC{Q)p@@9Bn0&Z|bPO1|ouR$6d>#}ym6Y&? zWEEic#SerzA9K&XMtJ&T%sqA&p^29<ecwq0ZAw7EitQL0@dtWO4Tq;+5S+aS!m+cr zl<iSA96D51q^h+m!@Ir+JrgBQ*%&8Z%hUCl<At2~#apc=RtY8M`iXST9|xU?Jo);W z{Fkk{>MSjU1?^pw7*%bX?3v*WBfJdr?5uZ~d*&79oOp<^BeyU!HVadB9K-mi{TTks zCiI*28@h~}i8lR5!E1Oxbk%@W@Kz;wHAuf)R0$Sbl(?4V;O&{Ro#|F+m;eoyhf8xY z!>hTKY}$y$s?Y7(l49A+b7IWCB*xrq2?Dl0#jr)U5Rv&Bp{Y5Tc`zH(qB9V<B?%)U zX^l-f_L?#e9fnUtz^r-Q%gRx$b|rW@w(lYNyNaX_Nyi!!4#|}4rw5&NVDaCIFljB9 zKtQ=hK)FYQ@~qy(N3_poXVstEG{ZaVa2_JA$<S;371XOkXGfaRm>Tm8VW*y9*3rB8 zQFIYOJC9?`x>yYTbu;?RT!!zbFL*;Ts2xl$H-swX`cg%Wu&9^nrM!5hyhnSyIcKCJ z8LwBQ@`n%Qw(Zp^In|7EjS1OqJ%<x8wV>Qo`@k3DGqZ8yTG6ymkESz1I`5>mxmG-U zm)}9?xwi;C@f0%--^7#ynHazIDE$7|i|^(|;g_B9L%xKiD$lexl!$dV$%>S?D$qAu zC)eL8#o3oKYgN9>mt<QsG9?`v(6?#Qn>m$oeO6V^6yt<?Waq4~_w^F_ZwUQEZX%3g zcIcVc_$l=Pf)lb4xF-Xn*C!%mb6f@+_xRP1XWOcBRHy#5MAEX}7AfTt+V50=SK*sJ z3DO%ZcB%58JN=@UHQBUzU9#V*;3azy(wS$&1_}H(O*TIkI*I7_(^Wo(g<bf7kkf=Y zB?nXEu3*~kbn%IMk3JsQsSaMly5AAm?`*$Q5#En$;vx)5k;N#6Ig=$nbDkZNHJ#Q{ zB@A<A`ek!6Y~kMs&3=zggEDB(N^_+Z2mh!Ca=a9?!_Md9r&BKwl6+UXFZ%)eN!eFl zq$ed0s%v(Lmc3?sbT!IB72)Rhf8_50$3C27ooQLf^SE|L!Y!D4aWs98DzRYpN_nb6 z+y;pVJ0r#%!WDi+f=)xvpxekS%)Kf>=%o*(MU2Il^K&zv=i4ZStYPJTA%8ycS?|az zlFqf5O>d|euYm0dN@I5Scxf7AlA8CC-_j-5t>}Bj6QOR!c-h)y7WwI%OSHziNVqQ( z#*0#fQG3qCLLTpi+XY9jyp!r~zmvOSNoM|@kc@&oK_}nu@lBTP>769m-Ca~D@)3zo zd&P^d_K3^RX}353LHj)gFI()AylT8d`pSB{?3MARqPIaA1rwQ!Ot-4~J^iYP-R1() zB)d7<pI4+`g&#BfW~GPd{aL;v{drib>pOQPn!$k?lj$3_l>IhBu~#rBzqMfgO};)e zlVPJAOgav^{GRMsj1a2-c|-g(`MHGO-=g>ux9(<vmEW<#QyS}}BohhE?5`^Mq%;n> z?3MD1>g(4(+Ok4kM(;yf$17fTyF$Dw@k~H_cxK-%_DP;(zboOtKkmwraT`{g<5?a$ z@K}4i|EZqdo=5jPHcI+nN#Etzc|ZGY-psQMpBM|S6kz#{4{tZ!em`&j1F;iO!hbs_ z*XC05Kgzi5imZ)KqVyia`!SZN?y)Pb|8_w-LKS1#`lURnfk%uim#sCbgqtwe-CTsx zsgg}(GyFHhYb5WEzZNT5v-`_`y)5+gNp9)yo9?#zhQuTGp}6Ut0;!quC8}Ig!Kk=@ zgU$!p#q2TUtfXh#1CkdUtp}=#yG^vD(j<01ugKbEpQNBFc$M$ay0hgT+1tez#C{4{ zZ;C(aNO7;G^mKvz+~It_)U(kJI`<~~QjV=+cc0uNoz+=ijD7bd-W82|o8lR}uD&m} zY_VHfpzzsG_>|$#&o%iKi)Spxx7#nhw&1*EH0eZ{t8+;|Uvm*JqtV9;e>VQBxP-}4 z@mcWaw%zf7H2X_qQ#j!tKSq(2<NwL>zJ#^HXJm6udu0XvlO?|#xc8ww$*Wy<OlG5% zU75K>&4(mQ*VNxZF^kUk)vM@ds&eUWEXKK9*%$ZClp1+aD2AA|+%0|hu|Ek}g&3*) z#=?JJDuUB)DFz&tCQUh27(D+%q2tLHg=U0TpNbw816FPo$c*;i|6o7!oYaGIMMSp* z>2>Y(GTv^P4Kbel8la4QeU$BU-SW>!2A_k4@<3YI1W$d*VnyxN2PEfNE)dXqM4jyu zt2w5^=H=tl_ZB)IXtYfX`yB;nM#Yxu2Ae46N0DDrET}I3%HG%8TqIArmEoo5@sFka zTcc9mC##eH^K)HIy!_sh>4^DwDG$XNHuFV!DUG|-u8|(glZo+G+^+&w#Vc9)^7y#q zvLw)Ov#dlwXBq7Lrm}hcFP`(~N@V+{TP213K8WhP-z&gWlU{yTY}G4CeD@PSrg{7? zu$3KCuFGQdJ5-oPekh2#B^hSBO;W^>O;r;n|N7Njxt^a9uQfNMLu~0Au+ml;&;L;8 z>Xef;NrsR!k`)ZA0$)}^k#0za^t12Bisx0L{_<r@(leRfqDzwH4H$09y*%FkLe~_7 zTkjLgR%OeaRpq}^n)3+1>g^iUAJX1Pab3)p>CMTKjcb2E@|s~5@Oh~EalAVA!N(68 z$7G9)&HxL4zauW;&&rQI|2z~o`&}M$74m)!%}|*;W=9JzN!t%kkt7JWQW96mEy_5_ zY`%&%@JSzquMkGIhIZOrSTy#yWLDbSqJQK}peA#0N@dOe0Y&CPr^KVY6J<wQ?v{zQ z*qWEm-L!!y#mp!xEFbato#iVw7pz^nAL8HTF_xg=4r%eQ6xm-ZuZlfsZk7K(E3V+9 zt<^;Cf4UFJrkVDvsO5x{65no#;z-y1g(sY&Wlx*ay33N*ipE=IFri|xO$r-oH{K<I z{azUy_sahEjFUwVI4b^W-3>AOO}TPi`jnQK)wzJ2+SET6B^>9;DE&N>emIwlRN}%Y zW9ErmddzVK$mP949l7lPC2|7f)@76nr(Oaoo>b~1f~!w7oLCv;(mN>PYUgrn6i%Jd z)bI#FZiIRXXOP3?MsS7f?$lJynG+OpQ%N3<o6R|c3E;ui1##m%OKE*35)Ee%QA$%e zCO2nLN^9qEG#JNyMsrK=lUV$75^XknkLcVo)T6Y`DB<O3OeL+)AVqKlF*mh#DnBo& z>Nz~r90niA%_TgP6o}5{YDaKW3pvk-`Z?UxB4UC<&bfq5L=oX*6O&80B4~C~iKcS3 u859PeUGz*&`3a{sdq_t~{CseN9DaUiUKvvokSKd0oG5W3y$~&8a{fQ@!n_y& literal 0 HcmV?d00001 diff --git a/src/main/webapp/xslt/base-layout.xsl b/src/main/webapp/xslt/base-layout.xsl new file mode 100644 index 0000000..2d5b686 --- /dev/null +++ b/src/main/webapp/xslt/base-layout.xsl @@ -0,0 +1,131 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + ~ Copyright (C) 2001-2016 Food and Agriculture Organization of the + ~ United Nations (FAO-UN), United Nations World Food Programme (WFP) + ~ and United Nations Environment Programme (UNEP) + ~ + ~ This program is free software; you can redistribute it and/or modify + ~ it under the terms of the GNU General Public License as published by + ~ the Free Software Foundation; either version 2 of the License, or (at + ~ your option) any later version. + ~ + ~ This program is distributed in the hope that it will be useful, but + ~ WITHOUT ANY WARRANTY; without even the implied warranty of + ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + ~ General Public License for more details. + ~ + ~ You should have received a copy of the GNU General Public License + ~ along with this program; if not, write to the Free Software + ~ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + ~ + ~ Contact: Jeroen Ticheler - FAO - Viale delle Terme di Caracalla 2, + ~ Rome - Italy. email: geonetwork@osgeo.org + --> + +<!-- + The main entry point for all user interface generated + from XSLT. +--> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + version="2.0" + exclude-result-prefixes="#all"> + + <xsl:output omit-xml-declaration="yes" method="html" doctype-system="html" indent="yes" + encoding="UTF-8"/> + + <xsl:include href="common/base-variables.xsl"/> + + <xsl:include href="base-layout-cssjs-loader.xsl"/> + + <!-- Enable extension of application --> + <!-- @PRODIGE --> + <xsl:include href="extend/base-layout-cssjs-loader.xsl"/> + + <xsl:template match="/"> + <html ng-app="{$angularModule}" lang="{$lang}" id="ng-app"> + <head> + <title> + <xsl:value-of select="concat($env/system/site/name, ' - ', $env/system/site/organization)" + /> + </title> + <meta charset="utf-8"/> + <meta name="viewport" content="initial-scale=1.0, user-scalable=no"/> + <meta name="apple-mobile-web-app-capable" content="yes"/> + + <meta name="description" content=""/> + <meta name="keywords" content=""/> + + + <!--<link rel="icon" sizes="16x16 32x32 48x48" type="image/png" + href="../../images/logos/favicon.png"/>--> + <link href="rss.search?sortBy=changeDate" rel="alternate" type="application/rss+xml" + title="{concat($env/system/site/name, ' - ', $env/system/site/organization)}"/> + <link href="portal.opensearch" rel="search" type="application/opensearchdescription+xml" + title="{concat($env/system/site/name, ' - ', $env/system/site/organization)}"/> + + <xsl:call-template name="css-load"/> + <!-- @PRODIGE --> + <xsl:call-template name="ux-css-load"/> + </head> + + + <!-- The GnCatController takes care of + loading site information, check user login state + and a facet search to get main site information. + --> + <body data-ng-controller="GnCatController"> + <!-- @PRODIGE force the authenticated status --> + <xsl:if test="not($isLoggedIn)"> + <iframe src="/geonetwork/srv/fre/catalog.signin?redirect=noroute" style="display:none" onload="$(this).remove()"></iframe> + </xsl:if> + <!-- @PRODIGE --> + <div data-gn-alert-manager=""></div> + + <xsl:choose> + <xsl:when test="ends-with($service, 'nojs')"> + <!-- No JS degraded mode ... --> + <div> + <!-- TODO: Add header/footer --> + <xsl:apply-templates mode="content" select="."/> + </div> + </xsl:when> + <xsl:otherwise> + <xsl:if test="$isJsEnabled"> + <xsl:call-template name="no-js-alert"/> + </xsl:if> + <!-- AngularJS application --> + <xsl:if test="$angularApp != 'gn_search' and $angularApp != 'gn_viewer' and $angularApp != 'gn_formatter_viewer'"> + <div class="navbar navbar-default gn-top-bar" + data-ng-hide="layout.hideTopToolBar" + data-ng-include="'{$uiResourcesPath}templates/top-toolbar.html'"></div> + </xsl:if> + + <xsl:apply-templates mode="content" select="."/> + + <xsl:if test="$isJsEnabled"> + <!-- @PRODIGE --> + <script src="{$uiResourcesPath}js/jscompatibility.js"></script> + <xsl:call-template name="javascript-load"/> + <!-- @PRODIGE --> + <xsl:call-template name="ux-javascript-load"/> + </xsl:if> + </xsl:otherwise> + </xsl:choose> + </body> + </html> + </xsl:template> + + + <xsl:template name="no-js-alert"> + <noscript> + <div class="alert alert-warning" data-ng-hide=""> + <strong> + <xsl:value-of select="$i18n/warning"/> + </strong> + <xsl:text> </xsl:text> + <xsl:copy-of select="$i18n/nojs"/> + </div> + </noscript> + </xsl:template> + +</xsl:stylesheet> diff --git a/src/main/webapp/xslt/extend/base-layout-cssjs-loader.xsl b/src/main/webapp/xslt/extend/base-layout-cssjs-loader.xsl new file mode 100644 index 0000000..b9a5683 --- /dev/null +++ b/src/main/webapp/xslt/extend/base-layout-cssjs-loader.xsl @@ -0,0 +1,36 @@ +<?xml version="1.0" encoding="UTF-8"?> +<xsl:stylesheet version="2.0" + xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:util="java:org.fao.geonet.util.XslUtil" + exclude-result-prefixes="#all"> + <!-- Template to load CSS and Javascript --> + + <xsl:include href="base-variables.xsl"/> + + <xsl:template name="ux-css-load"> + <!-- ALKANTE EXTENSION --> + <link href="{/root/gui/url}/apps_extend//bootstrap-submenu-2.0.4/css/bootstrap-submenu.css" rel="stylesheet" media="screen" /> + <link href="{/root/gui/url}/apps_extend/css/apps_extend.css{$minimizedParam}" rel="stylesheet" media="screen" /> + </xsl:template> + + + <xsl:template name="ux-javascript-load"> + <script type="text/javascript"> + var __PRODIGE_CATALOGUE_CONFIG_URL__ = '<xsl:value-of select="/root/gui/config/prodige/catalogue/url"/>'; + var __PRODIGE_BROADCAST_CONNECT_URL__ = [ + <xsl:for-each select="/root/gui/config/prodige/broadcast-connect/url"> + '<xsl:value-of select="text()" />'<xsl:if test="position() != last()">,</xsl:if> + </xsl:for-each> + ]; + </script> + <!-- ALKANTE_EXTENSION [--> + <script type="text/javascript" src="{/root/gui/url}/catalog/lib/jquery.ext/jquery.cookie.js"></script> + <script type="text/javascript" src="{/root/gui/url}/apps_extend//bootstrap-submenu-2.0.4/js/bootstrap-submenu.js"></script> + <script type="text/javascript" src="{/root/gui/url}/apps_extend/util.js"></script> + <script type="text/javascript" src="{/root/gui/url}/apps_extend/administration_carto.js"></script> + <script type="text/javascript" src="{/root/gui/url}/apps_extend/actions.js"></script> + <script type="text/javascript" src="{/root/gui/url}/apps_extend/admin.js"></script> + <script type="text/javascript" src="{/root/gui/url}/apps_extend/panier.js"></script> + <!-- ] ALKANTE_EXTENSION --> + </xsl:template> +</xsl:stylesheet> diff --git a/src/main/webapp/xslt/extend/base-variables.xsl b/src/main/webapp/xslt/extend/base-variables.xsl new file mode 100644 index 0000000..75d23e7 --- /dev/null +++ b/src/main/webapp/xslt/extend/base-variables.xsl @@ -0,0 +1,100 @@ +<?xml version="1.0" encoding="UTF-8"?> +<xsl:stylesheet version="2.0" + xmlns:util="java:org.fao.geonet.util.XslUtil" + xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> + <!-- Global XSL variables about the catalog and user session --> + + + <xsl:output name="default-serialize-mode" indent="no" + omit-xml-declaration="yes" /> + <xsl:output name="default-indent-mode" indent="yes" + omit-xml-declaration="yes" /> + + <!-- + --> + <xsl:variable name="prodigeCatalogueUrl" select="concat(/root/rating, '.2.', /root/gui/rating, '.3.', /root/config/rating, '.4.', /root/gui/config/rating)"/> + <!-- + + <xsl:variable name="uiResourcesPath" select="'../../catalog/'"/> + + The current service name + <xsl:variable name="service" select="/root/gui/reqService"/> + + <xsl:variable name="i18n" select="/root/gui/i18n"/> + <xsl:variable name="lang" select="/root/gui/language"/> + <xsl:variable name="requestParameters" select="/root/request"/> + + XSL using this variable should be refactored to not rely on the + old i18n files. FIXME eg. metadata-fop.xsl + <xsl:variable name="oldGuiStrings" select="/root/gui/strings"/> + + <xsl:variable name="isDebugMode" select="/root/request/debug"/> + <xsl:variable name="isReadOnly" select="/root/gui/env/readonly = 'true'"/> + <xsl:variable name="withD3" select="$service = 'admin.console'"/> + + <xsl:variable name="searchView" select="if (/root/request/view) then /root/request/view else if(util:getSettingValue('system/ui/defaultView')) then util:getSettingValue('system/ui/defaultView') else 'default'"></xsl:variable> + <xsl:variable name="owsContext" select="/root/request/owscontext" /> + <xsl:variable name="wmsUrl" select="/root/request/wmsurl" /> + <xsl:variable name="layerName" select="/root/request/layername" /> + <xsl:variable name="angularModule" select="if ($angularApp = 'gn_search') then concat('gn_search_', $searchView) else $angularApp"></xsl:variable> + + Define which JS module to load using Closure + <xsl:variable name="angularApp" select=" + if ($service = 'admin.console') then 'gn_admin' + else if ($service = 'catalog.signin' or + $service = 'new.account' or + $service = 'new.password' or + $service = 'error' or + $service = 'service-not-allowed' or + $service = 'node-change-warning') then 'gn_login' + else if ($service = 'contact.us') then 'gn_contact_us' + else if ($service = 'catalog.edit') then 'gn_editor' + else if ($service = 'catalog.viewer') then 'gn_viewer' + else if ($service = 'catalog.search') then 'gn_search' + else if ($service = 'md.viewer') then 'gn_formatter_viewer' + else 'gn'"/> + + <xsl:variable name="customFilename" select="concat($angularApp, '_', $searchView)"></xsl:variable> + + Catalog settings + <xsl:variable name="env" select="/root/gui/systemConfig"/> + + Only system settings (use for backward compatibility replacing + /root/gui/env by $envSystem is equivalent). New reference to setting + should use $env. + + <xsl:variable name="envSystem" select="/root/gui/systemConfig/system"/> + + URL for services - may not be defined FIXME or use fullURL instead + <xsl:variable name="siteURL" select="/root/gui/siteURL"/> + + URL for webapp root + <xsl:variable name="baseURL" select="substring-before($siteURL,'/srv/')"/> + Full URL with protocol, host and port + <xsl:variable name="fullURL" select="concat($env/system/server/protocol, '://', + $env/system/server/host, ':', + $env/system/server/port)"/> + Full URL for services + <xsl:variable name="fullURLForService" select="concat($fullURL, /root/gui/locService)"/> + <xsl:variable name="fullURLForWebapp" select="concat($fullURL, /root/gui/url)"/> + + <xsl:variable name="isMailEnabled" select="$env/feedback/emailServer/host != ''"/> + + <xsl:variable name="serviceInfo" select="/root/gui"/> + <xsl:variable name="session" select="/root/gui/session"/> + <xsl:variable name="isLoggedIn" select="$session/userId != ''"/> + + <xsl:variable name="isJsEnabled" select="not(ends-with($service, '-nojs'))"/> + + <xsl:variable name="is3DModeAllowed" + select="if ($service = 'catalog.search' and + ($env/map/is3DModeAllowed = 'true' or /root/request/with3d)) + then true() + else false()"/> + + TODO: retrieve from settings + <xsl:variable name="geopublishMatchingPattern" + select="'^WWW:DOWNLOAD.*|^FILE:GEO|FILE:RASTER|^DB:POSTGIS'"/> + <xsl:variable name="layerMatchingPattern" + select="'^OGC:WMS.*'"/> --> +</xsl:stylesheet> -- GitLab